xfs_growfs是Linux中唯一支持XFS文件系统在线扩容的官方工具,需严格按顺序满足三项前提:文件系统确为XFS、底层设备已扩容并被内核识别、文件系统当前已挂载;命令仅接受挂载点路径(如sudo xfs_growfs /data),默认扩展至设备最大可用空间,验证须交叉比对df -h与xfs_info输出。

Linux 中扩展 XFS 文件系统,xfs_growfs 是唯一支持在线(不卸载、不中断业务)扩容的官方工具。它只增不减,且必须在满足三个前提后才能安全执行。
确认三项硬性前提
缺一不可,顺序不能颠倒:
-
文件系统类型是 XFS:运行
df -T /mount/point或xfs_info /mount/point,输出中必须明确出现type xfs或meta-data=开头的 XFS 特征信息 -
底层设备已扩容并被内核识别:用
lsblk查看目标设备(如/dev/sdb1或/dev/mapper/vg0-lv_data)的 SIZE 是否已变大;若为云盘或虚拟磁盘,需先在控制台完成扩容,再执行echo 1 > /sys/class/block/sdb/device/rescan刷新容量 -
文件系统当前已挂载:运行
mount | grep /mount/point,确保有对应挂载条目;xfs_growfs不接受未挂载设备路径
执行在线扩容命令
命令只接受挂载点路径,不认设备路径:
- 扩展
/data挂载点:sudo xfs_growfs /data - 扩展根文件系统:
sudo xfs_growfs / - 若日志存于独立设备(如
/dev/sdc2),需显式指定:sudo xfs_growfs -l /dev/sdc2 /data
默认行为就是扩展至设备最大可用空间,无需加 -d 参数;如需指定目标大小(例如 100GB),可用 xfs_growfs -D 100G /data,但需确保底层设备空间充足。
验证是否真实生效
仅看 df -h 不够可靠,必须交叉比对:
- 运行
df -h /mount/point:观察Avail值是否增大、Use%是否下降 - 运行
xfs_info /mount/point:重点检查data行中的blocks=数值,扩容后应明显变大(例如从blocks=2621440变为blocks=5242880)
常见失败原因与应对
报错 data size unchanged 通常源于:
- 逻辑卷或分区尚未真正扩容(
lvextend或growpart未执行,或执行后未刷新) - 设备路径写错,或挂载点路径不准确(注意不要输成设备名如
/dev/sdb1) - 内核未识别新容量(特别是云盘场景,漏掉
rescan步骤)


















