用于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>
小备份
Benji在从块设备读取数据并仅写入数据时进行重复数据消除 如果它们具有相同的校验和,则阻塞一次。重复数据消除 记录所有历史数据ta出现在备份存储目标中,因此 跨越所有备份和所有备份源。这会使重复数据消除 如果图像是共同祖先的克隆,则更有效。
快速备份
借助于ceph的rbd diff,benji将只读取块 自从上次备份后就改变了。即使这些信息 不可用(与lvm一样)benji仍将只备份 更改块。
快速恢复
对于支持块存储(如ceph的rbd),稀疏恢复是 可能的。这意味着,稀疏块(即是孔或是 还原时将跳过所有零。
NBD服务器促进基于文件的恢复

本机自带NBD(网络块设备)服务器进行备份 图像直接安装-甚至通过网络在另一台机器上。这个 启用基于文件的还原而不还原整个图像。

这些挂载是读/写的(除非您指定了 -r )并写入它们 创建写时拷贝备份版本( 即未修改原始版本)。 这样就可以对图像进行修复( fsck 等)并恢复 修复后的副本。

小带宽要求

由于只有已更改的块被写入备份存储,因此一个小连接 即使对于更大的备份也是足够的。即使是新创建的块设备 到备份目标的通信量很小,因为这些块设备通常 主要包含零,并在到达目标存储之前进行重复数据消除。

除此之外,本机还支持基于 z标准 。这进一步减少了 所需的带宽并减少存储空间要求。

支持多种备份存储目标

benji支持aws s3作为数据后端,但也可以选择启用 与其他s3实现的兼容性,如google存储、ceph Rados网关或minio

Benji还支持 Backblaze的 B2云 存储为您提供了一种非常经济高效的备份方式。

最后但并非最不重要的是,benji还可以使用任何基于文件的存储,包括 外部硬盘驱动器和基于nfs的存储解决方案。

保密性
Benji支持GCM模式下的AES-256,以加密备份上的所有数据 存储。通过使用信封加密,每个块都用 拥有独特的随机密钥,这使得明文攻击更加困难。
完整性

每个备份块都有一个校验和。当本吉擦洗 备份,它从备份存储中读取块,计算其 校验和并将其与存储的校验和进行比较。如果校验和不同, 很可能是在存储或读取时出错 块,或由于备份目标存储上的位腐烂。

本机还支持更快速的轻量级擦洗模式,只检查 对象的存在性和元数据的一致性。

如果擦洗失败,则缺陷块及其所属的备份 to被标记为"无效",将在下次备份时重新读取块 版本,即使 RBD diff指示它没有改变。

清理还可以获取备份块数的百分比值 应该擦洗一下。所以你可以每天擦洗16%然后 每周彻底清洁(16*7>;100)。

并发性:恢复时清除时备份

由于benji是一个长期运行的进程,因此您不想等到 当然结束了。你可以在山姆清理,备份和恢复e时间与 每次多次。

benji甚至支持在多个实例上运行的分布式操作 不同的主机或同时在不同的容器中。

缓存友好型
在Linux上读取大量数据时,缓冲区和缓存将被填满 数据,在备份的情况下,基本上只需要一次。 benji指示linux和ceph在处理完数据后立即将其忘记。
简单性:与cp一样简单,但与备份解决方案一样聪明需要
使用少量命令,良好的 --help 和直观的用法, 本吉的感觉主要是 cp 。这是故意的,因为我们认为, 即使你在凌晨3点被叫醒,恢复也必须是愚蠢的并且成功的。 早上好。
防止你做蠢事

通过提供一个配置值来确定备份需要多长时间 能够移除它们,就不会意外地移除非常年轻的备份。安 例外情况是强制执行保留策略 如果已配置,请删除最近的备份。

使用 benji protect 可以保护版本不被删除。 当您计划根据 保留策略可能很快被删除。在恢复过程中,锁也会阻止 但是,通过保护它,它不能被移除,除非你决定 不再需要它。

此外,您还需要使用 --force 覆盖现有文件或卷。

免费开源软件
任何人都可以查看源代码并审核安全性和功能。 Benji根据LGPLv3许可证获得许可。请参阅文档 获取许可证的完整列表。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Spring AOP:在方法之间交换信息   数组Java将字符串转换为字符[]   堆内存java。lang.OutOfMemoryError:PermGen space+java   安卓 Java。lang.ClassCastException:无法将活动强制转换到接口   java尝试使用气泡排序将随机整数数组从最大到最小排序   线程“main”java中的indexoutofboundsexception异常。lang.ArrayIndexOutofBounds异常:发电机处为3。main(Generator.java:35)   java“宽大”有什么用?   java SimpleCaptcha NoSuchMethodError   java在哪里部署Web服务的jar依赖项?   Java8获取列表中连续数字的函数方法   java为什么JWT令牌不安全?   java Uber API:在请求或发出令牌时指定多个作用域会返回无效的请求参数   java如何使用映射器从包含多个引用单元的JSON字符串中获取对象列表?   java警告匿名子类(?)没有串行版本   Jackson 2.9.0中的java JsonGenerationException。pr1   java试图打印多个catch语句   java如何创建一个sql表并获得每个唯一字段的平均价格?   java为什么SetMinimumSize设置最小高度而不是宽度?   java与使用POI合并的混淆   java在Xpath中使用“AND”和“normalizespace”时在不同浏览器中遇到不同的错误