Drone执行构建时提示设备无剩余空间,但存储充足,原因何在?
以下是可能导致该问题的具体原因及排查方法:
Docker存储目录所在分区空间不足
整机剩余空间充足不代表/var/lib/docker所在分区有足够空间。执行df -h /var/lib/docker查看该目录所在分区的可用空间,若分区已占满,需清理该分区的冗余文件或调整分区大小。Inode资源耗尽
Linux文件系统的inode用于记录文件元数据,即使磁盘空间充足,inode耗尽也会触发“no space left”错误。执行df -i /var/lib/docker查看inode使用情况,若已接近100%,说明大量小文件耗尽了inode资源,可清理Docker冗余镜像、容器或调整文件系统的inode配置。Docker存储驱动的空间限制
若使用overlay2等分层存储驱动,可能存在配置层面的空间配额限制。检查/etc/docker/daemon.json是否有storage-opts相关的空间限制配置,或通过docker info查看存储驱动的参数设置,确认是否存在人为限制。EC2临时存储被用作Docker存储目录
部分EC2实例默认将/var/lib/docker挂载在临时磁盘(如/dev/xvdb),这类磁盘空间通常较小且重启后数据会清空。执行mount | grep /var/lib/docker确认挂载点,若为临时磁盘,需将Docker存储目录迁移至100G的持久化磁盘。文件系统权限异常
/var/lib/docker/volumes目录权限错误会导致Docker无法创建卷目录。执行ls -ld /var/lib/docker/volumes检查权限,正确权限应为drwx--x--x,属主属组为root:root。若权限不符,执行chmod 711 /var/lib/docker/volumes和chown root:root /var/lib/docker/volumes修复。Docker daemon状态异常
Docker daemon运行异常可能导致空间计算逻辑出错。尝试重启Docker服务:systemctl restart docker,之后重新触发Drone构建验证问题是否解决。
内容的提问来源于stack exchange,提问作者Brian G

