Linux

解决阿里云服务器磁盘扩容之后“没有生效”的问题

服务器只有一块40GB的系统盘(/dev/vda),目前已在线扩容到60GB,但是查看磁盘占用,还是没有变化

df -h

查看系统磁盘(/dev/vda),可以看到系统盘已经扩容到60GB了,但是还有20GB没有分配,需要手动分配

自适应分区扩容


growpart /dev/vda 1

growpart 是磁盘分区扩容工具
上面的命令表示给系统盘的第一个分区扩容(注意是第一个分区,而不是分区名称)

如果出现下面的错误

[root@mypc ~]# yum -y install cloud-utils-growpart.noarch
[root@mypc ~]# growpart /dev/vda 1
unexpected output in sfdisk --version [sfdisk,来自 util-linux 2.23.2]

通过维基百科最后找到一个解决方法

问题主要是在 文件编码 的问题,解决办法如下:

[root@mypc ~]# LANG=en_US.UTF-8
[root@mypc ~]# growpart /dev/vda 1  
CHANGED: partition=1 start=2048 old: size=41940992 end=41943040 new: size=419428319,end=419430367

重设分区大小


resize2fs /dev/vda1

resize2fs 是扩容文件系统工具
上面的命令表示扩容系统盘的/dev/vda1分区文件系统(ext4格式)

再次查看磁盘占用情况

扩容数据云盘的例子


growpart /dev/vdb 1

LANG=en_US.UTF-8

growpart /dev/vdb 1

resize2fs /dev/vdb1

df -h 

问题


运行扩容分区growpart命令时,提示NOCHANGE: partition 1 could only be grown by 2015 [fudge=2048]

原因:扩容分区时没有更多可用空间。通常是因为在控制台离线扩容云盘后,未通过控制台或OpenAPI重启实例,导致云盘本身没有得到扩容。

解决方案离线扩容后,必须通过ECS控制台或者OpenAPI重启实例才能使云盘扩容生效,在ECS实例内部重启