[TOC]

0x00 前言描述

描述:VMware基础设施上需要的更多虚拟化管理,关键在于任务的自动化;虽然VMware ESX主机可以管理与vSphere客户端用户界面,数据中心管理员往往喜欢登录到VMware服务控制台和使用ESX命令行来解决,如网络配置问题或重新配置主机。

关于Linux的而一些基础命令我就不说了,本文主要针对于 VMware ESX和ESXI的特定命令进行讲解

  • VMware ESX和ESXi的命令可以运行在ESX服务控制台(本地或远程使用Secure Shell)或RCLI(在VMware Infrastructure 3)和vSphere CLI的(在vSphere)
  • 在RCLI和vSphere CLI中 注意到很多命令已更名为vicfg,而不是esxcfg -(即esxcfg - nics.pl和vicfg - nics.pl),两个命令都执行相同的功能但VMware试图从esxcfg迁移到vicfg


0x01 常用命令

描述:由于采用了借鉴Linux的内核(官方说是自研内核),但是不开放源代码谁知道呢,其系统带有Linux内核相关味道,其采用了BusyBox工具箱里面放置了常见的Linux命令;

EXSi 操作系统命令一览:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# Linux工具三巨头命令查找,显示和搜索文件。
find #找出具体的文件
grep #在拼接的所有文件中找到所需文本
awk #字符分割与正则匹配

# 文件内容
cat #显示文件内容
tail #显示一个文本的最后部分的文件,也可以输出到监控实时文件、
nano #编辑文本文件(新手推荐)
vi #编辑文本文件

# 用户与进程权限
su #用户切换
sudo #命令权限控制和防止root帐户被使用

# 进程服务管理
service #可以启动、停止和重新启动主机服务器上的服务(或程序)常见的ESX服务包括MGMT的和VMware、vmware-vpxa、firewall、vmware-hostd和vmware Web Access。
ps #进程服务查看
kill #强行终止VM进程

# 磁盘与文件系统查看
df #文件系统显示(存储默认VMFS-5格式,系统默认是vfat格式)
vdf #显示文件系统(分区)的资料,包括自由空间。

# 基本的网络故障排除命令
ping #通信查看
vmkping #

# 系统配置常用命令
ntpq #使用 NTP Query 实用程序 ntpq 远程查询 ESXi/ESX 主机的 ntpd 服务。

# ESXi 服务停止与重启
shutdown.sh
services.sh {start,stop,restart}


#####################
# VMware ESX和ESXi命令
#####################
vmware #ESXI相关版本西悉尼
vmware-cmd # 负责管理和检索虚拟机信息。它可以改变虚拟机电源状态、管理快照、注册和注销的用户,并检索和设置各种虚拟机的信息。 (6.0没有)
vim-cmd #VMware的vim - cmd是一种逻辑的vimsh,能够简化vimsh,无需知道很多前端交换命令。
vmkfstools #可用于复制、转换、重命名、输入、输出和调整虚拟磁盘文件的大小。
vm-support #一个强大的信息收集工具,常用于故障排除。该命令收集大量信息、日志文件,并把很多命令以单一的tgz存档文件方式输出。它也可以用来显示VM的信息以及停止没有响应的虚拟机。

esxtop #它提供实时的CPU、内存、硬盘和网络使用的历史表现的统计数字。
esxcfg-nics #观察和配置物理网络接口卡(NIC)。它显示网卡状态和配置的速度和全双工网卡。
esxcfg-vswitch #显示和配置虚拟交换机。它是在vSphere不能使用网络中有用的配置客户端。该命令用于配置端口组和连接物理网卡(称为上行)配置虚拟局域网ID,思科协议(CDP)和vswitch中的MTU。
esxcfg-vmknic #配置VMkernel网络接口,这是VMotion和连接到iSCSI和网络文件系统的网络存储设备所必要的。
esxupdate #更新ESX和ESXi主机和打补丁。 Esxupdate用于ESX服务控制台和vihostupdate,通过RCLI / vSphere CLI使用。此外,vihostupdate35是用来修补ESX和ESXi 3.5版主机。

svmotion #$RCLI/vSphere CLI命令用于发起Storage VMotion的迁移虚拟机虚拟磁盘到另一个数据存储空间。此命令的ESX 3.5版本是唯一启动SVMotion的方法,加上vSphere客户端的GUI,vSphere能做到这一点。
esxcfg-mpath #显示和设置一台主机从所有路径到达它的存储设备。
Esxcfg-rescan #让主机产生一个特定的存储适配器,用来发现新的存储设备。这是非常有用的工具,存储设备已被添加,删除或从存储网络改变。

esxcfg-ipsec #显示信息和配置内置的防火墙保护ESX服务控制台
esxcfg-info #命令提供了有关运行中的主机信息。它可以重新定向到一个文本文件记录主机配置。

#6.0没有的命令
esxcfg-firewall
esxcfg-vswif #允许您查看和配置vSwitches特殊的端口组,配置的ESX服务控制台网络接口,它也被称为vswif港口。
Esxcfg-auth #在ESX主机上配置服务控制台验证,它可以配置第三方LDAP或Active Directory服务器的身份验证并设置多个本地安全选项。


0x01 基础命令

vmware 命令

描述:显示当前EXSI主机的相关版本信息

1
2
3
[[email protected]:~] vmware -vl
VMware ESXi 6.0.0 build-3620759
VMware ESXi 6.0.0 Update 2


vmkping 命令

描述:Ping通过发送Internet控制消息协议数据包测试与其他主机和网络设备的网络连接。
Vmkping是VMware的Ping命令的特定版本,它使用的IP VMkernel去Ping另一个ESX主机的VMkernel端口。此命令有助于解决VMotion和网络存储的问题。

基础示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#1.其中 x.x.x.x 是要 ping 的服务器的主机名或 IP 地址。
$vmkping 127.0.0.1
# PING 127.0.0.1 (127.0.0.1): 56 data bytes
# 64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.024 ms

#2.如果环境中配置了巨型帧,请在运行 vmkping 命令时包含 -s 和 -d 选项。
$vmkping -d -s 8972 127.0.0.1
# PING 127.0.0.1 (127.0.0.1): 8972 data bytes
# 8980 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.034 ms

#3.5.1版本中使用 -I 选项指定要将哪个 vmkernel 端口用于传出 ICMP 流量:
[[email protected]:~] esxcfg-vmknic -l
Interface Port Group/DVPort/Opaque Network IP Family IP Address Netmask Broadcast MAC Address MTU TSO MSS Enabled Type NetStack
vmk0 Management Network IPv4 192.168.1.188 255.255.255.0 192.168.1.255 64:00:6a:6c:14:ca 1500 65535 true STATIC defaultTcpipStack
vmk0 Management Network IPv6 fe80::6600:6aff:fe6c:14ca 64 64:00:6a:6c:14:ca 1500 65535 true STATIC, PREFERRED defaultTcpipStack

[[email protected]:~] vmkping -I vmk0 192.168.1.201
PING 192.168.1.201 (192.168.1.201): 56 data bytes
64 bytes from 192.168.1.201: icmp_seq=0 ttl=62 time=0.620 ms
64 bytes from 192.168.1.201: icmp_seq=1 ttl=62 time=0.637 ms

#4.在 vSphere 5.5 中,VXLAN 具有其自己的 vmkernel 网络堆栈,因此必须使用以下任一语句从 ESXi 控制台执行对传输 VLAN 中两个不同 vmknic 之间的 ping 连接性测试:
vmkping ++netstack=vxlan <vmknic IP> -d -s <packet size>
[[email protected]:~] vmkping ++netstack=vxlan 127.0.0.1 -d -s 64
Killed

注意事项:

  • 如果发现 ping 操作出现间歇性成功,可能表明 vMotion 端口上的绑定网卡中存在不兼容的网卡。请选择兼容的网卡进行绑定,或将其中一个网卡设置为备用 (standby)
  • 如果用服务器主机名执行 ping 命令时没有看到响应,请使用 IP 地址执行 ping 命令。对 IP 地址启动 ping 操作,可以判断故障是否由主机名解析问题所引起。如果要测试到另一个服务器上的另一个 VMkernel 端口的连接,请谨记要使用 VMkernel 端口的 IP 地址,因为服务器的主机名通常会解析至远程服务器上的服务控制台地址


estop 命令

描述:它提供实时的CPU、内存、硬盘和网络使用的历史表现的统计数字。与linux中top异曲同工之妙;

1
2
3
4
5
6
7
$ estop
5:02:37am up 35 days 10:28, 570 worlds, 8 VMs, 30 vCPUs; CPU load average: 0.17, 0.17, 0.17
PCPU USED(%): 9.4 8.5 9.9 6.4 10 9.7 8.5 8.1 AVG: 8.8
PCPU UTIL(%): 11 9.7 10 7.7 11 10 9.7 8.6 AVG: 9.9
CORE UTIL(%): 18 16 18 16 AVG: 17
ID GID NAME NWLD %USED %RUN %SYS %WAIT %VMWAIT %RDY %IDLE %OVRLP %CSTP
3443044 3443044 K8S-Master-211 9 17.12 18.15 0.16 896.85 0.00 1.60 387.85 0.11 0.00


vim-cmd 命令

描述:Vimsh是一个强大的交互式框架,有很多允许执行的命令,以及具备显示和配置能力,而vim-cmd是是一种逻辑的vimsh,能够简化vimsh,无需知道很多前端交换命令。

1
2
3
4
5
6
7
# 查看可用命令
[[email protected]:~] vim-cmd hostsvc/
Commands available under hostsvc/:

# 进入或者退出维护模式
vim-cmd /hostsvc/maintenance_mode_enter
vim-cmd /hostsvc/maintenance_mode_exit
WeiyiGeek.

WeiyiGeek.


esxcfg-info 命令

描述:提供了有关运行中的主机信息,它可以重新定向到一个文本文件记录主机配置即导出为xml或者perl解析格式。

基础信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#主机信息
$ esxcfg-info | more
+Host :
\==+Hardware Info :
|----BIOS UUID................................................0x4c 0x4c 0x45 0x44 0x0 0x57 0x30 0x10 0x80 0x42 0xb3 0xc0 0x4f 0x38 0x38 0x32
|----Product Name.............................................Precision T1700
|----Vendor Name..............................................Dell Inc.
|----Serial Number............................................3W0B882
|----Hardware Uptime..........................................3066504523329
|----Ipmi Supported...........................................false
\==+PCI Info :


#以特定的格式进行打印
$ esxcfg-info -s -F xml


vm-support 命令

描述:该命令收集大量信息、日志文件,并把很多命令以单一的tgz存档文件方式输出

1
2
3
4
5
6
7
#常用于故障排除,它可以进行信息收集
[[email protected]:~] vm-support
06:42:45: Creating /var/tmp/esx-localhost-2019-12-06--06.42.tgz
06:43:05: Gathering output from /usr/sbin/localcli --plugin-dir /usr/lib/vmware/esxcli/int systemInternal coredump06:43:05: Gathering output from /usr/sbin/vmkerrcode -l

[[email protected]:~] ls -lah /var/tmp/esx-localhost-2019-12-06--06.42.tgz
-rwx------ 1 root root 67.8M Dec 6 06:46 /var/tmp/esx-localhost-2019-12-06--06.42.tgz
WeiyiGeek.

WeiyiGeek.


esxupdate 命令

描述:ESX和ESXi主机和打补丁, Esxupdate 用于ESX服务控制台和vihostupdate通过RCLI / vSphere CLI使用。此外vihostupdate35是用来修补ESX和ESXi 3.5版主机。

1
2
3
4
[[email protected]:~] esxupdate
Options:
-h, --help show this help message and exit
--HA HA mode only, required


####


0x02 磁盘管理

df 命令

描述:该不会显示虚拟机文件系统(VMFS)卷,因为它无法阅读。

1
2
3
4
5
6
7
8
9
10
[[email protected]:~] df -h
Filesystem Size Used Available Use% Mounted on
VMFS-5 931.2G 574.3G 356.9G 62% /vmfs/volumes/ds5
VMFS-5 465.5G 421.5G 44.0G 91% /vmfs/volumes/ds2
VMFS-5 465.5G 264.3G 201.2G 57% /vmfs/volumes/ds3
VMFS-5 458.2G 301.1G 157.2G 66% /vmfs/volumes/ds1
vfat 285.8M 202.6M 83.2M 71% /vmfs/volumes/40b466b0-95e35fd0-0d26-64006a6c14ca
vfat 249.7M 170.9M 78.8M 68% /vmfs/volumes/ec0dcc7f-6713c574-0f64-2a38ec4ed097
vfat 4.0G 29.1M 4.0G 1% /vmfs/volumes/40b466b2-b745fce4-2631-64006a6c14ca
vfat 249.7M 16.0K 249.7M 0% /vmfs/volumes/40f32077-1ca96d84-254b-6fcc7ff43ff7


vdf 命令

描述:该命令的VMware的版本,这也将显示VMFS卷的信息。df与vdf命令都可以使用H变换,可用易读的形式显示。(即2 GB 而不是2016044

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[[email protected]:~] $vdf -h
Tardisk Space Used
sb.v00 139M 139M
s.v00 315M 315M
lsi_mr3.v00 280K 277K
lsi_msgp.v00 460K 456K
bnxtnet.v00 412K 408K
net_tg3.v00 300K 298K

-----
Ramdisk Size Used Available Use% Mounted on
root 32M 240K 31M 0% --
etc 28M 224K 27M 0% --
opt 32M 0B 32M 0% --
var 48M 452K 47M 0% --
tmp 256M 4K 255M 0% --
iofilters 32M 0B 32M 0% --
hostdstats 303M 5M 297M 1% --

# resource pool view (资源池查看)
[[email protected]:~] $vdf -ph
-----
Ramdisk Min Max Used Sure avl Maybe avl Peak used
root 32M 32M 240K 31M 31M 240K
etc 28M 28M 224K 27M 27M 256K
opt 0B 32M 0B 0B 32M 0B
var 5M 48M 452K 4M 47M 516K
tmp 2M 256M 4K 1M 255M 296K
iofilters 0B 32M 0B 0B 32M 0B
hostdstats 0B 303M 5M 0B 297M 5M


vmkfstools 命令

描述:虚拟磁盘工具被比做虚拟磁盘中的瑞士军刀,可用于复制、转换、重命名、输入、输出和调整虚拟磁盘文件的大小。

前面我们讲解虚拟磁盘类型:

  • 厚置备 延迟置零 (默认选项):创建过程中为虚拟磁盘分配所需空间。创建时不会擦除物理设备上保留的任何数据,但是以后从虚拟机首次执行写操作时会按需要将其置零 ;
  • 厚置备 置零 : 创建支持群集功能的厚磁盘,在创建时为虚拟磁盘分配所需的空间,创建中会将物理设备上保留数据置零。创建所需的时间可能会比创建其他类型的磁盘长。
  • 精简置备: 使用该磁盘最初所需要的数据存储空间,简单的说就是当前磁盘有多大的数据就存储占用磁盘多大的空间,存在一个问题精简配置只增长不收缩;


vmdk有两种文件类型:

  • 虚拟机名.vmdk,文件很小,存放了虚拟磁盘的一些配置信息(如虚拟磁盘数据文件等);
  • 虚拟机名-flat.vmdk,实际数据都存放在flat.vmdk文件中转换时需要使用vmdk文件而不是flat.vmdk文件

语法命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#1.虚拟磁盘类型转换(thick to thin)
vmkfstools -i <source-disk-name.vmdk>-d {thin|thick} <destination-disk-name.vmdk>
# -i <source-disk-name.vmdk> 参数 :原vmdk磁盘名
# -d {thin|thick}<destination-disk-name.vmdk> :目标磁盘的格式 thin或thick; <destination-disk-name.vmdk>为要生成的目标vmdk磁盘名;


#2.更改虚拟磁盘(vmdk)大小
#特別注意的是,如果此虚拟机已有快照,请先删除所有快照在执行以下操作,否则这个VMDK将出错,內部的资料丢失。
vmkfstools -X [新的大小] [目的vmdk文件]


#3.创建fs虚拟磁盘格式及其块大小
vmkfstools -C --createfs vmfs3
-b --blocksize #[mMkK]
-S --setfsname fsName
-Z --spanfs span-partition
-G --growfs grown-partition

操作实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#1.虚拟机所在的datastore目录,每个目录为一个虚拟机/vmfs/volumes/datastore1
#使用vmkfstools将厚模式的vmdk文件克隆为精简的vmdk磁盘文件
vmkfstools -i converter-two.vmdk -d thin converter-two_new.vmdk #转换后将生成两个新的vmdk和flat.vmdk文件
vmkfstools --inflatedisk /vmfs/volumes/DatastoreName/VMName/VMName.vmdk #精简置备转换至厚置备置零
vmkfstools --eagerzero /vmfs/volumes/DatastoreName/VMName/VMName.vmdk #厚置备延迟置零转换至厚置备置零

#转换前后的存储大小区别
20.0G converter-two-flat.vmdk #厚置备 延迟置零
64.0k converter-two.vmdk
7.9G converter-two_new-flat.vmdk #精简模式
64.0k converter-two_new.vmdk

#备份源vmdk将新生成的vmdk和flat.vmdk磁盘文件分别重命名为原有磁盘名称
$ mv converter-two_new.vmdk converter-two.vmdk
$ mv converter-two_new-flat.vmdk converter-two-flat.vmdk

#编辑 vmdk 文件,确保 # Extent description "converter-two-flat.vmdk" 为原有磁盘名称
$ cat converter-two.vmdk
# Extent description
RW 41932416 VMFS "converter-two-flat.vmdk"

#启动虚拟机检查是否工作正常,对比精简置备与厚置备大小
$ du -sh *500.0M converter-two-326dc793.vswp

-------------------------------------------------------------

#2.更改虚拟磁盘(vmdk)大小 (一定要删除所有快照进行操作)
$ disk -l /dev/sda #当前虚拟机虚拟磁盘大小
Disk /dev/sda: 21.4 GB, 21469396992 bytes

# 关闭虚拟机,登陆ESXI调整虚拟磁盘大小为40G
vmkfstools -X 40g converter-two.vmdk

# 开启虚拟机,验证虚拟磁盘大小
fdisk -l /dev/sda
Disk /dev/sda: 42.9 GB, 42949672960 bytes


0x03 硬件驱动

lspci 命令 - 列出当前系统PCI设备信息

描述: 常见的PCI设备比如显卡/网卡/HBA卡/Raid卡等等,默认情况下它显示一个简短的设备列表,对于输出的某些部分,特别是在高度冗长的模式中,可能只有经验丰富的PCI黑客才能理解。

注意:对PCI配置空间的某些部分的访问限制在许多操作系统上的根用户,因此lspci的特性对普通用户可用性是有限的。

所属软件包:pciutils-3.6.4
语法参数:

1
2
3
4
# [基础参数]
-m #Dump PCI device data in a backward-compatible machine readable form. See below for details.
-mm #Dump PCI device data in a machine readable form for easy parsing by scripts. See below for details.
-t # Show a tree-like diagram containing all buses, bridges, devices and connections between them.

基础示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 1.显示EXSI主机加载的HBA卡PCI适配器
[[email protected]:~] lspci | grep HBA
0000:04:00.0 Mass storage controller: LSI Dell 12Gbps SAS HBA external [vmhba3]

# 2.Linux主机种的PCI设备信息
$lspci
# 00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 01)
# 00:01.0 PCI bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 01)
# 00:07.0 ISA bridge: Intel Corporation 82371AB/EB/MB PIIX4 ISA (rev 08)
# 00:07.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)
# 00:07.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08)
# 00:07.7 System peripheral: VMware Virtual Machine Communication Interface (rev 10)
# 00:0f.0 VGA compatible controller: VMware SVGA II Adapter
# 00:10.0 SCSI storage controller: LSI Logic / Symbios Logic 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (rev 01)
# 00:11.0 PCI bridge: VMware PCI bridge (rev 02)

# 3.Linux主机HBA设备识别信息查看与系统块查看
$lspci | grep "SAS"
# 01:00.0 RAID bus controller: Broadcom / LSI MegaRAID SAS-3 3108 [Invader] (rev 02)
# 04:00.0 Serial Attached SCSI controller: Broadcom / LSI SAS3008 PCI-Express Fusion-MPT SAS-3 (rev 02) # 主机适配器标识 04:00.0
$ ll /sys/block/ | grep 04:00.0 # 主机适配器标识 04:00.0
lrwxrwxrwx 1 root root 0 Sep 11 16:57 sdb -> ../devices/pci0000:00/0000:00:02.0/0000:04:00.0/host4/port-4:2/end_device-4:2/target4:0:2/4:0:2:1/block/sdb/ # 获取存储设备LUN卷映射到主机的设备ID 4 0 2 1
lrwxrwxrwx 1 root root 0 Sep 11 16:57 sdc -> ../devices/pci0000:00/0000:00:02.0/0000:04:00.0/host4/port-4:2/end_device-4:2/target4:0:2/4:0:2:2/block/sdc/
lrwxrwxrwx 1 root root 0 Sep 11 15:15 sdd -> ../devices/pci0000:00/0000:00:02.0/0000:04:00.0/host4/port-4:1/end_device-4:1/target4:0:1/4:0:1:1/block/sdd/
lrwxrwxrwx 1 root root 0 Sep 11 15:15 sde -> ../devices/pci0000:00/0000:00:02.0/0000:04:00.0/host4/port-4:1/end_device-4:1/target4:0:1/4:0:1:2/block/sde/

# 4.以树形结构显示系统中的PCI设备
lspci -t -v| more
-+-[0000:ff]-+-08.0 Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 0
| +-08.2 Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 0
| +-08.3 Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 0
| +-09.0 Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 1
| +-09.2 Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 1
| +-09.3 Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D QPI Link 1
\-[0000:00]-+-00.0 Intel Corporation Xeon E7 v4/Xeon E5 v4/Xeon E3 v4/Xeon D DMI2
+-01.0-[01]----00.0 Broadcom / LSI MegaRAID SAS-3 3108 [Invader]
+-02.0-[04]----00.0 Broadcom / LSI SAS3008 PCI-Express Fusion-MPT SAS-3


ethtool 命令

描述:查看你网卡

1
2
3
4
5
6
#查看网卡驱动与esxcfg-nices可得更详细的网卡信息
[[email protected]:~] ethtool -i vmnic0
driver: tg3
version: 3.131d.v60.4
firmware-version: FFV20.2.17 bc 5720-v1.39
bus-info: 0000:02:00.0


esxcfg-nics 命令

描述:观察和配置物理网络接口卡(NIC),它显示网卡状态和配置的速度和全双工网卡使用情况的等信息。

1
2
3
4
5
6
7
#查看网卡网卡相关信息
[[email protected]:~] esxcfg-nics -l
Name PCI Driver Link Speed Duplex MAC Address MTU Description
vmnic0 0000:02:00.0 tg3 Up 100Mbps Full 18:66:da:55:a8:83 1500 Broadcom Corporation NetXtreme BCM5720 Gigabit Ethernet
vmnic1 0000:02:00.1 tg3 Down 0Mbps Half 18:66:da:55:a8:84 1500 Broadcom Corporation NetXtreme BCM5720 Gigabit Ethernet
vmnic2 0000:03:00.0 tg3 Down 0Mbps Half 18:66:da:55:a8:85 1500 Broadcom Corporation NetXtreme BCM5720 Gigabit Ethernet
vmnic3 0000:03:00.1 tg3 Down 0Mbps Half 18:66:da:55:a8:86 1500 Broadcom Corporation NetXtreme BCM5720 Gigabit Ethernet


esxcfg-vmknic 命令

描述:EXSI主机配置VMkernel网络接口这是VMotion和连接到iSCSI和网络文件系统的网络存储设备所必要的。

基础示例:

1
2
3
4
5
# 获取可用 VMkernel 网络接口的列表:
$ esxcfg-vmknic -l
Interface Port Group/DVPort IP Family IP Address Netmask Broadcast MAC Address MTU TSO MSS Enabled Type
vmk0 iSCSI IPv4 10.10.10.10 255.255.255.0 10.10.10.255 00:50:56:XX:XX:64 9000 65535 true STATIC
vmk1 Management Network IPv6 fe80::6600:6aff:fe6c:14ca 64 64:00:6a:6c:14:ca 1500 65535 true STATIC, PREFERRED defaultTcpipStack


esxcfg-vswitch

描述:显示和配置虚拟交换机,它是在vSphere不能使用网络中有用的配置客户端;
该命令用于配置端口组和连接物理网卡(称为上行)配置虚拟局域网ID,思科协议(CDP)和vswitch中的MTU

1
2
3
4
5
6
7
$ esxcfg-vswitch -l
# Switch Name Num Ports Used Ports Configured Ports MTU Uplinks
# vSwitch0 1792 13 128 1500 vmnic0

# PortGroup Name VLAN ID Used Ports Uplinks
# VM Network 0 9 vmnic0
# Management Network 0 1 vmnic0


esxcfg-mpath 命令

描述:显示和设置一台主机从所有路径到达它的存储设备。

1
2
3
4
5
6
7
8
9
10
11
[[email protected]:~] esxcfg-mpath -l
sata.vmhba32-sata.0:0-t10.ATA_____TOSHIBA_MQ01ACF050____________________________
Runtime Name: vmhba32:C0:T0:L0
Device: t10.ATA_____TOSHIBA_MQ01ACF050_________________________________957EWA
Device Display Name: Local ATA Disk (t10.ATA_____TOSHIBA_MQ01ACF050__________
Adapter: vmhba32 Channel: 0 Target: 0 LUN: 0
Adapter Identifier: sata.vmhba32
Target Identifier: sata.0:0
Plugin: NMP
State: active
Transport: sata


esxfg-rescan 命令

描述: 让主机产生一个特定的存储适配器,用来发现新的存储设备。存储设备已被添加,删除或从存储网络改变都可以进行扫描显示;

基础语法

1
2
3
4
5
6
7
8
esxcfg-rescan -h
#esxcfg-rescan <vmkernel SCSI adapter name> #其中 <vmkernel SCSI adapter name> 为要重新扫描的 vmhba#。
esxcfg-rescan <options> <adapter>
-a|--add Scan for only newly added devices.
-d|--delete Scan for only deleted devices.
-A|--all Scan all adapters.
-u|--update Scan existing paths only and update their state.
-h|--help Display this message.

基础示例:

1
2
3
[[email protected]:~] esxcfg-rescan -a
Missing Adapter Name
[[email protected]:~] esxcfg-rescan -a vmhba33


esxcfg-scsidevs 命令

描述:显示存储器适配器相关数据以及硬件设备信息

1
2
3
4
5
[[email protected]:~] esxcfg-scsidevs -a
vmhba39 ahci link-n/a sata.vmhba39 (0000:00:1f.2) Intel Corporation Wellsburg AHCI Controller
vmhba0 lsi_mr3 link-n/a sas.51866da06f803b00 (0000:01:00.0) LSI PERC H730 Mini
vmhba1 ahci link-n/a sata.vmhba1 (0000:00:11.4) Intel Corporation Wellsburg AHCI Controller
vmhba3 lsi_msgpt3 link-n/a sas.51866da091944100 (0000:04:00.0) Avago (LSI Logic) Dell 12Gbps SAS HBA external


esxcfg-module 命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#查看Radi卡驱动     
$ esxcfg-module -i lsi_mr3 | more
input file: /usr/lib/vmware/vmkmod/lsi_mr3
License: GPLv2
Version: 6.605.08.00-7vmw.600.1.17.3029758
Name-space:
Required name-spaces:
[email protected]_3_0_0
Parameters:
max_sectors: int
Maximum number of sectors per IO command
mfiDumpFailedCmd: int
Hex dump of failed command in driver log

#EXSI6.5上禁用(disable) lsi_msgpt3
$ esxcfg-module -d lsi_msgpt3


vmkmgmt_keyval 命令

描述:主要是对于虚拟机的EXSI管理以及硬件信息查看

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#查看HBA卡固件
/usr/lib/vmware/vmkmgmt_keyval/vmkmgmt_keyval -a
Listing all system keys:
Key Value Instance: lsi_msgpt3_0/LSI
Listing keys:
Name: DriverVersion
Type: string
value: 16.00.01.00
Name: HBAModel
Type: string
value: Avago (LSI) HBA 1000:97:1028:1f46
Name: FWVersion
Type: string
value: Fw Rev. 09.00.09.00
Name: ChipRevision
Type: string
value: Chip rev. 0x02
Name: CtrlSASAddress
Type: string
value: sas.51866da091944100
Name: CtrlStatus
Type: string
value: FwState 0x20000000
Name: CtrlLoggingLevel
Type: string
value: logging_level(4-Bytes)=0x00000000


vmkload_mod 命令

1
2
3
#EXSI虚拟机内核模块加载信息查看
$ vmkload_mod -s lsi_msgpt3 | grep Version
Version: 06.255.12.00-8vmw.600.1.17.3029758

0x04 防火墙

esxcfg-ipsec 命令

描述:显示信息和配置内置的防火墙保护ESX服务控制台。它允许和阻止特定的TCP /IP服务之间的控制台和其他网络设备端口。
基础语法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
esxcfg-ipsec
esxcfg-ipsec <options>
--add-sa 添加安全关联 requires sa-src,sa-dst,spi, sa-mode, ealgo and ialgo
--add-sp 添加安全策略, requires sp-src, src-port,
sp-dst, dst-port, action, ulproto, dir, sp-mode
sa-name. Specify sa-name only for unique SA, otherwise specify 'auto'.
--remove-sa Remove the given Security Association from kernel.
--remove-sp Remove the given Security Policy from kernel.
--flush-sa Remove all SAs
--flush-sp Remove all SPs
-l|--list-sa List all SAs.
-L|--list-sp List all SPs.
--sa-src SA source IPv6 address <X:X:X:X>
--sp-src SP source IPv6 address and prefix length <X:X:X::/X>
--sa-dst SA destination IPv6 address <X:X:X:X>
--sp-dst SP destination IPv6 address and prefix length <X:X:X::/X>
--src-port Source Port for SP
--dst-port Destination Port for SP
--ulproto Upper layer protocol for SP <any|tcp|udp|icmp6>
any, tcp, udp or icmpv6
--dir Flow direction for SP <in|out>
--action Action for SP <none|discard|ipsec>.
--sa-mode SA mode <transport|tunnel>.
--sp-mode SP mode <transport|tunnel>.
--sa-name SA name. Specify 'auto' to let vmkernel automatically choose an SA.
If no applicable SA exists, then vmkernel may request one using IKE.
--spi SPI value for the SA.
--ealgo Encryption algorithm for the SA <null|3des-cbc|aes128-cbc>.
--ekey Encryption key (ASCII or hex). Length of hex key is dependent upon algorithm used.
(optional if ealgo is null).
--ialgo Integrity algorithm for the SA <hmac-sha1|hmac-sha2-256>.
--ikey Integrity key (ASCII or hex). Length of hex key is dependent upon algorithm used.
--ike-conf Pass an IKE config path to IKE daemon, this will copy the config to IKE config and restart

基础示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#显示防火墙策略设置
$ esxcfg-ipsec -l
SA Name Src Addr Dst Addr State SPI Mode Encrypt Algo Integrity Algo Lifetime

#To add a SA(安全关联)
esxcfg-ipsec --add-sa --sa-src x:x:x:: --sa-dst x:x:x:: --sa-mode transport --ealgo null --spi 0x200 --ialgo hmac-sha1 --ikey key saname

#to add a SP(安全策略)
esxcfg-ipsec --add-sp --sp-src x:x::/x --sp-dst x:x::/x --src-port 100 --dst-port 200 --ulproto tcp --dir out --action ipsec --sp-mode transport --sa-name saname spname
esxcfg-ipsec --add-sp --sp-src any -sp-dst any --src-port any --dst-port any --ulproto any --dir out --action ipsec --sp-mode transport --sa-name saname spname
esxcfg-ipsec --add-sp --sp-src x:x::/x --sp-dst x:x::/x --src-port 100 --dst-port 200 --ulproto tcp -dir out --action discard spname

#删除安全关联何策略
esxcfg-ipsec --remove-sa saname #To delete a SA
esxcfg-ipsec --remove-sp spname #To delete a SP

#To delete an auto SA
esxcfg-ipsec --remove-sa --sa-src x:x:x:: --sa-dst x:x:x:: --spi 0x300 auto

#To flush all SPs
esxcfg-ipsec --flush-sp


0x05 管理命令

esxcli 命令

描述:这是一个管理EXSI的客户端管理的命令,他有非常丰富的二级命令可监控管理EXSI虚拟机;

software
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#显示安装的HBA卡软件驱动vib列表
[[email protected]:~] esxcli software vib list | grep lpfc
lpfc 10.2.309.8-2vmw.600.0.0.2494585 VMware VMwareCertified 2016-09-07

[[email protected]:~] esxcli software vib list | grep "msgpt3"
lsi-msgpt3 06.255.12.00-8vmw.600.1.17.3029758 VMware VMwareCertified 2016-09-07
lsu-lsi-lsi-msgpt3-plugin 1.0.0-1vmw.600.0.0.2494585 VMware VMwareCertified 2016-09-07


#安装网卡或者HBA卡驱动
esxcli software vib install -v /tmp/net-i40e_2.0.7-1OEM.600.0.0.2494585.vib
esxcli software vib install -d /tmp/net-i40e_2.0.7-1OEM.600.0.0.2494585.zip

#移除网卡或者HBA卡驱动
esxcli software vib remove -n net-i40e
esxcli software vib remove –n lsi-msgpt3

#执行完成后重启生效:
reboot


system
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 系统版本信息
$esxcli system version get
# Product: VMware ESXi
# Version: 6.0.0
# Build: Releasebuild-2494585
# Update: 0
# Patch: 0

# 要在ESXi 6.0和5.5上禁用lsi_msgpt3 模块请运行
esxcli system module set --enabled=false --module=lsi_msgpt3

# 硬件与软件时间设定与信息查看
# Usage: esxcli system time set [cmd options]
# Description:
# set Set the system clock time. Any missing parameters will default to the current time
# Cmd options:
# -d|--day=<long> Day
# -H|--hour=<long> Hour
# -m|--min=<long> Minute
# -M|--month=<long> Month
# -s|--sec=<long> Second
# -y|--year=<long> Year
esxcli system time set -y 2020 -M 07 -d 12 -H 17 -m 52 -s 35
esxcli hardware clock set -y 2020 -M 07 -d 12 -H 17 -m 52 -s 35
esxcli system time get


storage
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#该命令类似于esxcfg-scsidevs -a命令
[[email protected]:~] esxcli storage core adapter list
HBA Name Driver Link State UID Capabilities Description
-------- ------- ---------- -------------------- ------------ ----------------------------------------------------------
vmhba38 ahci link-n/a sata.vmhba38 (0000:00:1f.2) Intel Corporation Wellsburg AHCI Controller
vmhba39 ahci link-n/a sata.vmhba39 (0000:00:1f.2) Intel Corporation Wellsburg AHCI Controller
vmhba0 lsi_mr3 link-n/a sas.51866dd06f813b00 (0000:01:00.0) LSI PERC H730 Mini
vmhba1 ahci link-n/a sata.vmhba1 (0000:00:11.4) Intel Corporation Wellsburg AHCI Controller
vmhba2 ahci link-n/a sata.vmhba2 (0000:00:1f.2) Intel Corporation Wellsburg AHCI Controller


#列出ESXi主机的所有LUN的路径信息(若挂载的磁盘较多打印信息会较多)
[[email protected]:~] esxcli storage core path list
fc.20000024ff2969e3:21000024ff2969e3-fc.500b34200ff50800:500b34200ff50803-naa.600b3428259
e037de06fd0f2ed0000d8
UID: fc.20000024ff2969e3:21000024ff2969e3-fc.500b34200ff50800:500b34200ff50803-naa.600
b3428259e037de06fd0f2ed0000d8 Runtime Name: vmhba3:C0:T3:L1
Device: naa.600b3428259e037de06fd0f2ed0000d8
Device Display Name: MacroSAN Fibre Channel Disk (naa.600b3428259e037de06fd0f2ed0000d8
) Adapter: vmhba3
Channel: 0
Target: 3
LUN: 1
Plugin: NMP
State: active
Transport: fc
Adapter Identifier: fc.20000024ff2969e3:21000024ff2969e3
Target Identifier: fc.500b34200ff50800:500b34200ff50803
Adapter Transport Details: WWNN: 20:00:00:24:ff:29:69:e3 WWPN: 21:00:00:24:ff:29:69:e3
Target Transport Details: WWNN: 50:0b:34:20:0f:f5:08:00 WWPN: 50:0b:34:20:0f:f5:08:03
Maximum IO Size: 33553920
#若要查询LUN的详细路径信息,可使用如下命令列出某个卷的信息。
[[email protected]:~] esxcli storage core path list -d naa.61866da089f2cf001fe33f1f14adc14f #其中-d参数加上该lun的wwn号
sas.51866da089f2cf00-sas.60e33f1f14adc14f-naa.61866da089f2cf001fe33f1f14adc14f
UID: sas.51866da089f2cf00-sas.60e33f1f14adc14f-naa.61866da089f2cf001fe33f1f14adc14f
Runtime Name: vmhba0:C2:T0:L0
Device: naa.61866da089f2cf001fe33f1f14adc14f
Device Display Name: DELL Serial Attached SCSI Disk (naa.61866da089f2cf001fe33f1f14adc14f)
Adapter: vmhba0
Channel: 2
Target: 0
LUN: 0
Plugin: NMP
State: active
Transport: sas
Adapter Identifier: sas.51866da089f2cf00
Target Identifier: sas.60e33f1f14adc14f
Adapter Transport Details: 51866da089f2cf00
Target Transport Details: 60e33f1f14adc14f
Maximum IO Size: 131072

# 查询当前系统所有lun的active的路径条数
# 若该数值减去系统盘的路径=存储分配的路径数量,表明当前识别路径数量正确。
[[email protected]:~] esxcli storage core path list | grep "State: active" | wc -l
5

# 查询单独某个LUN的路径的数量,以LUN:2为例
[[email protected]:~] esxcli storage core path list | grep "LUN: 2" | wc -l


#列出连接到ESXi的LUN列表
[[email protected]:~] esxcli storage core device list
naa.600b34236b6535ddb013d87d6d5a00d8
Display Name: MacroSAN Fibre Channel Disk (naa.600b34236b6535ddb013d87d6d5a00d8)
Has Settable Display Name: true
Size: 2097152
Device Type: Direct-Access
Multipath Plugin: NMP
Devfs Path: /vmfs/devices/disks/naa.600b34236b6535ddb013d87d6d5a00d8
Vendor: MacroSAN
Model: LU
Revision: 1.0
SCSI Level: 5
Is Pseudo: false
Status: on
Is RDM Capable: true
Is Local: false
Is Removable: false
Is SSD: false
Is VVOL PE: false
Is Offline: false
Is Perennially Reserved: false
Queue Full Sample Size: 0
Queue Full Threshold: 0
Thin Provisioning Status: unknown
Attached Filters:
VAAI Status: supported
Other UIDs: vml.0200030000600b34236b6535ddb013d87d6d5a00d84c5500000000
Is Shared Clusterwide: true
Is Local SAS Device: false
Is SAS: false
Is USB: false
Is Boot USB Device: false
Is Boot Device: false
Device Max Queue Depth: 64
No of outstanding IOs with competing worlds: 32
Drive Type: unknown
RAID Level: unknown
Number of Physical Drives: unknown
Protection Enabled: false
PI Activated: false
PI Type: 0
PI Protection Mask: NO PROTECTION
Supported Guard Types: NO GUARD SUPPORT
DIX Enabled: false
DIX Guard Type: NO GUARD SUPPORT
Emulated DIX/DIF Enabled: false


network

描述:控制台通过客户端命令进行查看测试EXSI网络信息;

1
2
#1.VXLAN 具有其自己的 vmkernel 网络堆栈,因此必须使用以下任一语句从 ESXi 控制台执行对传输 VLAN 中两个不同 vmknic 之间的 ping 连接性测试:
esxcli network diag ping --netstack=vxlan --host <vmknic IP> --df --size=<packet size>


0x06 系统配置

ntpq 命令

描述:使用 NTP Query 实用程序 ntpq 远程查询 ESXi/ESX 主机的 ntpd 服务。该实用程序通常安装在 Linux 客户端上,在 ESX 服务控制台和 vSphere Management Assistant 中也提供;

基础示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 1.要使用 NTP Query 实用程序 ntpq 远程查询 ESX 主机的 NTP 服务 (ntpd),并确定其是否成功与上游 NTP 服务器同步,请执行以下操作:
$ntpq -p 127.0.0.1
remote refid st t when poll reach delay offset jitter
==============================================================================
*192.168.10.254 144.76.76.107 3 u 53 64 377 1.158 0.805 0.058

# 字段含义说明:
remote #已配置的上游 NTP 服务器的主机名或 IP 地址。
refid #与 NTP 服务器同步的时间流的标识。如果收到的 refid 为“.INIT.”,则说明 ESXi/ESX 主机未从已配置的 NTP 服务器收到响应。
st #Stratum 值代表上游 NTP 服务器的层次结构。值越高,表明 NTP 服务器越偏离根时间源。这些值是相对值,可以通过 NTP 服务器手动设置。
t #用于 NTP 通信的软件包交换类型。通常“u”表示单播 UDP。
when #自上次尝试轮询已配置的上游 NTP 服务器以来所经过的时间(秒)。
poll #ESXi/ESX 主机轮询已配置的 NTP 服务器的间隔(秒)。
reach #8 位八进制 (base 8) 的移位寄存器,在连接已配置的 NTP 服务器时,每一位代表成功 (1) 或失败 (0)。值 377 是 11111111 (base 2),指出在上 8 个轮询间隔期间,每个查询均已成功。
delay #已配置的 NTP 服务器与 ESXi/ESX 主机之间通信的往返延迟(毫秒)。
offset #已配置 NTP 服务器与 ESXi/ESX 主机之间的时间偏移(毫秒)。理想值为接近 0 的值。
jitter #在已配置 NTP 服务器的时间时钟脉冲之间观察到的时间抖动或偏差。理想值为接近 0 的值。

默认情况下ESXi/ESX 使用 NTPv4,但某些 NTP 源会使用 NTPv3 ,此类版本不匹配问题将导致同步失败。要解决此问题必须更新 /etc/ntp.conf 文件以包含要使用的版本。

1
2
3
4
5
6
7
8
9
10
$cat /etc/ntp.conf
restrict 127.0.0.1
restrict default kod nomodify notrap
driftfile /etc/ntp.drift
server 192.168.0.10 version 3
#注意:要检查最终 ntpq 偏移的延迟,可使用以下命令创建名为 /var/log/ntp 的文件夹 `mkdir /var/log/ntp`
statistics loopstats
statsdir /var/log/ntp/
filegen peerstats file peers type day link enable
filegen loopstats file loops type day link enable

注意事项:

  • 如果收到消息“No association ID’s returned”,ESXi/ESX 主机将无法连接已配置的 NTP 服务器。如果收到消息“***Request timed out”,则说明 ntpq 命令未从 ESXi/ESX 主机的 NTP 守护进程收到响应。
  • 如果显示类似以下内容的消息,则表明 ntpd 成功连接到远程 NTP 服务器: ntpd[263140]:synchronized to **, stratum **
  • 如果显示类似以下内容的消息,则表明 ESXi/ESX 主机与远程 NTP 服务器之间的时间偏移过高,无法自动更正。手动设置 ESXi/ESX 主机时间,并再次启动 NTP 守护进程。 ntpd[263140]:** 秒的时间更正超出健全性限制 (1000);手动设置时钟以更正 UTC 时间。
  • 如果显示类似以下内容的消息,则表明 ESXi/ESX 主机与远程 NTP 服务器之间的时间错误超出了步进阈值。NTP 守护进程已更正 ESXi/ESX 主机时间,以便在一个大跳跃中与 NTP 服务器相匹配。无需执行任何操作。 ntpd[263140]:time reset "+/- "
  • 如果显示类似以下内容的消息,则表明 ESXi/ESX 主机与远程 NTP 服务器之间的时间错误超出了步进阈值。NTP 守护进程将缓慢更正 ESXi/ESX 主机的时间,以与 NTP 服务器相匹配。无需执行任何操作。 ntpd[263140]:time slew "+/- "
  • VMware 建议仅配置一次服务(netlogond 或 ntp)。但是如果需要将 NTP 与 Active Directory (AD) 结合使用,则配置 AD 服务器以使用可靠的时间源,并配置 ESXi/ESX 主机的 NTP 服务器以使用此 AD 服务器或者 AD 正在使用的 NTP 服务器。