如何增大AWS部署的GitLab Runner流水线可用磁盘空间
问题原因
你遇到的磁盘容量不足是GitLab Runner AWS EC2驱动的默认配置导致的:
- 默认配置下GitLab Runner创建EC2实例时,根卷容量固定为16G,你看到的
/dev/nvme0n1p1就是这个默认根卷 - c5d.large自带的50GB是本地临时NVMe盘,默认没有被格式化挂载,也没有被Docker和CI任务使用
解决方案
方案1:直接调整EC2实例根卷大小(最便捷)
直接修改GitLab Runner的配置,让新创建的实例默认根卷扩容到你需要的大小即可:
- 打开GitLab Runner的配置文件
/etc/gitlab-runner/config.toml,找到对应[runners.machine.autoscaling]段落的配置 - 添加参数
amazonec2-root-size = 50(单位为GB,可根据需求调整数值) - 重启GitLab Runner服务生效:
gitlab-runner restart - 如果你是新注册Runner,直接在注册命令中添加参数
--amazonec2-root-size 50即可
配置生效后新启动的CI任务,对应实例的根卷就会变成50GB,空间不足问题直接解决。
方案2:挂载c5d.large自带的50GB本地临时盘(性能更高、成本更低)
c5d.large自带的本地NVMe盘读写性能远高于EBS根卷,且无需额外付费,适合CI构建这种临时场景,配置方式如下:
- 在GitLab Runner的
config.toml中添加用户数据配置,自动格式化挂载本地盘到Docker数据目录:
[runners.machine.autoscaling] amazonec2-userdata = ''' #!/bin/bash # 格式化本地NVMe盘 mkfs.ext4 -F /dev/nvme1n1 # 挂载到Docker默认数据目录 mkdir -p /var/lib/docker mount /dev/nvme1n1 /var/lib/docker # 写入fstab保证重启后自动挂载 echo "/dev/nvme1n1 /var/lib/docker ext4 defaults 0 0" >> /etc/fstab # 重启Docker服务保证数据写入新挂载的磁盘 systemctl restart docker '''
- 重启GitLab Runner服务生效即可,后续CI任务的所有Docker镜像、构建缓存、构建产物都会存储在50GB的本地盘上,完全满足React Native构建的空间需求。
临时应急方案
如果暂时不方便修改Runner配置,可以在.gitlab-ci.yml的任务脚本最开头添加清理命令,释放冗余空间:
your_job: before_script: - docker system prune -af - rm -rf ~/.cache/ # 其余任务配置不变
该方案只能临时释放1-3GB空间,仅适合应急使用。
验证方式
调整配置后,在CI任务脚本中添加df -h命令执行,查看overlay和/builds对应的挂载点容量,确认已经扩容到16G以上即可。
内容的提问来源于stack exchange,提问作者Panji Setya Nur Prawira
相关产品推荐
相关产品推荐

