AWS EC2 扩展磁盘后更新服务器磁盘空间教程
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 | Filesystem Size Used Avail Use% |
说明:
1 | 系统盘还是 20G |
第一步:安装扩展工具
Ubuntu 执行:
1 | sudo apt update |
cloud-guest-utils 是什么?
这个工具包含:
1 | growpart |
命令。
作用:
1 | 扩展 Linux 分区 |
第二步:查看磁盘名称
执行:
1 | lsblk |
例如:
1 | xvda 202:0 0 100G 0 disk |
说明:
| 设备 | 含义 |
|---|---|
| /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 | Filesystem Size Used Avail Use% |
说明:
1 | 扩容成功 |
推荐完整命令流程
推荐直接按顺序执行:
1 | sudo apt update |
常见问题
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 服务器
- 视频站
- 大文件存储
- 数据库服务器