背景
AWS EMR 集群有个 EC2 实例EBS卷(磁盘空间)满了,需要对它进行在线扩容。其实按照官方文档可以简单概括成这几个步骤
- 在控制台找到对应卷,然后修改卷大小
- 找到根卷(对应块设备)和对应扩容分区
- 使用
growpart命令调整分区大小 - 使用
resize2fs或xfs_growfs扩展 EBS 卷的文件系统
但是有时候往往不会这么顺利,下面介绍自己关于调整EC2的EBS卷大小踩坑的2次经历。
踩坑一:EBS 卷修改进度没有完成就进行调整分区大小
踩坑一估计有很多人也遇到过
AWS EBS 卷修改的进度时间和调整卷大小有关,上次扩容68G,需要的时间好像接近2小时。若没等卷修改完成,其实在挂载卷的系统上是能够看到卷扩容后的大小。但是在执行 growpart 命令会失败,并且没有具体的报错信息。如下图:
踩坑二:/tmp目录 No space left on device 会引起扩容失败
EBS 卷修改的进度完成后,就可以进行扩容。这回也是growpart命令执行失败,报错返回跟上面一模一样。EMR 集群这个实例其实 /root 分区是正常的,/tmp 目录也没看到有挂载,如下:
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命令执行就不会报错了。
顺利踩完2次坑。o(^▽^)o