Bazen bir sanal makinenin .vmx yapılandırma dosyasında (ör. CPU özellikleri, gelişmiş parametreler, aygıt bayrakları vb.) el ile yaptığınız değişiklikler vCenter/host tarafından hemen algılanmaz. “Remove from Inventory” ile VM’i çıkarıp tekrar eklemek çözüm olabilir ancak bu yöntem yeni bir Inventory ID (Vmid) üretir ve VM’in aynı kaynak havuzunda/kurallarda kalmasını engelleyebilir. Bunun yerine .vmx dosyasını komut satırından yeniden yükleyerek (reload) mevcut Vmid korunur.
Not: .vmx dosyasına yapılan yapılandırma değişiklikleri için VM kapalı (Powered Off) olmalıdır.
Özet Yol Haritası
- VM’i kapat →
- Doğru ESXi host’a SSH ile bağlan →
- VM’in Vmid’ini bul →
vim-cmd vmsvc/reload <Vmid>
→- Değişiklikleri doğrula .
Bu işlemlere başlamadan önce;
- VM kapalı olmalı (Powered Off).
- VM’in kayıtlı olduğu ESXi host’a (vMotion/DRS ile taşınmadığından emin olarak) root ile SSH yapılmalı.
- Datastore’da .vmx değişikliğinizin kaydedildiğinden emin olun (gerekiyorsa yedek alın).
- Yol/isimlerde boşluk özel karakter varsa komutlarda tırnak kullanın.
Seçenek 1 – Tek Bir VM’in .vmx Dosyasını Reload Etme
ESXi host’a SSH ile bağlanın (VM’in kayıtlı olduğu host).
Vmid’i bulunuz.
vim-cmd vmsvc/getallvms | grep -i <vm-adı>
Örnek Çıktı:
Vmid Name File Guest OS Version
10 ExampleVM [datastore] ExampleVM/ExampleVM.vmx windows8Server64Guest vmx-08
Reload komutunu çalıştırın.
vim-cmd vmsvc/reload 10
Doğrulama:
- Yeniden
vim-cmd vmsvc/get.config 10
(veya vSphere Client) ile parametreleri kontrol edin. - Gerekirse
tail -f /var/log/hostd.log
ile reload’a ilişkin satırları izleyin.
İpucu: VM adı benzersiz değilse grep
yerine çıktıda File sütunundaki .vmx yolunu kontrol ederek doğru VM’i seçin.
Seçenek 2 – Host Üzerindeki “Geçersiz” VM Kayıtlarını Toplu Reload Etme (Script)
Bu yöntem host üzerindeki geçersiz (invalid) görünen VM kayıtlarını toplu yeniden yükler.
- ESXi host’a SSH ile bağlanın.
- Toplu reload komutu.
for a in $(vim-cmd vmsvc/getallvms 2>&1 | grep invalid | awk '{print $4}' | cut -d \' -f2); do
vim-cmd vmsvc/reload $a
done
Bu tek satır, geçersiz Vmid’leri yakalayıp hepsini tek tek reload eder.
Not: Konteyner ortamlarda veya paylaşımlı datastor’larda dikkatli kullanın; yalnızca ilgili hosttaki kayıtları etkiler.
Sık Karşılaşılan Durumlar & İpuçları
- VM powered-on ise reload çalışmaz / yansımayabilir:
Değişiklikler yalnızca kapalı VM için geçerlidir. Önce VM’i kapatın. - Vmid farklı hostta kayıtlıysa:
getallvms
çıktısında VM yoksa, VM başka bir ESXi host üzerinde kayıtlıdır (DRS/vMotion). Doğru host’a SSH yapın. - Yol/isim hataları (boşluk/özel karakter):
grep -i '^<tam-ad$>'
veya VMID ile çalışmak daha güvenlidir.
Gerekirse VMPathName (dosya yolu) üzerinden doğrulayın.
vim-cmd vmsvc/get.config <Vmid> | grep -i vmxpath
- Reload sonrası hâlâ görünmüyor:
hostd
/vpxa
kısa bir süre önbellek tutabilir.tail -n 100 /var/log/hostd.log
ile hataları kontrol edin.- Son çare: ESXi host’ta hostd servisini yeniden başlatmayı düşünün (bakım penceresi ve etki analizi yapmadan önerilmez).
- Cluster/DRS kısıtları:
Resource Pool/DRS kuralları korunur; reload Vmid’i değiştirmediği için VM aynı havuzda ve aynı envanter yapısında kalır (istenen davranış).
Değişiklik Öncesi ve Sonrası Kontrol Listesi
Öncesi
- VM kapalı mı?
- .vmx değişikliği kaydedildi mi (ve yedeği alındı mı)?
- Doğru hosta bağlandınız mı?
Reload
vim-cmd vmsvc/getallvms
ile Vmid bulundu mu?vim-cmd vmsvc/reload <Vmid>
başarı döndürdü mü?
Sonrası
- vSphere Client’da değişen parametreler görünüyor mu?
- Gerekirse
hostd.log
kontrol edildi mi? - VM açıldı ve beklenen davranışı sergiliyor mu?
Örnek Uçtan Uca Senaryo
ExampleVM
için CPU maskesi eklediniz ve .vmx’te kaydettiniz.- VM’i kapattınız.
- VM’in kayıtlı olduğu ESXi host’a SSH yaptınız.
vim-cmd vmsvc/getallvms | grep -i examplevm
→ Vmid=10.vim-cmd vmsvc/reload 10
komutunu çalıştırdınız.- vSphere Client’da VM Options → Advanced altında parametreyi görüyorsunuz.
- VM’i başlatıp doğrulama yaptınız.