从今天早上开始,我在更新AWS ECS中的服务时遇到了麻烦。任务无法启动。失败的任务显示此错误:
打开/var/lib/docker/devicemapper/metadata/.tmp928855886:设备上没有剩余空间
我已经检查了磁盘空间,并且有。
/ dev / nvme0n1p1 7,8G 5,6G 2,2G 73%/
然后我检查了inode的使用情况,发现使用了100%:
/ dev / nvme0n1p1 524288 524288 0 100%/
缩小搜索范围,我发现Docker卷是使用inode的卷。
我正在使用标准的Centos AMI。
这是否意味着在ECS群集上可以运行的服务数量最大? (目前我正在运行18个服务)
这可以解决吗?目前,我无法进行更新。
预先感谢
答案 0 :(得分:1)
您需要在EC2主机上调整以下环境变量:
ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION
ECS_IMAGE_CLEANUP_INTERVAL
ECS_IMAGE_MINIMUM_CLEANUP_AGE
ECS_NUM_IMAGES_DELETE_PER_CYCLE
您可以在以下所有设置中找到完整的文档:https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html
默认行为是每30分钟检查一次,并且仅删除5个超过1小时且未使用的图像。如果您想更频繁地清理更多图像,可以使这种行为更具攻击性。
要节省空间的另一件事是不要将图像层挤压在一起,而是针对不同的图像和图像版本使用一个公共的共享基础图像层。这会产生巨大的差异,因为如果您有10个不同的图像,每个图像的大小均为1 GB,则将占用10 GB的空间。但是,如果您只有一个1 GB的基本映像层,然后有10个小型应用程序层,它们的大小只有几MB,则仅占用了略大于1 GB的磁盘空间。