2012/05/29

[转] VMware 使用的一些個人心得 : 關於 clone , snapshot , 光碟機

一般 Lab 時, 用 VMware 的好處是可以在單一主機(Host OS)上執行多個 Guest OS ,
而 VMware 還有一個好處, 是在修改重要設定或安裝特殊軟體前, 可以先建立 snapshot ,
另外可以用 clone 的方式, 複製成多個 guest OS .

其實 snapshot 跟 clone 原理有點類似, 就是建立時間點, 然後把那個時間點的狀態記錄下來; 而磁碟的資料, 則是依序產生, 例如 GuestOS-0001.vmdk , GuestOS-0002.vmdk ....當 Lab 遇到問題, 或者需要複製某一個時間點的狀態時, 就可以用 snapshot manager , 來進行管理.

而 snapshot manager 有三種主要功能:
1. goto : 跳到特定 snapshot 點重新開始, 例如 時間點 1 -> 時間點 2 -> 時間點 3 -> 時間點 4 -> 目前狀態.
使用者可以選擇 goto 時間點 3 , 重新開始, 而時間點 4 的資料仍會留著, 不過"時間點 4 到目前狀態"則會消失.

2. 回到上一個 snapshot , 直接放棄時間點 4 到目前狀態之間的修改, 從時間點 4 重新開始.

3. clone : 和 snapshot 不同的地方, 只有存放的位置, 比如 snapshot 內是 GuestOS_A1 -> A2 -> A3 ....
而 clone 有分兩種, 一種是 full clone , 也就是:
A -> A1 -> A2 -> (Clone 成 B ) -> A3
B -> B1 -> B2 -> B3
這時候 B 跟 A2 是完全相同的, 只是 B 跟 A 是完全獨立, 可以各自運作與刪除.

另一種 clone 是 linked clone , 也就是:
A -> A1 -> A2 -> (Clone 成 B ) -> A3
B -> B1 -> B2 -> B3
但是 B 因為依存著 A2 , 所以當 A 搬移時, B 這個 GuestOS 就會發生問題, 而好處是省空間.

提完三個 snapshot manager 主要功能後, 再提一些小技巧:
建議由 snapshot 點來 clone : 一般使用者用 VMware linked clone 時, 會由"目前狀態"來 clone , 其實 VMware 仍會建立一個看不見的 snapshot 點, 例如:
S1 ->  (clone1) -> (clone2) -> S2 -> S3 -> (clone3) -> S4 ,
那不如在 clone 時, 選 S1 或 S3 當 clone 的參考點, 而不是選目前狀態當參考點, 就可以省下這段 snapshot 點.

但是為什麼要節省 snapshot 點呢? 就是跟前面提到的某一行有關了:
"而磁碟的資料, 則是依序產生, 例如 GuestOS-0001.vmdk , GuestOS-0002.vmdk ...."
當每次 snapshot 或 linked clone 時, 虛擬的硬碟檔就會多一個, 而且每次使用 VM 時, 都需要比對不同 vmdk 的內容, 記錄其中差異的部份, 而 host os 需要花很多時間比對每個 vmdk , 當 vmdk 太多時, 整個 guest os 的 performance 就會變差.

另外一個節省 snapshot 點的重要考量是: 由於不同的 vmdk 都有連貫性, 當其中某一個 vmdk 損毀時, 整個 Virtual machine 就毀了....連 final data 等軟體都沒辦法救(因為 vmdk 是特殊格式檔案, 而不是硬碟); 所以對於重要的資料, 絕對不要放在 Guest OS 內運作, 要適當的存到網芳(NAT 或 Host Only模式, 將資料存在 host os), 或者用 independent disk 設定(比較麻煩).

所以以上簡單介紹 VMware 的 clone 跟 snapshot 特性.

至於光碟機....只是要注意一下, 由於 Virtual Machine 內可以安裝虛擬光碟機, 指向實體光碟機, 但是某些軟體會咬死實體光碟機的存取權, 造成 Virtual Machine 無法使用實體光碟機, 而整個系統會當住.

没有评论: