(請注意,雖然這個問題專門針對 Hyper-v,但我實際上對通用 VM 快照答案感興趣,除非 Hyper-v 的特定答案不適用於此類通用解釋。)
我在一家擁有相當規模的虛擬機器基礎架構(數千個虛擬機器)的大公司工作。我的一位伺服器工程師告訴我,他們不允許保存虛擬機器快照很長時間 - 他們將允許在對虛擬機進行重大更改之前拍攝快照作為後備,但他們需要立即將其刪除之後(幾天左右,一旦我們確定我們的更改沒有破壞任何東西)。
我對這個過程很滿意 - 我不希望快照充當實際備份等的代理。 而且我可以尊重他們節省環境空間的願望。我不同意的是他的推理。他說,他們事後需要刪除它們的原因是「快照可以無限制地增長,每次寫入HDD時,它都會無限制地向快照寫入額外的資料。這與您配置原始虛擬HDD時不同,您可以在其中指定最大大小。
根據我的理解,快照映像是父磁碟映像的 DELTA。例如,如果我在原始圖像上有一個區塊,如下所示:
0101 0101 0101
……然後我像這樣重寫中間部分:
0101 1111 0101
……那麼快照僅儲存兩者之間的差異(加上一些資料結構開銷,我確信這會增加複雜性,但從儲存角度來看並不重要)。此外,我明白如果我要去改寫這些區塊恢復到原始狀態,增量將丟棄該區塊(以便該區塊的未來讀取將讀到原始影像)。
(我不太了解快照如何存儲差異 - 我確信有非常複雜的結構需要保持一切井井有條。我只對它存儲差異的原則感興趣,但不感興趣變化的“運行歷史”。)
他說快照不是這樣運作的——他說如果我有一個資料塊,我會改變它,然後再把它改回來,每次我這樣做,快照都會增長,最終會消耗掉很多資料。
據我了解,快照永遠不會超過原始影像的大小(例如,如果您實際上翻轉了 HDD 上的每一位,則增量將儲存它),並且可能還有一些恆定的開銷大小。他似乎認為這不是真的,隨著對虛擬 HDD 的寫入越來越多,虛擬機器快照將無限增長。
我是否誤解了虛擬機器快照的工作原理?
答案1
您的工程師遵循了良好的做法,但出於錯誤的原因。您是正確的,VHDX(或正在使用的任何虛擬磁碟技術)將:
- 在重寫時重複使用已寫入的區塊,而不是寫入全新的區塊
- 硬大小限制等於父虛擬磁碟的最大配置大小。無法指定快照的最大大小的原因是父 VHDX 已指定它。
但是,我不知道如果區塊回到原始狀態,有任何機制會丟棄先前寫入的增量。即使規模相對較小,在來源區塊和增量區塊上運行差異演算法與保留區塊寫入的簡單記錄相比,效能開銷也會很大。
不過,除非虛擬機器有大量的磁碟變動,否則您可能不會看到其快照急劇增長。
具有單一快照的虛擬機器也不會造成任何顯著的效能損失,儘管我沒有看到任何地方提到這一點。
快照有三個非常現實的問題:
- 環境問題可能會導致孤立的 AVHDX 磁碟
- 快照存在的每一分鐘,它都會從“有價值”走向“負債”
- 數據不重複
此外,即使快照本身無法真正無限制地成長,也可以想像一個對快照沒有控制的環境。理論上,單一快照可以成長到其父級分配大小的兩倍。我相信微軟制定了每個虛擬機器 50 個快照的硬上限,但這只是作為一種「好吧,現在你只是在愚蠢」的故障保護,而不是因為技術需要它。因此,VM 的理論上限是 51x 分配的大小。雖然這種情況不太可能發生,但您可以看到,即使擁有幾個具有多個快照的虛擬機器也會讓您的儲存管理員感到頭痛。它當然有利於建立合理的快照使用限制。
快照的環境問題
很多事情都可以作為此類問題的根本原因。它們都歸結為一個基本問題:如果父 VHDX 被修改任何這樣的話,AVHDX就完全失效了,完全沒用了。如果擁有的虛擬機器已啟動,那麼此類修改應該會非常困難。但是,如果所屬虛擬機器已關閉,則父 VHDX 只是一個檔案。在您嘗試存取子 AVHDX 之前,Hyper-V 或您的其他系統不會知道有任何問題。
快照存在的時間越長,出現問題的可能性就越大,尤其是在具有多個管理員的環境中。如果虛擬機器有多個快照,那麼問題可能會更加複雜。
這個問題並不是快照特有的。任何虛擬磁碟差異系統都可能出現這些問題。
快照隨著年齡的增長而貶值
這確實是不長期保留快照的主要原因。正如您正確推測的那樣,差分機制確實不是保留變更的歷史記錄;僅保留對區塊的最新變更。因此,您只有現在以快照後形式存在的虛擬機,以及拍攝快照時存在的虛擬機。您可以恢復舊的或保留新的。沒有中間地帶。
為了方便討論(並且因為這種情況已經發生),我們假設您有一個小型 Exchange 環境,該環境全部運行在單一虛擬機器上。您在從 Exchange 2013 升級到 Exchange 2016 之前拍攝快照。那個快照有什麼好處?你會回到它嗎?想猜猜當您刪除它時,合併將花費多長時間?
快照不重複數據
快照的目的是快速將虛擬機器恢復到某個時間點。它透過直接修改虛擬機器的狀態來實現這一點。它在任何時候都不會複製資料。如果 AVHDX 損壞,則只有父級保存有效訊息,並且自快照以來所做的任何更改都會遺失。如果父 VHDX 損壞,則這兩個檔案都無用。另外,我不知道有任何工具可以深入 AVHDX 並僅提取更改的資料。因此,為了在一段有意義的時間內維持不同的狀態,備份是您的最佳選擇。它不像快照那樣快速或方便,但它可以解決所有其他問題。