動態遷移(Live Migration):也叫線上遷移(Online Migration)。就是在保證虛擬機器上服務正常啟動並執行同時,將一個虛擬機器系統從一個物理主機移動到另一個物理主機的過程。與靜態遷移不同的是,為了保證遷移過程中虛擬機器服務的可用,遷移過程僅有非常短暫的停機時間。
www.2cto.com 目前主流的動態遷移工具,他們都依賴於物理機之間採用 SAN(storage area network)或 NAS(network-attached storage)之類的集中式共用外存裝置,因而在遷移時只需要進行虛擬機器系統記憶體執行狀態的遷移,從而獲得較好的遷移效能。
www.2cto.com 三台dell R710,兩台做宿主機上面安裝kvm虛擬機器,一台通過iscsi類比共用儲存,主要實驗kvm的vm動態遷移過程,兩台宿主機還繼續使用上一節靜態遷移的環境,不過需要安裝iscsi用戶端,在儲存上面安裝iscsi服務端。 三台機器的名稱分別是:Ubuntu-src、Ubuntu-dst、Ubuntu-store
安裝iscsi軟體:在Ubuntu-src和Ubuntu-dst上安裝用戶端1apt-get install open-iscsi 在Ubuntu-store上安裝服務端 1apt-get install iscsitarget <span style="background-color:#ffffff;">iscsitarget-sourceiscsitarget-dkms </span>1apt-get install module-assistant debhelper build-essential 在安裝完服務端後,預設服務是不啟動的,要修改設定檔/etc/default/iscsitarget ISCSITARGET_ENABLE=false --> ISCSITARGET_ENABLE=true啟動iscsitarget:使用Ubuntu-store上的/dev/sda6作為共用儲存,修改/etc/iet/ietd.conf檔案,在檔案末尾追加以下配置:
1Target iqn.2012-10.com.guol:storage.lun12Lun 0 Path=/dev/sda6,Type=fileio 在Ubuntu-src上擷取共用儲存的資源串連到服務端,查看提供了那些共用儲存資源:1iscsiadm -m discovery -t st -p 10.1.6.89 掛載服務端提供的共用儲存資源:1iscsiadm -m node2iscsiadm -m node -T iqn.2012-10.com.guol:storage.lun1 -p 10.1.6.89:3260 -l 在共用儲存上劃分分區:可以看到共用儲存資源被識別為/dev/sdb裝置,劃分整個/dev/sda為/dev/sdb1分區,並在上面建立卷:www.2cto.com1pvcreate /dev/sdb12vgcreate store /dev/sdb13lvcreate -L 5G -n kvm-mig store 在Ubuntu-src上使用virt-install把虛擬機器安裝到kvm-mig卷中: www.2cto.com1virt-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上擷取共用儲存的資源1iscsiadm -m discovery -t st -p 10.1.6.892iscsiadm -m node3iscsiadm -m node -T iqn.2012-10.com.guol:storage.lun1 -p 10.1.6.89:3260 -lwww.2cto.com如:
使用fdisk -l就可以看到在Ubuntu-src上劃分的/edv/sdb1及相關的lvm卷 下面開始把kvm-mig從Ubuntu-src動態遷移到Ubuntu-dst上:先查看虛擬機器在Ubuntu-src和Ubuntu-dst上的狀態1virsh list
可以看到kvm-mig運行在Ubuntu-src上,而Ubuntu-dst上並沒有運行虛擬機器。下面把Ubuntu-src上的kvm-mig動態遷移到Ubuntu-dst上面。在Ubuntu-src上執行如下命令,提前在Ubuntu-src和Ubuntu-dst之前使用ssh key登入,並確保網域名稱解析正確,可以設定/etc/hosts。1virsh migrate --live kvm-mig qemu+ssh://10.1.6.228/system 大概等待1~2分鐘,遷移消耗的時間依賴於虛擬機器使用的記憶體,因為動態遷移只是把在源中的記憶體拷貝一份到目的機器上面,結果如下對比圖:
可以看到剛開始kvm-mig運行在Ubuntu-src上面,幾分鐘後,kvm-mig就移動到Ubuntu-dst上面了,
不過剛開始處於中止狀態,幾秒鐘後會變為運行狀態。 www.2cto.com在Ubuntu-dst上面登入kvm-mig虛擬機器: 有個問題,使用virsh遷移只是把記憶體拷貝一份到目的機器上面,其啟動設定檔並沒有拷貝到目的主機,所以如關閉了虛擬機器以後,是不能在目的機器上再次啟動它的,為了可以在目的機器上啟動遷移過來的虛擬機器,可以把源主機上/etc/libvirt/qemu目錄下的相關虛擬機器組態檔也拷貝到目的機器上面。