(四)linux云上磁盘扩容
参考华为云磁盘扩容文章:https://support.huaweicloud.com/usermanual-evs/evs_01_0109.html
写成脚本如下:
#!/bin/bash
# 安装必要的软件包
which growpart pvcreate vgextend lvextend pvresize &>/dev/null || {
if type -p yum >/dev/null; then
yum install -y epel-release cloud-utils || exit 1
elif type -p apt-get >/dev/null; then
apt-get install -y cloud-initramfs-growroot lvm2 || exit 1
else
echo "Unsupported package manager."
exit 1
fi
}
# 获取所有磁盘并排序
disks=$(fdisk -l | grep -oE "^Disk /dev/(sd[a-z]|vd[a-z]|nvme[0-9]n1)" | awk '{print $NF}' | sort -n)
declare -A A
for SERVER in "${disks[@]}"; do
# 忽略以#开头的磁盘
if [[ $SERVER == \#* ]]; then
continue
fi
A['SERVER_DISK']="$SERVER"
# 普通磁盘分区增加磁盘空间 循环里面的数字是分区号
for pn in $(seq 1 4); do
LC_ALL=en_US.UTF-8 growpart ${A['SERVER_DISK']} ${pn}
(resize2fs ${A['SERVER_DISK']}${pn} || xfs_growfs ${A['SERVER_DISK']}${pn}) || (resize2fs ${A['SERVER_DISK']} || xfs_growfs ${A['SERVER_DISK']})
done
done
# LVM分区增加磁盘空间
lvm=$(df -lTh | grep mapper | sed -n '$p' | awk '{print $1}')
if [ -z "$lvm" ]; then
echo "There is no LVM partition."
else
pvresize "${A['SERVER_DISK']}"
lvextend -l +100%FREE -n "$lvm"
xfs_growfs "$lvm" || resize2fs "$lvm"
fi
# 新增一块磁盘,增加LVM分区的空间
if [[ "$(fdisk -l | grep -oE "^Disk /dev/(sd[a-z]|vd[a-z]|nvme[0-9]n1)" | wc -l)" -gt 2 ]]; then
disk=$(fdisk -l | grep -oE "^Disk /dev/(sd[a-z]|vd[a-z]|nvme[0-9]n1)"
vgname=$(df -lTh | grep mapper | sed -n '$p' | awk -F "/" '{print $4}' | awk -F "-" '{print $1}')
lvm=$(df -lTh | grep mapper | sed -n '$p' | awk '{print $1}')
pvcreate "$disk" &>/dev/null
vgextend "$vgname" "$disk" &>/dev/null
lvresize -l +100%free "$lvm" -r &>/dev/null
xfs_growfs ${lvm} || resize2fs ${lvm}
else
exit 0
fi
【系列文章合集】
linux磁盘分区系列文章将分成4篇更新,老司机独家经验总结实用脚本,详细讲解如何一键实现linux磁盘分区:
(一)linux磁盘分区2种系统文件(已更新)
-
两种分区表(MBR 和GPT)
-
liunx磁盘的两种文件系统优点、缺点、适用场景对比
3.ext4 和xfs 两种分区格式实操
(二)一个脚本搞定带数字盘符的liunx磁盘分区(已更新)
(三)一个脚本实现linux磁盘lvm 分区 (已更新)
(四)一个脚本实现linux磁盘云上扩容(已更新)