软件RAID10以后发展

我想知道在Linux上用软件创buildRAID10的最佳做法是什么,以后可以通过添加磁盘或扩展下面的卷进行增长。

我在亚马逊上使用EBS,我想创build8x1GB RAID10,但能够根据需要稍后增长,如果可能,最小化任何数据迁移(当然,宕机)。

如果任何MDADM / LVM是最好的组合,是否有任何性能或稳定性权衡,我需要知道的?

亚马逊不推荐RAID1(这是RAID10的一部分)。 请参阅http://aws.amazon.com/ebs/中的“Amazon EBS Volume Durability”,其中声明:

“由于Amazon EBS服务器在单个可用区域内进行复制,跨同一可用区域中的多个Amazon EBS卷镜像数据不会显着提高卷的耐用性。”

根据亚马逊的第三方基准testing和声明,我相信RAID0可以提升性能。 我的印象是,人们似乎在RAID0中使用多达4个EBS卷,从而获得最大的收益,而且在这之上的收益正在下降。 确保您正在使用具有较高IO带宽的EC2实例types。

LVM本身可以在多个EBS卷上进行分条,从而有效地实现了RAID0。 如果您已经打算使用LVM来添加卷来增长文件系统,那么在mdadm RAID0之上这比在LVM上进行pipe理要容易一些。

你的问题的简短答案是,据我所知,你不能成长一个Linux软件的RAID分区,所以RAID不会帮你在那里,但RAID10是一个好主意,由于其他一些原因,RAID0几乎总是一个坏想法, 如果你关心你的数据或宕机 。 我在网上看到很多关于在EBS卷上使用RAID0的build议,除了最特殊的情况外,这是一个绝对可怕的想法。

有了这么小的卷集(你说的是8x1GB,所以4GB可用),我只是跳过所有这些复杂性,并使用一个卷,你可以使用XFS快照增长到1TB。 只有less量的数据,你应该能够频繁地对卷进行快照,以便数据恢复成为一个简单的问题,而且不会让I / O变得最大化。 或者,如果您的磁盘能够支付超过当前的$ .80美元/月的价格,那么现在就把它做大一点,长时间不用担心这个头痛的问题。 如果你的意思是8x1TB而不是8x1GB,请继续阅读。


几周前我写了一篇关于这个文章的文章,并在5月份的时候在Percona Live上简要介绍了这个主题: http : //www.percona.tv/ Percona的活/磨合的,电子商务,数据库中的云

我将在这里总结。

在物理硬件世界中,磁盘可能出现故障的方式是已知的,并且有些可预测性。 另一方面,EBS卷却以非典型的方式失败。 您看不到磁盘“崩溃” – mdadm永远不会自动将磁盘标记为失败。 你得到的是体积严重,无法恢复的性能下降。 有时卷的速度很慢,但有时它们完全locking在100%的利用率,没有执行IOPS,基本上变得不可用。 有时磁盘会恢复到原来的数据状态,但有时候不会。 这是在2011年4月的伟大EC2pocalypse中发生的事情。

如果在这种情况下你的RAID0,你将有几个选项。 数组将被locking,数据将被locking。 有时可以对arrays中的卷进行快照并恢复快照,但是一致性难以保证,并且会导致停机 – 可能需要几个小时,因为写快照是一个非常缓慢的过程,RAIDarrays往往很大。

但是,如果您使用RAID10,并且最终遇到这些性能不佳或严重降级的卷之一,则只需将降级卷标记为失败,将其从arrays中取出,然后将其replace即可。 我在我们的主数据库服务器上做了很多次,这些服务器在RAID10集中有10-20个卷(不要用那么多,除非你需要一个10TB的数组)。

我的certificate可以追溯到我对EC2Pocalypse(和其他多个小EBS中断)的体验。 虽然互联网上一些最受欢迎的网站已经停机了4天,但我们的雇主在我们的生产环境中经历了不到一个小时的停机时间,因为我们能够通过移除故障磁盘来恢复RAID10arrays。 它是RAID0它将是一个SOL的情况。

缺点是最薄弱的环节综合症…arrays的performance与performance最差的成员联系在一起。 数量越多,降解的可能性越大,但这实际上是一个监测问题。 如果这样倾向的话,甚至可以使经济复苏自动化,尽pipe我还没有这样做。 使用RAID10,可以增加arrays中出现问题的几率,同时也增加恢复的可能性。 使用RAID0时,每个额外的驱动器只是一个额外的责任。

我希望这有助于一些。

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

从我看到的情况来看,在如此多的EBS卷中拆分存储并没有什么好处,然后使用mdadm和lvm进行聚合。 然而,在使用RAID 1和LVM来防止单个卷损失的同时,保留稍后添加另一对RAID 1的容量也是一个明显的优势。

但是,回答你的问题:

您无法增长RAID卷。 如果您创buildRAID 10(4xEBS),并使用LVM,则可以添加另一个RAID10并将其添加到LVM卷。 但是你不会增长最初的RAID 10。

您可以使用以下命令创buildRAID 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. 

您可以使用以下命令在此RAID10之上创build一个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 

这不是EBS特有的,但在mdadm 3.3的发布公告中有个好消息:

这是一个重要的新版本,所以不要太惊讶,如果有几个问题…

一些亮点是:

  • 可以对 RAID10arrays进行重新devise,以更改设备数量 ,更改块大小或更改'near'和'offset'之间的布局。 这将总是改变data_offset,并且如果data_offset没有被移动的空间,将会失败。

根据U&L的这个答案 ,你至less需要linux 3.5。