Po co mi to?
Wiele razy miałem do czynienia z serwerami na których działało kilka/kilkanaście usług równocześnie, np. Apache (kilka stronek, webmail, phpmyadmin, itp), Postfix/Exim (poczta i żeby było fajnie to na kontach systemowych), Samba (jakieś zasoby dla pracowników), MySQL (baza dla stronek), PostgreSQL (bo jedna stronka potrzebowała), itd…. Przy takiej konfiguracji pomijane są kwestie separacji usług zewnętrznych/wewnętrznych – no ale firma/instytucja mała nie ma sensu kasy na 3 kolejne serwery wydawać skoro działa….
Taka konfiguracja nie jest zbyt bezpieczna i ma wiele wad:
- ciężko backupować tak duży system w postaci obrazów, a odzyskiwanie z backupów całości będzie trwać wieki,
- słaba separacja usług ułatwia ataki na zasoby wewnętrzne (np. dziura w stronie może pozwolić na dostęp do plików z Samby),
- trudno rozgraniczyć zasoby sprzętowe (procesor, pamięć) konkretnym usługom,
- trudno jest migrować usługi na inne serwery.
Wirtualizacja pozwala na zminimalizowanie tych problemów:
- backupować można pojedyncze usługi (działające na różnych maszynach wirtualnych) np. z pomocą snapshotów z minimalnym czasem przerwy w działaniu,
- oddzielenie usług w osobnych maszynach wirtualnych pozwala „zamknąć” napastnika w przypadku kompromitacji którejś z usług (choć zdarzały się błędy w implementacji maszyn wirtualnych pozwalające „wyskoczyć” z wirtualki),
- możemy przydzielać pamięć i konkretne rdzenie procesora danym maszynom wirtualnym,
- live migration pozwala w locie przenieść maszynę wirtualną na inny serwer.
Xen jest szczególnie dobrym wyborem jeżeli zamierzamy wirtualizować systemy Linux’owe. Można je uruchamiać w trybie para-wirtualizacji, która w mniejszym stopniu niż pełna wirtualizacja obciąża CPU.
W trybie pełnej wirtualizacji można zainstalować praktycznie dowolny system (również Windows) choć jest to tryb mniej wydajny.
Czytaj dalej