让Grub2识别Raid 10引导/ root

我一直试图让我的突袭从grub2启动大约2天,而我似乎没有越来越近。 问题似乎是,它根本不承认我的袭击。 它没有看到(md0)等我不知道为什么或如何改变这一点。 我正在使用mdadm,2设备(本质上是raid1) raid10,f2 ,它目前正在退化 。

我已经尝试添加raidmdraid模块与其他人一起grub安装。 我试过grub-install一些变种,例如grub-install --debug --no-floppy --modules="biosdisk part_msdos chain raid mdraid ext2 linux search ata normal" /dev/md0

我一直在寻找一个答案,我没有做,但没有运气。 在我的另一个驱动器,我打算删除RAID是初始化并安装在启动罚款,但它不是该设置的启动/根。 我的grub.cfg不能被grub识别,因为它不能读取raid分区,所以我没有发布。 md0未列在我的/boot/grub/device.map

不要忘了GRUB2还处于开发阶段,所以如果你想使用它,这是在你自己的风险。

鉴于上述情况,我认为最好build议您获取最新的源代码并进行编译,看看是否能解决您可能遇到的任何问题。 你应该至less使用1.9.6版本,正如文档所说的那样 ,使得你的raid是使用v0.90 mdadm元数据超级块创build的。

例如,要为/ boot文件系统创build“-l 10”RAID1设备,使用“-n 4”磁盘和“-x 0”备件:

 mdadm --create -e 0.90 -n 4 -x 0 -l 1 /dev/md2 /dev/sda2 /dev/sdb2 [/dev/sdc2 /dev/sdd2 ...] 

而在使用mdadm v3.2.3,grub 1.99-21ubuntu3进行testing时,只有引导文件系统需要元数据0.90,而不是根目录。 raid10在磁盘被移除后没有工作,所以上面的例子是raid1。 (另一个与raid10有关的问题)

更新当前的软件版本(Ubuntu 14.10):
Grub2 2.02〜beta2-15

我设置了我的分区,并在其上制作了md设备,然后在其上运行mkfs。 那么我开始Ubuntu的安装程序(无处不在)。 (如果你先不mkfs,那么ubiquity坚持要对你的md设备进行分区。如果grub将处理分区上MD的分区表,那么IDK​​就是IDK。

使用XFS上的/ (包含/boot )在2个磁盘上的RAID10,f2上,即使磁盘丢失,GRUB也没有问题。 (目前或曾经有一个漏洞,GRUB认为如果缺less2个设备,RAID10是不可用的,而不检查两个设备是否缺失,所以在某些情况下,使用劣化的RAID10,Linux没有问题,但GRUB的简单检查失败。)

(XFS注意:grub2 2.02 beta2不支持XFS的新mkfs.xfs -m crc=1元数据格式,不要在包含/boot的文件系统上使用它,直到获得修补的GRUB。)

我testing了32K的大块大小,用于RAID10,f2以确保vmlinuz和我的initrd在磁盘上不是连续的。 我没有用一个需要GRUB从多个磁盘读取来获得一个完整文件的configuration进行testing,所以我仍然不知道这是否被支持。 (我想不是:我从GRUB命令行进行testing(在normal.mod加载后,不是从grub恢复控制台)。

 ls (md/0) blah blah holds an XFS filesystem ls (md/1) <machine reboots instantly> or booting with only one disk connected: error: failure reading sector 0xb30 from `fd0'. error: disk `md/1' not found. 

(英特尔DZ68DB主板,主板的SATA控制器上的磁盘(设置为RAID,而不是AHCI,以防万一))所以我想这是寻找一个正确的UUID分区来完成RAID0。

我的RAID10,f2使用默认的元数据1.2格式(位于从分区开始的4kiB处)。 由于现在grub能够理解md设备,所以你不需要在分区结尾隐藏你的md超级块的老习惯(你可以使用格式1.0和0.9我可以得到)我没有testingif grub还支持ddfimsm (一些主板控制器使用的BIOS raid元数据格式)。

我的磁盘都有GPT分区表,在第一个“常规”分区之前有EF02 Bios启动分区。 (从部门40到2047)。 Grub使用它来放置它需要的东西来读取RAID和XFS,但是这不适合512B引导扇区。

不要RAID你的BIOS启动分区。 您需要独立grub-install每个/dev/sdX ,以便您可以启动任何磁盘。 这样做也会将grub需要的内容写入该磁盘上的BIOS启动分区。 update-grub不会触及bios启动分区,它只是从configuration文件重build菜单和initrd。 只有grub-install接触启动分区,就像我说的,无论如何都需要在每个磁盘上运行。

testing实际上是通过删除一个HD引导的:Ubuntu提供了一个交互选项来跳过不可用的挂载文件系统。 (我在RAID0上有/var/cache )。 但告诉它跳过后,没事的。

对于任何一个向下滚动的人,我有这个问题试图让Ubuntu 16/14从24磁盘SW RAID 10启动。

关键原来是将/ boot分区设置为RAID 1 ; Grub显然不喜欢RAID 10.系统的其余部分,交换分区和根分区(“/”)被设置为RAID 10。