backup – 快速同步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是其中最成熟的一个.

相关文章

在Linux上编写运行C语言程序,经常会遇到程序崩溃、卡死等异...
git使用小结很多人可能和我一样,起初对git是一无所知的。我...
1. 操作系统环境、安装包准备 宿主机:Max OSX 10.10.5 虚拟...
因为业务系统需求,需要对web服务作nginx代理,在不断的尝试...
Linux模块机制浅析 Linux允许用户通过插入模块,实现干预内核...
一、Hadoop HA的Web页面访问 Hadoop开启HA后,会同时存在两个...