1. Anasayfa
  2. VMware ESXi

VM Compute vMotion Hatası: “The virtual machine has CPU and/or memory affinities configured” Sorunun Giderilmesi


vSphere ortamında bir sanal makineyi (VM) farklı bir ESXi host üzerine vMotion ile taşımak istediğinizde uyumluluk kontrolü aşamasında şu hata ile karşılaşabilirsiniz:

The virtual machine has CPU and/or memory affinities configured, which is preventing vMotion.

Bu hata sanal makinenin belirli donanım kaynaklarına (CPU çekirdekleri veya bellek alanı) sabitlenmiş şekilde yapılandırıldığını gösterir. Böyle bir durumda VM yalnızca önceden tanımlanmış çekirdek veya bellek üzerinde çalıştırılabilir. Ancak vMotion sırasında hedef host üzerinde aynı koşulların sağlanması mümkün olmayacağından taşıma işlemi başarısız olur.

Bu hatanın başlıca nedeni VM’in yapılandırma dosyasında veya gelişmiş ayarlarında CPU affinity ya da memory affinity tanımlanmış olmasıdır.

CPU Affinity Nedir?

CPU affinity bir VM’in yalnızca belirli fiziksel CPU çekirdeklerinde çalışmasını sağlayan bir kısıtlamadır.

Örneğin, .vmx dosyasında şu satır varsa:

sched.cpu.affinity = "0,1,2,3,4,5,6,7,8,9,10,11"

Bu durumda VM sadece belirtilen 0–11 numaralı CPU çekirdekleri üzerinde çalıştırılabilir.

  • vMotion sırasında hedef host’un aynı çekirdek haritasına sahip olması beklenir. Bu da neredeyse hiçbir zaman mümkün değildir.
  • vMotion uyumluluk kontrolü başarısız olur.
  • DRS (Distributed Resource Scheduler) ve HA (High Availability) gibi esnek kaynak yönetim mekanizmaları devre dışı kalır.

Kısacası affinity ayarları VM’nin taşınabilirliğini ciddi ölçüde kısıtlar.

Çözüm Adımları

VM’i Kapatın

Affinity ayarlarını değiştirebilmek için sanal makine kapalı olmalıdır. Çalışır durumda iken değişiklik yapılamaz.

Affinity Ayarlarını Kaldırma

Yöntem 1: vSphere Client Arayüzünden

  1. vSphere Client’a yönetici olarak giriş yapın.
  2. İlgili sanal makineyi seçin ve Edit Settings menüsünü açın.
  3. VM Options > Advanced > Configuration Parameters bölümüne gidin.
  4. Burada sched.cpu.affinity veya benzer bir parametre bulunuyorsa silin.
  5. Değişiklikleri kaydedin.

Yöntem 2: VMX Dosyasını Düzenleyerek

  1. ESXi host’a SSH ile bağlanın.
  2. VM’in bulunduğu datastore’a gidin: cd /vmfs/volumes/<DATASTORE_NAME>/<VM_NAME>
  3. VMX dosyasının yedeğini alın: cp VM_name.vmx VM_name.vmx.bkp
  4. Dosyayı vi editörü ile açın: vi VM_name.vmx
  5. İçerisinde sched.cpu.affinity geçen satırları silin veya başına # ekleyerek yorum satırı haline getirin.
  6. Dosyayı kaydedin ve çıkın.

Referans: https://knowledge.broadcom.com/external/article/345284/editing-files-on-an-esxi-host-using-vi.html

VM’i Açın ve vMotion’ı Tekrar Deneyin

Affinity parametreleri kaldırıldıktan sonra sanal makineyi yeniden başlatın. Bu kez vMotion uyumluluk kontrolü başarılı olacak ve taşıma işlemi sorunsuz tamamlanacaktır.

  • Affinity neden kullanılır?
    Genellikle özel lisanslama ihtiyaçları, gerçek zamanlı uygulamalar ya da performans testleri için tercih edilir. Ancak bu ayarlar, esnek kaynak kullanımını kısıtladığından genel kullanım için önerilmez.
  • Riskler:
    • vMotion engellenir.
    • HA (yüksek erişilebilirlik) senaryolarında VM yeniden başlatılamayabilir.
    • DRS yük dengelemesi doğru çalışmaz.