
我有一個 VG,有 3 個 pv。 VG 有一個 LV,使用所有三個 PV。然後一個PV(硬碟)死掉了。我想盡力挽回一切。所以我需要做的第一件事就是從 LV/VG 中刪除遺失的 PV。按照我透過谷歌搜尋找到的說明,我使用 vgreduce 刪除了該 PV。但是,據我所知,這也刪除了 LV。我現在正在嘗試恢復原始配置,即 vgreduce 之前的配置,以使用 vgchange 代替。我正在使用 vgcfgrestore -f ,其中存檔檔案是在 vgreduce 之前建立的檔案。但我不斷收到「無法恢復卷組 VGR,其中 1 個 PV 標記為丟失」。
LV可以恢復嗎?如果是這樣怎麼辦?
非常感謝任何幫助。
TIA
肯
答案1
預設情況下,Linux LVM 不會刪除帶有 LV 的 PV。 LV 需要所有範圍才能有良好的完整性。 vgreduce --force
雖然可能會刪除 LV,但它會停用多項安全檢查。是非常具體且謹慎地選擇您使用的選項。記錄您的終端會話。
計劃你的康復。尋找該資料存在的任何備份。估計它對組織有多大價值,以及重新創建需要多長時間。如果沒有備份,請考慮從專業資料復原服務取得估計值。
嘗試將發生故障的磁碟機映像到相同大小的良好磁碟機。如果你自己做,使用像dd_rescue
.請注意,在某些情況下,進一步使用可能會進一步損壞介質(即使尚未損壞)。資料恢復服務可能能夠對其進行手術以嘗試恢復資料。
如果您設法對其進行映像,新磁碟將具有舊 PV 的標識。重新新增設備 vgextend --restoremissing $PV
。vgcfgrestore --file
如果所有嘗試都失敗並且您接受資料遺失,請考慮用新的空磁碟機取代失敗的 PV。幾乎可以肯定,這會損壞您的資料。損壞的具體表現取決於檔案系統等。但這是值得嘗試的事。man vgcfgrestore
描述該過程:
若要替換 PV,
vgdisplay --partial --verbose
將顯示不再存在的任何 PV 的 UUID 和大小。如果 VG 中的某個 PV 遺失,並且您希望取代另一個相同大小的 PV,請使用pvcreate --restorefile filename --uuid uuid
(加上適當的附加參數)使用與遺失的 PV 相同的 UUID 來初始化它。對 VG 中所有其他缺失的 PV 重複此操作。然後用於vgcfgrestore --file filename
恢復VG的元資料。
在不遺失 PV 的降級程度較低的場景中,pvmove
將在 PV 之間移動範圍,並且可用於儲存遷移。
展望未來,為了使卷組能夠承受硬碟遺失的影響,請考慮添加冗餘。位於 LVM 下方(具有來自陣列 LUN 的 PV),或位於 LVM 層。有關軟體解決方案,請分別參閱手冊頁mdadm
和。lvmraid