1. 程式人生 > >KVM熱遷移虛擬機

KVM熱遷移虛擬機

util 安裝虛擬機 速度 class 建立連接 safe false 無法 pro

一、KVM虛擬機遷移分為動態(熱遷移)和靜態兩種

靜態遷移就是復制虛擬機的鏡像文件到另外的一臺KVM主機上,然後通過define重新定義出該虛擬機。操作簡單,一般用於更換KVM主機時使用。

動態遷移則是基於共享存儲系統,將虛擬機在不中斷服務的情況下進行遷移。動態遷移過程:1、遷移開始時,客戶機依然在宿主機上運行,與此同時,客戶機的內存頁被傳輸到目的主機上2、QEMU/KVM會監控並記錄下遷移過程中所有己被傳輸的內存頁的任何修改

並在所有內存頁都傳輸完成後即開始傳輸在前面過程中內存頁的更改內容3、QEMU/KVM會估計遷移過程中的傳輸速度,當剩余的內存數據量能夠在一個可以設定的時間周期(默認30毫秒)內傳輸完成時,QEMU/KVM會關閉源宿主機上的客戶機,再將剩余的數據量傳輸到目的主機上,最後傳輸過來的內存內容在目的宿主機上恢復客戶機的運行狀態。4、至此,KVM的動態遷移操作就完成了。遷移後的客戶機盡可能與遷移前致,除非目的主機上缺少一些配置,比如網橋等。

虛擬機動態遷移
#環境:nfs服務器、kvm_host01、kvm_host02
#步驟:
#搭建nfs服務器
#兩臺kvm個添加一塊網卡
#在kvm_host01上創建netfs存儲,並安裝虛擬機,拍攝快照
#在kvm_host02上部署環境
#在kvm_host02上開始遷移
#註意:應當在kvm主機上關閉selinux,開放遷移使用的端口;nfs部署時應當開放MOUNT端口(一般為tcp892)以及udp111、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
遷移時可能會出現的故障
1、error: unable to connect to server at 'kvm_host02':No route to host
原因:免密登陸錯誤,無法建立連接
解決方法:檢查你的ssh連接
2、error: Failed to open file '/nfs_share/vm01_nfsvol':Input/Output error
原因:一般為存儲錯誤,可能是共享存儲的掛載出現問題
解決方法:檢查你的nfs配置,kvm主機和nfs之間的通信
3、error: internal error hostname on destination resoleved to localhost, but migration requires an FQDN
原因:域名解析的問題
解決方法:修改hosts文件
4、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


KVM熱遷移虛擬機