065 resize2fs命令

命令说明

resize2fs 用于调整 ext2/ext3/ext4 文件系统的大小(扩容或缩容),通常在 LVM 扩卷或磁盘扩容后把文件系统撑满新空间;xfs 文件系统则用 xfs_growfs。

语法

resize2fs [选项]... 设备 [大小]

常用参数

参数说明
(默认)不带大小时扩容到设备的最大可用空间
大小指定目标大小如 10G、512M(缩容时必须显式给出)
-P只打印最小可缩到的大小,不实际执行(缩容前评估)
-p显示进度百分比
-f强制跳过一致性检查(慎用)
-F操作前先强制 fsck 设备
-d 标志输出调试信息
-M缩容到最小可能尺寸

使用示例

$ resize2fs /dev/sda1

把 sda1 文件系统扩到分区当前大小

$ lvextend -l +100%FREE -r /dev/vg0/lv_root

LVM 扩卷并联动 resize2fs(-r 自动调整)

$ lvextend -L +50G /dev/vg_data/lv_app && resize2fs /dev/vg_data/lv_app

先扩逻辑卷再扩文件系统(在线扩容标准流程)

$ resize2fs -P /dev/sda1

评估该文件系统最小能缩到多少

$ umount /data && e2fsck -f /dev/sdb1 && resize2fs /dev/sdb1 100G && mount /data

缩容流程:卸载→检查→缩→挂载

$ resize2fs /dev/sdb1 2T

扩到指定 2T 大小

$ xfs_growfs /data

对比:xfs 扩容用 xfs_growfs 且按挂载点操作

$ df -h /data

扩容后立即验证生效

实用技巧

  • resize2fs 只管 ext 系列文件系统;xfs 用 xfs_growfs(只能扩不能缩),btrfs 用 btrfs filesystem resize,先 blkid/df -T 确认类型再动手。
  • ext4 在线扩容(挂载状态下)安全无损;但缩容必须先卸载并 e2fsck -f,顺序颠倒会损坏数据。
  • 完整磁盘扩容链条:云盘/RAID 扩容量 → 分区层(growpart 或 fdisk 删建同起点分区)→ LVM(pvresize+lvextend)→ 文件系统层(resize2fs/xfs_growfs),少一层 df 都不会变。
  • resize2fs 对 xfs 会报 “Invalid argument” 或 not supported,这是类型不匹配,不是命令坏了。
  • LVM 场景 -r 参数(--resizefs)让 lvextend 自动调用 resize2fs/xfs_growfs,一条命令完成两层,最省心。