Advertisement

qemu中保存虚拟机流程

阅读量:

hmp_savevm函数调用save_snapshot方法。
如果迁移受阻(migration_is_blocked()),则直接返回。
若无法进行快照复制(replay_can_snapshot()),则直接返回。
若全局快照复制对所有块设备不支持(bdrv_all_can_snapshot()),则直接返回。
如果指定名称存在,则删除所有块设备的快照。
将当前运行状态转换为字符串并存储到global_state.runstate字段中。
执行vm_stop(RUN_STATESAVE VM),完成虚拟机的停止操作并将其状态标记为RUN_STATE SAVE VM。
如果系统中有保存状态的数据(nostate不存在),则打开文件描述符并保存快照数据。
对所有块设备执行快照创建操作。
... 如果保存的虚拟机仍在运行(saved_vm_running),则启动该虚拟机。

qemu_savevm_state通过调用...
-> qemu_savevm_state_header函数将写入MAGIC、VERSION以及相应的状态配置参数
-> qemu_savevm_state_setup方法针对全局变量 savevm_state.handlers 中的所有 SaveStateEntry 对象执行 save_section_header 和 save_setup

全部评论 (0)

还没有任何评论哟~