Spis treści
Czy wiesz, że mając komputer z MacOS, nie jesteś ograniczony do korzystania jedynie z jabłkowego systemu operacyjnego? Na swoim komputerze lub w chmurze możesz uruchomić maszynę wirtualną z dowolnym systemem, a na niej – dowolną aplikację.
Co to jest maszyna witrualna?
Maszyna wirtualna (virtual machine, w skrócie VM), mówiąc najprościej, jest to komputer składający się jedynie z warstwy oprogramowania. Możesz na nim uruchomić dowolny program lub aplikację, którą normalnie uruchomiłbyś na urządzeniu – laptopie czy serwerze. Podobnie jak fizyczny komputer, maszyna wirtualna również posiada system operacyjny (na przykład Windows czy Linux), przestrzeń na przechowywanie plików, możliwości łączenia i przesyłania danych, ustawienia i opcje konfiguracji. Jest w pełni odizolowana od innych maszyn wirtualnych (guest) działających na tym samym fizycznym urządzeniu (host).
W jaki sposób działa maszyna wirtualna?
Maszyny wirtualne umożliwiają jednoczesne działanie wielu różnych systemów operacyjnych na jednym komputerze, na przykład uruchomienie systemu Linux na laptopie z oprogramowaniem MacOS. Każdy system operacyjny działa w taki sposób, jak system operacyjny lub aplikacja działająca bezpośrednio na urządzeniu fizycznym.
VM to środowisko, które działa jako wirtualny system komputerowy z własnym procesorem, pamięcią, interfejsem sieciowym i pamięcią masową. Maszyna wirtualna jest utworzona na fizycznym urządzeniu – na przykład serwerze, komputerze czy laptopie. Na tym samym urządzeniu może istnieć wiele maszyn, a każda z nich jest odizolowana od systemu oraz od pozostałych VMs.
Oprogramowanie, zwane hypervizor, oddziela zasoby maszyny od sprzętu i odpowiednio nimi dysponuje, by mogły być używane przez maszynę wirtualną. Takie fizyczne maszyny, wyposażone w hypervizora, są nazywane hostami. Natomiast maszyny wirtualne, korzystające z zasobów to “goście” – guests.
Hypervizor traktuje zasoby obliczeniowe – takie jak procesor, pamięć RAM, przestrzeń dyskową – jako pulę, którą może rozdzielać pomiędzy istniejącymi lub nowymi maszynami wirtualnymi, czyli guestami. W razie potrzeby zasoby są dzielone na partycje ze środowiska fizycznego na maszyny wirtualne. Gdy maszyna wirtualna jest uruchomiona, a użytkownik lub program wyda instrukcję wymagającą dodatkowych zasobów ze środowiska fizycznego, hypervizor przekazuje żądanie zasobów systemu fizycznego tak, aby system operacyjny i aplikacje guestów miały dostęp do współdzielonej puli zasobów fizycznych.
Do czego używa się maszyn wirtualnych?
Maszyny wirtualne odgrywają obecnie dużą rolę w obszarze tworzenia aplikacji, narzędzi czy innych produktów cyfrowych, także w modelu on-premise.
Najczęstszym sposobem użycia VMs jest tworzenie infrastruktury serwerowej. Utworzone na fizycznych serwerach maszyny wirtualne dysponują zasobami i zapewniają bardziej elastyczne skalowanie w górę i w dół, w zależności od zapotrzebowania.
Pozwalają utworzyć środowisko, które zachowuje się jak oddzielny, niezależny komputer. Taki komputer uruchamia się w aplikacji desktopowej lub za pośrednictwem przeglądarki internetowej. VMs pozwalają utworzyć odizolowane środowisko, które można użyć do testowania czy rozwijania aplikacji lub poszczególnych funkcjonalności.
Maszyny wirtualne wykorzystuje się też do uruchamiania zadań, które mogłyby być niebezpieczne dla fizycznego komputera – na przykład uzyskiwanie dostępu do zainfekowanych plików czy prowadzenie testów systemu operacyjnego. Oprogramowanie guesta, z którego zbudowana jest maszyna wirtualna, nie wpływa w żaden sposób na oprogramowanie hosta.
Ponieważ maszyny wirtualne można łatwo wyłączać i włączać, migrować czy adaptować, zapewniają duże wsparcie w obszarze prac DevOps. VMs ułatwiają też tworzenie środowiska hybrydowego, łączącego fizyczną infrastrukturę z wirtualnymi zasobami, również znajdującymi w chmurze.
Maszyny wirtualne można wykorzystać też jako element planu Disaster Recovery. Replikowanie aplikacji w środowisku chmurowym z użyciem VMs pozwala utworzyć dodatkową warstwę bezpieczeństwa, zapewniającą dostępność i ciągłość działania aplikacji po przełączeniu na zasoby wirtualne. Ponadto zasoby i dane mogą być nieustannie aktualizowane w środowisku chmurowym do bieżącej wersji głównego systemu.
Zalety maszyn wirtualnych
- Maszyny wirtualne pozwalają w łatwy i relatywnie niedrogi sposób tworzyć proof of concept czy aktualizować produkt w odizolowanym środowisku, co pozwala przeprowadzić testy przed wdrożeniem funkcjonalności na wersję produkcyjną.
- Konsolidacja maszyn wirtualnych (łączenie wielu niedużych, rozproszonych obciążeń w jeden komputer) pozwala usprawnić prace utrzymaniowe. Czas, dotychczas poświęcany na obsługę rozproszonych obciążeń, można przeznaczyć na rozwój.
- Konsolidacja przekłada się też na mniejsze zużycie energii elektrycznej oraz minimalizuje ryzyko przerwy w działaniu infrastruktury.
- Maszyny wirtualne mogą być optymalnym finansowo sposobem na hostowanie starszych elementów aplikacji bez konieczności prowadzenia ich refaktoryzacji, dostosowania pod nowe środowisko i prowadzenia migracji. Z czasem, jak fizyczna infrastruktura będzie się starzeć, wirtualizacja pozwoli utrzymać odpowiedni poziom wydajności. Administratorzy będą mogli uruchamiać nowsze wersje oprogramowania, mając też możliwość dostępu do starszej wersji.
- VMs, jako element planu odzyskiwania po awarii, pozwalają utrzymać wysoką dostępność i ciągłość działania aplikacji, nawet gdy główna infrastruktura ulegnie całkowitemu wyłączeniu.
Maszyny wirtualne w chmurze Google
W przypadku chmury publicznej Google Cloud Platform maszyny wirtualne są uruchamiane w chmurze. Chmura Google to sieć centrów danych i serwerów, na których znajdują się oprogramowania równoważące zasoby (hypervizor). Używając GCP, nie musisz posiadać żadnych własnych maszyn fizycznych – jedynie urządzenie z połączeniem do internetu. Z poziomu przeglądarki internetowej i graficznego UI konsoli chmurowej możesz uruchamiać i zarządzać maszynami wirtualnymi o dowolnej specyfikacji, ulokowanych w dowolnym miejscu na ziemi.
Czytaj też: Compute Engine – maszyny wirtualne w chmurze Google