題 mdadm RAID快速安裝與空驅動器?


我正在使用mdadm重新創建一些RAID5磁盤作為RAID6。我關心的驅動器上沒有數據。

設置RAID需要一段時間來設置形狀 - 我接受當有數據需要條帶和奇偶校驗計算時,但是對於這些驅動器,它們是空的 - 或者至少我希望它們被認為是空的。

那麼有沒有辦法跳過奇偶校驗計算並告訴mdadm只是設置超級塊並完成,否則,當沒有數據移動時,它究竟花了多少錢?

md3 : active raid6 sdf3[5] sde3[4] sdd3[3] sdc7[2] sdb3[1] sda3[0]
      1953114112 blocks super 1.2 level 6, 512k chunk, algorithm 2 [6/6] [UUUUUU]
      [>....................]  resync =  1.3% (6790144/488278528) finish=409.3min speed=19604K/sec

請注意,我不是在談論 --assume-clean 您從包含您知道正確的RAID陣列的預先存在的磁盤集重建陣列的位置。我說的是一個應該被認為是空的數組,不被認為是正確的條帶化。

因此,為了這個問題,我們可以說這些設備已預先填充了零。


8
2018-06-18 22:24


起源




答案:


您可以使用 --assume-clean 但除非你使用raid5(而不是raid6)並且磁盤實際上充滿了零,所以第一次運行奇偶校驗時,它會出現需要糾正的錯誤,所以你不應該這樣做。在開始使用陣列之前,您無需等待重新同步完成;它將在後台突然顯示,直到完成。


8
2018-06-18 22:59



謝謝psusi - 這不能解決這個問題。 - Paul
@Paul,嗯..是的,確實如此。沒有“空”這樣的東西只有同步或不同步。 - psusi
它沒有解決我提出的問題。零塊的xor為零。因此,如果我能告訴mdadm該空間可以被認為是空的,那麼它可以非常快地創建奇偶校驗。只有在寫入特定塊時才需要正確計算奇偶校驗,此時它與之前的“錯誤”並不重要。我甚至可以將磁盤歸零。 - Paul
@Paul,再一次,沒有“空”這樣的東西。通常是的,從來沒有寫過的條帶上的奇偶校驗是錯誤的,這就是為什麼你可以逃脫--assume-clean,即使磁盤沒有充滿零,但是錯誤的奇偶校驗也是如此當mdadm進行奇偶校驗時,檢測並糾正。 - psusi
@Paul,“空”的含義沒有明確定義。大多數人使用它來表示他們沒有在設備上放置任何文件或文件系統,並且不知道或不關心它當前包含的內容。如果你知道磁盤都是零,那麼--assume-clean就是你想要的。它會接受你的說法,磁盤全部歸零並且不會重新計算奇偶校驗,正如你所提到的,零的奇偶校驗對於全零的數據磁盤是正確的,至少對於raid5(不是raid6)。 - psusi


您無法使用軟件或硬件RAID執行此操作。所有校驗和都需要寫在磁盤上,這需要時間。您可以稍後執行此操作,但是在您可以使用它們之前,必須先執行未寫入的磁盤部分。

這基本上是因為RAID系統和文件系統彼此不了解。 ZFS對此有一個解決方案,但RAID部件與文件系統深度集成。因此,RAID子系統實際上知道磁盤的哪些部分用於存儲數據,哪些部分可以在以後使用,然後將校驗和寫入它們。

您可以將吞吐速度添加到軟件RAID,或者在寫入所有校驗和之前開始使用RAID,然後讓軟件RAID為您處理。巫婆是@psusi所寫的。


2
2018-06-18 23:57



我理解RAID是如何工作的,我試圖了解空磁盤上校驗和發生了什麼。每次將某些內容寫入磁盤時都需要計算校驗和,因此在任何數據出現之前計算它們並沒有多大意義 - “沒有任何內容”,“稍後再做”是明智的。在此方案中沒有要考慮的文件系統。 - Paul
有 總是 數據存在。它可能不重要或有意義,但每個部門總是有價值。 (零也是一個值!)RAID實現不知道哪些扇區包含重要數據,因此它必須將它們全部視為重要併計算它們的奇偶校驗。 - Wyzard