Zfs

是否可以在不需要完全重新同步的情況下分離和重新附加 ZFS 磁碟?

  • March 14, 2017

我有一個總共有四個驅動器的 ZFS 鏡像池。其中兩個驅動器旨在用於輪換異地備份。我的期望是,在最初的重新同步之後,我可以detach和以後attach的磁碟只進行增量重新同步 - 但是在測試中,無論附加的磁碟是否已經包含幾乎所有池,它似乎都會執行完整的重新同步內容。

使用offline/online方法會給我只更新磁碟而不是完全重建磁碟的預期結果嗎?或者要讓這項工作按預期進行,我是否需要做一些完全不同的事情——例如將每個備份磁碟用作一個磁碟池,並send在需要更新時將最新的快照添加到它?

經過進一步的實驗,我找到了一個公平的解決方案,但是它帶來了重大的權衡。已經offline’d 但未分離的磁碟稍後可以通過增量重新同步操作重新聯機(“當設備聯機時,已寫入池的任何數據都將與新可用的設備重新同步。 ”)。在我的測試中,這將 3 磁碟鏡像的重新同步時間從 28 小時縮短到 30 多分鐘,大約 40GB 的數據增量。

權衡是任何具有離線磁碟的池都將被標記為降級。如果仍然有至少兩個線上磁碟(在鏡像池中),這實際上是一個警告——完整性和冗餘保持不變。

正如其他人提到的那樣,這種整體方法遠非理想——將快照發送到遠端池會更合適,但在我的情況下是不可行的。

總而言之,如果您需要從池中刪除磁碟,然後在不需要完全重新同步的情況下將其添加回來,那麼我推薦的方法是:

  • 使池中的磁碟離線:zpool offline pool disk
  • 旋轉驅動器(如果要物理拉動):hdparm -Y /dev/thedisk
  • 在驅動器離線的情況下使池處於降級狀態
  • 將磁碟添加回池中:zpool online pool disk

而且,由於這尚未經過測試,因此存在增量重新同步操作不准確的風險。“活動”池和/或離線磁碟可能會遇到問題。如果這種情況發生在我身上,我會更新,但現在將嘗試這種方法。

不要走破壞 ZFS 陣列以在異地“旋轉”磁碟的道路。如您所見,重建時間很長,重新同步過程將讀取/驗證數據集的使用大小。

如果你有能力,快照和向遠端系統發送數據是一種干淨的、非侵入性的方法。我想你可以經歷一個專用的單磁碟池,複製到它,然後 zpool 導出/導入的過程……但這不是很優雅。

引用自:https://serverfault.com/questions/641136