是否可以在不需要完全重新同步的情況下分離和重新附加 ZFS 磁碟?
我有一個總共有四個驅動器的 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 導出/導入的過程……但這不是很優雅。