在软件 RAID 上安装 GRUB 的优点/缺点?

在软件 RAID 上安装 GRUB 的优点/缺点?

什么优点是否需要在软件 RAID-1 上安装 GRUB?

什么缺点是否需要在软件 RAID-1 上安装 GRUB?


我问这个问题是因为大多数教程/帮助部分似乎都假设 GRUB 位于普通的(即不在 RAID 上)分区。

那么,是否有充分的理由反对在软件 RAID 上安装 GRUB?或者这只是惯例?

以下所有内容均反映了我有限的知识,请注意,其中必然包含错误。如果您发现错误,如果您提供更正或/和解释,我将不胜感激,谢谢:0)

因此,对于我个人来说,安装到 RAID-1 后,教程/恢复说明变得更加混乱。例如fsck /dev/sda1 对于非 RAID 系统来说是可以的,但是不是应该在单个 md 驱动器上完成的事情(AFAIK)。

我的理解是,由于它是软件 RAID,因此第一个启动驱动器上的故障无论如何都会停止启动。 (IE 只能使用 RAID-1 进行引导,因为实际上它最初不会作为 RAID 驱动器加载,直到加载了足够的操作系统来管理 md 驱动器。因此,在加载 GRUB 时,它只从第一个驱动器读取数据)

答案1

Grub 2(也称为 Grub 1.9x)本身支持 Linux RAID-1。 Grub 1(也称为 Grub 0.9x 或 Grub Legacy)不支持,但您可以在很大程度上假装它支持,因为 Grub 只从磁盘读取,而从 RAID-1 阵列的其中一个磁盘读取与读取一样好从阵列(性能除外,但这在这里并不重要;除非其中一个磁盘发生故障,但 BIOS 磁盘重新排序通常会使 Grub 从未发生故障的磁盘读取)。

因此,如果您将 Grub 设置在启动盘上,并将包含 Grub 的分区与第二个系统盘一起设置为 RAID-1 设备(使用 Grub 1,grub-install每个盘运行一次),那么如果任一盘出现故障,您的系统仍将启动。这是 Grub 相对于 RAID-1 的优势之一,但这是一个很大的优势。

在 RAID-1 设置中使用 Grub 不会带来操作上的负面影响。然而,可能存在安装成本:许多 Linux 安装程序还不能完全胜任启动重要设置的任务。您可能会发现必须/boot/grub/device.map手动创建或编辑。

您可能会发现较旧的文档(从 Grub Legacy 开始)说 Grub 不支持 RAID。确实如此,但正如我上面所写,您可以免费获得只读 RAID-1 支持(其他 RAID 模式也可以)。尚未针对 Grub 2 更新所有教程,即使使用 Grub 2,安装程序的支持也并不总是完全存在。因此,我确实建议将 Grub 1 放在 RAID-1 阵列上,但前提是您的发行版安装程序支持它,或者您可以轻松地摆弄 Grub 的配置(可能需要从 CD 启动几次才能正确启动)。

答案2

最好在您的软件 RAID 设备(如果您正在使用)上安装 GRUB,因为如果您的 RAID 设备降级,您的系统仍然可以启动。如果它不是 RAID 设备的一部分,则引导扇区没有冗余,并且在硬盘驱动器故障或文件系统损坏时可能无法引导。我不知道在软件 raid 上安装 GRUB 有什么缺点。

也许大多数文档都假设 GRUB 未安装在 RAID 设备上的原因是直到最近才成为可能。 GRUB 旧版本不会也永远不会支持这一点,但即使是 GRUB 2 也只是在去年左右发布的版本中才开始支持它。

进一步详细说明,GRUB 2 是以模块化方式设计的。因此,GRUB 添加了足够的功能,通过在继续引导之前加载必要的模块(如果需要)来识别引导设备。以下是我在 Debian squeeze 上的 2.6.32 内核的配置片段,LVM 位于 RAID 1 之上,grub-pc版本 1.99~20110112-1。它在继续引导 之前加载模块raid,因为该设备是 RAID 1 设备之上的 LVM 逻辑卷。mdraid1xlvm

    insmod raid
    insmod mdraid1x
    insmod lvm
    insmod part_msdos
    insmod part_msdos
    insmod ext2
    set root='(debian-boot)'
    search --no-floppy --fs-uuid --set=root 93ea47bb-16a1-4b52-a7eb-f17ea430d6cf
    echo    'Loading Linux 2.6.32-5-vserver-686-bigmem ...'
    linux   /vmlinuz-2.6.32-5-vserver-686-bigmem root=/dev/mapper/debian-root ro  quiet
    echo    'Loading initial ramdisk ...'
    initrd  /initrd.img-2.6.32-5-vserver-686-bigmem

这很容易测试,所以我建议进行一些实验。

答案3

我这里说的是老蛴螬。

优点:对启动菜单、内核更新和 Init-RD 的更改将自动转移到两个(或多个)磁盘。无需手动复制。

相反:设置 raid 1 时必须小心。以错误的顺序进行操作将导致您的第二个磁盘无法启动。问题是:grub 无法使用 raid 设备。因此它将使用 /dev/hdaN 或 /dev/sdaN 代替。但是:如果您当前的 sda 出现故障,以前的 sdb 将成为 sda。

解决方案是:设置为单个分区,但在分区末尾留一点空间,以便稍后添加 raid 1 的元信息而不会丢失数据。

在第一个磁盘上安装 MBR,在第一个磁盘上安装 grub。使用 dd 将两者复制到第二个磁盘。这样之后才设置了raid1。

相关内容