用于后期增长的软件 RAID10

Ric*_*ard 7 lvm mdadm amazon-ebs

我想知道在 Linux 上的软件中创建 RAID10 的最佳实践是什么,以后可以通过添加磁盘或扩展下面的卷来增长。

我在 Amazon 上使用 EBS,我想创建 8x1GB RAID10,但能够根据需要在以后增长,尽可能减少任何数据迁移(当然还有停机时间。)

如果 MDADM/LVM 中的任何一个是最佳组合,我需要注意哪些性能或稳定性权衡?

Eri*_*ond 7

Amazon 不推荐 RAID1(它是 RAID10 的一部分)。请参阅http://aws.amazon.com/ebs/中的“Amazon EBS Volume Durability” ,他们指出:

“由于 Amazon EBS 服务器在单个可用区内复制,因此在同一可用区内的多个 Amazon EBS 卷之间镜像数据不会显着提高卷的持久性。”

根据第三方的基准测试和亚马逊的声明,我相信 RAID0 可以帮助提高性能。我的印象是,人们似乎在 RAID0 中使用最多 4 个 EBS 卷可以获得最大的好处,而在此之上的好处却越来越少。确保您使用的是具有高 IO 带宽的 EC2 实例类型。

LVM 本身可以跨多个 EBS 卷进行条带化,从而有效地实施 RAID0。如果您已经打算使用 LVM 来添加卷以扩展文件系统,那么这可能比基于 mdadm RAID0 的 LVM 更易于管理。

  • 但是请注意,如果底层卷之一的性能下降,则整个 RAID 的性能将受到影响。因此,虽然平均性能会更高,但您也会看到更频繁的性能变化。 (2认同)
  • 请参阅下面我对此主题的回复以及我链接到的博客条目。EC2 卷只是以不寻常的方式失败。另请参阅 http://aws.amazon.com/message/65648/ - 2011 年 EBS 大停电的事后分析。 (2认同)

Aar*_*own 6

对您的问题的简短回答是,据我所知,您无法扩展 linux 软件 RAID 分区,因此 RAID 不会在那里帮助您,但是由于许多其他原因,RAID10 是一个好主意,而 RAID0 几乎总是一个坏主意知道您是否关心数据或停机时间。我在 Internet 上看到很多关于将 RAID0 与 EBS 卷一起使用的建议,除了最特殊的情况外,这在所有情况下都是一个绝对糟糕的主意。

有了这么小的卷集(你说 8x1GB,所以 4GB 可用),我会跳过所有这些复杂性并使用单个卷,你可以使用 XFS 快照增长到 1TB。只需少量演出数据,您应该能够足够频繁地对卷进行快照,以便数据恢复成为一个简单的问题,并且您不会最大化 I/O。或者,如果您的磁盘每月能负担的费用超过目前 0.80 美元,那么现在就让它更大,不要长时间担心这种头痛。如果您的意思是 8x1TB 而不是 8x1GB,请继续阅读。


几周前我写了一篇关于这个的文章 http://blog.9minutesnooze.com/raid-10-ebs-data/ 并在五月份的 Percona Live 上简要介绍了这个主题:http : //www.percona.tv/ percona-live/running-an-e-commerce-database-in-the-cloud

我将在这里总结。

在物理硬件的世界中,磁盘发生故障的方式是已知的,并且在某种程度上是可以预测的。另一方面,EBS 卷以非典型方式失败。您不会看到磁盘“崩溃”——mdadm 永远不会自动将磁盘标记为故障。您得到的是卷经历严重且不可恢复的性能下降。有时卷只是缓慢,但有时它们完全锁定在 100% 的利用率并且没有执行 IOPS,基本上变得不可用。有时磁盘恢复活力足以从中获取数据,但有时则不然。这就是 2011 年 4 月的 EC2 大灾难中发生的事情。

如果您的 RAID0 在这种情况下,您将几乎没有选择。数组将被锁定,数据会被卡住。有时您可以对阵列中的卷进行快照并恢复快照,但很难保证一致性并且您将有停机时间 - 可能几个小时,因为写入快照是一个非常缓慢的过程,而且 RAID 阵列往往很大。

但是,如果您使用 RAID10 并且最终得到这些性能不佳或严重降级的卷之一,您需要做的就是将降级卷标记为失败,将其从阵列中删除,然后更换。我在我们的活动主数据库服务器上做了很多次这样的事情,这些服务器在 RAID10 集中有 10-20 个卷(不要使用那么多。除非你需要一个 10TB 的阵列,否则它是矫枉过正的)。

我对此的证明可以追溯到我使用 EC2Pocalypse(以及其他多次轻微的 EBS 中断)的经验。虽然 Internet 上一些最受欢迎的站点停机 4 天,但我的雇主在我们的生产环境中遇到了不到一个小时的停机时间,因为我们能够通过移除故障磁盘来恢复 RAID10 阵列。如果是 RAID0,它会是一个 SOL 情况。

缺点是最弱链接综合症……阵列的性能与性能最差的成员有关。数量越多,降级的可能性就越大,但这确实是一个监控问题。如果愿意,甚至可以自动化恢复,尽管我还没有这样做。使用 RAID10,您增加了阵列出现问题的几率,同时也增加了恢复的几率。使用 RAID0,每个额外的驱动器只不过是一个额外的责任。

我希望这对一些人有所帮助。


Jul*_*ent 5

我前段时间做了那个基准测试。我使用的命令在这里:http : //wiki.linuxwall.info/doku.php/en : ressources : articles : benchmark_ebs

就我所见,将存储拆分为这么多 EBS 卷,然后使用 mdadm 和 lvm 聚合它们几乎没有什么优势。但是,使用 RAID 1 和 LVM 在防止单个卷丢失的同时保持稍后添加另一对 RAID 1 的容量具有明显的优势。

但是,要回答您的问题:

您不能增加 RAID 卷。如果您创建一个 RAID 10 (4xEBS),并使用 LVM,那么您可以添加另一个 RAID10 并将其添加到您的 LVM 卷。但是您不会增加最初的 RAID 10。

您可以使用以下命令创建 RAID 10:

# mdadm --create /dev/md1 --verbose --level=raid1 --raid-devices=2 /dev/sdh1 /dev/sdh2
mdadm: size set to 104857536K
mdadm: array /dev/md1 started.

# mdadm --create /dev/md2 --verbose --level=raid1 --raid-devices=2 /dev/sdh3 /dev/sdh4
mdadm: size set to 104857536K
mdadm: array /dev/md2 started.

# mdadm --create /dev/md3 --verbose --chunk=32 --level=raid0 --raid-devices=2 /dev/md1 /dev/md2
mdadm: array /dev/md3 started.
Run Code Online (Sandbox Code Playgroud)

您可以使用以下命令在此 RAID10 之上创建 LVM 卷:

# pvcreate /dev/md3
  Physical volume "/dev/md3" successfully created

# vgcreate RAID10 /dev/md3
  Volume group "RAID10" successfully created

# lvcreate -L 190G -n store RAID10
  Logical volume "store" created
Run Code Online (Sandbox Code Playgroud)