如何为 CentOS 6 配置 RAID 5(尤其是条带大小)以及 24 x 1.2 TB 驱动器?

如何为 CentOS 6 配置 RAID 5(尤其是条带大小)以及 24 x 1.2 TB 驱动器?

为一个戴尔 R920拥有 24 个 1.2TB 磁盘(和 1TB RAM),我希望设置 RAID 5 配置以实现快速 IO。该服务器将用于托管 KVM VM,这些 VM 将读取/写入各种大小的文件,包括非常大的文件。我对数据安全不太感兴趣,因为如果服务器因任何原因发生故障,我们只需在更换故障部件后从裸机重新配置服务器即可。 因此,性能是主要关注点。 我们正在考虑 RAID 5,因为它允许我们将数据分布在多个主轴上,从而提供更好的性能,并且虽然这不是我们的主要关注点,但也为我们提供了一些数据保护。我们的 NIC 是双 10Gbps。

我仅将这个问题限制在 RAID 5 上,因为我们认为这将提供最佳性能。只有存在令人信服的性能原因时,我们才会考虑其他方法。但是,我认为我更喜欢与 RAID 5 配置相关的答案。

好的,综上所述,以下是我们目前的配置想法:

  • 24 个硬盘:RMCP3:1.2TB,10K,2.5英寸6Gbps
  • RAID 控制器:H730P、12Gbps SAS 支持、2GB NV 缓存
  • 1 个热备用(如果驱动器发生故障,则可以延长使用寿命)
  • 23 个数据驱动器(其中 1 个用作奇偶校验,其余 22 个用作数据)
  • 条带大小:1MB(1MB/22 个数据驱动器 = 每个磁盘约 46.5KB - 或者,我误解了条带大小)?
  • 阅读策略:自适应预读
  • 写策略:写回
  • 磁盘缓存策略:已启用

如果条带大小是数据驱动器的总大小,那么我认为每个驱动器约 46.5KB 将为我们提供非常好的吞吐量。如果条带大小是每个主轴的,那么我完全搞错了。

条带大小是否也指单个文件所占的大小?例如,如果文件大小为 2KB,选择 1MB 的条带大小是否意味着我们浪费了近一兆字节?或者条带内可以存放多个文件吗?

最后,当我们安装 CentOS 6.5(或最新版本)时,我们是否需要做一些特殊的事情来确保文件系统以最佳方式使用 RAID?例如,文件系统有一个选择-E 步幅我被告知这应该与 RAID 配置相对应。但是在 CentOS 安装期间,有什么方法可以做到这一点吗?

非常感谢您对配置 RAID 5 实现快速 IO 的想法。

答案1

请在控制器和驱动器设置中使用 RAID 1+0。如果需要更多容量,嵌套 RAID 级别,如 RAID 50/60可以工作。您可以在少量企业 SAS 磁盘(8 个或更少的驱动器)上使用 RAID 5,因为重建时间并不长。但是,24 个驱动器是一个可怕的错误。(哦,禁用单个磁盘缓存功能......很危险)

I/O 和本地存储性能有很多方面。每秒有 I/O 操作数、吞吐量和存储延迟。RAID 1+0 是这两者之间的良好平衡。其优点是您使用的是企业磁盘、功能强大的硬件控制器和大量磁盘。您需要多少容量?

您可能会遇到虚拟磁盘组内可使用的驱动器数量限制。PERC/LSI 控制器传统上将单个 RAID 级别和 RAID 1+0 限制为 16 个驱动器。用户指南证实了这一点您无法在单个 RAID 5 或单个 RAID 1+0 组中使用全部 24 个磁盘。

另一个需要考虑的方面是,根据您的工作负载,您可以使用 SSD 缓存LSI 高速缓存某些 PERC 控制器上的功能。它可能无法实现此功能,但了解您的 I/O 模式将有助于定制存储解决方案。


至于 ext4 文件系统创建选项,其中大部分将由硬件 RAID 控制器抽象化。您应该能够在此处创建文件系统而无需任何特殊选项。您所指的参数将对软件 RAID 解决方案产生更大的影响。

答案2

不要在 24 个 1TB 磁盘上使用单个 RAID 5 阵列!我不太在意您喜欢将答案限制为什么,这是一个坏主意,您应该考虑其他选项。

每更换一个磁盘,磁盘发生故障的几率就会增加。重建所需的时间也会增加。当驱动器发生故障并被替换时,它将使用所有磁盘上的尽可能多的 IO 来为新磁盘构建数据。在此过程中,您剩余的 23 个好磁盘中的一个很可能会发生故障,迫使您从备份中恢复服务器。你说你不在乎……但你愿意接受每月一次这样做吗?每周一次?随着磁盘的老化,情况很可能会变得如此糟糕。

此外,如果您想要性能,RAID5 会将您引向错误的方向。在许多情况下,RAID5 的性能比其他选项更差,因为它必须为每次写入计算奇偶校验,然后将其也写入驱动器。RAID5 不是为性能而设计的。

如果您真的不关心您的数据,那就使用 RAID 0。但即便如此,也要创建几个单独的阵列,而不是一个巨大的 24 磁盘 RAID 0。

如果您想要性能和完整性,请使用 RAID10。您将损失一些磁盘空间,但性能会得到相当大的提升。

或者您可以看看像 ZFS 这样从一开始就设计用于处理磁盘上大量数据的东西。

答案3

您的选择:

  • RAID 0:这会将所有磁盘变成一个没有冗余的单元。在所有选项中,它具有最高的读写性能和最大的可用空间,但单个磁盘的丢失意味着所有数据的丢失。

  • RAID 1+0:这会将所有磁盘变成一个单元,所有数据都存储在两个磁盘上。读取速度与 RAID 0 大致相同,写入速度减半(因为您需要将每部分数据写入两次),并且可用空间只有一半。单个磁盘丢失不会影响数据可用性,对读写速度的影响也微乎其微。

  • RAID 5:这会将所有磁盘变成一个单元,一个磁盘上有一个奇偶校验值。读取速度略低于 RAID 0,写入速度要慢得多,可能比单个非 RAID 磁盘的写入速度慢(每次写入都需要在至少两个磁盘上进行读取-修改-写入循环),并且会丢失一个磁盘的空间用于奇偶校验信息。单个磁盘的丢失会导致读取速度大幅降低(重建存储在该磁盘上的数据需要从全部与其他磁盘相比,这不会对数据可用性造成影响。

  • RAID 6:这基本上具有 RAID 5 的所有优点和缺点,只是它除了奇偶校验计算外还存储了更复杂的校验和,并且可以处理两个磁盘的丢失而不会丢失数据。

如果数据安全确实不重要(这包括从原始源恢复数据所花费的时间,这可能需要几天时间,以及重新进行中断计算所浪费的时间),我建议使用 RAID 0。否则,如果您的工作负载几乎完全是读取的,并且您需要一定的可靠性,我建议使用 RAID 6(但请注意,从故障磁盘恢复时性能会受到影响)。如果您有读写工作负载,我建议使用 RAID 1+0。

根据您工作负载的确切性质(即,如果给定任务访问磁盘空间的明确定义的子集),您可以设置多个独立的 RAID 阵列,这样一个阵列的故障就不会影响其他阵列。

RAID 5 在您的环境中没有任何优势。与 RAID 0 相比,它的性能会受到影响(尤其是写入),而且考虑到您拥有的磁盘数量,几乎可以肯定在恢复过程中会有第二个磁盘发生故障,这不会带来任何数据安全方面的好处。

答案4

好的,只回答一个明确的问题——条带大小。条带大小越大越好,除非您的 RAID 愚蠢到总是将整个数据条带作为最小 I/O 块进行读取/写入。

为什么?——小的条带大小意味着任何较长的 I/O 都需要多个磁盘,条带大小越小,一个逻辑 I/O 加载多个磁盘的机会就越多。大条带意味着只有一个磁盘(或几个磁盘)参与 I/O 的机会就更多。这似乎不足,因为与多个磁盘相比没有提升,但随后几乎随机的负载跳入,您意识到负载将或多或少均匀地分布在所有磁盘上。

您可以在这里找到更多背后的理论:http://www.vinumvm.org/vinum/Performance-issues.html

相关内容