Sanallaştırma (virtualization), fiziksel bir bilgisayarın donanımını yazılım katmanlarıyla bölerek ve bu bölümleri izole ederek birden fazla bağımsız sanal makine (VM – Virtual Machine) veya uygulamanın aynı donanım üzerinde çalışmasını sağlayan bir teknolojidir. Bu süreçte, fiziksel kaynaklar (işlemci, bellek, depolama, ağ gibi) sanal bileşenler haline getirilir ve her sanal makine kendi işletim sistemi ve uygulamalarıyla izole bir ortamda çalışabilir.
Bunu daha anlaşılır hale getirmek için bir benzetme yapalım: Sanallaştırmayı bir apartman dairesine benzetebiliriz. Bir bina tek bir fiziksel yapı (sunucu) olabilir, ancak bu binada birçok farklı daire (sanal makineler) bulunabilir. Her dairenin (sanal makinenin) kendi kapısı, odaları, mutfağı ve banyosu vardır; yani dış dünyadan izole edilmiştir. Dairede yaşayanlar (işletim sistemi ve uygulamalar), kendi ihtiyaçlarını karşılamak için bina içerisindeki ortak kaynakları (elektrik, su gibi) kullanır, ancak bu kullanımlar birbirine karışmaz. Her daire farklı ihtiyaçlar doğrultusunda tasarlanmış olabilir, ancak hepsi aynı bina (fiziksel sunucu) üzerinde yer alır.
Teknik Detaylar
Sanallaştırma teknolojisinin temel unsurlarını biraz daha teknik şekilde açalım:
- Hypervisor (Sanallaştırma Katmanı): Sanallaştırma işleminin merkezinde hypervisor adı verilen bir yazılım katmanı bulunur. Hypervisor, fiziksel donanım ile sanal makineler arasında bir aracı görevi görür. Temel olarak iki tür hypervisor vardır:
- Type 1 (Bare-metal Hypervisor): Doğrudan fiziksel donanım üzerinde çalışır. Örnek olarak VMware ESXi, Microsoft Hyper-V ve Xen verilebilir. Bu tür hypervisor’lar, işletim sistemi gibi çalışır ve sanal makineleri doğrudan donanım üzerinde yönetir.
- Type 2 (Hosted Hypervisor): Mevcut bir işletim sistemi üzerine kurulur. Bu tür hypervisor’lara VirtualBox veya VMware Workstation örnek verilebilir. Bu tip, daha çok masaüstü bilgisayarlarda bireysel kullanım içindir.
- Sanal Makineler (Virtual Machines): Sanal makineler, fiziksel donanımı taklit eden yazılım bazlı ortamlar olarak düşünülebilir. Her sanal makine kendi işletim sistemi ve uygulamalarına sahiptir. İşletim sistemi açısından bakıldığında, sanal makine bir fiziksel makine gibi görünür ve davranır. Sanal makineler, işlemci, bellek ve disk gibi kaynakları hypervisor aracılığıyla fiziksel donanımdan alırlar.Bu sanal makineleri yine apartmandaki daireler gibi düşünebiliriz. Her dairenin kendi içinde bir yaşam düzeni vardır, bağımsızdır ve diğer dairelerde neler olup bittiğini bilmez.
- Kaynak Paylaşımı ve İzolasyon: Sanallaştırma, donanım kaynaklarını sanal makineler arasında paylaştırır. Örneğin, 16 çekirdekli bir işlemciye sahip bir fiziksel sunucuyu 4 farklı sanal makineye bölerseniz, her sanal makineye 4 çekirdek tahsis edilebilir. Sanal makineler birbirleriyle paylaşmadıkları kaynaklarla (örneğin bellek) izole edilir, böylece bir sanal makinenin çökmesi diğerini etkilemez.Bu kaynak paylaşımı dairedeki insanların ortak bir elektrik kaynağını paylaşmasına benzetilebilir. Elektrik kaynağı sınırlıdır, ancak herkes yeterli miktarda elektrik kullanabilir. Ancak bir dairede fazla elektrik kullanılırsa, diğer dairelerin elektriğini etkilemez, çünkü her bir dairenin kendi bağımsız elektrik hattı (işlemci, RAM gibi donanım kaynakları) vardır.
Sanallaştırmanın Avantajları
- Verimlilik Artışı: Fiziksel sunucularda genellikle kaynakların tam kapasite kullanılmadığını görürüz. Sanallaştırma, bir sunucuyu daha verimli kullanarak birden fazla sanal makinenin çalışmasını sağlar, böylece donanımın kullanım oranı artar.Bunu, bir apartmanda her bir dairenin tam kapasite kullanılması gibi düşünebiliriz. Eğer bina tek bir kişi tarafından kullanılsaydı, tüm kaynaklar (elektrik, su, ısıtma) büyük ölçüde boşa giderdi. Ancak birçok daireye böldüğünüzde, her biri bu kaynakları kullanarak toplamda daha verimli bir yapı elde edersiniz.
- Esneklik ve Ölçeklenebilirlik: Yeni bir uygulama veya hizmet için fiziksel sunucuya yatırım yapmak yerine, sanal makineler oluşturmak çok daha hızlıdır ve ihtiyaçlara göre ölçeklenebilir. Yeni bir daireyi hızlıca inşa etmek yerine, mevcut binadaki dairelerden birini kullanmak çok daha esnek ve hızlıdır.
- İzolasyon ve Güvenlik: Her sanal makine kendi ortamında izole çalıştığı için, birinde meydana gelen sorunlar diğerlerini etkilemez. Ayrıca güvenlik açısından da sanallaştırma avantaj sağlar. Bir sanal makinede kötü niyetli yazılım çalışsa bile diğer sanal makineler bu durumdan etkilenmez.
- Maliyet Tasarrufu: Donanım maliyetlerini azaltır. Birden fazla fiziksel sunucu yerine tek bir sunucuya yatırım yapmak ve bu sunucuyu sanallaştırarak birden fazla uygulama çalıştırmak, maliyet açısından büyük tasarruf sağlar.
Sanallaştırmayı daha derinlemesine anlamak için, bazı temel teknik kavramları ve işleyişleri daha detaylı inceleyelim. Burada, özellikle sanallaştırmanın nasıl çalıştığı, işletim sistemleri ve donanım seviyesinde neler olup bittiğini anlamak önemli. Şimdi, daha teknik bir perspektiften bakalım.
Sanallaştırmanın Temeli: CPU Sanallaştırması
Bir fiziksel sunucu (host) üzerindeki CPU (merkezi işlem birimi), sanallaştırma sırasında birçok sanal makineye (guest) tahsis edilir. Ancak, CPU yalnızca fiziksel dünyada tek bir işlem yapabilir, yani fiziksel işlemci çekirdekleri sınırlıdır. Sanallaştırma teknolojileri, işlemcinin her bir sanal makineye bölünmüş bir parça olarak görünebilmesi için CPU saat döngülerini “paylaşır”.
Nasıl Çalışır?
Bir işlemcinin çalışma mantığını anımsamak için, işlemcinin bir tren istasyonuna benzediğini düşünebilirsiniz. Fiziksel olarak tren rayları (işlemcinin çekirdekleri) sınırlıdır, ama bir hypervisor bu rayları belirli zaman dilimlerinde birden fazla trene (sanal makinelerin işlemleri) kullanması için ayırır. Bir sanal makine, CPU’yu tam anlamıyla kullanıyor gibi görünse de, aslında CPU’yu paylaşıyor. İşlemci hızlı bir şekilde görevler arasında geçiş yaparak (context switching) her sanal makinenin işlem yapıyormuş gibi hissetmesini sağlar.
CPU “Ring” Yapısı:
İşletim sistemlerinde genellikle dört seviyeli bir “ring” yapısı bulunur, bunlar CPU’nun işlem modlarıdır:
- Ring 0 (Çekirdek Modu): İşletim sisteminin çekirdeği, en fazla erişim yetkisine sahip olduğu seviyedir. Bellek ve donanım gibi kaynaklara doğrudan erişebilir.
- Ring 1 ve Ring 2: Bu seviyeler genellikle sürücüler veya bazı sistem yazılımları tarafından kullanılır.
- Ring 3 (Kullanıcı Modu): Uygulamalar ve programlar burada çalışır ve donanım kaynaklarına doğrudan erişemez. İhtiyaç duyduğunda Ring 0’a çağrıda bulunur.
Sanallaştırma sırasında sanal makineler Ring 0‘da çalışıyor gibi görünmek ister, çünkü her sanal makine kendi işletim sistemi çekirdeğini yönetir. Ancak fiziksel makinenin işletim sistemi de Ring 0’da çalışmaktadır. Bu noktada, hypervisor devreye girerek bir “ring hyp” adı verilen ek bir katman oluşturur. Bu katman, CPU’ya doğrudan erişimi engelleyerek sanal makinelerin birbirine müdahale etmesini önler.
Bellek Sanallaştırması
Bellek (RAM) yönetimi, sanallaştırmanın en kritik parçalarından biridir. Her sanal makinenin, kendine ait bağımsız bir bellek alanı varmış gibi çalışması gerekir, ancak tüm sanal makineler fiziksel olarak aynı bellek donanımını paylaşır. Bunu sağlamak için hypervisor, Bellek Sayfalama (Memory Paging) tekniklerini kullanır.
Nasıl Çalışır?
Bilgisayarın belleği sayfalara bölünür. Her sanal makine kendi belleğini kullanırken, hypervisor bu belleği farklı “sayfalar” haline getirir ve her sayfanın fiziksel bellekteki yerini yönetir. Bellek sayfalama, sanal makinelerin fiziksel bellek yerine “sanal bellek” kullanıyormuş gibi görünmesini sağlar.
Bir örnek olarak, sanal makinenin RAM ihtiyacını bir kitap rafındaki farklı bölmelere yerleştirilen kitaplar gibi düşünebiliriz. Fiziksel belleği farklı sayfa boyutlarına ayırdığımızda, her sayfa bir kitaba (veri bloğu) karşılık gelir. Bu kitapların fiziksel olarak nerede durduğunu bilmek, hypervisor’un işidir. Bir sanal makine bir veri bloğuna ihtiyaç duyduğunda, hypervisor doğru kitabı (sayfayı) getirir ve ona sunar. Sanal makine ise bu işlemi hiç fark etmeden çalışmaya devam eder.
Memory Ballooning:
Hypervisor, bellek kullanımını optimize etmek için “memory ballooning” adında bir teknik kullanır. Bu, bir sanal makineye ihtiyaç anında bellek vermek, ihtiyaç olmadığında ise belleği geri almak anlamına gelir. Fiziksel belleği en verimli şekilde paylaştırmak için kullanılan bu teknik, sanal makinelerin “şişip” bellek kullanmalarına, sonra da “sönüp” belleği geri vermelerine benzetilebilir.
I/O (Girdi/Çıktı) Sanallaştırması
Sanallaştırılmış ortamda, disk okuma/yazma, ağ trafiği ve diğer I/O işlemleri sanal makineler arasında bölünür. Her sanal makine kendi diskine ve ağ kartına sahipmiş gibi görünse de, aslında hepsi aynı fiziksel donanımı kullanır. I/O sanallaştırması, bu kaynakların paylaşımlı ve izole bir şekilde kullanılmasını sağlar.
Örnek: Disk Sanallaştırması
Disk sanallaştırmasında, bir hypervisor fiziksel bir disk üzerinde birçok sanal disk oluşturur. Bu sanal diskler, fiziksel diskin farklı bölümleri olarak görünür, ancak her sanal makine kendi bağımsız diskine erişiyormuş gibi çalışır.
Bu durumu fiziksel bir sabit diskin (hard disk) pizza dilimlerine bölünmesine benzetebiliriz. Her sanal makineye bir dilim verilir. Herkes kendi dilimini kullanıyor gibi görünür, ancak hepsi aynı pizzayı (fiziksel diski) paylaşır. Hypervisor bu dilimlerin adil bir şekilde dağıtılmasını ve bir sanal makinenin diğerine müdahale etmemesini sağlar.
SR-IOV Teknolojisi:
Bazı gelişmiş sanallaştırma teknolojilerinde, özellikle ağ kartlarında kullanılan SR-IOV (Single Root I/O Virtualization), fiziksel ağ kartını birden fazla sanal makineye bölerek her bir sanal makinenin kendi özel ağ kartı varmış gibi çalışmasını sağlar. Bu, I/O işlemlerinin hızlanmasını ve daha az gecikme yaşanmasını sağlar. Fiziksel donanımı bölerek, her sanal makineye bir ağ kartının (NIC) bir kısmı atanır. Yani her sanal makine fiziksel olarak paylaşılan bir kartı bağımsız bir kart gibi kullanır.
Sanallaştırmada Güvenlik: İzolasyon
Sanallaştırmanın en büyük avantajlarından biri, her sanal makinenin birbirinden tamamen izole edilmesidir. Bu izolasyon, güvenlik açısından büyük avantajlar sağlar. Bir sanal makinedeki güvenlik açığı, diğer sanal makineleri etkilemez. Bu izolasyonu sağlayan tekniklerden biri donanım destekli sanallaştırma (hardware-assisted virtualization)teknolojileridir. Intel’in VT-x ve AMD’nin AMD-V teknolojileri, fiziksel donanımda yerleşik olan sanallaştırma destekleri sunar.
Donanım Destekli Sanallaştırma:
Normalde sanallaştırma yazılımla yapılırdı, fakat bu işlem CPU’ya oldukça fazla yük bindirirdi. Intel VT-x veya AMD-V gibi teknolojiler, CPU’nun doğrudan sanallaştırmayı destekleyerek hypervisor’un yükünü hafifletmesini sağlar. Bu, hypervisor’un daha hızlı çalışmasını ve sanal makinelerin daha iyi performans göstermesini sağlar.
Hypervisor Mimarisi (Type 1 ve Type 2 Hypervisor)
Sanallaştırma sürecinde, fiziksel donanımı sanal makineler arasında paylaştıran ve yöneten yazılım katmanına hypervisordenir. Hypervisor’lar iki temel türe ayrılır:
a. Type 1 Hypervisor (Bare-metal Hypervisor):
Type 1 hypervisor’lar doğrudan fiziksel donanım üzerinde çalışır. Bu tür hypervisor’lar, işletim sistemi olmadan sanal makineleri yönetir. Fiziksel donanıma direkt erişim sağladıkları için genellikle çok daha hızlı ve performanslıdırlar. Örnekler:
- VMware ESXi
- Microsoft Hyper-V
- Xen
Bunu, bir fabrika yöneticisinin doğrudan üretim hattını yönetmesine benzetebiliriz. Fabrikadaki makineler (donanım) ve işçiler (sanal makineler) bu yöneticinin talimatlarına göre çalışır.
b. Type 2 Hypervisor (Hosted Hypervisor):
Type 2 hypervisor’lar ise mevcut bir işletim sistemi üzerinde çalışır. Bu tür hypervisor’lar, işletim sisteminin sunduğu kaynakları kullanır ve sanal makineleri bu işletim sistemi aracılığıyla yönetir. Daha az performans gerektiren senaryolarda veya masaüstü sanallaştırmada kullanılır. Örnekler:
- VMware Workstation
- Oracle VirtualBox
Bunu da, bir ofiste çalışan kişinin masasında küçük bir sanal ofis kurmasına benzetebiliriz. Çalışan kişi (hypervisor), bu sanal ofiste (sanal makinelerde) farklı görevleri yerine getirir, ancak bunlar gerçek ofisin bir parçasıdır (işletim sistemi).
Bir yanıt yazın