一、计算每块盘剩余空间(单位 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 举例)