Sanallaştırma (bilişim)

Yazılım bazlı Sanallaştırma

Yazılım bazlı Sanallaştırma farklı kullanım alanları için kullanılabilir. Mesela bir işletim sistemini (İS) veya bir kullanıcı yazılımını taklit (simulation) etmek için.

İS Konteynerleri ile İS Sanallaştırması

Bu sanallaştırma türünde bir yazılıma kendisine ait bir kapalı bir konteyner ('jail') içinde eksiksiz (sanal) bir çalıştırma ortamı (İngilizce runtime environment) oluşturulur. Bu işlemde ayriyetten bir İşletim Sistemi daha çalıştırılmaz ve bundan dolayı da ev sahibi (host) işletim sistemi haricinde bir işletim sistemi de çalıştırmak mümkün değildir. İşletim sistemi konteynerleri ev sahibi işletim sistemlerinin bir altkümesidirler. Bu yaklaşımın artısı misafir sistemin ev sahibi ile iyi bütünleşmesidir. Eksisi de konteynerlerin kendisidir, yani bu konteynerlerden bir sürücü veya çekirdek modülü yüklemek mümkün değildir. İşletim sistemi konteyner misalleri: Solaris/OpenSolaris de non-global Zones, Zoning, BSD jails, Mac-on-Linux, OpenVZ, Virtuozzo, Linux-VServer ve User Mode Linux

VMM veya Hypervisor ile sistem sanallaştırması

Virtual Machine Monitor (VMM) veya Hypervisor ile yapılan sanallaştırmada mevcut olan yerel (yani fiziki olarak mevcut donanım) kaynaklar akıllıca dağıtılır. Bu dağılım farklı şekillerde geçekleştirilebilir ve aşağıdaki kategorilere ayrılır. Bu işlemde her bir misafir sistemine tüm donanım unsurlarına sahip (MİB, Sürücüler, RAM v.s.) komple bir bilgisayar yansıtılır. Bu yaklaşımın artısı misafir işletim sistemlerinde (neredeyse) hiçbir değişiklik yapılmasına gerek kalmadan her bir işletim sistemi kendi çekirdeği ve yazılımları ile birlikte çalışabilmesidir.

Tip 1, native veya bare-metal hipervizörler

Bu hipervizörler, donanımı kontrol etmek ve konuk işletim sistemlerini yönetmek için doğrudan sunucunun donanımında çalışırlar. Bu nedenle, bazen bare metal hipervizörleri denir. IBM'in 1960'larda geliştirdiği ilk hipervizörler, native hipervizörlerdi..  Bunlara SIMMON test yazılımı ve CP/CMS işletim sistemi (IBM'in z/VM'nin selefi) dahil edildi. Modern eşdeğerler arasında AntsleO'lar, Xen, XCP-ng, SPARC için Oracle VM Sunucusu, x86 için Oracle VM Sunucusu, Microsoft Hyper-V, Xbox One sistem yazılımı ve VMware ESX/ESXi bulunur.

Tip 2 veya Hosted hipervizörler

Bu hipervizörler, diğer bilgisayar programlarında olduğu gibi geleneksel bir işletim sisteminde (OS) çalışır. Konuk işletim sistemi, ana bilgisayarda bir işlem olarak çalışır. Tip 2 hipervizörleri, konuk işletim sistemlerini ana bilgisayar işletim sisteminden soyutlar. VMware Workstation, VMware Player, VirtualBox, Mac için Parallels Desktop ve QEMU tip 2 hiper yönetici örnekleridir.
Bu iki tip arasındaki ayrım her zaman net değildir. Örneğin, Linux'un Çekirdek Tabanlı Sanal Makinesi (KVM) ve FreeBSD'nin BHyVe, ana bilgisayar işletim sistemini etkili bir tip 1 hiper yöneticiye dönüştüren çekirdek modülleri. Aynı zamanda, Linux dağıtımları ve FreeBSD hala genel amaçlı işletim sistemleri olduğundan, VM kaynakları için birbirleriyle rekabet eden uygulamalar, KVM ve bhyve de tip 2 hiper denetleyiciler olarak kategorize edilebilir.

Yazılım sanallaştırması

Yazılım sanallaştırmasında (application virtualization) kullanıcı veya sunucu yazılımlarının yerel sistemde yüklenmeden çalıştırılmasıdır. Bunun için sanallaştırılan yazılıma bir sanal ortam oluşturlulmakta ve bu ortamda tüm Registry-kayıtları, dosyalar ve diğer birleşen unsurlar içermektedir. Bu sanal ortam yazılım ve işletim sistemi arasında bir tampon görevini yaparak başka yazılım veya işletim sisteminle çarpışmaları önler. Misaller: Microsoft Application Virtualization, Citrix Application Streaming, VMware ThinApp, Thinstall v.s.

Donanım bazlı sanallaştırma

Bu sanallaştırma türünde donanımın tümü (mesela LPAR) veya bazı kısımları (mesela Merkezi işlem biriminde İntel-VT veya AMD-V) sanallaştırılabilir.

Anabilgisayar kökenleri

Tam sanallaştırma sağlayan ilk hipervizörler, Ocak 1967'de üretime başlayan ve IBM'in CP/CMS işletim sisteminin ilk versiyonu olan test aracı SIMMON ve IBM'in araştırma sistemi CP-40 idi. CP-40, sanallaştırmaya izin veren önemli bir özellik olan Dynamic Address Translation'ı desteklemek için IBM Cambridge Scientific Center'da değiştirilmiş bir S/360-40 üzerinde çalıştı. Bu süreden önce, bilgisayar donanımı yalnızca birden fazla kullanıcı uygulamasının aynı anda çalışmasına izin verecek kadar sanallaştırılmıştı (bkz. CTSS ve IBM M44/44X). CP-40 ile donanımın denetleyici durumu da sanallaştırılarak birden fazla işletim sisteminin aynı anda ayrı sanal makine bağlamlarında çalışmasına izin verildi.
Programcılar yakın zamanda, tam sanallaştırma yapabilen ilk üretim bilgisayarı olan IBM System/360-67 için CP-40'ı (CP-67 olarak) uyguladılar .IBM, bu makineyi ilk kez 1966'da gönderdi; sanal bellek için sayfa çeviri tablosu donanımı ve I/O ve interrupt işlemesi de dahil olmak üzere tüm çekirdek görevlerinin tam olarak sanallaştırılmasını sağlayan diğer teknikleri içeriyordu.(“Resmi” işletim sistemi, kötü niyetli TSS/360'ın tam sanallaştırma kullanmadığına dikkat edin.) Hem CP-40 hem de CP-67, 1967'de üretime başladı. CP/CMS ,IBM müşterilerine 1968'den 1970'lerin başlarına, desteksiz olarak kaynak kod biçiminde ulaşılabilirdi.
CP/CMS, IBM'in ana bilgisayarları için sağlam zaman paylaşımı sistemleri kurma girişiminin bir parçası oldu. Aynı anda birden fazla işletim sistemi çalıştırarak, hiper yönetici sistem sağlamlığını ve dengesini arttırdı: Bir işletim sistemi çökse bile, diğerleri kesintisiz çalışmaya devam ederdi. Aslında, bu bile işletim sistemlerinin beta veya deneysel sürümlerinin —yeni donanımlar için bile olsa— kararlı ana üretim sistemini tehlikeye atmadan ve maliyetli ek geliştirme sistemleri gerektirmeden konuşlandırılıp hata ayıklanmasına izin verdi.
IBM, 1970 yılında System/370 serisini herhangi bir sanallaştırma özelliği olmadan duyurdu, ancak Ağustos 1972 Gelişmiş İşlev duyurusunda sanal bellek desteği ekledi. Takip eden tüm sistemlerinde (zSeries hattı gibi tüm modern IBM anabilgisayarları, 1960'lar dönemi olan IBM S/360 hattıyla geriye dönük uyumluluğu koruyor) sanallaştırma özelliği mevcut. 1972 duyurusu, S/370 için CP/CMS'nin bir yeniden uygulaması olan VM/370'ı da içeriyordu. CP/CMS'den farklı olarak, IBM bu sürüm için destek sağladı (yine de birkaç sürüm için kaynak kod biçiminde dağıtılmış olmasına rağmen).VM, donanım arayüzlerinin sadece bazılarının değil, hepsinin sanallaştırıldığını vurgulayarak Sanal Makine anlamına gelir. Hem VM hem de CP/CMS, üniversiteler, kurumsal kullanıcılar ve zaman paylaşımı sağlayıcılarının yanı sıra IBM dahilinde erken kabul görmüş ve hızlı bir gelişim göstermişlerdir. Kullanıcılar, modern açık kaynaklı projelerde görülen trendleri öngörerek devam eden gelişimde aktif rol oynadılar.Bununla birlikte, bir dizi tartışmalı ve acı savaşta, zaman paylaşımı, IBM'in politik mücadelesiyle toplu işleme için kaybedilmiş ve VM, yıllar boyunca IBM'in "diğer" ana bilgisayar işletim sistemi olarak kaldı ve MVS'yi kaybetti. 2000'den itibaren z/VM ürünü olarak, örneğin zSeries Linux için bir platform olarak popülerlik ve desteğin yeniden dirilişini yaşadı.
Yukarıda belirtildiği gibi, VM kontrol programı, sanal bir makinede kullanılan DIAG ("Diagnose", opcode x'83 ') komutlarını arayarak alan bir hipervizör çağrısı işleyicisi içerir. Bu, dosya sistemi erişiminin ve diğer işlemlerin hızlı yoldan sanallaştırılmamış olarak yürütülmesini sağlar (DIAG, normal programlamada kullanılmayan modele bağlı ayrıcalıklı bir talimattır ve dolayısıyla sanallaştırılmaz). Bu nedenle "ana bilgisayar" işletim sistemine bir sinyal olarak kullanılabilir). CP/CMS sürüm 3.1'de ilk kez uygulandığında, DIAG'ın kullanımı, Sistem/360 Supervisor Call instruction (SVC) benzer olan ancak sistemin SVC'nin sanallaştırılmasını değiştirmeyi veya genişletmeyi gerektirmeyen bir işletim sistemi arayüzü sağladı.
1985 yılında IBM, mantıksal bölümleri (LPAR) yönetmek için PR/SM hipervizörünü tanıttı.