重裝後lvm資料恢復

重裝後lvm資料恢復

我的電腦上有一個 SSD 和一台 HDD。 SSD用於系統,HDD用於儲存資料。我將作業系統從 debian 更改為 ubuntu,但我忘記在 HDD 上備份 lvm。當然我丟失了我的數據。我嘗試在其上重新創建一個具有相同大小的新邏輯卷。但是當我運行 xfs_repair 時,它顯示「找不到有效的輔助超級區塊」。看來沒啥用啊。由於我創建了一個新的邏輯卷,lvscan解決方案也沒用。那麼有沒有辦法可以恢復我的資料呢?

答案1

這很複雜,我們真的不知道發生了什麼,而且您的嘗試可能沒有幫助。

預設情況下,當您重新建立邏輯磁碟區時,它將擦除簽章並將前 4KiB 資料清除。換句話說,它可以額外確保舊檔案系統在新建立的 LV 上不可見。

   -W|--wipesignatures y|n
          Controls detection and subsequent wiping of signatures on new LVs.

   -Z|--zero y|n
          Controls zeroing of the first 4KiB of data in the new LV.

對於 SSD,如果您這樣做lvremoveissue_discards = 1在 lvmconfig 中)或mkfs.

LVM 也可能使用不同的資料偏移量,在這種情況下,您嘗試建立的所有 LV 也將處於錯誤的偏移量。如果 LVM 位於分割區上,且分割區本身未在正確的偏移處重新創建,則情況相同。

邏輯卷也可以以任何一種方式分配(如果您有多個邏輯卷,或調整它們的大小)。無法保證資料將在磁碟上的單一線性區塊(如分割區)中可用。

因此,為了恢復遺失的 LV,您需要詳細了解 LVM 元資料。因此,LVM 會保留其元資料的備份/etc/lvm/{archive,backup},但如果元資料已被擦除、清除或丟棄,則無濟於事,而且如果您也對根分割區進行了格式化,則可能會缺少這些備份。不管怎樣,還是檢查一下,也許你很幸運。

實體磁碟區本身也有元資料備份,但如果您對其進行 pvcreate/vgcreate,這些備份可能也已經消失了。不過,檢查一下也沒什麼不好:

$ strings -w /dev/disk | grep -A 1000 'Generated by LVM2'
# Generated by LVM2 version 2.02.103(2) (2013-10-04): Thu Oct 31 11:42:36 2013
...

在那裡,您可能會找到可能有助於手動或恢復的分配資訊片段vgcfgrestore。 (請注意時間戳,您正在尋找事故發生前的時間戳)。

那麼有沒有辦法可以恢復我的資料呢?

如果 LV 位於單一磁碟上且沒有以任何方式碎片化,且它仍然存在(未擦除),則testdisk也可以使用分割復原工具(例如不含 LVM 的常規分割區)來還原它。

分區不支援邏輯尋址,因此只有在物理上全部位於一個段中(而不是多個段映射在一起)時,您才能將 LV 映射到分區。

如果檔案系統本身無法恢復,只要資料沒有加密,photorec就可能會發現一些單獨的、未碎片的檔案(僅內容,原始檔案名稱和結構遺失)。

相關內容