1 迁移源端QEMU
migrate命令 –> hmp_migrate –> qmp_migrate –> qemu_savevm_state_blocked判断当前虚拟机状态适不适合迁移 –> migrate_init迁移初始化 –> 根据uri来选择迁移函数,如表1所示。
Uri | 跳转函数 |
---|---|
Tcp: | tcp_start_outgoing_migration |
Rdma: | rdma_start_outgoing_migration |
exec: | exec_start_outgoing_migration |
unix: | unix_start_outgoing_migration |
fd: | fd_start_outgoing_migration |
以TCP迁移为例说明:tcp_start_outgoing_migration –> inet_nonblocking_connect(创建一个非阻塞的socket,并用其连接一个地址,并将tcp_wait_for_connect注册为连接成功后的处理函数)。
tcp_wait_for_connect –> migrate_fd_connect –> qemu_thread_create(创建线程,使用函数migration_thread作为执行体)。
migration_thread –> qemu_savevm_state_