亚马逊Linux系统下EBS卷的动态扩容

Dynamic Expansion of EBS volume in Amazon Linux System

亚马逊EC2主机上挂载了EBS弹性卷以后,如果使用量即将达到容量限制,可以在不分离卷或重新启动主机的情况下完成动态扩容,具体操作如下:

在控制台修改EBS卷的大小

首先登录到亚马逊AWS控制台,然后找到EC2实例下的EBS卷:

  1. 点击Volumes(卷)查看EBS卷列表
  2. 勾选要动态扩容的卷
  3. 点击Actions(操作)菜单下的Modify Volume(修改卷)

修改EBS卷的大小

然后在弹出的Modify Volume(修改卷)窗口内的Size(大小)输入框中增加卷的大小:

输入EBS卷的大小

最后点击Modify(修改)。当系统提示确认时,选择Yes(是)即可。

完成这一步的操作后,并不会产生实际的效果,接下来还需要扩展卷的文件系统。

监控卷修改的进度

当修改了EBS卷后,卷会依次进入 modifying 状态、optimizing 状态和 completed 状态。此时需要在控制台卷列表的State(状态)列中查看被修改的卷的状态:

查看EBS卷的修改进度

一旦卷进入了 optimizing 状态,就可以调整文件系统的大小了。

扩展分区

首先登录到EC2实例上,使用以下命令查看实例上的卷的信息:

lsblk

执行命令后的结果如下:

[user ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 20G 0 disk └─xvda1 202:1 0 8G 0 part / xvdf 202:80 0 8G 0 disk └─xvdf1 202:81 0 8G 0 part /data

在上面的结果中,我们看到实例上挂载了两个卷 xvdaxvdf。其中 xvda 是我们要扩容的卷:

  • 根卷 /dev/xvda 上有一个分区 /dev/xvda1,卷的大小是20G(是在控制台修改EBS卷的大小导致的),但分区大小只有8G,因此必须进行扩展。
  • /dev/xvdf 上有一个分区 /dev/xvdf1,卷的大小和分区大小都是8G。

接下来我们就对要扩容的卷上的分区进行扩展:

sudo growpart /dev/xvda 1

其中 growpart 是扩展分区的命令,/dev/xvda 是要扩展的卷,1 是要扩展的分区的编号。执行完该命令以后再用 lsblk 命令查看卷的信息:

[user ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 20G 0 disk └─xvda1 202:1 0 20G 0 part / xvdf 202:80 0 8G 0 disk └─xvdf1 202:81 0 8G 0 part /data

可见分区大小已经扩展到20G了。

扩展文件系统

首先使用以下命令查看卷所使用的文件系统:

sudo file -s /dev/xvd*

可能的一个示例如下:

[user ~]# sudo file -s /dev/xvd* /dev/xvda: x86 boot sector; partition 1: ID=0x83, active, starthead 32... /dev/xvda1: SGI XFS filesystem data (blksz 4096, inosz 512, v2 dirs) /dev/xvdf: Linux rev 1.0 ext4 filesystem data ...

在上面的示例中,引导卷 /dev/xvda 使用的是XFS文件系统,而另外一个卷 /dev/xvdf 使用的是ext4文件系统,针对不同的文件系统,扩展文件系统的操作也有所区别。

ext2、ext3或ext4文件系统

首先使用以下命令查看每个卷的文件系统的大小:

df -h

结果示例如下:

[user ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/xvda1 8.0G 4.6G 3.5G 57% / /dev/xvdf1 8.0G 45M 8.0G 1% /data devtmpfs 3.8G 0 3.8G 0% /dev tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 3.9G 153M 3.7G 4% /run tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup tmpfs 782M 0 782M 0% /run/user/1000

可见文件系统中 /dev/xvda1 所示的大小仍然是8G,因此需要通过以下命令来扩展卷上的文件系统:

sudo resize2fs /dev/xvda1

执行完后再用 df -h 命令来查看文件系统的大小:

[user ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/xvda1 20G 4.6G 16G 23% / /dev/xvdf1 8.0G 45M 8.0G 1% /data devtmpfs 3.8G 0 3.8G 0% /dev tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 3.9G 153M 3.7G 4% /run tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup tmpfs 782M 0 782M 0% /run/user/1000

至此就完成了EBS卷的动态扩容。

XFS文件系统

首先使用以下命令查看每个卷的文件系统的大小:

df -h

结果示例如下:

[user ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/xvda1 8.0G 4.6G 3.5G 57% / /dev/xvdf1 8.0G 45M 8.0G 1% /data devtmpfs 3.8G 0 3.8G 0% /dev tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 3.9G 153M 3.7G 4% /run tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup tmpfs 782M 0 782M 0% /run/user/1000

可见文件系统中 /dev/xvda1 所示的大小仍然是8G,因此需要通过以下命令来扩展卷上的文件系统(其中 / 是上述示例中最后一列显示的卷的挂载点):

sudo xfs_growfs -d /

如果此时未安装XFS工具,需要先通过 sudo yum install xfsprogs 命令安装好XFS工具以后再执行上面的扩展命令。

执行完后再用 df -h 命令来查看文件系统的大小:

[user ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/xvda1 20G 4.6G 16G 23% / /dev/xvdf1 8.0G 45M 8.0G 1% /data devtmpfs 3.8G 0 3.8G 0% /dev tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 3.9G 153M 3.7G 4% /run tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup tmpfs 782M 0 782M 0% /run/user/1000

至此就完成了EBS卷的动态扩容。

文章评论
${fromAuthor ? '郄正元' : '游客'} 作者 ${gmtCreate}
${content}
${subList.length}
发表评论
${commentToArticle ? '' : parentContent}
字数:0/${maxCommentLength}
该邮箱地址仅用于接收其他用户的回复提醒,不会泄露