Troubleshooting 系列之一:ESXi
- 序言
- ESXi排查用到的一些log文件
- ESXi常用命令
- 操作中遇到的问题排查
序言
ESXi 属于vmware的核心产品,是vc等产品构建的基础,所以在遇到vm以及存储等相关问题时,我们需要掌握一些ESXi的排故方法,目前我也只是在摸索阶段,把自己总结的一些内容记录在这里。
ESXi排查用到的一些log文件
- /var/log 路径下的一些常用log文件
log文件名 | log记录的内容 |
---|---|
vmkernel.log | 记录与vm和ESXi相关的一些活动, 包含存储、网络和驱动事件,虚拟机启动和设备发现 |
vmkwarning.log | 从vmkernel.log文件中提取一些告警信息 |
vmksummary.log | 记录esxi启动以及运行情况 |
hostd.log | 记录与esxi管理服务相关的信息,SDK的连接,以及vCenter的task等相关内容 |
vpxa.log | 记录与esxi 上的用于和管理vc进行通信的 agent 的相关信息 |
shell.log | 记录esxi shell 页面里输入过的命令 |
syslog.log | 包含所有常见troubleshooting的log信息 |
举例说明:
我将连到VSS上的vmk0迁移到VDS上以及创建一个新的vmk1,就会在vmkernel.log查看到相关的log信息。
- /vmfs/volumes/ 路径下的一些log文件
该路径下主要存储的是vm的数据信息,通常通过datastore进行文件划分,这些数据信息包含vm的power events, system failure 信息,虚拟硬件的变化,vMotion 以及机器clone等内容。
log文件名 | log记录的内容 |
---|---|
datastore_name/VM_name/vmware.log | 查看特定的vm的log信息 |
举例说明:
ESXi有两个datestore, 一个是local datastore,一个是vsan。
我的vm都存储在vsan上,因此我只需要进到vsan对应的文件下:
默认都是使用ID进行命名,如果rename后,会生成一个link,指向对应的文件
如果要查看某个具体的vm的信息,找到对应的vm_name就可以进行查看,比如说: sfo01m01vc01
ESXi常用命令
-
ESXi DCUI(default console user interface) 和 console 界面的切换
默认情况下,系统启动后,进入到的是DCUI
如果要在DCUI和console口之间进行切换,需要使用 Alt + F1/F2。
Alt + F1:切换到console界面
Alt + F2:切换到DCUI界面 -
namespace信息介绍
ESXCLI是一个用Python实现的脚本,通过namespace和command结合,完成信息的查看和配置。
下面这个表格列出了ESXCLI命令的上层namespace信息以及通过她们可以查看到的相关信息,并且可以通过命令获取到详细的列表信息。
esxcli esxcli command list # 查看所有可用的namespace以及command
ESXCLI namespace | 作用 |
---|---|
device | 列出device manager相关命令 |
fcoe | Fibre channel over ethernet 相关命令 |
graphics | 列出VMware graphics 命令 |
hardware | 列出与硬件相关的查看和配置命令 |
iscsi | 列出与网络存储数据传输相关的iscsi命令 |
network | 列出与通信网络相关的一些设置和查看命令,包括host network和virtualnetwork |
nvme | 管理VMware NVMe driver的扩展 |
rdma | 用于管理 remote direct memory access protocol stack |
sched | 用于配置调度和VMkernel系统属性的相关命令 |
software | 管理ESXi software images以及package |
storage | 用于管理storage的相关命令 |
system | 用于配置VMkernel系统属性、kernel core system 和 system service |
vm | 与控制vm进程相关的一些命令 |
vsna | VMware vSAN相关命令 |
如果命令不容易记忆,可以通过一层层输入namespace,来查看相关的提示信息,例如:
- 常用的一些命令
这里列出了一些我们排查问题时常用的命令:
(1)hardware 相关的常用命令
# 可以查看设备已经安装的PCI devices,通常会在proxy的配置中用到
esxcli hardware pci list
# 查看ESXi server的memory情况
esxcli hardware memory get
(2)System settings相关的命令
# 查看hostname信息
esxcli system hostname get
hostname
# 查看ESXi的版本信息以及build号
esxcli system version get
#
(3)Network相关的命令
# 查看网络的连接状态
esxcli network ip connection list
# 查看安装的网卡信息
esxcli network nic list
# 查看网络接口列表信息
esxcli network ip interface listvmk 信息)
# 查看vmk对应的ipv4地址
esxcli network ip interface ipv4 get
# 查看该ESXi上部署的vm及其连到的portgroup
esxcli network vm list
# 查看具体某个vmnic网络接口的统计信息
esxcli network nic stats get -n vmnic0
(4)storage 相关的命令
# 查看ESXi上的vmfs datastore
esxcli storage vmfs extent list
# 查看 VMFS 文件系统和 disk 之间的映射关系
esxcli storage filesystem list
# 查看挂载的NFS信息
esxcli storage nfs list
# 列出所有的存储设备信息
esxcli storage core device list
#
(5)software相关的信息
# 查看ESXi上安装的VIB package
esxcli software vib list
# 进行VIB包的安装
esxcli sfotware vib install -v /vmfs/volumes/xxxxxxx/xxxxxxx.vib
(6)vm操作相关的命令
# 查看在ESXi上运行的vm
esxcli vm process list
# 使用vm的World ID, 通过以下命令将vm poweroff
esxcli vm process kill -w xxxxxx -t soft
esxcli vm process kill -w xxxxxx -t hard # 立即shutdown
esxcli vm process kill -w xxxxxx -t force # poweroff vm,通常在前两条命令不生效时使用
操作中遇到的问题排查
- 进入console界面后无法操作
这是由于默认情况下,ESXi shell是disable状态,需要配置enable才能进行操作。
解决方法有3中:
方式一: 通过DCUI界面enable
1)进入DCUI后,按 F2,输入用户名密码后,进入配置界面
2)选择Troubleshooting Options
3)在enable ssh处回车,即可修改ssh service
**方式二:**通过ESXi UI界面enable
1)通过https://<esxi_ip_address>/ 使用root用户进行登录
2)找到 ssh service 配置对应的位置
Manage – – Services – – TSX-SSH 选中后,点击Action – start 即可。
方式三:通过VC页面进行操作
1)在ESXi添加到vc之后,通过登录vc的操作页面
2)选中对应的host – – Configure – – Services – – SSH – – Start
- 当ESXi有多个vmk,并且分别连到不通的vds或者logical switch上,如果想验证某个vmk的网络连通性,可以通过指定对应的vmk来进行ping操作
esxcli network ip interface ipv4 get # 先获取vmk对应的subnet信息
vmkping -I vmkxxx xxx.xxx.xxx.xxx # 通过指定vmk及对端ip进行ping操作