内存快照,顾名思义,是包含云主机运行时内存状态的快照。在近期发布的ZStack Cloud 4.4.24中,新增支持云主机内存快照。该功能主要基于快照组实现,在快照组已提供磁盘一致性的基础上,新增提供应用一致性,进一步确保数据完整性。内存快照支持以快照组为单位进行恢复,同时还能额外恢复当时内存快照中的网卡、光驱等配置。本文主要从技术实现出发,带您深入了解ZStack Cloud内存快照功能。
一 技术背景
ZStack Cloud内存快照主要基于Libvirt接口实现,我们可通过virsh命令的帮助信息了解相关参数。
1、创建内存快照
从上述命令可见,通过[--disk-only],可创建磁盘快照;通过[--memspec]以及[--diskspec],可指定对应的快照类型、快照文件名等信息。在指定[memspec]的情况下,Libvirt会额外执行一段保存云主机运行时状态信息的逻辑(实际上通过云主机热迁移实现),最终将云主机对应的元数据和运行时状态信息写入到[memspec]指定的文件中。将该机制反推,即可将已保存的云主机运行时状态信息恢复,云主机可恢复到快照创建时的状态。
此外,也许您还会好奇,云主机运行时创建快照如何保证内存一致性?其实,在创建内存快照时,会在获取内存状态之前暂停云主机,由于服务暂停,从而保证了创建内存快照那一时刻的内存一致性。
2、恢复内存快照
从上述命令可见,通过[--file],可指定待恢复的内存快照文件路径。
通过[--xml],可指定待恢复的云主机xml配置文件,该xml配置文件需与内存快照已保存的xml配置文件保持一致,否则内存快照恢复失败;若不指定[--xml],则会按照内存快照已保存的xml配置文件进行恢复。
此外,还可通过[--running]或[--paused],指定恢复后的云主机状态(运行或暂停)。
二 技术原理
ZStack Cloud内存快照技术原理可分为以下三个部分:
保存设备信息
创建内存快照
恢复内存快照
1、保存设备信息
在“技术背景”章节已提到,保存云主机运行时状态信息的逻辑,实际上通过云主机热迁移实现。
基于该背景可得知,执行创建/恢复快照组操作,其中已隐含云主机支持热迁移的前提条件。若仅针对Libvirt层面,直接恢复内存快照就能完成云主机的恢复,但这样会造成其它问题,比如在外部快照场合,若直接恢复内存快照,将直接读写一个只读的快照文件,这是我们不希望发生的。
因此,引入保存设备信息机制,可确保恢复的云主机配置是我们所需要的。云主机热迁移对相应设备的地址信息也有要求。
通过保存设备信息机制,云主机虚拟设备的地址信息被固定,结合之前物理设备地址信息保留的逻辑,从而实现设备定制信息的固定。
此外,保存设备信息机制还有存档功能,支持保留创建内存快照时刻对应的云主机相关虚拟资源信息。在创建内存快照后,即使云主机配置变化(比如修改网卡、光驱等),也可将云主机恢复到创建内存快照时刻的状态。
2、创建内存快照
引入保存设备信息机制,创建内存快照已具备实现基础,即:可以保存设备地址和设备配置信息。
创建包含内存快照的快照组,实质问题是:如何处理内存快照在快照组中的映射关系?为解决该问题,我们新增Memory类型云盘作为内存快照,考虑到内存快照也通过主存储保存,只需调整云盘逻辑,即可让内存快照与其它云盘保持逻辑抽象的统一。
内存快照-Memory类型
此外,在创建快照组时,需再次建立快照组和设备信息的关联关系,用于快照组恢复。该关联关系在删除内存快照时连带删除。
3、恢复内存快照
内存快照需基于快照组进行恢复。恢复内存快照与恢复其它快照在实现逻辑上差别不大。唯一不同的是,恢复内存快照,会根据快照组和设备信息的关联关系,先将存档设备信息还原到当前云主机上,并对云主机配置及设备做一系列检查,当云主机配置及设备还原后,再进行正式的数据面恢复。
三 技术特色
1、易用性
创建内存快照并未新增功能入口,可直接通过创建快照组的功能入口实现。在创建快照组界面,选择创建内存快照,创建出的快照组将包含内存快照。恢复快照组,也可选择是否同时恢复内存快照,针对不同使用场景灵活选择。
图2 创建内存快照
2、实用性
内存快照本身是确保虚拟化场景具备更好可用性的基础功能。此外,通过内存快照,可让云主机在一定程度上规避因变更配置带来的风险。
3、扩展性
恢复内存快照,支持额外恢复当时内存快照中的云主机配置(比如网卡、光驱等)。
4、适用性
目前,除Ceph之外的其它主存储类型均支持内存快照功能。
四 技术价值
内存快照支持捕获某一精确时刻的云主机内存状态。比如正在升级中的软件,若具备内存快照,当升级未按预期完成,或升级后不符合预期,可直接恢复内存快照,将软件快速回滚至升级之前的状态。
对于业务连续性要求苛刻的系统,如需进行升级或调整(不关机),可先创建内存快照,保证应用一致性,再开始进行业务变更。若突发异常,则可直接恢复内存快照,将业务系统快速恢复至升级或调整之前的状态。
五 结束语
云轴科技ZStack作为一家自主创新、专注产品化的云计算公司,打造好用的云产品,降低用户云计算使用门槛,是我们一直以来秉持的理念和践行方向。内存快照功能的推出,让ZStack Cloud快照功能更加完善,进一步保证用户数据完整性。未来,我们会继续推出更多丰富好用的云计算产品功能,为用户创造价值。