Lvm

缺少任何基礎 PV 時,系統不會從根 LVM RAID1 分區引導

  • December 30, 2020

我的根分區有 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
...

資料來源:

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