调整EC2的EBS磁盘和分区大小

作者:ezmsp易云服科技公有云架构师王一凡

日常工作运维中,我们在使用AWS云资源的时候,常常会遇到AWS EC2实例存储卷空间不够用,需要扩容存储卷、在线添加存储卷或由于工作负载变化,需要调整存储卷类型的情况,这种情况下通常不需要停机,可以在线扩容,在线扩容可以使云资源的使用更加弹性,以下文档描述如何在线对云存储EBS进行快速扩容.

一、通过AWS控制台对EBS扩容

本文以Amazon Linux 2版本为例。Amazon Linux 2高度兼容CentOS 7系列,也使用yum做包管理。因此适用于CentOS的工具都可以在Amazon Linux 2上使用。

1、查找带有标签(tag)的EBS磁盘

首先进入EC2模块,并在左侧找到EBS标签。点击显示EBS列表。如果在创建EC2时候设置了标签,那么EBS也会带有相应的标签,会非常便于查找,如下截图。

调整EC2的EBS磁盘和分区大小

2、查找不带标签的EBS磁盘

如果创建EC2时候,没有设置标签,那么EBS磁盘也将不带有标签。此时,在EC2界面上新增标签时候,标签是不会自动传递到EC2所属的EBS的。这时候,建议采用EC2的Instance ID定位方法。

打开EC2列表,从中找到EC2 Instance ID,复制这个ID,如下截图。

调整EC2的EBS磁盘和分区大小

将EC2的Instance ID复制到EBS界面的搜索框中,粘贴ID并搜索,即可显示出来特定EC2的EBS磁盘。如果这个EC2没有数据盘,只有一个磁盘,那么home分区就是在这个磁盘上。如下截图。

调整EC2的EBS磁盘和分区大小

3、修改磁盘大小

找到要修改EBS磁盘后,点击选中,从下拉菜单中选择修改。如下截图。

调整EC2的EBS磁盘和分区大小

在弹出的对话框中,输入要扩容后的容量。例如默认系统是8GB,调整为30GB,然后按修改按钮。如下截图。

调整EC2的EBS磁盘和分区大小

点击修改后,系统会提示不需要重启EC2即可生效。另外,还需要在操作系统层面对OS卷做扩容方可识别新增空间。这个页面也给出了Linux和Windows在操作系统层面扩容的参考网址。如下截图。

调整EC2的EBS磁盘和分区大小

4、确认EBS磁盘扩容生效

以root身份,执行lsblk命令查看EBS磁盘扩容结果。如下截图。

调整EC2的EBS磁盘和分区大小

所有5系列的EC2实例,例如m5、c5、r5,都使用nvme总线的EBS磁盘。因此所有磁盘都是/dev/nvme开头的。如果是t2系列实例,那么将看到传统的 /dev/xvda这种盘符。

通过上图可以可以看到,EBS扩容已经到了30GB。但是在nvme0n1下的分区还是8GB默认值并没有变化。

二、操作系统内扩容

1、查询当前容量

在系统内执行 df -h 命令可以看到当前卷的容量。如下截图。

调整EC2的EBS磁盘和分区大小

这里看到,EBS扩容虽然硬件规格达到了30GB,但是磁盘是不能立刻被OS识别的到的。还需要在OS上扩容。

2、扩展分区

以root身份执行如下命令:

growpart /dev/nvme0n1 1

其中,/dev/nvme0n1是磁盘表示,后边的空格数字1表示第一个分区。执行结果如下。

调整EC2的EBS磁盘和分区大小

从以上截图中,可以看到nvme0n1的p1分区从8GB扩展到了30GB。

3、扩展文件系统

执行如下命令。

file -s /dev/nvme*

此命令将列出所有磁盘的分区格式。如下截图。

调整EC2的EBS磁盘和分区大小

继续扩展文件系统,ext4和XFS需要分别使用不同的命令。

EXT4执行:

resize2fs /dev/xvda1

XFS执行:

xfs_growfs -d /

在本例中,Amazon Linux 2默认是使用XFS文件系统的,因此使用第二条命令。执行后,在运行 df -h 查看,如下截图。

调整EC2的EBS磁盘和分区大小

由此就实现了不需要重启EC2对磁盘扩容。

三、参考文档

调整卷大小后扩展 Linux 文件系统

https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/recognize-expanded-volume-linux.html

发表评论

您的电子邮箱地址不会被公开。