Kurumsal ölçekte bir VMware vSphere ortamı yönetiyorsanız yalnızca sanal makinelerin sağlıklı çalışması yeterli değildir. Asıl kritik nokta altyapıyı taşıyan ESXi host’ların konfigürasyon tutarlılığıdır.
Çoğu yönetici sürüm (Version) ve build (Build) numaralarının aynı olmasını yeterli görse de gerçek tutarlılık bunun çok daha ötesindedir.
Cluster içerisindeki host’ların yüklü VIB (vSphere Installation Bundle) paketlerinin birebir aynı olması, özellikle NSX, iSCSI, Fibre Channel, yüksek performanslı NIC ve özel OEM sürücü kullanılan ortamlarda hayati önem taşır.
Bu makalemde:
- VIB nedir ve neden kritiktir?
- VIB farklılıkları hangi riskleri doğurur?
- PowerCLI ile VIB’ler nasıl karşılaştırılır?
- Validate-ESXiPackages fonksiyonu nasıl çalışır?
- Çıktılar nasıl analiz edilmelidir?
- Gerçek hayatta karşılaşılabilecek risk senaryoları nelerdir? tüm detaylarıyla ele alacağız.
VIB (vSphere Installation Bundle) Nedir?
VIB, ESXi üzerinde çalışan;
- Kernel modülleri
- Donanım sürücüleri (NIC, HBA, RAID vb.)
- Agent servisleri
- OEM bileşenleri
- NSX modülleri
- Storage eklentileri gibi bileşenleri içeren paket yapısıdır.
Bir ESXi host’un çalışmasını belirleyen temel yapı taşları VIB paketleridir.
Dolayısıyla iki host aynı sürümde olsa bile VIB seviyesinde farklılık varsa davranışları farklı olabilir.
VIB Farklılıkları Neden Risklidir?
Her VIB farklılığı kriz anlamına gelmez. Ancak bazı senaryolarda ciddi sonuçlar doğurabilir.
Düşük Riskli Senaryo
- Kullanılmayan bir sürücü paketi
- Aktif olmayan bir OEM modülü
- Referans host’ta olup diğerinde kullanılmayan bir agent
Bu tür farklılıklar genellikle operasyonel risk oluşturmaz.
Yüksek Riskli Senaryolar
NIC Driver Uyumsuzluğu
- Farklı driver versiyonları
- Farklı firmware uyumluluk seviyesi
- NSX ortamında VTEP performans düşüşü
- Paket kaybı
- Ağ gecikmesi
NSX-V veya NSX-T VIB Farklılığı
Örneğin çıktıda görülen;
VMware_bootbank_esx-nsxv_6.5.0-0.0.7563456
Eğer bu VIB bazı host’larda var, bazılarında yoksa:
- Distributed Firewall tutarsız çalışabilir
- VXLAN / Geneve encapsulation sorunları oluşabilir
- Host preparation eksik olabilir
- Mikro segmentasyon düzgün uygulanmayabilir
Storage Driver Uyumsuzluğu
- iSCSI driver farklılıkları
- HBA sürücü versiyon farkı
- Multipath hataları
- Storage latency artışı
Görüntülerde örnek olarak;
EMU_bootbank_ima-be2iscsi_11.2.1147.5-1OEM
versiyon farklılıkları dikkat çekmektedir.
PowerCLI ile VIB Karşılaştırma Mantığı
Karşılaştırmanın temelinde şu PowerShell cmdlet’i vardır;
Compare-Object
Bu komut iki veri kümesini karşılaştırır;
ReferenceObject → Referans host
DifferenceObject → Kontrol edilen host
VIB listesi şu komutla alınır;
Get-ESXCLI -VMHost <Host> -V2
Ve;
$esxcli2.software.vib.list.invoke()
ile VIB ID listesi elde edilir.
Validate-ESXiPackages Fonksiyonu
Bu fonksiyon:
- Bir cluster içindeki tüm ESXi host’ları
- Belirlenen bir referans host ile
- VIB ID bazında karşılaştırır
- Farklılıkları raporlar
Parametreler
- Cluster → Kontrol edilecek cluster
- RefernceHost → Referans alınacak ESXi host
Örnek Kullanım
Tek cluster
Validate-ESXiPackages -Cluster (Get-Cluster | Select-Object -First 1) `
-RefernceHost (Get-VMHost | Select-Object -First 1)
Birden fazla cluster
Get-Cluster | Validate-ESXiPackages -RefernceHost $(Get-VMHost "ESX01")
Çıktının Detaylı Analizi
Fonksiyon çıktısında şu alanlar bulunur:
| Alan | Açıklama |
|---|---|
| Host | ESXi host adı |
| Version | ESXi versiyonu |
| Build | Build numarası |
| VibDiffCount | Farklı VIB sayısı |
| VibDiff | Farklı VIB ID’leri |
| VibDiffSideIndicator | Farkın yönü |
Gerçek Örnek Analizi
Görüntülerde tüm host’lar;
Version: 6.5.0
Build: 7388607
Ancak:
- Bazılarında
VibDiffCount = 0 - Bazılarında
12,18,19gibi değerler
Bu ne anlama gelir?
Sürüm aynı ama paket yapısı farklı.
VibDiffSideIndicator Ne Anlatır?
Compare-Object şu sembolleri kullanır:
| Sembol | Anlamı |
|---|---|
| <= | Sadece referans host’ta var |
| => | Sadece kontrol edilen host’ta var |
Örnek:
=> VMware_bootbank_esx-nsxv_6.5.0-0.0.7563456
<= EMU_bootbank_ima-be2iscsi_11.2.1147.5-1OEM
Yorum:
- NSX-V VIB referans host’ta yok ama diğer host’ta var.
- iSCSI driver referans host’ta var ama diğer host’ta yok.
Bu cluster içinde ciddi konfigürasyon farklılığı anlamına gelir.
Büyük Ortamlarda Gerçek Hayat Senaryosu
100+ host bulunan bir ortam düşünelim.
Upgrade sonrası:
- Bazı host’lar OEM image ile kurulu
- Bazıları vanilla ESXi
- Bazılarında NSX düzgün prepare edilmiş
- Bazılarında eksik VIB kalmış
Bu durumda:
- HA davranışı farklılaşabilir
- VM migration sorun çıkarabilir
- DRS kararsız çalışabilir
- Ağ segmentleri düzgün izole olmayabilir
Manuel kontrol imkânsızdır.
Bu fonksiyon dakikalar içinde tüm cluster’ı doğrular.
NIC Driver ve Firmware Kontrolü
Makale ayrıca daha detaylı analiz için şu modülü öneriyor;
Get-NICDetails.psm1
function Get-NICDetails {
<#
.NOTES
===========================================================================
Created by: Markus Kraus
Twitter: @VMarkus_K
Private Blog: mycloudrevolution.com
===========================================================================
Changelog:
2017.02 ver 1.0 Base Release
===========================================================================
External Code Sources:
-
===========================================================================
Tested Against Environment:
vSphere Version: ESXi 6.0 U2, ESXi 6.5
PowerCLI Version: PowerCLI 6.3 R1, PowerCLI 6.5 R1
PowerShell Version: 4.0, 5.0
OS Version: Windows 8.1, Server 2008 R2, Server 2012 R2
Keyword: ESXi, NIC, vmnic, Driver, Firmware
===========================================================================
.DESCRIPTION
Reports Firmware and Driver Details for your ESXi vmnics.
.Example
Get-NICDetails -Clustername *
.PARAMETER Clustername
Name or Wildcard of your vSphere Cluster Name to process.
#Requires PS -Version 4.0
#Requires -Modules VMware.VimAutomation.Core, @{ModuleName="VMware.VimAutomation.Core";ModuleVersion="6.3.0.0"}
#>
[CmdletBinding()]
param(
[Parameter(Mandatory=$True, ValueFromPipeline=$False, Position=0)]
[ValidateNotNullorEmpty()]
[String] $Clustername
)
Begin {
$Validate = $True
if (($myCluster = Get-Cluster -Name $Clustername).count -lt 1) {
$Validate = $False
thow "No Cluster '$myCluster' found!"
}
}
Process {
$MyView = @()
if ($Validate -eq $True) {
foreach ($myVMhost in ($myCluster | Get-VMHost)) {
$esxcli2 = Get-ESXCLI -VMHost $myVMhost -V2
$niclist = $esxcli2.network.nic.list.invoke()
$nicdetails = @()
foreach ($nic in $niclist) {
$args = $esxcli2.network.nic.get.createargs()
$args.nicname = $nic.name
$nicdetail = $esxcli2.network.nic.get.Invoke($args)
$nicdetails += $nicdetail
}
ForEach ($nicdetail in $nicdetails){
$NICReport = [PSCustomObject] @{
Host = $myVMhost.Name
vmnic = $nicdetail.Name
LinkStatus = $nicdetail.LinkStatus
BusInfo = $nicdetail.driverinfo.BusInfo
Driver = $nicdetail.driverinfo.Driver
FirmwareVersion = $nicdetail.driverinfo.FirmwareVersion
DriverVersion = $nicdetail.driverinfo.Version
}
$MyView += $NICReport
}
}
$MyView
}
}
}
Bu script ile:
- NIC driver versiyonu
- Firmware versiyonu
- PCI bilgileri
- Uyumluluk durumu
detaylı analiz edilebilir.
Özellikle yüksek throughput ortamlarında driver/firmware uyumsuzluğu performansı dramatik etkileyebilir.
Fonksiyonun Teknik Çalışma Mantığı
Özet akış:
- Referans host’tan VIB listesi alınır.
- Cluster içindeki tüm host’lar dolaşılır.
- Her host için VIB listesi alınır.
- Compare-Object ile ID bazlı karşılaştırma yapılır.
- Fark sayısı hesaplanır.
- SideIndicator oluşturulur.
- PSCustomObject ile rapor üretilir.
Kritik satır:
$VibDiff = Compare-Object -ReferenceObject $RefernceVibList.ID `
-DifferenceObject $VibList.ID
Operasyonel En İyi Uygulamalar
✔ Referans host olarak en güncel ve doğru yapılandırılmış host’u seçin
✔ Upgrade sonrası mutlaka cluster bazlı VIB doğrulaması yapın
✔ NSX ortamlarında driver eşitliğini zorunlu kontrol edin
✔ OEM image kullanıyorsanız tüm host’larda aynı image’ı kullanın
✔ Firmware ve driver kombinasyonlarını vendor matrix ile doğrulayın
vSphere ortamlarında gerçek tutarlılık:
- Aynı sürüm
- Aynı build
- Aynı VIB paketleri
- Aynı driver versiyonları
- Aynı NSX bileşenleri
anlamına gelir.
Validate-ESXiPackages fonksiyonu, cluster içindeki ESXi host’ların paket seviyesinde doğrulanmasını sağlayarak:
✔ Konfigürasyon risklerini azaltır
✔ Operasyonel kararlılığı artırır
✔ NSX ve storage hatalarını önler
✔ Upgrade sonrası kontrol mekanizması sunar
✔ Audit süreçlerini kolaylaştırır
Özellikle büyük ve kritik ortamlarda düzenli olarak bu kontrolün yapılması önerilir.
Validate-ESXiPackages Scirpt;
function Validate-ESXiPackages {
<#
.DESCRIPTION
Compares all ESXi Host VIBs within a vSphere with a reference Hosts.
.NOTES
File Name : Validate-ESXiPackages.ps1
Author : Markus Kraus
Version : 1.0
State : Ready
Tested Against Environment:
vSphere Version: 6.0 U2, 6.5 U1
PowerCLI Version: PowerCLI 10.0.0 build 7895300
PowerShell Version: 4.0
OS Version: Windows Server 2012 R2
.LINK
https://mycloudrevolution.com/
.EXAMPLE
Validate-ESXiPackages -Cluster (Get-Cluster) -RefernceHost (Get-VMHost | Select-Object -First 1)
.PARAMETER Cluster
vSphere Cluster to verify
.PARAMETER RefernceHost
The VIB Reference ESXi Host
#>
[CmdletBinding()]
param(
[Parameter(Mandatory=$True, ValueFromPipeline=$True, HelpMessage="vSphere Cluster to verify")]
[ValidateNotNullorEmpty()]
[VMware.VimAutomation.ViCore.Impl.V1.Inventory.ComputeResourceImpl] $Cluster,
[Parameter(Mandatory=$True, ValueFromPipeline=$false, HelpMessage="The VIB Reference ESXi Host")]
[ValidateNotNullorEmpty()]
[VMware.VimAutomation.ViCore.Impl.V1.Inventory.InventoryItemImpl] $RefernceHost
)
Process {
#region: Get reference VIBs
$EsxCli2 = Get-ESXCLI -VMHost $RefernceHost -V2
$RefernceVibList = $esxcli2.software.vib.list.invoke()
#endregion
#region: Compare reference VIBs
$MyView = @()
foreach ($VmHost in ($Cluster | Get-VMHost)) {
$EsxCli2 = Get-ESXCLI -VMHost $VmHost -V2
$VibList = $esxcli2.software.vib.list.invoke()
[Array]$VibDiff = Compare-Object -ReferenceObject $RefernceVibList.ID -DifferenceObject $VibList.ID
if($VibDiff.Count -gt 0) {
$VibDiffSideIndicator = @()
foreach ($Item in $VibDiff) {
$VibDiffSideIndicator += $($Item.SideIndicator + " " + $Item.InputObject)
}
}
else {
$VibDiffSideIndicator = $null
}
$Report = [PSCustomObject] @{
Host = $VmHost.Name
Version = $VmHost.Version
Build = $VmHost.Build
VibDiffCount = $VibDiff.Count
VibDiff = $VibDiff.InputObject
VibDiffSideIndicator = $VibDiffSideIndicator
}
$MyView += $Report
}
#region: Compare reference VIBs
$MyView
}
}
![[TR] VMware ESXi Host’larda Yüklü VIB Paketlerinin Karşılaştırılması](https://kadirkozan.com/wp-content/uploads/2026/02/VMware-logo-featured-1.jpg)
![[TR] Windows Server 2025 Evaluation Sürümünü Full (Lisanslı) Sürüme Yükseltmek](https://kadirkozan.com/wp-content/uploads/2026/03/windows-server-2025-150x150.jpeg)