|
B2V Guide to VMware ESX Server 3
Last Updated 29th July 2008 by Alistair Sutherland
This guide has been compiled by the consultants & trainers at Taupo Consulting and is based upon their personal experiences with the VMware ESX Server 3 product and is updated frequently. The information in this guide is not verified or sanctioned by VMware Inc. and we encourage our website visitors to use www.vmware.com/vmtn as their primary source of VMware product information. We are of course delighted if you find our shared experience documented in this guide of use in your environment and always appreciate being linked to.
ESX Server 3 is the core component of VMware Virtual Infrastructure 3 and is generally available. The latest versions are ESX 3.5.0 released on December 10th 2007 and ESX 3i version 3.5 released on 20th December 2007.
There is lots of new content coming to the command line guide, so please
forgive the occasional gap as we work on updating the content!
If you are using ESX server 2.x, you can
click here for the command
line guide to ESX 2.x
| The esxcfg- Commands
|
|
| esxcfg- | |
| There are a new set of command line tools in ESX 3.x
which all start with "esxcfg-". These tools are used to configure each
part of the ESX 3.x configuration. For example, esxcfg-firewall is used
to manage the service console firewall while the esxcfg-nic is used to
manage the physical Ethernet adapters present in the server. Watch out for vicfg- commands also. If you are using the RCLI tools for managing ESX 3i, then the esxcfg- tools are now prefixed with vicfg- although the esxcfg- prefix still works.
|
|
| esxcfg-advcfg | |
| The esxcfg-advcfg
command is interesting as there is not a huge amount of help about this
command. However, we can figure out that it is meant to do advanced
configuration and we can figure out some settings that can be made. The
-g switch is used to "get" settings; the -s switch is used to "set"
settings. Here are a few examples of some VMkernel parameters which can be interrogated. [root@esx1host vmware]# esxcfg-advcfg -g
/Misc/BlueScreenTimeout [root@esx1host vmware]# esxcfg-advcfg -g /Misc/HostName The question is, how much is configurable? To figure out what is configurable, we recommend that you look in the directory /proc/vmware/config which you will find in the service console command line and then you will see the following directories BufferCache From these directories and the files within, you can work out the paths to be supplied to the esxcfg-advcfg command as parameters. Alternatively, you could also use the command esxcfg-info –o to list the advanced options. We often see this tool used to make configuration changes relating to storage. For example, below, you can see we are checking to see if we are creating virtual disks in "eager zero" format by default, whether we will discover non-contiguous numbered LUNs, the maximum LUN number addressed,the SCSI conflict retry count and finally the logical volume manager (LVM) setting for resignaturing VMFS volumes. [root@esx1host vmware]# esxcfg-advcfg -g /VMFS3/ZeroedThickVirtualDisks [root@esx1host vmware]# esxcfg-advcfg –g /Disk/SupportSparseLUN [root@esx1host vmware]#
esxcfg-advcfg –g
/Disk/MaxLUN [root@esx1host vmware]#
esxcfg-advcfg –g
/Scsi/ConflictRetries [root@esx1host vmware]# esxcfg-advcfg –g
/LVM/EnableResignature
[root@esx1host vmware]# esxcfg-advcfg -s 16 /Disk/SchedNumReqOutstanding When using the esxcfg-advcfg command, remember case sensitivity!
Usage: esxcfg-advcfg <options> [<adv cfg Path>]
|
|
| esxcfg-firewall | |
| The service console in ESX 3.x has a firewall enabled
by default. The network packet filtering found in Red Hat Linux is
called iptables. As the management of
iptables is not entirely
straightforward, the esxcfg-firewall
command makes things a load easier.
The firewall rules are stored in /etc/vmware/esx.conf, but we don't go
editing this file, we use this command to ensure it is locked while we
make our edits. If you are very interested in the iptables commands used
behind the scenes, then you can inspect the log file
/var/log/vmware/esxcfg-firewall.log We use the esxcfg-firewall command to view and configure the firewall rules. The most popular switch will be the -q switch to query the firewall for its current settings. [root@esxhost1 root]# esxcfg-firewall -q <output> The -s switch will allow you to enable or disable network services that may traverse the firewall successfully. The list of known services are shown below - very case sensitive!.... nfsClient The -l switch loads the firewall and enables the IP tables. The -u switch unloads the firewall and disables the IP tables. We use the -e switch to enable a particular known service, so if we wanted to enable ssh outbound connections from the service console we would simply enter [root@esxhost1 root]# esxcfg-firewall -e sshClient We use the -d switch to disable a service. In the following example, we prevent outbound connections [root@esxhost1 root]# esxcfg-firewall -d smbClient If we need to open a TCP or UDP port that is not described by a defined friendly name like "sshClient", then we can explicitly open that port with the -o switch. The service console firewall is bidirectional and so when opening a port you must also specify direction of incoming or outgoing. Equally, we can close an explicit port with the -c switch. [root@esxhost1 root]# esxcfg-firewall -o port,protocol,direction,name In the following example, we are opening a unique port which we are calling "customapp" [root@esxhost1 root]# esxcfg-firewall -o 12345,tcp,out,custom-app The service names such as sshClient and smbClient are defined in the file /etc/vmware/firewall/services.xml .
|
|
| esxcfg-module | |
| This command is used to view and set options for
start-up on the VMkernel modules (drivers). When this command is used
with the list option, it produces an output similar to
vmkload_mod -list
[root@esx1host root]# esxcfg-module
-l This command is often used when we want to modify a VMkernel module behaviour, for example, if we wanted to change the queue depth of our fibre-channel host bus adapter. In the following example, we are setting the queue depth for our QLogic HBA to 64; up from it's default value of 32. [root@esx1host root]# esxcfg-module -s ql2xmaxdepth64 qla2300_707_vmw To do the same with an Emulex HBA, we would use something like [root@esx1host root]# esxcfg-module -s "lpfc0_lun_queue_depth=64" lpfcdd_7xx
|
|
| esxcfg-rescan | |
| This command is used to perform a rescan of a host bus
adapter (HBA). Specifically it scans a named vmkernel hba device, i.e. a
vmhba. This command does a similar job to vmkfstools -rescan. In this example the esxcfg-rescan command is being used to rescan the VMkernel iSCSI software initiator vmhba. [root@esx1host]# esxcfg-rescan vmhba32
|
|
| esxcfg-upgrade | |
| esxcfg-upgrade -h --help
|
|
| esxcfg-vswitch | |
| This command is one of the most useful commands in the
service console. This command allows you to list, add, modify or delete
virtual Ethernet switches on an ESX host. The simplest option with this
command is the -l option to list the virtual switches and portgroups defined on the
host. [root@esx1host root]# esxcfg-vswitch -l If you are having problems with your ESX server after an in-place upgrade, this tool is invaluable in resolving the problems with service console networking. The output of this command is initially a little intimidating. It is best to keep in mind the network topology: Service Console IP Interface (vswif0) ---- connected to ----> Service Console Port on vSwitch ----- up-linked to ----> vmnic Where a vmnic is a physical Ethernet adapter. In following screenshot taken from the VI Client, we can see this ESX host has 2 connections to vSwitch0, the service console connection a VMkernel port connection.
If we wish to view the same information at the service console command line, we would use the esxcfg-vswitch command with the "-l" switch to list the defined virtual switches. [root@esx1host root]# esxcfg-vswitch -l
Switch Name
Num Ports Used Ports Configured Ports Uplinks
PortGroup
Name Internal ID VLAN ID Used Ports Uplinks If we wanted to add another virtual Ethernet switch, we would use esxcfg-vswitch command with the "-a" switch. Note that the -a is specified in lowercase. Take care to ensure you have specified lowercase because uppercase "A" performs a different function with this command. So, lets add a new virtual switch to our ESX host called vSwitch1 and then list the switches to check our command has worked ok.
[root@esx1host
root]# esxcfg-vswitch -a vSwitch1
Switch Name
Num Ports Used Ports Configured Ports Uplinks
PortGroup
Name Internal ID VLAN ID Used Ports Uplinks Switch
Name Num Ports Used Ports Configured Ports Uplinks PortGroup Name Internal ID VLAN ID Used Ports Uplinks Notice that the number of ports on the virtual switch is 64 on the newly created switch. The original virtual switch has only 32. This difference arises between creating the switch in the VI Client or the command line. Notice also that the used port count doesn't immediately make sense. Each VM consumes a port, each vmnic consumes a port and the uplink itself consumes a port. Anyway, if you are like me and you can never remember which case of the letter "a" to use when adding a virtual switch, then use the esxcfg-vswitch command with the --add switch when creating a new switch like this: esxcfg-vswitch --add vSwitch2 which I think is a little clearer to understand. Now if we want to add a portgroup to the new virtual switch we have created, we can use the esxcfg-vswitch -A command. It does not matter whether you are creating a service console port, a VM port group or a VMkernel port when creating a port group; the way we create the connection to the virtual switch always starts out the same in the command line. Only after creating the port group do we then specify if it is to be anything other than a VM port group. In the following commands, we add a new portgroup called "Production" on the virtual switch vSwitch1.
[root@esx1host
root]# esxcfg-vswitch -A "Production" vSwitch1
Switch Name
Num Ports Used Ports Configured Ports Uplinks
PortGroup
Name Internal ID VLAN ID Used Ports Uplinks Switch
Name Num Ports Used Ports Configured Ports Uplinks
PortGroup
Name Internal ID VLAN ID Used Ports Uplinks Alternatively you could use the following command to add a port group to a virtual switch. [root@esx1host root]# esxcfg-vswitch --add-pg="Production" vSwitch1 This alternative switch of using --ad-pg I think is clearer for understanding what the command is doing. The --add-pg option can clearly be seen to add a portgroup to a virtual switch, and again is simpler to understand than just “-A”. The portgroup name in our example is called “Production”, but it can be what you want. We recommend adoption of a standard across all your virtual infrastructure. I have seen some clients align their portgroup names with the IP subnets, so you could have a portgroup called something like “192.168.1.0 subnet”. Although we have now created a new virtual switch and have created a VM port group on it, the virtual switch itself does not have any uplinks. Remember that when we bind a physical network adapter to a virtual switch we are uplinking a vmnic to the switch and the switch then "owns" that adapter, i.e. it is not available to be used by any other virtual switches. We perform the uplink by using the esxcfg-vswitch command with the -L switch for link. [root@esx1host root]# esxcfg-vswitch -L vmnic1 vSwitch1 So in one simple command we have linked the physical network adapter vmnic1 to our new virtual Ethernet switch vSwitch1. If we then realised we had used the wrong physical adapter, we can just as easily unlink with -U. In the next example, we swap the uplinked vmnic1 for an alternative adapter vmnic2 [root@esx1host root]#
esxcfg-vswitch -U vmnic1 vSwitch1 This changing of vmnic bound to a virtual switch is often required
post-installation, as we may select the wrong physical adapter to use
for the service console during the install and need to correct our
configuration before we can connect to our host with VI client!
To display the CDP configuration setting for a virtual switch, we use the lowercase b switch, where we will find which of the four CDP modes it is in: disable, listen, advertise or both. [root@esx1host root]# esxcfg-vswitch -b
vSwitch0 We can change the CDP mode with the -B (uppercase) option. Here we are changing virtual switch called vSwitch0 to support both advertise and listen.
[root@esx1host root]# esxcfg-vswitch -B both vSwitch0
|
|
| esxcfg-auth | |
| Configures the service console user authentication options
including NIS, LDAP, Kerberos and Active Directory. In the following
command, we are configuring authentication for the Active Directory
domain called taupoconsulting.com
[root@esx1host root]# esxcfg-auth --enablead --addomain=taupoconsulting.com --adddc=dc1.taupoconsulting.com You can also use this tool to set a password policy for service console user accounts. [root@esx1host root]# esxcfg-auth --maxpassdays=90 --minpassdays=30 --passwarnage=75 In the above example, your service console user account password would expire after 90 days, you would get a warning message after 75 and once changed, you would have to keep that password for a minimum period of 30 days.
|
|
| esxcfg-info | |
| Produces an enormous amount of information about the
state ESX
host, often this tool is the one tool that can tell you what is really
going on and not what is in some configuration file. If you run this
command with no parameters, then you really need to pipe this to a file for closer examination!
Over time, less information will be available in the proc nodes (the
/proc/vmware directory structure), so the sooner we can get used
to examining the current running configuration of ESX using this
command, the better off we will be. In this first example, we will run the command with no switches and pipe the result into a file esxinfo.txt. [root@esx1host root]# esxcfg-info >esxinfo.txt If you know the area you are looking at, e.g. storage, then we can launch the tool with the appropriate switch. Here are the six switch options: w hardware If we combine the filtering of the output using the above switches along with a grep filter we can really zoom in on the area we are interested in. An excellent VMware communities post gives an example of using the storage switch whilst looking for Pending reservations on LUNs. We are piping the result of the storage output of esxcfg-info into the input for grep. [root@esx1host]# esxcfg-info -s | grep Pending Check out the
post at
http://communities.vmware.com/thread/156778?tstart=0 |
|
| esxcfg-mpath | |
| Manages storage multi-pathing just as the
vmkmultipath utility did in previous
versions of ESX Server. In the example below we are using the -l switch
to list the storage and paths. [root@esx1host tools-isoimages]#
esxcfg-mpath -l
|
|
| esxcfg-resgrp | |
| Used to manage the new ESX feature called resource
groups. This command can add, remove or modify existing resource groups.
|
|
| esxcfg-hbadevs | |
| The esxcfg-vmhbadevs
command is used to list the equivalent Linux device names for the
visible disk devices that the VMkernel references using vmhba notation.
[root@esx1host root]# esxcfg-vmhbadevs If we use this command with the –m switch, then we only list the LUNs which contain VMFS partitions. Alongside the Linux device name, a long unique hexadecimal value is listed. This is the VMFS volume signature assigned by the new logical volume manager (LVM). [root@esx1host root]# esxcfg-vmhbadevs -m You can view these volumes in the directory /vmfs/volumes/ |
|
| esxcfg-boot | |
| Used to configure the GRUB options presented at boot
time. One thing to note is that the new esxcfg
commands will not run if you boot just into Linux. If you just want to
query the boot settings, you can use the -q
switch but this must be qualified with the keyword
boot or vmkmod.
[root@esx1host root]# esxcfg-boot
-q boot This is also used if you making modifications to VMkernel device drivers defaults. For example, if you were modifying the queue depth for a fibre HBA, you would likely be using esxcfg-module. Then to rebuild the boot image you would enter [root@esx1host root]# esxcfg-boot -m After which, you would do a reboot the host to test that the update to the boot image had worked.
|
|
| esxcfg-init | |
| Should not be run manually!
|
|
| esxcfg-nas | |
|
The esxcfg-nas command is used to list, mount and dismount NFS exports for the VMkernel. In the first example we list the NFS datastores which the VMkernel has mounted.
[root@esx1host
root]# esxcfg-nas -l In the next example, we add a new VMkernel mount to a remote NFS server. This time we are connecting to the NFS server at IP address 100.100.100.253 and the name of the exported directory is “/Test”. We are labelled this NFS mount “NFS02”.
[root@esx1host
etc]# esxcfg-nas -a -o 100.100.100.253 -s /Test NFS02 Remember that to create a connection to an NFS datastore, the VMkernel needs to have an IP address, as it is the NFS client. We give the VMkernel an IP address by creating a VMkernel port on a virtual Ethernet switch. We can do this at the command line using the command esxcfg-vmknic The command line options for esxcfg-nas are: esxcfg-nas <options> [<label>]
|
|
| esxcfg-route | |
| If we add an IP address to the VMkernel by adding a
VMkernel port, then we can fully configure that IP stack by also
assigning a default gateway. We can view (no parameters) and set (1st
parameter) the VMkernel IP default gateway with the
esxcfg-route command as shown here.
[root@esx1host etc]# esxcfg-route [root@esx1host etc]# esxcfg-route 100.100.100.1
|
|
| esxcfg-vmknic | |
| Used to view and set configure the VMkernel ports on
virtual Ethernet switches. A VMkernel port is a special type of port
group on a virtual Ethernet switch which is used to assign an IP address
to the VMkernel. The VMkernel only needs an IP address for VMotion,
software-initiated iSCSI or NFS access. If you need to create a VMkernel port at the command line, then you need to create a port group first and then enable it as a VMkernel port. This tool does not allow you to enable the VMkernel port for VMotion, you must either use vimsh or the VI client for that.
[root@esx1host
root]# esxcfg-vswitch -A VMotion vSwitch0 The above commands would result in an additional connection to the virtual Ethernet switch, specifically a VMkernel port. The esxcfg-vmknic command has assigned the VMkernel an IP address & the portgroup called VMotion is now explicitly VMkernel port. The following screenshot displays the new VMkernel port connection on vSwitch0.
In the following example, we list the VMkernel ports, then use esxcfg-vmknic to delete one of them and then list them again. [root@esx1host etc]# esxcfg-vmknic -l
Port
Group IP Address Netmask Broadcast MAC
Address MTU Enabled
[root@esx1host
etc]# esxcfg-vmknic -d VMotion
Port
Group IP Address Netmask Broadcast MAC
Address MTU Enabled
The command line options are: esxcfg-vmknic <options> [[<portgroup>]]
|
|
| esxcfg-dumppart | |
| Used to configure the VMkernel crash dump partition. The
old ESX 2.x utility for this function (vmkdump) is still present on an
ESX 3 server, but appears just to be for extracting dump files. So far, we have only used this utility to interrogate ESX hosts to determine where the dump partition has been created. Here is an example of viewing the dump partition. # esxcfg-dumppart -l VM Kernel Name Console Name Is Active Is Configured vmhba0:0:0:7 /dev/cciss/c0d0p7 yes yes Remember that the dump partition does not show up when you run the vdf utility. However it is visible if you run fdisk. In the following example, we are running fdisk to view the partitions. We can see the dump partition as c0d0p7, i.e. partition #7. Notice the Id of that partition is "fc", the custom partition type for VMkernel dump partitions. # fdisk /dev/cciss/c0d0 Device Boot Start End Blocks Id System /dev/cciss/c0d0p1 * 1 100 102384 83 Linux /dev/cciss/c0d0p2 101 5100 5120000 83 Linux /dev/cciss/c0d0p3 5101 7100 2048000 83 Linux /dev/cciss/c0d0p4 7101 34699 28261376 f Win95 Ext'd (LBA) /dev/cciss/c0d0p5 7101 7644 557040 82 Linux swap /dev/cciss/c0d0p6 7645 34599 27601904 fb Unknown /dev/cciss/c0d0p7 34600 34699 102384 fc Unknown The command line options are:
esxcfg-dumppart <options> [<partition>]
|
|
| esxcfg-linuxnet | |
| There is not normally a command that a virtual
infrastructure administrator should need. The tool is automatically used
when you start an ESX server in troubleshooting mode; i.e. when you
start only the service console Linux kernel and don't start the
VMkernel.
When you are working in the service console while the VMkernel is loaded, the service console's network interface is not called eth0, but is called vswif0 instead. This is because the service console network interface is provided via a service console portgroup on a virtual Ethernet switch. If you restart your ESX server without the VMkernel, then standard Linux drivers and network card management is used. Therefore the network interface used in troubleshooting mode is called eth0 - just like any other regular Linux box. This tool is called by starting troubleshooting mode to replicate the IP parameters assigned to vswif0 to eth0. Should you want to investigate this command, the options are: esxcfg-linuxnet --setup
|
|
| esxcfg-nics | |
| This tool can be used to view and configure the speed
and duplex settings of the physical network cards in the ESX Server.
This tool can replace the
mii-tool and
modules.conf for network card management. In the following example, we run the list option to view all physical NICs and their properties. [root@esx1host etc]#
esxcfg-nics -l This command has the following optional parameters:
esxcfg-nics <options> [nic] |
|
| esxcfg-swiscsi | |
| ESX server 3 supports both hardware and software
initiated
iSCSI. For hardware iSCSI, we can use host bus adapters which perform
the TCP offload and so the vmkernel can just pass SCSI commands to them
as normal. The iSCSI hba can then wrap the SCSI command in IP transport and
forward them to the iSCSI target.
In VI-3, one of the supported iSCSI hardware HBAs is the QLogic 4052. More information about this particular family of adapters can be found at http://support.qlogic.com/support/product_resources.asp?id=964 In software iSCSI initiator, the wrapping of SCSI commands in IP is performed by the VMkernel and a regular physical network card is used to communicate with the iSCSI target. The software iSCSI configuration is exposed in the VI Client as a host bus adapter called vmhba40 in ESX 3.0.x and is called vmhba32 in ESX 3.5. We can use this command line tool esxcfg-swiscsi to configure the software iSCSI initiator. The software iSCSI initiator in the VMkernel has a dependency upon the service console, therefore both the service console and VMkernel must have an IP route to the iSCSI target. The esxcfg-swiscsi command is not used in isolation, we use it in a sequence of commands to fully configure iSCSI from the service console command line. 1. Add a VMkernel port to a vSwitch that has an uplink and route to
iSCSI target If you want to ensure the VI client reflects the changes made at command line, it is best to restart the vmware management service with the command service mgmt-vmware restart The full list of command line options for this command are:
|
|
| esxcfg-vswif | |
| This tool can manage the Ethernet interfaces of the service console.
In a big change from previous versions of ESX, the Ethernet interface of
the service console is named with the "vswif" prefix and not "eth"
prefix as you may be used to in Linux. During installation of ESX server, your service console Ethernet connection should have been created. However, maybe a mistake was made, or we want to add another service console port for redundancy. In VI Client we can view the network configuration of our ESX host. Here is an example of a typical network configuration. If we use the esxcfg-vswif tool, we are examining, creating or modifying a service console port. So in the first example here, we are simply listing what ports have been created. # esxcfg-vswif -l Name Port Group IP Address Netmask Broadcast Enabled DHCP vswif0 Service Console 192.168.31.31 255.255.255.0 192.168.31.255 true false So the output is showing the same as the graphical output in VI client. If we wanted to add a 2nd service console port, we could use this command. However, all this command will do is turn a regular portgroup into a service console port and bind an IP address to Linux. So in the following command line example, we create a portgroup first, and then we turn it into a service console port with esxcfg-vswif.
# esxcfg-vswitch --add-pg="Service Console
Backup" vSwitch1 So now if we run esxcfg-vswif to list the service console ports, we will be able to see the original service console port as well as our new one we just created. We've shown you the graphical representation as well from the VI client so you can compare. # esxcfg-vswif -l Name Port Group IP Address Netmask Broadcast Enabled DHCP vswif0 Service Console 192.168.31.31 255.255.255.0 192.168.31.255 true false vswif1 Service Console Backup 10.10.1.31 255.255.0.0 10.10.255.255 true false A new function was added to esxcfg-vswitch when ESX 3.5 was released at the end of 2007. This version of ESX server was the first to support Ethernet Jumbo Frames. This is where the MTU size is increased beyond the default 1500 bytes. In the following example, we are changing the maximum MTU for vSwitch1. # esxcfg-vswitch -m 9000 vSwitch1
|
|
| Configuration Files
|
|
| /etc/vmware/esx.conf | |
| An all new configuration file for ESX Server 3.x. This
file replaces the functionality of the following configuration files
found in earlier versions of ESX.
/etc/vmware/hwconfig This file should not be copied from one ESX host to another in order to duplicate configuration, it is unique to the host. The file groups similar settings by using a notation similar to directories and subdirectories; for example, here is a section of esx.conf <output>
|
|
| /etc/nsswitch.conf | |
| This is the name service switch configuration file. If
you need to modify the order of how names in the service console are
resolved, this is the place to make the change. You can view and edit
this conf file as usual.
There will be a number of lines to this file, but the one you are likely to be interested in will start "hosts:" as shown: hosts: files dns In the above example, the name service will use the /etc/hosts file, and then the DNS name server specified in the /etc/resolv.conf file. |
|
| /usr/bin/vmware-watchdog | |
| This process watches over the
hostd process and restarts it if it crashes.
|
|
| hostd | |
| This is the daemon that replaces
vmware-serverd that was
found in the ESX 2.x products. This is the host management agent and is
responsible for a number of key management functions on an ESX host. If
you are having any "host not responding" type problems, before you even
think of an ESX host restart, consider just a restart of the management
agent; it's amazing how often a quick restart of hostd gets things going
again. We can restart the host management agent with the command service mgmt-vmware restart
|
|
| /var/log/vmware/hostd.log | |
| The log file for the host management agent. |
|
| /etc/vmware/firewall/services.xml | |
This file contains the definitions for the TCP ports and
service names used by the service console firewall. When we use the
esxcfg-firewall command to open ports
based on friendly service names such as sshServer, that name is a
definition in this XML file. A typical service definition in this file
looks like <service id='0000'>
<id>sshServer</id>
<rule>
<direction>inbound</direction>
<protocol>tcp</protocol>
<port type='dst'>22</port>
<flags>-m state --state NEW</flags>
</rule>
</service>
You could modify this XML file to include your own definitions but this is not recommended by VMware. The VMware management agent (hostd) will load everything in this file, whether it is valid or not. Also, we have not tested if such a change would persist through a patching/upgrade, but we suspect not. Duncan Epping over at Yellow Bricks has done some great testing and documentation in this space and at the following link demonstrates how to add your own custom.xml file to the /etc/vmware/firewall directory (using same format as services.xml) to provide custom port definitions. You can read all about it at http://www.yellow-bricks.com/2007/12/31/howto-adding-a-firewall-service-on-esx/. Just make sure you use ids in the file that are different than the ones in services.xml.
|
|
| vpxa | |
| This is the name of the VirtualCenter server agent that
runs in the service console of ESX 3.x servers (which was called
vmware-ccagent in ESX 2.x). This can be stopped, started or restarted
with the service command service vmware-vpxa restart
|
|
| /etc/vmware/vpxa.cfg | |
| This is the XML configuration file for the VirtualCenter
Server Agent in the service console. Here is a typical
vpxa.cfg file.
[root@esx1host vmware]# cat vpxa.cfg Notice the <loglevel> tag. If you are
trying to troubleshoot an issue, then increasing the logging level is a
good idea. We have used the level "verbose", there could be a higher
debug level of logging, but we've not tested that. We have also found
the loglevel trivia,
info, warning and
error. |
|
| /var/log/vmware/vpx/vpxa.log | |
| The log file for VirtualCenter agent in the service
console. |
|
| VMware Command Line
Tools
|
|
| vmkfstools | |
| Used to manipulate virtual disks at the service console
command line. It is used most often for import and export operations,
where a virtual disk is converted from monolithic format to sparse
format (previously called COW format). There is a great switch with the command -X which can be used to extend the size of your virtual disk; e.g. if you had a 10GB virtual disk and wanted to expand it to 20GB, you could use this command. The VM would need to be powered off for this to work. vmkfstools -X 20GB /vmfs/volumes/storage1/vm.vmdk Note that the -X switch specifies the NEW SIZE of the virtual disk and NOT how much you are extending it by. If you have used the -X switch before in an older version of ESX server (earlier than 3.0) it was possible to specify a small disk size; thereby making the virtual disk smaller. This was dangerous but useful if your partition within the disk did not consume 100% of the disk size. However, this is not possible with vmkfstools command found in ESX Server version 3.x. From ESX 3.5, the size of a virtual disk can now be increased in the VI Client! VMware are implementing more and more in the user interface, less time needed in the service console command line... Previously, the main use of vmkfstools command was to import or export virtual disks. This would be required if you were deploying templates by hand instead of using VirtualCenter. It was also the primary method for moving VMs between the ESX server product and the hosted VMware products such as VMware Workstation or Server. The reason we say "previously" is that moving VMs between servers or between VMware products has become much simpler and cleaner by using the VMware Converter utility. This tool is task oriented and treats the VM as a whole object, not just the virtual disk files as vmkfstools. If you do want to import virtual hard disks in 2GB sparse format into monolithic format by hand, then we can use vmkfstools command with the -i switch. vmkfstools -i /importfiles/vm.vmdk /vmfs/volumes/storage1/vm/vm.vmdk Notice that the import option requires two parameters, source and destination. This would not create a VM, but would create the monolithic virtual disk for a VM. You could then create a custom VM in the VI Client and select the option to "use an existing disk". If you want to export a virtual disk you no longer use the -d switch, but just use -i and specify the virtual disk type at the destination of the import. So if you were exporting a virtual disk from VMFS to vmkfstools -i /vmfs/volumes/storage1/vm/vm.vmdk -d 2gbsparse /exportvm/vm.vmdk
|
|
| vmware-cmd | |
| This command has been in ESX for a number of versions
and it's functionality has been extended with each major release. We
tend to find that the most frequent use of this command is to register
or power on VMs from the console command line
# vmware-cmd -s register
/vmfs/volumes/SharedVMs/vm1/vm1.vmx If you have a VM that you can't tell if it is powered on or off, you can use the getstate option # vmware-cmd
/vmfs/volumes/SharedVMs/vm1/vm1.vmx getstate If you need to force the VM to power off, the stop hard function will normally do the trick. This is not very graceful, but can save you time if things are not responding. # vmware-cmd /vmfs/volumes/SharedVMs/vm1/vm1.vmx stop hard If there is limited space in your VMFS volumes, then you will likely want to know if any of your VMs are running in snapshot (where the disk writes are going into a disk delta and not the regular parent virtual disk). It is a nice idea to have a short script to enumerate the VMs on your host and loop through them to check each of them to see if they have a snapshot. The vmware-cmd command again helps us out with this.
|
|
| vm-support | |
| A great built-in tool which collects all
configuration files on an ESX host and builds a tar archive that can be sent to
VMware support so they can have a complete picture of your system to assist in
the troubleshooting effort. A useful function of this tool is to list running VMs using the -x switch. [root@esx1 root]# vm-support -x<output> [root@esx1 root]# Watch out for the creation of empty subdirectories of the name "vm-support.<pid-of-process>" in the directory where you run this tool with the -x switch. It is safe to delete these directories. You can't run this command if your current directory is /proc. A less well-known option of vm-support is the ability to capture host performance data which can be replayed later using esxtop. To invoke the performance capture, we need to specify how frequently a performance "snapshot" is taken and over what period of time. For example, if we wished to capture host performance every 30 seconds for 10 minutes, then we would invoke vm-support with the following options [root@esx1 root]# vm-support -S -i 30 -d 600 The performance snapshots are archived automatically into a tgz file (a tgz file just like a WinZIP (R) archive). The tgz archive file name produced is unique to each time it's run, as the name includes date, time and process id of vm-support. Before we can actually replay the snapshot performance data in esxtop, we need to extract the tgz archive. The tar command is used to "unzip" tgz archive files. [root@esx1 root]# tar -zxvf archive.tgz To replay the data in esxtop, use the "-R" switch to specify replay mode and supply the path to the performance capture file produced by vm-support.
|
|
| esxupdate | |
| This utility is what we use to patch our ESX hosts with
updates from VMware. You can use this tool interactively to install
individual patches, or use it to scan your ESX host to see which patches
are required as well as to do a "what-if" install of a host patch to
identify if there will be any problems. The power of the esxupdate command is realised when you use it with a patch repository. A patch repository can be exposed to a host via HTTP, FTP or NFS. esxupdate -d ftp://taupopatchserver/esx35/0710-03 scan - Bundle Name - AppFlags --- Summary --- iFlags ESX350-200710049-BG -------v Bugs fixed in some vmkernel. rm- ESX350-200710050-SG i------v Security bugs fixed in vmkernel module.. rm- ESX350-200710052-BG i------v Several bugs fixed in vmx module... -m- ESX350-200710053-BG -------- Provided new PBM for SUSE 11 U2. --- ESX350-200710054-BG -------v COS fix for Ooops. rm- ESX350-200710055-BG -------- More fixes in scsi drivers. r-- ESX350-200710058-RG -------v This is a roll-up bundle. rm- ESX350-200710059-RG -------v This is a roll-up security bundle. rm- If you choose to use the new VirtualCenter Server 2.5 feature called VMware Update Manager (VUM), then when you perform host scans and remediation, you are in fact just remotely invoking this utility, it's just you don't see it! You can use the --explain switch when scanning to provide a greater level of detail to your host patch scan operation. If for example, the AppFlags for a patch indicated "c" for conflict, you would probably want to know what exactly the patch was in conflict with.
|
|
| /var/log/vmware/esxupdate.log | |
| The log file for the esxupdate host patch utility. |
|
| contents.xml | |
| Every ESX patch contains a file called contents.xml.
This file describes the directory structure of the patch bundle
contents.
|
|
| contents.xml.sig | |
| This is a detached PGP signature of the contents.xml
file in a ESX patch.
|
|
| vimsh | |
| This is a superb utility that we use on occasion,
particularly when we are creating scripted builds for ESX. The
industry-recognised experts in the functions of this tool are the folks
over at www.xtravirt.com. Where we
have found this tool of unique use is in the enabling of a VMkernel port
for VMotion. If you are using ESX versions prior to 3.5 then use vimsh -n -e "hostsvc/vmotion/vnic_set portgroupname However, if you are using ESX version 3.5 then we need to use a slightly different syntax for specifying the portgroup to enable. We now need to specify using a vmkx notation. Trouble is, we don't know which portgroup corresponds to which vmkx number. So to first identify the mapping of portgroup name to vmk number, we enter the command vimsh and then enter hostsvc/vmotion/netconfig_get and we'll get a whole pile of output, but buried in there will be the device names in vmkx format that we can then use to enable VMotion on that portgroup with the following: vimsh -n -e "hostsvc/vmotion/vnic_set vmk0 Using the vimsh command for enabling VMotion is just 1% of the functionality of this tool. It's not for the faint hearted and there really is no better source of information about it than the PDF documents that the xtravirt guys have written. Thanks also to Mike Laverick of RTFM Education (www.rtfm-ed.co.uk) for documenting the changes in vimsh in version 3.5.
|
|
| RPM Utilities
|
|
| rpm | |
| As ESX service console is based on modified Red
Hat Enterprise Linux 3, we can use the RPM package installation method to add
applications to it. However, we should also point out that it's maybe
not the best idea to add software to the service console. It is best to
treat the service console as a dedicated console and not add
applications to it. If you are unfamiliar with RPMs in Linux, think of them like MSI packages in Windows. The rpm command can be used to list and to install RPM-based applications. In the following example, we are using the command switch (-qa) to list the rpms installed in the service console.
# rpm -qa If we are only interested in the VMware rpms, then we can just pipe the output of rpm -qa command into the grep search tool. rpm -qa |grep VMware which should yield an output something like
VMware-webCenter-esx-2.0.1-32041 If we then want to find out more information on an individual RPM package, we can use the rpm -qi option to query a package which reports the file version, vendor, license and description.
# rpm -qi VMware-hostd-esx-3.0.1-32039
If we then want to know what files are included
in the rpm package, we can use query with the list option to see the
files inside. For example, to see the files
# rpm -ql VMware-hostd-esx-3.0.1-32039 |
|
| rpm2cpio | |
| If you are wanting to extract a single file from a RPM
package but you don't want to install the RPM, then this is the tool for
you. Probably best if you copy the RPM to a temp directory so when you
extract the RPM you can then navigate the directory structure created in
that temp directory to find the file or files you need.
Once you have copied out the file you were after, you can safely delete the contents of that temp directory. In other words, we have used rpm2cpio to extract the RPM archive. Here is an example using the RPM we've used in the previous examples. # rpm2cpio VMware-hostd-esx-3.0.1-32039 | cpio -idmv i = Restore archive |
|
| Linux Utilities
|
|
| /etc/ssh/sshd_config | |
|
The configuration of SSH client is stored in the text file /etc/ssh/ssh_config The configuration of the SSH server daemon is stored in the text file /etc/ssh/sshd_config. An important setting in this file is PermitRootLogin=No. This is the default setting in ESX 3.x and it is recommended that you keep the setting at "No". This way you have an audit trail and see exactly who is logging in, rather than just "root". You can quickly what the setting is by using a grep operation on the file as shown: # grep Permit /etc/ssh/sshd_config If you do edit the file to change this setting to Yes, then make sure you restart the daemon for the changes to take effect using the command: # service sshd restart It is also possible to explicitly allow or deny specific users to the SSH daemon. The headings in the ssh_config file are DenyUsers and AllowUsers.
|
|
| su | |
| This command is the switch user utility.
Think of it as the command line equivalent of Windows Fast User
Switching! When it used without parameters, we are specifying to switch to the user root. However, we can use the su command to switch shell to any user account that we know the password of. In the first example, we are logged in as the user kevin and we are switching to user ali. [kevin@esx1host kevin]$ su ali In this second example, we are switching from being logged on as a user called sara to being logged on as root. Notice to switch to root, we don't need to specify a username. [sara@esx1host sara]$ su - If we restrict the built-in user account root from logging in over the SSH protocol, then we are forcing remote users to authenticate as themselves and then su to run privileged commands if need be, thus leaving a decent audit trail. The downside being that those users would still know the root account password. If you would like to restrict the use of the su command, then we can limit it to the members of a specific group called wheel. This group is defined in the /etc/group file by default and it's membership can be modified by root. In order to limit su to the wheel group members we need to modify a configuration file called /etc/pam.d/suThere is a single line in this file that needs to be uncommented to limit the use of su. The line is shown below as it appears it that file, all that is required is the removal of the # symbol at the start of the line. #auth required /lib/security/$ISA/pam_wheel.so user_uid The attempts to switch to the root account are logged in /var/log/messages.
|
|
| sudo | |
| The downside of the su
command is that the operators who elevate their privilege to root are
now root. They have full privilege, they know the root password, there
is no granularity of delegation of privilege. Allows delegation of administration in terms of certain commands that normally only a particular user can execute (usually root). So if the user ali had been given the authority to run vmkfstools, then sudo would be used like: [ali@esx1 ali]$ sudo vmkfstools The vmkfstools command would then run under the security context of the root user. The superb feature of this tool is that the user ali does not need to know or supply the root password to be able to run the delegated command. Further, we keep an audit trail of when sudo was invoked in /var/log/secure. The sudo tool uses the lookup file
/etc/sudoers to determine which users
can perform which commands. We do not edit this file with a regular text
editor like vi or nano, instead we use the tool
visudo. |
|
| visudo | |
| This is the vi text
editor with extras. When launched, it automatically opens and locks for exclusive edit, the /etc/sudoers file. The point of
visudo is
to ensure we always edit the right file as the location of the
sudoers file
differs between nix distributions, but this command is constant and will utilise
the right sudoers file for the distribution being used. A great benefit of using visudo over regular vi, is that it performs some basic syntax checking for us!
|
|
| /etc/sudoers | |
| The text file that contains the
sudo users and the rules that apply to them. The first "ALL"
relates to all machines (useful if this is a network wide file).
Otherwise, this could be the hostname of the one machine we are trying
to run the command on. In the following example we are allowing the user
"alistair" to run the kill command, all of the commands in the directory
/usr/bin and any commands in the
directory /usr/sbin/alistair alistair ALL= /bin/kill, /usr/bin/, /usr/sbin/alistair/ In the following line added to the /etc/sudoers file, we are allowing the user sara to run the esxcfg-firewall and esxcfg-vswitch command. sara ESX1= /usr/sbin/esxcfg-firewall, esxcfg-vswitch You can use aliases within this file to group together users, hosts and commands. User_Alias ESXHOSTADMINS-PROD = john, grant,
julie Now we can combine these to create rules such as; ESXHOSTADMINS = PRODESXHOSTS NETCOMMANDS Although, rather than maintaining a static configuration file on each ESX host, it would be better to customize the sudoers file during host deployment and include Linux groups. For example, if we wanted to delegate a set of commands to those Linux users who belong to a Linux group, for example, wheel, then we can use the % operator to leverage those group definitions. %wheel = PRODESXHOSTS SECURITYCOMMANDS The best source we've found so far on detailed use and background of sudo can be found at http://aplawrence.com/Basics/sudo.html |
|
| w | |
Great for viewing logged on console users.[root@esx1host firewall]# w 12:07:45 up 4 days, 2:16, 3 users, load average: 0.00, 0.00, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 - Fri10am 4days 0.02s 0.02s -bash root tty2 - Fri 9am 4days 0.06s 0.06s -bash root pts/0 remote7.lab.vmwa 9:29am 0.00s 0.06s 0.00s w
|
|
| who | |
This command allows use to view who is logged onto the
service console either interactively at the console or via an SSH
session. The who command without parameters gives us the basics.[root@esx1host firewall]# who root tty1 Jul 25 10:30 root tty2 Jul 25 09:56 root pts/0 Jul 29 09:29 (remote7.lab.b2v.net) If we want to see all the details of users we can use the -a switch to show all data. We tend to combine -a with -H (i.e. -aH) to display column headers making it easier to read and interpret. [root@esx1host firewall]# who -aH
NAME LINE TIME IDLE PID COMMENT EXIT
Jul 25 09:51 743 id=si term=0 exit=0
system boot Jul 25 09:51
run-level 3 Jul 25 09:51 last=S
Jul 25 09:52 1205 id=l3 term=0 exit=0
root + tty1 Jul 25 10:30 old 2056
root + tty2 Jul 25 09:56 old 2057
LOGIN tty3 Jul 25 09:52 2058 id=3
LOGIN tty4 Jul 25 09:52 2059 id=4
LOGIN tty5 Jul 25 09:52 2060 id=5
LOGIN tty6 Jul 25 09:52 2061 id=6
root + pts/0 Jul 29 09:29 . 18092 (remote7.lab.b2v.net)
|
|
| vmkload_mod | |
| This command will load and unload VMkernel modules on
the fly. The results of this load/unload will happen as you type it and
will only be valid for the current booted session. So this command is
superb for troubleshooting as we can load and unload modules, e.g.
network drivers. In the following example, we are examining the options for the Intel network driver (e1000) with the -s (show parameters) switch and then unloading it using -u (thereby interrupting network operations on that physical interface temporarily) and then loading it again with a new option. Notice to load a VMkernel parameter, we just supply the module name to the vmkload_mod command as a parameter listing any module-specific options as further parameters. [root@esx1host]# vmkload_mod -s e1000 [root@esx1host]# vmkload_mod -u e1000 If you were experimenting with a driver setting to determine the right setting for the environment, then you may be loading and unloading a module a number of times. Once we were happy we had found the correct setting, it is likely we would want to make this change persistent, i.e. we would want it to take effect for each time the kernel module is loaded at server boot time. For that, we should use esxcfg-module command.
|
|
| minicom | |
| This is a great utility for talking to serial attached
devices; we think of it as HyperTerminal for Linux. Where we have found
this particularly useful is for command line administration of your
storage array. For example, if you had an HP MSA1000 attached to you ESX
host and attached the serial cable to the unit and your host, then you
could manage LUN presentation from the service console command line. Minicom uses a configuration file to determine bit rates etc. This configuration file is placed in the /etc directory. We normally create the file with a meaningful name e.g. minirc.com1, so to launch the tool we enter # ./minicom com1 The contents of the minirc.com1 file would typically be: pr port /dev/ttyS0 pu baudrate 19200 pu bits 8 pu parity N pu stopbits 1 pu rtscts No Much more detail on minicom can be found at http://www.cisl.ucar.edu/nets/intro/staff/siemsen/tools/minicom.html
|
|
| vi | |
| We can't talk about the command line without talking
about vi. This is the simple but powerful text editor in Linux and UNIX.
People tend to love it or hate it. Either way, it's nearly always there
in any *nix implementation and just by memorising a few commands you can
be up and running with it. If you can use Windows Notepad, you can use
vi! vi filename The first thing that throws you is that to enter text into your file, you need to press "i" for Insert mode. You can then enter your text just as any other text editor. When you are done with text entering, just press the Escape (Esc) key to come out of insert mode. If you are happy with your file, then we need to Write & Quit (wq). To enter commands in this command line editor, rather than having menus, we have a command prompt in the application. To reach the vi command prompt, simply enter ":" - the colon character which will automatically place your cursor at the bottom of the session. Here you can enter the "wq" command to write and quit the editor. That's it! Here is a summary of the vi commands i Changes to insert mode where you can edit the text These commands are just extra if you have the inclination to learn!
/
search - if you entered /failed then the cursor would move to the first
instance of "failed in the text
|
|
| nano | |
| Another text editor, more friendly than
vi but you should
use –w to avoid word wrap. |
|
| /etc/ntp.conf | |
[root@esx7 firewall]# cat /etc/ntp.conf # Prohibit general access to this service. restrict default ignore # Permit all access over the loopback interface. This could # be tightened as well, but to do so would effect some of # the administrative functions. restrict 127.0.0.1 # -- CLIENT NETWORK ------- # Permit systems on this network to synchronize with this # time service. Do not permit those systems to modify the # configuration of this service. Also, do not use those # systems as peers for synchronization. # restrict 192.168.1.0 mask 255.255.255.0 notrust nomodify notrap # --- OUR TIMESERVERS ----- # or remove the default restrict line # Permit time synchronization with our time source, but do not # permit the source to query or modify the service on this system. # restrict mytrustedtimeserverip mask 255.255.255.255 nomodify notrap noquery # server mytrustedtimeserverip # --- NTP MULTICASTCLIENT --- #multicastclient # listen on default 224.0.1.1 # restrict 224.0.1.1 mask 255.255.255.255 notrust nomodify notrap # restrict 192.168.1.0 mask 255.255.255.0 notrust nomodify notrap # --- GENERAL CONFIGURATION --- # # Undisciplined Local Clock. This is a fake driver intended for backup # and when no outside source of synchronized time is available. The # default stratum is usually 3, but in this case we elect to use stratum # 0. Since the server line does not have the prefer keyword, this driver # is never used for synchronization, unless no other other # synchronization source is available. In case the local host is # controlled by some external source, such as an external oscillator or # another protocol, the prefer keyword would cause the local host to # disregard all other synchronization sources, unless the kernel # modifications are in use and declare an unsynchronized condition. # server 127.127.1.0 # local clock server 0.vmware.pool.ntp.org server 1.vmware.pool.ntp.org server 2.vmware.pool.ntp.org fudge 127.127.1.0 stratum 10 # # Drift file. Put this in a directory which the daemon can write to. # No symbolic links allowed, either, since the daemon updates the file # by creating a temporary in the same directory and then rename()'ing # it to the file. # driftfile /var/lib/ntp/drift broadcastdelay 0.008 # # Authentication delay. If you use, or plan to use someday, the # authentication facility you should make the programs in the auth_stuff # directory and figure out what this number should be on your machine. # authenticate yes # # Keys file. If you want to diddle your server at run time, make a # keys file (mode 600 for sure) and define the key number to be # used for making requests. # # PLEASE DO NOT USE THE DEFAULT VALUES HERE. Pick your own, or remote # systems might be able to reset your clock at will. Note also that # ntpd is started with a -A flag, disabling authentication, that # will have to be removed as well. # keys /etc/ntp/keys
|
|
| /etc/ntp/step-tickers | |
| If you have a single time source configured for your
service console, then this file will have just 1 line, similar to the
following: server 192.168.1.100
|
|
| ntpdate | |
| If you want to synchronise your service console clock
with the defined time server, you can use this command with the -u
switch. ntpdate -u timeserver.local
|
|
| ntpq | |
| This queries the state of the ntp service. Watch for the
back ticks used in the parameters, they are not single quotes!
|
|
| date | |
| If we are checking the time and date of our ESX Service
Console, then the date command is very useful. Just entering the "date"
command returns what the service console thinks the current date is. If the date is incorrect and you wish to reset it you would enter the command with the -s switch and specify date in mm/dd/yyyy format. # date -s "12/29/2007 23:48" Once you have set the date, you will want to ensure that the hardware clock matches your newly entered date. We can do this with the hwclock command described below.
|
|
| hwclock | |
| We can use this command to synchronise the server
hardware clock with the date we set in the service console. If you enter
the command with no parameters then the value of the hardware clock is
displayed. # hwclock If we want to synchronise the hardware clock with the service console date and time, we use the following: # hwclock -systohc |
|
| cal | |
| Display calendar for current month or set of months. The
following command displays 3 months, current month and the month before
and after. # cal -3 Surprisingly useful!
|
|
| passwd | |
| Used to change the password of the currently logged on user
(use the command with no parameters) or for changing the password of a named
user account (supply the user name as a parameter). passwd <user> Remember that passwords are not stored in the /etc/passwd file, but in the file /etc/shadow If you are ever needing to
reset an unknown root account password, then it is this utility you
would run after booting into Linux single user mode. |
|
| VMware HA
|
|
| AAM | |
| AAM is the Automated Availability Manager that runs in the
service console when you create a VMware High Availability (VMware HA)
cluster. The VMware HA feature was previously known as DAS (Distributed
Availability Services) but we don't mention that anymore. This software maintains an in-memory database on active nodes in the cluster and uses heartbeats to co-ordinate the active and passive nodes. It is suggested that you configure service console with 2 Ethernet interfaces to remove any single point of failure. This is a piece of licensed Legato software which itself has been renamed to EMC AutoStart. This component has a very high dependency upon fully functional host name resolution. So before you enable VMware HA, check the following files /etc/hosts to ensure accuracy. One thing you can do to check the name resolution functionality before enabling HA is run hostname -s to return the short name of the service console. If this fails, then the HA configuration WILL fail. The log file for VMware HA in ESX 3.0.x can be found in the service console in the directory /opt/LGTOaam512/ and for ESX 3.5 can be found in /opt/VMware/ To avoid split brain scenarios, an ESX server can determine if it has become isolated from other servers and we can configure that servers' isolation response. If the AAM component loses contact with the other nodes in the HA cluster, it attempts to contact the configured default gateway for service console using ICMP echo request (PING). If this fails, then the ESX host is isolated. If your default gateway suppresses ICMP echo requests, then we can configure an alternate IP address called the das.isolationaddress. From ESX 3.5, you can configure multiple isolation addresses so that you can configure a host with more that one address to attempt contact with before declaring itself isolated.
|
|
| /opt/LGTOaam512/bin/ftcli | |
| This utility allows you to view the active nodes in an
HA cluster and the managed IP addresses. This utility will help you
determine whether the HA agent is in a running state and which IP
addresses are visible between those managed hosts.
|
|
| /etc/FT_HOSTS | |
| This file is created when HA is enabled and is a copy of
/etc/hosts. If you have problems with name resolution and configuring
HA, you can safely delete this file and reconfigure that cluster node
for HA again. FT_HOSTS will be re-created.
|
|
| Networking
|
|
| ifconfig | |
| Used to determine what IP address you have, the
equivalent of the ipconfig command in Windows. You
can use the command without parameters to view all interfaces, or you
can be interface specific, e.g. [root@esx1host] #
ifconfig vswif0 Notice this is a quick way of viewing your COS virtual MAC address alongside the IP address. Also note, you don't see the additional optional IP parameters like gateway and DNS servers.
|
|
| ping | |
| Our favourite IP connectivity tool; I love the name
Packet InterNetwork Groper! Anyway, there are a couple of very useful
switches we can use with ping. If you are testing frame sizes, you can
force ping not to fragment with the -f switch. |
|
| /sbin/arping | |
| This is a similar utility to ping, but uses Address
Resolution Protocol (ARP) and so the result will only be for local
subnet resources, either another host or a gateway.
[root@esx1host sbin]# arping -I vswif0 -c 2
192.168.1.1 Notice in the reply we see the MAC address of the target for the |
|
| arp | |
| If you need to view or modify the arp cache in the
service console, we can use the arp
command. [root@esx1host]# arp -a It's unlikely you will need static arp entries, but it can be done using the -s switch.
|
|
| ethtool | |
| This command can be used to view and configure the
Ethernet interfaces in your ESX host. We didn't use this tool very often until ESX
3.5, when we started to work with Distributed Power Management (DPM); an
experimental feature of DRS clusters. The output of this tool provides a load of information about the network cards, but of particular interest now is the support for Wake-on-LAN (WoL). DPM makes use of this NIC feature and so we need to check that our NICs both support the function AND have the function enabled. The ethtool allows us to view and set this functionality. # ethtool vmnic1 If we noted that our NIC supported WoL but it was not currently enabled, then we could use this tool to effect the change. # ethtool -s vmnic1 wol g
|
|
| Network File System (NFS)
|
|
| showmount | |
| This command is used by a NFS client to see what directories are
being exported by a NFS server.
showmount –e nfsserver This command can be specified with the hostname name or IP address of the NFS server holding the exported directories. Remember that by default the service console will block nfsClient traffic. You will need to use esxcfg-firewall to open up that port.
|
|
| portmap | |
| If you are wanting to mount a NFS export on a remote
system from the service console, you do not need all the nfs server
daemons running. All you need is the portmap service. You can start it
with service portmap start And you can ensure this service is launched at boot time using the chkconfig command. Also remember that by default nfsClient is blocked by the service console firewall.
|
|
| VMware Consolidated
Backup (VCB)
|
|
| vcbVmName | |
| If we only know some of the details of a VM, but not
all, we can use this query tool to ask VirtualCenter to report back all
that it can find about it. For example, lets say you know you want to
perform an image-level backup of a VM and the VM has IP address
10.0.0.1. We would
[root@esx1host root] # vcbVmName -h
vcserver -u vcadminuser -p secret -s ipaddr:10.0.0.1
|
|
| vcbSnapshot | |
| vcbMounter | |
| If you want to perform image backups of running virtual
machines from the service console command line, then this is the command
for you. In a lot of ways this is the replacement of
vmsnap.pl found in
previous versions of ESX. |
|
| vcbMounter.exe | |
| This command is the core component of VCB which runs on
the VCB Proxy server. |
|
| vcbExport | |
| mountvm.exe | |
| This utility is only found on the VCB proxy server. |
|
| vcbCleanup | |
| This command is new to 3.5/2.5 and allows a backup
operator to cleanup the VM snapshot state should a VCB backup fail
before completion. |
|
| backuptools.conf | |
| If you don't want to specify user credentials on the
command line, you can store the credentials in this file in the service
console. |
|
| vcbRestore | |
| When virtual infrastructure administrators first start
using VCB, questions arise about how they can restore their VCB
archives. The vcbMounter.exe command on the backup proxy performs the
backup of the live VM, but where is the utility to perform the restore
operation? The answer is, you cannot restore directly from the VCB Proxy
server into VMFS, the proxy server has read-only access to the VMFS
datastores. The vcbRestore command exists in the ESX host service
console. Therefore we need to have the VCB VM archive accessible to the
vcbRestore command to perform a restore. The archive could be copied to
the service console with a tool such as WinSCP or Veeam FastSCP, but
often, administrators will simply perform an NFS/CIFS mount from the
service console to the location where the VCB archive is. vcbRestore /remotenfs/backups/vm However, as of VirtualCenter 2.5 (with integrated VMware Converter)
we have the ability to restore VCB VM archives directly into ESX using
the VMware Converter import function. This is a huge step forward in
simplifying recovery. |
|
| vcbUtil | |
| This command is only in the service console, not on the
backup proxy server. |
|
| VirtualCenter Server &
Update Manager
|
|
| vpxd.exe | |
| This is the process name of the Windows service that is
the core service running on the VirtualCenter management server. If there are problems with the VirtualCenter service starting and then stopping almost immediately or a few seconds later, then check your ODBC database string and then the health of the the database server. We have seen this when the database runs out of disk space; check if the log space is full on the DB server, many clients forget about regular backup of this database. When troubleshooting the VirtualCenter service you can try VirtualCenter in stand-alone mode. This is done by invoking the following command at the Windows command line vpxd -s You will get interactive logging of the start-up activity helping you to pinpoint where the problem is. If all else fails, you can always re-initialize the VirtualCenter database, however we would not recommend this. By re-initializing the VirtualCenter database you are wiping out all VC data!! If you do want this, then use the -b command switch to vpxd.
|
|
| vpxd.cfg | |
| This is the VirtualCenter management server
configuration file which the VC service reads at start-up. (Ok, so we are extending this command line guide to
cover the VirtualCenter server now as well as the ESX host!) There are a number of configuration changes to VirtualCenter we can make in this file, but as of VC 2.5, one such change you may wish to make is the disabling of "Guided Consolidation". This feature, shown just as a consolidation button in the VI client, is intended to help small customers select which physical Windows hosts are suitable for consolidation and then guide them to perform the physical to virtual migration. If you have already been through the consolidation process, then you don't need this feature. It makes sense to disable the feature if you are not using it as this should improve VC performance. To disable Guided Consolidation, simply edit the vpxd.cfg file on the VC management server and add the lines: <vcp2v> You can get rid of the Guided Consolidation feature after VirtualCenter install by executing the following at the Windows command line on the VirtualCenter server. msiexec /qn /x {2A2750C9-E14E-4635-8595-C1CD214445B0}
|
|
| vpxd-#.log | |
| There will be up to log files for VirtualCenter server.
The log data is rotated across 10 log files numbered 0-9. Once a log
file reaches 5MB, the next one is used. |
|
| vpxd-index | |
| This file is the index file which indicates which of the
numbered vpxd-#.log files is the current active one. This file is found
on the VirtualCenter management server. VirtualCenter logs are rotated
across 10 log files numbered 0-9. |
|
| vum-proxyAuthCfg.exe | |
| The Update Manager component of Virtual Infrastructure
is new to version 2.5. This component allows the patch management of
Windows & Linux guests as well as ESX hosts. When installing the Update
Manager component, the Windows installer package prompts the operator if
they wish to use a proxy server to connect to the Internet, the only
options are proxy IP address and port. If your proxy server requires
authentication, then this tool must be run to supply the proxy server
credentials.
|
|
| vci-integrity.xml | |
| This is the primary configuration file for the VMware
Update Manager (VUM). This file is read at start-up of the UM service
and if the XML file is manually edited, then the service should be
restarted for the change to take effect. One of the main reasons you may want to edit this file is if you wish to change the directory that patches are downloaded into, i.e. the patch store. The default location is on the C:\ drive which may not be adequately sized; there are a considerable number of patches to download to offer OS and application patch remediation, totally many gigabytes.
|
|
| vmware-umds.exe | |
| This is the VMware Update Manager Download Service. If
you don't want the server where Update Manager is installed on to
actually connect to the Internet and do the patch downloading, then UMDS
is for you. Maybe you don't want the load of update downloads on the UM
server or maybe the UM server is on a subnet that can't reach the
Internet. Anyway, the UMDS installs on a Windows server (that is not the
same server as UM) and doesn't create a start menu program group. To start a download, simply enter the command vmware-umds --download Once the updates are downloaded, we can export them. This means we copy the patches from the download directory to another path. The intended purpose of exporting is to copy all or a subset of the downloaded patches to a location that will then be made av |