我正在尝试在现有的 linux ubuntu 安装上创建一个 raid 阵列。
我正在学习本教程... http://howtoforge.org/software-raid1-grub-boot-fedora-8
在经历了一百万次之后,我终于明白发生了什么。您在新的空白驱动器上创建了 raid 设备,将旧 / 驱动器复制到它,设置 grub menu.lst、fstab、mtab initrd 和 grub MBR 以全部指向 raid 设备(我已经定义并且正在工作) 然后重新启动。启动后,您现在可以在 RAID 设备 (/dev/md0) 中运行,然后您只需将原始驱动器连接到 RAID 阵列,它就会同步,瞧,您就完成了。
因此,我将 menu.lst 设置为主要从 raid 设备加载内核和 initrd,并故障转移到我原来的(仍然完好无损)旧磁盘。当我重新启动时,它总是失败。我启动机器,运行我的新 grub 条目,它显示“找不到错误 15 文件”。网上有很多关于它的东西,似乎没有任何帮助。
唯一奇怪的是当我用 grub 设置 MBR 时,你说“root (hd0,0)”,我终于明白它的意思了,它应该说文件系统类型是 ext2fs,分区类型 0xfd 或类似的东西那。我的什么也没说。但是当我运行 setup (hd0) 和 setup (hd2) 时,它说它正在对正确的驱动器做正确的事情。所以我认为它正在工作。但它无法从 md0 设备加载 initrd/内核。
我唯一在想的另一件事是,grub 到底是如何知道什么是突袭设备。内核没有加载,软件raid模块没有加载,愚蠢的小grub怎么知道从哪里加载initrd?所以我在想,好吧,从 /dev/md0 到 /dev/sdc1 (新的 raid 驱动器)的某个地方有一个映射,但我看不出这会发生在哪里。为了踢球,(我以各种组合做了很多次)我尝试设置 grub menu.lst 以尝试从 root=/dev/sdc1 (我的新驱动器)加载 initrd 和内核,它仍然说找不到文件. 所以要么 grub mbr 设置不起作用,要么我错过了一些非常简单的东西。
有任何想法吗?
这里有更多信息... root@io:~# cat /proc/mdstat 个性:[线性] [多路径] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : 活动 raid1 sdc1[1] 18771840 块 [2/1] [_U] root@io:~# fdisk -l 磁盘 /dev/sda:20.8 GB,20847697920 字节 255 个磁头,63 个扇区/磁道,2534 个柱面 单位 = 16065 * 512 = 8225280 字节的柱面 磁盘标识符:0x9d949d94 设备引导开始结束块 ID 系统 /dev/sda1 * 1 2337 18771921 83 Linux /dev/sda2 2338 2434 779152+ 5 扩展 /dev/sda5 2338 2434 779121 82 Linux 交换/Solaris 磁盘 /dev/sdb:320.0 GB,320072933376 字节 16 个磁头,63 个扇区/磁道,620181 个柱面 单位 = 1008 * 512 = 516096 字节的柱面 磁盘标识符:0x00000000 设备引导开始结束块 ID 系统 /dev/sdb1 * 1 4064 2048224+ 83 Linux /dev/sdb2 4065 620181 310522968 83 Linux 磁盘 /dev/sdc:20.0 GB,20020396032 字节 255 个磁头,63 个扇区/磁道,2434 个柱面 单位 = 16065 * 512 = 8225280 字节的柱面 磁盘标识符:0x00000080 设备引导开始结束块 ID 系统 /dev/sdc1 * 1 2337 18771921 fd Linux raid 自动检测 /dev/sdc2 2338 2434 779152+ 5 扩展 /dev/sdc5 2338 2434 779121 82 Linux 交换/Solaris 磁盘 /dev/md0:19.2 GB,19222364160 字节 2 个磁头,4 个扇区/磁道,4692960 个柱面 单位 = 8 * 512 = 4096 字节的柱面 磁盘标识符:0x00000000 磁盘 /dev/md0 不包含有效的分区表 root@io:~# mdadm -E mdadm:没有要检查的设备 root@io:~# cat /etc/mdadm.conf ARRAY /dev/md0 level=raid1 num-devices=2 UUID=5248ed76:cba39cc2:3082255a:649c0d18 根@io:~# root@io:~# cat /boot/grub/menu.lst 默认 0 # 2009 年 8 月 14 日添加了这个 后备 1 ## 超时秒 # 设置超时时间,单位为 SEC 秒,在自动启动默认项之前 #(通常是定义的第一个条目)。 超时 3 ##隐藏菜单 # 默认隐藏菜单(按ESC查看菜单) 隐藏菜单 # 添加这个 8/14/09 用于 raid 启动,注意这将在下一次内核更新时被吹走 # 如果它在魔法标记之后 # 这意味着我们必须在内核升级时手动更新它:-( # 在 grub 中 hd0 = /dev/sda and hd1 = /dev/sdb and hd2 = /dev/sdc 我希望 # 我们现在把 sdc 放在第一位 标题 Ubuntu 8.04.3 LTS,内核 2.6.24-24-generic (raid) 根 (hd2,0) #kernel /boot/vmlinuz-2.6.24-24-generic root=UUID=b11d6b08-fdfe-4b0d-adec-4e263455be23 ro 内核/boot/vmlinuz-2.6.24-24-generic root=/dev/md0 ro initrd /boot/initrd.img-2.6.24-24-generic quiet title Ubuntu 8.04.3 LTS, kernel 2.6.24-24-generic root (hd0,0) kernel /boot/vmlinuz-2.6.24-24-generic root=UUID=d8c402cc-7445-4878-b3aa-c9568b740b51 ro initrd /boot/initrd.img-2.6.24-24-generic quiet title Ubuntu 8.04.3 LTS, kernel 2.6.24-24-generic (recovery mode) root (hd0,0) kernel /boot/vmlinuz-2.6.24-24-generic root=UUID=d8c402cc-7445-4878-b3aa-c9568b740b51 ro single initrd /boot/initrd.img-2.6.24-24-generic root@io:~# blkid /dev/sda1: UUID="d8c402cc-7445-4878-b3aa-c9568b740b51" SEC_TYPE="ext2" TYPE="ext3" /dev/sda5: TYPE="swap" UUID="e0509276-30eb-4dcb-8e17-20f8244f5403" /dev/sdb1: LABEL="alt" UUID="ea1789eb-9d6f-47a9-a074-18121792b30a" SEC_TYPE="ext2" TYPE="ext3" /dev/sdb2: LABEL="sp" UUID="3b6d1173-f9fd-4a3e-8e5d-249fc682355b" SEC_TYPE="ext2" TYPE="ext3" /dev/sdc1: UUID="76ed4852-c29c-a3cb-5a25-8230180d9c64" TYPE="mdraid" /dev/md0: UUID="b11d6b08-fdfe-4b0d-adec-4e263455be23" SEC_TYPE="ext2" TYPE="ext3"
对于其他最终遭受错误 15 悲痛的人来说,grub 中的设备命名方案(hd0、hd1、hd2...)最终在 grub 引导和 grub 在系统已启动并正在运行。我在 root (hd2,0) 上花了一个星期,因为 grub 告诉我我想要的驱动器被调用了。但是当我在启动时掉入 grub shell 时,我惊讶地发现机器启动时是 hd2,启动时是 hd1。所以我将 menu.lst 更改为使用 root (hd1,0) 并开始工作。我希望用那个来拯救别人的头发。
关于 Grub 的事情是它在 linux 系统的其余部分(显然)之前被调用,所以它对你的软件 raid 一无所知。它只看到裸硬盘驱动器。
因此,在 RAID1 阵列的两个驱动器上安装 grub 非常重要。BIOS 会选择一个来启动,如果 grub 没有安装在那个驱动器上,它就不会启动。(当我的一个 sw RAID1 配置中的驱动器出现故障时,我发现这一点很困难 - 系统拒绝启动说它没有启动分区.. 安装了 grub 的驱动器出现故障,我只剩下一个非-可启动硬盘。在其上安装 Grub 可修复它)
因此,在提示符下打开 grub(您可以在运行 linux 的情况下执行此操作)并输入:
获取 grub 提示。
将 grub 设置为驱动器上的每个第一个分区(***如果您的引导分区位于驱动器上的其他位置,请更改该 0 以反映正确的分区)然后安装程序安装 grub 引导文件。
这应该是你需要做的一切。如果它不能正常工作,你确定你有正确的引导分区,并且你的驱动器的布局是一样的吗?
Grub doesn't know about your RAID device; it just reads direct from the drive, which (in a RAID-1 setup) is still fine, because an entire copy of the drive is right there (not chopped up into bits as it would be on a RAID-5 or RAID-10 configuration).
You haven't really provided enough info to determine what's going on though; what would handy would be: