Linux
為什麼我的伺服器在將 LVM 內的 root fs 移動到 raid 後無法啟動?
我正在嘗試將我的根分區移動到基於 raid 的物理卷,但我似乎失敗了。
我使用的過程有點複雜,但那是因為我的託管服務提供商的安裝能力非常有限,所以我不能從在 raid 卷上使用 lvm 製作的根文件系統開始。
為了測試我的情況,我在 VirtualBox 中創建了虛擬實例,有 4 個磁碟:
- /dev/sda - 8GB
- /dev/sdb - 8GB
- /dev/sdc - 20GB
- /dev/sdd - 20GB
並安裝在那裡Linux(Debian 8.5)。最初,安裝後的佈局是:
- /dev/sd$$ bcd $$- 未分區,未使用
- /dev/sda - 有 1 個分區 (/dev/sda1),小 (4GB),用作 LVM 的 PV
- 在這個 PV 上,我創建了 VG 和 LV,現在用作 /:
這是它的外觀:
=# mount / mount: /dev/mapper/vg-root is already mounted or / busy =# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root vg -wi-ao---- 3.72g =# vgs VG #PV #LV #SN Attr VSize VFree vg 1 1 0 wz--n- 3.72g 0 =# pvs PV VG Fmt Attr PSize PFree /dev/sda1 vg lvm2 a-- 3.72g 0
現在,我需要/想要的是在小型和大型磁碟上創建幾個突襲,然後將 / 放在它們上面。
所以,首先我創建分區。由於我需要重新分區 /dev/sda,它是中間佈局,它看起來像這樣:
=# for a in /dev/sd[abcd]; do fdisk -l $a; done | grep ^/ /dev/sda1 * 2048 7813119 7811072 3.7G 8e Linux LVM /dev/sdb1 2048 16777215 16775168 8G fd Linux raid autodetect /dev/sdc1 2048 16777215 16775168 8G fd Linux raid autodetect /dev/sdc2 16777216 41943039 25165824 12G fd Linux raid autodetect /dev/sdd1 2048 16777215 16775168 8G fd Linux raid autodetect /dev/sdd2 16777216 41943039 25165824 12G fd Linux raid autodetect
然後,我在 /dev/sd 上創建 raid1
$$ cd $$2個分區: =# mdadm -C /dev/md0 -l 1 –raid-devices 2 /dev/sd
$$ cd $$2 這使我成為 /dev/md0,我將把它用作 / 文件系統的臨時位置:
=# pvcreate /dev/md0 =# vgextend vg /dev/md0 =# pvmove /dev/sda1 /dev/md0 =# vgreduce vg /dev/sda1 =# pvremove /dev/sda1
此時,/dev/sda 是空閒的,所以我可以將它重新分區,以符合 /dev/sdb 的確切規範。(這一步是相當無關緊要的,但這只是為了完整性)。
現在,有了這一切,我更新了 mdadm.conf:
=# mdadm --detail /dev/md0 --brief >> /etc/mdadm/mdadm.conf && update-initramfs -u
這增加了一行:
ARRAY /dev/md0 metadata=1.2 name=debian:0 UUID=55692d54:b0beedae:9d85bc20:324d7f9f
有了這個,我重新啟動系統,以確保它工作正常。它立即在 GRUB 上崩潰,並顯示以下消息:
error: disk `lvmid/F9eO8I-PB9F-Dsli-ZOSY-rVA1-7a37-Faos46/1N3Ah7-wIjT-HFxc-MS9U-lAcw-tYZw-N7sRO8' not found. Entering rescue mode... grub rescue>
ls 在提示中顯示:
(hd0) (hd0,msdos1) (hd1) (hd1,msdos1) (hd2) (hd2,msdos2) (hs2,msdos1) (hd3) (hd3,msdos2) (hd3,msdos1)
我做錯什麼了?我忘記了什麼?
您需要更新 GRUB 並引導核心安裝。
update-initramfs -u
此命令更新您的引導核心配置以匹配您系統的目前狀態。
mdadm --detail --scan > /tmp/mdadm.conf
複製
/tmp/mdadm.conf
內容以/etc/mdadm/mdadm.conf
替換任何以前的條目。這樣 MD 設備配置資訊將是正確的。
update-grub
這將更新 GRUB 配置,以便它了解新設備。
dpkg-reconfigure grub-pc
這會將 GRUB 安裝到伺服器上的硬碟上。