优化大 EBS 卷初始化(预热)

Ash*_*sta 1 amazon-ec2 amazon-web-services ec2-ami amazon-ami

我正在从具有 300GB 根卷的数据库服务器烘焙 AMI。80% 的容量正在使用中。烘焙 AMI 背后的原因是我们每天需要多个具有完全相同数据的新实例。AMI 是合适的解决方案,因为恢复过程非常缓慢。因此创建实例后无法启动数据恢复过程。我们希望实例在 7-8 分钟内准备好所有数据。

但是,新实例中的性能非常差。其背后的原因是实例使用 EBS 并且需要按照本文档中的描述进行初始化。

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-initialize.html

不幸的是,初始化过程需要 5-6 小时,这对我们来说不是一个解决方案。

那么,当 AMI 中需要的底层数据非常大时,烘焙 AMI 的最佳实践是什么?

Ash*_*sta 5

现在,我有一些对初始化 EBS 卷有很大帮助的东西。

AWS 建议ddfio用于初始化 EBS 卷。运行单个dd进程需要太多时间。因此,使用多个进程dd从给定块中提取一小块数据使得初始化过程非常快。

nohup seq 0 $(($(cat /sys/block/xvda/size) / (1 << 10))) | xargs -n1 -P8 -I {} sudo dd if=/dev/xvda of=/dev/null skip={}k count=1 bs=512 > /dev/null 2>&1 &"

  • 您介意分享一下上述过程需要多长时间吗?(与您上面提到的5-6小时相比) (2认同)
  • 考虑将 EC2 温池与 EBS 预热技术结合使用,以进一步提高从 AMI 创建的临时实例的磁盘性能。AWS 还提供“快速快照恢复”功能,但最后我检查了一下,它的成本相当高。 (2认同)
  • @shleimel 我通过以下未记录的方法取得了良好的结果。您可以使用 io2 10k iops 启动 AMI,然后立即将 ebs 修改为常规 gp2 或 gp3 卷。根据我的经验,如果驱动器小于 50GB,您将获得大部分已初始化的块。 (2认同)