Bilişimde Sanallaştırmanın kesin bir tanımı yoktur. Sanallaştırma (virtualization) genel itibari ile bilgisayar kaynaklarının (resource) kullanıcılardan soyutlanması (abstraction) anlamına gelir. Bunu yapmak için kullanılan metodlar bilgisayar kaynaklarının paylaştırılmasını veya birleştirilmesini sağlar. Sanallaştırmanın ilk hedefi kullanıcıya bir soyutlama tabakası sunarak kullanıcıyı kaynaklardan soyutlamaktır; böylece kullanıcı ve kaynaklar arasına bir mantıki katman eklenmiş olur.

– 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.

Sanal İşletim Sistem Ortamları

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ı (runtime environment) oluşturulur. Bu işlemde ayrıca bir İşletim Sistemi daha çalıştırılmaz; bu nedenle 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 alt kümesidirler. Bu yaklaşımın artısı, misafir sistemin ev sahibi ile iyi bütünleşmesidir; eksisi ise konteynerlerin kendisidir. Yani bu konteynerlerden bir sürücü veya çekirdek modülü yüklemek mümkün değildir. İşletim sistemi konteyner örnekleri; 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 (MIB, Sürücüler, RAM v.b.) 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 sisteminin kendi çekirdeği ve yazılımları ile birlikte çalışabilmesidir.

Donanım Emülasyonu (veya yanlış olarak Full Virtualization diye de adlandırılır)

Sanal makine tüm donanımı taklit ederek bir işletim sistemini farklı bir MIB de çalıştirabilir. Tamamen yazılıma bağlı bu yaklaşımın en büyük eksisi yazılımla taklit edilen donanım gerek fiziki donanımdan çok daha yavaş olmasından dolayı gelen misafir işletim sisteminin genel itibari ile bir gerçek donanıma sahip bir işletim sisteminden çok daha yavaş çalışmasıdır. Örnekler; Bochs, Microsoft Virtual PC’nin PPC sürümü ve Linux KVM.

Donanım Sanallaştırması (Native Virtualization, Full Virtualization)

Sanal makine misafir işletim sistemine fiziki donanımın sadece belirli kısımlarını sanal donanım olarak sunar. Bu yaklaşımla değiştirilmemiş misafir işletim sistemini soyutlanmış bir ortamda çalıştırmak mümkün olur. Bu uygulamada gereksinim olarak misafir işletim sistemini ev sahibinin MIB’sini desteklemesi gerekir. Mesela ev sahibi i386 işlemcisine sahip ise misafirin de i386 işlemcisini desteklemesi gerekir. Örnekler; Hyper-V, VMware, Microsoft Virtual PC, Linux KVM vb.

Yazılım Sanallaştırması

Yazılım sanallaştırması (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şturmakta ve bu ortamda tüm registry kayıtları, dosyalar ve diğer birleşen unsurlar yer alır. Bu sanal ortam yazılım ve işletim sistemi arasında bir tampon görevi yaparak başka yazılım veya işletim sistemleri ile çarpışmaları önler. Örnekler; Microsoft Application Virtualization, Citrix Application Streaming, VMware ThinApp, Thinstall vb.

– 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.