動態遷移(Live Migration):也叫在線遷移(Online Migration)。就是在保證虛擬機上服務正常運行的同時,將一個虛擬機系統從一個物理主機移動到另外一個物理主機的過程。與靜態遷移不一樣的是,爲了保證遷移過程當中虛擬機服務的可用,遷移過程僅有很是短暫的停機時間。node
目前主流的動態遷移工具,他們都依賴於物理機之間採用 SAN(storage area network)或 NAS(network-attached storage)之類的集中式共享外存設備,於是在遷移時只須要進行虛擬機系統內存執行狀態的遷移,從而得到較好的遷移性能。shell
三臺dell R710,兩臺作宿主機上面安裝kvm虛擬機,一臺經過iscsi模擬共享存儲,主要實驗kvm的vm動態遷移過程,兩臺宿主機還繼續使用上一節靜態遷移的環境,不過須要安裝iscsi客戶端,在存儲上面安裝iscsi服務端。ssh
三臺機器的名稱分別是:Ubuntu-src、Ubuntu-dst、Ubuntu-store工具
安裝iscsi軟件:性能
在Ubuntu-src和Ubuntu-dst上安裝客戶端ui
apt-get install open-iscsi
在Ubuntu-store上安裝服務端
apt-get install iscsitarget iscsitarget-source iscsitarget-dkms
apt-get install module-assistant debhelper build-essential在安裝完服務端後,默認服務是不啓動的,要修改配置文件/etc/default/iscsitarget
ISCSITARGET_ENABLE=false --> ISCSITARGET_ENABLE=truespa
啓動iscsitarget:code
使用Ubuntu-store上的/dev/sda6做爲共享存儲,修改/etc/iet/ietd.conf文件,在文件末尾追加如下配置:內存
Target iqn.2012-10.com.guol:storage.lun1 Lun 0 Path=/dev/sda6,Type=fileio
在Ubuntu-src上獲取共享存儲的資源資源
鏈接到服務端,查看提供了那些共享存儲資源:
iscsiadm -m discovery -t st -p 10.1.6.89
掛載服務端提供的共享存儲資源:
iscsiadm -m node iscsiadm -m node -T iqn.2012-10.com.guol:storage.lun1 -p 10.1.6.89:3260 -l
在共享存儲上劃分分區:
能夠看到共享存儲資源被識別爲/dev/sdb設備,劃分整個/dev/sda爲/dev/sdb1分區,並在上面建立卷:
pvcreate /dev/sdb1 vgcreate store /dev/sdb1 lvcreate -L 5G -n kvm-mig store
在Ubuntu-src上使用virt-install把虛擬機安裝到kvm-mig卷中:
virt-install -d -n kvm-mig -r 2048 --disk path=/dev/store/kvm-mig,bus=virtio,cache=none --network bridge=br0,model=virtio --vnc --cdrom=/opt/debian-6.0.2.1-amd64-CD-1.iso
安裝完畢後,啓動虛擬機,並登陸查看,以下圖:
在Ubuntu-dst上獲取共享存儲的資源
iscsiadm -m discovery -t st -p 10.1.6.89 iscsiadm -m node iscsiadm -m node -T iqn.2012-10.com.guol:storage.lun1 -p 10.1.6.89:3260 -l
以下圖:
使用fdisk -l就能夠看到在Ubuntu-src上劃分的/edv/sdb1及相關的lvm卷
下面開始把kvm-mig從Ubuntu-src動態遷移到Ubuntu-dst上:
先查看虛擬機在Ubuntu-src和Ubuntu-dst上的狀態
virsh list
能夠看到kvm-mig運行在Ubuntu-src上,而Ubuntu-dst上並無運行虛擬機。
下面把Ubuntu-src上的kvm-mig動態的遷移到Ubuntu-dst上面。
在Ubuntu-src上執行以下命令,提早在Ubuntu-src和Ubuntu-dst以前使用ssh key登陸,並確保域名解析正確,能夠設置/etc/hosts。
virsh migrate --live kvm-mig qemu+ssh://10.1.6.228/system
大概等待1~2分鐘,遷移消耗的時間依賴於虛擬機使用的內存,由於動態遷移只是把在源中的內存拷貝一份到目的機器上面,結果以下對比圖:
能夠看到剛開始kvm-mig運行在Ubuntu-src上面,幾分鐘後,kvm-mig就移動到Ubuntu-dst上面了,不過剛開始處於停止狀態,幾秒鐘後會變爲運行狀態。
在Ubuntu-dst上面登陸kvm-mig虛擬機:
有個問題,使用virsh遷移只是把內存拷貝一份到目的機器上面,其啓動配置文件並無拷貝到目的主機,因此如關閉了虛擬機之後,是不能在目的機器上再次啓動它的,爲了能夠在目的機器上啓動遷移過來的虛擬機,能夠把源主機上/etc/libvirt/qemu目錄下的相關虛擬機配置文件也拷貝到目的機器上面。
能夠看到中間的中斷時間是很短的,能夠看到基於共享存儲的虛擬機遷移是比較方便的且不宜影響客戶的使用,不過存貯的價格你懂的,在通常的小公司不必定願意投入,因此下面一篇文章纔是我實驗vm動態遷移的目的。