使用-flat.vmdk恢復虛擬機


1. 背景

某次意外關機,開機后發現少了一台虛擬機,檢查發現,“提示找不到vmdk虛擬磁盤文件

 

找到虛擬機目錄發現,少了很多虛擬機文件。

 

 

對比其他正常虛擬機

 

2. 原因分析

查看這台虛擬服務器的摘要信息,對比datastore上其他可用的虛擬機,發現損壞的服務器上確實缺少一個vmdk磁盤文件,但是可以看見一個500G的xxx-flat.vmdk文件;而正常的服務器只有xxx.vmdk,沒有xxx-flat.vmdk,關機之后兩個文件都存在,而且真實的磁盤容量從vmdk轉移到了xxx-flat.vmdk。
       虛擬主機在運行的時候,實際在使用的是xxx-flat.vmdk,然而xxx.vmdk是可以同時被刪除的,才導致了問題。
       這里需要說明,虛擬機的每個磁盤驅動器都包含了一對.vmdk文件。一個是文本文件,包含了關於虛擬硬盤的描述數據;另外一個是磁盤的實際內容。例如,一個名為examplevm的虛擬機連接有一個硬盤。這個磁盤由如下兩個文件構成:一個小於 1KB 的examplevm.vmdk描述文件和一個10GB大小的examplevm- flat.vmdk平面(數據)文件,該文件包含虛擬機的實際數據,而這些數據又是以二進制的形式存放在物理磁盤上,examplevm.vmdk描述文件就是描述這種映射關系的。

 

3. 解決辦法

1) 用ssh登錄vsphere主機,查找xxx-flat.vmdk文件所在的位置以及目錄,並記錄文件的大小

# find / -name "新建虛擬機-flat.vmdk"
/vmfs/volumes/50a98441-ab02c8b7-e60a-001517712dce/新建虛擬機/新建虛擬機-flat.vmdk
# ls -l /vmfs/volumes/50a98441-ab02c8b7-e60a-001517712dce/新建虛擬機/新建虛擬機-flat.vmdk
-rw-------    1 root     root     53687091200 Apr 16 09:13/vmfs/volumes/50a98441-ab02c8b7-e60a-001517712dce/新建虛擬機/新建虛擬機-flat.vmdk

536870912000

注意,ESXi5默認沒有開啟ssh,需要通過vsphere client登錄服務器,【配置】【安全配置文件】【服務-屬性】手動開啟。

(2) 重命名xxx-flat.vmdk文件

cd /vmfs/volumes/5a020374-e2195cef-7857-1866daa5ed3e/centos6.5-4.66

mv centos6.5-4.66-flat.vmdk tmp-flat.vmdk

(3) 新建一台虛擬機,配置與原虛擬機相同,

磁盤大小一定要相同

(4) 將原來的(tmp_)xxx-flat.vmdk覆蓋掉剛創建的同樣大小的xxx-flat.vmdk

mv tmp-flat.vmdk /vmfs/volumes/5a020374-e2195cef-7857-1866daa5ed3e/xxx

 

 

 

mv tmp-flat.vmdk yinwu-4.32-flat.vmdk

 

(5) 更改mac,刪除net.rules

更改mac 與exsi分配網卡相同

 

刪除net.rules

rm -rf /etc/udev/rules.d/70-persistent-net.rules

重啟即可

reboot

 

4. 總結

(1)重新創建一個虛擬機,然后mv原來的temp-flat.vmdk硬盤文件到新的虛擬機目錄,再覆蓋虛擬機文件,更節省時間;

(2)因網卡uuid,mac變化,虛擬機開機后無法聯網,需要重新配置網絡信息。

(3)xxx.vmdk本身是一個不到1k的文本文件,通過vi編輯查看可知真正存放數據的是xxx-flat.vmdk磁盤文件,所以只要這個文件還存在,就可以恢復。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM