基于块的虚拟机映像备份和还原实用程序

back的Python项目详细描述


概述

backy是用于虚拟机映像的基于块的备份和还原实用程序。

backy的目标是:

  • 空间、时间和网络效率
  • 微不足道的恢复
  • 可靠。

为了实现这一目标,我们依赖于:

  • 节省空间的存储(CoW文件系统、内容哈希分块)
  • 为我们的卷使用支持快照的源(即ceph rbd) 它允许轻松提取快照之间的更改,
  • 利用经验证的现有低级工具,
  • 保持代码基数小、简单、测试良好。

我们还有一些基本的实施规则:

  • vm数据存储在文件系统上,可以是 使用常规的fs工具(如copy、rsync等)在服务器之间移动。
  • 不需要第三方守护进程与backy交互:无数据库 服务器。调度器守护进程只负责调度 调用常规的cli命令来执行备份。backy可能与 外部守护进程,如ceph或consul,取决于源存储 实施。

操作

完全还原

检查要还原的修订版:

$ backy -b /srv/backy/<vm> status

或许可以设置ceph环境-具体取决于您的配置:

$ export CEPH_ARGS="--id $HOSTNAME"

通过管道还原完整图像:

$ backy restore -r <revision> - | rbd import - <pool>/<rootimage>

还原单个文件

backy提供一个nbd服务器,通过可安装的设备访问备份:

$ cd /srv/backy/$vm
$ backy nbd-server

在另一个外壳中,您现在可以安装这个:

$ nbd-client -N <revision> localhost 9000 /dev/nbd0
$ mkdir  -p /mnt/restore/<vm>
$ mount -r /dev/nbd0p1 /mnt/restore/<vm>

完成后:

$ umount /mnt/restore/<vm>
$ nbd-client -d /dev/nbd0

同时使用ctrl-c停止nbd服务器。

设置背景

  1. 使用支持cow的文件系统创建足够大的备份分区 像btrfs一样,将其安装在 /srv/backy

  2. /etc/backy.conf 创建配置文件。有关详细信息,请参见手册页。

  3. 使用您喜爱的初始化系统启动计划程序:

    backy -l /var/log/backy.log scheduler -c /path/to/backy.conf
    

    调度程序在前台运行,直到由sigterm拍摄。

  4. 使用"backy check"设置监视

  5. /var/log/backy.conf /srv/backy/*/backy.log 设置日志循环

上面给出的文件路径与内置的默认值匹配,但路径是完全匹配的 可配置。

功能

telnet外壳

远程登录到本地主机端口6023以获取交互式控制台。控制台可以 当前用于检查计划程序的实时状态。

自检

backy包括一个自检设备。调用backy check查看 所有配置的备份作业都有最新版本:

$ backy check
OK: 9 jobs within SLA

输出和退出代码都适合与nagios兼容的处理 监控系统。

可插入的备份源

backy附带了许多插件,这些插件定义了类似于源的块文件:

  • 文件 从生活在常规文件上的简单图像文件中提取数据 系统,
  • CEPH RBD 使用CEPH功能(如快照)从RBD图像中提取数据。
  • flyingcircus是我们使用的ceph rbd源的扩展。 在飞行马戏团主办平台的内部。它使用高级功能 就像领事一体化。

为其他源编写插件应该很容易。

自适应验证

backy总是验证新创建的备份。验证规模取决于 源类型:完全验证基于文件的源。基于ceph的来源是 基于验证的On运行时随机采样。

零配置调度

backy调度程序旨在连续运行。它将扩大就业机会 根据一天中配置的运行间隔。从一个 中断,它将重新安排错过的作业,以便在 可能的。

备份作业也可以在特定时间触发:只需调用backy 手动备份。

性能

backy的设计目的是通过 并行运行多个实例。后备存储器必须准备好 这种(混合)负荷。找到最佳设置需要一些实验 假设硬件和加载配置文件因站点而异。以下 部分包含一些要开始的要点。

存储后端

如果备份存储是RAID阵列,则其条带大小应与 文件系统。我们有256K条纹的好经验。同时检查 硬盘上512b/4k块错位。我们通常与raid-6一起使用 在硬件和软件RAID上都能看到合理的性能。

文件系统

我们通常推荐使用xfs,因为它提供了高度的并行性,并且 能够很好地处理非常大的目录。

请注意,对于 多个驱动器上的高并行大容量I/O。使用 截止日期 noop

内核

由于backy执行许多元数据操作,请确保inode和 不会过早地从vfs缓存中逐出dentry。我们发现 vm.vfs_cache_压力sysctl可以在总备份中产生很大的影响 表演。我们目前得到了很好的结果,将其设置为 10 。 您还可以增加vm.min_free_kbytes以避免页面分配 10 GbE网络接口错误。

作者

许可证

GPLV3

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

推荐PyPI第三方库


热门话题
java将spring j_spring_安全检查迁移到登录   log4j2中自定义appender中AppConfig的java问题   在将java转换为Json时是否可以忽略内部类名和变量   用java将PDF文件转换为十六进制格式   java将值从AsyncTask返回到主类   java如何导入带有部署变量类名的静态函数?   java Spring Boot@ConfigurationProperties未从环境检索属性   java为什么API调用需要80毫秒的延迟才能到达控制器(在Google应用程序引擎中)?   XML配置中MarshallingMessageConverter中的java设置MarshallTo获取无效属性“MarshallTo”   java从群中获取facebook帖子   @ComponentScan的java excludeFilters不起作用   java将单选按钮值从一个类传递到另一个类   java使JTextArea在Swing中可滚动   java Android增强现实应用程序:将球坐标旋转到设备坐标系