缺少任何基礎 PV 時,系統不會從根 LVM RAID1 分區引導
我的根分區有 LVM RAID 1(不是 mdadm RAID 1,而是 LVM2 RAID 1)。我想讓我的系統在沒有根 LVM 分區的底層 PV 所在的任何一個 HDD 的情況下啟動。
grub.cfg 中的核心啟動行(由 GRUB2 自動生成)如下所示:
linux /kernel-genkernel-x86-3.11.7-hardened-r1-3 root=/dev/mapper/vg-root ro dolvm
啟用兩個磁碟後,它看起來很完美,並且系統是 HDD 容錯執行時,即如果任一 HDD 在執行時出現故障,它可以正常工作。
但是,如果我嘗試在沒有 HDD 的情況下啟動,我會得到
Refusing activation of partial LV root. Use --partial to override.
在引導和核心恐慌期間。從一方面來看,這似乎是合理的,因為當其中一個 PV 不存在時,lvm 啟動不是正常行為。但是,啟動伺服器是絕對必要的。我能想到的潛在解決方法是在核心啟動行中添加一些額外的選項。
當 HDD 的 on 不起作用時,您知道如何使 LVM RAID 1 為根分區工作嗎?
該問題在2014 年 6 月的LVM v. 2.02.108中得到解決。
已將降級的LV 啟動模式添加到 LVM,成為預設啟動模式。基本上,它會在沒有數據失去的情況下啟動 LV,但即使 LV 不完整(例如沒有一條腿的 RAID1 LVM)。
更詳盡的描述可以在這裡找到:LVM:啟動:添加“降級”啟動模式。
我以前沒有嘗試過,我不確定它是否是最好的解決方案,但它應該能讓你振作起來……我強烈建議你至少瀏覽底部的資源以健全檢查我的內容已經到了… :)
基本上,您需要啟動應急媒體,重新掃描 PV、VG 和 LV。
lvm pvscan lvm vgscan lvm lvscan
然後,您應該能夠強制啟動 VG:
lvm vgchange -ay --partial VolGroup00
完成後,您可以從 VG 中刪除失去的鏡像副本:
lvm vgreduce --removemissing --force VolGroup00
完成後,您應該很好地重新啟動到非鏡像配置。
一旦你恢復快樂,並且你已經修復/更換了壞驅動器,你需要將它們重新添加到系統中,然後執行以下操作(假設 /dev/sdb 是失敗的驅動器,並且您使用 fdisk 作為 /dev/sdb1 在其上創建了一個 LVM 分區,並且 /dev/sda1 是好的鏡像所在的位置):
pvcreate /dev/sdb1 lvm vgextend VolGroup00 /dev/sdb1
然後,您需要使用以下內容重新創建每個 LV 鏡像:
lvm lvconvert -m 1 /dev/VolGroup00/usr /dev/sda1 /dev/sdb1 lvm lvconvert -m 1 /dev/VolGroup00/var /dev/sda1 /dev/sdb1 lvm lvconvert -m 1 /dev/VolGroup00/root /dev/sda1 /dev/sdb1 ...
資料來源: