自动创建linux逻辑卷及扩容
发布日期:2021-05-18 03:47:42 浏览次数:14 分类:精选文章

本文共 2641 字,大约阅读时间需要 8 分钟。

创建并管理Linux逻辑卷的详细指南

摘要

对于每一位运维人员来说,创建Linux逻辑卷是基础操作之一。本文将详细介绍如何创建逻辑卷并实现自动化操作,并附带实际案例说明。

LVM概述

LVM(Logical Volume Manager,逻辑卷管理器)是一种基于硬盘分区之上、文件系统之下的一种逻辑层,它的主要优势在于能够对磁盘进行动态管理。通过LVM,我们可以灵活配置和扩展逻辑卷,同一卷组中的逻辑卷可以动态调整大小,无需重新分配存储空间。

核心概念

  • 物理卷 (PV)
    由物理分区创建而成,PV是LVM管理的最基本单元。
  • 卷组 (VG)
    由多个物理卷组成的逻辑容器,可以将物理卷扩展到多个硬盘。
  • 逻辑卷 (LV)
    从卷组中划分出的逻辑容器,可以根据需求调整大小。

  • 创建逻辑卷步骤指南

    1. 创建物理分区

    通过fdisk命令创建硬盘分区:

    # 列出当前硬盘分区情况
    $ lsblk

    或者

    # 使用fdisk分区硬盘
    $ fdisk /dev/sdb

    创建完成后,例如:

    # 创建分区 /dev/sdb1 和 /dev/sdb2

    2. 创建物理卷

    # 创建物理卷
    $ pvcreate /dev/sdb1
    $ pvdisplay # 查看物理卷状态
    $ pvremove /dev/sdb1 # 删除物理卷

    3. 创建卷组

    # 创建卷组 data_vg,包含物理卷 /dev/sdb1 和 /dev/sdb2
    $ vgcreate -n data_vg /dev/sdb1 /dev/sdb2
    $ vgdisplay # 查看卷组状态
    $ vgremove data_vg # 删除卷组

    4. 创建逻辑卷

    # 创建逻辑卷,例如大小为 10G 的 lv01
    $ lvcreate -L 10G -n lv01 data_vg
    $ lvdisplay # 查看逻辑卷状态
    # 或者创建分配剩余空间的逻辑卷
    $ lucreate -l 100%free -n lv02 data_vg
    $ lvdisplay
    # 删除逻辑卷
    $ lvremove /dev/data_vg/lv01

    5. 格式化文件系统并挂载

    # 格式化逻辑卷
    $ mkfs.xfs /dev/data_vg/lv01
    # 挂载到 /mnt/data 目录
    $ mount /dev/data_vg/lv01 /mnt/data

    或者将挂载信息写入 /etc/fstab

    #echo "/dev/data_vg/lv01 /mnt/data defaults 0 0" >> /etc/fstab
    $ mount -a

    6. 检查挂载状态

    # 查看挂载情况
    $ df -h

    自动化脚本

    以下脚本实现从挂载点检测到逻辑卷创建的全流程:

    pt_info="/data/lv01##lv01##10g /data/lv02##lv02##5g"
    vg_name=data_vg
    # 检查挂载点是否存在
    is_exist_mount_point() {
    status=0
    cus_dir=$1
    for j in $(df -h|grep ^/dev/|awk '{print $NF}'); do
    if [ "$cus_dir" = "$j" ]; then
    status=1
    break
    fi
    done
    return $status
    }
    # 判断是否存在新增磁盘
    disk_info=$(lsblk|tail -2|head -1)
    disk_type=$(echo $disk_info|awk '{print $NF}')
    if [ "$disk_type" = "disk" ]; then
    disk_name="/dev/$(echo $disk_info|awk '{print $1}')"
    echo "n"
    p
    t
    8e
    w
    "|fdisk $disk_name"
    pvcreate $disk_name1
    vgcreate $vg_name $disk_name1
    for i in $pt_info; do
    dir=$(echo $i|awk -F'##' '{print $1}')
    lv_name=$(echo $i|awk -F'##' '{print $2}')
    size=$(echo $i|awk -F'##' '{print $3}')
    is_exist_mount_point $dir
    if [ $? -eq 0 ]; then
    lvcreate -L $size -n $lv_name $vg_name
    if [ ! -d $dir ]; then
    mkdir -p $dir
    fi
    mkfs.xfs /dev/$vg_name/$lv_name
    mount /dev/$vg_name/$lv_name $dir
    echo "/dev/$vg_name/$lv_name $dir defaults 0 0" >> /etc/fstab
    elif [ $? -eq 1 ]; then
    continue
    fi
    done
    else
    echo "不存在新增的磁盘"
    fi

    扩展卷组和逻辑卷

    扩展卷组

    # 添加新磁盘 /dev/sdc1 到 data_vg
    $ vgextend data_vg /dev/sdc1

    扩展逻辑卷

    # 将 lv01 从 10G 扩展至 15G
    $ lvextend -L 15G /dev/data_vg/lv01
    $ xfs_growfs /dev/data_vg/lv01

    总结

    通过上述步骤,我们掌握了创建逻辑卷的完整流程。理解 pv、vg、lv 的关系后,操作过程会更加顺畅。LVM 的灵活性为服务器存储管理带来了巨大便利。

    上一篇:python装饰器
    下一篇:SpringCloud-03-Zookeeper

    发表评论

    最新留言

    很好
    [***.229.124.182]2025年04月26日 07时40分08秒