用于ceph rbd、图像文件和设备的基于块的重复数据消除备份软件
benji的Python项目详细描述
本机备份
Benji备份是一款基于块的重复数据消除备份软件。它建立在 Daniel Kraft的《Backy?的优秀基础和概念》。 非常感谢他公开了自己的作品并将backy_as 开源软件!
Benji的主要用例是:
- 将CEPH RBD图像快速高效地备份到对象或文件存储中
- 将LVM卷(例如从服务器或个人计算机)备份到外部硬盘 驱动器或云
本机采用Docker图像和头盔图,与 kubernetes 。这使得设置备份解决方案更容易 为您的持久卷。
状态
本机目前已接近beta质量。它通过了所有的测试。这个 文档不是完全最新的。请在github上打开一个问题 文档中未包含或错误包含的使用问题。并且有一个 查看更改文件以获取任何升级说明。
Benji需要 Python3.6.5或更新版本,因为较旧的Python版本 在concurrent.futures实现中有一些缺点,导致 内存使用过度。
旧版本包含一个docker映像,用于与rook集成。 因为我不再有权使用rook安装,rook改变了它的docker基础 同时我暂时放弃了这个支持。新仿制药 可以使用kubernetes图像( benji-k8s )来代替,但这需要一些工作来获得 ceph凭证进入容器。我接受第三个码头工人的补丁 图像(恢复旧的本杰明·鲁克图像)或者也可以集成 对benji-k8s图像的更改没有太多的麻烦。
主要功能
< DL>本机自带NBD(网络块设备)服务器进行备份 图像直接安装-甚至通过网络在另一台机器上。这个 启用基于文件的还原而不还原整个图像。
这些挂载是读/写的(除非您指定了 -r )并写入它们 创建写时拷贝备份版本( 即未修改原始版本)。 这样就可以对图像进行修复( fsck 等)并恢复 修复后的副本。
由于只有已更改的块被写入备份存储,因此一个小连接 即使对于更大的备份也是足够的。即使是新创建的块设备 到备份目标的通信量很小,因为这些块设备通常 主要包含零,并在到达目标存储之前进行重复数据消除。
除此之外,本机还支持基于 z标准 。这进一步减少了 所需的带宽并减少存储空间要求。
benji支持aws s3作为数据后端,但也可以选择启用 与其他s3实现的兼容性,如google存储、ceph Rados网关或minio
Benji还支持 Backblaze的 B2云 存储为您提供了一种非常经济高效的备份方式。
最后但并非最不重要的是,benji还可以使用任何基于文件的存储,包括 外部硬盘驱动器和基于nfs的存储解决方案。
每个备份块都有一个校验和。当本吉擦洗 备份,它从备份存储中读取块,计算其 校验和并将其与存储的校验和进行比较。如果校验和不同, 很可能是在存储或读取时出错 块,或由于备份目标存储上的位腐烂。
本机还支持更快速的轻量级擦洗模式,只检查 对象的存在性和元数据的一致性。
如果擦洗失败,则缺陷块及其所属的备份
to被标记为"无效",将在下次备份时重新读取块
版本,即使
清理还可以获取备份块数的百分比值 应该擦洗一下。所以你可以每天擦洗16%然后 每周彻底清洁(16*7>;100)。
由于benji是一个长期运行的进程,因此您不想等到 当然结束了。你可以在山姆清理,备份和恢复e时间与 每次多次。
benji甚至支持在多个实例上运行的分布式操作 不同的主机或同时在不同的容器中。
通过提供一个配置值来确定备份需要多长时间 能够移除它们,就不会意外地移除非常年轻的备份。安 例外情况是强制执行保留策略 如果已配置,请删除最近的备份。
使用 benji protect 可以保护版本不被删除。 当您计划根据 保留策略可能很快被删除。在恢复过程中,锁也会阻止 但是,通过保护它,它不能被移除,除非你决定 不再需要它。
此外,您还需要使用 --force 覆盖现有文件或卷。