Linux 系统如何批量挂载磁盘,并扩展现有逻辑分区

使用场景

Linux系统、data00,data01,data02 目录使用lvm格式进行挂载,现在空间不足,需要挂载磁盘扩展空间,磁盘每块的大小为500G,需要挂载多块磁盘进行扩展。 如果一个个磁盘分区,操作太麻烦,所以整理成一个脚本进行批量操作。磁盘大小进行均分。

脚本内容

#!/bin/bash

# 硬盘列表
DISKS=("vde" "vdf" "vdg" "vdh" "vdi")

# 卷组名称
VG_NAME="vg_data"

# 遍历硬盘列表
for disk in "${DISKS[@]}"; do
    # 创建分区
    parted -s /dev/$disk mklabel gpt mkpart primary 1MiB 100%
    # 创建物理卷
    pvcreate /dev/${disk}1
    # 将物理卷添加到卷组
    vgextend $VG_NAME /dev/${disk}1
done


# VG 名称
VG_NAME="vg_data"

# 已存在的 LV 名称
EXISTING_LVS=("lv_data00" "lv_data01" "lv_data02")

# 获取 VG 剩余空间
VG_FREE_SPACE=$(vgdisplay --units m vg_data |grep "Free" |awk '{print $7}')
echo $VG_FREE_SPACE
# 计算每个 LV 可以扩展的空间
LV_EXTEND_SIZE=$(echo "$VG_FREE_SPACE / ${#EXISTING_LVS[@]}" | bc)
echo $LV_EXTEND_SIZE

# 获取数组的长度
array_length=${#EXISTING_LVS[@]}
# 遍历现有的 LV 列表
for ((i = 0; i < array_length - 1; i++)); do
    lv_name="${EXISTING_LVS[i]}"
    # 扩展 LV
    lvextend -L +${LV_EXTEND_SIZE}M /dev/$VG_NAME/$lv_name
    # 调整文件系统大小(如果需要)
    resize2fs /dev/$VG_NAME/$lv_name
    # 或者使用以下命令对 XFS 文件系统进行调整
    # xfs_growfs /dev/$VG_NAME/$lv_name
done
#避免计算每个 LV 可以扩展的空间大于vg 中剩余空间大小,所以将剩余100%分配给最后一个lv上
lvextend -l +100%FREE /dev/$VG_NAME/${EXISTING_LVS[-1]}
# 调整文件系统大小(如果需要)
resize2fs /dev/$VG_NAME/${EXISTING_LVS[-1d]}
# 或者使用以下命令对 XFS 文件系统进行调整
# xfs_growfs /dev/$VG_NAME/$lv_name

发表评论

评论列表,共 0 条评论

    暂无评论