1、KVM虛擬機遷移分爲動態(熱遷移)和靜態兩種linux
靜態遷移就是複製虛擬機的鏡像文件到另外的一臺KVM主機上,而後經過define從新定義出該虛擬機。操做簡單,通常用於更換KVM主機時使用。centos
動態遷移則是基於共享存儲系統,將虛擬機在不中斷服務的狀況下進行遷移。動態遷移過程:一、遷移開始時,客戶機依然在宿主機上運行,與此同時,客戶機的內存頁被傳輸到目的主機上二、QEMU/KVM會監控並記錄下遷移過程當中全部己被傳輸的內存頁的任何修改服務器
並在全部內存頁都傳輸完成後即開始傳輸在前面過程當中內存頁的更改內容三、QEMU/KVM會估計遷移過程當中的傳輸速度,當剩餘的內存數據量可以在一個能夠設定的時間週期(默認30毫秒)內傳輸完成時,QEMU/KVM會關閉源宿主機上的客戶機,再將剩餘的數據量傳輸到目的主機上,最後傳輸過來的內存內容在目的宿主機上恢復客戶機的運行狀態。四、至此,KVM的動態遷移操做就完成了。遷移後的客戶機儘量與遷移前致,除非目的主機上缺乏一些配置,好比網橋等。dom
虛擬機動態遷移 #環境:nfs服務器、kvm_host0一、kvm_host02 #步驟: #搭建nfs服務器 #兩臺kvm個添加一塊網卡 #在kvm_host01上建立netfs存儲,並安裝虛擬機,拍攝快照 #在kvm_host02上部署環境 #在kvm_host02上開始遷移 #注意:應當在kvm主機上關閉selinux,開放遷移使用的端口;nfs部署時應當開放MOUNT端口(通常爲tcp892)以及udp1十一、tcp2049端口 首先:nfs服務器搭建 yum -y install rpcbind nfs-utils mkdir /nfs_share echo '/nfs_share 192.168.159.*(rw,no_root_squash)' >> /etc/exports sed -i 's/#MOUNTD_PORT=892/MOUNTD_PORT=892/' /etc/syconfig/nfs systemctl start rpcbind && systemctl enable rpcbind systemctl start nfs && systemctl enable nfs firewall-cmd --add-port=111/udp firewall-cmd --add-port=2049/tcp firewall-cmd --add-port=892/tcp 而後:在kvm_host01上 hostnamectl set-hostname kvm_host01 cat >> /etc/hosts << EOF >192.168.159.148 kvm_host01 >192.168.159.149 kvm_host02 >EOF nmcli con add con-name br5 type bridge ifname br5 nmcli con add con-name slave_br5 type bridge-slave ifname master br5 autoconnect yes nmcli con delete `nmcli con show |grep ens37 |awk '{print $4}'` nmcli con up slave-br5 mkdir /nfs virsh pool-define-as nfspool netfs --source-host 192.168.159.151 --source-path /nfs_share --target /nfs_share virsh pool-build nfspool virsh pool-start nfspool virsh pool-autostart nfspool virsh vol-create-as nfspool vm01_nfsvol 20G virt-install -n vm01 -r 1024 --vcpus 1 -l /kvmdir/iso/centos7.iso --disk path=/nfs_share/vm01_nfsvol --accelerate --nographics -x 'console=ttyS0' --network bridge=br5 而後:在kvm_host02上 hostnamectl set-hostname kvm_host02 cat >> /etc/hosts << EOF >192.168.159.148 kvm_host01 >192.168.159.149 kvm_host02 >EOF nmcli con add con-name br5 type bridge ifname br5 nmcli con add con-name slave_br5 type bridge-slave ifname master br5 autoconnect yes nmcli con delete `nmcli con show |grep ens37 |awk '{print $4}'` nmcli con up slave-br5 mkdir /nfs virsh pool-define-as nfspool netfs --source-host 192.168.159.151 --source-path /nfs_share --target /nfs_share virsh pool-build nfspool virsh pool-start nfspool virsh pool-autostart nfspool 最後開始遷移 virsh migrate vm_centos7 --live --unsafe --verbose qemu+ssh://192.168.159.149/system
遷移時可能會出現的故障 一、error: unable to connect to server at 'kvm_host02':No route to host 緣由:免密登錄錯誤,沒法創建鏈接 解決方法:檢查你的ssh鏈接 二、error: Failed to open file '/nfs_share/vm01_nfsvol':Input/Output error 緣由:通常爲存儲錯誤,多是共享存儲的掛載出現問題 解決方法:檢查你的nfs配置,kvm主機和nfs之間的通訊 三、error: internal error hostname on destination resoleved to localhost, but migration requires an FQDN 緣由:域名解析的問題 解決方法:修改hosts文件 四、error: start domain vm1_nfs failed error:internal error: process exited while connecting to monitor: 2018-07-20T11:58:24.264383Z qemu-kvm: -drive file=/mnt/vmnfs,format=qcow2,if=none,id=drive-virtio-disk0: could not open disk image /mnt/vmnfs: Could not open '/mnt/vmnfs': Permission denied 緣由:selinux權限拒絕 解決方法:關閉selinux