AWS EC2 扩展磁盘后更新服务器磁盘空间教程
wxk1991 Lv3

AWS EC2 扩展磁盘后更新服务器磁盘空间教程

很多人在使用:

1
AWS EC2

时,会遇到:

1
磁盘空间不足

例如:

  • Docker 占满磁盘
  • 视频文件越来越大
  • 数据库存储增长
  • 日志文件暴涨

于是:

1
在 AWS 后台扩容了 EBS 磁盘

但是:

1
服务器里的磁盘空间却没有变化

这是因为:

1
Linux 分区和文件系统还没有扩展

本篇文章教你:

  • 如何扩展 AWS EC2 磁盘
  • 如何更新 Linux 分区
  • 如何扩展 ext4 文件系统
  • 如何让 Ubuntu 识别新增空间

为什么扩容后空间没变化?

例如:

你原来:

1
20GB

后来在 AWS 后台改成:

1
100GB

但:

1
df -h

还是显示:

1
20GB

原因:

1
AWS 只扩展了底层 EBS

Linux:

1
并不会自动扩展分区

需要手动执行命令。


查看当前磁盘情况

先执行:

1
df -h

例如:

1
2
Filesystem      Size  Used Avail Use%
/dev/xvda1 20G 18G 2G 90%

说明:

1
系统盘还是 20G

第一步:安装扩展工具

Ubuntu 执行:

1
2
sudo apt update
sudo apt install cloud-guest-utils -y

cloud-guest-utils 是什么?

这个工具包含:

1
growpart

命令。

作用:

1
扩展 Linux 分区

第二步:查看磁盘名称

执行:

1
lsblk

例如:

1
2
xvda      202:0    0  100G  0 disk
└─xvda1 202:1 0 20G 0 part /

说明:

设备 含义
/dev/xvda 整个磁盘
/dev/xvda1 系统分区

虽然磁盘已经:

1
100G

但:

1
分区还是 20G

所以需要扩展。


第三步:扩展分区

执行:

1
sudo growpart /dev/xvda 1

命令详解

/dev/xvda

表示:

1
整个磁盘

1

表示:

1
第 1 个分区

也就是:

1
/dev/xvda1

执行成功后

会看到类似:

1
CHANGED: partition=1 start=...

说明:

1
分区已经扩展成功

第四步:扩展文件系统(非常关键)

很多人:

1
做到这里就结束了

但:

1
空间仍然不会增加

因为:

1
文件系统还没扩展

继续执行:

1
sudo resize2fs /dev/xvda1

这个命令非常关键

作用:

1
扩展 ext4 文件系统

否则:

1
系统仍然无法使用新增空间

Ubuntu 默认文件系统

Ubuntu 默认一般是:

1
ext4

所以:

1
resize2fs

即可。


如果是 XFS 文件系统怎么办?

如果你使用的是:

1
CentOS

或者:

1
Amazon Linux

可能是:

1
xfs

则需要:

1
sudo xfs_growfs /

而不是:

1
resize2fs

第五步:检查磁盘空间

执行:

1
df -h

现在会看到:

1
2
Filesystem      Size  Used Avail Use%
/dev/xvda1 100G 18G 82G 18%

说明:

1
扩容成功

推荐完整命令流程

推荐直接按顺序执行:

1
2
3
4
5
6
7
8
9
10
11
sudo apt update

sudo apt install cloud-guest-utils -y

lsblk

sudo growpart /dev/xvda 1

sudo resize2fs /dev/xvda1

df -h

常见问题

1. growpart: command not found

说明:

1
没有安装 cloud-guest-utils

执行:

1
sudo apt install cloud-guest-utils -y

2. resize2fs: Bad magic number

说明:

1
文件系统不是 ext4

可能是:

1
xfs

先执行:

1
df -T

查看文件系统类型。


3. 扩容后还是没变化

原因一般:

  • 忘记执行 resize2fs
  • growpart 没成功
  • 扩错分区
  • AWS 后台扩容未完成

如何确认 AWS 已扩容成功?

执行:

1
lsblk

如果:

1
/dev/xvda

已经变大:

1
说明 AWS 已成功扩容

推荐生产环境方案

建议:

项目 推荐
系统盘 SSD gp3
文件系统 ext4
定期监控 开启
自动告警 CloudWatch
Docker 数据盘 单独挂载

Docker 用户特别注意

很多时候:

1
Docker 会疯狂占用系统盘

建议:

1
单独挂载数据盘

例如:

1
/data

然后:

1
Docker 数据目录迁移过去

否则:

1
系统盘很容易爆满

总结

AWS EC2 扩容后:

1
Linux 不会自动扩展分区

必须执行:

扩展分区

1
sudo growpart /dev/xvda 1

扩展文件系统

1
sudo resize2fs /dev/xvda1

查看结果

1
df -h

这样:

1
服务器才能真正使用新增磁盘空间

非常适合:

  • Ubuntu
  • AWS EC2
  • Docker 服务器
  • 视频站
  • 大文件存储
  • 数据库服务器