我在 Centos 6.5 服务器上有以下 RAID 1:
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[3]
974713720 blocks super 1.0 [2/1] [_U]
bitmap: 7/8 pages [28KB], 65536KB chunk
md1 : active raid1 sdb2[3] sda2[2]
2045944 blocks super 1.1 [2/2] [UU]
unused devices: <none>
# df -h
Sist. Arq. Size Used Avail Use% Montado em
/dev/md0 915G 450G 420G 52% /
tmpfs 7,8G 0 7,8G 0% /dev/shm
/dev/sda 即将发生故障。我甚至将其标记为故障,因为它导致读取错误。
我今天得到了新的 HD,它将替换 /dev/sda。
问题是,当我拔下当前的 /dev/sda 时,我无法使其仅使用 /dev/sdb 启动。看来 PC 的 BIOS 在 /dev/sdb 上找不到任何可启动的东西。
1)如何检测 grub 是否安装在 /dev/sdb 的 MBR 中?
2) 在 /dev/sdb 中运行 grub-install 安全吗?这是使其可启动的正确方法吗?
答案1
1)如何检测 grub 是否安装在 /dev/sdb 的 MBR 中?
您可以发出:
# dd if=/dev/sda bs=512 count=1 | xxd | grep -i grub
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.00103986 s, 492 kB/s
0000180: 4752 5542 2000 4765 6f6d 0048 6172 6420 GRUB .Geom.Hard
2) 在 /dev/sdb 中运行 grub-install 安全吗?这是使其可启动的正确方法吗?
是的,您需要grub
在阵列中的两个磁盘上进行安装。
答案2
您标记了 software-raid,因此学习 grub 可以帮助:RAID 故障(软件 RAID)后如何启动?
GRUB Legacy 在 /boot/grub/device.map 文件中识别 HDD 设备并将它们映射到 Linux 设备。GRUB Legacy(启动管理器)文件识别磁盘的方式与 Linux 不同。第一个磁盘将被识别为 (hd0),而不是 /dev/sda。
关于 grub 命令的教程可以在网上的其他地方找到。
本质上,链接中的作者运行 grub 命令,其中每个 Linux 设备都被视为 GRUB Legacy 的同一驱动器(根据 device.map 文件,它是这样认为的),例如,三个磁盘都是 (hd0),而不是 (hd1) 等等。这确保了 (hd0) 和 /dev/sda 等之间的正确映射,以实现冗余目的。
但是,链接作者指出的解决方案不会修改 MBR。备用软件 RAID 特定解决方案需要在磁盘故障之前完成;否则,您将需要一个启动磁盘/设备。对于 RAID 1 阵列,每个磁盘的 MBR 应该相同,即使使用 LVM 也是如此。MBR 引导加载程序无法将系统引导到另一个磁盘,只能引导到同一引导标记分区的 GRUB Legacy,否则它将绕过引导扇区并加载内核(取决于代码),并且据我所知,只能在同一磁盘内进行。