可扩展的RAID存储系统

我目前正在为我们的办公室build立一个存储单元。 目前预算相当低,但需要扩展。

基本上我们有一个庞大的数据库,在接下来的几个月里会增长很多。 因此,理想情况下,我们只想把硬盘扔在我们的新服务器上。

我们还没有购买服务器,但通过一些细节。 不过,我想先回答一个问题。

扩展现有的RAID系统有多容易?

我们将从两个硬盘4TB的WD黑色开始。 但约1个月后,我们将需要添加另外2个4TB磁盘。 我们要得到的服务器有12个托架。

镜像很重要,但RAID 1只能与2个磁盘一起使用。 Raid 10已经可以让我们镜像一个RAID 0了。从我所看到的甚至可以安装两个磁盘的RAID 10。 但是,之后会发生什么? 有没有build议实现灵活的RAID系统?

在操作系统层上,我只想build立一个LVM,一旦有空间添加到“磁盘”就可以进行扩展。 但事实上,它位于由RAID控制器pipe理的多个磁盘上。

有不同程度的弹性,磁盘效率和易于操作的选项。 这里有几个:

RAID 0&1 RAID 0和1立即出现问题,RAID 0不提供冗余(实际上它增加了风险),RAID 1受到限制,正如您所提到的,最大容量为1个磁盘。

RAID 5是一个选项,你只会失去1个磁盘奇偶校验; 虽然这是甜蜜的,因为更多的磁盘你有机会find2(或更多)磁盘上的错误上升(如果发生这种情况,你是搞砸了)。 写速度往往是缺乏的。 最less3个磁盘开始。 扩展是耗时的,并且具有完全失败的高风险。

RAID 6是一个更具弹性的选项,与RAID 5相同,只是它使用2个磁盘作为奇偶校验,因此,如果仍然能够重build,则可能会丢失2个磁盘以使其失败。 写速度往往是缺乏的。 最less4个磁盘开始。 扩展是非常耗时的,并且具有低于RAID5的总体失败风险,但不是可以忽略的风险。

RAID 10是所有RAID中最具弹性的选项,而且租赁效率也很高,因为它使用了所有用于镜像的磁盘的一半。 与RAID 5和RAID 6相比,一个主要优势是写入速度通常会随着您添加的每个磁盘而显着提高(而不是性能的下降) – 根据您正在实施的数据库types的不同,这可能至关重要。 最less4个磁盘开始,一次加2。 与最小的风险相关的扩大可能是最快的。

RAID 50/60是RAID 5/6和RAID 10之间的中间地带 – 比RAID 10具有更好的磁盘使用效率,但要求有大量磁盘启动(最less6个),性能也比基本RAID好。 扩展是非常耗时的,风险取决于arrays中有多less个磁盘,但是介于RAID 10和5/6之间(加权为5/6)。

LVM用不了这么多,所以我会离开那个大道让别人评论一下。

基于文件系统的RAID BTRFS和ZFS都可以通过磁盘透明地执行RAID 0,1,5,而不需要Linux RAIDpipe理。 添加/删除/更改arrays集很容易(虽然耗时,如RAID)。 ZFS的好处是经过多年的尝试和testing,而BTRFS仍然是一个新兴的文件系统。

结论:

Linux RAID比硬件RAID更宽容,涉及RAID 5/6/50/60如果事情变成梨形,Linux RAID可以让你的生活变得更轻松(就像在RAID 5arrays上丢失2个磁盘一样,你仍然可以组装arrays,并尝试恢复,而大多数HBA将彻底拒绝)。 带有硬件RAID的RAID 10通常在弹性,I / O吞吐量和扩展时间方面都是最安全的。 所以把它放在我的前2名:

如果I / O吞吐量不是一个高优先级:* Linux RAID 5,但在其他地方常规地备份数据以抵消风险。 扩展与单行命令一样简单,但需要一段时间才能完成。

如果I / O吞吐量是一个优先事项:*硬件RAID 10,备份数据的时间表可以放松一些。 扩展将取决于硬件RAIDtypes,但不会花费太长的时间进行初始化。

我想强调几点:首先,如果可能的话,我会尝试使用专用的存储设备。 为特定目的而构build的硬件往往更适合于通用服务器。 这就是说,我明白,如果预算很低,可能没有机会获得一个小磁盘arrays。

因此,如果您需要使用普通服务器,则通常可以使用高级硬件RAID控制器来进行逻辑磁盘扩展。 如果使用其中的一个,只需要重新扫描总线并在控制器完成重buildarrays后(如果没有分区表)就展开文件系统。 如果这是一个无中断的操作,即使强烈build议备份策略。 请不要忘记arrays重build会影响性能。 但是,即使这是可能的,我也不会build议完全取决于服务器控制器。 稍后我会详细说明。

其次,看来我们在这里看一个容量因素,即磁盘空间。 性能如何? 在RAID5或RAID6configuration中使用4TB驱动器会给你非常差的随机/写访问。 在IO或20 IOPS / TB的范围内。 如果你的数据库不是经常访问,那么可以,但如果你有这个需求,这可能是一个问题。

考虑到这两点,我的build议是:

  • 根据性能需求分开卷(逻辑磁盘)
  • 使用高级磁盘arrays控制器,提供RAID5,RAID6模式下的多个arrays; 电池支持的caching和备用磁盘。
  • 对于具有高性能要求的数据集,我将使用大比例的每TB TB和快速驱动器(SAS?)的主轴比率和RAIDconfiguration(RAID10)
  • 对于没有性能要求的数据集,我将使用每TB比率较低的主轴。 容量驱动器在这里是理想的(2,3,4TB NLSAS)在RAID5或RAID6configuration。 我会专注于从第0天开始创build完整的数组。
  • 为了扩展您的逻辑驱动器,我将在控制器级创build新arrays,并使用LVMpipe理它们。

举个例子。 如果您需要300 GB的存储容量和2 TB的容量存储空间,则可以使用arrays控制器创build两个逻辑磁盘:

  • 性能:RAID1,2×600GB SAS 10k磁盘
  • 容量:RAID5,3 + 1 NLSAS 2TB磁盘

两者都通过LVMpipe理(单独的卷组)

如果我需要更多“容量”磁盘空间,我将获得另外4个NLSAS磁盘,并创build一个新的3 + 1arrays,并将其容量添加到容量卷组中。 如果您离开磁盘托架,则某些供应商拥有JBOD托架,您可以连接到同一个磁盘控制器,并由其进行pipe理。

确切的RAID5和RAID6宽度将取决于您的需求和您的控制器function。 请参阅手册以了解供应商的build议。 经常推荐的configuration是3 + 1中的RAID5和6 + 2中的RAID6。

最后但并非最不重要的,请监控您的磁盘故障,并看看您的备用磁盘数量。

我希望这有帮助!