Xen GPU Cluster Practice
實作五: Suspension & Resumption for your 3D-Apps
Part1: Between DomU
實驗一: Pausing & Unpausing
# 當使用者正在使用虛擬機器看影片,玩Game或是執行其他3D-Apps時. 使用者在暫停目前的工作後,便交由"Dom0"來作 snapshot.
@ Dom0
rider@cloud:~$ sudo xm list
Name ID Mem VCPUs State Time(s) Domain-0 0 3851 4 r----- 40036.9 client 6 1024 4 -b---- 21.9 guest 7 1024 4 -b---- 13.6
# 將虛擬機器 "guest" (DomainID:8) 暫停.
rider@cloud:~$ sudo xm pause 8
# 檢查虛擬機器狀態,虛擬機器 "guest" 已經 "pause".
rider@cloud:~$ sudo xm list
Name ID Mem VCPUs State Time(s) Domain-0 0 3851 4 r----- 40059.8 client 6 1024 4 -b---- 38.9 guest 8 1024 4 --p--- 3.0
# 重新將虛擬機器 "guest" (DomainID:8) 還原回原工作狀態.
rider@cloud:~$ sudo xm unpause 8
# 檢查虛擬機器狀態.
rider@cloud:~$ sudo xm list
Name ID Mem VCPUs State Time(s) Domain-0 0 3851 4 r----- 40036.9 client 6 1024 4 -b---- 21.9 guest 8 1024 4 r----- 13.6
# 使用者可以再重新透過 VNC Viewer 連回去虛擬機器 "guest" 繼續原本的工作.
@ ClientUser
rider@PC:~$ vncviewer guest:1
說明: # "DomU" 被暫停後會將目前狀態儲存在記憶體,一旦 "Dom0" 重開機後該 "DomU" 的狀態將會消失.
實驗二: Saving & Restoring
# 當使用者正在使用虛擬機器看影片,玩Game或是執行其他3D-Apps時. 使用者在暫停目前的工作後,便交由"Dom0"來作 snapshot.
@ Dom0
rider@cloud:~$ sudo xm list
Name ID Mem VCPUs State Time(s) Domain-0 0 3851 4 r----- 40036.9 client 6 1024 4 -b---- 21.9 guest 7 1024 4 -b---- 13.6
# 將虛擬機器 "guest" 作 snapshot.
rider@cloud:~$ sudo xm save -c guest ./backup/snapshot/guest.chk
# 將虛擬機器 "guest" 暫時關閉並釋放資源.
rider@cloud:~$ sudo xm destroy guest
# 重新將虛擬機器 "guest" 還原回原工作狀態.
rider@cloud:~$ rider@cloud:~$ sudo xm restore ./backup/snapshot/guest.chk
# 使用者可以再重新透過 VNC Viewer 連回去虛擬機器 "guest" 繼續原本的工作.
@ ClientUser
rider@PC:~$ vncviewer guest:1
說明: # "DomU" 被 snapshot 後會將執行狀態存成一各檔案並存放在硬碟中指定目錄,就算 "Dom0" 重開機後還是可以將 "DomU" 狀態還原回來.
實驗三: Suspension & Resumption
# 必須先使用 xm new 來新增虛擬機器給 Dom0, 再使用 xm start 來啟動虛擬機器. 直接用 xm create 會有問題 ?!
# 當使用者正在使用虛擬機器看影片,玩Game或是執行其他3D-Apps時. 使用者可以在任何時刻中止目前的工作,亦可隨時隨地還原狀態.
@ DomU
# 啟動 Suspend & Resume daemon, 並指向 Dom0 stub-daemon port.
rider@guest:~$ cd ./vmgl/vmgl.hg/extra/suspend-resume-helper
rider@guest:~/vmgl/vmgl.hg/extra/suspend-resume-helper$ make
rider@guest:~/vmgl/vmgl.hg/extra/suspend-resume-helper$ ./sr_daemon Dom0_IP:7000 &
rider@guest:~/vmgl/vmgl.hg/extra/suspend-resume-helper$ ps aux | grep sr_daemon
rider 3326 0.0 0.1 34056 1352 pts/0 S 15:56 0:00 ./sr_daemon Dom0_IP:7000
@ Dom0
rider@cloud:~$ sudo xm list
Domain-0 0 3724 4 r----- 80.5 client 4 1024 4 -b---- 19.0 guest 5 1024 4 -b---- 0.3
# 將虛擬機器 "guest" suspend (中止).
rider@cloud:~$ sudo xm suspend guest
# 查看虛擬機狀態可以發現 "guest" 已經被 suspend.
rider@cloud:~$ sudo xm list
Name ID Mem VCPUs State Time(s) Domain-0 0 3724 4 r----- 86.3 client 4 1024 4 -b---- 20.6 guest 1024 4 3.8
# 將虛擬機器 "guest" resume (恢復) 回原來狀態 .
rider@cloud:~$ sudo xm resume guest
# 查看虛擬機狀態可以發現 "guest" 已經 resume 回來.
rider@cloud:~$ sudo xm list
Name ID Mem VCPUs State Time(s) Domain-0 0 3724 4 r----- 92.0 client 4 1024 4 -b---- 23.8 guest 6 1024 4 -b---- 0.3
# 用 xm create 方式來啟動虛擬機器時,要 suspend 時會有以下訊息.
(Bug) Error: Domain is not managed by Xend lifecycle support. Usage: xm suspend <DomainName> Suspend a Xend managed domain
Part2: Between Dom0
步驟一: 安裝 One
請參考 Rock 的教學手冊: OpenNebula
One 快速安裝法(APT):
rider@cloud:~$ sudo su
root@cloud:/home/rider# echo "deb http://ppa.launchpad.net/opennebula-ubuntu/ppa/ubuntu intrepid main" >> /etc/apt/sources.list
rider@cloud:~$ gpg --keyserver subkeys.pgp.net --recv 8F5F40F9BDE7E1E9
rider@cloud:~$ gpg --export --armor 8F5F40F9BDE7E1E9 | sudo apt-key add -
rider@cloud:~$ sudo apt-get update
rider@cloud:~$ sudo apt-get install opennebula