基于块的虚拟机映像备份和还原实用程序
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服务器。
设置背景
使用支持cow的文件系统创建足够大的备份分区 像btrfs一样,将其安装在 /srv/backy 下
在 /etc/backy.conf 创建配置文件。有关详细信息,请参见手册页。
使用您喜爱的初始化系统启动计划程序:
backy -l /var/log/backy.log scheduler -c /path/to/backy.conf
调度程序在前台运行,直到由sigterm拍摄。
使用"backy check"设置监视
为 /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网络接口错误。
作者
- christian theune<; ct @ 飞行马戏团 io >;
- 克里斯蒂安·考豪斯(Christian Kauhaus)<; kc @ 飞行马戏团 io >;
- 丹尼尔·卡夫特
许可证
GPLV3