mdadm --zero-superblock 在有其他分割區的磁碟上

mdadm --zero-superblock 在有其他分割區的磁碟上

我有三個磁碟用於保存 MD RAID5 陣列。我已經刪除了(或者我是這麼認為的)這個數組並為 btrfs 和交換空間創建了分區。重新啟動電腦時,MD 仍會綁定用於保存舊陣列的設備,導致新檔案系統無法掛載。

有人向我建議,raid 陣列的舊超級區塊可能會被留下,導致 MD 認為它是一個真正的陣列,從而綁定磁碟。建議的解決方案是使用 mdadm --zero-superblock 清除受影響磁碟上的超級區塊。但是,我真的不知道這對磁碟有什麼作用。由於該磁碟包含分割區,我真的不想開始盲目地將其部分清零。

那麼我應該遵循什麼步驟來安全地清除 MD 超級區塊而不損壞磁碟機上的其他分割區和檔案系統?

這個問題本質上問同樣的事情,但是對於在重新分區的設備上執行 mdadm --zero-superblock 是否實際上應該是安全的,沒有明確的答案:mdadm 超級區塊隱藏/陰影分割區

答案1

https://raid.wiki.kernel.org/index.php/RAID_superblock_formats

超級區塊的長度為4K,並寫入64K 對齊的區塊中,該區塊從裝置末端開始至少64K 且小於128K(即,取得超級區塊的位址,將裝置的大小向下捨去到64K 的倍數,並且然後減去 64K)。每個裝置的可用大小是超級區塊之前的空間量,因此當裝置合併到 MD 陣列時,64K 到 128K 之間的空間會遺失。

所以,已經太晚了並且可能不安全使用--zero-superblock,因為我們不知道是否有任何資料 - 您必須調整當前分區的大小/縮小到-128Kx-RAID 分區的末尾,然後擦除該部分並將分區恢復回來。

其他選項 1:寫入大檔案來填滿整個磁碟,它將覆蓋 RAID 超級區塊並且 mdadm 無法識別。

其他選項2:與1類似:https://unix.stackexchange.com/questions/44234/clear-unused-space-with-zeros-ext3-ext4

答案2

wipefs --all /dev/sd[4ppropr14t3][123](當然,為您的磁碟機/分割區設定全域!)

答案3

這就是我的解決方法(這可能非常適合我的情況,但我會盡力保持通用)。

(當我談論設備時,我的意思是組成 raid 磁碟區的設備,而不是 raid 陣列本身)

我曾經mdadm -E $DEVICE弄清楚陣列使用的是哪種元資料格式。然後我去了raid.wiki.kernel.org尋找有關超級區塊格式的一些資訊。就我而言,這是版本 0.90。

此格式將超級區塊儲存在裝置末端。這就是我的情況。因此,我知道超級塊應該位於設備的最末端。我的新分割區最後包括一個交換分割區。因此,超級塊所在位置並沒有太多資料會遺失。

我做了一些閱讀,我得出的結論是,mdadm --zero-superblock僅將超級塊本身歸零,因此對我來說它應該是安全的。我繼續刪除了所有三台設備上的超級塊:

mdadm --stop $ONE_OF_THE_DEVICES

根據需要重複此行

mdadm --zero-superblock $DEVICE

一些額外的評論/猜測:

一般來說,如果新分割區/檔案系統需要該空間,那麼它應該已經被覆蓋。因此,如果超級區塊仍然存在,將其清除不會損害分區/檔案系統。然而,我不確定 MD 如何處理超級區塊已在一個或多個裝置(但不是全部)上被覆蓋的情況。手冊頁說,如果超級塊無效,則需要 -f 將其清零,但請記住這一點。

相關內容