一、遷移方式
(一) 靜態遷移
虛擬機靜態遷移就是虛擬機在關機狀態下進行的遷移,拷貝虛擬機磁盤文件和配置文件至目標主機的遷移方式
(二) 動態遷移
虛擬機動態遷移就是虛擬機在開機狀態下進行的遷移,不影響虛擬機業務運行的遷移方式
二、實現方式
(一) 共享儲存
虛擬機的數據儲存在共享儲存上,遷移時只需要完成內存數據的遷移
(二) 非共享儲存
虛擬機的數據儲存在本地,遷移時需要對鏡像文件和內存數據同時遷移
三、遷移前准備
(一) 搭建NFS服務器
1) 系統下創建共享文件夾,修改至最高權限
2) 修改文件/etc/exports,添加如下內容
/nfs *(rw)
/nfs:創建的共享文件夾的路徑及名稱
*:允許訪問數量
(rw):可執行操作
3) 重啟NFS服務
Systemctl restart nfs
(二) 創建磁盤文件
在NFS共享服務器中創建磁盤文件,操作如下(文件也需要賦予權限)
(三) 安裝虛擬機
安裝虛擬機時選擇在上一步中創建在NFS共享服務器中的磁盤
(四) 遷移檢查
1) NFS服務器配置(服務器開啟成功,修改共享目錄權限)
2) 遷移主機掛載NFS服務器
3) 關閉防火牆
4) 主機設置selinux為disabled(setenforce 0重啟生效)
5) 開啟libvirtd服務
Systemcctl start libvirtd
四、遷移實例
(一) 基於共享儲存
1) 靜態遷移-命令行
遷移虛擬機時需要拷貝虛擬機配置文件和虛擬機磁盤文件至目標主機,源主機與目標主機需要有相同的目錄結構
*基於NFS共享儲存的虛擬機,在源主機和目標主機同時掛載NFS共享儲存,並擁有相同格式目錄結構的前提下,僅拷貝虛擬機配置文件至目標主機即可,配置文件存放位置需要與源主機位置相同。
a) 確認虛擬機狀態
virsh list --all
b) 查看虛擬機磁盤位置(此處使用的是NFS共享儲存,無需遷移磁盤文件,僅查詢)
virsh domblklist {vm-name}
c) 導入虛擬機配置文件並拷貝至目標主機
virsh dumpxml vm3 > /root/vm3.xml
scp vm3.xml root@10.93.22.13:/etc/libvirt/qemu/
d) 確認目標主機目錄結構后定義注冊虛擬機
virsh define /etc/libvirt/qemu/vm3.xml
e) 確認並開機
virsh start vm3
virsh console vm3
f) *遷移之后,兩台主機都可以使用該虛擬機,但同時只能由一台使用,虛擬機在目標主機中處於開機狀態時,原主機上無法使用該虛擬機,如原主機需要使用,需要將目標主機上的虛擬機關機即可。
g) 如果想在主機中刪除虛擬機,需要取消定義該虛擬機,並刪除配置文件
virsh undefine {vm-name} --nvram
rm -rf /etc/libvirtd/qemu/vm3.xml
2) 靜態遷移-GUI
不支持
3) 動態遷移-命令行
virsh migrate vm2 qemu+ssh://root@10.93.22.8/system --migrateuri tcp://10.93.22.8 --live --unsafe --persistent –undefinesource
回遷
virsh migrate vm2 qemu+ssh://10.93.20.37/sytem --migrateuri tcp://10.93.20.37 --live --unsafe --persistent --undefinesource
4) 動態遷移-GUI
GUI界面右鍵選擇“migrate”
Adress填寫目標主機地址,勾選“Allow unsafe”開始遷移
(二) 基於非共享儲存
1) 靜態遷移
a)查詢虛擬機配置文件和磁盤文件位置
b)拷貝虛擬機配置文件和磁盤文件至目標主機,存放在相同的目錄下
c)定義注冊虛擬機即可
2) 動態遷移
a)從源主機拷貝虛擬機磁盤文件至目標主機,存放在相同目錄下
b)虛擬機開機
c)遷移
virsh migrate --live --unsafe --persistent vm-cent qemu+ssh://root@10.93.22.14/system tcp://10.93.22.14
--live 動態遷移
--unsafe 跳過安全檢查(允許不安全的操作)
--persistent 添加參數后,遷移至目標主機中的虛擬機可持續存在;如果不添加這個參數,遷移至目標主機中的虛擬機不能關機,關機后虛擬機自動刪除,如果要讓虛擬機持續存在,可在遷移后再次從源主機拷貝一份虛擬機配置文件至目標主機,重新定義注冊即可
Vm-cent 准備遷移的虛擬機名稱
五、常見報錯信息分析
(一) 遠程圖形化管理工具打開失敗
原因一:系統未安裝或者未打開libvirtd服務
原因二:系統未配置圖形化管理工具,修改/etc/ssh/sshd_config配置文件,將X11Forwarding no改為X11Forwarding yes,保存退出后重啟sshd服務。
(二) 虛擬機管理器鏈接失敗
原因:沒有安裝openssh-askpass,Kylin_arm的操作系統中沒有加載這個軟件包
原因:libvirtd-4.5.0的源碼中存在BUG,升級libvirtd版本即可
(三) 在NFS中創建磁盤文件失敗
原因:NFS服務器中的共享目錄權限不足,創建磁盤文件后需要同步賦予權限
(四) 無法選擇共享目錄下的磁盤作為儲存位置
原因:NFS服務器中創建的磁盤文件無權限,修改NFS服務器共享目錄中的磁盤文件權限即可
(五) 遷移虛擬機時提示目標服務器沒有文件或者文件夾
原因:目標服務器未掛載NFS共享
(六)PCI設備添加失敗
原因:BIOS中未打開虛擬化配置
六、實際應用場景介紹
(一) 物理機硬件系統的維護、故障修改和升級,但是運行在這台物理機上的虛擬機不能管理,應為用戶的重要服務器在虛擬機不斷運行
(二) 物理機軟件系統升級、打補丁,為了不影響上面運行的虛擬機,在升級和打補丁之前,需要把虛擬機遷移至其他物理機上
(三) 某物理機上的負載台太重,需要減少一些虛擬機來釋放資源
(四) 在某台物理機上的虛擬機太多,導致負載過重,而其他的物理機上虛擬機太少,資源利用不足,做一下資源平衡