我使用的芯片组支持 Intel RSTe 技术。这意味着我有两个 RAID 设置选项:
- 普通linux软件RAID,使用
mdadm
命令。 - RSTe(通过 BIOS 或者再次使用带开关
mdadm
的命令-e imsm
)。
鉴于mdadm
两者都可以用于,我不明白两者之间的区别。
- 与常规 Linux 软件 RAID 相比,RSTe 能为我提供什么?
- 在 RSTe 模式下,实际的 RAID I/O 路径(即镜像和条带化)由 Linux
md
或 BIOS 处理。 - 特别是,当我使用“矩阵 RAID”(即 RAID 覆盖特定分区而不是整个磁盘)时,我是否需要在两个 MBR 上手动安装 grub?
答案1
概述
有三种常见的 RAID 类型:
Software RAID
:这意味着您的 BIOS 和其他操作系统认为您实际上有两个独立的磁盘,但纯粹在软件层面,您的操作系统使用一些特定于操作系统的磁盘格式进行 RAID(镜像、条带化、奇偶校验位等)。所有处理均由 CPU 完成,无需硬件支持。BIOS RAID
:也称为“假 RAID”或“主机 RAID”,这意味着您的主板固件(更具体地说,您的 SATA/SAS 控制器)明确支持识别 RAID 设备。在逻辑设备级别 (lun
),您的多个硬盘驱动器将作为单个驱动器出现在操作系统中。这基本上是 SATA/SAS 控制器在说“我真的只有一个硬盘驱动器。嗯,实际上是两个,但嘘,它只是一个,相信我”。换句话说,操作系统可以告诉这是一个 RAID 设置,但操作系统*不负责 RAID 奇偶校验/条带化/等的磁盘格式。但是,即使在这种模式下,CPU 也会对奇偶校验位和条带化进行所有计算。主板、BIOS 和 SATA 控制器具有足够的逻辑来物理“组合”设备并定义 RAID 的磁盘格式。但它们缺少专用的处理器来进行计算,而是依靠操作系统中的软件来告诉 CPU 进行计算,这就是为什么您仍然必须告诉 Linux 您的 BIOS RAID。(Intel Matrix/RST 是一种 BIOS RAID)。Hardware RAID
:您拥有一个专用芯片,其唯一目的是处理 RAID 所需的数据。该芯片的功能非常强大;一些硬件 RAID 控制器实际上有一个双核、类似 CPU 的板载芯片,尽管它经过专门优化以运行嵌入式操作系统,该操作系统在执行 RAID 计算时速度非常快,例如 RAID-5 的奇偶校验位或 RAID-0 的条带化。硬盘通过物理电缆连接到 RAID 卡,该卡提供 SATA/SAS 控制器、DRAM 或闪存中的读写缓存、本机命令队列以及执行更多数学计算的板载中央处理器。这些硬件芯片的价格从入门级的 150 美元到工业数据中心 RAID 背板的数千美元不等。
兼容性
一般来说,每种类型的 RAID 都与某些特定方面“相关”,当该方面发生变化时,就会遇到兼容性问题。
软件 RAID 与定义 RAID 格式的操作系统相关。有时,在同一操作系统的两个不同版本之间,RAID 格式会损坏,导致不兼容。虽然从概念上讲,任何其他操作系统都可以支持任何软件 RAID 格式,但由于它只是软件实际上,大多数操作系统都提供不兼容的 RAID 格式,只有该操作系统才能识别。但是,最广为人知的兼容性是 Linux 内核原生使用的 RAID 格式(
md
正如您在 OP 中讨论的那样),它也可以识别 Windows 的软件 RAID,称为动态磁盘。BIOS RAID 与您拥有的主板绑定。可以将使用特定 BIOS RAID 格式格式化的驱动器移至具有类似 BIOS RAID 解决方案的另一块主板;例如,将 Intel RST 移至具有 RST 的另一台系统。但是,如果您关心兼容性,则需要在采取行动之前仔细研究这一点,以确保它兼容。
硬件 RAID 与特定硬件控制器或制造商明确声明兼容的一系列硬件控制器相关。一些供应商维护非常一致的硬件 RAID 磁盘格式,该格式受多代控制器支持;其他供应商则更频繁地更改格式。同样,您必须根据具体情况进行研究。
表现
性能很大程度上取决于如何您配置 RAID 阵列的基本参数,而较少关注具体解决方案。一般来说,硬件 RAID 控制器具有最高的“上限”,可实现最大性能;它们也不会像其他解决方案那样对您的 CPU 造成太大负担。但是,如果您为工作负载选择了错误的 RAID 类型、错误的条带大小或错误的缓存方法,硬件 RAID 控制器也可能非常慢,比在非 RAID 模式下运行的驱动器之一还慢。其他解决方案也是如此,它们也可能非常慢。
软件 RAID 最适合 RAID-1 配置,因为镜像只是将相同数据复制到两个驱动器,无需计算奇偶校验位。软件 RAID 上的 RAID-5 非常糟糕。
BIOS RAID 性能通常与软件 RAID 相当,但某些 BIOS RAID 控制器和磁盘格式已知存在缺陷或性能不佳。一般来说,如果您必须在软件 RAID 和 BIOS RAID 之间做出选择,前者的性能会更好一些,尤其如果您正在运行最新的 Linux 发行版。
由于 RAID 控制器处理器的处理能力经过了优化,硬件 RAID 性能可以非常快,正如我所说,该处理器专为高吞吐量而设计,实际上可以作为多核芯片使用——因此这是非常强大的。主要缺点是您会失去灵活性——您不能在没有硬件 RAID 控制器的情况下将驱动器插入另一台计算机——并且成本较高。硬件 RAID 是使用 RAID-5 或 RAID-6 的最佳级别,尤其是当您拥有大量磁盘(4 个或更多)时。
全面的
尽管 BIOS RAID支持的由 Linux 开发,我不建议您使用它。
在我给你冗长的答案之后,现在直接回答你的问题:
与常规 Linux 软件 RAID 相比,RSTe 能为我提供什么?
请参阅上文对软件 RAID 和 BIOS RAID 的比较。“RSTe”是 BIOS RAID 的一个实例;md
不带 的 Linux RAID-e imsm
是软件 RAID 的一个实例。
在 RSTe 模式下,实际 RAID I/O 路径(即镜像和条带化)由 Linux md 或 BIOS 处理。
如果你指的是数据路径,它总是由 CPU(也就是操作系统)处理,除非你有专用的硬件 RAID 卡。我不知道思考它们可以安装在任何主板上,尽管一些高端服务器芯片组可能会让我感到惊讶……
特别是,当我使用“矩阵 RAID”(即 RAID 覆盖特定分区而不是整个磁盘)时,我是否需要在两个 MBR 上手动安装 grub?
不。事实上,您永远不需要在两个 MBR 上都安装 GRUB。让我们逐个分析一下:
软件 RAID:只需任意选择一个磁盘来安装 GRUB,然后按 BIOS 顺序设置它,以便它首先启动。请记住,您可以根据需要镜像各个分区,这样软件 RAID 中的磁盘就不必完全相同。一个磁盘可以有带引导加载程序的 MBR,另一个磁盘可以没有任何 MBR。
BIOS RAID:BIOS 会告诉您这是一个“磁盘”(它实际上会称其为 RAID 阵列),因此您无法选择在何处安装 GRUB。当您将 Linux 安装到此磁盘时,MBR(包括引导加载程序)和两个磁盘的所有其他扇区都将在两个磁盘之间复制。因此,与软件 RAID 不同,BIOS RAID 确实强制两个磁盘必须逐块相同,因为您无法将它们分离为两个逻辑设备;磁盘控制器说它们是一个逻辑设备,而不是两个。因此您不能只说“我想将一些数据写入驱动器 0,但不想写入驱动器 1”。这是不可能的。但使用软件 RAID 完全可以做到这一点。
硬件 RAID:BIOS 会告诉您这是一个“磁盘”,但就 BIOS 而言,它甚至不知道您正在处理多个磁盘。RAID 控制器完全地从操作系统和 BIOS 中抽象出 RAID 的所有细节,但您可以使用操作系统中的某种自定义协议配置某些硬件 RAID 控制器。但这些设备与软件层完全不可分割,类似于 BIOS RAID。
编辑:更新更多问题答案
我仍然不明白几件事。首先,关于 BIOS RAID:我可以使用 mdadm 构建它,因此 Linux 实际上并没有向我隐藏底层磁盘。
这很奇怪,很难解释。基本上,磁盘在某些层上显示为一个,在其他层上显示为两个。但我敢打赌,使用 BIOS RAID,每个磁盘都不会有自己单独的设备节点,例如/dev/sda
和/dev/sdb
。如果有,那么你的 BIOS RAID 与我见过的不同。
关于 grub 和 MBR:如果 RAID 覆盖分区而不是磁盘,那么我仍然可以看到底层磁盘。MBR 不在 RAID 下,因此您需要安装两次引导加载程序才能在磁盘发生故障时启动。这是正确的吗?
它没有伤害安装另一个副本,但如果磁盘出现故障,启动将是您最不需要担心的事情。简而言之,如果您愿意,请继续执行,但这并不是最重要的事情。将 grub 从实时 CD 安装到 HDD 很容易。
RAID 中的磁盘(尤其是如果它们是同一品牌和型号、在同一工厂生产、在相同温度下彼此相邻运行)可能会快速连续地发生故障。因此,如果磁盘确实发生故障,那么可能不能只是耸耸肩,然后放入新磁盘并开始重建:在重建过程中,包含数据一致副本的最后一个磁盘本身很有可能发生故障。此时,当您只剩下最后一个磁盘时,我建议您让专家(或者如果您擅长硬件,可以自己动手)从原始磁盘中取出盘片,购买相同品牌/型号的新磁盘,将盘片放入其中并使用新磁盘读取数据。这既昂贵又耗时,但却是保留数据最万无一失的方法。
以上就是我为您解答的五个问题;如果您发现这些信息有价值,请适当标记答案。谢谢。
答案2
Allquixotic 的答案太长了:
- 与常规 Linux 软件 RAID 相比,RSTe 能为我提供什么?
引导支持和略有不同的功能集。其核心是数据格式。– 您甚至可以在没有 Intel 的 RST Option ROM 的情况下使用它(这样您就没有特殊的引导支持)。格式的含义写在手册mdadm
页中。
- 在 RSTe 模式下,实际 RAID I/O 路径(即镜像和条带化)由 Linux md 或 BIOS 处理。
由 Linux md(即整个内核)实现。
这留下了一个问题:为什么英特尔的 RST 仅限于某些芯片组?它们根本不参与 RAID。它们最多存储一个位,这会告诉 Option ROM 拒绝在未支持的芯片组上运行。
答案3
嗯,一个答案太长,另一个太短。
RST“raid”主要用于双启动工作站,因为英特尔生产 Windows 和 Linux 驱动程序,您可以在 BIOS 中配置 raid。您可以配置 RAID,对虚拟磁盘进行分区,然后双启动,两个操作系统都可以理解多个分区。
如果服务器专用于 Linux,则使用 mdam。它“更好”,因为如果您要重建阵列,则从操作系统而不是 BIOS 进行重建,因此重建速度要快得多。对于大型磁盘,BIOS RAID 重建可能需要几天时间。
但事实上你是在绿色的 C 块和蓝色的 C 块之间进行选择。事实上,软件 RAID 基本上是“最后的 CYA” RAID。
如果您在软件 RAID 阵列中丢失了磁盘,这实际上允许您立即停止服务器,进行完整备份,更换故障磁盘和可能的其他磁盘,然后重新创建阵列或尝试重建。通常,更换磁盘然后擦除磁盘上的所有内容并重新创建阵列,然后从备份恢复磁盘启动,然后从备份恢复,这样速度会更快。
使用硬件阵列芯片,所有磁盘都可以放入热插拔托盘,当一个磁盘发生故障时,故障磁盘上的红灯会亮起,您可以将其弹出,用新磁盘替换,然后硬件 RAID 卡会在服务器仍在运行时自动重建阵列。
虽然理论上如果您有热插拔托盘和 Linux mdam 软件阵列就可以做到这一点,但实际上您可能会面临恐慌,并且服务器很容易无法在剩余的磁盘上启动。
另一个问题与所用磁盘的类型有关。随着使用时间的增加,普通工作站磁盘开始出现坏扇区,磁盘会在内部将这些坏扇区重新映射到备用扇区。问题是,这种重新映射只发生在写入时 - 如果读取坏扇区,磁盘将延迟重新映射,并且在某些磁盘型号上,磁盘将反复重新读取坏扇区或故障扇区,每次比较结果,直到它确定它具有从该扇区可以获得的最佳数据后再重新映射。此过程可能需要一分钟左右,在此期间,阵列中有 1 个磁盘忽略命令代码,因此软件 RAID 软件将崩溃并将阵列标记为降级。重新启动时,您现在有 2 个具有相同扇区的磁盘,这些磁盘之间的数据可能不同,因此现在软件 RAID 管理器不知道哪个是“好的”,是没有错误的磁盘,还是重新映射了具有最接近其数据的扇区的磁盘。 Western Digital 生产的“红色”硬盘应该用于软件 RAID 阵列,但这些硬盘不会这样做,它们会在检测到坏扇区时立即使扇区读取失败并重新映射,以便阵列管理器可以从好驱动器上的扇区获取数据并将其写入有故障扇区的驱动器。不用说,他们会对这些磁盘收取额外费用。
总之,不要将软件 RAID 用于无法容忍磁盘故障停机时间的服务器。它主要用于人们不定期备份的工作站,以及已备份且可以容忍磁盘崩溃时停机一天左右的小型 SOHO 服务器。