# EC2 扩容实战:EBS 从 30G 扩到 40G,但系统空间没变化?(完整排查与解决)
在 AWS EC2 上扩容磁盘时,**很多人都会遇到一个经典问题**:
> 👉 AWS 控制台里 EBS 已经从 30G 扩容到 40G
> 👉 但在服务器里 `df -h` 看到的还是 30G
本文记录一次**真实排障过程**,并给出 **通用、安全的解决方案**。
---
## 一、问题现象
在 AWS 控制台中:
- 已成功将 EBS 卷大小从 **30G 扩容到 40G**
但在 EC2 实例中执行:
```bash
df -h
结果仍然是:
/dev/xvda1 30G 28G 2.1G 94% /
磁盘空间没有变化。
二、问题根因(非常关键)
EC2 扩容实际上分为 三层:
- AWS 层(EBS 卷)
- 操作系统层(分区)
- 文件系统层(ext4 / xfs)
⚠️ AWS 只帮你完成第 1 步,后两步必须自己做
本次问题的真实原因是:
EBS 已是 40G,但分区
/dev/xvda1仍然是 30G
所以文件系统根本没有新空间可以扩展
三、确认当前磁盘与文件系统状态
1️⃣ 查看磁盘与文件系统类型
lsblk -f
示例输出:
NAME FSTYPE MOUNTPOINT
xvda
├─xvda1 xfs /
├─xvda127
└─xvda128 vfat /boot/efi
结论:
- 根分区:
/dev/xvda1 - 文件系统:XFS
2️⃣ 查看当前磁盘使用情况
df -h
/dev/xvda1 30G 28G 2.1G 94% /
四、正确的扩容步骤(关键)
✅ 第一步:扩展分区(最容易被忽略)
sudo growpart /dev/xvda 1
说明:
/dev/xvda:磁盘1:分区号(即/dev/xvda1)
执行成功后,分区会从 30G → 40G
验证:
lsblk
✅ 第二步:扩展 XFS 文件系统
sudo xfs_growfs -d /
如果你之前直接执行过这一步,可能会看到:
data size unchanged, skipping
👉 这是正常的
原因是:当时分区还没扩展,XFS 没有新空间可用。
✅ 第三步:验证最终结果
df -h
正确结果应为:
/dev/xvda1 40G 28G 12G 70% /
🎉 扩容完成!
五、为什么会踩坑?
很多教程只写了:
xfs_growfs /
但 漏掉了最关键的一步:
👉
growpart扩展分区
文件系统无法超过分区大小,这是 Linux 的基本规则。
六、总结(一句话版)
EC2 扩容 = AWS 扩容 + 分区扩容 + 文件系统扩容
如果你:
- EBS 扩容完成
df -h仍显示旧大小xfs_growfs提示data size unchanged
👉 99% 是分区还没扩
七、适用环境
- AWS EC2
- Amazon Linux 2 / CentOS 7+
- XFS 文件系统
- 根盘
/dev/xvda1
八、附:常用排查命令速查表
lsblk -f # 查看分区和文件系统
df -h # 查看磁盘使用情况
sudo growpart /dev/xvda 1
sudo xfs_growfs -d /
写在最后
这是一个非常常见、但非常容易被忽略的问题。
希望这篇文章能帮你少踩一个坑 🙌