Linux 上的软件 RAID 10

Linux 上的软件 RAID 10

很长一段时间以来,我一直在考虑将一些服务器切换到 RAID 10。现在 Ubuntu 10.04 LTS 已经上线,是时候升级了。我使用的服务器是 HP Proliant ML115 (非常性价比高)。它有四个内部 3.5 英寸插槽。我目前使用一个驱动器作为系统驱动器,并使用 RAID5 阵列(软件)作为其余三个磁盘的驱动器。

问题是这会在启动驱动器上产生单点故障。因此我想切换到 RAID10 阵列,因为它会给我带来更好的 I/O 性能和更高的可靠性。问题只是好的支持 RAID10 的控制卡(例如 3Ware)的价格几乎与服务器本身一样贵。此外,软件 RAID10 似乎与 Grub 配合得不是很好。

你有什么建议?我应该继续运行 RAID5 吗?有谁能够成功安装软件 RAID10 而没有启动问题吗?

答案1

在这种情况下,我倾向于选择 RAID10,除非您需要单驱动器+RAID5 方案提供的额外空间。您可以获得相同的保证冗余度(任何一个驱动器发生故障,阵列仍可继续存在),并且在更糟糕的情况下可获得略好的冗余度(RAID10 可以在 6 种“两个驱动器同时发生故障”的情况中继续存在 4 种),并且不会出现 RAID5 经常遇到的写入损失。

您很可能会在从 RAID10 启动时遇到问题,无论是作为传统的嵌套阵列(RAID0 中的两个 RAID1)还是使用 Linux 最新的一体化 RAID10 驱动程序,因为 LILO 和 GRUB 都需要拥有启动所需的所有信息在一个驱动器上,而 RAID0 或 10(或软件 RAID5 - 它在硬件中工作,因为引导加载程序只能看到一个驱动器,并且控制器处理数据在驱动器之间实际分布的位置)可能并非如此。

不过有一个简单的方法可以解决这个问题:只需在每个驱动器的开头有一个小分区(128MB 应该足够了 - 您只需要为几个内核映像和相关的 initrd 文件留出空间),然后将它们设置为 RAID1 阵列,并将其挂载为/boot。您只需确保引导加载程序已正确安装在每个驱动器上,一切都将正常工作(一旦内核和 initrd 加载,它们将能够找到主阵列并正确处理它)。

软件 RAID10 驱动程序有许多调整块布局的选项,可以根据您的 I/O 负载模式带来进一步的性能优势(请参阅这里对于一些简单的基准测试),但我不知道有任何发行版在安装时支持 RAID 10(只有更传统的嵌套排列)。如果您想尝试 RAID10 驱动程序,而您的发行版在安装时不支持它,您可以按照上面 /boot 的描述将整个基本系统安装到 RAID1 阵列中,并在启动后使用剩余的磁盘空间构建 RAID10 阵列。

答案2

对于最多 4 个驱动器,或者您可以连接到主板的尽可能多的 SATA 驱动器,在许多情况下,使用主板 SATA 连接器和 Linux MD 软件 RAID 比使用 HW raid 更划算。首先,板载 SATA 连接直接连接到南桥,速度约为 20 Gbit/s。许多 HW 控制器速度较慢。然后 Linux MD RAID 软件通常比 HW RAID 更快、更灵活、更通用。例如,Linux MD RAID10-far 布局为您提供几乎 RAID0 的读取速度。并且您可以在 Linux MD RAID 中拥有多个不同 RAID 类型的分区,例如,/boot 使用 RAID1,然后 /root 和 raid10-far 中的其他分区以提高速度,或 RAID5 以提高空间。另一个参数是成本 - 购买额外的 RAID 控制器通常比仅使用板载 SATA 连接更昂贵;-)

可以在以下位置找到带有 /boot 的 raid 设置 https://raid.wiki.kernel.org/index.php/Preventing_against_a_failing_disk

有关 Linux RAID 的更多信息,请参阅 Linux RAID 内核组 wiki,网址为https://raid.wiki.kernel.org/

答案3

嗯,你基本上已经回答了你自己的问题。

  • 你没有钱买硬件 raid10 卡
  • Grub 不支持在 RAID10 软件 RAID 上启动

这意味着您不能使用 RAID10。

在所有磁盘上使用 RAID5 怎么样?对我来说,这听起来不像是高端(或流量)服务器,因此性能损失可能不会那么严重。

编辑:我刚刚在 Google 上搜索了一下,似乎 Grub 无法读取软件 RAID。它需要在每个要启动的磁盘上安装引导加载程序(在 RAID5 中:每个磁盘)。这对我来说似乎非常笨拙,您是否考虑过从 ebay 购买二手 RAID5 卡?

相关内容