EC2 EBS卷扩容后分区无法扩展 系统内容量显示未更新
问题根因
你的分区层面扩容其实已经完成了。从lsblk输出可以确认,nvme0n1整盘、nvme0n1p1分区都已经识别到50G容量,growpart返回NOCHANGE是正常提示,意思是分区已经占满磁盘全部可用空间,没有多余空间可以继续扩展,分区层面没有故障。
之前扩容失败全是命令用错了:
- 你一直给
resize2fs传错了设备参数:ext4文件系统是建在分区/dev/nvme0n1p1上的,你反复对整盘设备/dev/nvme0n1执行resize2fs,整盘上没有文件系统超级块,自然会报找不到有效文件系统、设备忙的错误。 - 命令参数多写了无用内容:
resize2fs只需要指定文件系统所在的块设备就行,不需要加分区编号,你之前多次在命令后面加的参数1是growpart命令用的,传给resize2fs属于无效参数,会直接导致命令执行异常。
修复步骤
按顺序执行就行,全程不需要重启,ext4支持根分区在线扩容:
- 对正确的分区设备执行文件系统扩容:
sudo resize2fs /dev/nvme0n1p1
- 等命令跑完(50G盘一般几秒就完),执行命令验证结果:
df -hT /
正常输出里/dev/root的容量会显示为49G左右(因为厂商和操作系统的容量计算规则有差异,属于正常现象),可用空间对应增加10G,就代表扩容完成了。
之前操作的常见误区
growpart的正确格式是growpart <整盘设备路径> <分区编号>,你最开始跑的sudo growpart /dev/nvme0n1p1 1是错的,第一个参数必须传整盘设备(你的场景下就是/dev/nvme0n1),不能传分区设备。后来你跑对了命令,分区就已经扩完了,之后再跑growpart报NOCHANGE不是故障,不用管。- 你之前临时把tmpfs挂载到
/tmp的操作完全没必要,ext4在线扩容不需要额外预留/tmp空间,现在你已经卸载了这个临时挂载,不会对系统有任何影响。 - 如果跑resize2fs的时候提示需要先检查文件系统,先重启一次实例,重启后重新跑resize2fs基本就能解决;要是还报错,就进单用户模式跑
sudo e2fsck -f /dev/nvme0n1p1修复文件系统,之后再扩容就行。
内容的提问来源于stack exchange,提问作者Khaksar
相关产品推荐
相关产品推荐

