Tuesday, February 23, 2016

VMware ESXi host build notes: install image, HCL, drivers, firmware - choosing an ESXi installation image

VMware provides an ESXi ISO that has all VMware Inbox drivers. However, if you want to get the most added value from your servers. you will normally use the Vendor provided ESXi installation image. These images have the latest drivers plus vendor-specific VIBs.

Of particular importance in the following lists is the Vendor and the Acceptance Level. The VMware image lists VMware as the vendor for all the VIBs, and always shows Acceptance Level to be VMwareCertified. The Dell image shows the actual company (even though Dell must validate the driver with VMware), and may show PartnerSupported as the Acceptance Level.

Here's the installed vib output from two otherwise identical Dell R730 servers. One was installed with the VMware ISO and the other with the Dell ISO. I apologize in advance for including the full text here, and especially in such a small font, but this will allow you to copy the files and do your own analysis.


Name                           Version                                Vendor  Acceptance Level  Install Date
-----------------------------  -------------------------------------  ------  ----------------  ------------
ata-pata-amd                   0.3.10-3vmw.550.0.0.1331820            VMware  VMwareCertified   2016-01-15  
ata-pata-atiixp                0.4.6-4vmw.550.0.0.1331820             VMware  VMwareCertified   2016-01-15  
ata-pata-cmd64x                0.2.5-3vmw.550.0.0.1331820             VMware  VMwareCertified   2016-01-15  
ata-pata-hpt3x2n               0.3.4-3vmw.550.0.0.1331820             VMware  VMwareCertified   2016-01-15  
ata-pata-pdc2027x              1.0-3vmw.550.0.0.1331820               VMware  VMwareCertified   2016-01-15  
ata-pata-serverworks           0.4.3-3vmw.550.0.0.1331820             VMware  VMwareCertified   2016-01-15  
ata-pata-sil680                0.4.8-3vmw.550.0.0.1331820             VMware  VMwareCertified   2016-01-15  
ata-pata-via                   0.3.3-2vmw.550.0.0.1331820             VMware  VMwareCertified   2016-01-15  
block-cciss                    3.6.14-10vmw.550.0.0.1331820           VMware  VMwareCertified   2016-01-15  
ehci-ehci-hcd                  1.0-3vmw.550.3.78.3248547              VMware  VMwareCertified   2016-01-15  
elxnet                         10.2.309.6v-1vmw.550.3.68.3029944      VMware  VMwareCertified   2016-01-15  
esx-base                       5.5.0-3.78.3248547                     VMware  VMwareCertified   2016-01-15  
esx-dvfilter-generic-fastpath  5.5.0-0.0.1331820                      VMware  VMwareCertified   2016-01-15  
esx-tboot                      5.5.0-2.33.2068190                     VMware  VMwareCertified   2016-01-15  
esx-xlibs                      5.5.0-0.0.1331820                      VMware  VMwareCertified   2016-01-15  
esx-xserver                    5.5.0-0.0.1331820                      VMware  VMwareCertified   2016-01-15  
ima-qla4xxx                    2.01.31-1vmw.550.0.0.1331820           VMware  VMwareCertified   2016-01-15  
ipmi-ipmi-devintf              39.1-4vmw.550.0.0.1331820              VMware  VMwareCertified   2016-01-15  
ipmi-ipmi-msghandler           39.1-4vmw.550.0.0.1331820              VMware  VMwareCertified   2016-01-15  
ipmi-ipmi-si-drv               39.1-4vmw.550.0.0.1331820              VMware  VMwareCertified   2016-01-15  
lpfc                         VMware  VMwareCertified   2016-01-15  
lsi-mr3                    VMware  VMwareCertified   2016-01-15  
lsi-msgpt3                VMware  VMwareCertified   2016-01-15  
misc-cnic-register             1.72.1.v50.1i-1vmw.550.0.0.1331820     VMware  VMwareCertified   2016-01-15  
misc-drivers                   5.5.0-3.78.3248547                     VMware  VMwareCertified   2016-01-15  
mtip32xx-native                3.3.4-1vmw.550.1.15.1623387            VMware  VMwareCertified   2016-01-15  
net-be2net                   VMware  VMwareCertified   2016-01-15  
net-bnx2                       2.2.3d.v55.2-1vmw.550.0.0.1331820      VMware  VMwareCertified   2016-01-15  
net-bnx2x                      1.72.56.v55.2-1vmw.550.0.0.1331820     VMware  VMwareCertified   2016-01-15  
net-cnic                       1.72.52.v55.1-1vmw.550.0.0.1331820     VMware  VMwareCertified   2016-01-15  
net-e1000                       VMware  VMwareCertified   2016-01-15  
net-e1000e                     VMware  VMwareCertified   2016-01-15  
net-enic                      VMware  VMwareCertified   2016-01-15  
net-forcedeth                  0.61-2vmw.550.0.0.1331820              VMware  VMwareCertified   2016-01-15  
net-igb                      VMware  VMwareCertified   2016-01-15  
net-ixgbe              VMware  VMwareCertified   2016-01-15  
net-mlx4-core                   VMware  VMwareCertified   2016-01-15  
net-mlx4-en                     VMware  VMwareCertified   2016-01-15  
net-nx-nic                     5.0.621-1vmw.550.0.0.1331820           VMware  VMwareCertified   2016-01-15  
net-tg3                        3.123c.v55.5-1vmw.550.2.33.2068190     VMware  VMwareCertified   2016-01-15  
net-vmxnet3                    VMware  VMwareCertified   2016-01-15  
ohci-usb-ohci                  1.0-3vmw.550.0.0.1331820               VMware  VMwareCertified   2016-01-15  
qlnativefc                     VMware  VMwareCertified   2016-01-15  
rste                        VMware  VMwareCertified   2016-01-15  
sata-ahci                      3.0-22vmw.550.3.68.3029944             VMware  VMwareCertified   2016-01-15  
sata-ata-piix                  2.12-10vmw.550.2.33.2068190            VMware  VMwareCertified   2016-01-15  
sata-sata-nv                   3.5-4vmw.550.0.0.1331820               VMware  VMwareCertified   2016-01-15  
sata-sata-promise              2.12-3vmw.550.0.0.1331820              VMware  VMwareCertified   2016-01-15  
sata-sata-sil24                1.1-1vmw.550.0.0.1331820               VMware  VMwareCertified   2016-01-15  
sata-sata-sil                  2.3-4vmw.550.0.0.1331820               VMware  VMwareCertified   2016-01-15  
sata-sata-svw                  2.3-3vmw.550.0.0.1331820               VMware  VMwareCertified   2016-01-15  
scsi-aacraid                    VMware  VMwareCertified   2016-01-15  
scsi-adp94xx                   VMware  VMwareCertified   2016-01-15  
scsi-aic79xx                   3.1-5vmw.550.0.0.1331820               VMware  VMwareCertified   2016-01-15  
scsi-bnx2fc                    1.72.53.v55.1-1vmw.550.0.0.1331820     VMware  VMwareCertified   2016-01-15  
scsi-bnx2i                     2.72.11.v55.4-1vmw.550.0.0.1331820     VMware  VMwareCertified   2016-01-15  
scsi-fnic                       VMware  VMwareCertified   2016-01-15  
scsi-hpsa                      5.5.0-44vmw.550.0.0.1331820            VMware  VMwareCertified   2016-01-15  
scsi-ips                       7.12.05-4vmw.550.0.0.1331820           VMware  VMwareCertified   2016-01-15  
scsi-lpfc820                  VMware  VMwareCertified   2016-01-15  
scsi-megaraid-mbox             VMware  VMwareCertified   2016-01-15  
scsi-megaraid-sas              5.34-9vmw.550.3.68.3029944             VMware  VMwareCertified   2016-01-15  
scsi-megaraid2                 2.00.4-9vmw.550.0.0.1331820            VMware  VMwareCertified   2016-01-15  
scsi-mpt2sas               VMware  VMwareCertified   2016-01-15  
scsi-mptsas                 VMware  VMwareCertified   2016-01-15  
scsi-mptspi                 VMware  VMwareCertified   2016-01-15  
scsi-qla2xxx                   902.k1.1-12vmw.550.3.68.3029944        VMware  VMwareCertified   2016-01-15  
scsi-qla4xxx                  VMware  VMwareCertified   2016-01-15  
uhci-usb-uhci                  1.0-3vmw.550.0.0.1331820               VMware  VMwareCertified   2016-01-15  
vr2c-firewall                            VMware  VMwareCertified   2016-01-22  
xhci-xhci                      1.0-3vmw.550.3.78.3248547              VMware  VMwareCertified   2016-01-15  

tools-light                    5.5.0-3.78.3248547                     VMware  VMwareCertified   2016-01-15  


Name                           Version                                Vendor    Acceptance Level  Install Date
-----------------------------  -------------------------------------  --------  ----------------  ------------
scsi-mpt2sas           Avago     VMwareCertified   2016-01-14  
scsi-mpt3sas                Avago     VMwareCertified   2016-01-14  
net-tg3                        3.137l.v55.1-1OEM.550.0.0.1331820      Broadcom  VMwareCertified   2016-01-14  
dell-configuration-vib         5.5-3A04                               Dell      PartnerSupported  2016-01-14  
elxnet                       Emulex    VMwareCertified   2016-01-14  
ima-be2iscsi                 Emulex    VMwareCertified   2016-01-14  
lpfc                         Emulex    VMwareCertified   2016-01-14  
scsi-be2iscsi                Emulex    VMwareCertified   2016-01-14  
net-i40e                       1.3.38-1OEM.550.0.0.1331820            Intel     VMwareCertified   2016-01-14  
net-igb                        5.3.1-1OEM.550.0.0.1331820             Intel     VMwareCertified   2016-01-14  
net-ixgbe                       Intel     VMwareCertified   2016-01-14  
scsi-megaraid-perc9            6.902.73.00-1OEM.550.0.0.1331820       LSI       VMwareCertified   2016-01-14  
scsi-megaraid-sas              06.805.56.00-1OEM.550.0.0.1331820      LSI       VMwareCertified   2016-01-14  
mtip32xx-native                3.9.4-1OEM.550.0.0.1331820             MICRON    VMwareCertified   2016-01-14  
net-mlx4-core                   Mellanox  VMwareCertified   2016-01-14  
net-mlx4-en                     Mellanox  VMwareCertified   2016-01-14  
ima-qla4xxx                    500.2.01.31-1vmw.0.3.100400            QLogic    VMwareCertified   2016-01-14  
misc-cnic-register             1.712.10.v55.2-1OEM.550.0.0.1331820    QLogic    VMwareCertified   2016-01-14  
net-bnx2                       2.2.5g.v55.2-1OEM.550.0.0.1331820      QLogic    VMwareCertified   2016-01-14  
net-bnx2x                      2.712.10.v55.4-1OEM.550.0.0.1331820    QLogic    VMwareCertified   2016-01-14  
net-cnic                       2.712.10.v55.4-1OEM.550.0.0.1331820    QLogic    VMwareCertified   2016-01-14  
net-qlcnic                     5.5.190-1OEM.550.0.0.1331820           QLogic    VMwareCertified   2016-01-14  
net-qlge                       QLogic    VMwareCertified   2016-01-14  
qlnativefc                     QLogic    VMwareCertified   2016-01-14  
scsi-bnx2fc                    1.712.10.v55.2-1OEM.550.0.0.1331820    QLogic    VMwareCertified   2016-01-14  
scsi-bnx2i                     2.712.10.v55.4-1OEM.550.0.0.1331820    QLogic    VMwareCertified   2016-01-14  
scsi-qla4xxx                   644.55.36.0-1OEM.550.0.0.1331820       QLogic    VMwareCertified   2016-01-14  
ata-pata-amd                   0.3.10-3vmw.550.0.0.1331820            VMware    VMwareCertified   2016-01-14  
ata-pata-atiixp                0.4.6-4vmw.550.0.0.1331820             VMware    VMwareCertified   2016-01-14  
ata-pata-cmd64x                0.2.5-3vmw.550.0.0.1331820             VMware    VMwareCertified   2016-01-14  
ata-pata-hpt3x2n               0.3.4-3vmw.550.0.0.1331820             VMware    VMwareCertified   2016-01-14  
ata-pata-pdc2027x              1.0-3vmw.550.0.0.1331820               VMware    VMwareCertified   2016-01-14  
ata-pata-serverworks           0.4.3-3vmw.550.0.0.1331820             VMware    VMwareCertified   2016-01-14  
ata-pata-sil680                0.4.8-3vmw.550.0.0.1331820             VMware    VMwareCertified   2016-01-14  
ata-pata-via                   0.3.3-2vmw.550.0.0.1331820             VMware    VMwareCertified   2016-01-14  
block-cciss                    3.6.14-10vmw.550.0.0.1331820           VMware    VMwareCertified   2016-01-14  
ehci-ehci-hcd                  1.0-3vmw.550.3.78.3248547              VMware    VMwareCertified   2016-01-14  
esx-base                       5.5.0-3.78.3248547                     VMware    VMwareCertified   2016-01-14  
esx-dvfilter-generic-fastpath  5.5.0-0.0.1331820                      VMware    VMwareCertified   2016-01-14  
esx-tboot                      5.5.0-2.33.2068190                     VMware    VMwareCertified   2016-01-14  
esx-xlibs                      5.5.0-0.0.1331820                      VMware    VMwareCertified   2016-01-14  
esx-xserver                    5.5.0-0.0.1331820                      VMware    VMwareCertified   2016-01-14  
ipmi-ipmi-devintf              39.1-4vmw.550.0.0.1331820              VMware    VMwareCertified   2016-01-14  
ipmi-ipmi-msghandler           39.1-4vmw.550.0.0.1331820              VMware    VMwareCertified   2016-01-14  
ipmi-ipmi-si-drv               39.1-4vmw.550.0.0.1331820              VMware    VMwareCertified   2016-01-14  
misc-drivers                   5.5.0-3.78.3248547                     VMware    VMwareCertified   2016-01-14  
net-be2net                   VMware    VMwareCertified   2016-01-14  
net-e1000                       VMware    VMwareCertified   2016-01-14  
net-e1000e                     VMware    VMwareCertified   2016-01-14  
net-enic                      VMware    VMwareCertified   2016-01-14  
net-forcedeth                  0.61-2vmw.550.0.0.1331820              VMware    VMwareCertified   2016-01-14  
net-nx-nic                     5.0.621-1vmw.550.0.0.1331820           VMware    VMwareCertified   2016-01-14  
net-vmxnet3                    VMware    VMwareCertified   2016-01-14  
nvme                           VMware    VMwareCertified   2016-01-14  
ohci-usb-ohci                  1.0-3vmw.550.0.0.1331820               VMware    VMwareCertified   2016-01-14  
rste                        VMware    VMwareCertified   2016-01-14  
sata-ahci                      3.0-22vmw.550.3.68.3029944             VMware    VMwareCertified   2016-01-14  
sata-ata-piix                  2.12-10vmw.550.2.33.2068190            VMware    VMwareCertified   2016-01-14  
sata-sata-nv                   3.5-4vmw.550.0.0.1331820               VMware    VMwareCertified   2016-01-14  
sata-sata-promise              2.12-3vmw.550.0.0.1331820              VMware    VMwareCertified   2016-01-14  
sata-sata-sil24                1.1-1vmw.550.0.0.1331820               VMware    VMwareCertified   2016-01-14  
sata-sata-sil                  2.3-4vmw.550.0.0.1331820               VMware    VMwareCertified   2016-01-14  
sata-sata-svw                  2.3-3vmw.550.0.0.1331820               VMware    VMwareCertified   2016-01-14  
scsi-aacraid                    VMware    VMwareCertified   2016-01-14  
scsi-adp94xx                   VMware    VMwareCertified   2016-01-14  
scsi-aic79xx                   3.1-5vmw.550.0.0.1331820               VMware    VMwareCertified   2016-01-14  
scsi-fnic                       VMware    VMwareCertified   2016-01-14  
scsi-hpsa                      5.5.0-44vmw.550.0.0.1331820            VMware    VMwareCertified   2016-01-14  
scsi-ips                       7.12.05-4vmw.550.0.0.1331820           VMware    VMwareCertified   2016-01-14  
scsi-lpfc820                  VMware    VMwareCertified   2016-01-14  
scsi-megaraid-mbox             VMware    VMwareCertified   2016-01-14  
scsi-megaraid2                 2.00.4-9vmw.550.0.0.1331820            VMware    VMwareCertified   2016-01-14  
scsi-mptsas                 VMware    VMwareCertified   2016-01-14  
scsi-mptspi                 VMware    VMwareCertified   2016-01-14  
scsi-qla2xxx                   902.k1.1-12vmw.550.3.68.3029944        VMware    VMwareCertified   2016-01-14  
uhci-usb-uhci                  1.0-3vmw.550.0.0.1331820               VMware    VMwareCertified   2016-01-14  
vr2c-firewall                            VMware    VMwareCertified   2016-01-26  
xhci-xhci                      1.0-3vmw.550.3.78.3248547              VMware    VMwareCertified   2016-01-14  

tools-light                    5.5.0-3.78.3248547                     VMware    VMwareCertified   2016-01-14  

In my case, I save these in text files and finally use Notepad++ to compare them. Note that the Dell output is not as sorted as the VMware one, so you want to do that first to get better results; also, be mindful that the install date may throw a lot of "different lines". I actually remove this column before comparing.

The result of the Compare (hiding the lines that are the same) shows us how different the images are:

We can see different driver versions, some packages which were dropped (in red) and others that were added (in green).

From our previous post, these are our main differences between similar packages (normally driver version differences)

 VMware has
 Dell has

 VMware has
 Dell has 5.3.1-1OEM.550.0.0.1331820

So be mindful of the image you choose and how it affects your HCL driver/firmware combinations, and your acceptance level.

If you want to find out the image that was used to install a host you can check through GUI 

or with this command:

# esxcli software profile get
(Updated) Dell-ESXi-5.5U3-3248547-A04

# esxcli software profile get

(Updated) ESXi-5.5.0-20151204001-standard

I find using the Vendor installation image a better option, as long as you are careful of the HCL / firmware implications. Note, however, that sometimes useful software such as Dell OpenManage software isn't included. The vendors normally provide a separate vib you can install to add that functionality.

This concludes this three part series on keeping host build notes, and guaranteeing you are using a supported configuration.

Friday, February 19, 2016

VMware ESXi host build notes: install image, HCL, drivers, firmware - confirming HCL recommendations once you have the hardware

For your purposes the important KBs now are 1031534 and 1034674



With hardware turned on and ESXi setup (we will talk about the install image later on) we access shell and can now check the IO devices. In my case we are running this with esxi v5.5

The two commands that I like to check HBAs and NICs are slight variations to the ones in the KB:

vmkchdev -l | grep vmnic

example output:

~ # vmkchdev -l | grep vmnic
0000:01:00.0 8086:1521 1028:1f60 vmkernel vmnic0
0000:01:00.1 8086:1521 1028:1f60 vmkernel vmnic1
0000:01:00.2 8086:1521 1028:1f60 vmkernel vmnic2
0000:01:00.3 8086:1521 1028:1f60 vmkernel vmnic3
0000:82:00.0 8086:1521 8086:5001 vmkernel vmnic4
0000:82:00.1 8086:1521 8086:5001 vmkernel vmnic5
0000:82:00.2 8086:1521 8086:5001 vmkernel vmnic6
0000:82:00.3 8086:1521 8086:5001 vmkernel vmnic7

vmkchdev -l | grep vmhba

example output:

~ # vmkchdev -l | grep vmhba
0000:00:11.4 8086:8d62 1028:0600 vmkernel vmhba1
0000:00:1f.2 8086:8d02 1028:0600 vmkernel vmhba2
0000:02:00.0 1000:005f 1028:1f4b vmkernel vmhba0
0000:04:00.0 10df:f100 10df:f100 vmkernel vmhba5
0000:04:00.1 10df:f100 10df:f100 vmkernel vmhba6
0000:05:00.0 10df:f100 10df:f100 vmkernel vmhba3
0000:05:00.1 10df:f100 10df:f100 vmkernel vmhba4

The first column is a PCI bus identifier, the 2nd and 3rd are hardware identifierss, and the last column is how ESXi calls the device.

From the KB:

For example, to check the compatibility of vmnic0 and vmhba0, note the hardware IDs:

000:003:00.0 14e4:1639 103c:7055 vmkernel vmnic0
000:069:00.0 103c:323a 103c:3243 vmkernel vmhba0

The section in bold indicates the device properties in the format VID:DID SVID:SSID, where:

VID = Vendor Id
DID = Device Id
SVID = Sub-Vendor Id
SSID = Sub-Device Id

These numbers are very important, because they allow us to check the VMware compatibility list we had talked about before, but in a very specific manner. Let's check the IDs we got from the example.

This is the I/O devices view of the Compatibility Guide. We don't need to select vendors or model anymore - we only need to input the 4 numbers

With those 4 numbers we now know our vmin0-vmnic3 are the Intel I350-t NDC (network daughter card) which are the LAN on motherboard ports. It's good that they are listed, but if we click on the ESXi version from the results, we now can see the list of driver and firmware combinations that VMware supports:

So we have information, how do we find what drive and firmware is running on ESXi?

For network cards

Use this command:

ethtool -i vmnicX


~ # ethtool -i vmnic0
driver: igb
version: 5.3.1
firmware-version: 1.67, 0x80000d93, 16.5.20
bus-info: 0000:01:00.0

So we have found out that the driver is called igb, it's version 5.3.1 and firmware is v1.67. Checking the website, we see that this driver is compatible with any firmware version (if there was a specific firmware it would be listed, instead of N/A, like in the case of igb 5.2.7). This means for this device we are running on VMware approved drivers and firmware.

For storage HBAs

The commands for HBAs are not as clean and may vary by your vendor. 

You first find the driver being used. This command lists HBA devices:

esxcfg-scsidevs -a

~ # esxcfg-scsidevs -a
vmhba38 ahci              link-n/a  sata.vmhba38                            (0:0:31.2) Intel Corporation Wellsburg AHCI Controller
vmhba39 ahci              link-n/a  sata.vmhba39                            (0:0:31.2) Intel Corporation Wellsburg AHCI Controller
vmhba0  megaraid_perc9    link-n/a  unknown.vmhba0                          (0:2:0.0) LSI / Symbios Logic Dell PERC H330 Mini Adapter
vmhba1  ahci              link-n/a  sata.vmhba1                             (0:0:17.4) Intel Corporation Wellsburg AHCI Controller
vmhba2  ahci              link-n/a  sata.vmhba2                             (0:0:31.2) Intel Corporation Wellsburg AHCI Controller
vmhba3  lpfc              link-up   fc.20000090XXXXXXXX:10000090XXXXXXXX    (0:5:0.0) Emulex Corporation LPe12000 8Gb Fibre Channel Host Adapter

Or you can also use

esxcli storage core adapter list

In this case i'm interested in double checking the Emulex 8GB FC adapters. Now I know my driver is called lpfc. With this information I now run this command

vmkload_mod -s lpfc | grep Version

Example output:

~ # vmkload_mod -s lpfc |grep Version

To determine firmware on a FibreChannel HBA we need yet another KB, 1002413

The command for ESXi v5.5 is

/usr/lib/vmware/vmkmgmt_keyval/vmkmgmt_keyval -a

In the meantime, I find this grep sufficient to reduce the output to what we are interested in so I can paste an excerpt:

# /usr/lib/vmware/vmkmgmt_keyval/vmkmgmt_keyval -a | grep 'FW Version'
FW Version:     2.01A12

Notice that all HBAs show the same firmware version (they are all the same model). Always be mindful that if you have different hardware, you have to check each!

Checking this HBA's 4 ID numbers and comparing the driver and firmware versions we see:

Here we can see an interesting situation - we have a new driver but old firmware, and they are incompatible (VMware would tell you, if you have a problem, you aren't running an HCL-approved configuration). In this case, you will need to update the firmware on the HBA card. 

In my experience, I find that the vendor tools (through HP SPP or Dell OME ISO) do a good job of upgrading all server BIOS/firmware on all vendor-provided cards to their latest Linux versions. After updating firmware through these tools, you still have to check that you are in an approved configuration. There are also many posts on the internet on how to execute a standalone firmware upgrade but most depend on a device specific tool. If you can't get the firmware to the correct version to use that latest driver, you might need to downgrade the driver to match your existing firmware. Remember, as long as you are on the HCL, VMware will support you if you run into problems (small caveat below).

A note on "inbox" drivers versus Partner Async
  • Inbox drivers are what VMware provides in their base installer. They are the driver/firmware combination that they certified works when doing a release. They own support on this driver/firmware combination.
  • Partner Async drivers are updates to drivers provided by vendors that pass a certification process. However, if a problem is determined on this new version, the support lies on the Partner, not on VMware. VMware can recommend you to fall back to the inbox drivers.
You have the eternal dilemma of stability versus bug fixes and performance improvements. I always go for Partner Async unless I find trouble. Note that vendors provide VMware ISO installers that include these new drivers by default. The topic of the differences between the VMware provided installation ISO (that only includes the inbox drivers) and the vendor provided ISOs is the next and last post in this series.

In Summary

Now you know how to check the hardware you own against HCL for firmware and drivers. You would run the numbers for each one of the devices you want to check on your hardware. Documenting the configuration that will ultimately go to production will help as you add more hardware into the clusters and help you keep a homogeneous environment. 

Wednesday, February 17, 2016

VMware ESXi host build notes: install image, HCL, drivers, firmware - verifying hardware before you buy it

This is a long topic, which most administrators don't spend too much time on - until it suddenly is very important because of a problem :)

To make sure your hardware works well with VMware, you need (and need to learn to navigate) the VMware Compatibility Guide


This is a front end for a huge list of hardware devices, and there are many ways to navigate it. I will show some things with examples.

This post will focus on making sure you are buying a server that is on the Hardware Compatibility List. While most popular platforms from the main vendors get certified quickly (and bugs are found very quickly too), you might find this exercise very important if you are considering doing things which aren't as popular or cookie-cutter.

First you want to make sure the server model is listed as compatible in this page. This normally guarantees that the other hardware options that the vendor offers for that server will also be supported, but we will talk about that in a bit.

Let's say I'm considering a Dell R730 server, and I know that I will use an Intel E5-2600-v3 series CPU. With that information I can do a query and find that both the R730 and R730XD are compatible with ESXi 5.5u3 (note that it's also supported for v6.0 and v6.0u1, which will be likely upgrades during the lifecycle of this server).

(Note, if you click on the image you get full resolution)

That's good - this server will do. There are still a lot of options to check though. 

Let's say we are picking the Intel I-350-t NIC for our data traffic and some Emulex LPe120002 8GB FC HBAs. We have to switch to the I/O devices view. However, note that I am keeping Dell as the vendor. Dell has their own version of these hardware devices, which is different from the original vendor's (they run their own QA process and adjust firmware for their needs). 

If you were buying hardware as retail for this server, and not through Dell, you would choose the original vendor. Please note - Dell might complain about that and not offer support if you do that, so always check with them. Generally speaking, you are safer if you buy all your hardware in one neat little certified package, but that may not be how you roll.

Checking the Emulex HBA:

And checking the Intel I350-t cards (note that it's supported in several formats, including network daughter card and as add-on devices)

All right, all seems good. You would continue checking all important parts - if you will use VSAN, you want to make sure any SSDs you buy are in the corresponding compatibility list. 

Next post talks about how to check the firmware and driver levels for a server you already have in your hands. We will talk about the ESXi installation image as well.

Monday, February 15, 2016

Powershell and PowerCLI - getting started

Here's a small collection of links and tips for getting started with PowerShell/PowerCLI

PowerCLI main link

PowerCLI Change Log (great place to see the latest PowerCLI version and release notes)


Note each release note includes a link to the software needed to run PowerCLI. It's called the compatibility matrix. 


In my case for 6.0r3 you want to 
  • run on 2008R2 sp1, 2012R2, 7 sp1, 8.1
  • have PowerShell 3 or 4
  • Have .Net framework 4.5 or newer

The mentioned windows OSs bring a version of Powershell by default. Find out the version of powershell running on your system with this command:

$psversiontable [enter]

For example, on my Windows 7 SP1 VM, Powershell is at version 2, so it would need to be upgraded first (with a corresponding .net upgrade). Windows 8.1 has version 3 and you would be good to go.

(Server 2016 and Windows 10 have PowerShell version 5. Yes, releases have gone in quick succession, mostly because of DSC. You can read about changes here. Keep in mind it's not officially supported in PowerCLI yet, but it will be, inevitably.)

Chris Wahl has an excellent series of posts on PowerShell here. I especially found this post useful to start setting up your environment:


This 15 minute vBrownBag tech talk is about that post and also about version control with Git.


I found this post helpful as well, even if from 2012


This is my version of the startup script Chris guides you through setting up. I place it in different locations whether it's work (so it only affects my user) or home machine. 

profile.ps1 contents:

Set-ExecutionPolicy Bypass
Set-Location "E:\PowerCLI codes"
if ($psISE)
Write-Host 'Oh it is YOU again'

I totally took the advice from Chris. This cracks me up since I don't use PowerCLI that often! Mad shout out to him since he was very helpful to me throughout the creation of this post :D

All nice and good in PowerShell, but by default, running the PowerCLI icon on the desktop will not obey the Set-Location, and it will complain because Set-ExecutionPolicy requires running as Administrator.

To fix this:

1) Right click the PowerCLI icon, Click Advanced, set to Run as Administrator.

2) Look at the target on the shortcut. PowerCLI runs its own initialization script, in my case:

C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Scripts\Initialize-PowerCLIEnvironment.ps1

This file is set to read-only. Make a backup, fix the permissions until you can save. In my case, for it to respect the path I want, I went to line 269 of the 6.0r3 script which has a "cd \" command. I commented it out and now my desired location in profile.ps1 works. 

If you are going to use the 32-bit version of PowerCLI, you would also have to check that shortcut and do the respectful edits. I have not yet found the need to use that link though.

I'm thinking there's probably a way to have all these little customization tasks scripted so in theory you could just open a command line with administrator privileges, paste your instructions (which would include things such as create file, insert file contents, save, change permissions and file attributes, modify shortcuts, replace string) and not have to make the process of setting up the environment so manual. The ideal scenario is after pasting the instructions, you would close that cmd, double click the PowerCLI icon and you are ready to go.

I'm only thinking this is possible because PowerShell is meant to be able to do anything you can normally do on Windows GUI. I'm sure as releases of PowerCLI change things you would need to adjust the script a bit, but if you use several jumpboxes this could save you a lot of time.

PowerShell / PowerCLI feels very powerful. Also have to say having the ISE installed by default is pretty cool. Get in on this, it's looking like it will be quite fun!