deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak Hacker News – Front Page (native)

FreeBSD 15.1'de bhyve guest'lerinin ilk çalışan canlı migrasyonu gösterildi

Bir geliştirici, FreeBSD 15.1 host'ları arasında çalışan amd64 bhyve guest'lerini canlı migrate etmeye yönelik ilk çalışan prototipi yayınladı; prototip, vmm kernel modülündeki dirty-page takibine dayanıyor.

FreeBSD 15.1'de bhyve guest'lerinin ilk çalışan canlı migrasyonu gösterildi

İlk çalışan prototip

gyptazy adıyla yayın yapan bir geliştirici, FreeBSD'nin yerleşik hypervisor'ü bhyve için canlı migrasyonun ilk çalışan uygulamasını FreeBSD 15.1 üzerinde demonstrating ederek yayınladı. Hacker News ana sayfasında öne çıkan blog yazısına göre, çalışan bir amd64 guest, yalnızca son stop-and-copy aşamasında duraklatılarak, çalışmaya devam ederken TCP üzerinden bir host'tan diğerine taşınabiliyor.

Uygulama, bhyve'nin deneysel snapshot desteğine dayanıyor ve iki yeni parça ekliyor: vmm kernel modülünün içinde dirty-page takibi ve bhyve ile bhyvectl arasında paylaşılan bir migrasyon protokolü. Kod ve test araçları, bir work-in-progress RFC olarak — geliştiricinin kendi Git sunucusunda ve GitHub'da — yayınlanıyor; böylece test, tartışma ve iyileştirme soyutun değil, açık ortamın içinde yürütülebilsin.

Migrasyon nasıl çalışıyor

Migrasyon, kaynak host'taki bir pre-copy aşamasıyla başlıyor. bhyve önce guest'in kullanımda olan belleğini iletiyor, ardından önceki taramadan bu yana değiştirilen sayfaların bitmap'ini tekrar tekrar istiyor ve yalnızca bunları gönderiyor. Bekleyen dirty set, yapılandırılmış bir downtime hedefine sığacak kadar küçülürse — ya da küçülmeyi durdurursa ya da yapılandırılmış bir tur sınırına ulaşırsa — guest ve aygıtları duraklatılıyor, son dirty sayfalar gönderiliyor ve vCPU'ları, kernel durumunu ve emüle edilmiş aygıtları kapsayan snapshot durumu aktarılıyor.

Hedef host temel VM geometrisini kontrol ediyor (protokol sürümü, sayfa boyutu, bellek düzeni ve vCPU sayısı), belleği ve durumu alıyor, geri yüklüyor ve hazır olduğunu bildiriyor. Ancak o zaman kaynak taraf bir GO mesajı gönderiyor; bu mesaj commit noktası olarak işlev görüyor: GO'dan önce başarısız bir migrasyon guest'i orijinal host'ta devam ettirmeli ve hedef, bu commit'i hiç almayan bir guest'i başlatmayacak. Yalnızca stop-and-copy yapan bir warm mod da mevcut; hem bir geri dönüş yolu hem de karşılaştırma tabanı olarak faydalı. Dikkat çekmeye değer bir tasarım detayı: migrasyon socket'i bhyvectl tarafından açılıp bhyve'ye devrediliyor; bu da bhyve'nin Capsicum sandbox'ında kapatılı kalmasını sağlıyor.

Şu ana kadar ne test edildi

Yazıda açıklanan testler arasında, her sayfayı doğrulayan ve eksik ya da bayat veriyi işaretleyen bir bellek-yeniden-yazma iş yükü altında ileri-geri tekrarlanan migrasyonlar; ayrıca dosyaları checksum doğrulamasıyla yazıp fsync eden bir disk iş yükü ve aygıt duraklatma, drain ve geri yükleme yolunu zorlamak için cold reboot sonrası yeniden kontrol yer alıyor. Başarısızlık durumları — hedefin reddetmesi, erişilemeyen bir hedef ve hem pre-copy hem stop-and-copy sırasında ortadan kaybolan bir hedef — de test edilmiş durumda.

Protokol birden fazla vCPU'yu ele alıyor: el sıkışma guest'in vCPU sayısını taşıyor, hedef bir uyuşmazlığı reddediyor ve tüm vCPU'lar birlikte duraklatılıp devam ettiriliyor. Pratikte test yatağı çoğunlukla tek vCPU'lu bir guest çalıştırmış, bu yüzden çoklu vCPU stres ve yarış (race) testleri hâlâ eksik.

İki hostluk bir ortamda tekrarlanan canlı migrasyonlar başarıyla tamamlandı; yavaşça kirlenen (dirty) 512 MiB'lik bir guest için gözlemlenen downtime kabaca 138–171 ms oldu. Hızlıca kirlenen bir guest pre-copy sırasında hiçbir zaman yakınsamayabilir; bu durumda migrasyon yine doğru biçimde, yalnızca daha uzun bir duraklamayla stop-and-copy üzerinden tamamlanıyor. Geliştirici, bunların üretim desteği vaadi değil, mühendislik sonuçları olduğunu açıkça belirtiyor. Kapsam şu an için yalnızca amd64; çalışma deneysel BHYVE_SNAPSHOT desteğine ve snapshot yapabilen emüle edilmiş aygıtlara bağlı ve PCI passthrough henüz migrate edilemiyor.

Bununla FreeBSD ağacı arasındaki engeller

Yazı, upstream'e taşıma sorumlu bir şekilde değerlendirilebilmeden önce gereken bir dizi mühendislik gereksinimini sıralıyor. Kernel tarafındaki dirty-page algoritmasının, dirty bit'ler incelenip temizlenirken hiçbir yazımı kaybetmediğinin kanıtlanması gerekiyor; bunu eşzamanlılık (concurrency) ve çoklu vCPU stres kapsamı ile incelenebilir bir kilitleme ve bellek sıralaması (memory-ordering) argümanı desteklemeli. Uyumluluk sözleşmesi, bellek boyutu ve vCPU sayısının eşleşmesinin ötesine genişleyerek guest kimliği, CPU yetenekleri, bhyve/vmm ve snapshot format sürümleri, aygıt topolojisi ve paylaşımlı depolama kimliğini kapsamalı.

Taşıma katmanının da sağlamlaştırılması gerekiyor: bugünkü TCP yolu hiçbir kimlik doğrulama ya da şifreleme taşımıyor ve ilk sürüm bir native protokol konuşuyor; oysa kararlı bir protokol açık wire formatları, sınırlı mesaj işleme, timeout'lar, sürüm müzakeresi ve gerçek bir güvenlik hikâyesi gerektiriyor. Bunun ötesinde, kaynak taraf commit etmeden önce geri yüklenen aygıtların dışarıdan görülebilir işlere yol açmaması için aygıt yan etkileri çevresindeki commit sınırının gözden geçirilmesi; depolama ve ağ devri — paylaşımlı depolama tutarlılığı ve fencing, ayrıca tap/bridge işleme, MAC/IP taşınması ve trafik yakınsaması — için spesifikasyon yazılması; belgelenmiş bir destek matrisiyle ağaç içi otomatik test stratejisinin gerekliliği; ve çalışmanın dirty-page takibi, snapshot API refactor'ü, protokol çalışması, CLI değişiklikleri ve testler olacak şekilde bağımsız incelenebilir yamalara bölünmesi gerekiyor.

Neden önemli

Canlı migrasyon, kurumsal sanallaştırmanın temel bir yeteneğidir: host bakımını, donanım değişimini, yük dengelemeyi ve arıza alanı yönetimini iş yüklerini aksatmadan mümkün kılan şey budur. Şimdiye kadar bhyve'nin çalışan bir uygulaması yoktu — yazı bunu ilk çalışan durum olarak sunuyor — ve bu, FreeBSD tabanlı hosting için gerçek bir kısıttı.

Yazı iki somut yararlanıcı adı veriyor. FreeBSD üzerinde Proxmox benzeri bir sanallaştırma platformu sunmayı hedefleyen Sylve projesi migrasyonu bir kolaylık değil, kümeli çalışmanın ön koşulu olarak görüyor. Ve geliştiricinin ücretsiz BSD tabanlı VPS instance'ları sunan hizmeti BoxyBSD, şu an için rutin host işleri sırasında bir migrasyon yolu olmadığından guest kesintileriyle karşı karşıya. İleriye dönük öncelikler doğru olacak: doğruluk, uyumluluk doğrulaması, taşıma güvenliği ve tekrarlanabilir testler — performans özellikleri daha sonra gelecek.

  • #freebsd
  • #bhyve
  • #virtualization
  • #live-migration
  • #open-source

İlgili yazılar