Wirtualizacja

Technologia tworzenia wirtualnych wersji zasobów (serwerów, dysków, sieci) na jednym fizycznym sprzęcie. Podstawa działania chmury i centrów danych.

Wirtualizacja to technika, która pozwala uruchomić wiele odseparowanych, „udawanych” wersji zasobów IT — całych serwerów, dysków, kart sieciowych czy systemów operacyjnych — na jednym fizycznym kawałku sprzętu. Zamiast jednego serwera robiącego jedną rzecz dostajesz pulę zasobów, którą tniesz na kawałki i przydzielasz tak, jak akurat potrzebujesz. To fundament, na którym stoi cała chmura i każde nowoczesne centrum danych.

Sercem zabawy jest hypervisor (zwany też VMM, Virtual Machine Monitor) — warstwa oprogramowania, która rozdziela fizyczny procesor, RAM i dyski pomiędzy maszyny wirtualne (VM). Każda VM myśli, że ma sprzęt na wyłączność, a w rzeczywistości grzecznie dzieli się nim z sąsiadami. Rozróżnia się hypervisory typu 1 (bare-metal, działają bezpośrednio na sprzęcie — np. VMware ESXi, KVM, Microsoft Hyper-V) i typu 2 (działają na zwykłym systemie operacyjnym — np. VirtualBox czy VMware Workstation na Twoim laptopie).

Po co to wszystko? Bo jeden mocny serwer fizyczny stojący na 10% obciążenia to marnotrawstwo. Wirtualizacja podnosi wykorzystanie sprzętu, pozwala w sekundy postawić lub skasować środowisko testowe, robić snapshoty przed ryzykowną aktualizacją i migrować działające maszyny między hostami bez przestoju. Bez tego nie byłoby AWS EC2, Azure ani „postaw mi serwer jednym kliknięciem”.

Przykład z praktyki

Załóżmy, że masz fizyczny host z zainstalowanym KVM na Linuksie. Nową maszynę wirtualną z Ubuntu odpalisz np. tak:

virt-install --name test-vm --ram 4096 --vcpus 2 --disk size=20 --cdrom ubuntu.iso

Listę działających VM podejrzysz przez virsh list --all. W kilka minut masz odizolowane środowisko, które możesz zepsuć do woli, a potem skasować jednym virsh destroy — bez dotykania reszty serwera.

Na co uważać

Najczęstszy mit: „wirtualizacja to to samo co konteneryzacja”. Nie. VM wirtualizuje cały sprzęt i ma własny system operacyjny (cięższa, wolniej startuje), a kontener (Docker) współdzieli jądro hosta i izoluje tylko procesy (lżejszy, sekundowy start). Drugi błąd: overprovisioning — przydzielisz VM-om więcej RAM-u niż masz fizycznie i przy szczycie obciążenia wszystko zaczyna mielić. Pamiętaj też, że gęste upakowanie maszyn na jednym hoście oznacza pojedynczy punkt awarii — pada host, padają wszystkie VM naraz.

Pojęcia powiązane: hypervisor, maszyna wirtualna (VM), konteneryzacja i Docker, chmura obliczeniowa (IaaS), KVM, VMware, Hyper-V, snapshot, bare-metal.