检查 ESX 或 ESXi 主机上的磁盘空间
search cancel

检查 ESX 或 ESXi 主机上的磁盘空间

book

Article ID: 343526

calendar_today

Updated On:

Products

VMware vSphere ESXi

Issue/Introduction

Symptoms:

免责声明:本文为 Investigating disk space on an ESX or ESXi host (1003564) 的翻译版本。尽管我们会不断努力为本文提供最佳翻译版本,但本地化的内容可能会过时。有关最新内容,请参见英文版本。



  • 虚拟机无法打开电源。
  • 您可能会在 VMware Infrastructure/vSphere Client 中看到下列一个或多个错误:
    • Could not power on VM:No space left on device.Failed to power on VM
    • An unexpected error was received from the ESX host while powering on vm-##

  • 由于 root 分区已满,管理代理 (hostd) 无法启动
  • 由于 root 分区已满,vCenter Server 代理 (vpxa) 无法启动
  • 系统无法在 / 或 /tmp 分区上创建任何新文件或目录
  • 您会看到以下错误:

    The root filesystem's file table is full.As a result, the file /testdir/4344 could not be created by the application 'scp'.

    no space left on device

  • /tmp 目录中充满 cimclient_root* 日志,可能多达数千行(~600,000 或更多)。
  • vpxa 日志可能包含类似以下内容的条目:

    [2008-10-13 11:02:05.423 'Libs' 3076454304 warning] Cannot make directory /var/run/vmware/root/27591:No space left on device
    [2008-10-13 11:02:05.423 'App' 3076454304 error] Exception:Failed to initialize authd server
    [2008-10-13 11:02:05.423 'App' 3076454304 error] Backtrace:
    [00] eip 0x909dd92
    [01] eip 0x9043444
    [02] eip 0x907f975
    [03] eip 0x908024c
    [04] eip 0x9033d74

  • hostd 日志包含以下错误:
    • The virtual machine could not start.Make sure VMware ESX is installed correctly and you have rights to run the software and to access all directories it uses, including directories in which the software is installed, directories containing the virtual disk and configuration files, and directories for temporary files.
    • error code -46

  • vMotion 在完成 10% 时失败
  • VMware High Availability (HA) 配置出现下列错误:

    Configuration of host IP address is inconsistent on host <hostname>: address resolved to <IP Address> and <IPAddress>

  • 更新 ESX 主机时,更新失败并显示以下 /var/log/vmware/esxupdate.log 条目:

    Encountered error FileIOError:The error data is:Filename - None Message - I/O Error (28) on file :[Errno 28] No space left on device Errno - 10 Description - Unable to create, write or read a file as expected.

  • 尝试克隆虚拟机或尝试将虚拟机热迁移 (vMotion) 到其他主机上时,你会看到以下错误:

    A general system error occurred:Failed to create journal file providerFailed to open "/var/log/vmware/journal/1269032951.9" for write


Environment

VMware ESXi 3.5.x Embedded
VMware vSphere ESXi 5.1
VMware ESXi 4.1.x Installable
VMware ESX 4.0.x
VMware vSphere ESXi 6.5
VMware ESXi 4.1.x Embedded
VMware ESX Server 3.0.x
VMware vSphere ESXi 5.5
VMware ESXi 4.0.x Embedded
VMware ESX Server 2.5.x
VMware vSphere ESXi 6.0
VMware ESX 4.1.x
VMware ESX Server 3.5.x
VMware ESXi 3.5.x Installable
VMware vSphere ESXi 5.0
VMware ESXi 4.0.x Installable

Cause

如果 ESX/ESXi 主机上没有足够的可用磁盘空间或者 VMFS 卷上没有足够的空间,则可能发生这些问题。
为了排除故障,您可能需要检查可用磁盘空间。本文提供检查可用磁盘空间的步骤以及根据需要释放空间的步骤。

Resolution

检查 ESX/ESXi 服务控制台分区上的磁盘空间使用情况

要检查 ESX/ESXi 服务控制台分区上的可用空间,请执行以下步骤:

  1. 将控制台打开到 ESX/ESXi 主机。有关详细信息,请参见 Unable to connect to an ESX host using Secure Shell (SSH) (1003807)Using Tech Support Mode in ESXi 4.1 and 5.0 (1017910)

  2. 键入 df -h

    对于 ESX,您会看到以下类似输出:

    Filesystem Size Used Avail Use% Mounted on
    /dev/sda2 4.9G 3.0G 1.6G 66% /
    /dev/sda1 99M 18M 77M 19% /boot
    none 145M 0 145M 0% /dev/shm
    /dev/sda7 2.0G 135M 1.7G 8% /var/log
    [root@server]#

    注意:显示的分区来自 ESX 主机的默认安装。如果您已修改分区配置,显示的输出可能会有所不同。

    对于 ESXi,您会看到以下类似输出:

    Filesystem Size Used Available Use% Mounted on

    visorfs 1.3G 322.3M 1.0G 24% /
    vmfs3 63.3G 570.0M 62.7G 1% /vmfs/volumes/4d71190d-5921bfa8-03ea-001e0be916ba
    vfat 285.9M 135.5M 150.4M 47% /vmfs/volumes/3c3693e8-f77a642a-1910-5c6bdcb26d3a
    vfat 4.0G 2.7M 4.0G 0% /vmfs/volumes/4d71190d-190fbdb0-ff95-001e0be916ba
    vfat 249.7M 102.0M 147.7M 41% /vmfs/volumes/474ef17b-e05aa697-c0fe-f8c0bde4916e
    vfat 249.7M 4.0k 249.7M 0% /vmfs/volumes/51aa187c-89f6786d-a281-5b966197c73c

  3. 检查所列每一项的使用率。如果列出的任意卷 100% 充满,则必须检查它们以确定是否可以释放空间。检查 ESX 默认安装最重要的挂载点是 //var/log 挂载,如果它们已满,将会阻止 ESX 主机正常运行。

  4. 检查完输出后,键入 logout,然后按 Enter 退出系统。

检查 ESX/ESXi 主机的 VMFS 卷上的磁盘空间使用情况

要检查 ESX/ESXi 主机的 VMFS 卷上的可用空间,请执行以下操作:

  1. 将控制台打开到 ESX/ESXi 主机。有关详细信息,请参见 Unable to connect to an ESX host using Secure Shell (SSH) (1003807)Using Tech Support Mode in ESXi 4.1 and 5.0 (1017910)

  2. 使用以下命令确定每个文件系统上的可用磁盘空间:

    vdf -h

    输出如下所示:

    Filesystem Size Used Avail Use% Mounted on
    /dev/sda2 4.9G 3.0G 1.6G 66% /
    /dev/sda1 99M 18M 77M 19% /boot
    none 145M 0 145M 0% /dev/shm
    /dev/sda7 2.0G 135M 1.7G 8% /var/log
    /vmfs/devices 439G 0 439G 0% /vmfs/devices
    /vmfs/volumes/458865ba-b31110fd-43d5-00127994e616
    68G 47G 20G 69% /vmfs/volumes/San_Storage
    /vmfs/volumes/45b5eb1a-808343db-ecab-00114335854b
    26G 9.7G 16G 36% /vmfs/volumes/Local_Storage

    注意:显示的分区取决于您已定义且提供给 ESX 或 ESXi 主机的 VMFS 卷。

  3. 检查所列每一项的使用率。如果列出的任意卷 100% 充满,则必须检查它们以确定是否可以释放空间。如果 VMFS 卷已满,您将无法创建任何新的虚拟机,且使用快照的任何虚拟机都可能会失败。

  4. 检查完输出后,键入 logout,然后按 Enter 退出系统。
注意
  • 另一个有用的命令是 du -h --max-depth=1 <dir>。该命令列出给定文件系统中包含最大文件的目录。从 root (/) 目录开始,找到最大的目录,然后您可以向下钻取到这些目录(使用 cd)并递归执行相同的命令,直到您找到占用空间的文件本身为止。 </dir>
  • du -h 在 ESXi 4.x 上不可用。引用识别 ESX 或 ESXi 主机上的大型文件中的 find 列出最大的文件。

相关信息请参见 Troubleshooting a datastore or VMFS volume that is full or near capacity (1003412)

识别 ESX 或 ESXi 主机上的大型文件

出于若干原因,磁盘上的信息可能会越积越多。在写入大量消息后,日志文件可能会增大。虚拟机或 ISO 等内容可能会被复制到 ESX 或 ESXi 主机,但放在不合适的位置。过去故障产生的 Coredump 可能已累积。

要确认这一点,请检查以下目录的大小:

  • /vmimages/ 目录用于存储操作系统安装文件,如 VMware Tools 或其他 ISO 文件。
  • /var/core//root/ 目录用于存储服务控制台和 VMkernel 上的崩溃文件。
  • /var/log/ 目录用于存储 ESX 主机的大多数日志。
  • /vmfs/volumes/ 数据存数用于存储虚拟机数据。

要查看上面一些常用目录占用的空间,请运行以下命令:

du -ch /vmimages /var/core /root /var/log
注意:此命令在 ESXi 4.x 和 ESXi 5.0 上不可用。

如果您无法确定哪个文件正在占用磁盘空间,请使用 find 命令查找所有符合给定条件的文件。
例如,要在不遍历挂载点的情况下查找 / 中大于 10 MB 的文件,请使用以下命令:
find / -size +10M -exec du -h {} \; | less

要在不遍历挂载点的情况下查找 /var/ 中大于 1 MB 的文件,请使用以下命令:

find /var/ -size +1M -mount -exec du -h {} \; | less

注意
  • 用于查找命令的 -mount 选项在 ESXi 上不可用。
  • ESXi 5.0、ESXi 5.1 和 ESXi 5.5 的参数是不同的。有关详细信息,请参见下文。
-size N[bck] File size is N (c:bytes,k:kbytes,b:512 bytes(def.)).
+/-N: file size is bigger/smaller than N
-print Print (default and assumed)

对于所有超过 1 M 的文件,请使用以下命令:

find / -size +1000k -exec du -h {} \;

注意find 命令非常灵活,可用来查找符合特定条件的文件。有关详细信息,请参见 GNU Find documentation

截至 2013 年 4 月 5 日,上述链接正确无误。如果您发现链接已损坏,请提供反馈,VMware 员工会更新该链接。


删除不需要的文件

以下是可以安全删除的文件的列表:

在确定哪个文件占用磁盘空间后,删除不需要的文件:

  1. 将控制台打开到 ESX 或 ESXi 主机。有关详细信息,请参见 Unable to connect to an ESX host using Secure Shell (SSH) (1003807)Using Tech Support Mode in ESXi 4.1 and 5.0 (1017910)

  2. 使用 rm 命令永久删除文件。例如:

    rm /var/log/oldlogfile

    警告:如果删除文件,该文件将无法恢复。因此,删除文件时要格外小心。如果您不确定能否删除某个特定的文件,请与 VMware 支持部门联系寻求帮助。如果无意中删除某个系统文件,可能会损坏您的 ESX 或 ESXi 主机,您可能需要重新安装此软件。

将日志文件置零

如果使用 du 命令找到的文件较大且您不希望删除这些文件,则可以使用标准重定向命令将文件内容置零。

示例:如果 file.log 容量为 45 MB,您希望保留此文件并清除文件中的所有数据以减少文件大小,则可以通过连接到主机的 SSH 运行以下命令:

# > file.log

零输入到文件的标准重定向会使文件大小变成 0 kb ,且文件名称和权限不变。

归档旧文件

在进行故障排除或趋势分析时,可能需要 ESX 或 ESXi 主机上的历史日志文件作为参考。可以将它们进行压缩和归档,而不是删除。注意,另请参见 vmsupport files left on ESX or ESXi host fill the filesystem on which they reside (1026359)

要压缩历史日志文件,请执行以下操作:

  1. 将控制台打开到 ESX 或 ESXi 主机。有关详细信息,请参见 Unable to connect to an ESX host using Secure Shell (SSH) (1003807)Using Tech Support Mode in ESXi 4.1 and 5.0 (1017910)

  2. 压缩旧的日志文件:

    在 ESX 上,运行以下命令可以压缩旧的 var/log/vmkwarning 和 /var/log/vmkernel 日志文件:

    tar czvf /tmp/vmkwarning-logs.tgz /var/log/vmkwarning*
    tar czvf /tmp/vmkernel-logs.tgz /var/log/vmkernel.*

  3. 在 ESX 和 ESXi 上,运行以下命令可以压缩旧的 /var/log/messages 日志文件:

    tar czvf /tmp/messages-logs.tgz /var/log/messages.*

  4. 使用以下命令移除源文件:

    rm /var/log/vmkwarning.* /var/log/vmkernel.* /var/log/messages.*

  5. 使用以下命令将新的存档文件移回 /var/log/ 分区以便进行长期存储:

    mv /tmp/vmkwarning-logs.tgz/tmp/vmkernel-logs.tgz/tmp/messages-logs.tgz /var/log/


Additional Information

有关建议的分区大小的详细信息,请参见您的 ESX/ESXi 版本对应的 Installation and Upgrade Guide 中的“数据存储分区”部分。

其他 find 命令:

find / -size +10240000c -exec vmkvsitools visorfsdu -h {} \; | less

Investigating disk space on an ESX or ESXi host