wiki:Reading/XenG/VMGL-SR

Version 4 (modified by rider, 15 years ago) (diff)

--

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 & xm start 指令來啟動的虛擬機器才能 suspend (unknown bug).
# 當使用者正在使用虛擬機器看影片,玩Game或是執行其他3D-Apps時. 使用者可以在任何時刻中止目前的工作,亦可隨時還原狀態.
@ 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