Cool
Cool
Published on 2025-12-26 / 2 Visits
0
0

EC2 扩容实战:EBS 从 30G 扩到 40G,但系统空间没变化?(完整排查与解决)

# 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 扩容实际上分为 三层

  1. AWS 层(EBS 卷)
  2. 操作系统层(分区)
  3. 文件系统层(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 /

写在最后

这是一个非常常见、但非常容易被忽略的问题
希望这篇文章能帮你少踩一个坑 🙌


Comment