AWS调整EC2的EBS卷大小及二次踩坑

1,170 阅读2分钟

背景

AWS EMR 集群有个 EC2 实例EBS卷(磁盘空间)满了,需要对它进行在线扩容。其实按照官方文档可以简单概括成这几个步骤

  1. 在控制台找到对应卷,然后修改卷大小
  2. 找到根卷(对应块设备)和对应扩容分区
  3. 使用 growpart 命令调整分区大小
  4. 使用 resize2fsxfs_growfs 扩展 EBS 卷的文件系统

但是有时候往往不会这么顺利,下面介绍自己关于调整EC2的EBS卷大小踩坑的2次经历。

踩坑一:EBS 卷修改进度没有完成就进行调整分区大小

踩坑一估计有很多人也遇到过 EBS 卷修改的进度

AWS EBS 卷修改的进度时间和调整卷大小有关,上次扩容68G,需要的时间好像接近2小时。若没等卷修改完成,其实在挂载卷的系统上是能够看到卷扩容后的大小。但是在执行 growpart 命令会失败,并且没有具体的报错信息。如下图:
扩展分区失败

踩坑二:/tmp目录 No space left on device 会引起扩容失败

EBS 卷修改的进度完成后,就可以进行扩容。这回也是growpart命令执行失败,报错返回跟上面一模一样。EMR 集群这个实例其实 /root 分区是正常的,/tmp 目录也没看到有挂载,如下: image.png

EMR的这个 ec2 实例有点奇怪,/tmp目录实际是链接到需要扩容挂载在/mnt分区的目录,还有在执行命令敲 tab 键进行命令补全会出现 No space left on device error。这个忘记截图了。 解决方案可以将 临时文件系统 tmpfs 挂载到 /tmp 挂载点。下面命令将创建一个挂载到 /tmp 的 10 M tmpfs。

$ sudo mount -o size=10M,rw,nodev,nosuid -t tmpfs tmpfs /tmp

/tmp空间问题解决了,growpart命令执行就不会报错了。 image.png

顺利踩完2次坑。o(^▽^)o