Linux

ZFS 快照發送增量

  • September 17, 2015

我一直很高興地以類似於網站上描述的腳本方式將zfsnap與 CentOS 和 ZFSonLinux 一起使用,但遇到了一個問題。不幸的是,幾天前沒有執行備份,現在我陷入了一個奇怪的境地。我在我的主 ZFS 伺服器上的備份 ZFS 伺服器上有一系列增量備份,在主伺服器上有一些更新的快照。不幸的是,由於主伺服器上舊快照的失去備份和自動銷毀,兩個系統之間不再有一個共同的快照來執行增量發送。即備份有:

backuppool/x@snap2 
backuppool/x@snap3
backuppool/x@snap4

在主 zfs 伺服器上有:

mainpool/x@snap6 
mainpool/x@snap7
mainpool/x@snap8

有什麼方法可以讓它們再次同步,還是我必須銷毀備份中的所有內容並執行完整備份(沒有足夠的空間進行兩個完整備份)?我嘗試從主伺服器指定一個引用遠端備份伺服器上的 snap4 名稱的發送,但由於主伺服器沒有 snap 4,它無法計算增量。我還嘗試將 snap4 從備份發送到主伺服器,但似乎唯一的方法是將其作為完整髮送(沒有足夠的空間),並且我需要清除現有的快照。如果快照不匹配,刪除所有備份歷史記錄似乎很不方便,在這種情況下有什麼解決方案嗎?

由於您的設置中沒有通用基線快照,因此您將無法再執行增量zfs send。您需要銷毀數據集backuppool

zfs destroy -r backuppool/x

並將最新的快照重新發送到備份池

zfs send mainpool/x@6 | [transfer magic] | zfs recv backuppool/x

如果快照不匹配,刪除所有備份歷史記錄似乎很不方便,在這種情況下有什麼解決方案嗎?

“解決方案”只是不刪除源快照,除非這些快照已被驗證已成功傳輸(即顯示在遠端的zfs list -tall輸出中)。我不知道 zfsnap 是否會為此提供支持,但即使不支持,您也可以在讓 zfsnap 刪除任何內容之前使用 shell 腳本執行這種檢查。

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