Linux
在raid1 軟體raid 上啟動Linux?
我正在嘗試將我的單磁碟引導轉換為 raid1 引導
到目前為止,這是我所擁有的:
- 我成功地將raid 1創建為僅使用新驅動器降級,我複制了它上面的所有數據
- 我可以掛載那個raid 1,查看它的文件等
- 我已經有一個在同一個盒子上工作的 raid5(雖然沒有啟動它)
- 我在兩個驅動器上都安裝了 grub
- grub 啟動時,它載入核心正常,但在核心啟動期間,它無法載入“根塊設備”
核心告訴我: 1 - 檢測到根設備是 md 設備 2 - 確定根設備 3 - 安裝根 4 - 在 /newroot 上安裝 /dev/md125 失敗:輸入/輸出錯誤。請輸入另一個根設備:…
此時,如果我輸入 /dev/sda3(我的“舊”根設備,尚未轉換為 raid),一切都可以在沒有根的情況下正常啟動。/dev/md125 設備確實是創建的,但它似乎是在錯誤發生後創建的,因為它是在載入設備後創建的,當載入 mdadm 時。
不知何故,它看起來在需要掛載它之前不能/不載入raid陣列,我不知道我該如何解決這個問題。
我的配置文件(以 sda3 作為根設備啟動後從系統中獲取):
$ cat /etc/mdadm.conf ARRAY /dev/md/md0-r5 metadata=0.90 UUID=1a118934:c831bdb3:64188b84:66721085 ARRAY /dev/md125 metadata=0.90 UUID=48ec4190:a80d4dde:64188b84:66721085 $ cat /proc/mdstat Personalities : [raid1] [raid6] [raid5] [raid4] [raid0] [raid10] md125 : active raid1 sdc3[1] 477853312 blocks [2/1] [_U] md127 : active raid5 sdd[0] sdf[3] sdb[2] sde[1] 4395415488 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU] unused devices: <none> $ cat /boot/grub/menu.lst default 0 timeout 8 splashimage=(hd0,0)/boot/grub/splash.xpm.gz title Gentoo Linux 2.6.31-r10 root (hd0,0) #kernel /boot/kernel-genkernel-x86_64-2.6.31-gentoo-r10 root=/dev/ram0 real_root=/dev/sda3 kernel /boot/kernel-genkernel-x86_64-2.6.31-gentoo-r10 root=/dev/md125 md=125,/dev/sdc3,/dev/sda3 initrd /boot/initramfs-genkernel-x86_64-2.6.31-gentoo-r10 # blkid /dev/sda1: UUID="89fee223-b845-4e0a-8a0b-e6cf695d5bcf" TYPE="ext2" /dev/sda2: UUID="a72296a8-d7d4-447f-a34b-ee920fd1a767" TYPE="swap" /dev/sda3: UUID="97eb0a6a-c385-4a9d-bf74-c0bab1fa4dc1" TYPE="ext3" /dev/sdb: UUID="1a118934-c831-bdb3-6418-8b8466721085" TYPE="linux_raid_member" /dev/sdc1: UUID="d36537fd-19a0-b8a3-6418-8b8466721085" TYPE="linux_raid_member" /dev/sdd: UUID="1a118934-c831-bdb3-6418-8b8466721085" TYPE="linux_raid_member" /dev/sde: UUID="1a118934-c831-bdb3-6418-8b8466721085" TYPE="linux_raid_member" /dev/md127: UUID="13a41589-4cf1-4c04-91ca-37484182c783" TYPE="ext4" /dev/sdf: UUID="1a118934-c831-bdb3-6418-8b8466721085" TYPE="linux_raid_member" /dev/sdc2: UUID="a1916397-1b48-45d7-9f98-73aa521e882f" TYPE="swap" /dev/sdc3: UUID="48ec4190-a80d-4dde-6418-8b8466721085" TYPE="linux_raid_member" /dev/md125: UUID="c947ed64-1d4d-4d1d-b4d2-24669fff916e" SEC_TYPE="ext2" TYPE="ext3" # mdadm -E mdadm: No devices to examine # fdisk -l Disk /dev/sda: 500.1 GB, 500107862016 bytes 255 heads, 63 sectors/track, 60801 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0xe975e9fc Device Boot Start End Blocks Id System /dev/sda1 1 5 40131 83 Linux /dev/sda2 6 1311 10490445 82 Linux swap / Solaris /dev/sda3 1312 60801 477853425 83 Linux Disk /dev/sdc: 500.1 GB, 500107862016 bytes 255 heads, 63 sectors/track, 60801 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0xe975e9fc Device Boot Start End Blocks Id System /dev/sdc1 1 5 40131 83 Linux /dev/sdc2 6 1311 10490445 82 Linux swap / Solaris /dev/sdc3 1312 60801 477853425 83 Linux Disk /dev/md125: 489.3 GB, 489321791488 bytes 2 heads, 4 sectors/track, 119463328 cylinders Units = cylinders of 8 * 512 = 4096 bytes Disk identifier: 0x00000000 Disk /dev/md125 doesn't contain a valid partition table
當 Linux 啟動時,它首先從 initramfs 中啟動一個最小的 Linux 發行版。這只是一個帶有簡單根文件系統的 ram 磁碟。initramfs 進行一些初始化,載入所有必要的塊設備和文件系統驅動程序,然後掛載真正的根文件系統,進入它,並從它啟動。看起來您在主 Linux 文件系統下正確配置了您的 raid 設備,但在 initramfs 文件系統中沒有。
它可以破解你的initramfs(它只是一個gzip’d cpio存檔,對其進行修改並重新存檔它。我經常通過將initramfs init腳本更改為只是放入一個shell並弄清楚這樣的問題什麼不起作用。您的 initramfs 應該在建構核心的同時創建,並且通常包含引導系統所需的一切。但特別是如果在系統已經執行之後添加了 sw raid,則建構可能沒有正確添加。查看本文件中的 sw raid 資訊: