加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

backup – 快速同步zfs池

发布时间:2020-12-14 02:50:10 所属栏目:Linux 来源:网络整理
导读:我的服务器在zfs卷上保存增量备份.由于数据非常相似,我可以显着减少增长 – 每天大约有500GB的“新数据”,但池只增加了大约5-10GB /天,其余的存储在重复数据删除/压缩中. 我想将备份复制到加密的USB磁盘,出于这个原因我也将其设置为zfs卷.当我使用rsync或zfs
我的服务器在zfs卷上保存增量备份.由于数据非常相似,我可以显着减少增长 – 每天大约有500GB的“新数据”,但池只增加了大约5-10GB /天,其余的存储在重复数据删除/压缩中.

我想将备份复制到加密的USB磁盘,出于这个原因我也将其设置为zfs卷.当我使用rsync或zfs send / recieve同步备份时,似乎所有数据都被再次传输(仅在usb驱动器上存储为重复数据删除).因此,备份目前需要24小时,这使得每日备份变得不可能.

有没有办法更快地备份?

解决方法

迈克尔汉普顿的建议很明显,Solaris手册页非常好,但对于初学者而言,这个概念并不容易理解.我将概述我在编写脚本时经历的几点.

基本上,您通常像往常一样执行快照x和完整发送/ recv:

# Initial send,destroy all filesystems on the destination
# pool which are not present on the source pool.
zfs snapshot pool0@snap0
zfs send -R pool0@snap0 | zfs recv -Fdu pool1

之后,您执行快照x 1并以递增方式发送它.您可以删除源上的旧快照,但需要保留最后一个(最近一个),以便可以计算差异.如果丢失/销毁源上的最后一个快照,则必须重新开始完整的初始发送!

# incremental send,destroy all filesystems on the destination
# pool which are not present on the source pool. Afterwards,old
# snapshots can be destroyed.
zfs snapshot pool0@snap1
zfs send -R -I pool0@snap0 pool0@snap1 | zfs recv -Fdu pool1
zfs destroy pool0@snap0

# Afterwards,repeat and replace snap1 with snap2 and snap0 with snap1 etc.

根据我自己的经验提出的建议:

>删除最后一个快照意味着您需要重新开始,所以要小心,首先检查脚本中的成功返回值.>您可以对快照进行编号或使用日期 – 编号更容易,但是如果查看日志和/或执行频繁快照,日期会更好.>在尝试使用选项并尝试-nv进行模拟时,请注意这适用于send,但会因recv而失败,因为没有任何东西可以接收.从手动或错误消息来看,这一点并不明显.>快照将占用空间,直到它们被销毁,并且它们“锁定”您删除的空间.如果经常备份,这不是问题.如果您使用多个目标磁盘/池和/或备份很少,则可能会遇到磁盘空间限制.在illumos / OpenZFS中存在书签功能,这可以解决这个问题.不幸的是,它目前只支持单个快照而不是递归,因此您必须自己添加递归代码.>如果您不想使用/编写自己的,请使用Github上的众多之一.我认为znapzend是其中最成熟的一个.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读