CentOS8无损扩容XFS根分区完整步骤:不丢数据把硬盘吃干抹净
CentOS8无损扩容XFS根分区完整步骤

线上跑的一套业务把根分区吃到红线,df一看只剩八百兆,半夜告警短信比闹钟还准时。想加盘却怕动到现网,停机要被扣绩效,只能走无损扩容这条路。把全过程拆成十二步,照着敲命令,一块新盘在线并入XFS根分区,系统不重启,数据不丢一行。
先确认现状:别稀里糊涂动刀子
登陆终端,lsblk先看盘符,df -Th对容量,vgdisplay看卷组剩余。根分区如果是标准安装,多半躺在/dev/mapper/cl-root,文件系统类型为xfs。把输出截图保存,万一回滚有对照。
加盘不重启:让系统认到新硬盘
虚拟机就在后台加一块盘,物理机插好SAS线后执行echo '- - -' > /sys/class/scsi_host/host0/scan,多换几个host号直到dmesg | tail里出现新盘,比如/dev/sdb。这一步不重启是底线,生产环境没人给你开窗。
分区还是整盘?直接PV更干脆

新盘容量不大就直接整盘建PV,省得分区表翻车。pvcreate /dev/sdb回车即生成物理卷,pvs验证能看到新条目。
把PV塞进现有卷组:容量池瞬间变大
根分区所在卷组默认叫cl,vgextend cl /dev/sdb把新盘并入,vgdisplay cl里的Free PE立刻增加,这一步就是扩容的底气。
先扩LV再扩文件系统:顺序反了会哭
逻辑卷用满再扩文件系统,XFS只能增大不能缩,所以别手滑。lvextend -l +100%FREE /dev/cl/root把卷组剩余空间全划给根LV,lvdisplay确认LV Size已更新。
XFS在线扩容:一条命令就完事

xfs_growfs /直接在线把文件系统拉到LV的实际大小,df -h再看根分区,容量瞬间涨上去,整个过程应用无感知,数据库连接不会掉一条。
验证写入:别只信数字
随手dd if=/dev/zero of=/test.img bs=1M count=2000写两个G,再rm /test.img删掉,观察iostat -x 1无报错,确认扩容后的空间真能落地。
回滚预案:快照+备份双保险
虽然无损,但操作前给系统盘做快照是职业习惯。虚拟机用平台快照,物理机用lvcreate -s -L 10G -n root-snap /dev/cl/root建快照卷,出问题lvconvert --merge秒级回退。
踩坑记录:最容易翻车的三点
1. 把新盘误加到别的卷组,扩容命令不报错但根分区纹丝不动;
2. 文件系统仍是ext4却照抄xfsgrowfs,结果命令找不到;
3. 忘记resize2fs或xfsgrowfs,LV大了df不变,以为失败反复操作。
CentOS8无损扩容XFS根分区就是:加盘→建PV→扩VG→扩LV→xfs_growfs,五步连环,一分钟搞定,告警短信从此安静。
