AWS对磁盘(EBS)的计费是根据用户划分的容量来按时计费,而不是以使用容量来计费。所以,大家可能会问,那磁盘扩容方不方便呢,答案是肯定的,在AWS上,即便扩容根分区也是非常方便的。扩容工具就是cloud-init。

扩容操作步骤如下:

1、安装cloud-init

对于ubuntu系统,安装cloud-init命令如下:

# apt-get install -y cloud-init

对于CentOs系统,安装cloud-init命令如下:

# yum -y install cloud-init

2、登录AWS控制台修改EBS卷大小,此处是将名为gitlab的卷从60GB扩容到100GB。

AWS之EBS卷扩容根分区_ebs

AWS之EBS卷扩容根分区_分区_02

3、确认文件系统类型,ext4文件系统要用growpart和resize2fs命令;而如果是XFS文件系统,则应该用growpart和xfs_growfs。

AWS之EBS卷扩容根分区_aws_03

此处应该用以下两条命令,使用growpart命令,后面接是设备名以及分区编号(中间有空隔),可以使用fdisk -l命令查看。

# growpart /dev/nvme0n1 1

# xfs_growfs /dev/nvme0n1p1

AWS之EBS卷扩容根分区_分区_04

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

完成上述命令后,再次查看,根分区已经扩到100GB了。

AWS之EBS卷扩容根分区_系统/运维_05

若文件系统是ext4,则用下面2条命令完成扩容操作:

# growpart /dev/nvme0n1 1

# resize2fs /dev/nvme0n1p1

总结:AWS的EBS扩容操作确实很方便,但我们也应该注意到,不应该把重要数据放在根分区中,而应该用独立的数据磁盘存放(便于备份以及做快照)。另外,AWS上的根分区磁盘标签类型为dos(Disk label type: dos),这就限制了最大分区容量不能超过2TB,所以,我们除了将数据单独存放在一块EBS上时,还要采用GPT分区。当然,也可以用LVM来管理多个EBS,总之,方案有多种,根据实际需求选择。