1. Anasayfa
  2. VMware vCenter

vCenter Server Envanterden Kaldırmadan .vmx Dosyasını Yeniden Yükleme (Reload)


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ı

  1. VM’i kapat →
  2. Doğru ESXi host’a SSH ile bağlan →
  3. VM’in Vmid’ini bul →
  4. vim-cmd vmsvc/reload <Vmid>
  5. 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.

      1. ESXi host’a SSH ile bağlanın.
      2. 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

        1. ExampleVM için CPU maskesi eklediniz ve .vmx’te kaydettiniz.
        2. VM’i kapattınız.
        3. VM’in kayıtlı olduğu ESXi host’a SSH yaptınız.
        4. vim-cmd vmsvc/getallvms | grep -i examplevmVmid=10.
        5. vim-cmd vmsvc/reload 10 komutunu çalıştırdınız.
        6. vSphere Client’da VM Options → Advanced altında parametreyi görüyorsunuz.
        7. VM’i başlatıp doğrulama yaptınız.
        İlginizi Çekebilir