1. 程式人生 > >Virsh 虛擬機器遷移

Virsh 虛擬機器遷移

簡介

虛擬機器遷移主要分為兩種:靜態遷移和動態遷移

  • 靜態遷移是指在虛擬機器關閉或暫停的情況下,將源宿主機上虛擬機器的磁碟檔案和配置檔案拷貝到目標宿主機上。這種方式需要顯式的停止虛擬機器執行,對服務可用性要求高的需求不合適。
  • 動態遷移無需拷貝虛擬機器配置檔案和磁碟檔案,但是需要遷移的主機之間有相同的目錄結構放置虛擬機器磁碟檔案,可以通過多種方式實現,本例採用基於共享儲存動態遷移,通過NFS來實現。

操作環境

伺服器作業系統:Ubuntu14.04版本。

源宿主機為節點1:主機名xjy-pc,橋接IP為192.168.10.221,NFS掛載目錄/home/kvm。

目標宿主機為節點2

:主機名為lib,橋接IP為192.168.10.215,NFS掛載目錄/home/kvm。

靜態遷移測試虛擬機器:demo,IP為192.168.10.210,虛擬磁碟檔案為ubuntu.raw。

動態遷移測試虛擬機器:demo3,IP為192.168.10.210,虛擬磁碟檔案為ubuntu.raw。

NFS伺服器:作業系統版本:Ubuntu14.04,橋接IP為192.168.10.161,服務目錄為/mnt/vg/。

遷移步驟:

虛擬機器靜態遷移: 靜態遷移也叫做常規遷移、離線遷移(Offline Migration)。是在虛擬機器關機或暫停的情況下,拷貝虛擬機器磁碟檔案與配置檔案到目標虛擬主機中,實現的從一臺物理機到另一臺物理機的遷移。因為虛擬機器的檔案系統建立在虛擬機器映象檔案上面,所以在虛擬機器關機的情況下,只需要簡單的遷移虛擬機器映象和相應的配置檔案到另外一臺物理主機上即可。如果需要儲存虛擬機器遷移之前的狀態,那麼應該在遷移之前將虛擬機器暫停,然後拷貝狀態至目的主機,最後在目的主機重建虛擬機器狀態,恢復執行。這種方式的遷移過程需要顯式的停止虛擬機器的執行。從使用者角度看,有明確的一段停機時間,虛擬機器上的服務不可用。這種遷移方式簡單易行,適用於對服務可用性要求不嚴格的場合。

1、首先在節點1上進行操作,首先確定demo虛擬機器的狀態為關閉

這裡寫圖片描述

2、準備遷移demo虛擬機器,使用命令virsh domblklist demo 檢視demo虛擬機器的磁碟檔案

這裡寫圖片描述

3、匯出虛擬機器配置檔案

這裡寫圖片描述

4、拷貝配置檔案到目標宿主機上,目標宿主機的IP地址為192.168.10.215

這裡寫圖片描述

5、將虛擬機器磁碟檔案也拷貝到目標宿主及上,虛擬機器demo的磁碟檔案為ubuntu.raw

這裡寫圖片描述

6、此時,已經將原宿主機節點1上的demo虛擬機器的磁碟檔案和配置檔案豆腐知道目標宿主機節點2上,下面開始在目標宿主機節點2上進行虛擬機器的配置和啟動

7、在目標宿主機借點2上操作,首先檢視節點2環境,如下圖,demo虛擬機器的配置檔案已經拷貝過來

這裡寫圖片描述

8、檢視虛擬機器磁碟檔案,如下圖,ubuntu.raw磁碟檔案已經拷貝過來,目錄結構與原宿主機一致

這裡寫圖片描述

9、使用virsh的子命令define定義並註冊demo虛擬機器

這裡寫圖片描述

10、啟動遷移後的demo虛擬機器,通過virsh console demo 登入到遷移後的虛擬機器進行確定

這裡寫圖片描述

動態遷移

1、KVM虛擬機器動態遷移無需拷貝虛擬機器配置檔案和磁碟檔案,但是需要遷移的主機之間有相同的目錄結構放置虛擬機器磁碟檔案(本例為“/home/kvm”目錄),這裡的動態遷移是基於共享儲存動態遷移,通過NFS來實現,需要qemu-kvm-0.12.2以上版本支援。

2、在NFS伺服器上,下載安裝NFS,kernel-server相當於server端,common是client端,使用命令“sudo apt-get install nfs-kernel-server nfs-common portmap”安裝NFS。

在節點1和節點2中 使用 sudo apt-get install nfs-common 安裝client端

3、配置NFS伺服器,IP為192.168.10.161,將NFS伺服器上的“/mnt/vg”目錄設為服務目錄。首先使用命令“sudo mkdir /mnt/vg”建立該目錄,然後使用命令“sudo chmod 777 /mnt/vg”修改該目錄許可權,接下來使用vim修改“/etc/exports”檔案新增共享目錄,在該檔案中新增

/mnt/vg *(rw,sync)

即可。*(rw,sync)是命令引數,表示包括讀寫許可權。

4、“/etc/exports”檔案修改後,使用命令“sudo exportfs –r”重新整理。然後啟動NFS服務,命令如下:

sudo /etc/init.d/rpcbind start
sudo /etc/init.d/nfs-kernel-server restart

5、NFS服務啟動後,在節點1上使用命令“showmount –e 192.168.10.161”檢視共享目錄

這裡寫圖片描述

6、在節點1或節點2上使用命令“scp ubuntu.raw 192.168.10.161:/mnt/vg”,將demo3虛擬機器的虛擬磁碟檔案ubuntu.raw。拷貝到NFS服務的共享目錄

這裡需要在nfs伺服器允許ssh連線,以及對/mnt/vg 開啟讀寫許可權

編輯sshd_config檔案,輸入:vim /etc/ssh/sshd_config

進行相應設定,替換為如下:

# Authentication:
LoginGraceTime 120
#PermitRootLogin without-password
PermitRootLogin yes
StrictModes yes

接下來,重啟ssh服務,輸入: /etc/init.d/ssh restart

開啟檔案許可權:

shmod 777 /mnt/vg/

7、在節點1和節點2的“/home/kvm”目錄上,分別使用命令“mount -t nfs 192.168.10.161:/mnt/vg /home/kvm -o rw”進行掛載

這裡寫圖片描述

8、掛載完成後兩節點都有相同的虛擬機器磁碟檔案儲存目錄,下圖為節點1掛載後的“/home/kvm”目錄結構

這裡寫圖片描述

9、檢視節點1上虛擬機器狀態,demo3虛擬機器處於執行狀態,(如果demo3未執行將其啟動執行)

這裡寫圖片描述

10、檢視節點2上虛擬機器狀態,無虛擬機器執行

這裡寫圖片描述

11、在節點1上執行“virsh migrate”遷移命令,從下圖可以看出虛擬機器demo3在遷移出去的過程中,狀態有從“running”到“shut off”的一個改變。

完整命令為“virsh migrate --live --verbose demo3 qemu+ssh://192.168.10.215/system tcp://192.168.10. 215 --unsafe

–verbose 指遷移demo3虛擬機器,192.168.10.215為節點2的IP地址,使用tcp協議連線
–unsafe引數表示跳過安全檢測

程式碼執行如圖所示:

這裡寫圖片描述

12、在節點2上,檢視虛擬機器demo3虛擬機器狀態

這裡寫圖片描述

13、在遷移過程中,可以通過另外一臺客戶機一直ping虛擬機器demo3,檢視demo3前一過程中的可連線性,實際上遷移過程中偶爾有幾個包的中斷,基本上沒有太大的影響

14、此時雖然demo3虛擬機器已經在節點2上啟動了,但是節點2上還沒有demo3虛擬機器的配置檔案。這時需要建立配置檔案並定義該虛擬機器,可以通過遷移過來的虛擬機器記憶體狀態建立虛擬機器配置檔案
命令為“virsh dumpxml demo3 > /etc/libvirt/qemu/demo3.xml

然後通過xml配置檔案定義虛擬機器,命令為“virsh define /etc/libvirt/qemu/demo3.xml”。

這裡寫圖片描述

15、使用命令“virsh console demo3”連線節點2上的demo3虛擬機器

這裡寫圖片描述