输
作者简介
刘长鹏,Intel 软件工程师,主要从事SPDK开发维护工作,现在担任SPDK Core Maintainer。
SPDK Vhost Target主要用来加速Guest IO处理,在实际使用中,Live Migration是一个比较常见的使用场景,下面我们来看下SPDK vhost是如何支持Live Migration的。
大家应该对vhost的架构有一定的了解,SPDK vhost target负责Guest IO的高速卸载,实现Guest到SPDK slave target间端到端的数据zero copy处理。QEMU仅负责设备的模拟,所以这里对存储的迁移是基于共享存储环境来讲的,比如客户可以使用Ceph提供的共享存储卷分配给源VM和目的VM。因为在Vhost架构中,QEMU并不负责Guest IO的处理,当收到迁移命令时,QEMU无法知道Guest所使用的块设备,哪些区域是脏数据,所以这里的迁移是指在IO运行过程中,在Vhost target端存在的脏队列状态和未完成的IO,QEMU Vhost驱动和SPDK Vhost Target需要配合把这些状态迁移到目的VM,当然已经完成并持久化在共享存储中的数据并不需要迁移(block migration)。