Backup

ZFS 鏡像池的有效異地備份策略是什麼?

  • October 1, 2021

我使用由兩個鏡像磁碟組成的 ZFS 池。為了進行異地備份,我又購買了兩塊磁碟。

我最初的計劃是通過將第三個磁碟附加到鏡像來創建異地備份,等待 ZFS 重新同步,然後分離驅動器並將其帶到異地。這工作得很好,但令我感到驚訝的是,每次附加磁碟時它似乎都會執行*完整的重新同步(我讀過並且可能被誤解了,每次附加都會導致增量或增量重新同步)。*這會導致備份花費的時間超過可接受的時間。

我的要求是擁有我的 zpool 的異地副本以及我可以每天輪換的所有快照。這意味著重新同步最多需要 24 小時——目前已經接近這個時間,但我們擴大池的計劃將把它推到這個時間範圍之外。

如何保留不需要完全重新同步操作的異地備份?我是否應該在我的備份驅動器上使用不同的文件系統(例如導出圖像而不是讓它們成為 ZFS 池的一部分)?我是否應該將備份放在單獨的池中,並在創建新快照時向其發送新快照?

經過大量的修補和實驗,我找到了一個解決方案,儘管有相當大的權衡。

首先,我必須排除的選項:

  • 由於成本原因,無法選擇第二個帶有鏡像池的異地 ZFS 伺服器。如果這是一個選項,這將是迄今為止最好的方法,利用 ZFS 發送/接收將快照發送到遠端池。
  • 擁有第二個現場 ZFS 鏡像池,我可以從中移除磁碟帶回家。這比第一個選項更可行,但我需要第二個池始終在現場有兩個磁碟(或在單個現場磁碟上使用兩個數據副本)。目前我有四塊磁碟,伺服器中沒有五分之一的空間。這將是一種公平的方法,但仍然不理想。
  • 使用 ZFS 附加和分離將備份磁碟輪換到鏡像池中和從鏡像池中移出。這很好用,但每次添加磁碟時都必須執行完整的重新同步。這需要不可接受的時間,所以我不能依賴這個。

我的解決方案類似於使用attachand detach,但是它使用onlineand offline。與完全重新同步相比,這具有執行增量重新同步的優勢,但池始終報告狀態(池始終具有兩個磁碟;旋轉的異地磁碟在遠端儲存和重新同步然後聯機時DEGRADED被標記)offline當他們在現場時)。

所以,快速回顧一下我的設置:

我有一個 ZFS 伺服器和四個相同的磁碟。ZFS 設置為使用鏡像池。四個磁碟中有兩個是該池的永久成員。另外兩個圓盤旋轉;一個始終在異地儲存中,另一個是池的一部分,用作隨時可用的備份。

輪換備份時:

  • 我等待 azfs scrub完成以合理地確保備份磁碟沒有錯誤
  • zfs offline將被遠端訪問的磁碟。在它離線後,我hdparm -Y /dev/id將其旋轉下來。一分鐘後,我部分移除了磁碟底座(剛好足以確保其失去電源),然後再等一分鐘,然後完全拉動驅動器以確保它已停止旋轉。磁碟放入靜電袋中,然後放入保護盒中,然後離開現場。
  • 我帶來了另一個異地磁碟。它安裝在熱插拔托盤中並旋轉起來。我zfs online用來將磁碟恢復到池中並啟動部分重新同步以使其並發。

該系統保證在任何給定時間我都有兩個ONLINE鏡像磁碟和一個OFFLINE遠端磁碟(已被清理)。第四個磁碟正在重新同步或聯機,其好處是,如果正在執行的驅動器發生故障,則池可能仍將與兩個聯機磁碟保持一致。

在過去的幾周里它執行良好,但我仍然認為這是一種駭人聽聞的方法。如果我遇到任何重大問題,我會跟進。


**更新:**在執行了幾個月後,我發現在我的實際使用中,重新同步在分離/附加和離線/線上時花費相同的時間。在我的測試中,我不認為我正在執行擦洗——我的直覺是,如果驅動器離線以進行擦洗,那麼它需要完全重新同步。

引用自:https://unix.stackexchange.com/questions/164864