wiki:Xen_Lab4

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

--

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

【前言】

【前言】

  • 操作說明:
    • 桌面的 Web Broswer 為瀏覽器,終端機 用來輸入課程中的指令
    • 黑底白字部份為指令 ($ 為命令提示字元, $ 之後才是指令)
      $ vim /etc/hosts
      $ sudo vim /etc/hosts
      $ sudo gedit /etc/hosts
      
      • 第1個指令為 使用 vim 指令來編輯 hosts 這個文件
      • 第2個指令的 sudo 為轉換成 root 管理者身份來編輯此文件 (因 hosts 文件的權限只有 root 能修改)
      • 第3個指令的 gedit 給不習慣用 vim 的學員使用 (類似 windows 的 notepad)
    • 白底黑字為文件內容
      127.0.0.1 localhost
      
      • 若是文件內容前面有數字則為行數 (方便學員可以快速找到文件編輯位置,下圖則為 /etc/hosts 文件的第1行)
        1  127.0.0.1 localhost
        
  • 軟體說明:
Host/dom0 OS Ubuntu 9.04 Desktop (AMD64)
VM/Guest/dmoU OS Debian lenny (AMD64)
MPICH2 1.1.1-1(AMD64)

【Step 0: 流程】

  • 本範例使用 OpenNEbula 開啟一個有 3 個 Nodes 的 Virtual MPI Cluster 在兩台實體機器上
GraphViz image

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

  • 為了方便學員快速建置 MPI Virtual Cluster,可下載已做好的 Image
    $ cd 
    $ scp clouder@drbl:mpi_fs.tar.bz2 .
    $ tar jxvf mpi_fs.tar.bz2
    

【Step 2:Clone MPI Base System】

  • 製作 mpi02 & mpi03 的 image
    $ sudo cp vm01.disk.img mpi02.disk.img
    $ sudo cp vm01.disk.img mpi03.disk.img
    
  • 修改 (1)/etc/hosts (2)/etc/hostname
    • 先修改 mpi02.disk.img
      $ sudo mount mpi02.disk.img /mnt -o loop
      $ sudo vim /mnt/etc/hostname
      
      mpi02
      
      $ sudo vim /etc/hosts
      
      127.0.0.1  localhost
      192.X.X.X  mpi01
      192.X.X.X  mpi02
      192.X.X.X  mpi03
      
      $ sudo umount /mnt
      
    • 再修改 mpi03.disk.img
      $ sudo mount mpi03.disk.img /mnt -o loop
      $ sudo vim /mnt/etc/hostname
      
      mpi03
      
      $ sudo vim /etc/hosts
      
      127.0.0.1  localhost
      192.X.X.X  mpi01
      192.X.X.X  mpi02
      192.X.X.X  mpi03
      
      $ sudo umount /mnt
      

【PS: 規劃好 VM IP】

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

【Step 3:編輯 Virtual MPI Cluster 設定檔】

  • 編輯 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/clouder/mpi01.disk.img,
             clone    = no,
             target   = sda2,
             readonly = no]
    DISK = [  type     = swap,
              size     = 128,
              target   = "sda1",
              readonly = "no" ]
    NIC=[IP="192.X.X.X", MAC="50:20:20:20: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/clouder/mpi02.disk.img,
             clone    = no,
             target   = sda2,
             readonly = no]
    DISK = [  type     = swap,
              size     = 128,
              target   = "sda1",
              readonly = "no" ]
    NIC=[IP="192.X.X.X", MAC="50:20:20:20:XX:XX"]
    
  • 再編輯 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/clouder/mpi03.disk.img,
             clone    = no,
             target   = sda2,
             readonly = no]
    DISK = [  type     = swap,
              size     = 128,
              target   = "sda1",
              readonly = "no" ]
    NIC=[IP="192.X.X.X", MAC="50:20:20:20:XX:XX"]
    

【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 到 node01 或 node02
    $ onevm deploy mpi01 node01
    $ onevm deploy mpi02 node02
    $ onevm deploy mpi03 node02
    

【Step 5:MPI 程式測試】

  • 設定 MPI 環境的注意事項
    • 須安裝 MPICH2 (本 Image 已預先安裝好了)
    • 必須設定 clouder 的 ssh 免密碼登入 (Image 已預先做好了)
    • /etc/hosts 必須有 mpi01、mpi02、mpi03的資訊
  • 登入到 mpi01
    $ ssh 192.X.X.X -l clouder
    
  • 編輯 MPI nodes 設定檔
    $ cd
    $ vim mpd.hosts
    
    mpi01
    mpi02
    mpi03
    
  • 啟動 MPI 環境
    $ mpdboot -n 3 -f mpd.hosts
    
    $ mpdtrace
    
  • 測試指令
    $ mpiexec -n 3 hostname
    
  • 測試 MPI 程式
    $ mpicc -o cpi cpi.c
    
  • 執行 MPI 程式
    $ mpiexec -n 3 ./cpi
    

Attachments (2)

Download all attachments as: .zip