kvm虛擬機熱遷移和冷遷移
冷遷移
遷移vm的思路是將disk img磁盤映像文件與xml配置文件拷貝至目的主機重新定義即可
如果環境中部署有共享存儲方案,只是需要重新在目標主機定義即可完成vm的遷移
以下實驗環境為無共享存儲方式
查看裝好的kvm虛擬機oel1狀態

查看虛擬機oel1塊設備信息,虛擬機磁盤文件

關閉虛擬機開始遷移
[root@localhost ~]# virsh shutdown oel1
導出xml文件
[root@localhost ~]# virsh dumpxml oel1 > ./oel1.xml
遠程拷貝文件至目標主機
[root@localhost ~]# scp /home/data/vm/oel1/oel1_qcow2.img root@192.168.2.110:/data/vm/oel1/
[root@localhost ~]# scp /home/data/vm/oel1/oel1_qcow2_1.img root@192.168.2.110:/data/vm/oel1/
目標主機將拷貝過來的xml配置文件重新注冊到kvm
注冊之前,需要確認xml當中配置的disk路徑與實際disk 的img文件路徑是否相同
# cat /etc/libvirt/qemu/oel1.xml
<source file='/data/vm/oel1/oel1_qcow2.img'/>
<source file='/data/vm/oel1/oel1_qcow2_1.img'/>
如果不一致修改為正確的disk路徑
目標主機注冊遷移虛擬機
# virsh define /etc/libvirt/qemu/oel1.xml
定義域 oel1(從 /etc/libvirt/qemu/oel1.xml)
啟動vm虛擬機
[root@localhost ~]# virsh start oel1
console接入vm查看信息
[root@node72 ~]# virsh console oel1
動態遷移
兩台KVM虛擬機,配置一致,任意一台KVM1機子上進行創建虛擬機【oel2】,遷移到KVM2
| 主機 | IP地址 | 主機名 |
| KVM1 | 192.1682.111 | localhost |
| KVN2 | 192.1682.112 | node72 |
| NFS | 192.1682.113 | nfs |
[root@localhost ~]# cat /etc/hosts
192.168.2.111 localhost
192.168.2.112 node72
192.168.2.113 nfs
安裝虛擬機到下面步驟是選擇自定義,共享存儲池-》新建一個存儲卷名為centos7.0,將系統安裝在nfs共享存儲中

新建存儲池kvmshare


采用nfs共享存儲的方式存放disk img映像文件
[root@node1 ~]# cat /etc/exports
/data *(rw,sync,no_root_squash)
Kvm節點掛載nfs共享存儲,路徑須一致
[root@localhost ~]# mount -t nfs 192.168.2.113 :/data /mnt
[root@node72 ~]# mount -t nfs 192.168.2.113 :/data /mnt
localhost 運行vm之后,將vm熱遷移至node72,vm的disk img存放在共享存儲/mnt/vm/oel1路徑下

開啟虛擬機oel2

開始遷移
[root@localhost ~]# virsh migrate --live --verbose --abort-on-error --unsafe oel2 qemu+ssh://192.168.2.112/system
--live 熱遷移
--unsafe 即使不安全也要強制遷移
--abort-on-error 在遷移過程中忽略軟錯誤
--verbose 顯示遷移進程
遷移完成后localhost上的虛擬機是關閉的

沒有以下步驟也是可以運行,但可能會出問題,
在node72檢查,但是node72上沒有oel2的xml配置文件,需要重新導出一份
[root@node72 ~]# virsh dumpxml oel2 > /etc/libvirt/qemu/oel2.xml
注冊遷移虛擬機
# virsh define /etc/libvirt/qemu/oel1.xml

熱遷移成功
