重做VMDK文件

之所以要重做VMDK文件,根本原因在于磁盘的描述符文件损坏,导致vCenter无法识别到该磁盘,该磁盘在界面表现为0容量,并且一旦关机后开机提示找不到磁盘文件。(参考链接https://kb.vmware.com/s/article/1002511)

重做VMDK文件步骤:

命令行方法适用于 ESXi 6.0、5.x、4.1 及更早版本


  1. 登录到ESXI/ESX主机终端

  2. 进入该主机对应的vmdk文件夹:

    $cd /vmfs/volumes/myvmfsvolume/mydir
    

3.检查虚拟机配置文件 (.vmx),确定虚拟磁盘正在使用的 SCSI 控制器的类型。该控制器由scsi#.virtualDev 行标识,其中#是控制器编号。有多个控制器和控制器类型可附加到虚拟机,

 $less *.vmx | grep  -i virtualdev 找到控制器类型并记录,待会儿会使用到

    scsi0.present = "true"
    scsi0.sharedBus = "none"
    scsi1.present = "true"
    scsi1.sharedBus = "virtual"
    scsi1.virtualDev ="lsilogic"   #(获取控制器类型)

4.确定并记录-flat文件的确切大小, 因为磁盘真实的数据是在flat文件中:

     $ls -l <-flat文件名> 如:ls -l vmdisk0-flat.vmdk

    -rw------- 1 root root 4294967296 Oct 11 12:30 vmdisk0-flat.vmdk

5.使用vmkfstolls命令创建新的虚拟磁盘的描述符文件

    $vmkfstools -c 4294967296 -a lsilogic -d thin temp.vmdk 
  #(最终会创建 temp.vmdk 和 temp-flat.vmdk 文件)

    -c size 这是虚拟磁盘的大小。

    -a virtual_controller 是否将虚拟磁盘配置为与 BusLogic、LSILogic(lsilogic 和 lsilogic SAS)、准虚拟或 IDE 一起使用:

    对于虚拟磁盘类型“lsilogic”和“lsisas1068”,使用 lsilogic

    -d thin  这会创建采用精简置备格式的磁盘。

6.将temp.vmdk 重命名为与-flat文件匹配的名称:如:-flat.vmdk文件名为vmdisk0-flat.vmdk时,此时temp.vmdk文件名应改为vmdisk0.vmdk

   $ mv -i temp.vmdk vmdisk0.vmdk

7.使用vi编辑新的vmdisk0.vmdk。

$vi vmdisk0.vmdk

替换:

# Extent description

RW 8388608 VMFS "temp.vmdk"

为:

# Extent description

RW 8388608 VMFS "vmdisk0-flat.vmdk"

若原磁盘为非精简磁盘,删除 ddb.thinProvisioned = "1"
  1. 要检查磁盘链一致性,请针对磁盘描述符文件运行以下命令:
$ vmkfstools -e filename.vmdk

对于完整的链,输出将类似于如下所示:

Disk chain is consistent

对于损坏的链,您会看到快照链的摘要,然后会看到类似以下内容的输出:

Disk chain is not consistent : The parent virtual disk has been modified since the child was created. The                content ID of the parent virtual disk does not match the corresponding parent content ID in the child 

9.移除temp.vmdk以及temp-flat.vmdk文件
rm

你可能感兴趣的:(重做VMDK文件)