Answers:
共有三种常见的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卡,该RAID卡提供SATA / SAS控制器(通常是DRAM或Flash中的读写缓存),本机命令队列以及板上的中央处理器,以进行更多的数学计算。这些硬件芯片的入门级价格在150美元到数千美元之间,而工业数据中心RAID背板则高达数千美元。
通常,每种类型的RAID都与某个特定方面“绑定”在一起,当该方面改变时,您会遇到兼容性问题。
软件RAID与定义RAID格式的操作系统有关。有时,同一操作系统的两个不同版本之间,RAID格式将被破坏,从而导致不兼容。尽管从理论上讲任何其他操作系统都可以支持任何软件RAID格式,但是由于它只是软件,因此实际上,大多数操作系统都具有不兼容的RAID格式,只有该操作系统才能识别。但是,最广为人知的兼容性是Linux内核(md
如您在OP中所讨论的)本地使用的RAID格式,它也可以识别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个或更多)的情况下。
尽管Linux 支持 BIOS RAID ,但我不建议您使用它。
在给您冗长的答案后,现在直接回答您的问题:
与常规的Linux软件RAID相比,RSTe给我什么?
请参阅上面的软件RAID和BIOS RAID之间的比较。“ RSTe”是BIOS RAID的实例;md
不带的Linux RAID -e imsm
是软件RAID的实例。
在RSTe模式下,是Linux md或BIOS处理的实际RAID I / O路径(即镜像和条带化)。
如果您指的是数据路径,则除非您有专用的硬件RAID卡,否则它始终由CPU(因此也由操作系统)处理。我不认为这些会出现在任何主板上,尽管那里有一些高端服务器芯片组可能会让我吃惊。
特别是,当我使用“矩阵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下,因此您需要安装两次引导程序才能在磁盘故障的情况下进行引导。它是否正确?
安装另一个副本并没有什么坏处,但是在磁盘出现故障的情况下,引导将是您最不用担心的事情。简而言之,请继续执行此操作,但这并不是最重要的事情。从实时CD将grub安装到HDD上很容易。
RAID中的磁盘(特别是如果它们具有相同的品牌和型号,在同一家工厂生产并且在同一温度下彼此相邻运行时)很可能会快速失败,一个接一个。因此,如果磁盘确实发生故障,只是耸耸肩放进新磁盘并开始重建可能是不行的:在重建期间,很有可能最后一个包含一致数据副本的磁盘本身也会发生故障。此时,当您进入最后剩下的磁盘时,我建议您请一位专家(或者如果您擅长于硬件,则自己动手做)从原始磁盘上拆盘,购买一个具有相同品牌/型号的新磁盘,将盘放入其中,然后使用新磁盘读取数据。这既昂贵又费时,
这就是我为您解答的五个问题;如果您在此信息中发现任何价值,请适当标记答案。谢谢。
mdadm --detail-platform
表示Intel Matrix Storage Manager版本为11.0.0.1339。实际上,我可以将单个驱动器视为/dev/sdc
和/dev/sdd
。然后我的假RAID1阵列是/dev/md126
。
Allquixotic的答案太长:
引导支持和稍微不同的功能集。从根本上讲,它是一种数据格式。–您甚至可以在没有Intel RST Option ROM的情况下使用它(那时您没有特殊的引导支持)。格式表示的内容写在mdadm
手册页中。
通过Linux md(即完全内核)。
这有一个悬而未决的问题:为什么英特尔的RST仅限于某些芯片组?他们根本不参与RAID。它们充其量只能存储一点,它告诉Option ROM拒绝在不受支持的芯片组上运行。
嗯,一个答案太长,另一个答案太短。
RST“ raid”主要用于双启动工作站的情况,因为英特尔生产Windows和Linux驱动程序,并且您可以在BIOS中配置RAID。您可以配置RAID,对虚拟磁盘进行分区,并且可以在两个OS都了解多个分区的情况下进行双重引导。
mdam用于服务器是否专用于Linux的情况。这是“更好的”,因为如果要重建阵列,则是从操作系统而不是从BIOS进行操作,因此重建速度要快得多。对于大磁盘,BIOS突袭重建可能需要几天的时间。
但是现实是您在绿色C或蓝色C之间进行选择。现实是软件RAID本质上是“最后一击CYA”袭击。
如果您丢失了软件RAID阵列中的磁盘,从本质上讲,这使您可以立即停止服务器,进行完整备份,更换发生故障的磁盘以及可能的其余磁盘,然后重新创建阵列或尝试重建。通常,更换磁盘,擦除磁盘上的所有内容并重新创建阵列,然后从备份还原磁盘启动,再从备份还原,速度通常更快。
使用硬件阵列芯片,所有磁盘都可以放入热插拔托盘中,当一个磁盘出现故障时,红灯会亮起,在发生故障的磁盘上,将其弹出,将其更换为新磁盘,然后硬件RAID卡会自动重建该磁盘。服务器仍在运行时排列阵列。
从理论上讲,如果您实际上有热插拔托盘和Linux mdam软件阵列,则可以执行此操作,但是您可能会出现恐慌,并且服务器很容易无法在其余磁盘上引导。
另一个问题与所用磁盘的类型有关。普通工作站磁盘随着时间的流逝开始发展出坏扇区,这些坏扇区会在内部由磁盘重新映射为备用扇区。问题在于,此重新映射仅在写入时发生-如果在坏扇区上进行读取,则磁盘将延迟重新映射,并且在某些磁盘模型上,将反复重新读取坏扇区或发生故障的扇区,每次比较结果直到决定它为止在重新映射之前,可以从该部门获得最好的数据。此过程可能需要一分钟左右的时间,在此期间,阵列中现在有1个磁盘,而忽略了命令代码,因此Software raid软件将崩溃并将阵列标记为降级。重新启动后,您现在拥有2个具有相同扇区的磁盘,这些磁盘之间的数据可能不同,因此,软件RAID管理器现在不知道哪个是“好”的,没有错误的磁盘或重新映射具有最佳数据扇区的磁盘。Western Digital制造了本应用于软件RAID阵列的“红色”驱动器,但它们没有这样做,当它们检测到坏扇区并对其进行重新映射时,它们只会使扇区立即读取失败,因此阵列管理器可以从该扇区中获取数据在正常的驱动器上,然后将其写入故障扇区的驱动器。不用说,他们为这些磁盘额外收费。当检测到坏扇区并重新映射它们时,它们只是使扇区立即读取失败,因此阵列管理器可以从正常驱动器上的扇区中获取数据,并将其写入具有故障扇区的驱动器中。不用说,他们为这些磁盘额外收费。当检测到坏扇区并重新映射它们时,它们只是使扇区立即读取失败,因此阵列管理器可以从正常驱动器上的扇区中获取数据,并将其写入具有故障扇区的驱动器中。不用说,他们为这些磁盘额外收费。
总而言之,请勿对无法容忍某些故障(如果磁盘发生故障)的服务器使用软件RAID。它主要用于人们不定期备份的工作站,以及用于小型SOHO服务器的备份,如果磁盘崩溃,它们可以承受一天左右的停机时间。
mdadm
,因此Linux实际上并没有向我隐藏底层磁盘。其次,关于grub和MBR:如果RAID覆盖分区而不是磁盘,那么我仍然可以看到底层磁盘。MBR不在RAID下,因此您需要安装两次引导程序才能在磁盘故障的情况下进行引导。它是否正确?