Linux

為什麼我的伺服器在將 LVM 內的 root fs 移動到 raid 後無法啟動?

  • July 3, 2016

我正在嘗試將我的根分區移動到基於 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 並引導核心安裝。

  1. update-initramfs -u

此命令更新您的引導核心配置以匹配您系統的目前狀態。

  1. mdadm --detail --scan > /tmp/mdadm.conf

複製/tmp/mdadm.conf內容以/etc/mdadm/mdadm.conf替換任何以前的條目。這樣 MD 設備配置資訊將是正確的。

  1. update-grub

這將更新 GRUB 配置,以便它了解新設備。

  1. dpkg-reconfigure grub-pc

這會將 GRUB 安裝到伺服器上的硬碟上。

引用自:https://serverfault.com/questions/787383