日常工作运维中,我们在使用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也会带有相应的标签,会非常便于查找,如下截图。

2、查找不带标签的EBS磁盘
如果创建EC2时候,没有设置标签,那么EBS磁盘也将不带有标签。此时,在EC2界面上新增标签时候,标签是不会自动传递到EC2所属的EBS的。这时候,建议采用EC2的Instance ID定位方法。
打开EC2列表,从中找到EC2 Instance ID,复制这个ID,如下截图。

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

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

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

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

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

所有5系列的EC2实例,例如m5、c5、r5,都使用nvme总线的EBS磁盘。因此所有磁盘都是/dev/nvme开头的。如果是t2系列实例,那么将看到传统的 /dev/xvda这种盘符。
通过上图可以可以看到,EBS扩容已经到了30GB。但是在nvme0n1下的分区还是8GB默认值并没有变化。
二、操作系统内扩容
1、查询当前容量
在系统内执行 df -h 命令可以看到当前卷的容量。如下截图。

这里看到,EBS扩容虽然硬件规格达到了30GB,但是磁盘是不能立刻被OS识别的到的。还需要在OS上扩容。
2、扩展分区
以root身份执行如下命令:
growpart /dev/nvme0n1 1
其中,/dev/nvme0n1是磁盘表示,后边的空格数字1表示第一个分区。执行结果如下。

从以上截图中,可以看到nvme0n1的p1分区从8GB扩展到了30GB。
3、扩展文件系统
执行如下命令。
file -s /dev/nvme*
此命令将列出所有磁盘的分区格式。如下截图。

继续扩展文件系统,ext4和XFS需要分别使用不同的命令。
EXT4执行:
resize2fs /dev/xvda1
XFS执行:
xfs_growfs -d /
在本例中,Amazon Linux 2默认是使用XFS文件系统的,因此使用第二条命令。执行后,在运行 df -h 查看,如下截图。

由此就实现了不需要重启EC2对磁盘扩容。
三、参考文档
调整卷大小后扩展 Linux 文件系统
https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/recognize-expanded-volume-linux.html
关注我们:请关注一下我们的微信公众号:扫描二维码

版权声明:本文为原创文章,版权归 server 所有,欢迎分享本文,转载请保留出处!
评论已关闭!