Related Products and Versions
- VMware ESXi
- VMware ESXi 6.0.x
一、现象:
-
打开虚拟机电源失败。
- 您会看到以下错误:
打开虚拟机 virtual_machine 电源时从 ESX 主机收到错误 (An error was received from the ESX host while powering on VM virtual_machine)。
无法启动虚拟机 (Failed to start the virtual machine)。
无法打开模块磁盘的电源 (Module Disk power on failed)。
无法打开磁盘 '/vmfs/volumes/virtual_machine_datastore/virtual_machine_folder/virtual_machine.vmdk' 或其所依赖的快照磁盘之一 (Cannot open the disk '/vmfs/volumes/virtual_machine_datastore/virtual_machine_folder/virtual_machine.vmdk' or one of the snapshot disks it depends on)。
指定的设备不是有效的物理磁盘设备 (The specified device is not a valid physical disk device) - 虚拟机的 vMotion 在进行到 73% 时失败。
- 您会看到以下错误:
出现一般系统错误 - 无法恢复。出现一般系统错误: 源检测到目标无法恢复 (General system error occurred - Failed to resume. A general system error occurred: Source detected that destination failed to resume)。 -
In the /vmfs/volumes/virtual_machine_datastore/virtual_machine_folder/vmware.log , you see entries similar to:
vmx| I120: DISKLIB-LIB_MISC : DiskLibIsExtentPathSecure: Extent path "/vmfs/volumes/ virtual_machine_datastore/ virtual_machine_folder/ virtual_machine-flat.vmdk" points to within the scratch directory "/vmfs/volumes/51c23edc-66823826-3149-d89d671440d4", rejecting as insecure.
二、原因
This issue occurs when you have configured the ScratchConfig.ConfiguredScratchLocation setting to point to the base of your ESXi host's local storage and you have virtual machines running on the same local storage. This also occurs when you have the scratch partition on the base of the local storage and have put virtual machines in a sub-directory under the configured scratch partition. This is not supported with ESXi and any such virtual machine vmdk's are marked as insecure .
Note : This issue can occur on NFS storage where the scratch directory is the base directory of the datastore, and in the same directory as virtual machines directories, or virtual machine directories are in a subdirectory of the directory containing the scratch directory.
配置
ScratchConfig.ConfiguredScratchLocation
设置时,如果将其指向 ESXi 主机本地存储的基本目录并在同一个本地存储中运行虚拟机,将发生此问题。当您在本地存储的基本目录上配置了暂存分区并将虚拟机放在已配置的暂存分区下的子目录中时,也将发生此问题。ESXi 不支持该做法,任何此类虚拟机 vmdk 都会标记为不安全。
注意
:当 NFS 存储的暂存目录是数据存储的基本目录并与虚拟机目录位于同一目录中(或者虚拟机目录是包含暂存目录的目录的子目录)时,将发生此问题。
三、解决措施:
Set ScratchConfig.ConfiguredScratchLocation to /vmfs/volumes/datastore1/scratch instead of /vmfs/volumes/datastore1.
要解决此问题,请将暂存位置参数配置为指向 ESXi 主机上作为本地数据存储的子文件夹的目录。在任何情况下,暂存目录和虚拟机目录都必须位于单独的子目录树中,并且永远不得将暂存目录定义为包含虚拟机的数据存储的基本目录。
将 ScratchConfig.ConfiguredScratchLocation 设置为 /vmfs/volumes/datastore1/scratch,而不能设置为 /vmfs/volumes/datastore1。
*:有关配置持久 scratch 分区的详细信息,请参见 ( kb.vmware.com/s/article/1033696 ) 。
注意 :对于 ESXi 7.0 之前的版本,暂存空间是在 ESXi 主机的安装或首次引导期间自动配置的,通常不需要手动配置。如果空间足够且目标设备为“本地”设备,则安装期间,ESXi 安装程序会在该设备上创建一个 4 GB 的 Fat16 分区。
如果持久暂存空间不可用,ESXi 会将此临时数据存储在空间受限的 ramdisk 上。在内存不足的情况下,这可能会出现问题,但不会对 ESXi 操作有严重影响。存储在 ramdisk 上的信息在重新引导后将不再存在,因此诸如日志和核心文件之类的故障排除信息可能会丢失。如果主机上的持久暂存位置配置不正确,则可能会由于空间不足无法更新临时文件和日志文件而引发间歇性问题。
影响:
- 最初,重新引导主机会解决此问题,但几天之后问题又会重新出现。
-
/var/log/文件中缺少日志文件或日志文件未更新。 - 您无法在受影响的 ESXi 主机上安装 HA 代理
解决方法:
可以使用 vSphere Client、PowerCLI、技术支持模式或在脚本式安装期间手动为 ESXi 主机配置暂存空间。请选择适合您环境的方法。无论选择何种方法,配置都将写入
/etc/vmware/locker.conf
配置文件中,以便在下次引导时使用。
更改配置的暂存位置后,必须重新引导 ESXi 主机以使所做的更改生效。在进行更改之前,请先使用 vMotion 迁移 ESXi 主机上的所有虚拟机或关闭它们的电源。有关详细信息,请参见
Rebooting an ESX Server host (1003530)
。
配置的暂存位置必须指向可供 ESXi 主机访问的文件系统上的某个目录,如 VMFS 卷。该位置可以是共享磁盘上的目录,也可以是远程磁盘上的目录,只要为 ESXi 主机分配了其自身的单独目录即可。
警告 :不要在多个 ESXi 主机之间共享一个暂存锁存器目录。 使用 vSphere Web Client 为 ESXi 5.1 及更高版本配置持久暂存位置
- 使用 vSphere Web Client 登录到 vCenter Server。
- 单击 主机和群集,然后选择特定主机。
- 单击 管理选项卡。
- 单击 设置 > 系统 > 高级系统设置。
- 找到
ScratchConfig.ConfiguredScratchLocation。 - 单击 编辑,并添加指向暂存目录的路径。
- 重新引导主机。
另: 启动虚拟机失败出现“指定的设备不是有效物理磁盘设备”提示(现象不是每次出现,偶尔还能启动,影响了问题排查)原因见(kb.vmware.com/s/article/1033696),2022-02-09采取措施,新建数据存储(esxi-log,容量2G),将指向虚拟机业务存储的esxi主机中高级系统设置项ScratchConfig.ConfiguredScratchLocation设置为使用没有业务虚拟机的 esxi-log 数据存储。