【问题标题】:AWS beanstalk docker-pool devmapper running out thin poolAWS beanstalk docker-pool devmapper 耗尽了精简池
【发布时间】:2022-04-05 23:17:45
【问题描述】:

您好,我有几个使用 AWS beanstalk 运行 docker 映像的集群。我的 Docker 映像大小为 680MB,并且我验证了 Docker 数据卷 (/dev/xvdcz) 的容量为 12GB。我还验证了没有需要修剪的悬空图像/陈旧容器。目前它有 2 张图片(所以应该是大约 1.4GB)。

也就是说,我的新应用程序部署一直失败并出现错误:

layer: devmapper: Thin Pool has 1805 free data blocks which is less than minimum required 2425 free data blocks. Create more free space in thin pool or use dm.min_free_space option to change behavior

在未来的调查中,我发现/etc/sysconfig/docker-storage 中有一个设置将 dm.baseSize 设置为 100GB。这是文件内容:

DOCKER_STORAGE_OPTIONS="--storage-driver devicemapper --storage-opt dm.thinpooldev=/dev/mapper/docker-docker--pool --storage-opt dm.use_deferred_removal=true --storage-opt dm.use_deferred_deletion=true --storage-opt dm.fs=ext4 --storage-opt dm.basesize=100G"

这来自默认 AWS AMI。之后,我添加了一个 ebextension 以将 docker 卷 (/dev/xvdcz) 增加到 120GB,此后一切都没有失败。

我的问题是为什么我们需要 baseSize 为 100GB,有没有办法可以将它减少到 10GB,这样我就不必为每个盒子附加额外的存储空间?理想情况下,无需构建自定义 AMI。

这是我将卷更新到 120GB 后的新配置。

[ec2-user ~]$ lsblk
NAME                                                                                         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
nvme0n1                                                                                      259:1    0     8G  0 disk
├─nvme0n1p1                                                                                  259:2    0     8G  0 part /
└─nvme0n1p128                                                                                259:3    0     1M  0 part
nvme1n1                                                                                      259:0    0   120G  0 disk
└─nvme1n1p1                                                                                  259:6    0   120G  0 part
  ├─docker-docker--pool_tdata                                                                253:1    0 118.6G  0 lvm
  │ └─docker-docker--pool                                                                    253:2    0 118.6G  0 lvm
  │   └─docker-259:2-394917-4a52cb647e0a91037aaf4fb64345ae55567f2d8c5ff073048981987e6dcba7b0 253:3    0   100G  0 dm   /var/lib/docker/devicemapper/mnt/4a52cb647e0a91037aaf4fb64345ae55567f2d8c5ff073048981987e6dcba7b0
  └─docker-docker--pool_tmeta                                                                253:0    0   124M  0 lvm
    └─docker-docker--pool                                                                    253:2    0 118.6G  0 lvm
      └─docker-259:2-394917-4a52cb647e0a91037aaf4fb64345ae55567f2d8c5ff073048981987e6dcba7b0 253:3    0   100G  0 dm   /var/lib/docker/devicemapper/mnt/4a52cb647e0a91037aaf4fb64345ae55567f2d8c5ff073048981987e6dcba7b0

【问题讨论】:

  • 我遇到了和你一样的问题..你能粘贴你的.ebextension文件的内容吗?
  • 同样的问题,我将大小增加到 128 Gb,但错误仍然存​​在。

标签: amazon-web-services docker amazon-elastic-beanstalk


【解决方案1】:

默认情况下,EB 只为您提供 12GB 的图像存储空间。

要将其扩展至 100GB,请创建一个包含以下内容的 .ebextensions/blockdevice-xvdcz.config 文件。

option_settings:
  aws:autoscaling:launchconfiguration:
    BlockDeviceMappings: /dev/xvdcz=:100:true:gp2

请参阅https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker.container.console.html#docker-volumes 的“配置附加存储卷”部分

为了提高 Amazon Linux AMI 的性能,Elastic Beanstalk 为您的 Docker 配置两个 Amazon EBS 存储卷 环境的 Amazon EC2 实例。除了根卷 为所有 Elastic Beanstalk 环境预置,第二个 12GB 为 Docker 上的图像存储配置了名为 xvdcz 的卷 环境。

如果您需要更多存储空间或提高 Docker 映像的 IOPS, 您可以使用自定义图像存储量 BlockDeviceMapping 配置选项中的 aws:autoscaling:launchconfiguration 命名空间。

例如下面的配置文件增加了存储 卷大小为 100 GB,预置 IOPS 为 500:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    • 2017-07-10
    • 2015-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-24
    相关资源
    最近更新 更多