必须先扩展分区或LV,再执行resize2fs;若跳过前者直接运行后者,命令静默成功但文件系统容量不变,因ext4仍按旧superblock元数据工作,未识别新增空间。

能在线扩展,但必须先扩分区(或 LV),再跑 resize2fs;跳过前者直接执行后者,命令会静默成功却无任何效果。
确认分区已扩容但文件系统还没跟上
这是最常见的误判点:以为云盘扩容完就万事大吉,其实只是底层空间变大了,ext4 还在按旧大小工作。
- 运行
lsblk /dev/sda(把/dev/sda换成你的磁盘设备),看目标分区(如/dev/sda1)的 SIZE 是否已变大 - 运行
df -h /mount/point(比如df -h /),对比输出中的 “Size” 和上面lsblk显示的分区大小 - 如果
df显示的 Size 小于lsblk的分区大小,说明文件系统确实没扩容,可以继续下一步
普通分区(非 LVM)怎么扩 ext4
适用于直接用 fdisk、parted 或云平台扩容后的单一分区场景。关键在于让内核识别新分区表,再更新文件系统元数据。
- 先刷新内核对磁盘容量的感知:
echo 1 | sudo tee /sys/class/block/sda/device/rescan(sda替换为你的磁盘名) - 再扩展分区边界:
sudo growpart /dev/sda 1(表示扩/dev/sda的第 1 个分区) - 最后执行:
sudo resize2fs /dev/sda1(注意是设备路径,不是挂载点) - 验证:
df -h输出中对应挂载点的 Size 应与lsblk一致
LVM 环境下扩 ext4 容易漏掉 pvresize
很多人只记得 lvextend,却忘了物理卷(PV)本身也要“告诉”内核它现在能用更多空间——否则 lvextend 实际无法分配新空间。
- 若新增了物理盘(如
/dev/vdb):先sudo pvcreate /dev/vdb,再sudo vgextend centos /dev/vdb - 若已有 PV 所在磁盘已扩容(如云盘扩容):必须先
sudo pvresize /dev/sda2(填你实际的 PV 设备) - 然后扩 LV:
sudo lvextend -l +100%FREE /dev/centos/root - 最后才是:
sudo resize2fs /dev/centos/root
最常被忽略的是顺序和刷新动作:没 growpart 或 pvresize 就直接 resize2fs,等于对空气操作;而忘记 rescan 或 growpart,内核压根不知道分区变大了——这两步不执行,后面全白忙。











