【问题标题】:Prewarming EBS Volume预热 EBS 卷
【发布时间】:2017-07-26 06:06:18
【问题描述】:

除了使用以下命令之外,还有其他方法可以预热 PIOPS EBS 卷吗?

sudo dd if=/dev/xvdf of=/dev/null bs=1M

随着 EBS 卷大小的增加,上述命令似乎需要更长的时间。

所以在理想情况下,我想使用我的快照创建一个卷,并且在最短的停机时间内我想将该卷用作我的 mysql 数据目录,但在此之前我想预热它。如果有办法加快这个过程,那就太好了。然而,我们在硬件方面没有挑战,我们可以在 AWS 上使用更大的机器。

【问题讨论】:

  • 预热所需的时间与卷的大小直接相关。您需要阅读每个块。 dd 可能是最快的方法。您可以通过添加更多 PIOPS、增加实例大小(更好的网络)或使用 EBS 优化实例来提高 EBS 的性能。您将必须测试哪一个可以提供最佳性能。
  • 您是否遇到需要预热音量的问题?预热所花费的时间可能会破坏您通过预热获得的好处。
  • fio 应该比 dd 快,因为它是多线程的。

标签: amazon-web-services


【解决方案1】:

您声明您“想使用我的快照创建一个卷”,因此通过写入数据进行预热不是一个好主意。相反,您应该读取数据,这将导致数据从快照加载到您的 EBS 卷上。

来自Pre-Warming Amazon EBS Volumes

当您创建任何新的 EBS 卷(通用型 (SSD)、预置 IOPS (SSD) 或磁性卷)或从快照恢复卷时,后端存储块会立即分配给您。但是,第一次访问存储块时,必须先将其擦除干净(对于新卷)或从其快照实例化(对于恢复的卷),然后才能访问该块。此初步操作需要时间,并且在首次访问每个块时可能会导致卷的 IOPS 损失 5% 到 50%。对于大多数应用程序,在卷的生命周期内分摊此成本是可以接受的。数据访问一次后性能恢复。

但是,您可以通过在使用卷上的所有块之前对其进行写入或读取来避免在生产环境中出现这种性能损失;这个过程称为预热。优先写入卷上的所有块,但对于从快照恢复的卷来说,这不是一个选项,因为这会覆盖恢复的数据。对于从头开始创建的全新卷,您应该在使用该卷之前写入所有块。对于从快照创建的新卷,您应该在使用该卷之前读取所有有数据的块。

预热磁盘(通过读取或写入)可能需要很长时间。磁盘越大,所需的时间越长。如果可能,避免预热。相反,只需照常使用它。最坏的情况是,当您第一次访问每个块时,您的访问速度会稍慢,这通常不是问题(除非您正在执行速度测试)。

【讨论】:

    【解决方案2】:

    除非您在谈论从快照恢复时的初始访问性能损失,否则不再需要预热。见Initializing Amazon EBS Volumes

    如果该页面消失,以下是摘录:

    新的 EBS 卷在它们可用并且不需要初始化(以前称为预热)的那一刻获得最大性能。但是,从快照恢复的卷上的存储块必须是初始化(从 Amazon S3 下拉并写入卷),然后才能访问块。此初步操作需要时间,并且可能导致第一次访问每个块时 I/O 操作的延迟显着增加。对于大多数应用程序,在卷的生命周期内分摊此成本是可以接受的。数据访问一次后性能恢复。

    【讨论】:

    • 是真的吗?您在 AWS 文档中的哪里找到的?
    • @AshishBista,呃...单击第一句话中指向 AWS 文档的“初始化 Amazon EBS 卷”链接?这是第一段的直接引用。
    • 感谢您指出。块初始化过程非常缓慢。 300GB 快照需要 5-6 小时。
    猜你喜欢
    • 1970-01-01
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    相关资源
    最近更新 更多