最后更新时间: 2025年6月20日
今天给客户购买了 aws 的 c5.xlarge 的 ec2 云服务器给我做配置,但是客户购买时默认了 Storage 选项,即默认8G 硬盘容量,这个显然不够,但是服务器已经购买,不能退掉重买,只能使用动态扩容方案。
当然如果购买时容量较小,使用一段时间后想扩容也是如下操作,aws 的 volume 动态扩容是不会中断和影响正常服务的。
首先登录 aws 后台,客户一般是 root 权限,技术人员可让客户帮开通 IAM账号并授权即可,具体操作步骤如下:
1. 创建 IAM 用户账号
- IAM 控制台 → 左侧菜单点击 “Users”
- 点击 “Add users”
- 输入用户名(例如:
dev-john
) - 选择访问方式:
- 勾选 “Programmatic access”(用于命令行、SDK 等操作)
- 勾选 “AWS Management Console access”(Web 控制台登录)
- 设置初始密码(可以要求用户首次登录时重置)
2. 附加权限策略
- 在“Set permissions”这一步,选择:
- “Attach policies directly”
- 搜索并勾选你想要的权限策略
权限需求 | 策略名 |
---|---|
管理 EC2 | AmazonEC2FullAccess |
只查看资源 | ReadOnlyAccess |
管理所有 AWS 服务(管理员) | AdministratorAccess (⚠️谨慎使用) |
3. 动态扩容
登录到 ec2管理后台,并找到 volumes,并点击 Create volume 如下图


然后输入自己想要的硬盘大小即可,如下图,这里 Size 只需要填写你想要的最终硬盘大小,比如一开始客户选择的是8G,这里就显示8G,假如你想要硬盘最终为100G,只需要填写100即可,开始的8G 也会算到这里边。

填写好 Size 后,其它保持默认就行,然后点击 Create 稍等几分钟即可创建完成。
这里有一点需要注意,硬盘是100G,但是我们通过 df -hl 命令可看到 /dev/root 这个挂载到根目录的文件系统还是占用 6.8G ,并不是我们刚才添加的 100G
已经在 AWS 控制台把根卷磁盘大小改成了 100GB,但系统中仍显示 /dev/root
是 6.8GB,这是因为:
⚠️ 修改了 EBS 卷大小后,还需要在实例内部扩展文件系统才能真正使用新空间。就是 windows 系统硬盘的扩容一样,必须要追加卷才可以使用
这时可以通过执行以下几条命令进行使用
1. 使用 lsblk 命令 确认磁盘和分区状态
root@ip-172-31-90-185:/home/ubuntu# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 27.2M 1 loop /snap/amazon-ssm-agent/11320
loop1 7:1 0 73.9M 1 loop /snap/core22/1981
loop2 7:2 0 50.9M 1 loop /snap/snapd/24505
loop3 7:3 0 50.9M 1 loop /snap/snapd/24718
loop4 7:4 0 73.9M 1 loop /snap/core22/2010
nvme0n1 259:0 0 100G 0 disk
├─nvme0n1p1 259:1 0 7G 0 part /
├─nvme0n1p14 259:2 0 4M 0 part
├─nvme0n1p15 259:3 0 106M 0 part /boot/efi
└─nvme0n1p16 259:4 0 913M 0 part /boot
2. 扩展根分区(nvme0n1p1),即挂载到 / 目录的分区为根分区
root@ip-172-31-90-185:/home/ubuntu# growpart /dev/nvme0n1 1
CHANGED: partition=1 start=2099200 old: size=14677983 end=16777182 new: size=207615967 end=209715166
3. 查看文件系统格式(ext4 /xfs)
root@ip-172-31-90-185:/home/ubuntu# df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/root ext4 7034376 2181480 4836512 32% /
tmpfs tmpfs 3960928 0 3960928 0% /dev/shm
tmpfs tmpfs 1584372 888 1583484 1% /run
tmpfs tmpfs 5120 0 5120 0% /run/lock
efivarfs efivarfs 128 4 120 3% /sys/firmware/efi/efivars
/dev/nvme0n1p16 ext4 901520 87324 751068 11% /boot
/dev/nvme0n1p15 vfat 106832 6250 100582 6% /boot/efi
tmpfs tmpfs 792184 12 792172 1% /run/user/1000
4. resize 根分区(nvme0n1p1)即可
root@ip-172-31-90-185:/home/ubuntu# resize2fs /dev/nvme0n1p1
resize2fs 1.47.0 (5-Feb-2023)
Filesystem at /dev/nvme0n1p1 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 13
The filesystem on /dev/nvme0n1p1 is now 25951995 (4k) blocks long.
5. 确认是否成功扩充硬盘,可见根分区(/dev/root)这个文件系统占用空间已经是扩容之后的了(不是刚好100G,因为其它分区也占空间)
root@ip-172-31-90-185:/home/ubuntu# df -hl
Filesystem Size Used Avail Use% Mounted on
/dev/root 96G 2.1G 94G 3% /
tmpfs 3.8G 0 3.8G 0% /dev/shm
tmpfs 1.6G 892K 1.6G 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
efivarfs 128K 3.6K 120K 3% /sys/firmware/efi/efivars
/dev/nvme0n1p16 881M 86M 734M 11% /boot
/dev/nvme0n1p15 105M 6.2M 99M 6% /boot/efi
tmpfs 774M 12K 774M 1% /run/user/1000