Centos7扩容磁盘

一、计算每块盘剩余空间(单位 GiB) # 获取剩余扇区数,换算成 GiB(1 GiB = 1024*1024*1024 B) sda_free=$(($(blockdev --getsize64 /dev/sda)/1024/1024/1024 - 685)) # 685G 已用 sdb_fr

一、计算每块盘剩余空间(单位 GiB)

# 获取剩余扇区数,换算成 GiB(1 GiB = 1024*1024*1024 B)
sda_free=$(($(blockdev --getsize64 /dev/sda)/1024/1024/1024 - 685))   # 685G 已用
sdb_free=$(($(blockdev --getsize64 /dev/sdb)/1024/1024/1024 - 685))
nvme_free=$(($(blockdev --getsize64 /dev/nvme0n1)/1024/1024/1024 - 685))
total_free=$((sda_free + sdb_free + nvme_free))
half_free=$((total_free / 2))
echo "total $total_free GiB free, half=$half_free GiB"

运行后屏幕会打印类似:
total 16383 GiB free, half=8191 GiB

二、新建 LVM 分区(全部剩余空间)

# /dev/sda
parted /dev/sda mkpart primary 686GiB 100%   # 从 686G 开始到盘尾
parted /dev/sda set 4 lvm on

# /dev/sdb
parted /dev/sdb mkpart primary 686GiB 100%
parted /dev/sdb set 2 lvm on

# /dev/nvme0n1
parted /dev/nvme0n1 mkpart primary 686GiB 100%
parted /dev/nvme0n1 set 2 lvm on

三、创建 PV 并加入卷组

pvcreate /dev/sda4 /dev/sdb2 /dev/nvme0n1p2
vgextend centos /dev/sda4 /dev/sdb2 /dev/nvme0n1p2

四、先扩容根(/)—— 一半空间

lvextend -L +${half_free}G /dev/centos/root
# 在线扩展文件系统(xfs 用 xfs_growfs,ext4 用 resize2fs)
xfs_growfs /          # 如果是 ext4,改为 resize2fs /dev/centos/root

五、再扩容 /home —— 剩余全部

lvextend -l +100%FREE /dev/centos/home
xfs_growfs /home      # 如果是 ext4,改为 resize2fs /dev/centos/home

六、验证

lsblk
df -h / /home
vgdisplay centos | grep Free

可选:想留一点缓冲怎么办?

如果希望卷组里留几十 GiB 备用,把第 5 步的 -l +100%FREE 改成
-L +$((total_free - half_free - 20))G 即可(这里留 20 GiB 举例)

评论