10.2.5. 创建客户机虚拟机磁盘备份
libvirt 可以与 qemu-ga 通信,以确保 guest 虚拟机文件系统的快照在内部一致,并可根据需要使用。Red Hat Enterprise Linux 6 的改进的目的是确保文件和应用程序级别同步(同步)都已完成。客户机操作系统管理员可以编写和安装特定于应用程序的 freeze/thaw hook 脚本。在释放文件系统之前,qemu-ga 调用主 hook 脚本(在 qemu-ga 软件包中包括)。freezing 进程会临时取消激活所有 guest 虚拟机应用程序。
只有在文件系统被冻结前,才发生以下操作:
- 文件系统应用程序 / 数据库冲刷到虚拟磁盘的工作缓冲区,并停止接受客户端连接
- 应用程序将其数据文件置于一致状态
- 主 hook 脚本返回
- qemu- gazes 文件系统和管理堆栈采用快照
- 已确认快照
- 文件系统功能恢复
Thawing 会以相反的顺序进行。
使用 snapshot-create-as 命令创建客户机磁盘的快照。有关这个命令的详情请参考 第 14.15.2.2 节 “为当前域创建快照”。
注意
特定于应用程序的 hook 脚本可能需要各种 SELinux 权限才能正确运行,因为当脚本需要连接到套接字时,就可以与数据库进行通信。通常,出于此类目的,应开发并安装本地 SELinux 策略。访问文件系统节点后,在标记为
/etc/qemu-ga/fsfreeze-hook.d/
的表行中发出 restorecon -FvvR 命令后,应立即工作。表 10.1 “QEMU 客户机代理软件包内容”
qemu-guest-agent 二进制 RPM 包括以下文件:
文件名 | 描述 |
---|---|
/etc/rc.d/init.d/qemu-ga | QEMU 客户机代理的服务控制脚本(启动/停止)。 |
/etc/sysconfig/qemu-ga | QEMU 客户机代理的配置文件,因为它由 /etc/rc.d/init.d/qemu-ga 控制脚本读取。设置记录在 文件中,并包含 shell 脚本注释。 |
/usr/bin/qemu-ga | QEMU 客户机代理二进制文件。 |
/usr/libexec/qemu-ga/ | hook 脚本的根目录。 |
/usr/libexec/qemu-ga/fsfreeze-hook | 主 hook 脚本.这里不需要修改。 |
/usr/libexec/qemu-ga/fsfreeze-hook.d/ | 单独、特定于应用程序的 hook 脚本的目录。客户机系统管理员应将 hook 脚本手动复制到此目录,确保它们的正确文件模式位,然后在此目录上运行 restorecon -FvvR。 |
/usr/share/qemu-kvm/qemu-ga/ | 带有示例脚本的目录(例如,仅用于)。此处包含的脚本未执行。 |
主 hook 脚本
/usr/libexec/qemu-ga/fsfreeze-hook
会记录其自身的消息,以及应用程序特定脚本的标准输出和错误消息,在以下日志文件中: /var/log/qemu-ga/fsfreeze-hook.log
。有关更多信息,请参阅 wiki.qemu.org 或 libvirt.org 的 qemu-guest-agent wiki 页面。