xfs_growfs 是什么
XFS 支持在线增长:底层块设备扩容之后,对挂载点执行 xfs_growfs 就能把文件系统撑满新容量,业务无需中断。它只能增长、不能缩小,所以容量规划要一次到位,生产上也应避免用 lvreduce 回收空间。一个容易混淆的细节是参数形态:xfs_growfs 接的是挂载点,而扩展 ext4 的 resize2fs 接的是设备路径。典型流程是先扩底层分区或逻辑卷,再 xfs_growfs,最后用 df 核对结果。
基本信息
| 适用平台 | Linux(xfsprogs;XFS 是 RHEL 系与多数云镜像的默认文件系统) |
|---|---|
| 命令语法 | xfs_growfs [-D 大小] 挂载点 |
| 常用选项 | -D 指定目标数据区大小 -d 扩展数据区(默认行为) |
| 前置条件 | 文件系统已挂载,且底层设备容量已大于当前文件系统大小 |
| 不可逆性 | XFS 不支持缩小,无法通过工具回收已分配的容量 |
典型使用场景
- LVM 扩容后:lvextend 扩完逻辑卷,紧接着扩大文件系统
- 云盘扩容后:控制台调大云盘容量,系统内把数据盘撑满
- 新增空间:把新加入的容量分配给已有挂载点
- 验证核对:扩容后确认 df 输出与实际容量一致
- 容量规划:为写入增长快的目录提前预留并扩展
LVM 扩容全流程
LVM 扩容全流程
vgs; lvs /dev/vg0/data # 确认卷组与逻辑卷状态
lvextend -L +50G /dev/vg0/data # 扩逻辑卷
xfs_growfs /data # 扩文件系统到设备大小
df -h /data # 核对结果
xfs_growfs -D 200g /data # 扩到指定大小,不可超过底层设备
xfs_info /data | head # 查看块大小等文件系统信息扩容命令分工
| 命令 | 参数形态 | 作用 |
|---|---|---|
| lvextend | 逻辑卷路径 | 扩大逻辑卷容量 |
| xfs_growfs | 挂载点 | 把 XFS 扩展到设备大小 |
| resize2fs | 设备路径(ext4) | 扩展 ext4,参数形态与 xfs_growfs 不同 |
| df 与 xfs_info | 挂载点 | 核对扩容结果与文件系统参数 |
xfs_growfs 的参数是挂载点而不是设备名,可用 df 或 findmnt 确认挂载点;传设备路径会报错或作用到非预期对象。
顺序永远先扩底层再扩文件系统。反过来执行会报文件系统已达到上限而失败,容易让人误判为文件系统不支持扩容。