亚马逊 aws ec2 云服务器如何动态扩充硬盘容量(不中断服务)详细图文教程

最后更新时间: 2025年6月20日

今天给客户购买了 aws 的 c5.xlarge 的 ec2 云服务器给我做配置,但是客户购买时默认了 Storage 选项,即默认8G 硬盘容量,这个显然不够,但是服务器已经购买,不能退掉重买,只能使用动态扩容方案。

当然如果购买时容量较小,使用一段时间后想扩容也是如下操作,aws 的 volume 动态扩容是不会中断和影响正常服务的。

首先登录 aws 后台,客户一般是 root 权限,技术人员可让客户帮开通 IAM账号并授权即可,具体操作步骤如下:

1. 创建 IAM 用户账号

  1. IAM 控制台 → 左侧菜单点击 “Users”
  2. 点击 “Add users”
  3. 输入用户名(例如:dev-john
  4. 选择访问方式:
    • 勾选 “Programmatic access”(用于命令行、SDK 等操作)
    • 勾选 “AWS Management Console access”(Web 控制台登录)
  5. 设置初始密码(可以要求用户首次登录时重置)

2. 附加权限策略

  1. 在“Set permissions”这一步,选择:
    • “Attach policies directly”
  2. 搜索并勾选你想要的权限策略
权限需求策略名
管理 EC2AmazonEC2FullAccess
只查看资源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

5/5 - (1票)