[[PageOutline]]
{{{
#!html
實作三: Xen 虛擬化叢集進階操作
}}}
----
== Migration 測試 ==
* Migration 前的小叮嚀
* 有些指令在 pcXXX 上執行,有的在 pcYYY 上 (執行前得注意一下)
* 若不知道目前虛擬機器 vm01 跑在哪一台上,可在 pcXXX 上執行 onevm list 來得知
* 設定好 Shared Storage (本練習使用 NFS ,pcXXX-> NFS Server, pcYYY-> NFS Client)
* pcXXX 的設定 (192.168.100.X 為 pcYYY IP)
{{{
$ sudo aptitude install nfs-kernel-server
$ sudo vim /etc/exports
}}}
{{{
#!sh
/home/domains 192.168.100.pcYYY_IP(rw,sync,no_subtree_check)
/var/lib/one/ 192.168.100.pcYYY_IP(rw,sync,no_subtree_check)
}}}
{{{
$ sudo /etc/init.d/nfs-kernel-server restart
$ sudo showmount -e localhost
}}}
* 切換到 pcYYY 去掛載 nfs
{{{
$ sudo aptitude install nfs-common
$ sudo mkdir /home/domains
$ sudo mount.nfs pcXXX:/home/domains /home/domains
$ sudo mkdir -p /var/lib/one/
$ sudo mount.nfs pcXXX:/var/lib/one/ /var/lib/one/
$ mount
}}}
* 檢查 pcXXX 是否已經有順利被 mount 起來
{{{
$ showmount -a
}}}
----
= 【Step 0: 流程】 =
* 本進階操作將說明如何透過使用 OpenNEbula 來實作 Migrate & Live Migrate
{{{
#!graphviz
digraph finite_state_machine {
rankdir=LR;
ranksep=0.3;
size="11,8";
node[shape=box,width=3.0];
"1.建立 Migration 的基本環境" -> "2. OpenNEbula Migration 測試";
"1.建立 Migration 的基本環境" -> "3. OpenNEbula Live Migration 測試";
}
}}}
----
= 【Step 1: 測試 Migrate】 =
* 1.1.1 在 pcXXX 上
{{{
$ cd /home/domains
$ onevm create vm01.one
$ onevm migrate vm01 pcYYY
$ onevm list
}}}
* 1.1.2 在 pcXXX(ONE Server) 上執行,將 vm01 Migrate 到 pcYYY (假設 vm01 已經跑在 pcXXX)
{{{
$ onevm migrate vm01 pcXXX
$ onevm list
}}}
* 1.1.3 在 pcYYY 登入 vm01,當 vm01 編譯程式時,將其 migrate 到 pcXXX ,看編譯過程式是否中斷
{{{
$ xm console vm01
$ aptitude install build-essential
$ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.29.1.tar.bz2
$ tar jxvf linux-2.6.29.1.tar.bz2
$ cd linux-2.6.29.1
$ make allmodconfig
$ make
}}}
* 1.1.4 在 pcXXX (ONE Server) 上,執行 Migrate 動作
{{{
$ onevm migrate vm01 pcXXX
}}}
* 1.1.5 登入到 vm01 檢查 make 程序是否中斷
{{{
$ xm console vm01
$ top
}}}
= 【Step 2: 測試 Live Migrate】 =
* 2.2.1 檢查 vm01 目前跑在哪一台實體機器上(假定 vm01 跑在 pcXXX 時)
{{{
$ onevm list
}}}
* 2.2.2 在 pcXXX 登入 vm01,並讓 vm01 執行編譯核心的任務
{{{
$ xm console vm01
$ cd linux-2.6.29.1
$ make allmodconfig
$ make clean
$ make
}}}
* 2.2.3 將正在編譯中的 vm01 live migrate 到 pcYYY
{{{
$ onevm livemigrate vm01 pcYYY
$ onevm list
}}}
* 2.2.4 在 pcXXX 登入到 vm01,並檢查 make 程序是否中斷
{{{
$ xm console vm01
$ top
}}}