背景:
一次客戶現場突然掉電,導致虛擬機文件夾里面的文件丟失,只剩余-flat.vmdk和-delta.vmdk文件,其他文件全部丟失,文件格式原本為"文件"格式。新建虛擬機無法直接使用此文件夾里面的文件。
知識普及:
xx-delta.vmdk是快照磁盤數據文件
xx-flat.vmdk是磁盤數據文件
-flat.vmdk文件:這是個默認的大型虛擬磁盤數據文件,創建於你添加虛擬硬盤驅動到虛擬機時,而不是RDM。當使用厚磁盤時,這個文件的大小相當於你創建虛擬硬盤驅動時所指定的大小。
-delta.vmdk文件:這些虛擬磁盤數據文件只用於創建虛擬機快照時。當創建了快照,對原始flat.vmdk的所有寫入都停止,並變成只讀;然后這些對虛擬磁盤的更改將寫入delta文件。這些文件的初始大小是16MB,然后隨着對虛擬機虛擬硬盤的更改需要而以16MB的速度增長。因為這些文件是虛擬磁盤所作更改的位圖,一個單一delta.vmdk文件不能超過原始flat.vmdk文件的大小。每為虛擬機創建一個快照就會生成一個delta文件,並且它們的文件名以數字遞增(如myvm-000001-delta.vmdk和myvm-000002-delta.vmdk)。當快照融合到原始–flat.vmdk文件后再刪除時,這些文件將自動刪除。
解決方法:共分為兩個大步驟
第一步:恢復磁盤文件
1、SSH登錄到ESX主機的控制台界面;(具體不會看另一篇文檔)
2、切換到問題磁盤所在目錄:
df -h cd /vmfs/volumes/xxxxvolume/xxxx |
3、確認當前虛擬磁盤所用的SCSI控制器(有就查看,沒有就算了)
less *.vmx,查找到類似scsi1.virtualDev="lsilogic"的內容 |
4、查看需要修復文件的大小(必須一致!必須一致!必須一致!):
ls -ltr 會顯示如下類似信息 -rw------- 1 root root 4294967296 Oct 11 12:30 vmdisk0-flat.vmdk |
5、執行vmkfstools命令創建一個新磁盤:
vmkfstools -c 4294967296 -a lsilogic xxx.vmdk -c:磁盤大小 -a:磁盤控制器類型(BusLogic 或者 LSILogic) -d:磁盤類型 |
第二步:恢復快照文件
1.系統正常啟動以后,開始執行快照。
2.查看自己的xx-delta.vmdk文件,有幾個就創建幾個快照,用來替換。
3.全部替換完成后,轉到最新的快照。啟動系統就好了。
一套組合拳完畢,打完收工。然而。。。藍屏!!!
不知道我的系統老舊還是什么原因,恢復后顯示藍屏,無法進入系統,最后通過PE進入系統,把數據拷貝下來了,重新搭建就行了。
謝謝兩位前輩指點: