Backup

如何執行 zfs 池的增量/連續備份?

  • September 18, 2021

如何在異地連續/增量備份 zfs 池?

我認識到send/receiveover ssh 是一種方法,但是它需要手動管理快照。

我發現了一些工具,但大多數不再受支持。

一個看起來很有前途的工具是https://github.com/jimsalterjrs/sanoid但是我擔心非廣為人知的工具可能弊大於利,因為它可能會損壞/刪除數據。

如何執行連續/增量 zfs 備份?

ZFS是一個令人難以置信的文件系統,可以解決我的許多本地和共享數據儲存需求。

雖然,我確實喜歡盡可能使用**集群 ZFS**的想法,但有時它不切實際,或者我需要儲存節點在地理上的一些分離。

我的案例之一是 Linux 應用伺服器上的高性能複制儲存。例如,我支持一個傳統軟體產品,該產品受益於低延遲 NVMe SSD 驅動器的數據。該應用程序有一個應用程序級鏡像選項,可以復製到輔助伺服器,但它通常不准確,並且是 10 分鐘的RPO

我已經通過擁有一個可以是本地、遠端或兩者的輔助伺服器(也在類似或不同的硬體上執行 ZFS)解決了這個問題。通過結合下面詳述的三個實用程序,我精心設計了一個複制解決方案,它為我提供了連續複製、深度快照保留和靈活的故障轉移選項。

zfs-auto-snapshot - https://github.com/zfsonlinux/zfs-auto-snapshot

只是啟用定期 ZFS 文件系統級別快照的便捷工具。我通常在生產量上按照以下時間表執行:

# /etc/cron.d/zfs-auto-snapshot

PATH="/usr/bin:/bin:/usr/sbin:/sbin"

*/5 * * * * root /sbin/zfs-auto-snapshot -q -g --label=frequent --keep=24 //
00 * * * * root /sbin/zfs-auto-snapshot -q -g --label=hourly --keep=24 //
59 23 * * * root /sbin/zfs-auto-snapshot -q -g --label=daily --keep=14 //
59 23 * * 0 root /sbin/zfs-auto-snapshot -q -g --label=weekly --keep=4 //
00 00 1 * * root /sbin/zfs-auto-snapshot -q -g --label=monthly --keep=4 //

Syncoid (Sanoid) - https://github.com/jimsalterjrs/sanoid

該程序可以執行 ZFS 文件系統的臨時快照/複製到次要目標。我只使用產品的同步部分。

假設server1server2 ,從****server2執行簡單命令以從server1提取數據:

#!/bin/bash

/usr/local/bin/syncoid root@server1:vol1/data vol2/data

exit $?

提示- https://mmonit.com/monit/

Monit 是一個極其靈活的作業調度器和執行管理器。預設情況下,它以 30 秒的間隔工作,但我修改配置以使用 15 秒的基本時間週期。

每 15 秒(1 個週期)執行上述複製腳本的範例配置

check program storagesync with path /usr/local/bin/run_storagesync.sh
       every 1 cycles
       if status != 0 then alert

這很容易通過配置管理實現自動化和添加。通過在 Monit 中包裝快照/複製的執行,您可以獲得集中狀態、作業控制和警報(電子郵件、SNMP、自定義腳本)。


結果是我的伺服器具有多個月的快照以及許多回滾點和保留點:https ://pastebin.com/zuNzgi0G - 另外,一個連續滾動的 15 秒原子副本:

# monit status

Program 'storagesync'
 status                            Status ok
 monitoring status                 Monitored
 last started                      Wed, 05 Apr 2017 05:37:59
 last exit value                   0
 data collected                    Wed, 05 Apr 2017 05:37:59
.
.
.
Program 'storagesync'
 status                            Status ok
 monitoring status                 Monitored
 last started                      Wed, 05 Apr 2017 05:38:59
 last exit value                   0
 data collected                    Wed, 05 Apr 2017 05:38:59

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