KVM虛擬平臺——遷移KVM虛擬機

博文大綱:
一、KVM虛擬機遷移的方式
二、實現KVM虛擬機靜態遷移
三、實現KVM虛擬機動態遷移

一、KVM虛擬機遷移的方式

KVM平臺中的KVM虛擬機遷移分爲以下兩種:

(1)冷遷移(靜態遷移)

我們存放虛擬機磁盤的目錄都是掛在的一個nfs文件系統的磁盤,進行冷遷移時,只要在目標主機上掛載這個nfs文件系統,就可以看到要遷移的那個虛擬機的磁盤文件,通常以.qcow2或.raw結尾的,然後,只需將虛擬機的.xml配置文件發送到目標服務器上,然後重新定義一下遷移過來的虛擬機即可!

(2)熱遷移(動態遷移)

如果源宿主機和目的宿主機共享存儲系統,則只需要通過網絡發送客戶機的 vCPU 執行狀態、內存中的內容、虛機設備的狀態到目的主機上。否則,還需要將客戶機的磁盤存儲發到目的主
機上。共享存儲系統指的是源和目的虛機的鏡像文件目錄是在一個共享的存儲上的。

基於共享存儲系統,動態遷移的具體過程:
(1)遷移開始時,客戶端依然在宿主機上運行,與此同時,客戶機的內存頁被傳輸到目的主機上;
(2)QEMU/KVM 會監控並記錄下遷移過程中所有已被傳輸的內存頁的任何修改,並在所有內存頁都傳輸完成後即開始傳輸在前面過程中內存頁的更改內容;
(3)QEMU/KVM 會估計遷移過程中的傳輸速度,當剩餘的內存數據量能夠在一個可以設定的時間週期(默認 30 毫秒)內傳輸完成時,QEMU/KVM 會關閉源宿主機上的客戶機,再將剩餘的數據量傳輸到目的主機上,最後傳輸過來的內存內容在目的宿主機上恢復客戶機的運行狀態;
(4)至此,KVM的動態遷移操作完成!遷移後的客戶機儘可能與遷移前一致,除非目的主機上缺少一些配置,比如網橋等。注意,當客戶機中內存使用率非常大而且修改頻繁時,內存中數據不斷被修改的速度大於KVM能夠傳輸的內存速度時,動態遷移的過程是完成不了的,這時候只能靜態遷移。

(3)注意事項

(1)遷移的服務器CPU品牌最好一致;
(2)64位只能在64位宿主機間遷移,32位可以遷移32位和64位宿主機;
(3)宿主機中的虛擬機名字不能衝突;
(4)目的宿主機和源宿主機軟件配置儘可能相同;

(4)總結

靜態遷移:
(1)複製鏡像文件和虛擬機配置文件;
(2)重新定義虛擬機即可!

動態遷移:
(1)創建共享存儲;
(2)兩臺KVM宿主機掛載共享存儲;
(3)啓動動態遷移;
(4)創建遷移後的虛擬配置文件;
(5)重新定義虛擬機;

二、實現KVM虛擬機靜態遷移

(1)環境要求

  • 一臺KVM服務求A:IP地址:192.168.1.7,其中一臺爲web01的KVM虛擬機;
  • 一臺KVM服務器B:IP地址:192.168.1.8;

(2)實現步驟

KVM服務器A的操作:

由於實驗環境,簡單起見,這裏就略過了,有興趣可以自行創建文件或目錄進行測試!

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
//實驗環境,簡單起見關閉防火牆與SElinux
[root@localhost ~]# lsmod | grep kvm          //確認虛擬機支持kvm環境
kvm_intel             174841  0 
kvm                   578518  1 kvm_intel
irqbypass              13503  1 kvm
[root@localhost ~]# virsh list --all     //確認虛擬機存在,而且是關機的狀態
 Id    名稱                         狀態
----------------------------------------------------
 -     web01                          關閉

KVM服務器B的操作:

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
//實驗環境,簡單起見關閉防火牆與SElinux
[root@localhost ~]# lsmod | grep kvm          //確認虛擬機支持kvm環境
kvm_intel             174841  0 
kvm                   578518  1 kvm_intel
irqbypass              13503  1 kvm
[root@localhost ~]# virsh list --all           //確認沒有kvm虛擬機
 Id    名稱                         狀態
----------------------------------------------------
[root@localhost ~]# scp 192.168.1.7:/etc/libvirt/qemu/web01.xml /etc/libvirt/qemu/web01.xml
//複製KVM宿主機A的虛擬機配置文件
[root@localhost ~]# scp 192.168.1.7:/kvm/disk/web01.raw /kvm/disk/web01.raw
//複製KVM宿主機的虛擬機磁盤文件
[root@localhost ~]#  cd /etc/libvirt/qemu/
[root@localhost qemu]# virsh define web01.xml
定義域 web01(從 web01.xml)
//根據配置文件生成虛擬機
[root@localhost qemu]# virsh start web01     //開啓虛擬機進行測試
域 web01 已開始

[root@localhost qemu]# virsh list --all
 Id    名稱                         狀態
----------------------------------------------------
 1     web01                          running
//可以正常開機表示沒有問題,自行進行測試即可!

靜態遷移遷移完成!

靜態遷移其實沒什麼好說的,說白了,跟克隆其實差不多!

三、實現KVM虛擬機動態遷移

(1)環境要求

  • 一臺NFS服務器:IP地址:192.168.1.6;
  • 一臺KVM服務器A:IP地址:192.168.1.7;
  • 一臺KVM服務器B:IP地址:192.168.1.8;

注意:KVM宿主機不需要KVM虛擬機!

(2)實現步驟

NFS服務器的操作:

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
//實驗環境,簡單起見關閉防火牆與SElinux
[root@localhost ~]# yum -y install nfs-utils rpcbind
//安裝NFS所需軟件
[root@localhost ~]# mkdir /kvmshare          //創建共享目錄
[root@localhost ~]# echo "/kvmshare  *(rw,sync,no_root_squash)" >> /etc/exports
//配置共享目錄的權限,共享的用戶
//no_root_squash:使其獲取NFS服務器的root權限
[root@localhost ~]# systemctl start rpcbind           //啓動遠程傳輸控制服務
[root@localhost ~]# systemctl start nfs       //啓動NFS共享服務

兩臺KVM進行驗證:

[root@localhost ~]# showmount -e 192.168.1.6
Export list for 192.168.1.6:
/kvmshare *

KVM服務器A的操作:

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
//實驗環境,簡單起見關閉防火牆與SElinux
[root@localhost ~]# lsmod | grep kvm          //確認虛擬機支持kvm環境
kvm_intel             174841  0 
kvm                   578518  1 kvm_intel
irqbypass              13503  1 kvm
[root@localhost ~]# virsh list --all           //確認沒有kvm虛擬機
 Id    名稱                         狀態
----------------------------------------------------
[root@localhost ~]# virt-manager          //打開圖像化界面管理KVM

首選創建存儲池,如圖:
KVM虛擬平臺——遷移KVM虛擬機
KVM虛擬平臺——遷移KVM虛擬機
KVM虛擬平臺——遷移KVM虛擬機
KVM虛擬平臺——遷移KVM虛擬機
接下來基於存儲池創建存儲卷,如圖:
KVM虛擬平臺——遷移KVM虛擬機
KVM虛擬平臺——遷移KVM虛擬機
接下來創建虛擬機,如圖:
KVM虛擬平臺——遷移KVM虛擬機
KVM虛擬平臺——遷移KVM虛擬機
KVM虛擬平臺——遷移KVM虛擬機
KVM虛擬平臺——遷移KVM虛擬機
KVM虛擬平臺——遷移KVM虛擬機
KVM虛擬平臺——遷移KVM虛擬機
KVM虛擬平臺——遷移KVM虛擬機
接下來根據自己實際情況創建適合的虛擬機!
KVM虛擬平臺——遷移KVM虛擬機
虛擬機重啓完成之後,將其關機,配置其爲橋接網絡,方法如下:

[root@localhost ~]# virsh destroy centos7.0             //實驗環境,就採取強制關機了,但不建議使用
域 centos7.0 被刪除

[root@localhost ~]# systemctl stop NetworkManager       //關閉網絡管理工具
[root@localhost ~]# virsh iface-bridge ens33 br0       //通過ens33生成br0
使用附加設備 br0 生成橋接 ens33 失敗            //提示失敗沒有關係
已啓動橋接接口 br0

[root@localhost ~]# virsh edit centos7.0      //使用“edit”命令編輯虛擬機的配置文件
定位到interface,修改一下內容:
    <interface type='bridge'>          修改爲bridge
      <mac address='52:54:00:ef:a3:93'/>
      <source bridge='br0'/>     修改爲 bridge='br0'
[root@localhost ~]# virsh start centos7.0         //啓動centos7虛擬機

KVM虛擬平臺——遷移KVM虛擬機
KVM虛擬平臺——遷移KVM虛擬機
KVM虛擬平臺——遷移KVM虛擬機

KVM服務器B的操作:

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
//實驗環境,簡單起見關閉防火牆與SElinux
[root@localhost ~]# lsmod | grep kvm          //確認虛擬機支持kvm環境
kvm_intel             174841  0 
kvm                   578518  1 kvm_intel
irqbypass              13503  1 kvm
[root@localhost ~]# virsh list --all           //確認沒有kvm虛擬機
 Id    名稱                         狀態
----------------------------------------------------
[root@localhost ~]# virt-manager          //打開圖像化界面管理KVM

創建存儲池,跟KVM服務器A的操作一模一樣,如圖:
KVM虛擬平臺——遷移KVM虛擬機
KVM虛擬平臺——遷移KVM虛擬機
KVM虛擬平臺——遷移KVM虛擬機
KVM虛擬平臺——遷移KVM虛擬機
KVM虛擬平臺——遷移KVM虛擬機
生成橋接網卡br0,便於一會進行熱遷移操作,操作如下:

[root@localhost ~]# systemctl stop NetworkManager
[root@localhost ~]#  virsh iface-bridge ens33 br0 
使用附加設備 br0 生成橋接 ens33 失敗
已啓動橋接接口 br0
//因爲本地現在並沒有虛擬機,所以只需生成橋接網卡即可!
[root@localhost ~]# hostname kvmB
[root@localhost ~]# su -
上一次登錄:三 12月  4 20:05:59 CST 2019從 192.168.1.253pts/1 上
[root@kvmB ~]#                        //修改主機名,否則一會可能會出現錯誤

KVM服務器A進行以下操作:
KVM虛擬平臺——遷移KVM虛擬機
KVM虛擬平臺——遷移KVM虛擬機
如果出現以下錯誤,如圖:
KVM虛擬平臺——遷移KVM虛擬機
那是因爲沒有安裝使用SSH協議連接所需的詢問密碼的軟件包!

接下來的操作需要在兩臺KVM都進行操作:

[root@localhost ~]# yum -y install openssh-askpass
[root@kvmB ~]#  yum -y install openssh-askpass 
//安裝詢問密碼的依賴包,注意兩臺KVM服務器都需安裝

安裝完成之後,在KVM服務器A上再次進行連接:
KVM虛擬平臺——遷移KVM虛擬機
KVM虛擬平臺——遷移KVM虛擬機
打開KVM虛擬機,使其一直訪問百度,如圖:
KVM虛擬平臺——遷移KVM虛擬機
接下來進行熱遷移操作,如圖:
KVM虛擬平臺——遷移KVM虛擬機
KVM虛擬平臺——遷移KVM虛擬機
KVM虛擬平臺——遷移KVM虛擬機
查看KVM虛擬機的訪問是否存在終端現象,如圖:
KVM虛擬平臺——遷移KVM虛擬機
根據顯示結果,發現訪問並沒有中斷,至此,動態遷移成功!

———————— 本文至此結束,感謝閱讀 ————————

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章