[[PageOutline]] {{{ #!html

實作四: Xen 虛擬化叢集進階操作(二)

}}} = 【前言】 = * 文中的 X 和 Y 請自行更換成合適的名稱 (ex. pcXXX -> pc212, 192.168.1.X -> 192.168.1.200) * 環境要求: * 已完成__'''實作一、二、三'''__ ( <1>安裝好 Xen、<2>安裝好 OpenNEbula 和 <3>pcXXX設定好 NFS-server <4>pcYYY掛載好NFS shared 目錄 ) * 環境目前並__'''無任何 VM 執行中'''__ (使用 onevm list 察看,再用 onevm shutdown 關掉) * 軟體說明: || Host/dom0 OS || Ubuntu 9.04 Desktop (AMD64) || || VM/Guest/dmoU OS || Debian lenny (AMD64) || || Xen || 3.2 || || OpenNEbula || 1.2.1 || || MPICH2 || [http://www.cebacad.net/files/mpich2_1.1.1-1debian_amd64.deb 1.1.1-1](AMD64)|| * 指令說明: || '''onehost''' || OpenNEbula 的 host 管理指令 || || '''onevm''' || OpenNEbula 的 guest/vm 管理指令 || || '''onevnet''' || OpenNEbula 的 vnet 管理指令 || ---- = 【前言, again】 = * MPI 全名是 Message Passing Interface,通常用來撰寫平行程式 (例如:一個計算全球氣候的 very very very Big 程式,利用 MPI 可以將計算的任務拆解程很多個小任務,再發送給許多台電腦來計算,以增加計算的效能和節省時間) [[Image(MPI.png)]] ---- = 【Step 0: 流程】 = * 本範例使用 OpenNEbula 開啟一個有 3 個 Nodes 的 Virtual MPI Cluster 在兩台實體機器上,並執行簡單的平行程式 [[Image(ONE_MPI.png)]] {{{ #!graphviz digraph finite_state_machine { rankdir=LR; ranksep=0.3; size="11,8"; node[shape=box,width=3.0]; "4.使用 OpenNEbula 開啟 Virtul MPI Cluster" -> "5.MPI 平行程式測試" ; "1.建立基本 MPI Base System" -> "2. MPI Image 設定" -> "3.編輯各別 VM 的設定檔"; } }}} ---- = 【Step 1:建立基本 MPI Base System】 = * 為了方便學員快速建置 MPI Virtual Cluster,可下載已做好的 Image (並將檔案放在 NFS 共享的路徑下) {{{ $ cd /home/domains $ sudo scp clouder@192.168.1.254:~/mpi01_fs.tar.bz2 . $ sudo tar jxvf mpi01_fs.tar.bz2 }}} ---- = 【Step 2: MPI Image 設定】 = * 設定 mpi01 mpi02 mpi03 的系統環境 {{{ $ sudo su # ./setup_MPI_Cluster.sh /*** 請輸入 3 個 IP ***/ CTRL+D }}} ---- = 【Step 3:編輯各別 VM 的設定檔】 = * 編輯 OpenNEbual 的 Virtual MPI Cluster 設定檔 * 編輯 mpi01 的設定檔 (主要修改 NIC 的 IP 和 MAC) {{{ $ cd /home/domains $ gedit mpi01.one }}} {{{ #!sh 15 NIC=[IP="192.168.1.X", MAC="00:16:00:00:00:XX"] }}} * 編輯 mpi02 的設定檔 (主要修改 NIC 的 IP 和 MAC) {{{ $ gedit mpi02.one }}} {{{ #!sh 15 NIC=[IP="192.168.1.Y", MAC="00:16:00:00:00:YY"] }}} * 再編輯 mpi03 的設定檔 (主要修改 NIC 的 IP 和 MAC) {{{ $ gedit mpi03.one }}} {{{ #!sh 15 NIC=[IP="192.168.1.Z", MAC="00:16:00:00:00:ZZ"] }}} ---- = 【Step 4:使用 OpenNEbula 開啟 Virtul MPI Cluster】 = * 確認目前環境無其他 VM 正在執行,若是有其他 VM,可以用 onevm shutdown {vm_id} 或 onevm delete {vm_id} 來關掉或移除 * 開啟 Virtual MPI Cluster {{{ $ onehost list $ onevm list $ onevm create mpi01.one $ onevm create mpi02.one $ onevm create mpi03.one $ onevm list }}} * 若是狀態還在 pend,可以手動 deploy VM 到 pcXXX 或 pcYYY {{{ $ onevm deploy mpi01 pcXXX $ onevm deploy mpi02 pcYYY $ onevm deploy mpi03 pcYYY }}} ---- = 【Step 5:MPI 平行程式測試】 = * 設定 '''MPI 平行環境'''的注意事項 * 須安裝 '''MPICH2''' (本 Image 已預先安裝好了) * 必須設定 clouder 的 '''ssh 免密碼登入''' (Image 已預先做好了) * /etc/hosts 必須有 mpi01、mpi02、mpi03的資訊 * 登入到 mpi01 {{{ $ ssh 192.168.1.X -l clouder }}} * 啟動 MPI 環境 {{{ $ mpdboot -n 3 -f mpd.hosts $ mpdtrace }}} * 測試 MPI 指令 {{{ $ mpiexec -n 3 hostname }}} * Compiler MPI 平行程式 {{{ $ mpicc -o cpi cpi.c }}} * 執行 MPI 平行程式 {{{ $ mpiexec -n 3 ./cpi CTRL+D (跳出 mpi01) }}} ---- = 【討論 & 休息】 = * 練習關閉 Virtual MPI Cluster {{{ $ onevm shutdown mpi01 $ onevm shutdown mpi02 $ onevm shutdown mpi03 $ onevm list }}} [[BR]] [[BR]]