如何在软RAID 1上正确安装GRUB?


21

在我的设置中,我有两个磁盘,每个磁盘都采用以下方式进行格式化:

(GPT)
1)  1MB   BIOS_BOOT
2)  300MB LINUX_RAID   
3)  *     LINUX_RAID   

引导分区映射在/ dev / md0中,rootfs映射在/ dev / md1中。md0用ext2格式化,md1用XFS格式化。(我知道必须在md设备上而不是在sd上进行格式化-如果这是错误的,请告诉我)。

如何正确设置GRUB,以便如果一个驱动器发生故障,另一个驱动器仍会启动?通过扩展,替换驱动器也会自动包含GRUB吗?当然,如果可能的话。

Answers:


16

如果两个磁盘均为/dev/sda/dev/sdb,请同时运行grub-install /dev/sdagrub-install /dev/sdb。然后,两个驱动器将能够单独启动。

确保您的Grub配置没有对磁盘进行硬编码(hd0),而是搜索引导和根文件系统的UUID。

我不知道Grub支持将两个磁盘声明为RAID-1阵列,以便grub-install自动将两者写入。这意味着grub-install,如果更换一张磁盘,则需要再次运行;除了向RAID阵列添加新成员之外,这是另一件事。


1
“请确保您的Grub配置不会对(hd0)这样的磁盘进行硬编码,而是搜索引导和根文件系统的UUID。” 怎么样?
lifeofguenter

1
@lifeofguenter和search
不要再邪恶了


1
在某些系统上,它grub2-install不是grub-install
ndemou

1
请注意,RAID位于分区级别,而不是磁盘级别。如果是这样,那将没有问题,因为镜像还将镜像MBR。
Marcos Dione

3

过去一段时间,我已经在许多服务器上完成了此任务,有时发现了问题,通常我正在执行以下操作

sudo grub-install /dev/sdb
sudo update-grub /dev/sdb

我遇到的问题通常显示为错误消息,例如

update-grub … update-grub failed with no such disk …

为了解决这个问题,我已经运行

sudo mv /boot/grub/device.map /boot/grub/device.map.old 
sudo update-grub 

这似乎已经解决了问题-作为测试,在某些情况下,我已删除/sdv/sda并仅用于/dev/sdb从中进行引导,但这并不理想,在大多数生产环境中很可能无法实现!


0

我在安装CentOS 5和CentOS 6方面的经验是,在安装阶段,我当时配置了RAID-1-安装确实可以让您选择执行此操作。发生的情况如下:1.将/ dev / sda1定义为1 GB作为RAID分区2.将/ dev / sdb1定义为1 GB作为RAID分区3.创建了由/ dev / sda1组成的RAID设备/ dev / md0和/ dev / sdb1 4.使用/ dev / md0创建/ boot分区。5.使用步骤1-3创建其他分区。6.按照以下说明,在步骤5中创建的分区上实施LVM。

初始系统引导后,在grub.conf中将条目/ dev / sda1更改为/ dev / md0。然后,我将条目“ splashimage”行复制为has(hd0,0),并在开头添加#,并将(hd0,0)更改为(hd1,0)。查看上面的答案,其中显示了如何将grub安装到/ dev / sdb。修改fstab,以使引导安装点使用/ dev / md0(这样做时,在执行yum更新时,/ boot分区上会有更新的内容,它将被同时写入/ dev / sda1和/ dev / sdb1 )。如果您的/ dev / sda硬盘驱动器出现故障,则必须使用救援启动,并注释掉(hd0,0)行,并取消注释(hd1,0)行。您的系统应可启动

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.