Search the VMware Knowledge Base (KB)
View by Article ID

为 ESXi 4.x/5.x/6.x 创建持久暂存位置 (2075508)

  • 0 Ratings

Symptoms

免责声明: 本文为 Creating a persistent scratch location for ESXi 4.x/5.x/6.0 (1033696) 的翻译版本。 尽管我们会不断努力为本文提供最佳翻译版本,但本地化的内容可能会过时。 有关最新内容,请参见英文版本。


  • 当您运行 esxcli software vib list 命令时,您会看到类似于以下内容的错误:

    Traceback (most recent call last):
    File "/usr/lib/vmware/esxcli-software", line 432, in module
    setupLogging()
    File "/usr/lib/vmware/esxcli-software", line 78, in setupLogging
    handler = logging.handlers.SysLogHandler(address='/dev/log')
    File "/build/mts/release/bora-504890/bora/build/esx/release/python-
    2.6-lib-zip-stage/504890/visor/pylib/python2.6/logging/handlers.py",
    line 704, in __init__
    File "/build/mts/release/bora-504890/bora/build/esx/release/python-
    2.6-lib-zip-stage/504890/visor/pylib/python2.6/logging/handlers.py",
    line 719, in _connect_unixsocket
    File "string", line 1, in connect
    socket.error: [Errno 2] No such file or directory

  • esxcli softwareesxupdate 相关的命令不起作用。
  • 使用 Update Manager 扫描主机失败并出现以下错误:

    常规系统错误 (General System Error)

  • 最初,重新引导主机会解决此问题,但几天之后问题又会重新出现。
  • /var/log/ 中缺少日志文件或日志文件未更新。
  • 您无法在受影响的 ESXi 主机上安装 HA 代理。
  • ESXi 安装在 SD 卡或 USB 存储器中。

Purpose

本文介绍为 ESXi 创建持久暂存位置的过程。

VMware 建议 ESXi 具有一个可用于存储临时数据(包括日志、诊断信息和系统交换)的持久暂存位置。 (但这不是必需的。) 持久暂存空间可以在可由 ESXi 主机访问的 FAT 16、VMFS 或 NFS 分区上进行置备。

注意: 暂存空间是在 ESXi 主机的安装或首次引导期间自动配置的,通常不需要手动配置。 如果空间足够且目标设备被视为“本地”设备,则安装期间,ESXi Installable 会在该设备上创建一个 4 GB Fat16 分区。

从 VirtualCenter 2.5 Update 1 开始,只有启用了交换的 ESXi 系统可添加到 HA 群集中。 有关详细信息,请参见 ESXi hosts without swap enabled cannot be added to a VMware High Availability Cluster (1004177)

Cause

如果持久暂存空间不可用,ESXi 会将此临时数据存储在空间受限的 ramdisk 上。 在内存不足的情况下,这可能会出现问题,但不会对 ESXi 操作有严重影响。 存储在 ramdisk 上的信息在重新引导后将不再存在,因此诸如日志和核心文件之类的故障排除信息可能会丢失。 如果主机上的持久暂存位置没有正确配置,您可能会遇到间歇性问题,原因是缺少存储临时文件的空间且日志文件未更新。

暂存空间是在 ESXi 4.1 U2 和更高版本主机的安装或首次引导期间自动配置的,通常不需要手动配置。

Resolution

可以使用 vSphere Client、vCLI、PowerCLI、技术支持模式的方式或在脚本式安装期间为 ESXi 主机配置暂存空间。请选择适合您环境的方法。无论选择哪种方法,都会将配置写入到 /etc/vmware/locker.conf 配置文件中,以供下次引导时使用。

更改配置的暂存位置之后,必须重新引导 ESXi 主机以使所做的更改生效。在进行更改之前,请先使用 vMotion 迁移 ESXi 主机上的所有虚拟机或关闭它们的电源。有关详细信息,请参见 Rebooting an ESX Server host (1003530)

配置的暂存位置必须指向可供 ESXi 主机访问的文件系统上的某个目录,如 Fat16 或 VMFS 卷。该位置可以是共享磁盘上的目录,也可以是远程磁盘上的目录,只要为 ESXi 主机分配了其自身的单独目录即可。

注意:不要在多个 ESXi 主机之间共享一个暂存锁存器目录。

注意:不支持在 VSAN 数据存储上配置暂存位置。

可能必须重新引导 ESXi 主机,然后才能完成上述过程。

使用 vSphere Web Client 为 ESXi 5.1 及更高版本配置持久暂存位置

  1. 使用 vSphere Web Client 登录到 vCenter Server。
  2. 单击主机和群集,然后选择特定主机。
  3. 单击管理选项卡。
  4. 单击设置 >系统>高级系统设置
  5. 找到 ScratchConfig.ConfiguredScratchLocation
  6. 单击编辑,并添加指向暂存目录的路径。
  7. 重新引导主机。

使用 VMware Host Client 为 ESXi 6.5 配置持久暂存位置

  1. 使用 Host Client 连接到 ESXi 主机。
  2. 单击存储
  3. 右键单击某个数据存储,然后单击浏览
  4. 为此 ESXi 主机创建名称唯一的目录。

    例如:

    .locker-ESXHostname

  5. 关闭数据存储浏览器。
  6. 单击管理选项卡。
  7. 在“系统”下,单击高级系统设置。

    ScratchConfig.CurrentScratchLocation 设置将显示暂存分区的当前位置。

  8. ScratchConfig.ConfiguredScratchLocation 字段中,输入此主机唯一的目录路径。

    例如,/vmfs/volumes/DatastoreUUID/DatastoreFolder。

  9. 重新引导主机。

使用 vSphere Client 配置持久暂存位置

 
要使用 vSphere Client 配置 ESXi 的持久暂存位置,请执行以下操作:
  1. 使用 vSphere Client 连接到 vCenter Server 或 ESXi 主机。
  2. 在清单中单击 ESXi 主机。
  3. 单击配置选项卡 >存储器
  4. 右键单击某个数据存储,然后单击浏览
  5. 为此 ESXi 主机创建名称唯一的目录。

    例如:

    locker-ESXHostname

  6. 关闭数据存储浏览器。
  7. 单击软件>高级设置
  8. 选择 ScratchConfig 部分。
  9. 更改 ScratchConfig.ConfiguredScratchLocation 配置选项,指定该目录的完整路径。

    例如:

    /vmfs/volumes/DatastoreUUID/.locker-ESXHostname

    注意:要确定数据存储 UUID,请执行以下操作:
    1. 导航到配置>存储
    2. 选择该数据存储。
    3. 查看“数据存储详细信息”下的“位置”。

      显示的数据存储 UUID 类似于 /vmfs/volumes/51dda02d-fade5016-8a08-005056171889,其中51dda02d-fade5016-8a08-005056171889 为 UUID

  10. 单击确定
  11. 将 ESXi 主机置于维护模式并重新引导,以使配置更改生效。


使用 vCLI 配置持久暂存位置

要使用 vSphere Command-Line Interface 配置 ESXi 的持久暂存位置,请执行以下操作:

注意:有关用法的详细信息,请参见 vSphere Command-Line Interface Documentation
  1. 在 vCLI 的安装位置打开命令提示符。
  2. 使用以下命令获取可从该 ESXi 主机访问的数据存储的列表:

    vifs.plconnectoptions--listds

    例如:

    vifs.pl --serveresx_hostname_or_IP--username root --listds

  3. 使用以下命令为此 ESXi 主机创建名称唯一的目录:

    vifs.plconnectoptions--mkdir "[DatastoreName]DirectoryName"

    例如:

    vifs.pl --serveresx_hostname_or_IP--username root --mkdir "[Datastore1] .locker-ESXHostname"

  4. 使用以下命令检查ScratchConfig.ConfiguredScratchLocation配置选项的当前值:

    vicfg-advcfg.plconnectoptions-g ScratchConfig.ConfiguredScratchLocation

    例如:

    vicfg-advcfg.pl --serveresx_hostname_or_IP--username root -g ScratchConfig.ConfiguredScratchLocation
    Value of ScratchConfig.ConfiguredScratchLocation is /path/to/location


  5. 使用以下命令更改ScratchConfig.ConfiguredScratchLocation配置选项,指定在步骤 3 中创建的目录的完整路径:

    vicfg-advcfg.plconnectoptions-s /vmfs/volumes/DatastoreName/DirectoryNameScratchConfig.ConfiguredScratchLocation

    例如:

    vicfg-advcfg.pl --serveresx_hostname_or_IP--username root -s /vmfs/volumes/Datastore1/.locker-ESXHostname ScratchConfig.ConfiguredScratchLocation

  6. 将 ESXi 主机置于维护模式并重新引导,以使配置更改生效。


使用 PowerCLI 5.1 或更高版本配置持久暂存位置

 
要使用 vSphere PowerCLI 界面配置 ESXi 的持久暂存位置,请执行以下操作:

注意:
  • 继续之前,请先确保存在/tmp/scratch。如果不存在,请使用命令mkdir /tmp/scratch创建一个。
  • 有关 VMware PowerCLI 用法的详细信息,请参见 vSphere PowerCLI documentation
  1. 在 PowerCLI 的安装位置打开命令提示符。
  2. 使用以下命令连接到 ESXi 主机:

    connect-viserveresx_hostname_or_IP

  3. 使用以下命令获取可从该 ESXi 主机访问的数据存储的列表:

    Get-Datastore

  4. 使用以下命令,将数据存储读/写作为 PSDrive 进行挂载:

    New-PSDrive -Name "mounteddatastore" -Root \ -PSProvider VimDatastore -Datastore (Get-Datastore "DatastoreName")

  5. 使用以下命令访问新 PSDrive:

    Set-Location mounteddatastore:\

  6. 使用以下命令为此 ESXi 主机创建名称唯一的目录:

    New-Item "DirectoryName" -ItemType directory

    例如:

    New-Item ".locker-ESXHostname" -ItemType directory

  7. 使用以下命令检查ScratchConfig.ConfiguredScratchLocation配置选项的当前值:

    Get-VMhost | Get-AdvancedSetting -Name "ScratchConfig.ConfiguredScratchLocation"

  8. 使用以下命令更改ScratchConfig.ConfiguredScratchLocation配置选项,指定在步骤 6 中创建的目录的完整路径:

    Get-VMhost | Get-AdvancedSetting -Name "ScratchConfig.ConfiguredScratchLocation" | Set-AdvancedSetting -Value "/vmfs/volumes/DatastoreName/DirectoryName"

    例如:

    Get-VMhost | Get-AdvancedSetting -Name "ScratchConfig.ConfiguredScratchLocation" | Set-AdvancedSetting -Value "/vmfs/volumes/Datastore1/.locker-ESXHostname"

  9. 在出现提示时,选择,修改高级设置。
  10. 将 ESXi 主机置于维护模式并重新引导,以使配置更改生效。


使用技术支持模式配置持久暂存位置

要在 ESXi 上使用技术支持模式配置持久暂存空间,请执行以下操作:

注意:
  • 可以通过本地控制台或 SSH 完成此操作。
  • .filename是隐藏文件。要查看隐藏文件,请使用ls -a命令。
  1. 打开 ESXi 主机的控制台。有关详细信息,请参见 Using Tech Support Mode in ESXi 4.1 and 5.0 (1017910)
  2. 使用以下命令获取可从该 ESXi 主机访问的数据存储的列表:

    ls /vmfs/volumes

  3. 使用以下命令为此 ESXi 主机创建名称唯一的目录:

    mkdir /vmfs/volumes/DatastoreName/DirectoryName

    例如:

    mkdir /vmfs/volumes/Datastore1/.locker-ESXHostname

  4. 使用以下命令检查 ScratchConfig.ConfiguredScratchLocation 配置选项的当前值:

    vim-cmd hostsvc/advopt/view ScratchConfig.ConfiguredScratchLocation

    例如:

    (vim.option.OptionValue) [
    (vim.option.OptionValue) {
    dynamicType =unset,
    key = "ScratchConfig.ConfiguredScratchLocation",
    value = "/path/to/location",
    }
    }


  5. 使用以下命令更改 ScratchConfig.ConfiguredScratchLocation 配置选项,指定在步骤 3 中创建的目录的完整路径:

    vim-cmd hostsvc/advopt/update ScratchConfig.ConfiguredScratchLocation string /vmfs/volumes/DatastoreName/DirectoryName

    例如:

    /bin/vim-cmd hostsvc/advopt/update ScratchConfig.ConfiguredScratchLocation string /vmfs/volumes/Datastore1/.locker-ESXHostname

  6. 将 ESXi 主机置于维护模式并重新引导,以使配置更改生效。


使用 kickstart 脚本进行脚本式安装时配置持久暂存位置

您可以通过将命令添加到 kickstart 脚本(该操作可以创建目录并更改配置选项),在 kickstart 安装过程中为 ESXi 配置持久暂存空间。有关 ESXi 脚本式部署的详细信息,请参见 ESXi Installable and vCenter Server Setup Guide

将以下命令附加到自定义 kickstart 脚本中:
# Generate a new scratch directory for this host on a Datastore
scratchdirectory=/vmfs/volumes/DatastoreName/.locker-$(hostname 2> /dev/null)-$(esxcfg-info -b 2> /dev/null)

# Create the scratch directory
mkdir -p $scratchdirectory

# Change the advanced configuration option
vim-cmd hostsvc/advopt/update ScratchConfig.ConfiguredScratchLocation string $scratchdirectory

注意:配置的暂存位置会在 ESXi 主机启动期间激活。执行上述命令后,必须进行重新引导。

Additional Information

有关在具有支持 NFS 的暂存的主机上升级 Cisco Nexus 1000V 模块时的已知问题的信息,请参见 Cannot upgrade Cisco Nexus 1000V module on ESXi host configured with NFS backed scratch (2004978)

有关暂存分区的信息,请参见:


如果主机的运行时间超过 24 小时,则在执行上述步骤之后,此设置可能不再有效。 在这种情况下,请执行以下步骤:

  1. 将主机置于“维护模式”并重新引导主机。
  2. 单击配置选项卡。
  3. 单击软件
  4. 单击高级设置
  5. 选择 ScratchConfig 部分。
  6. 更改 ScratchConfig.ConfiguredScratchLocation 配置选项,将其设置为该目录的完整路径。

    例如:

    /vmfs/volumes/DatastoreName/.locker-ESXHostname

  7. 单击确定
  8. 关闭窗口。
  9. 单击高级设置重新打开此窗口。
  10. 选择 ScratchConfig 部分。
  11. 验证 ScratchConfig.ConfiguredScratchLocation 字段是否包含您在步骤 6 中配置的暂存设置。 如果是,则重新引导主机。

    现在,主机使用配置的暂存分区。


有关确定是否为磁盘设备的详细信息,请参见 Identifying disks when working with VMware ESX (1014953),并查看 esxcfg-scsidevs -l 命令输出中的 Is Local 标志:

  • 如果“本地”为 true,则该存储设备不可在多个 ESXi 主机之间共享。
  • 如果“本地”为 false,则该存储设备是远程设备,可能可以在多个 ESXi 主机之间共享。 远程设备不会自动用于 ESXi 的暂存。


启动期间,ESXi 会按如下优先顺序选择其中的一个暂存位置:

  1. 如本文所述,通过 ScratchConfig.ConfiguredScratchLocation 配置选项设置的、在 /etc/vmware/locker.conf 配置文件中配置的位置。
  2. 本地引导设备上的 Fat16 文件系统,至少 4 GB。
  3. 本地设备上的 Fat16 文件系统,至少 4 GB。
  4. 本地设备上 .locker/ 目录中的 VMFS 数据存储。
  5. ramdisk 位于 /tmp/scratch/。

下面列举了两个示例,其中,不能自动在持久存储上定义暂存空间。 在每种情况下,将在 ramdisk 上配置临时暂存位置:

  • 将 ESXi 部署在闪存或 SD 设备上,包括 USB 密钥。 由于可用的读/写周期可能受限,不会在闪存或 SD 存储设备上创建暂存分区,即使在安装期间连接这些设备也是如此。
  • 采用“从 SAN 引导”配置部署 ESXi 或将它部署到 SAS 设备。 “从 SAN 引导”或 SAS LUN 被视为“远程”设备,可以在多个 ESXi 主机之间共享。 远程设备不能用于暂存,以免多个 ESXi 主机之间发生冲突。


有关在 ESXi 5.x 上配置 syslog 的信息,请参见 Configuring syslog on ESXi 5.x (2003322)

Tags

esxi 暂存分区,在主机上的系统日志存储在非持久性存储,安装 esxi

See Also

Request a Product Feature

To request a new product feature or to provide feedback on a VMware product, please visit the Request a Product Feature page.

Feedback

  • 0 Ratings

Did this article help you?
This article resolved my issue.
This article did not resolve my issue.
This article helped but additional information was required to resolve my issue.

What can we do to improve this information? (4000 or fewer characters)




Please enter the Captcha code before clicking Submit.
  • 0 Ratings
Actions
KB: