相比KVM虛拟機靜态遷移中需要拷貝虛拟機虛拟磁盤檔案,kvm虛拟機動态遷移無需拷貝虛拟磁盤檔案,但是需要遷移到的虛拟主機之間需要有相同的目錄結構虛拟機磁盤檔案,本文這部分内容通過nfs來實作,當然也可以采用GFS2叢集檔案系統來實作,本文的動态遷移是基于共享存儲動态遷移。
KVM動态遷移目前有兩種,一種是基于共享存儲的動态遷移,一種是基于基于資料塊的動态遷移,需要qemu-kvm-0.12.2以上版本支援,CentOS6.5版本是qemu-kvm-0.12.1.2,其它發行版可能有支援。
(1)KVM虛拟化伺服器node1
作業系統版本:CentOS6.5x86_64
KVM虛拟化:自帶版本
橋接IP位址1:10.10.172.191
測試虛拟機:CentOS6.5-01
虛拟機IP位址:10.10.172.241
虛拟磁盤檔案1:/data/kvm/CentOS6.5-01.qcow2
虛拟磁盤檔案2:/data/kvm/CentOS6.5-01_add.qcow2
nfs挂載目錄:/data/kvm
(2)KVM虛拟化伺服器node2
橋接IP位址1:10.10.172.192
(3)nfs伺服器(nfs配置略)
橋接IP位址1:10.10.172.193
nfs服務目錄:/kvmdata
(1)節點1挂載nfs目錄
<code>[root@node1 ~]</code><code># mount -t nfs 10.10.172.193:/kvmdata /data/kvm/</code>
<code>[root@node1 ~]</code><code># df -h</code>
<code>Filesystem Size Used Avail Use% Mounted on</code>
<code>/dev/mapper/VolGroup-lv_root</code> <code>14G 3.2G 9.5G 26% /</code>
<code>tmpfs 3.9G 80K 3.9G 1% </code><code>/dev/shm</code>
<code>/dev/sda1</code> <code>485M 39M 421M 9% </code><code>/boot</code>
<code>/dev/sdb1</code> <code>197G 28G 160G 15% </code><code>/data</code>
<code>10.10.172.193:</code><code>/kvmdata</code> <code>14G 7.1G 5.6G 57% </code><code>/data/kvm</code>
<code>[root@node1 ~]</code><code># ll /data/kvm/</code>
<code>total 2264200</code>
<code>-rw-r--r-- 1 root root 393216 Nov 29 2017 CentOS6.5-01_add.qcow2</code>
<code>-rw-r--r-- 1 root root 2318139904 Nov 29 2017 CentOS6.5-01.qcow2</code>
<code>[root@node1 ~]</code><code>#</code>
(2)節點2挂載nfs目錄
<code>[root@node2 ~]</code><code># mount -t nfs 10.10.172.193:/kvmdata /data/kvm/</code>
<code>[root@node2 ~]</code><code># df -h</code>
<code>/dev/mapper/VolGroup-lv_root</code> <code>14G 2.8G 9.9G 22% /</code>
<code>tmpfs 1.9G 72K 1.9G 1% </code><code>/dev/shm</code>
<code>/dev/sdb1</code> <code>197G 7.2G 180G 4% </code><code>/data</code>
<code>[root@node2 ~]</code><code># </code>
<code>[root@node2 ~]</code><code># ll /data/kvm/</code>
<code>-rw-r--r--. 1 root root 393216 Nov 29 2017 CentOS6.5-01_add.qcow2</code>
<code>-rw-r--r--. 1 root root 2318139904 Nov 29 2017 CentOS6.5-01.qcow2</code>
<code>[root@node2 ~]</code><code>#</code>
確定兩節點都有相同的虛拟機磁盤檔案存儲目錄。
(1)節點1虛拟機狀态,oeltest01虛拟機開機狀态
<code>[root@node1 ~]</code><code># virsh list --all</code>
<code> </code><code>Id Name State</code>
<code>----------------------------------------------------</code>
<code> </code><code>- CentOS6.5-01 running</code>
(2)節點2虛拟機狀态,無虛拟機運作
<code>[root@node2 ~]</code><code># virsh list --all </code>
(3)在主機1上執行遷移指令
<code>[root@node1 ~]</code><code># virsh migrate --live --verbose CentOS6.5-01 qemu+ssh://10.10.172.192/system tcp://10.</code>
<code>10.172.192</code>
<code>[email protected]'s password: </code>
<code>Migration: [100 %]</code>
<code> </code><code>- CentOS6.5-01 shut off</code>
過程有一個暫停與關閉的過程。
(4)客戶機一直ping檢視遷移,可以看到中間有兩個包的中斷,基本上沒有太大影響。
<code>[root@localhost ~]</code><code># ping 10.10.172.241</code>
(5)虛拟主機2上,可以看到虛拟機CentOS6.5-01已經啟動了。
<code>[root@node2 ~]</code><code># virsh list --all</code>
<code> </code><code>1 CentOS6.5-01 running</code>
雖然CentOS6.5-01虛拟機已經在節點2上啟動了,但是虛拟主機上還沒有CentOS6.5-01虛拟機的配置檔案。是以需要建立配置檔案并定義虛拟機。
<code>[root@node2 ~]</code><code># cd /etc/libvirt/qemu</code>
<code>[root@node2 qemu]</code><code># ls</code>
<code>networks</code>
<code>[root@node2 qemu]</code><code># ll</code>
<code>total 4</code>
<code>drwx------. 3 root root 4096 Nov 27 07:57 networks</code>
<code>[root@node2 qemu]</code><code>#</code>
(6)kvm虛拟主機2上,通過遷移過來的虛拟機記憶體狀态建立虛拟機配置檔案,并通過xml配置檔案定義虛拟機。
<code>[root@node2 qemu]</code><code># virsh dumpxml CentOS6.5-01 > /etc/libvirt/qemu/CentOS6.5-01.xml</code>
<code>[root@node2 qemu]</code><code># </code>
<code>[root@node2 qemu]</code><code># ll -h</code>
<code>total 8.0K</code>
<code>-rw-r--r-- 1 root root 3.5K Nov 27 09:18 CentOS6.5-01.xml</code>
<code>drwx------. 3 root root 4.0K Nov 27 07:57 networks</code>
<code>[root@node2 qemu]</code><code># virsh define /etc/libvirt/qemu/CentOS6.5-01.xml</code>
<code>Domain CentOS6.5-01 defined from </code><code>/etc/libvirt/qemu/CentOS6</code><code>.5-01.xml</code>
在kvm虛拟主機2上進入虛拟機沒有問題。
<code>[root@node2 qemu]</code><code># virsh console CentOS6.5-01</code>
<code>Connected to domain CentOS6.5-01</code>
<code>Escape character is ^]</code>
<code>CentOS release 6.5 (Final)</code>
<code>Kernel 2.6.32-431.el6.x86_64 on an x86_64</code>
<code>CentOS6.5-01 login: root</code>
<code>Password: </code>
<code>Last login: Mon Nov 27 15:33:12 on ttyS0</code>
<code>[root@CentOS6 ~]</code><code># ifconfig </code>
<code>eth0 Link encap:Ethernet HWaddr 52:54:00:56:9A:7F </code>
<code> </code><code>inet addr:10.10.172.241 Bcast:10.10.172.255 Mask:255.255.255.0</code>
<code> </code><code>inet6 addr: fe80::5054:ff:fe56:9a7f</code><code>/64</code> <code>Scope:Link</code>
<code> </code><code>UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1</code>
<code> </code><code>RX packets:372 errors:0 dropped:0 overruns:0 frame:0</code>
<code> </code><code>TX packets:9 errors:0 dropped:0 overruns:0 carrier:0</code>
<code> </code><code>collisions:0 txqueuelen:1000 </code>
<code> </code><code>RX bytes:41334 (40.3 KiB) TX bytes:566 (566.0 b)</code>
<code>lo Link encap:Local Loopback </code>
<code> </code><code>inet addr:127.0.0.1 Mask:255.0.0.0</code>
<code> </code><code>inet6 addr: ::1</code><code>/128</code> <code>Scope:Host</code>
<code> </code><code>UP LOOPBACK RUNNING MTU:16436 Metric:1</code>
<code> </code><code>RX packets:0 errors:0 dropped:0 overruns:0 frame:0</code>
<code> </code><code>TX packets:0 errors:0 dropped:0 overruns:0 carrier:0</code>
<code> </code><code>collisions:0 txqueuelen:0 </code>
<code> </code><code>RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)</code>
<code>[root@CentOS6 ~]</code><code>#</code>
到此,kvm虛拟機動态遷移成功。
本文轉自 dengaosky 51CTO部落格,原文連結:http://blog.51cto.com/dengaosky/2044775,如需轉載請自行聯系原作者