一、静态迁移(虚拟机需要关闭)
1、确定需要迁移的虚拟机的磁盘的存放路径,如虚拟机名称为vm1
virsh domblklist vm1 查看,我的为/disk3/CentOS-6.8-x86_64.raw
2、导出需要迁移的虚拟机的配置文件
virsh dumpxml vm1 > /disk3/CentOS-6.8-x86_64.xml
3、将需要迁移的虚拟机的配置文件和磁盘文件转移到另一台主机上
mkdir /home/transfer
scp /disk3/CentOS-6.8-x86_64.xml > 10.100.55.41:/home/transfer
scp /disk3/CentOS-6.8-x86_64.raw > 10.100.55.41:/home/transfer
4、修改一下/home/transfer/CentOS-6.8-x86_64.xml文件中的<source file>的路径即可
5、定义启动虚拟机
virsh dumpxml name>name.xml
virsh define name.xml
二、动态迁移(虚拟机不用关闭 基于数据块)
1、在目标主机上执行命令,创建一个与源主机同名的磁盘文件
qemu-img create -f raw /disk3/CentOS-6.8-x86_64.raw 2G
2、在源主机上执行命令 ssh或者tcp只要其中一种可以与目标主机进行连接就行
virsh -c qemu+ssh://root@10.100.55.41/system list --all
3、开始热迁移(在源主机上执行命令)
virsh migrate fir --live --verbose --copy-storage-all qemu+tcp://10.100.55.41/system tcp://10.100.55.41
--copy-storage-all (基于非共享存储的全部磁盘迁移) 性能消耗较大
qemu+tcp 就是使用tcp进行对远程libvirtd进行连接访问,需要修改文件vim /etc/sysconfig/libvirtd,用来启用tcp的端口,
修改文件vim /etc/libvirt/libvirtd.conf来实现
4、定义和启动虚拟机
virsh dumpxml name>name.xml
virsh define name.xml
三、动态迁移(基于共享存储)
1、搭建NFS服务器
1)首先确认nfs和rpc是否安装
[root@server ~]# rpm -qa |grep nfs
nfs-utils-1.2.3-39.el6.i686
[root@server ~]# rpm -qa |grep rpcbind
rpcbind-0.2.0-11.el6.i686
2)启动服务
systemctl start nfs
systenctl start rpcbind
3)编辑配置文件
mkdir /home/shared_memory
chmod o+w /home/shared_memory
vi /etc/exports
/home/shared_memory 10.100.55.0/24(rw,sync,no_root_squash)
/usr/src 10.100.55.0/24(rw,async)
#no_root_squash:登陆到NFS主机的如果是ROOT用户,他就有ROOT权限
#sync:资料同步写入存储器中
#async:资料会先暂时存放在内存中,不会直接写入磁盘
3)重启nfs和rpcbind服务
以上均在服务器端10.100.55.42这台主机上操作,现在需要测试客户机是否可以,即服务端的两个文件是否成功共享到了10.100.55.0这个网段
4)在客户机上测试
mkdir -p /disk3/share
//挂载NFS服务器上的共享文件
mount 10.100.55.42:/home/shared_memory /disk3/share/
可以在客户机的/disk3/share中新建一个txt文件,再看服务器主机上/home/shared_memory中有没有出现这个歌新建的文件即可
2、定义存储池与其目录(源主机执行命令)
virsh pool-define-as vmdisk --type netfs --target /disk3/share --source-host 10.100.55.42 --source-path /home.shared_memory --source-format nfs
3、创建已定义的存储池-激活-在存储池中创建存储卷-在存储卷中安装虚拟机(源主机执行命令)
virsh pool-build vmdisk
virsh pool-autostart vmdisk
virsh pool-start vmdisk
virsh vol-create-as vmdisk share1.qcow2 3G --format qcow2
virt-install --name share1 --virt-type kvm --ram 1024 --cdrom=/disk3/CentOS-6.8-x86_64-minimal.iso ---disk path=/disk3.share/share1.qcow2 --network bridge=br0 --graphic vnc,listen=0.0.0.0
4、目标主机执行命令(不用创建存储卷,因为存储卷是共享的)
//NFS服务器已经搭建,其中因为/home/shared_memory是共享存储,客户机中/disk3/share挂载了该文件,所有在客户机/disk3/share文件中创建的存储卷也会在NFS服务器上
mkdir -p /disk3/share/
virsh pool-create-define-as vmdisk netfs --target /disk3/share/ --source-host 10.100.55.42 --souce-path /home/shared_memory --souce-format nfs
virsh pool-build vmdisk
virsh pool-autostart vmdisk
virsh pool-start vmdisk
5、在源主机中开始迁移
virsh migrate share1 --live --verbose qemu+ssh://10.100.55.42/system tcp://10.100.55.42 #其中share1为虚拟机名称
5、在目标主机中定义启动虚拟机
virsh dumpxml share1>/disk3/share1.xml
virsh define /disk3/share1.xml