12.3. 使用 virsh 进行实时 KVM 迁移
使用
virsh
命令可将客户端迁移到另一台主机中。
migrate
命令接受以下格式的参数:
# virsh migrate --live GuestName DestinationURL
The
GuestName
parameter represents the name of the guest which you want to migrate.
The
DestinationURL
parameter is the URL or hostname of the destination system. The destination system must run the same version of Fedora, be using the same hypervisor and have
libvirt
running.
Once the command is entered you will be prompted for the root password of the destination system.
示例:使用 virsh 进行实时迁移
这个示例是从test1.bne.redhat.com
迁移至
test2.bne.redhat.com
。请为您的环境更改主机名。这个示例迁移了名为
CentOS4test
的虚拟机。
This example assumes you have fully configured shared storage and meet all the prerequisites (listed here:
迁移要求).
-
确定客户端正在运行
在源系统test1.bne.redhat.com
中确定CentOS4test
正在运行:[root@test1 ~]# virsh list Id Name State ---------------------------------- 10 CentOS4 running
-
迁移客户端
执行以下命令实时将客户端迁移至目的地test2.bne.redhat.com
。在目的地 URL 结尾添加/system
告知 libvirt 您需要完全访问权限。# virsh migrate --live
CentOS4test qemu+ssh://test2.bne.redhat.com/system
Once the command is entered you will be prompted for the root password of the destination system. -
等待
根据负载和客户端的大小,迁移可能需要一些时间。virsh
只报告出错信息。客户端仍将在源主机中继续运行直至全部迁移完成。 -
确定客户端已到达目的主机
在目的系统test2.bne.redhat.com
中确认CentOS4test
正在运行:[root@test2 ~]# virsh list Id Name State ---------------------------------- 10 CentOS4 running
虚拟机之间的热迁移可以在2-3秒内将虚拟机迁移到另外一台宿主机上,而且能保证正在运行的服务不重短。
为了让虚拟机尽快迁移,应该用共享存储来存储虚拟机的img文件,可以用nfs发布
在第一个宿主机上将储存img文件的文件夹通过nfs共享出来。当然也可以将存储独立出来
- yum install nfs-utils
- vim /etc/exports
- /var/lib/libvirt/images/ 192.168.0.0/24(rw,sync,no_root_squash)
- /etc/init.d/rpcbind start
- /etc/init.d/nfs start
在第二台宿主机上将第一台共享出来的文件夹挂载上去
- mount 192.168.0.31:/var/lib/libvirt/images /var/lib/libvirt/images
在第二台宿主机上修改一个文件,否则会出现权限的问题
- vim /etc/libvirt/qemu.conf #去掉下面两句话前的注释
- user = "root"
- group = "root"
- /etc/init.d/libvirtd restart
然后在第一台宿主机的虚拟机管理器中添加一个连接,选择remote tunnel over ssh选择第二台宿主机,输入密码即可连接上去
打开一个虚拟机,右键选择migrate,选择第二台宿主及,几秒中之后虚拟机就运行在第二台宿主机上了,而且没有中断过