1.2.1 創建快照
對上面虛擬機創建一個快照,除了快照定義檔以外,對該磁碟,新增了三個檔案:
-rw------- 1 root root 786944 Jul 11 10:55 sammy-target-win-small-000001-ctk.vmdk
-rw------- 1 root root 28672 Jul 11 10:55 sammy-target-win-small-000001-delta.vmdk
-rw------- 1 root root 428 Jul 11 10:55 sammy-target-win-small-000001.vmdk
第一個依然是 ctk 檔,第二個是 delta 檔,第三個是非二進位檔案。
然後再創建第二個快照,就成了這樣子:
(RW = 讀寫,RO = 唯讀)
從數據的角度來看:
綠色部分是從虛機視角看資料;
最下面的紅框是 base vmdk 中的資料;
中間的紅框是 delta vmdk 中的資料
簡單總結一下 VMware 快照特點:
• 快照保存虛擬機 在某一個時間點狀態和資料。
• 對一個虛擬機做快照,相當於將虛擬機當前的磁碟 設為唯讀模式,然後創建 delta vmdk 檔,它將會接受新的資料寫操作。在存在多個快照的情況下,之前的快照磁碟變為唯讀。
• 寫入損失:寫的時候,遵循 Copy-on-write 機制,按照資料分塊,當要修改某一塊中資料時,先將它從父系vmdk 中拷貝到 delta vmdk,然後再對它修改。
• 讀取損失:當讀取某一塊資料時,ESXi 需要判斷從哪裡去讀:對於沒有修改的資料塊,從父系vmdk 讀;對已經修改了的資料塊,從 delta vmdk 讀。
可見,用戶端的一次性 讀取操作,可能需要從不同的 vmdk 上讀取資料。
• delta vmdk 的大小不會超過 base vmdk 的大小,因為最壞的情況是,所有的資料都被拷貝到delta vmdk 並且都沒修改了。
• 因為快照會帶來讀取 和寫入損失,因此一個虛機不能有太多的快照。
vSphere 限定一個虛機最多有 32 個快照,但是建議最多只有 2-3個,
而且快照的保留時間不要超過一天。