优化大 EBS 卷初始化(预热)
Optimize Big EBS Volumes Initialization (Warm-up)
我正在从具有 300GB 根卷的数据库服务器中烘焙 AMI。 80% 的音量正在使用中。烘焙 AMI 背后的原因是我们每天都需要多个具有完全相同数据的新实例。 AMI 是合适的解决方案,因为恢复过程极其缓慢。因此创建实例后无法启动数据恢复过程。我们希望实例在 7-8 分钟内准备好所有数据。
但是,新实例中的性能极差。其背后的原因是实例使用 EBS 并且需要按照本文档中的描述进行初始化。
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-initialize.html
不幸的是,初始化过程需要 5-6 个小时,这不是我们的解决方案。
那么,当底层数据需要在 AMI 中非常大时,烘焙 AMI 的最佳实践是什么?
现在,我有一些对初始化 EBS 卷有很大帮助的东西。
AWS 建议使用 dd
或 fio
来初始化 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 &"
我正在从具有 300GB 根卷的数据库服务器中烘焙 AMI。 80% 的音量正在使用中。烘焙 AMI 背后的原因是我们每天都需要多个具有完全相同数据的新实例。 AMI 是合适的解决方案,因为恢复过程极其缓慢。因此创建实例后无法启动数据恢复过程。我们希望实例在 7-8 分钟内准备好所有数据。
但是,新实例中的性能极差。其背后的原因是实例使用 EBS 并且需要按照本文档中的描述进行初始化。
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-initialize.html
不幸的是,初始化过程需要 5-6 个小时,这不是我们的解决方案。
那么,当底层数据需要在 AMI 中非常大时,烘焙 AMI 的最佳实践是什么?
现在,我有一些对初始化 EBS 卷有很大帮助的东西。
AWS 建议使用 dd
或 fio
来初始化 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 &"