wiki:Reading/XenG/VMGL-SR

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

Last modified 16 years ago Last modified on May 7, 2009, 4:18:04 PM