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

kvm虛擬機器遷移

實驗原理

靜態遷移是指在虛擬機器關閉或暫停的情況下,將源宿主機上虛擬機器的磁碟檔案和配置檔案拷貝到目標宿主機上。這種方式需要顯式的停止虛擬機器執行,對服務可用性要求高的需求不合適。

動態遷移無需拷貝虛擬機器配置檔案和磁碟檔案,但是需要遷移的主機之間有相同的目錄結構放置虛擬機器磁碟檔案,可以通過多種方式實現,本例採用基於共享儲存動態遷移,通過NFS來實現。

實驗環境:

本機IP:192.168.1.94

目標機IP:192.168.1.87

NFS伺服器(Windows端):192.168.1.97

進行虛擬機器的動態遷移的時候,我採用給的是Windows的nfs共享儲存來進行虛擬機器的遷移,而且限制於硬體的資源有限,我的目標主機是我Windows安裝在VMware的虛擬機器看,但是不影響使用,在進行動態遷移的時候,一定呀保證,目標主機和本地主機的相同的目錄結構,從而來存放客戶機的資源。而且還將客戶機用於儲存的映象檔案放到nfs共享儲存上面。

靜態遷移:

1,首先檢視本機虛擬機器demo-2的狀態為關機狀態其次將虛擬機器的配置檔案demo-2.xml拷貝到root資料夾下面,或者直接生成demo-2.xml檔案的命令為:

Virsh dumpxml demo-2 >/root/demo-2.xml



2,檢視虛擬機器的磁碟檔案,命令為:

virsh domblklist demo-2


3,將虛擬機器磁碟檔案和配置檔案都拷貝到另一臺Ubuntu中.

4,以下的操作就在目標主機上進行了,我為了方便起見,我就直接ssh連線到目的主機直接進行操作,如下圖,並檢視已經複製過來的虛擬機器檔案。

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


此時出現了setlocale: No such file or directory錯誤,解決方法如下

網上普遍的解決方法都是:修改/etc/default/locale,增加:LC_ALL="C"

確實能解決這個問題,但是似乎我有一臺不出錯的伺服器上,並沒有設定LC_ALL。強制設定LC_ALL有點粗暴,一定有更好的解決方法。

研究了一下,最佳方法是,修改/var/lib/locales/supported.d/local,追加一行:zh_CN.UTF-8 UTF-8

然後:sudo locale-gen          sudo dpkg-reconfigure locales就完美解決了

6,在進行啟動遷移過來的虛擬機器emo-2時候出現一下問題

經過百度後發現是qemu的許可權不夠,然後進行一下修改即可

Vim :/etc/libvirt/qemu.conf

# Some examples of validvalues are:

# user = "qemu" # Auser named "qemu"

# user = "+0" #Super user (uid=0)

# user = "100" # Auser named "100" or a user with uid=100

user = "root"

# The group for QEMU processesrun by the system instance. It can be

# specified in a similar wayto user.

group = "root"

# Whether libvirt shoulddynamically change file ownership

# to match the configureduser/group above. Defaults to 1.

# Set to 0 to disable fileownership changes.

dynamic_ownership = 1

/etc/init.d/libvirt-bin restart 即可

7,使用命令進行虛擬機器的啟動如下圖,所以虛擬機器的靜態遷移算是成功了。

虛擬機器動態遷移:

1,我在Windows端下載了一個NFS伺服器,用這個伺服器用來共享虛擬機器的磁碟檔案,輸出路徑如下(NFS搭載我的以下部落格裡面有)


在目標主機中也進行相同的掛載,而且目錄保持一致。

2,然後在本機中開啟虛擬機器,並執行遷移命令


3,在目的主機上檢視虛擬機器遷移的情況

4,將已經遷移成功的虛擬機器的記憶體狀態進行儲存至XML檔案中

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

6,現在虛擬機器的動態遷移完成。