主頁 > 知識庫 > KVM虛擬機實現(xiàn)在線熱遷移的方法步驟(圖文)

KVM虛擬機實現(xiàn)在線熱遷移的方法步驟(圖文)

熱門標簽:北海市地圖標注app 江西外呼系統(tǒng) 湖北ai智能電銷機器人 外呼系統(tǒng)打哪顯哪 高德地圖標注論壇 AI電銷機器人 源碼 蘭州ai電銷機器人招商 新邵電銷機器人企業(yè) 新科美甲店地圖標注

一、KVM虛擬機的遷移方式及需要注意的問題

KVM虛擬機的遷移有兩種方法:
1、靜態(tài)遷移(冷遷移):對于冷遷移,就是在虛擬機關(guān)閉狀態(tài)下,將虛擬機的磁盤文件及.xml配置文件(這兩個文件組成了一個虛擬機)復制到要遷移到的目標主機上,然后在目標主機上使用“virsh define *.xml”命令重新定義虛擬機即可。
2、動態(tài)遷移(熱遷移):對于熱遷移,比較常用,通常是這臺服務(wù)器上正在跑著一些業(yè)務(wù),而這些業(yè)務(wù)又不允許中斷,那么就需要使用熱遷移了,這篇博文將詳細寫出熱遷移的步驟。

1、冷遷移

通常我們存放虛擬機磁盤的目錄都是掛在的一個nfs文件系統(tǒng)的磁盤,而這個磁盤通常是LVM文件系統(tǒng)。所以需要進行冷遷移時,只要在目標主機上掛載這個nfs文件系統(tǒng),就可以看到要遷移的那個虛擬機的磁盤文件,通常以.qcow2或.raw結(jié)尾的,然后,只需將虛擬機的.xml配置文件發(fā)送到目標服務(wù)器上,然后重新定義一下即可通過“virsh list --all”命令查看到遷移過來的虛擬機。

2、熱遷移

如果源宿主機和目的宿主機共享存儲系統(tǒng),則只需要通過網(wǎng)絡(luò)發(fā)送客戶機的 vCPU 執(zhí)行狀
態(tài)、內(nèi)存中的內(nèi)容、虛機設(shè)備的狀態(tài)到目的主機上。否則,還需要將客戶機的磁盤存儲發(fā)到目的主
機上。共享存儲系統(tǒng)指的是源和目的虛機的鏡像文件目錄是在一個共享的存儲上的。

在基于 共享存儲系統(tǒng) 時,KVM 動態(tài)遷移的具體過程為:

1、遷移開始時,客戶機依然在宿主機上運行,與此同時,客戶機的內(nèi)存頁被傳輸?shù)侥康闹鳈C上。
2、QEMU/KVM 會監(jiān)控并記錄下遷移過程中所有已被傳輸?shù)膬?nèi)頁的任何修改,并在所有內(nèi)存頁都傳輸完成后即開始傳輸在前面過程中內(nèi)存頁的更改內(nèi)容。
3、QEMU/KVM 會估計遷移過程中的傳輸速度,當剩余的內(nèi)存數(shù)據(jù)量能夠在一個可以設(shè)定的時間周期(默認 30 毫秒)內(nèi)傳輸完成時,QEMU/KVM 會關(guān)閉源宿主機上的客戶機,再將剩余的數(shù)據(jù)量傳輸?shù)侥康闹鳈C上,最后傳輸過來的內(nèi)存內(nèi)容在目的宿主機上恢復客戶機的運行狀態(tài)。
4、至此,KVM 的動態(tài)遷移操作就完成了。遷移后的客戶機盡可能與遷移前一致,除非目的主機上缺少一些配置,比如網(wǎng)橋等。注意,當客戶機中內(nèi)存使用率非常大而且修改頻繁時,內(nèi)存中數(shù)據(jù)不斷被修改的速度大于KVM能夠傳輸?shù)膬?nèi)存速度時,動態(tài)遷移的過程是完成不了的,這時候只能靜態(tài)遷移。

3、遷移的注意事項

無論是冷遷移還是熱遷移,注意事項大都差不多。

遷移前目標服務(wù)器的要求如下:

  • 最好遷移的服務(wù)器cpu品牌一樣;
  • 64位只能在64位宿主機間遷移,32位可以遷移32位和64位宿主機;
  • 宿主機中的虛擬機名字不能沖突;
  • 目的宿主機和源宿主機軟件配置盡可能的相同,如 有相同的橋接網(wǎng)卡,資源池等;
  • 兩臺遷移的主機 cat /proc/cpuinfo |grep nx 的設(shè)置是相同的NX,全名為“No eXecute”,即“禁止運行”,是應(yīng)用在CPU的一種技術(shù),用作把存儲器區(qū)域分隔為只供存儲處理器指令集,或只供數(shù)據(jù)使用。任何使用NX技術(shù)的存儲器,代表僅供數(shù)據(jù)使用,因此處理器的指令集并不能在這些區(qū)域存儲。這種技術(shù)可防止大多數(shù)的緩沖溢出,即一些惡意程序,把自身的惡意指令集放在其他程序的數(shù)據(jù)存儲區(qū)并運行,從而把整臺計算機控制。

小結(jié):

1、靜態(tài)遷移

  • 拷貝鏡像文件和虛擬機配置文件;
  • 重新定義此虛擬機。
2、動態(tài)遷移
  • 創(chuàng)建共享存儲;
  • 兩臺機器掛載共享存儲(手工掛載;使用資源池);
  • 啟動動態(tài)遷移;
  • 創(chuàng)建遷移后的虛擬機配置文件;
  • 重新定義虛擬機。

二、kvm虛擬機熱遷移配置實例

1、環(huán)境準備:

我這里的環(huán)境如下:

三臺Linux服務(wù)器,其中兩臺是KVM服務(wù)器,IP是192.168.20.2和192.168.20.3。一臺是NFS服務(wù)器,IP是192.168.20.4,用來做共享存儲(要求三臺服務(wù)器可互相ping通);
兩臺KVM虛擬機必須都有KVM環(huán)境。

我這的KVM環(huán)境是現(xiàn)成的,這里就不展示了,如果沒有KVM環(huán)境,可以參考博文:KVM虛擬化基礎(chǔ)管理進行搭建(很簡單,yum安裝一些包,啟動“l(fā)ibvirtd”服務(wù)即可,可能需要重啟服務(wù)器)。

2、配置NFS共享存儲

nfs服務(wù)器192.168.20.4配置如下:

[root@nfs ~]# yum -y install nfs-utils rpcbind         #安裝所需軟件包
[root@localhost ~]# systemctl enable nfs                #設(shè)置NFS開機自啟
[root@localhost ~]# systemctl enable rpcbind            #設(shè)置rpcbind開機自啟
[root@nfs ~]# mkdir -p /nfsshare         #創(chuàng)建需要共享的目錄
[root@nfs ~]# vim /etc/exports    #編輯NFS的配置文件,默認為空
/nfsshare    *(rw,sync,no_root_squash)
#第一列代表共享的目錄
#第二列的星號代表允許所有網(wǎng)絡(luò)訪問;
#rw代表讀寫權(quán)限;sync代表同步寫入磁盤;
#no_root_squash表示當前客戶機以root身份訪問時賦予本地root權(quán)限
#(默認是root_squash,將作為nfsnobody用戶對待),若不加no_root_squash,
#可能會導致被降權(quán),而無法進行讀寫(wr)。
[root@nfs ~]# systemctl restart rpcbind   #啟動該服務(wù)
[root@nfs ~]# systemctl restart nfs   #啟動該服務(wù)
[root@nfs ~]# netstat -anpt | grep rpc   #確認服務(wù)已啟動
[root@nfs ~]# showmount -e     #查看本機共享的目錄
Export list for nfs:
/nfsshare *
[root@nfs ~]# firewall-cmd --add-service=rpc-bind --permanent 
[root@nfs ~]# firewall-cmd --add-service=nfs --permanent 
[root@nfs ~]# firewall-cmd --add-service=mountd --permanent 
[root@nfs ~]# systemctl restart firewalld   #重啟防火墻,使配置生效

NFS服務(wù)器至此配置完成!??!

我這里的遷移操作依賴于桌面圖形化環(huán)境,若需要使用命令遷移,可以下載這個文檔進行參考,我沒有研究過使用命令遷移。

兩臺KVM服務(wù)器配置如下(兩臺kvm主機都需要進行下面的配置):

1.安裝rpcbind軟件包,并啟動rpcbind服務(wù),為了使用showmount查詢工具,所以將nfs-utils也一起裝上:

[root@localhost ~]# yum -y install nfs-utils rpcbind 
[root@localhost ~]# systemctl enable rpcbind
[root@localhost ~]# systemctl start rpcbind
[root@kvm ~]# showmount -e 192.168.20.4  #查詢nfs服務(wù)器共享的目錄
Export list for 192.168.20.4:
/nfsshare *
[root@kvm ~]# mount -t nfs 192.168.20.4:/nfsshare /kvm/disk/  #進行掛載
[root@kvm ~]# df -hT /kvm/disk/
文件系統(tǒng)        類型 容量 已用 可用 已用% 掛載點
192.168.20.4:/nfsshare nfs4  50G  33M  50G  1% /kvm/disk
#在其中一臺服務(wù)器上寫入一個測試文件,看看在其他服務(wù)器上是否可以看到
[root@kvm1 ~]# touch /kvm/disk/test    #在其中一個kvm服務(wù)器上創(chuàng)建測試文件
[root@kvm2 ~]# ls /kvm/disk     #保證在第二臺kvm服務(wù)器的目錄下也可以看到
test

至此,就保證了兩臺kvm服務(wù)器使用的目錄都是同一塊磁盤存儲的(注意:兩臺kvm虛擬機的掛載nfs文件系統(tǒng)的目錄路徑必須一致,我這里兩臺kvm虛擬機都是掛載到了/kvm/disk/目錄下,否則會在后面的操作中發(fā)生錯誤)。

3、在兩個kvm服務(wù)器上分別創(chuàng)建存儲卷:

[root@kvm1 ~]# virt-manager     #打開虛擬機控制臺


下面對話框中,目標路徑是KVM本機的“/kvm/disk”,主機名寫的是nfs服務(wù)器的IP地址,源路徑是nfs服務(wù)器共享的目錄。

以上操作同樣需要在第二臺KVM上進行操作,最好定義的存儲池名字等都一致。以免發(fā)生不必要的麻煩。

3、在kvm1上新建一個虛擬機以便進行遷移測試



自行上傳一個centos的iso系統(tǒng)文件,這里需要指定要安裝的iso文件:


至此,正常的自行安裝虛擬機即可。

4、將新建的虛擬機網(wǎng)絡(luò)配置為Bridge模式,可以ping通外網(wǎng)

以下操作主要是為了模擬虛擬機為公網(wǎng)用戶提供服務(wù)中進行熱遷移。

1)kvm1操作如下:

[root@kvm ~]# systemctl stop NetworkManager  #停止此服務(wù)
[root@kvm ~]# virsh iface-bridge ens33 br0  #執(zhí)行此命令時,若提示以下信息,不用在意,因為其已經(jīng)存在了
使用附加設(shè)備 br0 生成橋接 ens33 失敗
已啟動橋接接口 br0
[root@kvm ~]# ls /etc/sysconfig/network-scripts/ | grep br0  
ifcfg-br0    #確定有此文件就行
[root@kvm ~]# virsh destroy centos7.0   #關(guān)閉新建的虛擬機
域 centos7.0 被刪除
[root@kvm ~]# virsh edit centos7.0   #編輯虛擬機的配置文件,定位到interface
<interface type='bridge'>   #將此處改為bridge
 <mac address='52:54:00:a9:cc:5f'/>   #刪除Mac地址這行
   <source bridge='br0'/>     #將此處更改為這樣
#保存退出即可
[root@kvm1 ~]# virsh start centos7.0 
域 centos7.0 已開始

開啟虛擬機后,配置虛擬機的網(wǎng)卡配置文件,默認網(wǎng)卡文件為ifcfg-eth0:


重啟網(wǎng)絡(luò)服務(wù),并且確認IP地址:

現(xiàn)在可以在虛擬機上執(zhí)行“ping www.baidu.com” 命令,使其持續(xù)ping公網(wǎng)。


2)kvm2操作如下:

[root@kvm ~]# systemctl stop NetworkManager  #停止此服務(wù)
[root@kvm ~]# virsh iface-bridge ens33 br0  #執(zhí)行此命令時,若提示以下信息,不用在意,因為其已經(jīng)存在了
使用附加設(shè)備 br0 生成橋接 ens33 失敗
已啟動橋接接口 br0
[root@kvm ~]# ls /etc/sysconfig/network-scripts/ | grep br0  
ifcfg-br0    #確定有此文件就行
#由于kvm2沒有虛擬機,所以只需將網(wǎng)絡(luò)更改為橋接模式即可,。
#以上配置是為了防止虛擬機遷移到這臺服務(wù)器后,無法和公網(wǎng)進行聯(lián)系。

5、開始準備對新建的centos 7進行熱遷移

1)kvm1服務(wù)器上進行以下操作:

[root@kvm1 ~]# virt-manager     #打開虛擬機控制臺

填寫如下,填寫完成后,單擊“連接”:

會提示需要安裝以下軟件包:

進行安裝:

[root@kvm1 ~]# yum -y install openssh-askpass

根據(jù)彈出的對話框提示,輸入“yes”:

輸入目標主機的root密碼:

6、開始進行熱遷移

等待遷移完成,這個過程很快:

遷移完成:

現(xiàn)在去目標kvm服務(wù)器上,打開新遷移過去的虛擬機(會發(fā)現(xiàn)ping命令還在繼續(xù),壓根就沒有中斷過):

可以自行使用“virsh list --all”分別在兩臺kvm服務(wù)器上進行確認,這個虛擬機是否真的遷移到第二臺kvm服務(wù)器上了。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

標簽:黔東 阿克蘇 黃石 自貢 南陽 池州 海南 大理

巨人網(wǎng)絡(luò)通訊聲明:本文標題《KVM虛擬機實現(xiàn)在線熱遷移的方法步驟(圖文)》,本文關(guān)鍵詞  KVM,虛擬機,實現(xiàn),在線,熱,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《KVM虛擬機實現(xiàn)在線熱遷移的方法步驟(圖文)》相關(guān)的同類信息!
  • 本頁收集關(guān)于KVM虛擬機實現(xiàn)在線熱遷移的方法步驟(圖文)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章