可扩展 RAID 存储系统

可扩展 RAID 存储系统

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

基本上,我们有一个巨大的数据库,并且在接下来的几个月里,这个数据库会急剧增长。因此,理想情况下,我们只想将硬盘放到新服务器上。

我们还没有购买服务器,但正在了解一些细节。不过,我想先得到一个问题的答案。

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

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

镜像很重要,但是 RAID 1 仅适用于 2 个磁盘。Raid 10 已经允许我们镜像 RAID 0。据我所知,甚至 raid 10 也可以用两个磁盘安装。但是,之后会发生什么?是否有任何建议来实现灵活的 RAID 系统?

在操作系统层,我只想构建一个 LVM,一旦“磁盘”中增加了空间,它就会识别,以便对其进行扩展。但实际上,它位于由 RAID 控制器管理的几个磁盘上。

答案1

有相当多的选项,其弹性、磁盘效率和易操作性各不相同。以下是其中一些:

RAID 0 和 1 RAID 0 和 1 立刻就不行了,RAID 0 不提供冗余(事实上它增加了风险)并且 RAID 1 受限 - 正如您所说 - 最大只能有 1 个磁盘。

RAID 5 是一种选择,您只会丢失 1 个磁盘进行奇偶校验;尽管这有苦有甜,因为您拥有的磁盘越多,在 2 个(或更多)磁盘上发现错误的机会就越大(如果发生这种情况,您就完蛋了)。写入速度通常不够快。至少要有 3 个磁盘。扩展很耗时,而且完全失败的风险很高。

RAID 6 是一种更具弹性的选项,与 RAID 5 相同,只是它使用 2 个磁盘进行奇偶校验,因此即使 2 个磁盘发生故障,您仍可以重建。写入速度通常较慢。至少需要 4 个磁盘。扩展非常耗时,并且发生完全故障的风险低于 RAID5,但风险也不容忽视。

RAID 10 是所有 RAID 中最具弹性的选项,也是最高效的选项,因为它使用一半的现有磁盘进行镜像。与 RAID 5 和 6 相比,一个主要优点是写入速度通常会随着您添加的每个磁盘而显著提高(而不是性能下降)——这可能至关重要,具体取决于您正在实施的数据库类型。至少从 4 个磁盘开始,之后一次添加 2 个。扩展可能是最快的,风险最小。

RAID 50/60 是 RAID 5/6 和 RAID 10 之间的中间地带 - 磁盘使用效率比 RAID 10 更好,但要求开始时有大量磁盘(至少 6 个),性能也比基本 RAID 更好。扩展非常耗时,风险取决于阵列中有多少个磁盘,但介于 RAID 10 和 5/6 之间(偏向 5/6)。

逻辑卷管理器 我并不经常使用这个,所以我会把这个途径留给其他人来评论。

基于文件系统的 RAID BTRFS 和 ZFS 都可以在磁盘之间透明地执行 RAID 0、1、5,而无需 Linux RAID 管理。添加/删除/更改阵列集很容易(尽管像 RAID 一样耗时)。ZFS 的优势在于经过多年的尝试和测试,而 BTRFS 仍是一种新兴的文件系统。

结论:

Linux RAID 比硬件 RAID 更宽容,其中涉及 RAID 5/6/50/60。如果出现问题(例如在 RAID 5 阵列上丢失 2 个磁盘,您仍然可以组装阵列并尝试恢复,而大多数 HBA 会直接拒绝),Linux RAID 可以让您的生活更轻松一些。RAID 10 和硬件 RAID 通常是最安全的选择,无论是在弹性、I/O 吞吐量还是扩展时间方面。因此,请将其归结为我的前 2 名:

如果 I/O 吞吐量不是首要考虑因素:* Linux RAID 5,但定期将数据备份到其他地方以抵消风险。扩展非常简单,只需一行命令即可,但需要一段时间才能完成。

如果 I/O 吞吐量是优先考虑的因素:* 硬件 RAID 10,备份数据的计划可以稍微放宽一些。扩展将取决于硬件 RAID 类型,但初始化时间不会太长。

答案2

我想强调几点:首先,如果可能的话,我会尝试使用专用存储设备。为特定目的而构建的硬件往往比通用服务器更适合它。话虽如此,我明白如果预算低,可能没有机会获得小型磁盘阵列。

因此,如果您需要使用普通服务器,通常可以获得允许逻辑磁盘扩展的高级硬件 RAID 控制器。如果您使用其中之一,则只需在控制器完成重建阵列后重新扫描总线并扩展文件系统(假设没有分区表)。如果这是一个非破坏性操作,尽管强烈建议使用备份策略。请不要忘记阵列重建会影响性能。但是,即使这是可能的,我也不建议仅依赖服务器控制器。我稍后会详细说明这一点。

其次,我们似乎在这里关注一个容量因素,即磁盘空间。性能如何?在 RAID5 或 RAID6 配置中使用 4TB 驱动器将为您提供极差的随机/写入访问。在 10 或 20 IOPS/TB 范围内。如果您的数据库不经常访问,那就没问题,但如果您需要这种感觉,这可能是一个问题。

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

  • 根据性能需求分离卷(逻辑磁盘)
  • 使用先进的磁盘阵列控制器,提供 RAID5、RAID6 模式下的多个阵列;电池支持的缓存和备用磁盘。
  • 对于具有高性能要求的数据集,我将使用每 TB 较大的主轴比率和快速驱动器(SAS?)以及具有较小 RAID 损失的 RAID 配置(RAID10)
  • 对于没有性能要求的数据集,我会使用低每 TB 主轴数比率。这里,容量驱动器(2、3、4 TB NLSAS)在 RAID5 或 RAID6 配置中是理想的选择。我会从第 0 天开始专注于创建完整的阵列。
  • 为了扩展逻辑驱动器,我将在控制器级别创建新阵列,然后使用 LVM 进行管理。

举个例子。如果您需要 300 GB 的执行存储和 2TB 的容量存储,我将使用阵列控制器创建两个逻辑磁盘:

  • 性能:RAID1、2x600GB SAS 10k 磁盘
  • 容量:RAID5、3+1 NLSAS 2TB 磁盘

均通过 LVM(单独的卷组)进行管理

如果我需要更多“容量”磁盘空间,我会购买 4 个 NLSAS 磁盘并创建一个新的 3+1 阵列,并将其容量添加到容量卷组中。如果您没有磁盘托架,一些供应商有 JBOD 架,您可以将其连接到同一个磁盘控制器,并由它进行管理。

确切的 RAID5 和 RAID6 宽度将取决于您的需求和控制器功能。请查看手册以了解供应商在这方面的建议。经常推荐的配置是 3+1 中的 RAID5 和 6+2 中的 RAID6。

最后但同样重要的一点是,请监控您的磁盘故障并查看您的备用磁盘数量。

我希望这有帮助!

相关内容