文档目录

数据备份

支持基于 QEMU 块设备层的数据备份,各类型数据存储上的虚拟机均支持备份。备份类型可分为:全量备份、增量备份。全量备份包含完整的数据集合,增量备份仅包含自上一次备份后所有更新的数据集合。全量备份和增量备份均仅备份真实数据。

默认情况下,备份策略是在首次全量备份后,每 63 个增量备份的下一次备份就会自动执行一次全量备份。这是因为从备份数据恢复虚拟机,需要合并恢复点及之前的增量备份数据和全量备份数据。为保障数据安全,备份链最大长度为 64。实际上,系统内部有更智能灵活的应对策略来决定使用哪种合适的备份方式,以确保备份数据的安全可靠。

数据备份可分为三部分:数据复制、数据传输、数据保存。

数据复制

备份模块利用 QEMU 块设备层的脏数据跟踪功能(Dirty Bitmap)实现备份数据的导出。

虚拟机磁盘文件数据发生变化的位置被称为脏数据位置,Dirty Bitmap 记录自上次备份后,虚拟磁盘文件上产生脏数据的所有位置记录,根据位置记录,就可导出自上次备份后所有被修改过的数据,即增量的备份数据。

最终全量备份文件和各个增量备份文件会产生一个完整的备份链,保存完整的数据。Dirty Bitmap 存在于 QEMU 进程的内存中,虚拟机重启后就会丢失这部分信息,因此当虚拟机重启后的下一次备份,系统会自动选择全量备份。

如图 1所示:
图 1. Dirty Bitmap


数据传输

针对不同的虚拟化组件版本,支持两套不同的实现方案,主要区别在备份数据的传输上。

第一种方案。使用 SSHFS 在计算节点上挂载异地备份存储的备份目录,然后把备份数据导入备份存储。SSHFS 是一个简单的 Fuse Over SSH 方案,数据链路由 SSH 会话加密,每个备份计划有单独的 SSHFS 链路。

如图 2所示:
图 2. Data Over SSHFS


第二种方案。在备份存储上使用 NBD 模块导出一个备份磁盘,然后在计算节点通过 QEMU 的块设备任务(block-job),直接把备份数据导入到备份磁盘中。

如图 3所示:
图 3. Data Over NBD


数据保存

备份存储支持多种存储介质,包括:SAN、NAS、磁盘阵列以及带库等。

备份数据在备份存储中是切片去重存放的,备份数据会被切分成 64MB 大小的数据块,然后计算 hash,建立索引。拥有相同 hash 的数据块不会被存储多份。

如图 4所示:
图 4. 数据切片保存