sen*_*ile 15 virtualization backup zfs kvm-virtualization
我正在寻找有关备份我当前 6 台虚拟机的建议(并且很快会增加到 20 台)。目前我正在运行一个两节点 proxmox 集群(这是一个 debian 基础,使用 kvm 进行虚拟化,并使用自定义 Web 前端进行管理)。我有两个几乎相同的盒子,带有 amd phenom II x4 和 asus 主板。每个都有 4 500 GB sata2 hdd,1 个用于安装 proxmox 的操作系统和其他数据,3 个使用 mdadm+drbd+lvm 在两台机器之间共享 1.5 TB 的存储空间。我将所有虚拟机的 lvm 映像挂载到 kvm。我目前有能力从一台机器到另一台机器进行实时传输,通常在几秒钟内(在使用 m$ sql server 运行 win2008 的最大虚拟机上大约需要 2 分钟)。我正在使用 proxmox 的内置 vzdump 实用程序来拍摄 vm' 的快照 s 并将它们存储在网络上的外部硬盘驱动器上。然后我让丛林磁盘服务(使用机架空间)同步 vzdump 文件夹以进行远程异地备份。
这一切都很好,很花哨,但它的可扩展性不是很强。一方面,备份本身每晚可能需要长达几个小时。使用jungledisk 的块级增量传输,同步仅将一小部分数据传输到异地,但这仍然需要至少半小时。
更好的解决方案当然是允许我立即获取两个时间点的差异(比如从早上 6 点到早上 7 点写的内容),压缩它,然后将该差异文件发送到备份服务器,备份服务器会立即传输到机架空间上的远程存储。我对 zfs 进行了一些研究,它具有发送/接收的能力。再加上 bzip 中的数据管道或其他东西看起来很完美。但是,似乎使用 zfs 实现 nexenta 服务器基本上需要至少一两个专用存储服务器来为 proxmox 服务器提供 iSCSI 块卷(通过 zvol 的???)。如果可能的话,我更愿意保持尽可能少的设置(即没有单独的存储服务器)。
我还简要地阅读了有关 zumastor 的内容。看起来它也可以做我想做的事,但它似乎在 2008 年停止了开发。
那么,zfs、zumastor 还是其他?
我想我可能已经找到了我的问题的最终答案:
BUP https://github.com/bup/bup
特征:
它使用滚动校验和算法(类似于 rsync)将大文件分割成块。这样做最有用的结果是,您可以增量备份巨大的虚拟机 (VM) 磁盘映像、数据库和 XML 文件,即使它们通常都在一个巨大的文件中,并且不会为多个版本使用大量磁盘空间。
它使用 git(开源版本控制系统)的 packfile 格式,因此即使您不喜欢 bup 的用户界面,也可以访问存储的数据。
与 git 不同,它直接写入包文件(而不是有单独的垃圾收集/重新打包阶段),因此即使有大量的数据,它也很快。bup 改进的索引格式还允许您跟踪比 git 更多的文件名(数百万),并跟踪更多的对象(数百或数千 GB)。
数据在增量备份之间“自动”共享,无需知道哪个备份基于哪个备份 - 即使备份是由两台彼此不了解的不同计算机进行的。您只需告诉 bup 备份内容,它只会保存所需的最少量数据。
您可以直接备份到远程 bup 服务器,而无需在要备份的计算机上使用大量临时磁盘空间。如果您的备份中途中断,下一次运行将从您中断的地方继续。设置 bup 服务器很容易:只需在任何具有 ssh 访问权限的计算机上安装 bup 即可。
即使您的磁盘有未检测到的坏扇区,Bup 也可以使用“par2”冗余来恢复损坏的备份。
即使备份是增量备份,您也不必担心先恢复完整备份,然后依次恢复每个增量备份;增量备份就像完整备份一样,只是占用更少的磁盘空间。
您可以将 bup 存储库挂载为 FUSE 文件系统并以这种方式访问内容,甚至可以通过 Samba 将其导出。
编辑:(2015 年 8 月 19 日)另一个更好的解决方案出现了: https: //github.com/datto/dattobd
它允许实时快照,本质上为 Linux 中的任何常规旧文件系统提供类似 COW 的功能。
编辑:(2016 年 7 月 15 日)甚至还有另一个非常棒的解决方案: https: //github.com/borgbackup/borg
尤其在修剪方面比bup要好。它似乎对压缩、加密和高效重复数据删除有很大的支持。达托布德+博格ftw!!!