ZFS 恢復鏡像-0 UNAVAIL 遺失設備

ZFS 恢復鏡像-0 UNAVAIL 遺失設備

我是 ZFS 的新手,我把事情搞砸了。我有多個 ZFS 池,因為我沒有意識到同一池下可以有單獨的鏡像。我仍在重建陣列,所以我的其中一個鏡像是空的。我銷毀了它,將其添加到主池中,一切都很好。

然後我去將該鏡像的讀取屬性設為唯讀,但無法。然後我嘗試只移除那面鏡子,但失敗了。最後,我嘗試匯出池,並覆蓋第二個鏡像(沒有資料)並嘗試匯入主池。我的想法是,當鏡子丟失/退化時,它會出現,但第一面鏡子會沒問題,但不太幸運。我現在根本無法匯入 zpool,即使(我懷疑)mirror-0 運行正常。

我想知道是否有辦法解決這個問題?我正在考慮手動設定額外鏡像的 UUID/PARTUUID 只是為了讓它導入,但是當然網路上的所有內容都是關於 ext4 的,我沒有找到一種方法來操作 ZFS 的 UUID。

您能想到有什麼方法可以強制匯入或刪除 zpools 對第二個鏡像的期望,以便它可以安裝第一個鏡像嗎?或者最後,將mirror-0移到它自己的zpool而不破壞資料?

失落的感覺...

這是一些數據:

池名稱bigdataa

mirror-0 should have a functionion set of data

 pool: bigdataa
     id: 8521961398473378259
  state: UNAVAIL
 status: One or more devices contains corrupted data.
 action: The pool cannot be imported due to damaged devices or data.
   see: http://zfsonlinux.org/msg/ZFS-8000-5E
 config:

    bigdataa                                  UNAVAIL  insufficient replicas
      mirror-0                                ONLINE
        12d9fdf5-9912-4b47-a67c-73376cabe161  ONLINE
        0f8cbe38-fce7-ba4d-85fb-f0b624ef4c70  ONLINE
      615ac488-0519-4a31-88ea-ddc81595c9b7    ONLINE
      mirror-2                                UNAVAIL  insufficient replicas
        aef43ae1-2bff-4eac-8c91-7818b1ec37fd  FAULTED  corrupted data
        8d1e0a1e-9736-4a28-a968-555fe65e9d17  FAULTED  corrupted data

答案1

我做了廣泛的研究,但無法找到安裝泳池的方法。我將繼續保持單獨的池向前發展,這樣我就可以在沒有問題的情況下操縱各個鏡像的屬性並安裝單個鏡像(對它的工作原理沒有印象...),並使用MergeFS 呈現最終的單一池。

我確實嘗試過UFS Explorer RAID Recovery(我最終需要的是UFS Explorer Recovery,價格為70 加元,更容易接受,現在我的工具包中有一個很棒的軟體),昨晚之後,它完成了掃描並似乎找到了我所有的文件。我將採用 200 加幣的價格標籤並更新最終結果,但情況看起來不錯!

更新:我目前正在保存所有文件,到目前為止一切看起來都很棒。諷刺的是,我意識到我什至不需要“掃描丟失的文件”,因為分區/文件結構從未改變,似乎該軟體能夠以某種方式查看鏡像中的各個磁碟,而無需“導入”池或具有其他可用磁碟。 (我沒有掃描,而是直接在我的其他鏡像盤上“查看文件”來確認這一點)

我想這些人不知道他們在說什麼......我討厭那些只是用負面/無用的回饋來惡搞的人......

https://www.ixsystems.com/community/threads/recovery-tool-for-zfs.23008/post-138885

在此輸入影像描述

答案2

您在此處建構的方式表明您的資料在鏡像 0、鏡像 2 和另一個磁碟上進行條帶化 (RAID-0)。因此,當您覆蓋mirror-2時,ZFS認為您的一半資料遺失了,這就是您根本無法匯入池的原因。這就像您設置了一個三磁碟 RAID-0 陣列,然後擦除了其中一個磁碟 - 所有資料都變得無法訪問,因為這就是條帶化的工作原理。

這解釋了為什麼您也無法在mirror-2 上設定唯讀屬性。這就像嘗試將 RAID-0 陣列中的磁碟標記為唯讀,這是無法完成的,因為寫入需要在 RAID-0 陣列中的所有磁碟上進行條帶化。您無法將儲存裝置上的每三個區塊標記為唯讀!

看起來您在mirror-2上還沒有數據,但ZFS似乎不知道這一點,這就是為什麼它在磁碟被覆蓋後拒絕導入陣列。

我想也許您假設池中的所有裝置/vdev 都是彼此的鏡像,但實際上 ZFS 在池中的每個 vdev 上條帶資料。這就是為什麼如果您希望對資料進行鏡像而不是條帶化,則必須建立一個特殊的鏡像 vdev。

相關內容