AWS Linux实例卷扩容后合并分区解决磁盘空间不足问题
AWS Linux实例卷扩容后合并分区解决磁盘空间不足问题
嗨,看起来你遇到了AWS卷扩容后常见的小坑,别着急,咱们一步步理清楚解决:
首先先澄清一个关键误解:AWS里扩容现有卷不会生成新卷,所以你控制台看到两个卷(8GB和500GB),大概率是操作时误创建了新卷,而非直接扩容原卷;也可能是控制台显示的旧快照残留。不过先不管这个,先解决实例里磁盘空间不足的核心问题。
第一步:先搞懂当前磁盘状态
先看你手里的lsblk和df -hT输出,核心无非两种情况:
- 情况1:扩容后的500GB磁盘已经挂载,但分区/文件系统没扩展到整个磁盘大小,所以
df还是显示8GB - 情况2:实例同时挂载了原8GB卷和新500GB卷,根目录还在旧卷上,导致空间不足
情况1:分区未扩展到整个磁盘(最常见)
如果lsblk显示类似这样的结果:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 500G 0 disk └─sda1 8:1 0 8G 0 part /
说明磁盘本身已经是500GB了,但分区(sda1)还停留在原来的8GB,只需要扩展分区和文件系统即可:
- 先通过
df -hT确认文件系统类型:- 如果是
xfs类型:
直接执行命令扩展文件系统,无需先扩展分区:
执行完再用sudo xfs_growfs /df -h验证,就能看到500GB的可用空间了。 - 如果是
ext4(或ext2/ext3)类型:
先安装分区扩展工具(如果没装的话):
然后扩展分区:# Amazon Linux/CentOS用这个 sudo yum install cloud-utils-growpart # Ubuntu/Debian用这个 sudo apt install cloud-guest-utils
最后扩展文件系统:sudo growpart /dev/sda 1
再用sudo resize2fs /dev/sda1df -h确认空间是否正常。
- 如果是
情况2:实例挂载了两个独立卷
如果lsblk显示两个磁盘(比如sda是8GB挂载在/,sdb是500GB未挂载或挂在其他目录),那你需要把500GB卷设为新的根目录:
- 先格式化新卷(注意:格式化会清空数据,有重要数据先备份):
sudo mkfs.xfs /dev/sdb # 偏好ext4的话换成mkfs.ext4 - 临时挂载新卷到临时目录:
sudo mount /dev/sdb /mnt/newvol - 同步原根目录的所有数据到新卷:
sudo rsync -avx / /mnt/newvol - 修改
/etc/fstab让新卷开机自动挂载为根目录:
先获取新卷的UUID:
编辑fstab文件:sudo blkid /dev/sdb
添加一行(替换成你的UUID和文件系统类型):sudo vi /etc/fstabUUID=xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx / xfs defaults 0 0 - 重启实例,重启后原8GB卷就可以卸载,甚至在AWS控制台删除了。
最后关于控制台的两个卷:你可以在实例详情的「存储」标签里,查看挂载的卷ID,对应控制台里的卷条目,把没用的那个(比如未挂载的8GB或500GB卷)删除,避免后续混淆。
备注:内容来源于stack exchange,提问作者marciokoko
相关产品推荐
相关产品推荐

