Analyser l’impact d’une mise à jour ESXi

Lorsqu’on met à jour à la main un ESXi, il est possible d’analyser les paquets qui vont être installés, ceux qui vont être mis à jour, et ceux qui ne vont pas être touchés. On a alors une sortie qui ressemble à ça.

~ # esxcli software profile update --dry-run -p ESXi-5.1.0-20160504001-standard \
> -d https://hostupdate.vmware.com/software/VUM/PRODUCTION/main/vmw-depot-index.xml
Update Result
   Message: The update completed successfully, but the system needs to be rebooted for the changes to be effective.
   Reboot Required: true
   VIBs Installed: VMware_bootbank_ata-pata-amd_0.3.10-3vmw.510.0.0.799733, VMware_bootbank_ata-pata-atiixp_0.4.6-4vmw.510.0.0.799733, VMware_bootbank_ata-pata-cmd64x_0.2.5-3vmw.510.0.0.799733, VMware_bootbank_ata-pata-hpt3x2n_0.3.4-3vmw.510.0.0.799733, VMware_bootbank_ata-pata-pdc2027x_1.0-3vmw.510.0.0.799733, VMware_bootbank_ata-pata-serverworks_0.4.3-3vmw.510.0.0.799733, VMware_bootbank_ata-pata-sil680_0.4.8-3vmw.510.0.0.799733, VMware_bootbank_ata-pata-via_0.3.3-2vmw.510.0.0.799733, VMware_bootbank_block-cciss_3.6.14-10vmw.510.0.0.799733, VMware_bootbank_ehci-ehci-hcd_1.0-3vmw.510.0.0.799733, VMware_bootbank_esx-base_5.1.0-3.85.3872664, VMware_bootbank_esx-dvfilter-generic-fastpath_5.1.0-0.0.799733, VMware_bootbank_esx-tboot_5.1.0-2.23.1483097, VMware_bootbank_esx-xlibs_5.1.0-1.22.1472666, VMware_bootbank_esx-xserver_5.1.0-1.22.1472666, VMware_bootbank_ima-qla4xxx_2.01.31-1vmw.510.0.0.799733, VMware_bootbank_ipmi-ipmi-devintf_39.1-4vmw.510.0.0.799733, VMware_bootbank_ipmi-ipmi-msghandler_39.1-4vmw.510.0.0.799733, VMware_bootbank_ipmi-ipmi-si-drv_39.1-4vmw.510.1.12.1065491, VMware_bootbank_misc-cnic-register_1.1-1vmw.510.0.0.799733, VMware_bootbank_misc-drivers_5.1.0-3.55.2583090, VMware_bootbank_net-be2net_4.1.255.11-1vmw.510.0.0.799733, VMware_bootbank_net-bnx2_2.0.15g.v50.11-7vmw.510.1.12.1065491, VMware_bootbank_net-bnx2x_1.61.15.v50.3-1vmw.510.0.11.1063671, VMware_bootbank_net-cnic_1.10.2j.v50.7-3vmw.510.0.0.799733, VMware_bootbank_net-e1000_8.0.3.1-2vmw.510.1.16.1157734, VMware_bootbank_net-e1000e_1.1.2-3vmw.510.2.23.1483097, VMware_bootbank_net-enic_1.4.2.15a-1vmw.510.0.0.799733, VMware_bootbank_net-forcedeth_0.61-2vmw.510.0.0.799733, VMware_bootbank_net-igb_2.1.11.1-3vmw.510.1.12.1065491, VMware_bootbank_net-ixgbe_3.7.13.6iov-10vmw.510.1.20.1312873, VMware_bootbank_net-nx-nic_4.0.558-3vmw.510.0.0.799733, VMware_bootbank_net-r8168_8.013.00-3vmw.510.0.0.799733, VMware_bootbank_net-r8169_6.011.00-2vmw.510.0.0.799733, VMware_bootbank_net-s2io_2.1.4.13427-3vmw.510.0.0.799733, VMware_bootbank_net-sky2_1.20-2vmw.510.0.0.799733, VMware_bootbank_net-tg3_3.123b.v50.1-1vmw.510.2.23.1483097, VMware_bootbank_net-vmxnet3_1.1.3.0-3vmw.510.3.55.2583090, VMware_bootbank_ohci-usb-ohci_1.0-3vmw.510.0.0.799733, VMware_bootbank_sata-ahci_3.0-15vmw.510.2.23.1483097, VMware_bootbank_sata-ata-piix_2.12-7vmw.510.2.23.1483097, VMware_bootbank_sata-sata-nv_3.5-4vmw.510.0.0.799733, VMware_bootbank_sata-sata-promise_2.12-3vmw.510.0.0.799733, VMware_bootbank_sata-sata-sil24_1.1-1vmw.510.0.0.799733, VMware_bootbank_sata-sata-sil_2.3-4vmw.510.0.0.799733, VMware_bootbank_sata-sata-svw_2.3-3vmw.510.0.0.799733, VMware_bootbank_scsi-aacraid_1.1.5.1-9vmw.510.0.0.799733, VMware_bootbank_scsi-adp94xx_1.0.8.12-6vmw.510.0.0.799733, VMware_bootbank_scsi-aic79xx_3.1-5vmw.510.0.0.799733, VMware_bootbank_scsi-bnx2i_1.9.1d.v50.1-5vmw.510.0.0.799733, VMware_bootbank_scsi-fnic_1.5.0.3-1vmw.510.0.0.799733, VMware_bootbank_scsi-hpsa_5.0.0-21vmw.510.1.16.1157734, VMware_bootbank_scsi-ips_7.12.05-4vmw.510.0.0.799733, VMware_bootbank_scsi-lpfc820_8.2.3.1-127vmw.510.0.0.799733, VMware_bootbank_scsi-megaraid-mbox_2.20.5.1-6vmw.510.0.0.799733, VMware_bootbank_scsi-megaraid-sas_5.34-4vmw.510.3.50.2323236, VMware_bootbank_scsi-megaraid2_2.00.4-9vmw.510.0.0.799733, VMware_bootbank_scsi-mpt2sas_10.00.00.00-5vmw.510.2.44.2191751, VMware_bootbank_scsi-mptsas_4.23.01.00-6vmw.510.2.44.2191751, VMware_bootbank_scsi-mptspi_4.23.01.00-6vmw.510.2.44.2191751, VMware_bootbank_scsi-qla2xxx_902.k1.1-9vmw.510.0.0.799733, VMware_bootbank_scsi-qla4xxx_5.01.03.2-4vmw.510.0.0.799733, VMware_bootbank_scsi-rste_2.0.2.0088-1vmw.510.2.23.1483097, VMware_bootbank_uhci-usb-uhci_1.0-3vmw.510.0.0.799733
   VIBs Removed: VMware_bootbank_ata-pata-amd_0.3.10-3vmw.500.0.0.469512, VMware_bootbank_ata-pata-atiixp_0.4.6-3vmw.500.0.0.469512, VMware_bootbank_ata-pata-cmd64x_0.2.5-3vmw.500.0.0.469512, VMware_bootbank_ata-pata-hpt3x2n_0.3.4-3vmw.500.0.0.469512, VMware_bootbank_ata-pata-pdc2027x_1.0-3vmw.500.0.0.469512, VMware_bootbank_ata-pata-serverworks_0.4.3-3vmw.500.0.0.469512, VMware_bootbank_ata-pata-sil680_0.4.8-3vmw.500.0.0.469512, VMware_bootbank_ata-pata-via_0.3.3-2vmw.500.0.0.469512, VMware_bootbank_block-cciss_3.6.14-10vmw.500.0.0.469512, VMware_bootbank_ehci-ehci-hcd_1.0-3vmw.500.1.11.623860, VMware_bootbank_esx-base_5.0.0-3.90.3982828, VMware_bootbank_esx-tboot_5.0.0-2.26.914586, VMware_bootbank_ima-qla4xxx_2.01.07-1vmw.500.0.0.469512, VMware_bootbank_ipmi-ipmi-devintf_39.1-4vmw.500.0.0.469512, VMware_bootbank_ipmi-ipmi-msghandler_39.1-4vmw.500.0.0.469512, VMware_bootbank_ipmi-ipmi-si-drv_39.1-4vmw.500.2.26.914586, VMware_bootbank_misc-cnic-register_1.1-1vmw.500.0.0.469512, VMware_bootbank_misc-drivers_5.0.0-3.68.2509828, VMware_bootbank_net-be2net_4.0.88.0-1vmw.500.0.7.515841, VMware_bootbank_net-bnx2_2.0.15g.v50.11-5vmw.500.0.0.469512, VMware_bootbank_net-bnx2x_1.61.15.v50.1-2vmw.500.2.38.1311177, VMware_bootbank_net-cnic_1.10.2j.v50.7-2vmw.500.0.0.469512, VMware_bootbank_net-e1000_8.0.3.1-2vmw.500.2.35.1254542, VMware_bootbank_net-e1000e_1.1.2-3vmw.500.3.45.1489271, VMware_bootbank_net-enic_1.4.2.15a-1vmw.500.0.0.469512, VMware_bootbank_net-forcedeth_0.61-2vmw.500.0.0.469512, VMware_bootbank_net-igb_2.1.11.1-3vmw.500.2.26.914586, VMware_bootbank_net-ixgbe_2.0.84.8.2-11vmw.500.2.26.914586, VMware_bootbank_net-nx-nic_4.0.557-3vmw.500.1.11.623860, VMware_bootbank_net-r8168_8.013.00-3vmw.500.0.0.469512, VMware_bootbank_net-r8169_6.011.00-2vmw.500.0.0.469512, VMware_bootbank_net-s2io_2.1.4.13427-3vmw.500.0.0.469512, VMware_bootbank_net-sky2_1.20-2vmw.500.0.0.469512, VMware_bootbank_net-tg3_3.123b.v50.1-1vmw.500.2.26.914586, VMware_bootbank_ohci-usb-ohci_1.0-3vmw.500.0.0.469512, VMware_bootbank_sata-ahci_3.0-6vmw.500.1.11.623860, VMware_bootbank_sata-ata-piix_2.12-4vmw.500.1.11.623860, VMware_bootbank_sata-sata-nv_3.5-3vmw.500.0.0.469512, VMware_bootbank_sata-sata-promise_2.12-3vmw.500.0.0.469512, VMware_bootbank_sata-sata-sil_2.3-3vmw.500.0.0.469512, VMware_bootbank_sata-sata-svw_2.3-3vmw.500.0.0.469512, VMware_bootbank_scsi-aacraid_1.1.5.1-9vmw.500.1.11.623860, VMware_bootbank_scsi-adp94xx_1.0.8.12-6vmw.500.0.0.469512, VMware_bootbank_scsi-aic79xx_3.1-5vmw.500.0.0.469512, VMware_bootbank_scsi-bnx2i_1.9.1d.v50.1-3vmw.500.0.0.469512, VMware_bootbank_scsi-fnic_1.5.0.3-1vmw.500.0.0.469512, VMware_bootbank_scsi-hpsa_5.0.0-17vmw.500.3.41.1311175, VMware_bootbank_scsi-ips_7.12.05-4vmw.500.0.0.469512, VMware_bootbank_scsi-lpfc820_8.2.2.1-18vmw.500.2.26.914586, VMware_bootbank_scsi-megaraid-mbox_2.20.5.1-6vmw.500.0.0.469512, VMware_bootbank_scsi-megaraid-sas_5.34-1vmw.500.3.63.2312428, VMware_bootbank_scsi-megaraid2_2.00.4-9vmw.500.0.0.469512, VMware_bootbank_scsi-mpt2sas_06.00.00.00-6vmw.500.3.63.2312428, VMware_bootbank_scsi-mptsas_4.23.01.00-5vmw.500.3.63.2312428, VMware_bootbank_scsi-mptspi_4.23.01.00-5vmw.500.3.63.2312428, VMware_bootbank_scsi-qla2xxx_901.k1.1-14vmw.500.0.0.469512, VMware_bootbank_scsi-qla4xxx_5.01.03.2-3vmw.500.0.0.469512, VMware_bootbank_scsi-rste_2.0.2.0088-1vmw.500.3.45.1489271, VMware_bootbank_uhci-usb-uhci_1.0-3vmw.500.0.0.469512
   VIBs Skipped: VMware_locker_tools-light_5.1.0-3.85.3872664

Comme on peut le voir, il est difficile d’avoir une vue claire permettant de savoir quel paquet va être mis à jour et en quelle version. J’ai à ces fins écris un petit script en PowerShell permettant d’améliorer la lisibilité de la sortie.

$in='VIBs Installed: VMware_bootbank_ata-pata-amd_0.3.10-3vmw.510.0.0.799733, VMware_bootbank_[...]
   VIBs Removed: VMware_bootbank_ata-pata-amd_0.3.10-3vmw.500.0.0.469512, VMware_bootbank_ata-pata-[...]
   VIBs Skipped: VMware_locker_tools-light_5.1.0-3.85.3872664'

$split = $in.Split(@("`r`n"), [System.StringSplitOptions]::RemoveEmptyEntries).ForEach({ $_.Trim() })
$newPackages = $split.Where({ $_.StartsWith("VIBs Installed") }).Substring(16).Split(@(", "), [System.StringSplitOptions]::RemoveEmptyEntries)
$oldPackages = $split.Where({ $_.StartsWith("VIBs Removed") }).Substring(14).Split(@(", "), [System.StringSplitOptions]::RemoveEmptyEntries)
$skippedPackages = $split.Where({ $_.StartsWith("VIBs Skipped") }).Substring(14).Split(@(", "), [System.StringSplitOptions]::RemoveEmptyEntries)

$keys = ($newPackages + $oldPackages + $skippedPackages).ForEach({ $_.Substring(0, $_.LastIndexOf('_'))})

$result = $keys.ForEach({
    $package = $_

    $newVersion = $newPackages.Where({ $_.StartsWith($package + '_') })
    $oldVersion = $oldPackages.Where({ $_.StartsWith($package + '_') })
    $skipVersion = $skippedPackages.Where({ $_.StartsWith($package + '_') })

    if (-not [String]::IsNullOrEmpty($newVersion)) {
        $newVersion = $newVersion.Substring($newVersion.LastIndexOf('_') + 1)
    } else {
        $newVersion = $null
    }

    if (-not [String]::IsNullOrEmpty($oldVersion)) {
        $oldVersion = $oldVersion.Substring($oldVersion.LastIndexOf('_') + 1)
    } else {
        $oldVersion = $null
    }

    if (-not [String]::IsNullOrEmpty($skipVersion)) {
        $skipVersion = $skipVersion.Substring($skipVersion.LastIndexOf('_') + 1)
    } else {
        $skipVersion = $null
    }

    $o = @{
        PackageName = $package
        NewVersion = $newVersion
        OldVersion = $oldVersion
        SkipVersion = $skipVersion
    }

    New-Object psobject -Property $o
})

$result | ft PackageName, OldVersion, NewVersion, SkipVersion

Il suffit de remplacer le contenu de $in  par ta sortie et $result  contiendra désormais la liste des packages impactés avec la version d’origine et la version de destination. Il est de même rapide de voir les paquets définitivement supprimés, les nouveaux et ceux qui ne seront pas impactés par la mise à jour.

$result | ft PackageName, OldVersion, NewVersion, SkipVersion

PackageName                                   OldVersion                          NewVersion                           SkipVersion       
-----------                                   ----------                          ----------                           -----------       
VMware_bootbank_ata-pata-amd                  0.3.10-3vmw.500.0.0.469512          0.3.10-3vmw.510.0.0.799733                             
VMware_bootbank_ata-pata-atiixp               0.4.6-3vmw.500.0.0.469512           0.4.6-4vmw.510.0.0.799733                              
VMware_bootbank_ata-pata-cmd64x               0.2.5-3vmw.500.0.0.469512           0.2.5-3vmw.510.0.0.799733                              
VMware_bootbank_ata-pata-hpt3x2n              0.3.4-3vmw.500.0.0.469512           0.3.4-3vmw.510.0.0.799733                              
VMware_bootbank_ata-pata-pdc2027x             1.0-3vmw.500.0.0.469512             1.0-3vmw.510.0.0.799733                                
VMware_bootbank_ata-pata-serverworks          0.4.3-3vmw.500.0.0.469512           0.4.3-3vmw.510.0.0.799733                              
VMware_bootbank_ata-pata-sil680               0.4.8-3vmw.500.0.0.469512           0.4.8-3vmw.510.0.0.799733                              
VMware_bootbank_ata-pata-via                  0.3.3-2vmw.500.0.0.469512           0.3.3-2vmw.510.0.0.799733                              
VMware_bootbank_block-cciss                   3.6.14-10vmw.500.0.0.469512         3.6.14-10vmw.510.0.0.799733                            
VMware_bootbank_ehci-ehci-hcd                 1.0-3vmw.500.1.11.623860            1.0-3vmw.510.0.0.799733                                
VMware_bootbank_esx-base                      5.0.0-3.90.3982828                  5.1.0-3.85.3872664                                     
VMware_bootbank_esx-dvfilter-generic-fastpath                                     5.1.0-0.0.799733                                       
VMware_bootbank_esx-tboot                     5.0.0-2.26.914586                   5.1.0-2.23.1483097                                     
VMware_bootbank_esx-xlibs                                                         5.1.0-1.22.1472666                                     
VMware_bootbank_esx-xserver                                                       5.1.0-1.22.1472666                                     
VMware_bootbank_ima-qla4xxx                   2.01.07-1vmw.500.0.0.469512         2.01.31-1vmw.510.0.0.799733                            
VMware_bootbank_ipmi-ipmi-devintf             39.1-4vmw.500.0.0.469512            39.1-4vmw.510.0.0.799733                               
VMware_bootbank_ipmi-ipmi-msghandler          39.1-4vmw.500.0.0.469512            39.1-4vmw.510.0.0.799733                               
VMware_bootbank_ipmi-ipmi-si-drv              39.1-4vmw.500.2.26.914586           39.1-4vmw.510.1.12.1065491                             
VMware_bootbank_misc-cnic-register            1.1-1vmw.500.0.0.469512             1.1-1vmw.510.0.0.799733                                
VMware_bootbank_misc-drivers                  5.0.0-3.68.2509828                  5.1.0-3.55.2583090                                     
VMware_bootbank_net-be2net                    4.0.88.0-1vmw.500.0.7.515841        4.1.255.11-1vmw.510.0.0.799733                         
VMware_bootbank_net-bnx2                      2.0.15g.v50.11-5vmw.500.0.0.469512  2.0.15g.v50.11-7vmw.510.1.12.1065491                   
VMware_bootbank_net-bnx2x                     1.61.15.v50.1-2vmw.500.2.38.1311177 1.61.15.v50.3-1vmw.510.0.11.1063671                    
VMware_bootbank_net-cnic                      1.10.2j.v50.7-2vmw.500.0.0.469512   1.10.2j.v50.7-3vmw.510.0.0.799733                      
VMware_bootbank_net-e1000                     8.0.3.1-2vmw.500.2.35.1254542       8.0.3.1-2vmw.510.1.16.1157734                          
VMware_bootbank_net-e1000e                    1.1.2-3vmw.500.3.45.1489271         1.1.2-3vmw.510.2.23.1483097                            
VMware_bootbank_net-enic                      1.4.2.15a-1vmw.500.0.0.469512       1.4.2.15a-1vmw.510.0.0.799733                          
VMware_bootbank_net-forcedeth                 0.61-2vmw.500.0.0.469512            0.61-2vmw.510.0.0.799733                               
VMware_bootbank_net-igb                       2.1.11.1-3vmw.500.2.26.914586       2.1.11.1-3vmw.510.1.12.1065491                         
VMware_bootbank_net-ixgbe                     2.0.84.8.2-11vmw.500.2.26.914586    3.7.13.6iov-10vmw.510.1.20.1312873                     
VMware_bootbank_net-nx-nic                    4.0.557-3vmw.500.1.11.623860        4.0.558-3vmw.510.0.0.799733                            
VMware_bootbank_net-r8168                     8.013.00-3vmw.500.0.0.469512        8.013.00-3vmw.510.0.0.799733                           
VMware_bootbank_net-r8169                     6.011.00-2vmw.500.0.0.469512        6.011.00-2vmw.510.0.0.799733                           
VMware_bootbank_net-s2io                      2.1.4.13427-3vmw.500.0.0.469512     2.1.4.13427-3vmw.510.0.0.799733                        
VMware_bootbank_net-sky2                      1.20-2vmw.500.0.0.469512            1.20-2vmw.510.0.0.799733                               
VMware_bootbank_net-tg3                       3.123b.v50.1-1vmw.500.2.26.914586   3.123b.v50.1-1vmw.510.2.23.1483097                     
VMware_bootbank_net-vmxnet3                                                       1.1.3.0-3vmw.510.3.55.2583090                          
VMware_bootbank_ohci-usb-ohci                 1.0-3vmw.500.0.0.469512             1.0-3vmw.510.0.0.799733                                
VMware_bootbank_sata-ahci                     3.0-6vmw.500.1.11.623860            3.0-15vmw.510.2.23.1483097                             
VMware_bootbank_sata-ata-piix                 2.12-4vmw.500.1.11.623860           2.12-7vmw.510.2.23.1483097                             
VMware_bootbank_sata-sata-nv                  3.5-3vmw.500.0.0.469512             3.5-4vmw.510.0.0.799733                                
VMware_bootbank_sata-sata-promise             2.12-3vmw.500.0.0.469512            2.12-3vmw.510.0.0.799733                               
VMware_bootbank_sata-sata-sil24                                                   1.1-1vmw.510.0.0.799733                                
VMware_bootbank_sata-sata-sil                 2.3-3vmw.500.0.0.469512             2.3-4vmw.510.0.0.799733                                
VMware_bootbank_sata-sata-svw                 2.3-3vmw.500.0.0.469512             2.3-3vmw.510.0.0.799733                                
VMware_bootbank_scsi-aacraid                  1.1.5.1-9vmw.500.1.11.623860        1.1.5.1-9vmw.510.0.0.799733                            
VMware_bootbank_scsi-adp94xx                  1.0.8.12-6vmw.500.0.0.469512        1.0.8.12-6vmw.510.0.0.799733                           
VMware_bootbank_scsi-aic79xx                  3.1-5vmw.500.0.0.469512             3.1-5vmw.510.0.0.799733                                
VMware_bootbank_scsi-bnx2i                    1.9.1d.v50.1-3vmw.500.0.0.469512    1.9.1d.v50.1-5vmw.510.0.0.799733                       
VMware_bootbank_scsi-fnic                     1.5.0.3-1vmw.500.0.0.469512         1.5.0.3-1vmw.510.0.0.799733                            
VMware_bootbank_scsi-hpsa                     5.0.0-17vmw.500.3.41.1311175        5.0.0-21vmw.510.1.16.1157734                           
VMware_bootbank_scsi-ips                      7.12.05-4vmw.500.0.0.469512         7.12.05-4vmw.510.0.0.799733                            
VMware_bootbank_scsi-lpfc820                  8.2.2.1-18vmw.500.2.26.914586       8.2.3.1-127vmw.510.0.0.799733                          
VMware_bootbank_scsi-megaraid-mbox            2.20.5.1-6vmw.500.0.0.469512        2.20.5.1-6vmw.510.0.0.799733                           
VMware_bootbank_scsi-megaraid-sas             5.34-1vmw.500.3.63.2312428          5.34-4vmw.510.3.50.2323236                             
VMware_bootbank_scsi-megaraid2                2.00.4-9vmw.500.0.0.469512          2.00.4-9vmw.510.0.0.799733                             
VMware_bootbank_scsi-mpt2sas                  06.00.00.00-6vmw.500.3.63.2312428   10.00.00.00-5vmw.510.2.44.2191751                      
VMware_bootbank_scsi-mptsas                   4.23.01.00-5vmw.500.3.63.2312428    4.23.01.00-6vmw.510.2.44.2191751                       
VMware_bootbank_scsi-mptspi                   4.23.01.00-5vmw.500.3.63.2312428    4.23.01.00-6vmw.510.2.44.2191751                       
VMware_bootbank_scsi-qla2xxx                  901.k1.1-14vmw.500.0.0.469512       902.k1.1-9vmw.510.0.0.799733                           
VMware_bootbank_scsi-qla4xxx                  5.01.03.2-3vmw.500.0.0.469512       5.01.03.2-4vmw.510.0.0.799733                          
VMware_bootbank_scsi-rste                     2.0.2.0088-1vmw.500.3.45.1489271    2.0.2.0088-1vmw.510.2.23.1483097                       
VMware_bootbank_uhci-usb-uhci                 1.0-3vmw.500.0.0.469512             1.0-3vmw.510.0.0.799733                                
VMware_bootbank_ata-pata-amd                  0.3.10-3vmw.500.0.0.469512          0.3.10-3vmw.510.0.0.799733                             
VMware_bootbank_ata-pata-atiixp               0.4.6-3vmw.500.0.0.469512           0.4.6-4vmw.510.0.0.799733                              
VMware_bootbank_ata-pata-cmd64x               0.2.5-3vmw.500.0.0.469512           0.2.5-3vmw.510.0.0.799733                              
VMware_bootbank_ata-pata-hpt3x2n              0.3.4-3vmw.500.0.0.469512           0.3.4-3vmw.510.0.0.799733                              
VMware_bootbank_ata-pata-pdc2027x             1.0-3vmw.500.0.0.469512             1.0-3vmw.510.0.0.799733                                
VMware_bootbank_ata-pata-serverworks          0.4.3-3vmw.500.0.0.469512           0.4.3-3vmw.510.0.0.799733                              
VMware_bootbank_ata-pata-sil680               0.4.8-3vmw.500.0.0.469512           0.4.8-3vmw.510.0.0.799733                              
VMware_bootbank_ata-pata-via                  0.3.3-2vmw.500.0.0.469512           0.3.3-2vmw.510.0.0.799733                              
VMware_bootbank_block-cciss                   3.6.14-10vmw.500.0.0.469512         3.6.14-10vmw.510.0.0.799733                            
VMware_bootbank_ehci-ehci-hcd                 1.0-3vmw.500.1.11.623860            1.0-3vmw.510.0.0.799733                                
VMware_bootbank_esx-base                      5.0.0-3.90.3982828                  5.1.0-3.85.3872664                                     
VMware_bootbank_esx-tboot                     5.0.0-2.26.914586                   5.1.0-2.23.1483097                                     
VMware_bootbank_ima-qla4xxx                   2.01.07-1vmw.500.0.0.469512         2.01.31-1vmw.510.0.0.799733                            
VMware_bootbank_ipmi-ipmi-devintf             39.1-4vmw.500.0.0.469512            39.1-4vmw.510.0.0.799733                               
VMware_bootbank_ipmi-ipmi-msghandler          39.1-4vmw.500.0.0.469512            39.1-4vmw.510.0.0.799733                               
VMware_bootbank_ipmi-ipmi-si-drv              39.1-4vmw.500.2.26.914586           39.1-4vmw.510.1.12.1065491                             
VMware_bootbank_misc-cnic-register            1.1-1vmw.500.0.0.469512             1.1-1vmw.510.0.0.799733                                
VMware_bootbank_misc-drivers                  5.0.0-3.68.2509828                  5.1.0-3.55.2583090                                     
VMware_bootbank_net-be2net                    4.0.88.0-1vmw.500.0.7.515841        4.1.255.11-1vmw.510.0.0.799733                         
VMware_bootbank_net-bnx2                      2.0.15g.v50.11-5vmw.500.0.0.469512  2.0.15g.v50.11-7vmw.510.1.12.1065491                   
VMware_bootbank_net-bnx2x                     1.61.15.v50.1-2vmw.500.2.38.1311177 1.61.15.v50.3-1vmw.510.0.11.1063671                    
VMware_bootbank_net-cnic                      1.10.2j.v50.7-2vmw.500.0.0.469512   1.10.2j.v50.7-3vmw.510.0.0.799733                      
VMware_bootbank_net-e1000                     8.0.3.1-2vmw.500.2.35.1254542       8.0.3.1-2vmw.510.1.16.1157734                          
VMware_bootbank_net-e1000e                    1.1.2-3vmw.500.3.45.1489271         1.1.2-3vmw.510.2.23.1483097                            
VMware_bootbank_net-enic                      1.4.2.15a-1vmw.500.0.0.469512       1.4.2.15a-1vmw.510.0.0.799733                          
VMware_bootbank_net-forcedeth                 0.61-2vmw.500.0.0.469512            0.61-2vmw.510.0.0.799733                               
VMware_bootbank_net-igb                       2.1.11.1-3vmw.500.2.26.914586       2.1.11.1-3vmw.510.1.12.1065491                         
VMware_bootbank_net-ixgbe                     2.0.84.8.2-11vmw.500.2.26.914586    3.7.13.6iov-10vmw.510.1.20.1312873                     
VMware_bootbank_net-nx-nic                    4.0.557-3vmw.500.1.11.623860        4.0.558-3vmw.510.0.0.799733                            
VMware_bootbank_net-r8168                     8.013.00-3vmw.500.0.0.469512        8.013.00-3vmw.510.0.0.799733                           
VMware_bootbank_net-r8169                     6.011.00-2vmw.500.0.0.469512        6.011.00-2vmw.510.0.0.799733                           
VMware_bootbank_net-s2io                      2.1.4.13427-3vmw.500.0.0.469512     2.1.4.13427-3vmw.510.0.0.799733                        
VMware_bootbank_net-sky2                      1.20-2vmw.500.0.0.469512            1.20-2vmw.510.0.0.799733                               
VMware_bootbank_net-tg3                       3.123b.v50.1-1vmw.500.2.26.914586   3.123b.v50.1-1vmw.510.2.23.1483097                     
VMware_bootbank_ohci-usb-ohci                 1.0-3vmw.500.0.0.469512             1.0-3vmw.510.0.0.799733                                
VMware_bootbank_sata-ahci                     3.0-6vmw.500.1.11.623860            3.0-15vmw.510.2.23.1483097                             
VMware_bootbank_sata-ata-piix                 2.12-4vmw.500.1.11.623860           2.12-7vmw.510.2.23.1483097                             
VMware_bootbank_sata-sata-nv                  3.5-3vmw.500.0.0.469512             3.5-4vmw.510.0.0.799733                                
VMware_bootbank_sata-sata-promise             2.12-3vmw.500.0.0.469512            2.12-3vmw.510.0.0.799733                               
VMware_bootbank_sata-sata-sil                 2.3-3vmw.500.0.0.469512             2.3-4vmw.510.0.0.799733                                
VMware_bootbank_sata-sata-svw                 2.3-3vmw.500.0.0.469512             2.3-3vmw.510.0.0.799733                                
VMware_bootbank_scsi-aacraid                  1.1.5.1-9vmw.500.1.11.623860        1.1.5.1-9vmw.510.0.0.799733                            
VMware_bootbank_scsi-adp94xx                  1.0.8.12-6vmw.500.0.0.469512        1.0.8.12-6vmw.510.0.0.799733                           
VMware_bootbank_scsi-aic79xx                  3.1-5vmw.500.0.0.469512             3.1-5vmw.510.0.0.799733                                
VMware_bootbank_scsi-bnx2i                    1.9.1d.v50.1-3vmw.500.0.0.469512    1.9.1d.v50.1-5vmw.510.0.0.799733                       
VMware_bootbank_scsi-fnic                     1.5.0.3-1vmw.500.0.0.469512         1.5.0.3-1vmw.510.0.0.799733                            
VMware_bootbank_scsi-hpsa                     5.0.0-17vmw.500.3.41.1311175        5.0.0-21vmw.510.1.16.1157734                           
VMware_bootbank_scsi-ips                      7.12.05-4vmw.500.0.0.469512         7.12.05-4vmw.510.0.0.799733                            
VMware_bootbank_scsi-lpfc820                  8.2.2.1-18vmw.500.2.26.914586       8.2.3.1-127vmw.510.0.0.799733                          
VMware_bootbank_scsi-megaraid-mbox            2.20.5.1-6vmw.500.0.0.469512        2.20.5.1-6vmw.510.0.0.799733                           
VMware_bootbank_scsi-megaraid-sas             5.34-1vmw.500.3.63.2312428          5.34-4vmw.510.3.50.2323236                             
VMware_bootbank_scsi-megaraid2                2.00.4-9vmw.500.0.0.469512          2.00.4-9vmw.510.0.0.799733                             
VMware_bootbank_scsi-mpt2sas                  06.00.00.00-6vmw.500.3.63.2312428   10.00.00.00-5vmw.510.2.44.2191751                      
VMware_bootbank_scsi-mptsas                   4.23.01.00-5vmw.500.3.63.2312428    4.23.01.00-6vmw.510.2.44.2191751                       
VMware_bootbank_scsi-mptspi                   4.23.01.00-5vmw.500.3.63.2312428    4.23.01.00-6vmw.510.2.44.2191751                       
VMware_bootbank_scsi-qla2xxx                  901.k1.1-14vmw.500.0.0.469512       902.k1.1-9vmw.510.0.0.799733                           
VMware_bootbank_scsi-qla4xxx                  5.01.03.2-3vmw.500.0.0.469512       5.01.03.2-4vmw.510.0.0.799733                          
VMware_bootbank_scsi-rste                     2.0.2.0088-1vmw.500.3.45.1489271    2.0.2.0088-1vmw.510.2.23.1483097                       
VMware_bootbank_uhci-usb-uhci                 1.0-3vmw.500.0.0.469512             1.0-3vmw.510.0.0.799733                                
VMware_locker_tools-light                                                                                              5.1.0-3.85.3872664

Enjoy.

 

Pilote RAID LSI1064E pour ESXi (serveur SYS)

OVH a proposé pendant un moment des serveurs pas cher avec une carte RAID pas chère sous la marque SYS (SoYouStart).

La carte RAID n’est pas ce qu’il y a de plus ouf par rapport à un RAID software mais c’est un pré-requis à l’utilisation de VMware ESXi avec du RAID (non, une vm avec du raid software ne me semble vraiment pas une bonne idée).

Malheureusement, et j’ai été vraiment déçu que cela ne soit indiqué nulle part, le monitoring matériel dans le vSphere Client n’indiquait absolument rien quand à l’état du RAID. En fait, il ne semble tout simplement exister aucun pilote permettant à VMware d’avoir une vue sur le RAID, que ça soit de la part de VMware, LSI (aujourd’hui Avagotech) ou OVH. Pas cool.

Quelques posts de forums semblaient toutefois laisser entendre qu’il était possible d’utiliser un pilote dédiée à une autre carte RAID. C’est ce que je viens de tester, et ça marche !

Sur le site du constructeur, j’ai récupéré le VMWare SMIS Provider VIB – 5.5 (une copie est disponible à la fin du billet au cas où le lien saute). C’est un zip contenant un vib à charger sur l’esxi (en manuel via ssh ou update manager)

Si le chargement a été fait en ssh, on installera le vib de la manière suivante (l’argument –no-sig-check  est important pour que l’os accepte le package à l’installation) :

esxcli software vib install -v /tmp/vmware-esx-provider-lsiprovider.vib  --no-sig-check

On redémarre comme demandé, et si c’est compatible, on verra ça:

Sondes matérielles indiquant l'état du RAID
Sondes matérielles indiquant l’état du RAID

Ça marche ! Enjoy 😉

Autres ressources

Compiler les modules vmware sous linux

Afin d’améliorer le fonctionnement et les performances des machines virtuelles, VMware fournit les VMware tools.
Ces  »tools » se décomposent en :

  • une application graphique (wait whaaat ? did you say UI ??)
  • des kernel modules pré-compilés, ainsi que les sources pour les autres noyaux.

J’aurais pu me contenter de fournir les patches, lesquels auraient été suffisant pour compiler les modules, mais en plus d’avoir des codes sources obsolètes, l’installeur s’est mis à dysfonctionner. Impossible donc de compter sur lui pour faire le boulot.

En décortiquant l’installeur, je suis arrivé à un binaire, qui est responsable de la localisation des linux headers sur ma machine, c’est lui qui pour une raison qui m’échappe, ne trouve plus les linux-headers, mais de par sa forme binaire, c’est une voie sans issue (je ne suis pas expert en reverse engineering, et encore moins sous Linux)…

Aucune importance : j’ai trouvé mieux. En décompressant les sources qui se trouvent dans ~/lib/modules/sources , il m’a suffit de lancer un make  et la magie s’est opérée : j’avais mes modules (enfin… après quelques petites modifications) !!

Ce script fonctionne précisément pour les kernels de la branche 3.8 patchés avec grsec. En enlevant les appels à pax_open_kernel  et pax_close_kernel  ou en mettant la bonne pré-condition, on pourrait le rendre compatible avec n’importe quel kernel  de la branche 3.8 je pense.

J’aurais pu fournir les fichiers patch à part, mais j’ai préféré ne garder qu’un seul fichier, afin de conserver une certaine simplicité de gestion pour la maintenance du script.

# sources:
# https://bugs.gentoo.org/attachment.cgi?id=289757&action=edit
# http://pastebin.com/dVPszctW
# https://bugs.gentoo.org/show_bug.cgi?id=461872
mount /mnt/cdrom
tar -xvzf /mnt/cdrom/vmware-tools-distrib.tar.gz /root/
cd /root/vmware-tools-distrib/lib/modules/source

echo compiling vmmemctl...
tar -xvf vmmemctl.tar
cd vmmemctl-only
make
cd ..

echo compiling vmsync
tar -xvf vmsync.tar
cd vmsync-only
echo '
--- driver/sync.c 2013-04-16 21:52:23.277342798 +0200
+++ driver/sync.c 2013-04-16 21:53:43.094056640 +0200
@@ -162,7 +162,7 @@
cancel_delayed_work(&state->thawTask);
list_for_each_safe(cur, tmp, &state->devices) {
dev = list_entry(cur, VmSyncBlockDevice, list);
- if (dev->sb != NULL && dev->sb->s_frozen != SB_UNFROZEN) {
+ if (dev->sb != NULL && dev->sb->s_writers.frozen != SB_UNFROZEN) {
thaw_bdev(dev->bdev, dev->sb);
atomic_dec(&gFreezeCount);
}
@@ -237,7 +237,7 @@
* the superblock is already frozen.
*/
if (inode->i_sb->s_bdev == NULL ||
- inode->i_sb->s_frozen != SB_UNFROZEN) {
+ inode->i_sb->s_writers.frozen != SB_UNFROZEN) {
result = (inode->i_sb->s_bdev == NULL) ? -EINVAL : -EALREADY;
compat_path_release(&nd);
goto exit;
' | patch sync.c
make
cd ..

echo compiling vmci
tar -xvf vmci.tar
cd vmci-only
echo '
--- linux/driver.c 2013-04-17 20:19:38.778514246 +0200
+++ linux/driver.c 2013-04-17 20:43:31.109809776 +0200
@@ -124,7 +124,7 @@
.name = "vmci",
.id_table = vmci_ids,
.probe = vmci_probe_device,
- .remove = __devexit_p(vmci_remove_device),
+ .remove = vmci_remove_device,
};

#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 19)
@@ -252,7 +252,21 @@
#define LinuxDriverUnlockIoctlPerFD(mutex) do {} while (0)
#endif

-static struct file_operations vmuser_fops;
+/* Initialize the file_operations structure */
+static struct file_operations vmuser_fops = {
+ .owner = THIS_MODULE,
+ .poll = LinuxDriverPoll,
+#ifdef HAVE_UNLOCKED_IOCTL
+ .unlocked_ioctl = LinuxDriver_UnlockedIoctl,
+#else
+ .ioctl = LinuxDriver_Ioctl,
+#endif
+#ifdef HAVE_COMPAT_IOCTL
+ .compat_ioctl = LinuxDriver_UnlockedIoctl,
+#endif
+ .open = LinuxDriver_Open,
+ .release = LinuxDriver_Close
+};


/*
@@ -389,26 +403,6 @@
return -ENOMEM;
}

- /*
- * Initialize the file_operations structure. Because this code is always
- * compiled as a module, this is fine to do it here and not in a static
- * initializer.
- */
-
- memset(&vmuser_fops, 0, sizeof vmuser_fops);
- vmuser_fops.owner = THIS_MODULE;
- vmuser_fops.poll = LinuxDriverPoll;
-#ifdef HAVE_UNLOCKED_IOCTL
- vmuser_fops.unlocked_ioctl = LinuxDriver_UnlockedIoctl;
-#else
- vmuser_fops.ioctl = LinuxDriver_Ioctl;
-#endif
-#ifdef HAVE_COMPAT_IOCTL
- vmuser_fops.compat_ioctl = LinuxDriver_UnlockedIoctl;
-#endif
- vmuser_fops.open = LinuxDriver_Open;
- vmuser_fops.release = LinuxDriver_Close;
-
sprintf(linuxState.deviceName, "vmci");
linuxState.major = 10;
linuxState.misc.minor = MISC_DYNAMIC_MINOR;
@@ -1750,7 +1744,7 @@
*-----------------------------------------------------------------------------
*/

-static int __devinit
+static int
vmci_probe_device(struct pci_dev *pdev, // IN: vmci PCI device
const struct pci_device_id *id) // IN: matching device ID
{
@@ -1978,7 +1972,7 @@
*-----------------------------------------------------------------------------
*/

-static void __devexit
+static void
vmci_remove_device(struct pci_dev* pdev)
{
struct vmci_device *dev = pci_get_drvdata(pdev);
' | patch linux/driver.c
make
cd ..

echo compiling vsock
tar -xvf vsock.tar
cd vsock-only
cat ../vmci-only/Module.symvers >> Module.symvers
cp linux/af_vsock.c linux/af_vsock.c.bak
echo '
--- linux/af_vsock.c 2013-04-17 20:25:44.093536289 +0200
+++ linux/af_vsock.c 2013-04-17 20:27:51.518312015 +0200
@@ -3160,11 +3160,15 @@
* else in the future.
*/
for (i = NPROTO - 1; i >= 0; i--) {
- vsockVmciFamilyOps.family = i;
+ pax_open_kernel();
+ *(int *)&vsockVmciFamilyOps.family = i;
+ pax_close_kernel();
err = sock_register(&vsockVmciFamilyOps);
if (err) {
Warning("Could not register address family %d.\n", i);
- vsockVmciFamilyOps.family = VSOCK_INVALID_FAMILY;
+ pax_open_kernel();
+ *(int *)&vsockVmciFamilyOps.family = VSOCK_INVALID_FAMILY;
+ pax_close_kernel();
} else {
vsockVmciDgramOps.family = i;
vsockVmciStreamOps.family = i;
@@ -3202,7 +3206,9 @@
sock_unregister(vsockVmciFamilyOps.family);
}

- vsockVmciDgramOps.family = vsockVmciFamilyOps.family = VSOCK_INVALID_FAMILY;
+ pax_open_kernel();
+ vsockVmciDgramOps.family = *(int*)&vsockVmciFamilyOps.family = VSOCK_INVALID_FAMILY;
+ pax_close_kernel();
vsockVmciStreamOps.family = vsockVmciFamilyOps.family;
}' | patch -l linux/af_sock.c
make
cd ..

if [ -f pvscsi.tar ]
tar -xvf pvscsi.tar
cd pvscsi-only
echo '
--- pvscsi.c 2013-05-14 23:24:04.801773269 +0200
+++ pvscsi.c 2013-05-14 23:25:34.701065554 +0200
@@ -455,7 +455,7 @@
SCSI_SENSE_BUFFERSIZE, PCI_DMA_FROMDEVICE);
}

-static int __devinit pvscsi_allocate_rings(struct pvscsi_adapter *adapter)
+static int pvscsi_allocate_rings(struct pvscsi_adapter *adapter)
{
adapter->rings_state = pci_alloc_consistent(adapter->dev, PAGE_SIZE,
&adapter->ringStatePA);
@@ -1234,7 +1234,7 @@
* just use a statically allocated scatter list.
*
*/
-static int __devinit pvscsi_allocate_sg(struct pvscsi_adapter *adapter)
+static int pvscsi_allocate_sg(struct pvscsi_adapter *adapter)
{
struct pvscsi_ctx *ctx;
int i;
@@ -1317,7 +1317,7 @@
return numPhys;
}

-static int __devinit pvscsi_probe(struct pci_dev *pdev,
+static int pvscsi_probe(struct pci_dev *pdev,
const struct pci_device_id *id)
{
struct pvscsi_adapter *adapter;
@@ -1535,7 +1535,7 @@
.name = "pvscsi",
.id_table = pvscsi_pci_tbl,
.probe = pvscsi_probe,
- .remove = __devexit_p(pvscsi_remove),
+ .remove = pvscsi_remove,
COMPAT_PCI_SHUTDOWN(pvscsi_shutdown)
};' | patch pvscsi.c
make
cd ..
fi

echo installing
LIBDIR=/lib/modules/`uname -r`/misc
[ -d "$LIBDIR" ] || mkdir "$LIBDIR"
cp vmmemctl.o "$LIBDIR/vmmemctl.ko"
cp vmsync.o "$LIBDIR/vmsync.ko"
cp vmci.o "$LIBDIR/vmci.ko"
cp vsock.o "$LIBDIR/vsock.ko"
[ -f pvscsi.o ] && cp pvscsi.o "$LIBDIR/pvscsi.o"

// clean up
rm -R vmci-only vmsync-only vsock-only vmmemctl-only
[ -d pvscsi-only ] && rm -R pvscsi-only

// finished !
# refresh modules.dep.bin for modprobe
depmod

echo "You just have to add this line on /etc/conf.d/modules to auto-load the vmware modules"
echo "module_$(uname -r | sed -e 's/[-.]/_/g')=\"vmmemctl vmsync vmci vsock pvscsi\""

Le petit plus du script : il évite d’installer les VMware tools. Sans interface graphique, ils ne servent à rien, et sous Gentoo, ça pollue la sortie de revdep-rebuild .

Ce script ne compile pas les modules vmxnet  ni vmxnet3 , le premier parce qu’il est déprécié et parce que je ne l’utilise pas, le second parce qu’il est déjà intégré au noyau linux.
Dans des versions ultérieures de linux, il se pourrait que je n’ai même plus à gérer la compilation de vmci  et vsock  : en effet ces derniers pourraient faire une entrée dans le noyau linux.

Notes

J’ai finis de rédiger le script hier soir en compilant mes commandes balancées dans le terminal. Je n’ai jamais testé le script, donc à vos risques et périls !
En revanche, je peux prendre en compte vos remarques.

Impact de la virtualisation sur les performances brutes

Sur les serveurs dédiés sous ma responsabilité, il m’arrive d’y installer un client BOINC. C’est un logiciel qui rapatrie, pour divers projets scientifiques, du travail à effectuer par la machine, laquelle fait alors partie d’une grille de calcul. Bien entendu, BOINC ne travaille que lorsque le serveur ne fait rien, ou plutôt utilise les cœurs non utilisés des CPUs des serveurs. Il n’est pas question que les services en production souffrent de la présence de BOINC. Sous ces conditions, pourquoi pas, ça permet d’utiliser les ressources non utilisées pour une bonne cause, on évite le gâchis.
Ce programme m’a permis de comparer la puissance de calcul brute de plusieurs configuration, sachant que tous les clients BOINC sont configurés pour travailler sur le même projet. En particulier, il y avait deux machines identiques en RAM (non saturées) et en CPU, un Core i5.

L’une de ces machines était sous VMware ESXi avec une seule VM sous Windows Server 2003, l’autre était directement sous Windows Server 2008 R2.
La configuration CPU/RAM identique m’a permis de comparer quantitativement la perte de performance induite par la couche ESXi simplement en regardant le score de BOINC par client.
J’avais entendu parler au cours d’une conférence d’évangélisation que la perte induite par des outils de virtualisation comme VMware Workstation ou Hyper-V R1 était de 15%, tandis que celle de ESXi était seulement de 5%, grâce à son noyau super léger, mais qu’en est-il réellement ?
Pour ce qui est de Workstation, j’en ai aucune idée, je m’en sers que pour le développement donc pas en continue. En revanche on voit une différence de… 15% de entre l’utilisation ou non de VMware ESXi. Wow ! ce n’est pas rien !

On m’aurait menti ? J’ai attendu plusieurs jours pour que le score quotidien des clients BOINC se stabilise et on note toujours cette nette différence de 15%, quelque soit le travail effectué (mais toujours sur le même projet). Il est à noter également que concernant ces deux serveurs, ils ne faisaient quasiment que de l’idle, donc normalement pas perturbés par d’autres processus. C’est un test approximatif et il vaut ce qu’il vaut, mais a l’avantage de donner une assez bonne précision de ce qu’on perd en CPU brut avec cette couche de virtualisation.

Pour autant, la virtualisation n’est pas à jeter, ça dépend de l’utilisation de la machine. Pour mon cas où le CPU est loin d’être le goulet d’étranglement sur ces machines, surtout un Core i5, cette perte est significative, mais acceptable.