xfs_growfs仅在线扩展已挂载xfs文件系统,前提是底层设备已扩容并被内核识别、文件系统确为xfs且处于挂载状态;执行sudo xfs_growfs /mount/point后,须用df -h、xfs_info及touch测试交叉验证。

直接用 xfs_growfs 扩容 XFS 文件系统本身很安全,但失败几乎全是前置环节出问题。它不负责扩容设备,只负责让已挂载的 XFS “看见”设备上新增的空间。关键在三点是否全部到位:文件系统是 XFS、底层设备真扩容且被内核识别、当前已挂载。
确认三项硬性前提缺一不可
顺序不能颠倒,漏掉任一都会报错:
- 查文件系统类型:
df -T /mount/point或xfs_info /mount/point,输出中必须含type xfs或meta-data=开头;不是 XFS 就别用这个命令 - 查底层设备是否真扩容:
lsblk看目标设备(如/dev/mapper/vg0-lv_data)的 SIZE 是否已变大;LVM 需先lvextend,云盘需控制台扩容后执行echo 1 > /sys/class/block/sdb/device/rescan - 查是否已挂载:
mount | grep /mount/point或findmnt /mount/point,必须有对应条目;xfs_growfs不支持对未挂载设备操作
执行扩容命令只需挂载点路径
命令认的是挂载点,不是设备路径,也无需加参数:
- 扩展
/data:运行sudo xfs_growfs /data - 扩展根分区:运行
sudo xfs_growfs / - 日志在独立设备(如
/dev/sdc2)时,必须显式指定:sudo xfs_growfs -l /dev/sdc2 /data
验证不能只看 df -h
单靠 df -h 容易误判,必须交叉验证:
-
df -h /mount/point:观察Avail是否增大、Use%是否下降 -
xfs_info /mount/point:重点比对data行的blocks=数值,扩容后应明显变大(例如从2621440变为5242880) - 快速写入测试:
touch /mount/point/.grow_test && rm /mount/point/.grow_test,确认 I/O 正常无报错
常见报错直击根源
报错不是命令写错,而是某项前提断裂:
-
device is mounted read-only:检查mount | grep /mount/point是否含ro,执行sudo mount -o remount,rw /mount/point后重试 -
cannot grow filesystem with external log:日志不在主设备,必须加-l /dev/xxx指定日志设备 -
AG size is too small:本质是lsblk显示设备大小没变,回退检查扩容操作是否真正完成并刷新内核识别 -
No such file or directory或not a mounted XFS filesystem:路径输错,或该路径根本没挂载,用findmnt确认真实挂载关系











