Linux
mdadm raid 1 grub 僅在 sda 上
我剛剛用 mdadm 完成了一個 CentOS 6.3 64 位伺服器的設置,但是一個燈泡亮了,我意識到 grub 只會安裝在第一個驅動器上,它的用途和摩托車上的煙灰缸差不多。
我看了看以證實我的懷疑:
grub> find /grub/stage1 find /grub/stage1 (hd0,0)
所以我更新了我的設備地圖,如下所示:
(fd0) /dev/fd0 (hd0) /dev/sda (hd1) /dev/sdb
(注意 (hd1) 條目是我添加的
所以然後我嘗試在 /dev/sdb 上安裝 grub
我得到:
grub> root (hd1,0) root (hd1,0) Filesystem type is ext2fs, partition type 0x83 grub> setup (hd1) setup (hd1) Checking if "/boot/grub/stage1" exists... no Checking if "/grub/stage1" exists... no Error 15t: File not found
所以我做了一些Google搜尋(遺憾的是,Google剛剛做得很好,並收集了 100 個在這裡沒有幫助的 grub 安裝範例)
在找到一些線索後,我嘗試了:
# grub-install --recheck /dev/sdb Probing devices to guess BIOS drives. This may take a long time. Installation finished. No error reported. This is the contents of the device map /boot/grub/device.map. Check if this is correct or not. If any of the lines is incorrect, fix it and re-run the script `grub-install'. (fd0) /dev/fd0 (hd0) /dev/sda (hd1) /dev/sdb # grub-install /dev/sdb Installation finished. No error reported. This is the contents of the device map /boot/grub/device.map. Check if this is correct or not. If any of the lines is incorrect, fix it and re-run the script `grub-install'. (fd0) /dev/fd0 (hd0) /dev/sda (hd1) /dev/sdb
哪種建議 grub 現在也安裝在 /dev/sdb 上,但是如果我再看一下,我仍然會得到:
grub> find /grub/stage1 find /grub/stage1 (hd0,0)
2 個驅動器的分開輸出:
SDA
Partition Table: gpt Number Start End Size File system Name Flags 1 17.4kB 500MB 500MB ext3 1 boot 2 500MB 81.0GB 80.5GB 2 raid 3 81.0GB 85.0GB 4000MB 3 raid 4 85.0GB 3001GB 2916GB 4 raid
深發展
Partition Table: gpt Number Start End Size File system Name Flags 1 17.4kB 500MB 500MB ext3 1 2 500MB 81.0GB 80.5GB 2 raid 3 81.0GB 85.0GB 4000MB 3 raid 4 85.0GB 3001GB 2916GB 4 raid
和 mdadm mdstat:
Personalities : [raid1] md1 : active raid1 sdb3[1] sda3[0] 3905218 blocks super 1.1 [2/2] [UU] md2 : active raid1 sdb4[1] sda4[0] 2847257598 blocks super 1.1 [2/2] [UU] md0 : active raid1 sda2[0] sdb2[1] 78612189 blocks super 1.1 [2/2] [UU]
有沒有人能夠對這種情況有所了解,感覺就像我現在 99% 都在那兒,並且遺漏了一些明顯的東西。
謝謝。
編輯更新:
# df -h Filesystem Size Used Avail Use% Mounted on /dev/md0 74G 18G 53G 25% / tmpfs 580M 0 580M 0% /dev/shm /dev/sda1 462M 98M 341M 23% /boot xenstore 580M 64K 580M 1% /var/lib/xenstored
/ 在 md0 上,它由 sda2 和 sdb2 交換是 md1,它是 sda3 和 sdb3 md2 是 LVM 但是 /boot 只在 /sda1
我想這就是問題所在,解決方法是創建 md4 並讓它包含 sd a 1 和 sd b 1
也許我腦子裡有些混亂,但我認為 grub 沒有安裝在分區上,而是驅動器的前幾個塊,即 sda 或 hd0/1
任何澄清和建議表示讚賞。
這應該是你的問題
root (hd1,0) Filesystem type is ext2fs, partition type 0x83
採取以下步驟:
- 在 /dev/sda1 和 /dev/sdb1 上創建 2 個 /boot 分區 - 鍵入 fd(Linux 自動檢測 raid) - 使用您最喜歡的工具(fdisk、cfdisk、gparted…)(fd00 用於 GPT)
- 請記住在 sda1 和 sdb1 兩個分區上打開可引導標誌(不適用於 GPT)
- 強制磁碟成為全新的 RAID:
mdadm --zero-superblock /dev/sda1 mdadm --zero-superblock /dev/sdb1
- 在創建將作為 /boot 分區的 RAID 元數據時,請使用 0.9 版。Linux 無法自動檢測較新的版本(沒有 ramdisk)。
mdadm --create /dev/md0 --level=1 --raid-disks=2 /dev/sda1 /dev/sdb1 --metadata=0.9
- 使用 ext2 或 ext3 格式化
- 安裝您選擇的 Linux,無需格式化 /boot
在您的發行版首次啟動後:
- 修復您的 /etc/fstab 以將 /boot 指向 /dev/md0(也許沒有必要)
- 在 2 個磁碟 MBR 上安裝 grub
# grub /dev/sda grub> root (hd0,0) grub> setup (hd0) grub> quit quit # grub /dev/sdb grub> root (hd1,0) grub> setup (hd1) grub> quit quit
- 編輯您的引導載入程序(Grub1 的說明)
- 搜尋“預設”行並在下面添加“備份”選項
vi /boot/grub/menu.lst default 0 fallback 1
- 將另一個條目添加到您的引導載入程序(再次,在我的情況下,我選擇了 grub1,因為它不太複雜並且足以滿足我的需求),每個條目指向作為 raid 成員的不同引導分區:
title Debian GNU/Linux, kernel 2.6.32-5-686 (default) root (hd0,0) kernel /vmlinuz-2.6.32-5-686 root=/dev/mapper/vg-root ro quiet initrd /initrd.img-2.6.32-5-686 title Debian GNU/Linux, kernel 2.6.32-5-686 (fallback) root (hd1,0) kernel /vmlinuz-2.6.32-5-686 root=/dev/mapper/vg-root ro quiet initrd /initrd.img-2.6.32-5-686
- 請注意,就我而言,我的 / md raid 上有一個 LVM 層。
完畢。這應該足以讓您擁有一個“冗餘”引導載入程序。