Installation (ESX)

From vwiki
Revision as of 09:18, 24 September 2010 by Sstrutt (talk | contribs) (→‎VMware Managment Agent Restart: Added ESXi option)
Jump to navigation Jump to search

Build Notes

Installation

  • ESX3 Installation - Example, based on an old ESX v3 build guide
  • HeavyLoad - Load tester (stick it in a test VM, memory test doesn't really work as ESX page sharing kicks in)

Build Numbers

ESX version ESX ESXi
3.5 Update 1 82663 82664
3.5 Update 2 110268 110271
3.5 Update 3 123630 123629
3.5 Update 4 153875 153875
3.5 Update 5 207095 207095
4.0 164009
4.0 Update 1 208167 208167
4.1 260247

VMware CLI

Especially if using ESXi, you'll need to install the VMware CLI on any machine you want to access the ESX command line from. Be aware that ActivePerl gets installed as well, so proceed with caution if you've already got Perl installed on the machine.

Security Hardening

Service Console

Disk Partitions

Suggesting partition sizing for Service Console on local disk to prevent Root partition being filled with user data

part /boot --fstype ext3 --size 1024 --ondisk=sda --asprimary
part / --fstype ext3 --size 5120 --ondisk=sda --asprimary
part swap --size 2048 --ondisk=sda --asprimary
part /var --fstype ext3 --size 5120 --ondisk=sda
part /tmp --fstype ext3 --size 5120 --ondisk=sda
part /home --fstype ext3 --size 2048 --ondisk=sda
part None --fstype vmkcore --size 100 --ondisk sda

Local Accounts

Password Policy

No policy is implemented by default, if not using AD Integration then its sensible to apply a policy on the ESX, using the PAMQC module. Its not particularly elegant.

Active Directory Integration

Because service console authentication is Unix-based, it cannot use Active Directory to define user accounts. However, it can use Active Directory to authenticate users by matching local passwd file account name with Active directory with appropriate support of SFU (Services For Unix).

See Scott Lowe's blog for further info

Sudo

It is possible to limit the enhanced privileges that a user can gain by using sudo. This is most appropriate where there is a large number admins. However, in such an environment there is likely to be a large number of ESX's, managing the config on ESX is a headache.

Example of possible sudo config (/etc/sudoers)

...
# Defaults specification
Defaults logfile=/var/log/sudolog

# User privilege specification
root    ALL=(ALL) ALL
User_Alias VI_JR_ADMINS=esxoper, esxoper2
User_Alias VI_ADMINS=esxadmin

Cmnd_Alias STOP=/usr/sbin/shutdown, /usr/sbin/halt, /usr/sbin/poweroff 
Cmnd_Alias REBOOT=/usr/sbin/reboot
Cmnd_Alias KILL=/usr/bin/kill 
Cmnd_Alias NTP=/usr/sbin/ntpdate, /sbin/hwclock 

VI_JR_ADMINS ALL=STOP, REBOOT, KILL, NTP
VI_ADMINS ALL=(ALL) ALL
...

Logging

It is recommended to compress and increase the maximum log file size by modifying the configuration files in the /etc/logrotate.d directory and the /etc/logrotate.conf file.

For example, changing vmkwarning to be 2096k in size, and compressed...

[root@dtcp-esxsvce01b root]# more /etc/logrotate.d/vmkwarning
/var/log/vmkwarning{
    create 0600 root root
    missingok
    compress
    sharedscripts
    postrotate
    size 2096k
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}

...and changing relevent part of /etc/logrotate.conf to allow compression...

...
# uncomment this if you want your log files compressed
compress

...

Finally, its worth redirecting sudo log activity to /var/log/sudolog, see above section on sudo.

Banners

There are three modes of direct management access to an ESX, web, ssh, and direct (local) console.

Web Access

Edit the html page /usr/lib/vmware/hostd/docroot/index.html

SSH

Edit the /etc/ssh/sshd_config file so that it knows to display a defined banner file during login...

Banner /etc/banner

Create the banner file with the appropriate contents.

Console

Prepend your banner to the /etc/issue file

ESX

Network Settings

Setting Default Preferred Explanantion
Promiscuous Mode Reject Reject Principally used in situations where you need to perform a network traffic (snif) capture. Data from all ports propagates to all ports (VM Port group becomes a hub rather than a switch)
MAC address changes Accept Reject There are situations where allowing MAC Address Changes to Accept is required. For example; legacy applications, clustered environments, and licensing. Legacy applications may require a specific MAC addresses to be used for the application. Microsoft Clusters utilize an artificial MAC address for all servers in the cluster
Forged Transmits Accept Reject The setting affects traffic transmitted from a virtual machine. If this option is set to reject, the virtual switch compares the source MAC address being transmitted by the operating system with the effective MAC address for its virtual network adapter to see if they are the same. If the MAC addresses are different, the virtual switch drops the frame. The guest operating system will not detect that its virtual network adapter cannot send packets using the different MAC address. To protect against MAC address impersonation, all virtual switches should have forged transmissions set to reject

Configuration Considerations

Networking

Beacon Probing

Should only be used when there are 3 or more physical NIC's assigned to the vSwitch, uplinked to the network switch. This is to enable the ESX to be able to properly determine the state of the network during a daily condition. See http://kb.vmware.com/kb/1005577 for further info.

Procedures

Links to VMware KB docs...

Quick commands

vmware -v ESX software version and build

ESX Shutdown / Reboot

ESX

  • Shutdown a host ready for power off
    • shutdown -h now
  • Restart a host
    • shutdown -r now

ESXi

  • Shutdown a host ready for power off, either of
    • /bin/host_reboot.sh
    • reboot
  • Restart a host
    • /bin/host_shutdown.sh

High Availability Stop/Start

  • Stop HA...
    • /etc/init.d/VMWAREAAM51_vmware stop
  • Start HA...
    • /etc/init.d/VMWAREAAM51_vmware start

VMware Managment Agent Restart

ESX

service mgmt-vmware restart
Stopping VMware ESX Server Management services:
  VMware ESX Server Host Agent Services                   [  OK  ]
  VMware ESX Server Host Agent Watchdog                   [  OK  ]
  VMware ESX Server Host Agent                            [  OK  ]
Starting VMware ESX Server Management services:
  VMware ESX Server Host Agent (background)               [  OK  ]
  Availability report startup (background)                [  OK  ]

ESXi services.sh restart

If this fails to stop the service, you can try to manually kill the processes. Untested - don't do during day, if you use this and it works, delete this warning note.

  1. Determine the PID's of the processes
    • ps -auxwww | grep vmware-hostd
    • which should give you something like, in which case the PID's are 2807 and 2825...
    • root 2807 0.0 0.3 4244 884 ? S Mar10 0:00 /bin/sh /usr/bin/vmware-watchdog -s hostd -u 60 -q 5 -c /usr/sbin/vmware-hostd-support /usr/sbin/vmware-hostd -u
    • root 2825 0.1 12.0 72304 32328 ? S Mar10 1:14 /usr/lib/vmware/hostd/vmware-hostd /etc/vmware/hostd/config.xml -u
    • root 13848 0.0 0.2 3696 556 pts/0 R 08:43 0:00 grep vmware-hostd
  2. Kill the PID's using kill -p pid
    • So, for example, kill -9 2807 and kill -9 2825
  3. Then reattempt the service restart

VMware Web Access Restart

service vmware-webAccess restart
Stopping VMware ESX Server webAccess:
   VMware ESX Server webAccess                             [FAILED]
Starting VMware ESX Server webAccess:
   VMware ESX Server webAccess                             [  OK  ]


Maintenance Mode

To put the ESX into maintenance mode with no access from the Infrastructure Client (VCP) use the following commands - use with caution

Put esx into maintenance mode:

vimsh -n -e /hostsvc/maintenance_mode_enter

check the esx is in maintenance mode

vimsh -n -e /hostsvc/runtimeinfo | grep inMaintenanceMode | awk ‘{print $3}’

exit maintenance mode

vimsh -n -e /hostsvc/maintenance_mode_exit


TCPDump Network Sniffer

Basic network sniffer available in Service Console

TCPDump instruction manual

EG To sniff all traffic on the Service Console interface, vswif0, going to/from 159.104.227.40

tcpdump -i vswif0 host 159.104.224.70


Security

Password Complexity Override

In order to be able to change a user (or root) password to one that breaches password complexity checking

  1. Disable PAM module
    • esxcfg-auth --usepamqc -1 -1 -1 -1 -1 -1
  2. Disable complexity checker
    • esxcfg-auth --usecrack -1 -1 -1 -1 -1 -1
  3. Change password
  4. Re-enable PAM module
    • esxcfg-auth --usepamqc=-1 -1 -1 -1 8 8

Regenerate Certificate

You might need to regenerate certificates if

  • Change ESX host name
  • Accidentally delete the certificates

To generate new Certificates for the ESX Server host...

  1. Change directories to /etc/vmware/ssl.
  2. Create backups of any existing certificates:
    • mv rui.crt orig.rui.crt
    • mv rui.key orig.rui.key
  3. Rstart the vmware-hostd process:
    • service mgmt-vmware restart
  4. Confirm that the ESX Server host generated new certificates by executing the following command comparing the time stamps of the new certificate files with orig.rui.crt and orig.rui.key
    • ls -la


HBA and SAN Operations

VMFS / LUN Addition

The new LUN needs to be carved up and presented to all ESX's that should see it (normally all ESX's from a particular cluster). Once completed, follow the procedure below to add to the ESX's...

  1. Pick ESX in cluster with lowest load
  2. Go to Storage Adapters, hit Rescan... and untick the Scan for New VMFS Volumes
  3. Once scan has complete, go to Storage, and hit Add Storage...
  4. Click Next > to select Disk/LUN storage
  5. Select the appropriate device and click Next >
  6. Check the current disk layout (ie its blank if its meant to be) and click Next >
  7. Give the datastore an appropriate name, and click Next >
  8. Select an approriate block size (this limits maximum VMDK size), and click Next >
  9. Review config and click Finish
  10. On the remaining ESX's, go to Storage Adapters, hit Rescan... (leave both boxes checked)

SAN LUN ID

The SAN LUN ID is used by SAN admin's to identify LUN's. It's not readily available from the GUI and has to be extracted from the vml file...

So from the following...

  • /vmfs/devices/disks/vml.020006000060060160c6931100cc319eea7adddd11524149442035

you need to extract the mid characters from the vml name...

  • /vmfs/devices/disks/vml.020006000060060160c6931100cc319eea7adddd11524149442035

So the SAN LUN ID is 60060160c6931100cc319eea7adddd11

Emulex

Find Emulex HBA Driver and Firmware Version, and WWPN

Doesn't require Emulex HBA utility to be installed

  1. cd /proc/scsi/lpfc
  2. more 1 for HBA 1
  3. more 2 for HBA 2

The Portname number is the WWPN number used to identify the HBA's by the SAN.

[root@uklonesxp2 lpfc]# more 1
Emulex LightPulse FC SCSI 7.1.14_vmw1
Emulex LightPulse LP1050 2 Gigabit PCI Fibre Channel Adapter on PCI bus 0f devic
e 20 irq 121
SerialNum: BG70569148
Firmware Version: 1.91A1 (M2F1.91A1)
Hdw: 1001206d
VendorId: 0xf0a510df
Portname: 10:00:00:00:c9:61:73:de   Nodename: 20:00:00:00:c9:61:73:de

Link Up - Ready:
   PortID 0x645213
   Fabric
   Current speed 2G

Install Emulex HBA Utility

Can be found at Emulex Lputil.

To install lputil (uses example of lpfcutil-7.1.14;

  1. Put the downloaded tgz file on the ESX server
    • EG mkdir /var/updates/Emulex-lpfcutil-7.1.14
  2. Go into folder and extract;
    • cd /var/updates/Emulex-lpfcutil-7.1.14/
    • tar -xvzf Emulex-lpfcutil-7.1.14.tgz
  3. Install;
    • ./Install.sh
[root@uklonesxp2 Emulex-lpfcutil-7.1.14]# ./Install.sh
Installing Emulex HBAAPI libraries and applications...
Installation of Emulex HBAAPI libraries and utilities is completed.
  • Start the utility (on startup it should detect one or more HBA's);
  • /usr/sbin/lpfc/lputil
LightPulse Common Utility for Linux. Version 1.6a10 (10/7/2004).
Copyright (c) 2004, Emulex Network Systems, Inc.

Emulex Fibre Channel Host Adapters Detected: 1
Host Adapter 0 (lpfc0) is an LP1050 (Ready Mode)

HBAnywhere Installation

  1. Download the Driver and Application kit for VMware from Emulex's website.
    • At time of writing the current version of package was elxvmwarecorekit-esx35-4.0a45-1.i386.rpm
  2. Copy the package to the server
    • EG pscp -pw [password] elxvmwarecorekit-esx35-4.0a45-1.i386.rpm platadmn@dtcp-esxsvce01a:/home/platadmn
  3. Install the package
    • EG rpm -ivh elxvmwarecorekit-2.1a42-1.i386.rpm

Check Emulex HBA Firmware Version

Requires the HBA Utility to be installed 1st (see above)

  1. Start the utility (on startup it should detect one or more HBA's;
    • /usr/sbin/lpfc/lputil
  2. From the Main menu, enter 2, Adapter Revision Levels
    • Example shows version 1.91a5
                   BIU: 1001206D
      Sequence Manager: 00000000
                 Endec: 00000000
  Operational Firmware: SLI-2 Overlay
                Kernel: 1.40a3
      Initial Firmware: Initial Load 1.91a5 (MS1.91A5 )
                 SLI-1: SLI-1 Overlay 1.91a5 (M1F1.91A5 )
                 SLI-2: SLI-2 Overlay 1.91a5 (M2F1.91A5 )
 Highest FC-PH Version: 4.3
  Lowest FC-PH Version: 4.3


Update Emulex HBA Firmware

  • Using HBA Utility (must be installed 1st - see above). See the Emulex website for the latest version, eg Emulex LP1050Ex

To update the firmware (example uses LP1050Ex-mf191a5)

  1. Put the downloaded zip file on the UKLONVCP1 NFS Share, and unzip to a folder, eg EmulexLP1050Ex-mf191a5
  2. Create folder in /var/updates;
    • mkdir /var/updates/EmulexLP1050Ex-mf191a5
  3. Copy the firmware update onto the ESX
    • cp /vmfs/volumes/UKLONVCP1\ NFS\ Share/EmulexLP1050Ex-mf191a5/mf191a5.all /var/updates/EmulexLP1050Ex-mf191a5/
  4. Start the utility (on startup it should detect one or more HBA's;
    • /usr/sbin/lpfc/lputil
  5. From the Main menu, enter 3, Firmware Maintenance.
  6. If prompted, choose the HBA that is being updated.
  7. Enter 1, Load Firmware Image.
  8. Enter the full path to the firmware file, upgrade will then complete, eg
Enter Image Filename => /var/updates/EmulexLP1050Ex-mf191a5/mf191a5.all
Opening File...
End Of File
Checksum OK!!!
Reading AIF Header #1...
Validating Checksum...
Erasing Flash ROM Sectors...
100% complete
Loading Image...
First Download
100% complete
Image Successfully Downloaded...
Reading AIF Header #2...
Validating Checksum...
Erasing Flash ROM Sectors...
100% complete
Loading Image...
First Download
100% complete
Updating Wakeup Parameters...
Image Successfully Downloaded...
Reading AIF Header #3...
End Of File
Resetting Host Adapter...
Image Successfully Downloaded...


  • Using HBAnywhere (must be installed 1st - see above)
  1. Download the correct firmware version from Emulex's website
  2. Extract, and copy file to server
  3. Find adapter's WWPN's
    • EG /usr/sbin/hbanyware/hbacmd ListHBAs
  4. Download new firware version to each HBA
    • EG /usr/sbin/hbanyware/hbacmd download 10:00:00:00:c9:82:97:9e zf280a4.all

EMCgrab Collection

  1. Download correct verion from EMC's website
  2. Copy to server
    • EG pscp emcgrab_ESX_v1.1.tar platadmn@dtcp-esxsvce02a:/home/platadmn
  3. Uncompress the file
    • EG tar -xvf emcgrab_ESX_v1.1.tar
  4. Run grab (can take a few minutes, best done out of hours)
    • EG ./emcgrab.sh
  5. Results can be found in \emcgrab\outputs folder

QLogic

Find QLogic HBA Driver and Firmware Version

  1. cd /proc/scsi/qla2300
  2. more 1 for HBA 1
[root@uklonesxp1 qla2300]# more 1
QLogic PCI to Fibre Channel Host Adapter for QLA2340 :
        Firmware version:  3.03.19, Driver version 7.07.04
Entry address = 0x7dc314
HBA: QLA2312 , Serial# E79916
Request Queue = 0x3f403000, Response Queue = 0x3f414000
...


Install QLogic HBA Utility

Installation instructions for the SANsurfer utility

  1. Put the downloaded tgz file on the UKLONVCP1 NFS Share, eg scli-1.7.0-12.i386.rpm.gz
  2. Copy to folder /var/updates (create if it doesn't exist)
    • cp /vmfs/volumes/UKLONVCP1\ NFS\ Share/scli-1.7.0-12.i386.rpm.gz /var/updates
  3. Uncompress the file with the following command;
    • gunzip scli-1.7.0-12.i386.rpm.gz
  4. Enter the following commands to install the package, and then check its installed;
    • rpm -iv scli-1.7.0-12.i386.rpm
    • rpm -q scli
[root@uklonesxp1 updates]# rpm -iv scli-1.7.0-12.i386.rpm
Preparing packages for installation...
scli-1.7.0-12
[root@uklonesxp1 updates]# rpm -q scli
scli-1.7.0-12


Update QLogic HBA Firmware

See QLogic website for latest version, you must ensure the firmware version is compatible with the current running driver version. Requires SANsurfer to be installed 1st (see above)

  1. Put the downloaded tgz file on the UKLONVCP1 NFS Share, eg q231x_234x_bios147.zip, and unzip to folder
  2. Create a new folder for the update;
    • mkdir /var/updates/q231x_234x_bios147
  3. Copy the firmware onto the ESX server;
    • cp /vmfs/volumes/UKLONVCP1\ NFS\ Share/q231x_234x_bios147/QL23ROM.BIN /var/updates/q231x_234x_bios147/
  4. Move to the folder containing the update;
    • cd /var/updates/q231x_234x_bios147/
  5. Start the SANsurfer utility
    • scli
  6. Go into the HBA Utilities option
  7. Select the 'Save Flash option
  8. Follow the prompts to save the flash to a backup file, eg BackupROM.bin
  9. Select the Update Flash option
  10. Follow the prompts to update the flash, using the file copied to the ESX, eg QL23ROM.BIN
Enter a file name or Hit <RETURN> to abort: QL23ROM.BIN
Updating flash on HBA 0 - QLA2340 . Please wait...
Option ROM update complete. Changes have been saved to the HBA 0.
Please reboot the system for the changes to take effect.
Updating flash on HBA 1 - QLA2340 . Please wait...
Option ROM update complete. Changes have been saved to the HBA 1.
Please reboot the system for the changes to take effect.


SAN Downtime

ESX's don't like to loose the SAN, to the extent that during the scheduled SAN downtime the following is recommended...

  1. Shutdown ESX's (and hosted VM's) connected to affected storage
  2. Perform SAN maintenance
  3. Restart ESX's (and hosted VM's)

If the above is not possible then its recommended that...

  1. Migrate away/shutdown VM's that are hosted on affected storage
  2. Un-present LUN's
  3. Resan LUN's from ESX and confirm they disappear (any VM's on extinct storage will become greyed-out)
  4. Perform SAN maintenance
  5. Re-present LUN's
  6. Re-scan LUN's from ESX and confirm that they re-appear (grey-ed out VM's should reconnect)
  7. Restart / migrate VM's

Netflow

Netflow is available on ESX v3 only, and is an experimental feature. Netflow v5 is sent.

  • To start Netflow
    1. Load the module
      • vmkload_mod netflow
    2. Configure monitoring of appropriate vSwitch's to Netflow collector IP and port
      • /usr/lib/vmware/bin/vmkload_app -S -i vmktcp /usr/lib/vmware/bin/net-netflow -e vSwitch0,vSwitch1 10.20.255.31:2055
    • To reconfigure the Netflow module you must stop and restart the module
  • To confirm running
    1. Check the module is running...
      • [root@esx1 root]# vmkload_mod -l | grep netflow
      • netflow 0x9b4000 0x3000 0x298b640 0x1000 16 Yes
    2. Check the correct config is running...
      • [root@esx1 root]# ps -ef | grep netflow
      • root 2413 1 0 Feb05 ? 00:00:00 /usr/lib/vmware/bin/vmkload_app -S -i vmktcp /usr/lib/vmware/bin/net-netflow -e vSwitch0,vSwitch1 10.20.255.31:2055
  • To stop Netflow
    1. ps -ef | grep netflow
    2. kill <pid>
    3. vmkload_mod -u netflow

Change Service Console IP Information

Logged in as root use the esxcfg-vswif command esxcfg-vswif <options> [vswif]

Description: Creates and updates service console network settings. This command is used if you cannot manage the ESX Server host through the VI Client because of network configuration issues.

Note that the -l command will display the names(s) of the virtual switches which must be specified on the other commands so the trailing [vswif] is not optional on most commands.

Options:

-a Add vswif, requires IP parameters. Automatically enables interface. -d Delete vswif. -l List configured vswifs. -e Enable this vswif interface. -s Disable this vswif interface. -p Set the portgroup name of the vswif. -i <x.x.x.x> or DHCP The IP address for this vswif or specify DHCP to use DHCP for this address. -n <x.x.x.x> The IP netmask for this vswif. -b <x.x.x.x> The IP broadcast address for this vswif. (not required if netmask and ip are set) -c Check to see if a virtual NIC exists. Program outputs a 1 if the given vswif exists, 0 otherwise. -D Disable all vswif interfaces. (WARNING: This may result in a loss of network connectivity to the Service Console) -E Enable all vswif interfaces and bring them up. -r Restore all vswifs from the configuration file. (Internal use only) -h Displays command help.

Note: You set the Service Console default gateway by editing the /etc/sysconfig/network file or through the VI Client under Configuration, DNS & Routing.

Note: You set the Service Console VLAN (to 1234) using a similar command to: esxcfg-vswitch -v1234 -p"Service Console" vSwitch0>

Change Timezone

  1. Log into the ESX Server service console as root.
  2. Find the desired time zone under the directory /usr/share/zoneinfo
  3. Edit /etc/sysconfig/clock Edit this file to show the relative path to the file representing the new time zone, and ensure that UTC and ARC are set as shown:
    • ZONE="Etc/GMT"
    • UTC=true
    • ARC=false
  4. Copy the desired time zone file to /etc/localtime
    • cp /usr/share/zoneinfo/GMT /etc/localtime
  5. Confirm that /etc/localtime has been updated with the correct zoneinfo data using the following steps:
  6. Reference the zoneinfo file used in step 2 and compare it to /etc/localtime, if the files are identical, your prompt will return without any output.
    • diff /etc/localtime /usr/share/zoneinfo/GMT
  7. Confirm the system and hardware clocks are correct. Use the Linux date command to check and set the correct time if necessary.
    • Set the hardware clock to match the correct system time.
    • Set the system clock to the local date and time: \\\\ date MMDDhhmmYYYY
  8. Update the hardware clock with current time of the system clock;
    • /sbin/hwclock --systohc

Troubleshooting

Useful paths / logfiles

Timestamps in logfiles are in UTC !!!

ESX

Item Path Comments
Vmkernel logfile /var/log/vmkernel Pretty much everything seems to be recorded here
Vmkernel warnings /var/log/vmkwarning Virtual machine warnings
Host Daemon logfile /var/log/vmware/hostd.log Services log
vCentre Agent logfile /var/log/vmware/vpx/vpxa.log vCentre agent
Local VM files /vmfs/volumes/storage Storage name can vary, use TAB so shell selects available
SAN VM files /vmfs/volumes/SAN
HA agent logs /opt/LGTOaam512/log/ Various logs of limited use

ESXi

To view logfiles from an ESXi server, they need to be downloaded to your client machine 1st, and then viewed from there...

  1. Using VI Client, go to File | Export | Export System Logs...
    • Tick the appropriate object
    • Untick Include information from vCenter Server and vSphere Client, unless you additionally want this info
  2. Once exported, uncompress the ESX's tgz file

However, this is most easily achieved if you've got the PowerCLI installed, in which case see ESXi Logs via PowerCLI

Name PowerCLI Key Diagnostic Dump Path Comments
Syslog messages /var/log/messages Equivalent to ESX hostd and vmkernel logs combined
Host Daemon hostd /var/log/vmware/hostd.log Equivalent to ESX hostd log
vCenter Agent vpxa /var/log/vmware/vpx/vpxa.log

Logfiles get lost at restart ! If you have to restart your ESX (say, because it locked up) there will be no logs prior to the most recent boot. In theory they'll get written to a dump file if a crash is detected, but I've never found them, so assume they're only generated during a semi-graceful software crash.

However, there is a way around this. Message's can be sent to a syslog file (say on centrally available SAN LUN), a syslog server (in both cases see http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1016621), or to a vMA server (see http://www.vmware.com/support/developer/vima/vima40/doc/vma_40_guide.pdf).

ESXi Tech Support Mode

There's no Service Console on ESXi, so you have to do without. Well almost, there is the unsupported Tech Support Mode, which is a lightweight Service Console, to enable...

ESXi 3.5 and 4.0

  1. Go to the local ESXi console and press Alt+F1
  2. Type unsupported
  3. Blindly type the root password (yes, there's no prompt)
  4. Edit /etc/inetd.conf and uncomment (remove the #) from the line that starts with #ssh , and save
  5. Restart the management service /sbin/services.sh restart

ESXi 4.1

  1. Go to the local ESXi console and press F2
  2. Enter root user and pass
  3. Go to the Troubleshooting Options
  4. Enable Local Tech Support or Remote Tech Support (SSH) as required

Alternatively...

  1. From the vSphere Client, select the host and click the Configuration tab
  2. Go to Security profile > Properties
  3. Select Local Tech Support or Remote Tech Support (SSH) and click Options button
  4. Choose the Start automatically startup policy, click Start, and then OK.

CPU

Poor performance

Basic things to check are that the VM or the ESX its hosted on aren't saturating their available CPU. However if VM's are performing sluggishly and/or are slow to start, depsite not appearing to be excessively using CPU time futehr investigation is required...

  • Use esxtop on the ESX service console. Look at Ready Time (%RDY), which is how long a VM is waiting for CPUs to become available.
  • Alternatively look for CPU Ready in performance charts. Here its measured in msec, over the normal 20 sec sampling interval.

CPU Ready can creep up if the the system is pushed, or if the VM has multiple CPUs (as it needs multiple physical CPUs to become available at the same time, aka CPU Co-Scheduling). Multiple CPU's are especially a problem in environments where there are large number of SMP VM's.

% CPU Ready MSec CPU Ready Performance
< 1..25 % < 500 msec Excellent
< 2.5 % < 500 msec Good
< 5 % < 1000 msec Acceptible
< 10 % < 2000 msec Poor
> 15 % > 3000 msec Bad

CPU Co-Scheduling is more relaxed in ESX4 than ESX3, due to changes in the way that differences to seperate vCPU's progress within a single VM are calculated. Meaning that the derogatory affect on pCPU effciency of having multiple CPU VM is reduced (but not eliminated). See http://www.vmware.com/files/pdf/perf-vsphere-cpu_scheduler.pdf for further info.

Storage

Poor throughput

Use esxtop on the service console and switch to the disk monitor. Enable views for latency, you will see values like GAVG, KAVG and DAVG.

  • GAVG is the total guest experienced latency on IO commands averaged over 2 seconds
  • KAVG is the vmkernel/hypervisor IO latency averaged over 2 seconds
  • DAVG is the device (HBA) IO latency averaged over the last 2 seconds (will include any latency at lower level, eg SAN)

Latency occurs when the hypervisor or physical storage cannot keep pace with the demand for IO, as a rough guide to indicate if theres a problem or not...

Latency up to Status
2 ms Excellent - look elsewhere
10 ms Good
20 ms Reasonable
50 ms Poor / Busy
higher Bad

Storage Monitor Log Entries

How to decode the following type of entries...

Sep  3 15:15:14 tfukesxent1 vmkernel: 85:01:23:01.532 cpu4:2264)StorageMonitor: 196: vmhba1:2:0:0 status = 2/0 0x6 0x2a 0x1
Sep  3 15:15:32 tfukesxent1 vmkernel: 85:01:23:19.391 cpu4:2253)StorageMonitor: 196: vmhba1:3:9:0 status = 2/0 0x6 0x2a 0x1

The status message consists of the follow four decimal and hex blocks...

Device Status / Host Status Sense Key Additional Sense Code Additional Sense Code Qualifier

Where the ESX Device and SAN host status' mean...

Decimal Device Status Host Status Comments
0 No Errors Host_OK
1 Host No_Connect
2 Check Condition Host_Busy_Busy
3 Host_Timeout
4 Host_Bad_Target
5 Host_Abort
6 Host_Parity
7 Host_Error
8 Device Busy Host_Reset
9 Host_Bad_INTR
10 Host_PassThrough
11 Host_Soft_Error
24 Reservation Conflict 24/0 indicates a locking error, normally caused by too many ESX's mounting a LON, wrong config on storage array, or too many VM's on a LUN

Where the Sense Key mean...

Hex Sense Key
0x0 No Sense Information
0x1 Last command completed but used error correction
0x2 Unit Not Ready
0x3 Medium Error
0x4 Hardware Error
0x5 ILLEGAL_REQUEST (Passive SP)
0x6 LUN Reset
0x7 Data_Protect - Access to data is blocked
0x8 Blank_Check - Reached an unexpected region
0xa Copy_Aborted
0xb Aborted_Command - Target aborted command
0xc Comparison for SEARCH DATA unsuccessful
0xd Volume_Overflow - Medium is full
0xe Source and Data on Medium do not agree

The Additional Sense Code and Additional Sense Code Qualifier mean

Hex Sense Code
0x4 Unit Not Ready
0x3 Unit Not Ready - Manual Intervention Required
0x2 Unit Not Ready - Initializing Command Required
0x29 Device Power on or SCSI Reset

Recovering VM's from failed storage

Procedure generated from an occasion where the ESX software was installed on top of the shared SAN VMFS storage, where the VM files still existed so the VM’s continued to run, but as the file system index no longer existed, the vmdk’s etc were orphaned and would be lost if the VM’s were to be restarted. Though it could be adapted to suit any situation where the ESX datastore is corrupted, cannot power on VM’s, and rebooting a VM would lose it. However, its well worth calling VMware support before carrying this out, they may be able to provide an easier solution.

  1. On each VM
    1. Shut-down running applications
    2. Install VMware Converter (Typical install, all default options)
    3. Hot migrate local VM to a new VM on new storage
      1. As VMware converter starts, select Continue in Starter Mode
      2. Select Import Machine from the bottom of the initial screen
      3. Select source as Physical Machine, then on next screen This local machine
      4. Select default options for source disk
      5. Select VMware ESX server... as your destination
      6. Enter ESX hostname, and root user/pass
      7. Enter new VM name, e.g. myserver-recov (not the same as the existing, it will let you do it, but the VC isn’t happy later on)
      8. Select host
      9. Select datastore
      10. Select network and uncheck Connect at power on...
      11. Don’t select power on after creation, and let the migration run
    4. Reconfig the new VM, edit its settings as follows
      • Floppy Drive 1 --> Client Device
      • CD/DVD Drive 1 --> Client Device
      • Parallel Port 1 --> Remove
      • Serial Port 1 --> Remove
      • Serial Port 2 --> Remove
      • USB Controller --> Remove
    5. Power up the new VM and check it over
    6. Power off the old VM (you will lose it forever, be very sure the new VM is good)
    7. Connect the network of the new VM
    8. Delete the old VM
  2. Delete the knackered SAN datastore and refresh on all other ESX’s that share it (deletes the name but doesn’t free up any space)
  3. Create a new SAN datastore (this formats the old space)
  4. Refresh on all other ESX’s that share the datastore
  5. Shutdown all the new VM’s
  6. Clone them to the new SAN datastore using the original name (e.g. myserver)
  7. Power up new new VM’s on SAN datastore, confirm OK, then delete myserver-recov servers

Recover lost SAN VMFS partition

EG After a powerdown, ESX's can see the SAN storage, but the VMFS cannot be found in the Storage part of the ESX config, even after Refresh. To fix, the VMFS needs to be resignatured...

Do not attempt to Add Storage to recover the VMFS, this will format the partition

  1. On one of the ESX's, in Advanced Settings, change LVM.EnableResignature to 1
  2. Refresh Storage, the VMFS should be found with a new name, something like snap-000000002-OriginalName.
  3. Remove from Inventory all VM's from the old storage, the old storage should disappear from the list of datastores
  4. Rename the found storage to the original name
  5. Refresh Storage on all other ESX's, they should see the VMFS again
  6. Revert LVM.EnableResignature on the appropriate ESX
  7. Via the ESX, browse the datastore and re-add the VM's to the inventory (right-click over the .vmx file)
    • For a Virtual Machine Question about what to do about a UUID, select Keep

High Availability

Be aware that playing with HA can have disastrous effects, especially if the Isolation Response of your cluster is set to Power Off If you can, consider waiting until outside of production hours before trying to resolve a problem.

It's quite common for HA to go into an error state, normal course of action is to use the Reconfigure for HA option for the ESX that's experiencing the problem. This reinstalls the HA agent onto the ESX onto the ESX. It's also common to have to do this a couple of times for it to be successful.

Other things to try...

Manually Deinstall

  1. Put the ESX into maintenance mode
  2. Disconnect the ESX from the Virtual Centre
  3. SSH to the ESX server (or use ESXi Tech Support Mode)
  4. cd /opt/vmware/uninstallers
  5. ./VMware-vpxa-uninstall.sh
  6. ./VMware-aam-ha-uninstall.sh
  7. Reconect the ESX to the VC
  8. Take out of maintenance mode

If the VC Agent or HA Agent fails due to the uninstaller being unable to remove files/folders, and you can't remove them manually, this is an indication that the disk is becoming corrupt. Especially if installed on a USB key, consider replacing ASAP.

Snapshots

http://geosub.es/vmutils/Troubleshooting.Virtual.Machine.snapshot.problems/Troubleshooting.Virtual.Machine.snapshot.problems.html

See also Virtual Machines Snapshot Troubleshooting

Random Problems

ESXi Lockup

Affects ESXi v3.5 Update 4 only. Caused by a problem with updated CIM software in Update 4.

  • Workaround
    • Disable CIM (disables hardware monitoring) by setting Advanced Settings | Misc | Misc.CimEnabled to 0 (restart to apply)
  • Fix

For further info see http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1012575

Cimserver High CPU

Caused by problems with the VMware CIM server software. However can be caused by other problems causing it to go nuts (check VMKernel logs, etc).

  • Restart
    • service pegasus restart