在思考是否能夠使用快照來恢復受損的VMDK文件之前,我們首先需要了解VMDK文件和快照在vSphere環(huán)境當中的工作原理。
快照工作原理
當創(chuàng)建VMware快照時,實際上我們并沒有復制原始磁盤當中的任何數(shù)據(jù)。而是將原始磁盤設置為只讀狀態(tài),并且創(chuàng)建一個回滾日志——有時也稱之為增量磁盤,這種增量磁盤其實就是在快照創(chuàng)建之后,針對任何虛擬機寫入操作所產(chǎn)生的占位符。
圖1.增量文件當中包含的僅僅是快照創(chuàng)建之后的虛擬機變化部分
圖一展示了快照的工作流程。假設磁盤當中包含了一個單詞“SNAPSHOT”,并且每個字母都位于自己的磁盤塊當中。當我們創(chuàng)建磁盤快照的時候,原始磁盤變?yōu)橹蛔x狀態(tài),一個新的增量VMDK文件被創(chuàng)建。這時第二個塊變?yōu)?ldquo;L”,并且“S”被加入到第九個塊當中,這樣就產(chǎn)生了新的單詞“SLAPSHOTS”。
為了保證所有文件都是安全的,我們需要進行一系列操作。我們可以刪除快照,這樣將會簡單地將新的塊合并到原始的VMDK文件當中,并且將“SLAPSHOTS”提交給虛擬機——或者我們可以回滾到另外一個時間點,比如磁盤剛剛讀入“SNAPSHOT”的時候。每次創(chuàng)建快照的時候,都會創(chuàng)建一個新的增量磁盤,保證我們能夠回滾到快照鏈當中的任何時間點。
能否修復VMDK文件?
如果原始VMDK文件遭到破壞或者被刪除,那么管理員就會面臨很多棘手問題。正如圖二所示,包含“SNAPSHOT”的原始磁盤已經(jīng)消失。現(xiàn)在我們手中只剩下了包含字母“L”和“S”的增量磁盤,而指向磁盤的元數(shù)據(jù)(metadta)已經(jīng)消失。
圖2.如果只使用損壞或者丟失VMDK文件的快照,那么無法重建原始文件。
也許你已經(jīng)得出了結論:如果包含“SNAPSHOT”的原始磁盤或者原始塊丟失,那么使用增量磁盤當中的部分數(shù)據(jù)無法重建任何東西。
缺失文件種類決定能否進行恢復
僅僅使用快照文件來恢復丟失的VMDK文件是不可能的,但是根據(jù)丟失VMDK文件的不同,我們可能擁有幾種解決方案。一個虛擬機磁盤由兩個不同的文件組成:VMDK文件——虛擬磁盤的最重要組成部分——保存了所有數(shù)據(jù),以及描述符文件——VMX文件——為虛擬機配置文件提供相關磁盤信息。
如果VMDK文件丟失,那么只能寄希望于保存了備份文件,而如果描述符文件丟失,那么可以使用ESXi命令行進行恢復。可以參考VMware knowledge base當中的文章1002511進行恢復。