使用场景
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 条评论
暂无评论