菜鸟科技网

ESXi命令有哪些常用操作?

ESXi 是一个专用的、基于 Linux 的 hypervisor,其核心是一个名为 ESXi Shell 的命令行界面,掌握这些命令对于日常管理、故障排查和自动化至关重要。

ESXi命令有哪些常用操作?-图1
(图片来源网络,侵删)

如何进入 ESXi 命令行界面?

在执行任何命令之前,你需要先获得访问权限。

通过 vSphere Client (HTML5) 或 vSphere Web Client

这是最推荐、最安全的方式。

  1. 使用管理员账户登录 vSphere Client。
  2. 在左侧导航栏中,右键点击你的 ESXi 主机,选择 “服务” (Services)
  3. 在服务列表中,找到 “ESXi Shell”“SSH”
  4. 启动 SSH 服务:点击 SSH 旁边的“开始”按钮,这会允许你通过 SSH 客户端(如 PuTTY, Xshell, MobaXterm)远程连接。
  5. 启动并连接 ESXi Shell:点击 ESXi Shell 旁边的“启动”按钮,然后点击“操作” -> “浏览控制台”,这会直接在浏览器中打开一个文本模式的终端。

安全建议:在完成管理工作后,请务必将 SSH 和 ESXi Shell 服务状态设置为“手动”,并在“策略”中取消勾选“在启动时加载”,以减少攻击面。

通过物理控制台

如果你无法通过网络访问,可以直接连接到服务器的物理键盘和显示器,登录后即可使用命令行。

ESXi命令有哪些常用操作?-图2
(图片来源网络,侵删)

ESXi 命令分类详解

ESXi 的命令可以分为以下几大类:

基础系统信息命令

这些命令用于快速了解系统状态。

命令 功能描述 示例
--version-v 显示 ESXi 的版本号和构建号。 vmware -v
uptime 显示系统运行了多长时间以及负载情况。 uptime
hostname 显示或设置系统的主机名。 hostname
date 显示或设置系统日期和时间。 date
w 显示当前登录的用户以及他们正在运行的进程。 w

网络配置命令

网络是虚拟化的基础,这些命令非常常用。

命令 功能描述 示例
esxcli network ip interface list (最常用) 列出所有网络接口(vSwitch, vmk, vNIC)。 esxcli network ip interface list
esxcli network ip interface ipv4 get -i <vmkX> 获取指定接口(如 vmk0)的 IPv4 配置信息。 esxcli network ip interface ipv4 get -i vmk0
esxcli network ip interface ipv4 set -i <vmkX> -t <static/dhcp> -I <IP> -N <Mask> -G <Gateway> (最常用) 设置指定接口的 IPv4 地址。 esxcli network ip interface ipv4 set -i vmk0 -t static -I 192.168.1.100 -N 255.255.255.0 -G 192.168.1.1
esxcli network vswitch standard list 列出所有标准虚拟交换机。 esxcli network vswitch standard list
esxcli network vswitch standard portgroup list 列出所有端口组。 esxcli network vswitch standard portgroup list
esxcli network firewall ruleset list 列出所有防火墙规则集及其状态。 esxcli network firewall ruleset list

存储管理命令

管理数据存储、磁盘和路径。

ESXi命令有哪些常用操作?-图3
(图片来源网络,侵删)
命令 功能描述 示例
esxcli storage core adapter list 列出所有存储适配器(HBA卡)。 esxcli storage core adapter list
esxcli storage core path list (故障排查常用) 列出所有存储路径及其状态。 esxcli storage core path list
esxcli storage nmp satp list 列出所有 SATP(存储类型路径策略)。 esxcli storage nmp satp list
esxcli storage nmp psp list 列出所有 PSP(路径选择策略)。 esxcli storage nmp psp list
esxcli storage vmfs extent list 列出 VMFS 数据存储的所有 extent。 esxcli storage vmfs extent list
esxcli storage vmfs snapshot list -d < datastore_name > 列出指定数据存储的快照信息。 esxcli storage vmfs snapshot list -d datastore1

虚拟机管理命令

直接在 ESXi Shell 中管理虚拟机。

命令 功能描述 示例
vim-cmd vmsvc/getallvms (最常用) 列出所有注册在 ESXi 主机上的虚拟机及其 ID、路径、配置文件名等。 vim-cmd vmsvc/getallvms
vim-cmd vmsvc/power.getstate <VM_ID> 获取指定 VM_ID 的虚拟机电源状态。 vim-cmd vmsvc/power.getstate 2
vim-cmd vmsvc/power.on <VM_ID> 开启指定 ID 的虚拟机。 vim-cmd vmsvc/power.on 2
vim-cmd vmsvc/power.off <VM_ID> 正常关闭指定 ID 的虚拟机。 vim-cmd vmsvc/power.off 2
vim-cmd vmsvc/power.reset <VM_ID> 强制重启指定 ID 的虚拟机(等同于断电再上电)。 vim-cmd vmsvc/power.reset 2
vim-cmd vmsvc/snapshot.get <VM_ID> 获取指定虚拟机的快照信息。 vim-cmd vmsvc/snapshot.get 2

服务与进程管理

命令 功能描述 示例
services.sh 管理 ESXi 服务的脚本。 services.sh --status (查看所有服务状态)
ps 显示当前运行的进程。 ps aux
top 实时显示系统进程和资源占用情况。 top
kill 终止一个进程。 kill -9 <PID>

文件系统与日志管理

命令 功能描述 示例
ls 列出目录内容。 ls /vmfs/volumes/
cd 切换目录。 cd /var/log
cat / less / more 查看文件内容。 less /var/log/hostd.log
tail -f (故障排查常用) 实时查看日志文件的尾部内容。 tail -f /var/log/messages
find 查找文件。 find / -name "*.log"
cp / mv / rm 复制、移动、删除文件。 cp /some/file /vmfs/volumes/datastore1/
mkdir 创建目录。 mkdir /vmfs/volumes/datastore1/new_folder

用户与权限管理

命令 功能描述 示例
esxcli system account list 列出所有本地用户账户。 esxcli system account list
esxcli system account add -i <username> -p <password> -c <operator> 创建一个新的本地用户。 esxcli system account add -i troubleshooter -p MyPassword123 -c operator
esxcli system account delete -i <username> 删除一个本地用户。 esxcli system account delete -i troubleshooter

硬件信息与诊断

命令 功能描述 示例
esxcli hardware platform get 获取硬件平台信息(如 BIOS、iDRAC/iLO 版本)。 esxcli hardware platform get
esxcli hardware pci list 列出所有 PCI 设备。 esxcli hardware pci list
esxcli hardware storage list 列出所有存储设备。 esxcli hardware storage list
esxcli system maintenanceMode get 检查主机是否处于维护模式。 esxcli system maintenanceMode get
esxcli system maintenanceMode set -e <true/false> 进入或退出维护模式。 esxcli system maintenanceMode set -e true

实用技巧与示例

场景1:忘记 root 密码怎么办?

  1. 重启 ESXi 主机

  2. 在出现 VMware Boot Loader 时,立即按 Shift+O 键,进入引导选项编辑界面。

  3. 在光标处,输入 boot -s 然后回车,这会以单用户模式启动。

  4. 系统会进行一系列硬件检测,最后进入 提示符。

  5. 执行以下命令重置密码:

    # 进入单用户模式后,文件系统是只读的,需要先重新挂载为可读写
    mount -o remount,rw /
    # 使用 passwd 命令重置 root 密码
    passwd
    # 按提示输入新密码两次
    # 重启主机
    reboot -f

场景2:排查虚拟机卡顿,怀疑是存储问题

  1. 检查存储路径状态

    esxcli storage core path list

    查看 State 列,如果出现 deadunresolved,说明对应路径有问题。

  2. 查看存储适配器驱动和固件

    esxcli storage core adapter list

    记下 Driver 和 Firmware 版本,去硬件厂商官网检查是否有更新。

  3. 查看系统日志

    tail -f /var/log/messages | grep -i "scsi"

    查找与 SCSI 或存储相关的错误信息。

场景3:快速复制一个虚拟机

假设你想复制 VM1VM2,并且它们都在 datastore1 上。

# 1. 关闭虚拟机 VM1
vim-cmd vmsvc/power.off <VM_ID_of_VM1>
# 2. 复制虚拟机目录
cp -r /vmfs/volumes/datastore1/VM1 /vmfs/volumes/datastore1/VM2
# 3. 重命名或修改 VM2 的配置文件
# 进入 VM2 目录
cd /vmfs/volumes/datastore1/VM2
# 重命名 .vmx 文件
mv VM1.vmx VM2.vmx
# 4. 编辑 VM2.vmx 文件,修改唯一标识符
vi VM2.vmx
# 修改以下行,确保它们是唯一的:
# displayName = "VM2"
# nvram = "VM2.nvram"
# ... 等等
# 5. 重新注册虚拟机
vim-cmd solo/registervm /vmfs/volumes/datastore1/VM2/VM2.vmx
# 6. 启动虚拟机 VM2
# 首先通过 vim-cmd vmsvc/getallvms 找到新 VM 的 ID
vim-cmd vmsvc/power.on <new_VM_ID>

重要提醒

  • 安全第一:在生产环境中操作前,请务必在测试环境中验证你的命令,错误的命令可能导致服务中断或数据丢失。
  • 善用 --help:几乎所有 esxcli 命令都支持 --help 参数,esxcli network ip interface --help,可以查看该命令的详细用法和子命令。
  • 日志是你的朋友:当遇到问题时,/var/log 目录下的日志文件(如 messages, hostd.log, fdm.log)是排查问题的最佳线索。
  • 文档是基石:VMware 官方文档是最权威的信息来源,建议经常查阅。
分享:
扫描分享到社交APP
上一篇
下一篇