Skip to content

5min不停机扩容EBS卷大小

对于已经挂载过 EBS 的实例,我们要做仅仅的是扩容,在这个过程中,不影响已有的数据,不会对已有的磁盘做格式化,只单纯增加容量

分为以下三个步骤:

1、扩容使用中的 EBS 卷;

2、扩容分区;

3、扩容文件系统;

1. 在ec2实例界面选择相应需要扩容磁盘的实例,选择要扩容的磁盘

aws-ebs-2

2. 修改卷大小

进入控制台,选择 EBS - Volumes -Action - Modify Volume

3. 确认

0x01 扩容磁盘

安装扩容工具

yum install cloud-init cloud-utils-growpart gdisk

等待ebs卷大小调整完成后,在扩容的实例中执行lsblk列出连接到实例的EBS设备

[root@ttt] #: lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  6000G  0 disk 
└─xvda1 202:1    0  20G  0 part /
[root@ttt] #: lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  6000G  0 disk 
└─xvda1 202:1    0  20G  0 part /

使用 df -h 查看,/dev/xvda1 设备已扩展为 6000 GiB,但操作系统仍只能看到原来的 20 GiB ext4 文件系统

[root@ttt] #: df -h
文件系统                       容量  已用  可用 已用% 挂载点
devtmpfs                       3.9G   64K  3.9G    1% /dev
tmpfs                          3.9G     0  3.9G    0% /dev/shm
/dev/xvda1                      20G   12G  8.2G   59% /
[root@ttt] #: df -h
文件系统                       容量  已用  可用 已用% 挂载点
devtmpfs                       3.9G   64K  3.9G    1% /dev
tmpfs                          3.9G     0  3.9G    0% /dev/shm
/dev/xvda1                      20G   12G  8.2G   59% /

接下来使用growpart展开修改后的分区**(注意将设备名称与分区名称分隔开)

格式:growpart diskname part

[root@ttt] #: growpart /dev/xvda 1
CHANGED: disk=/dev/xvda partition=1: start=4096 old: size=41938910,end=41943006 new: size=104853470,end=104857566
格式:growpart diskname part

[root@ttt] #: growpart /dev/xvda 1
CHANGED: disk=/dev/xvda partition=1: start=4096 old: size=41938910,end=41943006 new: size=104853470,end=104857566

通过查看lsblk可以确认分区/dev/xvda1现已填充卷/dev/xvda上的可用空间:

[root@ttt] #: lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  6000G  0 disk 
└─xvda1 202:1    0  6000G  0 part /

[root@online-code ~]# file -s /dev/vda*
[root@ttt] #: lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  6000G  0 disk 
└─xvda1 202:1    0  6000G  0 part /

[root@online-code ~]# file -s /dev/vda*

对于 Linux ext2、ext3 或 ext4 文件系统,使用以下命令并替换要扩展的设备名称:

[root@ttt] #: resize2fs /dev/xvda1
resize2fs 1.42.12 (29-Aug-2014)
Filesystem at /dev/xvda1 is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 4
The filesystem on /dev/xvda1 is now 13106683 (4k) blocks long.
[root@ttt] #: resize2fs /dev/xvda1
resize2fs 1.42.12 (29-Aug-2014)
Filesystem at /dev/xvda1 is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 4
The filesystem on /dev/xvda1 is now 13106683 (4k) blocks long.

对于xfs文件系统

# yum install xfsprogs

#第一步
# growpart /dev/nvme0n1 1

#第二步
# xfs_growfs /dev/nvme0n1p1
或者:
xfs_growfs -d /data 增大扩展存储卷文件系统

说明:nvme0n1是设备名,nvme0n1p1是对应的一个分区,p1表示主分区1
# yum install xfsprogs

#第一步
# growpart /dev/nvme0n1 1

#第二步
# xfs_growfs /dev/nvme0n1p1
或者:
xfs_growfs -d /data 增大扩展存储卷文件系统

说明:nvme0n1是设备名,nvme0n1p1是对应的一个分区,p1表示主分区1

0x02 完成扩容

至此,磁盘已完成扩容,查看磁盘可用空间:

[root@ttt]# df -h
文件系统                       容量  已用  可用 已用% 挂载点
devtmpfs                       3.9G   64K  3.9G    1% /dev
tmpfs                          3.9G     0  3.9G    0% /dev/shm
/dev/xvda1                      6000G   12G  5988.2G   0.002% /
[root@ttt]# df -h
文件系统                       容量  已用  可用 已用% 挂载点
devtmpfs                       3.9G   64K  3.9G    1% /dev
tmpfs                          3.9G     0  3.9G    0% /dev/shm
/dev/xvda1                      6000G   12G  5988.2G   0.002% /

如果扩容的是系统盘则需要重启

一天只能调整一次

如果没有分区号,直接对整个磁盘进行文件系统扩容

参考文档:

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volumes-multi.html

https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/ebs-restoring-volume.html

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/recognize-expanded-volume-linux.html#extend-linux-file-system

https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/recognize-expanded-volume-linux.html?icmpid=docs_ec2_console