QEMU FT方案介绍
MicroCheckpointing
基本概念 Micro-Checkpoints (MC) 默认工作在QEMU虚拟机热迁移的逻辑上,可以被简单的理解为“在执行不会结束的热迁移”。比如,在一个确定的周期譬如0.01s去的循环里去执行如下逻辑:
1. 在N ms之后stop vm(paused)
2. 通过调用live migration的逻辑生成一个MC用于标识dirty memory并写入到qemu本地的暂存区
3. Resuse vm
4. 传输MC到目标节点
5. 重复1
当发生failure的情况,目标节点的机器用最新的MC恢复guest
这里涉及的几个问题
MC本身的设备I/O一致性
对qemu guest来说,设备I/O的一致性主要包括网络设备和存储设备
即在这N ms后vm stop,这段时间里,内部往外的网络包都会被cache住,直到MC被传输结束
存储设备则需要保证MC传输结束这段时间磁盘内容也被同步了,如果本来使用的就是共享磁盘则问题不大,同理也是需要磁盘I/O在MC之间也是被cache住的
这里有一点比较奇怪,就是既然vm已经处于stop状态,为什么还需要阻止网络包往外发(实际上应该没有网络包了)不过可以理解的是,这个目的是出于failure后恢复的考虑,这样恢复到目标节点之后,这些网络包都会被回复掉,保证MC的一致性
出于这些一致性考虑,MC的步骤需要作出如更改:
1.