AWS EC2 存储空间扩容

背景

这周三我在日常手动上线的时候(对!我们还没有自动化部署!),发现线上一台 AWS EC2 机器的服务不再打印日志了。

这真是从来没遇到过的情况,我怀疑是磁盘满了,于是 `df`` 了一下:

[ec2-user@host /]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        3.8G     0  3.8G   0% /dev
tmpfs           3.8G     0  3.8G   0% /dev/shm
tmpfs           3.8G  113M  3.7G   3% /run
tmpfs           3.8G     0  3.8G   0% /sys/fs/cgroup
/dev/nvme0n1p1  8.0G  8.0G   60M 100% /         # 果然,根目录已经满了!!!
tmpfs           777M     0  777M   0% /run/user/1000
tmpfs           777M     0  777M   0% /run/user/0

果然,根目录已经满了。我们服务从 3 月份上线以来,一直没有转存过日志,5、6 月份业务开始起量,终于今天日志把磁盘写满了。。

参考链接

后来我上网搜了一下,找到一篇非常不错的文章,介绍如何扩容 AWS EC2 实例:

参考链接

扩容步骤

步骤 1:在 AWS 后台进行扩容

扩容之前,lsblk 输出如下:

[ec2-user@host /]$ lsblk
NAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1       259:0    0   8G  0 disk
├─nvme0n1p1   259:1    0   8G  0 part /
└─nvme0n1p128 259:2    0   1M  0 part

下面在 AWS 控制台,进行如下操作:

  • 在服务列表中选择 EC2
  • 在左侧菜单的 ELASTIC BLOCK STORE 栏下选择 Volumes
  • 右键点击希望扩容的 volume,选择 Modify Volume

然后会弹出如下弹窗,选择希望扩容到的大小(我扩容到了 16G):

在这里插入图片描述
在确认弹窗中点击确定:
在这里插入图片描述
过一会儿,在机器上就能看到硬盘空间增加啦:

[ec2-user@host /]$ lsblk
NAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1       259:0    0   16G  0 disk   # 硬盘空间已经增加到 16G 啦
├─nvme0n1p1   259:1    0   8G  0 part /
└─nvme0n1p128 259:2    0   1M  0 part

步骤 2:在机器上进行分区(partition)扩容

硬盘已经扩容到 16G 了,但根目录所在分区大小还是 8G,下面进行分区扩容。

growpart 命令第一个参数是硬盘名,第二个参数是分区编号:

[ec2-user@host /]$ sudo growpart /dev/nvme0n1 1
CHANGED: partition=1 start=4096 old: size=16773087 end=16777183 new: size=33550303 end=33554399  

现在分区大小也是 16G 啦:

[ec2-user@host /]$ lsblk
NAME          MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1       259:0    0  16G  0 disk
├─nvme0n1p1   259:1    0  16G  0 part /
└─nvme0n1p128 259:2    0   1M  0 part

步骤 3:在机器上进行文件系统(filesystem)扩容

分区扩容之后,还要把相应的文件系统也进行扩容。

具体用到的命令取决于文件系统类型,所以首先检查文件系统类型:

[ec2-user@host ~]$ lsblk -f # 检查文件系统类型
NAME          FSTYPE LABEL UUID                                 MOUNTPOINT
nvme0n1
├─nvme0n1p1   xfs    /     bc07e2f4-d5ff-494b-adf1-6f6da7608cd6 /
└─nvme0n1p128

看来是 xfs 类型,使用 xfs_growfs 命令进行扩容,参数为分区路径:

[ec2-user@host]$ sudo xfs_growfs /dev/nvme0n1p1
meta-data=/dev/nvme0n1p1         isize=512    agcount=4, agsize=524159 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1 spinodes=0
data     =                       bsize=4096   blocks=2096635, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 2096635 to 4193787

根据参考文章,如果文件系统类型是 ext2、ext3 或者 ext4,使用如下命令:

sudo resize2fs /dev/nvme0n1p1

扩容成功!根目录所在文件系统的空间从 8G 扩容到了 16G:

[ec2-user@host]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        3.8G     0  3.8G   0% /dev
tmpfs           3.8G     0  3.8G   0% /dev/shm
tmpfs           3.8G  113M  3.7G   3% /run
tmpfs           3.8G     0  3.8G   0% /sys/fs/cgroup
/dev/nvme0n1p1   16G  8.0G  8.1G  50% /
tmpfs           777M     0  777M   0% /run/user/1000

小结

没想到在云上扩容存储空间这么容易,背后的实现机制一定很有意思!有时间研究一下。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值