İçeriğe atla
Makale

Sanal Makine (VM) Nedir? Sanal ve Fiziksel Sunucu Farkı

Sanal makine, bir hypervisor üzerinde kendi işletim sistemiyle çalışan bilgisayardır. Fiziksel sunucudan ve container'dan farkını anlattık.

Oğuzhan Gerçek··6 dk okuma
Sanal Makine (VM) Nedir? Sanal ve Fiziksel Sunucu Farkı

Kısa cevap: Sanal makine (virtual machine, VM), fiziksel bir bilgisayarın yazılımla oluşturulmuş karşılığıdır. Kendi işlemcisi, belleği, diski ve işletim sistemi varmış gibi çalışır; bu kaynakları ise altındaki fiziksel sunucudan, hypervisor adı verilen bir katman aracılığıyla alır. Tek bir fiziksel sunucu, birbirinden yalıtılmış birçok sanal makineyi aynı anda çalıştırabilir. Sanal sunucu, sunucu olarak kullanılan sanal makinenin adı; VPS ve bulut sunucu da aynı teknolojinin ticari biçimleri.

Sanal makine nedir?

Kavramın bugün de kullanılan tanımı 1974'e dayanıyor. Gerald Popek ve Robert Goldberg, Communications of the ACM'de yayımlanan makalelerinde sanal makineyi "gerçek makinenin verimli ve yalıtılmış bir kopyası" olarak tanımladı. Sanal makineyi çalıştıran katmandan (bugünkü adıyla hypervisor) üç şey beklediler: programların gerçek makinedekiyle esasen aynı biçimde çalışması, en kötü ihtimalle yalnızca biraz yavaşlaması ve sistem kaynaklarının denetiminin tamamen bu katmanda olması.

Fikir bundan da eski. IBM, Cambridge'deki araştırma merkezinde 1964'te CP-40 ile başladığı çalışmayı 2 Ağustos 1972'de VM/370 adıyla duyurdu. Bugünkü sunucu sanallaştırmasının temel taşlarından KVM ise Intel ve AMD işlemcilerdeki donanım sanallaştırma desteğini kullanıyor ve Şubat 2007'de yayımlanan Linux 2.6.20 sürümüyle çekirdeğe girdi.

Sanal makine nasıl çalışır?

Fiziksel sunucunun üzerinde hypervisor adı verilen bir yazılım katmanı çalışır. Hypervisor işlemci, bellek, depolama ve ağ kaynaklarını havuzda toplar ve her sanal makineye bir pay ayırır. Sanal makinenin içindeki işletim sistemi bu payı kendi donanımı gibi görür; aynı donanımda başka sanal makinelerin çalıştığını bilmez.

Diskte bir sanal makine birkaç dosyadan oluşur: sanal diski tutan disk imajı (VMware'de VMDK, Hyper-V'de VHDX, KVM'de çoğunlukla qcow2) ve işlemci, bellek, ağ kartı gibi ayarları tutan yapılandırma dosyası. Sanal makineyi kopyalamanın, taşımanın ve yedeklemenin kolay olmasının sebebi bu: sunucu, birkaç dosyaya dönüşmüş oluyor.

Hypervisor türleri: Tip 1 ve Tip 2

Red Hat'in sınıflandırmasıyla iki tür hypervisor var:

  • Tip 1 (bare metal): Hypervisor doğrudan donanımın üzerinde çalışır; arada genel amaçlı bir işletim sistemi yoktur. Sunucu sanallaştırmasında kullanılan tür budur. Örnekler: VMware vSphere (ESXi), Microsoft Hyper-V ve KVM. Proxmox VE, KVM'yi ve Linux container'larını (LXC) açık kaynak bir yönetim platformunda bir araya getiriyor.
  • Tip 2 (hosted): Hypervisor, Windows ya da Linux gibi sıradan bir işletim sisteminin üzerinde uygulama olarak çalışır. Geliştirme ve test için uygundur; örnekler VMware Workstation ve Oracle VirtualBox.

Hangi Tip 1 hypervisor'ın kullanılacağı, lisans modeli değiştiğinde yeniden gündeme gelen bir karar. Broadcom'un VMware'i satın almasından sonra yaşanan da buydu; konuyu VMware, Proxmox ve KVM yazımızda ele aldık.

Sanal sunucu ile fiziksel sunucu arasındaki fark

Fiziksel sunucuda tek bir işletim sistemi donanımın tamamını kullanır. Sanal sunucuda ise aynı donanım birden fazla sanal makine arasında paylaşılır. Fark en çok şu noktalarda ortaya çıkıyor:

  • Kurulum süresi: Fiziksel sunucu için donanım siparişi, montaj ve kablolama gerekir. Sanal sunucu hazır bir kaynak havuzundan dakikalar içinde açılır.
  • Kaynak kullanımı: Fiziksel sunucunun boşta kalan kapasitesi boşa gider. Sanallaştırmada aynı donanım birden fazla iş yükünü taşıdığı için daha verimli kullanılır.
  • Taşınabilirlik: Sanal makine çalışırken bir fiziksel sunucudan diğerine taşınabilir (VMware'de vMotion, Hyper-V'de Live Migration). Donanım bakımı bu sayede iş yükünü durdurmadan yapılır.
  • Snapshot: Bir değişiklikten önce sanal makinenin o anki durumu kaydedilir; değişiklik ters giderse bu noktaya dönülür.
  • Performans: Hypervisor katmanının bir maliyeti var, ama işlemcilerin donanım desteği bu maliyeti küçültüyor. Microsoft, Hyper-V için "doğala yakın performans" ifadesini kullanıyor.
  • Yalıtım: Sanal makineler birbirinden yalıtılmış çalışır ama aynı donanımı ve aynı hypervisor'ı paylaşır. Hypervisor'daki bir açık bütün sanal makineleri etkileyebileceği için hypervisor yamaları ertelenmemeli.

Fiziksel sunucu bazı durumlarda hâlâ doğru seçim: donanımın tamamını isteyen büyük veritabanları, GPU gibi özel donanımı tek başına kullanan iş yükleri ve lisans koşulları sanallaştırmayı pahalılaştıran yazılımlar bunların başında geliyor.

Sanal makine ile container arasındaki fark

Container da yalıtım sağlar, ama başka bir katmanda. Docker'ın tarifiyle sanal makine donanımın soyutlanmasıdır: her sanal makine tam bir işletim sistemi kopyası taşır ve onlarca GB yer kaplayabilir. Container ise uygulama katmanında bir soyutlamadır: aynı makinedeki container'lar işletim sistemi çekirdeğini paylaşır ve imajları genellikle onlarca MB boyutundadır.

Bu yüzden container daha hafiftir ve daha hızlı açılır; ama hepsi aynı çekirdeği paylaştığı için yalıtımı sanal makineninki kadar güçlü değildir. İkisi birbirinin alternatifi de değil: bulut sağlayıcılarının yönetilen Kubernetes hizmetlerinde container'lar, düğüm olarak çalışan sanal makinelerin üzerinde koşar.

VPS, VDS ve bulut sunucu

Hosting sektöründe sanal makine farklı adlarla satılıyor:

  • VPS (sanal özel sunucu): Bir fiziksel sunucunun bölünmesiyle oluşan, kendi işletim sistemi olan sanal sunucu.
  • VDS (sanal adanmış sunucu): Paylaşımlı donanımda çalışır, ama kaynakları belirli bir müşteriye ayrılmıştır.
  • Bulut sunucu: Sanal makinenin bulut modeliyle sunulan biçimi. Kaynak havuzundan dakikalar içinde açılır, büyütülüp küçültülebilir ve kullanıldığı kadar ödenir. Ayrıntısı IaaS yazımızda.

Bu adların içeriği sağlayıcıdan sağlayıcıya değişebiliyor. Karşılaştırırken ada değil; garanti edilen kaynağa, yedekliliğe ve destek modeline bakmak gerekiyor.

Sanal makinelerde yedekleme: snapshot yedek değildir

Snapshot, sanal makinenin belirli bir andaki durumunu kaydeder ve bir değişiklikten önce geri dönüş noktası olarak çok işe yarar. Ama yedek değildir. VMware'in kendi önerisi de snapshot'ı yedek olarak kullanmamak: snapshot dosyası, asıl sanal diskteki değişikliklerin kaydından ibaret ve asıl disk kaybolursa snapshot tek başına sanal makineyi geri getiremez.

Sanal makineler için doğru yöntem, sanal makinenin imajını ayrı bir depoya alan imaj tabanlı yedekleme ve kritik iş yükleri için başka bir siteye replikasyon. Yedeklemenin nasıl kurgulanacağını yedekleme yazımızda anlattık.

Sık sorulan sorular

VM ne demek? Virtual machine, yani sanal makine demek: fiziksel bir bilgisayarın yazılımla oluşturulmuş, kendi işletim sistemini çalıştıran karşılığı.

Sanal makine ne işe yarar? Bir fiziksel sunucuda birden fazla sistemi birbirinden yalıtılmış olarak çalıştırmaya yarar. Sunucuları daha az donanımda toplamak (konsolidasyon), test ve geliştirme, eski uygulamaları yeni donanımda çalıştırmak ve felaket kurtarma başlıca kullanım alanları.

Sanal sunucu ile VPS aynı şey mi? Teknik olarak evet: ikisi de sanal makinedir. VPS, hosting sağlayıcılarının sanal sunucuyu satarken kullandığı ad.

Bir fiziksel sunucuda kaç sanal makine çalışır? Sabit bir sayı yok. Sanal makinelerin işlemci, bellek ve disk ihtiyacına ve hypervisor'ın kaynakları nasıl paylaştırdığına bağlı. Fiziksel kapasiteden fazlasını dağıtmak (overcommit) mümkün, ama yük arttığında bütün sanal makineler yavaşlar.

Sanal makine güvenli mi? Sanal makineler birbirinden yalıtılmış çalışır. Yine de hepsi aynı hypervisor'a bağlı olduğu için hypervisor'ın güncel tutulması ve yönetim arayüzüne erişimin sınırlandırılması gerekir.

Sanal makine mi, container mı? Tam bir işletim sistemine, farklı işletim sistemlerine ya da güçlü yalıtıma ihtiyacınız varsa sanal makine doğru seçimdir. Aynı uygulamanın çok sayıda kopyasını hızla açıp kapatmanız gerekiyorsa container daha uygundur. İkisi birlikte de kullanılır: container'lar sanal makinelerin üzerinde çalışabilir.

Kaynaklar