亚马逊EC2主机上挂载了EBS弹性卷以后,如果使用量即将达到容量限制,可以在不分离卷或重新启动主机的情况下完成动态扩容,具体操作如下:
在控制台修改EBS卷的大小
首先登录到亚马逊AWS控制台,然后找到EC2实例下的EBS卷:
- 点击Volumes(卷)查看EBS卷列表
- 勾选要动态扩容的卷
- 点击Actions(操作)菜单下的Modify Volume(修改卷)
然后在弹出的Modify Volume(修改卷)窗口内的Size(大小)输入框中增加卷的大小:
最后点击Modify(修改)。当系统提示确认时,选择Yes(是)即可。
完成这一步的操作后,并不会产生实际的效果,接下来还需要扩展卷的文件系统。
监控卷修改的进度
当修改了EBS卷后,卷会依次进入 modifying
状态、optimizing
状态和 completed
状态。此时需要在控制台卷列表的State(状态)列中查看被修改的卷的状态:
一旦卷进入了 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
在上面的结果中,我们看到实例上挂载了两个卷 xvda
和 xvdf
。其中 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卷的动态扩容。