wiki:Xen_Lab4

Version 41 (modified by rock, 15 years ago) (diff)

--

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

【前言】

  • 文中的 X 和 Y 請自行更換成合適的名稱 (ex. pcXXX -> pc212, 192.168.100.X -> 192.168.100.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)
MPICH2 1.1.1-1(AMD64)
  • 指令說明:
onehost OpenNEbula 的 host 管理指令
onevm OpenNEbula 的 guest/vm 管理指令
onevnet OpenNEbula 的 vnet 管理指令

【Step 0: 流程】

  • 本範例使用 OpenNEbula 開啟一個有 3 個 Nodes 的 Virtual MPI Cluster 在兩台實體機器上,並執行簡單的平行程式

GraphViz image

【Step 1:建立基本 MPI Base System】

  • 為了方便學員快速建置 MPI Virtual Cluster,可下載已做好的 Image (並將檔案放在 NFS 共享的路徑下)
    $ cd /home/domains
    $ sudo scp clouder@pc-eth1:~/mpi01_fs.tar.bz2 .
    $ sudo tar jxvf mpi01_fs.tar.bz2
    

【Step 2: MPI Image 設定】

  • 設定 mpi01 mpi02 mpi03 的系統環境
    $ sudo su
    # ./setup_MPI_Cluster.sh
    CTRL+D
    

【PS: 令用 onevnet 管理 IP (可省略)】

  • 使用 onevent 來協助管理 IP 的分配
    $ cd
    $ sudo gedit network.one
    
    NAME = "Public"
    TYPE = FIXED
    
    BRIDGE = eth0
     
    LEASES = [IP=192.168.100.X, MAC=XX:XX:XX:XX:XX:XX]
    LEASES = [IP=192.168.100.Y, MAC=YY:YY:YY:YY:YY:YY]
    LEASES = [IP=192.168.100.Z, MAC=ZZ:ZZ:ZZ:ZZ:ZZ:ZZ]
    
    $ sudo onevnet create network.one
    $ sudo onevnet list
    $ sudo onevnet show Public
    
  • 記的記下 VM 對應的 MAC 和 IP,到時編輯設定檔時會用到

【Step 3:編輯各別 VM 的設定檔】

  • 編輯 OpenNEbual 的 Virtual MPI Cluster 設定檔
    • 編輯 mpi01 的設定檔 (主要修改 NIC 的 IP 和 MAC)
      $ gedit mpi01.one
      
      NAME   = mpi01
      CPU    = 1
      MEMORY = 128
      OS = [ kernel     = /boot/vmlinuz-2.6.26-2-xen-amd64,
             initrd     = /boot/initrd.img-2.6.26-2-xen-amd64,
             root       = sda2]
      DISK = [ source   = /home/domains/mpi01.disk.img,
               clone    = no,
               target   = sda2,
               readonly = no]
      DISK = [  type     = swap,
                size     = 128,
                target   = "sda1",
                readonly = "no" ]
      NIC=[IP="192.168.100.X", MAC="XX:XX:XX:XX:XX:XX"]
      
    • 編輯 mpi02 的設定檔 (主要修改 NIC 的 IP 和 MAC)
      $ gedit mpi02.one
      
      NAME   = mpi02
      CPU    = 1
      MEMORY = 128
      OS = [ kernel     = /boot/vmlinuz-2.6.26-2-xen-amd64,
             initrd     = /boot/initrd.img-2.6.26-2-xen-amd64,
             root       = sda2]
      DISK = [ source   = /home/domains/mpi02.disk.img,
               clone    = no,
               target   = sda2,
               readonly = no]
      DISK = [  type     = swap,
                size     = 128,
                target   = "sda1",
                readonly = "no" ]
      NIC=[IP="192.168.100.Y", MAC="YY:YY:YY:YY:YY:YY"]
      
    • 再編輯 mpi03 的設定檔 (主要修改 NIC 的 IP 和 MAC)
      $ gedit mpi03.one
      
      NAME   = mpi03
      CPU    = 1
      MEMORY = 128
      OS = [ kernel     = /boot/vmlinuz-2.6.26-2-xen-amd64,
             initrd     = /boot/initrd.img-2.6.26-2-xen-amd64,
             root       = sda2]
      DISK = [ source   = /home/domains/mpi03.disk.img,
               clone    = no,
               target   = sda2,
               readonly = no]
      DISK = [  type     = swap,
                size     = 128,
                target   = "sda1",
                readonly = "no" ]
      NIC=[IP="192.168.100.Z", MAC="ZZ:ZZ:ZZ:ZZ:ZZ: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.100.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
    

【討論 & 休息】

  • 練習關閉 Virtual MPI Cluster將
    $ onevm shutdown mpi01
    $ onevm shutdown mpi02
    $ onevm shutdown mpi03
    
    $ onevm list
    



Attachments (2)

Download all attachments as: .zip