2010-10-11 47 views
10

我见过的意见,“热身” EC2克服第一写惩罚: -如何“预热”EC2/EBS存储?

热身数据分区 - 有一个 缺点在EC2使用磁盘IO:一 “先写”的表现 最初写入新分区时命中。 为了避免这种损失,您可以通过执行访问 它的丢弃命令的排序 来“加热 ”分区。例如,您可以使用Linux dd命令写入磁盘。虽然 的惩罚仍然发生,并且不能 回避,至少第一次写入 您的数据库将不会受到 影响。

来源:http://answers.oreilly.com/topic/1345-getting-the-most-out-of-mysql-in-the-amazon-cloud/

...但我还没有找到最好的做法提出进一步的忠告!这是EBS存储的真实吗?任何人都可以推荐将执行此热身的'dd'语法,以及如何确保所有块都“变暖”?

+0

您是否在[AWS论坛](http://aws.amazon.com/forums)上提问了这个问题?我相信EC2/EBS团队可能会帮助你。 – 2010-10-13 19:39:16

回答

14

感谢指向AWS论坛的指针。在张贴之后,我在那里张贴了问题,并收到了Jason @ AWS的回复。线程是在这里: -

http://developer.amazonwebservices.com/connect/message.jspa?messageID=198413#198413

...和他的回应是: -

有一个第一代读处罚从快照创建 EBS卷, 体积在 之前提供的所有块已经成功加载 。你可以否定 要读这个点球迫使每块 音量:

$ dd if=/dev/<device> of=/dev/null

+1

这仅适用于从快照创建的卷。我怀疑卷可能被创建为稀疏文件,这意味着您将需要通过编写一些随机数据(或可能为零)来强制进行分配。 – Matt 2013-08-21 00:31:07

+0

dd if =/dev/zero of =/dev/ BS = 1M(对于非快照卷) – Matt 2013-08-21 00:40:38

+0

如果Windows快照卷用作启动驱动器,则会立即出现“错误打开输入文件的错误:32”无法访问该文件,因为它正在被另一个进程使用“任何解决方法? – 2014-05-22 19:15:10

3

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-prewarm.html表示快照卷可以通过读取整个磁盘进行预热;这加快了阅读速度。快照卷和非快照卷可以通过写入整个磁盘来预写写入操作。

当您创建新的EBS卷或从快照还原卷时,后端存储块会立即分配给您。但是,第一次访问存储块时,必须先将其擦除干净(对于新卷)或从其快照实例化(对于还原卷),然后才能访问该块。此初步操作需要时间,每次访问块时可能会导致卷的IOPS损失5%至50%。

+0

此答案被标记为低质量。你可能会把这个链接的一些引号放到你的答案中来改进它吗? – 2014-02-18 18:35:52