数据存储浏览器中首发的虚拟机磁盘文件是虚拟机的界面文件,并且没有图标。
打开虚拟机电源时,出现文件未找到的错误。
查看虚拟机目录时存在平面文件
虚拟机磁盘的磁盘文件不存在或已损坏。
解决方案
如何重新补发丢失/丢失的虚拟磁盘光盘文件(.vmdk):
注意:VMware 建议对关键虚拟机定期执行完整映像备份,以便在出现这种情况时轻松进行还原。VMware 还建议您尝试从备份损坏的磁盘文件中恢
复。此方法不能用于重新创建加密的磁盘
描述符文件。
**注意:**视频中使用了 vmkfstools -a 选项。在 ESXi 6.5 版本及更高版本中,此选项已弃用,将被忽略,并显示以下消息:“–adaptertype 已弃用,
因此将被忽略”。
**重要说明:**如果旅行的虚拟机没有完整备份,请确保将平面文件复制或备份到单独的位置。本文仅重点介绍为虚拟机重新创建文件文件,请勿编辑或
更改平面文件的内容,因为这可能会导致数据丢失。
注意:在虚拟机中配置了准虚拟化SCSI控制器的虚拟磁盘中,此过程将会损坏,因为虚拟机可能不会引导。不过,如果使用准虚拟化SCSI控制器,将
通过ddb 。 adapterType = pvscsi替换文件中的ddb.adapterType = lsilogic来对新的总线文件进行更新。
要创建虚拟机磁盘文件,请执行以下步骤:
-
通过 SSH 或 DCUI 登录到 ESXi 主机的终端。
-
使用以下命令导航到包含丢失的磁盘文件的虚拟机磁盘的目录:
# cd /vmfs/volumes/myvmfsvolume/mydir
-
检查虚拟机配置文件 ( .vmx ),确定虚拟磁盘正在使用的 SCSI 控制器的类型。控制器由scsi # .virtualDev行标识,其中#是控制器编号。有多个控制器和控制器类型可附加到虚拟机,如lsisas1068(即LSILogic SAS控制器)、lsilogic或buslogic。
此示例使用lsilogic:
scsi0.present = “true”
scsi0.sharedBus = “none”
scsi1.present = “true”
scsi1.sharedBus = "virtual "
scsi1.virtualDev = “lsilogic”
-
使用类似以下内容的命令,确定并记录-flat文件的准确大小:
# ls -l vmdisk0-flat.vmdk
-rw------- 1 root root 4294967296 Oct 11 12:30 vmdisk0-flat.vmdk
-
使用vmkfstools命令创建新的虚拟磁盘:
# vmkfstools -c 4294967296 -d Thin temp.vmdk
命令使用以下标记:
注意:为了节省磁盘空间,我们使用Thin类型创建采用专业设置格式的磁盘。但是,如果原始分区未未设置为“专业”,该操作的唯一结果是初始化文件包含一个额外的行,您必须在后面的步骤中手动将其最终删除。会创建temp.vmdk和
temp - flat.vmdk文件。
-c size 这是虚拟磁盘的大小。
-d Thin 这会创建采用专业配置的磁盘。
-
删除temp-flat.vmdk,因为不需要这个文件。运行以下命令:
# rm -i temp-flat.vmdk
-
将temp.vmdk重命名为与孤立的 - flat文件(或本例中的vmdisk0.vmdk)匹配的名称:
# mv -i temp.vmdk vmdisk0.vmdk
-
使用“vi”文本编辑器编辑布拉格文件(本例中为vi vmdisk0.vmdk,)
a. 在范围描述部分下,
使用命令“ Shift + r ”进入替换模式。
找到并更改 - flat文件的名称以与隔离的 - flat,相匹配按“Esc”退出替换模式。
b. 如果原始.vmdk不是光盘,请找到ddb.thinProvisioned = "1"行后将其删除。如果是光盘,则保留此行。使用命令"Shift + zz"保
存并退出“vi”编辑器。
示例
# Disk DescriptorFile
version=1
CID=fb183c20
ParentCID=ffffffff
createType=“vmfs”
# 盘区描述
RW 8388608 VMFS “vmdisk0-flat.vmdk”
# 磁盘数据库
#DDB
ddb.virtualHWVersion = “4”
ddb.geometry.Columns = “522”
ddb.geometry.heads = “255”
ddb.geometry.sectors = “63”
ddb.adapterType = “lsilogic”
ddb.thinProvisioned = “1”
现在,可以准备打开虚拟机电源了。验证您的更改,并在启动虚拟机前确保磁盘链是一致的。
-
要检查磁盘链一致性,请针对磁盘磁盘文件运行以下命令:
# vmkfstools -e filename.vmdk
对于完整的链,输出将如下所示:
磁盘链一致(磁盘链一致)
对于损坏的链,您会看到快照链的摘要,然后会看到类似以下内容的输出:
磁盘链不一致: 由于创建了子虚拟磁盘,父虚拟磁盘被修改。父虚拟磁盘的内容 ID 与子虚拟磁盘中对应的父内容 ID 不匹配 (18) (磁盘
链不一致:自创建子虚拟磁盘以来,父虚拟磁盘已被修改。父虚拟磁盘的内容 ID 与子虚拟磁盘中相应的父内容 ID 不匹配 (18))
附加信息
虚拟机的每个磁盘驱动器均包含多个.vmdk文件。一个是包含有关虚拟硬盘的描述性数据的文本文件,另一个是该磁盘的实际内容。例如,名为
examplevm 的虚拟机拥有一个附加的10 GB 磁盘。此磁盘由不超过 1 KB 的examplevm.vmdk读写文件和包含虚拟机内容的 10 GB examplevm-
flat.vmdk平面文件构成。