KVM 虛擬機遷移
一 概述 :
libvirt 提供了兩種方案
1 基於hypervisor native transport 的遷移
一般的遷移方式
2 基於libvirt tunnelled transport 的遷移 (使用RPC協議可以實現加密功能,在傳遞時多了一個步驟,在單一的網絡執行並發的操作)
二 遷移時的通信控制
A 受管理的直接遷移
(同時連接到源和目標主機的libvirt主機(用戶名,密碼,SSH,證書))如果遷移過程中鏈路發生故障,則源宿主機會回退到之前的情況,(極端情況,如果不能回退,則可以進行重新啟動)
B 受管理的點對點遷移((管理端和源建立連接,源和目標端建立連接進行認證並進行遷移))如果管理程序崩潰,則不會影響,因為指令已經發送
C 不受管理的直接遷移((由兩臺主機之前的hypervisor進行控制))
統一資源標識 URI
通過URI 連接遠端的服務
1 同一宿主機之間的遷移
通過編譯配置文件進行指定磁盤的指定路徑來保證正常啟動
修改前
修改後
2 不同宿主機之間的遷移
3 折中遷移方式
1 遷移配置文件
2 其磁盤文件必須在其中
二 動態遷移
1 要求
1 確保兩臺主機均啟用了libvirtd 服務
2 遷移的平臺和版本符合兼容性要求
3 正確配置防火墻,允許所需端口的通信
4 兩個主機在相同的虛擬網絡
5 如果是共享存儲,建議在兩個主機上的mount 路徑一致
2 基於共享存儲的動態遷移
1 NFS 服務器配置存儲
創建vm 並掛載:
rw : 讀寫
all_squash: 將遠程訪問的所有普通用戶及組都映射為匿名用戶或者用戶組
no_all_squash: 與all_squash 相關
sync: 將數據同步寫入內存緩沖區與磁盤中,效率低,但可以保證數據的一致性
2 進行遠端掛載生效
3 修改配置文件和遷移磁盤到共享存儲
4 使用圖形化界面進行遷移
臨時遷移的意思是在源主機上保留相應的配置
源主機配置文件
如果選擇不可靠的,則在進行遷移時磁盤產生的緩存在沒有被刷新到磁盤上時提示已經成功,此時可能會造成一定的損失,但其性能好。生產中建議使用none
5 virsh migrate 命令在線遷移虛擬機
遷移相關參數
--live 表示在線遷移
--unsafe 表示允許不可靠遷移
--persistent 表示永久遷移
--UNdefinesource
6 其他相關方式遷移
1 可指定專門的URI進行遷移
virsh migrate rhel7.3 qemu+ssh://root@server6/system \
--migrateuri tcp://192.168.1.60 --live --persistent --undefinesource
2 p2p 的遷移方式
3 --direct
不支持qemu 必須是Xen
4 --tunnelled (必須同時使用--p2p參數)
隧道式的遷移,是隧道之間的遷移使用,必須使用SSH認證
3 基於本機存儲的動態遷移
1 無共享存儲的必要條件
一 使用virsh 的 --copy-storage-all
二 需要有實時存儲遷移(塊遷移)支持
1 標準的RHEL/CentOS7的qemu-kvm 不支持
2 ovirt 或 RHEV 支持
centos 7.2 必須安裝一下兩個包
yum -y install centos-release-qemu-ev
yum -y install qemu-kvm-ev
三 虛擬機要在存儲池中
2 使圖形化界面進行虛擬機的遷移
註 :由此可知,直接遷移因為其磁盤文件不能同步而導致遷移失敗,可進行手工遷移實驗
3 命令行方式遷移
A 安裝相關虛擬遷移需要軟件包,並重啟服務器
[qemu-kvm-rhev]
name=Virt rebuilds of qemu-kvm-rhev
baseurl=http://resources.ovirt.org/pub/ovirt-3.5/rpm/el7Server/
mirrorlist=http://resources.ovirt.org/pub/yum-repo/mirrorlist-ovirt-3.5-el7Server
enabled=1
skip_if_unavailable=1
gpgcheck=0
B 創建相關資源池
C 遷移並進行測試
KVM 虛擬機遷移