如何重现:
- 在第 0 个小时,对 100GB 的磁盘进行快照。
- 12点时:
- 创建一个新的 EC2 实例。
- 从快照创建卷。
- 将新卷附加到新实例。
- 让实例保持运行。
此时,我预计所有数据将在不到一小时内从快照复制到新卷,但似乎需要 12 个小时左右。与此同时,新实例无法用于生产流量,因为任何请求都可能需要非常服役时间长。
有没有什么方法可以确保更快地复制?我相信我已经看到过提及dd
,但这真的能加快复制速度吗,还是它是一种安慰剂?
答案1
不,使用的dd
不是“安慰剂”。
从现有 EBS 快照创建的新卷在后台延迟加载。
所以,如果你不这样做某物为了鼓励它不那么懒惰,EBS 会自然地认为没有什么特别着急的事情,所以它不需要耗费自己的资源或 S3 的资源来快速加载数据。
如果您的实例访问尚未加载的数据,该卷会立即从 Amazon S3 下载请求的数据,并在后台继续加载其余数据。
dd
如果您需要确保还原的卷在生产中始终以峰值容量运行,则可以使用或强制立即初始化整个卷fio
。有关更多信息,请参阅初始化 Amazon EBS 卷。http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-restoring-volume.html
您甚至可以在卷已安装的情况下执行此操作。由于您只是从块设备读取数据(而不是向其写入数据),因此操作系统不会注意到或认为这是一个问题。
由于fio
可以并行运行读取,它可以比完成工作更快地预热您的dd
卷dd
。
如果您喜欢进度表,请先尝试pv - pterab /dev/xvdN > /dev/null
. (sudo apt-get install pv
首先)。这不一定是最快的,但它很稳定,而且看起来更有趣,因为它会为您提供当前和持续的吞吐量、完成百分比和预计到达时间。完成后,您的卷已完全预热。