Ana içeriğe geç

Sanal makine yaşam döngüsü

vStack Center'daki bir sanal makine aynı anda üç yerde bulunur. Küme veritabanı onun yetkili yapılandırmasını saklar: ad, vCPU sayısı, RAM boyutu, işletim sistemi profili ve disk ile ağ portu listeleri. Disklerin ZFS dataset'leri bir depolama havuzunda bulunur. Bir düğüm, bu yapılandırmadan oluşturulan hipervizör sürecini çalıştırır. vStack Center denetim düzlemidir: yetkili yapılandırmayı yönetir, düğümlerdeki ajanlar ise komutları yürütür.

Bu ayrım alt sistemin temel özelliğini belirler: neredeyse her VM işlemi önce küme kaydını, ardından düğümdeki durumu değiştirir. Bu nedenle bir VM'nin iki durumu vardır. admin_status, operatörün isteği üzerine vStack Center tarafından belirlenen istenen durumdur. oper_status ise ajanlar tarafından bildirilen gerçek durumdur; bununla birlikte son güncelleme zamanı olan oper_status_ts de bildirilir. Bir komut düğüme giderken durumlar farklıdır ve bu normaldir. Dakikalarca süren bir tutarsızlık ise inceleme yapılması gerektiğinin işaretidir.

İki işlemin aynı VM'nin üzerine aynı anda yazmasını önlemek için vStack Center locked bayrağını ayarlar. Başlatma, durdurma, disk ekleme ve ballooning, işlem süresince VM'yi kilitler ve kilidi ajan yanıt işleyicisinde serbest bırakır. Bayrak ayarlıyken rakip çağrılar "VM is locked" iletisiyle reddedilir; VM'yi yalnızca tek bir istek alabilir, çünkü denetim ve bayrak güncellemesi tek bir atomik eylemdir.

3.1.0 sürümünden itibaren takılı kalan bir kilidin genellikle elle serbest bırakılması gerekmez. İleti aracısıyla (message broker) iletişim hatası, operatör hatayı görmeden önce kilidi otomatik olarak serbest bırakır. Bir VM'nin geçiş durumu zaman aşımından daha uzun sürmez (aşağıdaki tabloya bakın). Zaman aşımı dolduğunda VM ilgili hata durumuna geçer ve neden servis günlüğüne ve VM'nin durum geçmişine kaydedilir. Elle vm-unlock iki mekanizmanın da ele almadığı durumlar için kullanılabilir olmaya devam eder ve onu yalnızca Cluster master rolü kullanabilir.

Alt sistem genelinde kullanılan ikinci öznitelik yapılandırma sürümüdür: hw_version. Yapılandırma sürümü üç olan VM'ler eski kurulumlardan kalmadır: v4 yöntem ailesi bunları yönetmez ve istekleri ayrı bir hata koduyla reddeder. Bu bölümde açıklanan her şey hw_version = 4 için geçerlidir; v3 VM'ler yalnızca okuma ve silmeyi destekler.

Üçüncü öznitelik bir VM'nin nerede çalışabileceğini belirler. nvme alanı disk bağlantı modunu gösterir: true NVMe, false virtio-blk anlamına gelir. NVMe modunda diskler düğüme ağ üzerinden erişilebilir, bu nedenle bir VM çevrimiçi herhangi bir küme düğümünde başlayabilir ve vStack Center en az yüklü düğümü kendisi seçebilir. virtio-blk ile disk yalnızca havuzu barındıran düğüme görünür, bu nedenle VM yalnızca orada başlayabilir. Eski disk yapılandırmasından aktarılan Windows VM'lerinde genellikle nvme = false bulunur.

vStack Center uzun işlemler için istekleri açık tutmaz. Komutu kuyruğa alır ve denetimi hemen geri verir; ardından işi depolama denetleyicisi ve düğüm ajanı yapar. Bu, arayüzün nasıl okunacağını belirler: kabul edilmiş bir komut henüz tamamlanmamıştır. Tamamlanma, VM durumu ve VM kartındaki olay geçmişinde bir kayıtla doğrulanır.

VM durumları​

VM durumu VM listesinin State sütununda ve VM kartında görünür. VM listesi VDC'nin Virtual Machines sekmesinde açılır ve ID, Name, IP, OS, State ve Health sütunlarını içerir.

VDC'nin Virtual Machines sekmesindeki VM listesi: ID, Name, IP, OS, State ve Health sütunları

Güç işlemlerini doğrulamak için kullanılan admin_status değerleri:

admin_statusDurumKullanılabilir işlemler
1DurdurulduBaşlatma, bir anlık görüntüye geri alma, klonlama, taşıma (migrate), disk ve ağ portu ekleme ve kaldırma
10Oluşturuldu, hiç başlatılmadıBaşlatma, taşıma
3ÇalışıyorDurdurma, yeniden başlatma, askıya alma, sınırları değiştirme, ballooning, konsol
11Askıya alındıSürdürme
9SiliniyorYok: bir işlem sürüyor

Geçiş durumları ve zaman aşımları​

Geçiş durumu bir son durumu değil, süren bir işlemi gösterir. 3.1.0 sürümünden itibaren her birinin kendi zaman aşımı vardır: ajan bu süre içinde yanıt vermezse VM ilgili hata durumuna geçer ve kilidi açılır; böylece işlem yeniden denenebilir ve silme artık VM kilitli olduğu için reddedilmez. Zaman aşımları tek bir ortak değer kullanmak yerine her işlemin doğasını yansıtır.

Geçiş durumuZaman aşımıZaman aşımından sonraki durum
Başlatılıyor15 dakikaBaşlatma başarısız
Durduruluyor30 dakikaDurdurma başarısız
Askıya alınıyor30 dakikaAskıya alma başarısız
Sürdürülüyor30 dakikaSürdürme başarısız
Oluşturuluyor1 saatOluşturma başarısız
Siliniyor1 saatSilme başarısız
Taşınıyor6 saatTaşıma başarısız
Geri yükleniyor6 saatGeri yükleme başarısız

İki açıklama geçerlidir. Başarıyla oluşturulmuş ancak hiç başlatılmamış bir VM bu kurala tabi değildir: ilk düğüm olayına veya envanter döngüsüne kadar meşru olarak oluşturma durumunda kalabilir. Ayrıca bir ajan askıda kaldığında VM geçiş durumundan hemen değil, zaman aşımı dolduğunda çıkar; ajan daha sonra yanıt verirse VM durumu gerçek durumunu yansıtacak şekilde düzeltilir.

Zaten çalışan bir VM için verilen yeni bir başlatma komutu "Unable to start VM having admin_status==N already" döndürür. Askıya alınmış bir VM normal durdurma komutuyla durdurulabilir; başlatmak için önce askıdan sürdürün.

Yapılandırma sürümü ve disk modu​

ÖznitelikDeğerEtki
hw_version4İşlemlerin tam kümesi
hw_version3v4 yöntemleri isteği reddeder: "VM with hardware version == 3 can't be managed via v4 method"; anlık görüntüler ve geri alma kullanılamaz
nvmetrueÇevrimiçi herhangi bir düğümde başlatma; açıkça bir düğüm seçilmezse vStack Center en az yüklü düğümü seçer
nvmefalseYalnızca havuz düğümünde başlatma; başka bir düğümde başlatma denemesi "virtio-blk VM: start only on the pool node" döndürür
create_completednvme = true olan Windows için 0İlk kurulum tamamlanana kadar uzaktan başlatma yasaktır: "Windows: finish setup on the pool node before remote start"

Mevcut bir VM'nin disk modu anında değiştirilemez: Windows yüklendikten sonra disk yapılandırmasını değiştirmek konuk sistemin önyüklenmesini engeller. Bu nedenle eski yapılandırmadan aktarılan VM'ler virtio-blk modunda kalır ve havuz düğümüne bağlıdır.

Anında ve ertelenmiş işlemler​

vStack Center bazı işlemleri kendisi, anında gerçekleştirir: VM listesini ve VM kartını görüntüleme, bir konsol adresi döndürme ve başvuru verilerini okuma. Diğer işlemler düğüm ajanını veya depolama denetleyicisini gerektirir: başlatma, durdurma, disk oluşturma ve genişletme, anlık görüntüler ve taşıma. Bu komutlar önce kaydedilir, sonra yürütülür.

Uygulamada bu şöyle işler. Komut kabul edilir, VM kilitli olarak işaretlenir ve durumları ayrışır. Birkaç saniye sonra (taşıma için dakikalar sonra) oper_status, admin_status değerine yetişir, kilit serbest bırakılır ve VM'nin olay geçmişine eylemi, durumu ve süreyi içeren bir kayıt eklenir. Bir hata kaydı işlemin tamamlanmadığı anlamına gelir; kilit serbest bırakıldıktan sonra yeniden denenebilir.

Bazı işlemlerde davranış VM durumuna bağlıdır. Durdurulmuş bir VM'de disk veya ağ portu sınırı belirlemek yalnızca küme kaydını değiştirir ve hemen etkili olur; çalışan bir VM'de ise komut düğüme gönderilir. Kısmi başarı ayrı bir durumdur: sınır yapılandırmaya kaydedilir ancak ajan bunu uygulamaz ("Ratelimit has been set (DB), but agent didn't apply it"). Değer, VM bir sonraki başlatıldığında etkili olur.

Kapasite sınırları​

Bir VM'yi başlatmak iki bağımsız denetim içerir. Önce vStack Center vCPU, RAM ve depolama için VDC (sanal veri merkezi) kotalarını denetler. Ardından küme düzeyinde RAM aşırı tahsisini (overcommit) denetler.

Hata koduİletiNeden
-415vDC CPU cores quota depletedVDC çekirdek kotası tükendi
-414vDC RAM quota depletedVDC RAM kotası tükendi
-413vDC storage quota depletedVDC depolama kotası tükendi
-440Cluster RAM has been depletedAşırı tahsis hesaba katıldığında kümede yeterli RAM yok
-458No available online nodes for VM placementOtomatik yerleştirme için çevrimiçi düğüm yok
-461VM is running on another cluster nodeBir düğüm, VM'nin başlatma komutunun hedeflediği düğümden farklı bir düğümde çalıştığını bildirdi (3.2.0 sürümünden itibaren)

Başlatma ile yeniden başlatma arasındaki fark ince ama kapasite planlaması için önemlidir. vms-start ile VM'nin kaynakları geçerli tüketime eklenir, çünkü henüz kullanımda değildir. vms-restart ile VM zaten hesaba katılmıştır, bu nedenle kaynakları yeniden eklenmez ve aşırı tahsis denetimi onun RAM'ini boş RAM'den düşmez.

İşlem haritası​

GörevYöntemler
VM oluşturma veya silme, VDC'ler arasında taşımavms-create, vms-remove, vm-change-vdc
Güç, askıya alma, konsol, kilit açmavms-start, vms-stop, vms-restart, vms-suspend, vms-resume, vms-suspend-pool, vms-resume-pool, vm-console, vm-unlock
Diskler, bellek, CPUvms-add-disk, vms-disk-resize, vm-remove-disk, vm-disk-set-label, vm-ratelimit-disk, vm-set, vms-balloon, vms-cpu-priority, vms-vcpu-class
Ağ arabirimlerivms-add-nic, vm-remove-nic, vm-ratelimit-nic
Anlık görüntüler ve geri almavms-snapshot, vm-snapshot-list, snapshot-list, vms-snapshot-remove, vms-rollback
Taşıma, klonlama, içe aktarma alanından geri yüklemevm-migrate, vm-migrate-status, vm-migration, vms-clone, vm-import-area-list, vm-import-area-process
Envanter, ölçümler, yapılandırma doğrulamavm-list, vm-get, vm-history, vm-perfdata, vm-check-configuration, vm-inventory

Ayrıca bakın​

API yöntemleri​

Bu sayfanın API işlemleri yukarıdaki "İşlem haritası" tablosunda listelenmiştir; bkz. API başvurusu.