随着云计算的发展,诸多的企业应用对于云平台的功能提出更多的需求,如业务的可靠性等,已经不再仅仅限于传统的创建、删除等虚拟机的生命周期管理。
在大多数云平台中被广泛使用的虚拟化方案之一——QEMU+KVM,提供了部分功能增强方案,帮助平台开发者实现大规模业务管理。QEMU对外提供了两套接口来帮助开发者从不同层面增强管理功能:
QEMU Monitor
在QEMU虚拟化的场景中,每台虚拟机都作为一个独立的进程存在,一旦虚拟机开始运行就很难对其硬件进行管理操作。QEMU进程开放了基于QMP协议的QEMU-Monitor接口与外部进程交互,方便开发者管理运行中的虚拟机。通过QEMU-Monitor可以实现插入/弹出CDROM、热插拔USB/网卡/硬盘、高级电源管理等操作以及获取虚拟机的硬件性能数据。
QEMU Guest Agent
由于虚拟化的隔离,以及不同操作系统间的差异,在物理服务器上很难直接管理Guest OS。目前多采用在Guest OS中安装QEMU Guest Agent(QEMU GA)服务的方式与之交互。QEMU GA通过虚拟机内的串口总线与外部管理平台进行简单的数据交互,数据交互使用QMP协议,默认提供了一些基础的操作,并且允许开发者定义自己的扩展接口。通过QEMU GA管理者可以在云平台上统一管理任意虚拟机的Guest OS。
通过QEMU提供的接口,开发者可以在云平台上实现众多与虚拟机的相关功能,简化云平台的管理工作,例如:
性能监控
云平台上运行的业务,根据需求的场景不同,可以实现不同层面的监控:
- 平台资源消耗:需要了解每台虚拟机消耗的CPU、内存、网络接口数据量、块设备数据量。在这种场景下可以通过QEMU Monitor提供的API获取虚拟机进程的资源消耗。
Guest OS内状态:由于硬件虚拟化对CPU、内存资源的隔离和QEMU对IO请求的优化,在Guest OS中的性能数据和qemu-kvm进程的性能数据不会完全一致,对于业务的资源消耗数据,有时候还需单独采集。
快照/备份
对于较为复杂的业务管理场景,例如对正在运行业务的虚拟机做快照和备份操作,由于通信和程序运行的时间消耗,无法保证操作时的数据一致性和数据完整性。这时需要云平台、Guest OS和业务程序协同完成该操作。
云平台会在操作虚拟机快照/备份之前尝试通过QEMU GA向Guest OS发出冻结指令,暂停所有对文件系统的IO操作并向硬盘下刷缓存数据。QEMU GA同时提供了冻结指令的hook脚本扩展,允许管理员实现针对特定业务程序的冻结操作,从而可以保证数据在应用程序一级的同步,保证应用数据的一致性和完整性。
故障转移
在云平台中,通过平台的节点自检能力可以更容易地实现物理节点级别的故障转移。更进一步,通过扩展QEMU GA的自检功能,云平台可以实现Guest OS级别的故障转移。
在云平台日益趋于集中化统一管理的背景下,单纯的虚拟化技术早已经无法满足用户需求,根据业务模型合理设计出高度自动化、响应更迅捷、资源利用率更高的云平台,才能适应不断增长的业务需求。
焱融云借助QEMU Monitor和QEMU Guest Agent技术,在系统性能监控、快照备份、故障转移等功能上做了大量优化,整合到产品中,保障了客户业务的持续稳定运行。