4.7. QEMU 客户机代理概述


在 Red Hat Enterprise Linux 6.4 中,QEMU 客户机代理(QEMU GA)为 Linux 客户机虚拟机的损坏提供了保护。在发出快照请求或创建磁盘备份副本之前,管理堆栈(libvirt)通过 virtio-serial 端口向 QEMU GA 发送 guest-fsfreeze-freeze QMP 命令。此命令通过 FIFREEZE ioctl() 内核功能导致客户机代理冻结所有客户虚拟机的文件系统。这个 ioctl() 功能是由客户端虚拟机中的 Linux 内核实现的。此函数清除客户机虚拟机内核中的文件系统缓存,使文件系统进入一致的状态,并拒绝所有用户空间线程对文件系统进行写入访问。
只有在 QEMU GA 报告成功后,libvirt 才会继续执行快照。完成后,libvirt 通过 virtio-serial 端口将 guest-fsfreeze-thaw QMP 命令发送到 QEMU GA。此命令告知 QEMU GA 发布 FITHAW ioctl (),它会取消阻止之前被拒绝的写入访问的用户空间线程,并恢复正常处理。当执行虚拟磁盘快照时,这个过程不会确保应用程序级别数据处于一致的状态。如果 fsck 实用程序从快照恢复了文件系统时没有发现问题,这很明显,但应用程序无法从拍摄快照的时间和用户空间进程时恢复处理,而用户空间进程可能没有将其内部缓冲区写入磁盘上的文件。
Red Hat Enterprise Linux 6.5 确保完成文件和应用程序级同步(清空)。客户机系统管理员可以编写和安装特定于应用程序的空闲和解放 hook 脚本。在冻结文件系统前,QEMU GA 会调用主 hook 脚本(包括在 QEMU GA 软件包中)。主钩子脚本反过调用各个应用特定脚本(由客户机系统管理员准备),该脚本会临时停用所有客户虚拟机应用程序。当模式更改为"冻结"时,所有这些操作都会发生。
在文件系统被冻结之前,客户机系统管理员的脚本会导致数据库和其他文件系统应用程序将其工作缓冲区刷新到虚拟磁盘,并停止接受进一步的客户端连接。然后,应用程序将其数据文件置于一致状态,在恢复处理时,使用重新激活(或全新启动)应用程序实例(从备份中恢复虚拟磁盘后)。当所有脚本都进行各自的应用程序不活跃时,主 hook 脚本返回时,QEMU GA 会进入冻结文件系统,管理堆栈会获取快照。完成所有操作后,并确认拍摄快照,文件系统将恢复以提供写入请求。这个过程被称为 thawing。
解封是以相反的顺序释放的。由 libvirt 的指示,QEMU GA 分解客户虚拟机的文件系统。然后,它会调用单独的钩子脚本(通过主 hook 脚本)恢复或重新启动在冻结过程中激活的应用程序。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.