| Termin | Definicja |
|---|---|
| Nested Virtualization | Nested Virtualization to funkcja umożliwiająca uruchomienie hypervisora wewnątrz już wirtualizowanego systemu operacyjnego, przydatna w zaawansowanych scenariuszach testowych. Nested Virtualization – czym jest i do czego służyNested Virtualization, czyli wirtualizacja zagnieżdżona, polega na uruchomieniu kolejnej warstwy środowiska wirtualnego wewnątrz maszyny, która sama działa jako gość na innym systemie wirtualizacyjnym. W praktyce oznacza to, że fizyczny komputer udostępnia zasoby pierwszemu systemowi gospodarza, a ten przekazuje część możliwości procesora, pamięci operacyjnej, dysku i urządzeń sieciowych następnemu poziomowi. Dopiero w tak przygotowanym środowisku można uruchomić dodatkowe maszyny wirtualne albo narzędzia wymagające własnego wirtualizatora. Rozwiązanie stosuje się przede wszystkim do nauki administracji systemami, sprawdzania konfiguracji, odtwarzania określonych scenariuszy awarii oraz testowania oprogramowania w odizolowanych warunkach. Pozwala przygotować wielowarstwowe środowisko na jednym komputerze, bez konieczności przeznaczania osobnego urządzenia dla każdego poziomu. Dzięki temu możliwe jest badanie zachowania systemów gościnnych, ustawień sieciowych i mechanizmów izolacji w sposób ograniczający wpływ eksperymentów na główny system operacyjny. Wirtualizacja zagnieżdżona nie jest jednak prostym przełącznikiem zwiększającym wydajność. Każda kolejna warstwa musi otrzymać odpowiednio skonfigurowane zasoby, a część funkcji procesora i oprogramowania musi być dostępna zarówno dla warstwy nadrzędnej, jak i dla środowiska uruchamianego wewnątrz niej. Znaczenie mają między innymi obsługa sprzętowych rozszerzeń wirtualizacji, ustawienia firmware, rodzaj użytego wirtualizatora oraz zgodność systemów działających na poszczególnych poziomach. Jak działa zagnieżdżona wirtualizacja w praktyceW typowym układzie występują co najmniej trzy poziomy: komputer fizyczny, pierwszy system gościnny oraz kolejna maszyna wirtualna uruchomiona w obrębie tego systemu. Komputer fizyczny pełni rolę podstawowej platformy wykonawczej. Pierwszy wirtualizator przydziela zasoby systemowi pośredniemu, a ten musi następnie udostępnić mechanizmy potrzebne do uruchamiania dalszych gości. Dla systemu znajdującego się na najniższym poziomie cała infrastruktura może wyglądać jak zwykły komputer, chociaż w rzeczywistości jest emulowana lub przekazywana przez kilka warstw. Największą różnicę względem klasycznej wirtualizacji stanowi dodatkowa ścieżka obsługi instrukcji procesora, pamięci i urządzeń wejścia-wyjścia. Przy zwykłej maszynie wirtualnej system gościnny komunikuje się z jednym poziomem zarządzającym zasobami. W układzie zagnieżdżonym żądania przechodzą przez kolejny wirtualizator, co może zwiększać opóźnienia i obciążenie. Nie każda funkcja jest też przekazywana dalej w pełnym zakresie. Dotyczy to zwłaszcza niektórych rozszerzeń procesora, urządzeń wirtualnych, mechanizmów akceleracji grafiki i operacji związanych z pamięcią. Przed uruchomieniem takiego środowiska sprawdza się, czy w ustawieniach firmware włączono sprzętowe wsparcie wirtualizacji oraz czy pierwszy poziom nie blokuje przekazywania wymaganych cech procesora. Następnie należy przydzielić zasoby z zachowaniem rezerwy dla systemu nadrzędnego. Zbyt mała ilość pamięci lub przeciążenie dysku może sprawić, że problemy będą przypisywane błędnie samej funkcji Nested Virtualization, mimo że ich źródłem jest niewłaściwy podział zasobów. Ważne jest również rozróżnienie między pełną wirtualizacją sprzętową, emulacją urządzeń a rozwiązaniami wykorzystującymi kontenery. Kontener nie zawsze wymaga osobnego jądra systemu ani pełnego wirtualizatora, dlatego jego uruchomienie wewnątrz maszyny wirtualnej może przebiegać inaczej niż uruchomienie kolejnego kompletnego systemu. Dobór technologii powinien zależeć od celu testu, wymaganego stopnia izolacji i dostępnych zasobów sprzętowych. Typowe problemy, błędy i ograniczenia - Nested VirtualizationJednym z częstszych problemów jest brak możliwości uruchomienia drugiego poziomu wirtualizacji mimo poprawnie działającej pierwszej maszyny wirtualnej. Przyczyną może być wyłączona funkcja sprzętowa, niepełne przekazywanie cech procesora albo konfiguracja pierwszego wirtualizatora, która ukrywa wymagane instrukcje przed systemem pośrednim. Objawami bywają komunikaty o braku obsługi wirtualizacji, zatrzymanie startu gościa lub przejście do trybu, w którym dalszy wirtualizator działa wyłącznie programowo. Problemy może powodować również nadmierne obciążenie pamięci operacyjnej. Każdy działający system potrzebuje własnej przestrzeni dla jądra, usług, pamięci podręcznej i procesów użytkownika, a dodatkowa warstwa zwiększa zapotrzebowanie na pamięć. Gdy zasoby zostaną wyczerpane, pojawiają się spowolnienia, opóźnienia reakcji, intensywne korzystanie z pliku wymiany oraz niestabilność maszyn uruchomionych na najniższym poziomie. Podobne objawy mogą wynikać z ograniczeń dysku. Obrazy maszyn wirtualnych, pliki różnicowe, migawki i logi zapisują dane jednocześnie na kilku poziomach. Wąskie gardło może pojawić się nawet wtedy, gdy procesor pozostaje częściowo bezczynny. Szczególnej uwagi wymagają migawki, ponieważ ich nadmierna liczba utrudnia zarządzanie przestrzenią i może wydłużać operacje odczytu oraz zapisu. W środowiskach wielowarstwowych trudniej też ustalić źródło błędu sieciowego. Połączenie może być filtrowane przez ustawienia pierwszej maszyny, wirtualny przełącznik, zaporę systemu pośredniego i konfigurację najniższego gościa. Niewłaściwy tryb pracy interfejsu może uniemożliwić dostęp do sieci, ograniczyć komunikację między maszynami albo sprawić, że usługi będą widoczne tylko z jednego poziomu. Ograniczenia dotyczą także wydajności i funkcji dodatkowych. Niektóre operacje mogą działać wolniej, a część urządzeń nie będzie dostępna w taki sam sposób jak na komputerze fizycznym. Dotyczy to zwłaszcza akceleracji graficznej, przekazywania urządzeń, zaawansowanych funkcji debugowania oraz mechanizmów zależnych od konkretnego modelu procesora. Z tego powodu środowisko zagnieżdżone powinno być traktowane jako narzędzie testowe, a nie automatyczny zamiennik dedykowanej infrastruktury. W jakich sytuacjach warto oddać urządzenie do diagnozy - Nested VirtualizationDo serwisu warto zgłosić się wtedy, gdy Nested Virtualization nie uruchamia się mimo włączonych ustawień wirtualizacji, system zawiesza się podczas startu kolejnej maszyny, a także gdy po zmianie konfiguracji pojawiają się restarty, utrata dostępu do sieci lub nietypowe spadki wydajności. Weryfikacja może obejmować ustawienia firmware, stan systemu operacyjnego, sterowniki chipsetu, konfigurację pierwszego wirtualizatora, przydział pamięci i procesora oraz sposób przechowywania obrazów maszyn. Pomoc bywa szczególnie potrzebna, gdy nie wiadomo, czy problem dotyczy sprzętu, systemu nadrzędnego, środowiska pośredniego czy samej maszyny uruchamianej na najniższym poziomie. Przed diagnostyką warto zapisać komunikaty błędów, wskazać moment wystąpienia problemu i zanotować ostatnie zmiany w ustawieniach. Ułatwia to odtworzenie sytuacji oraz oddzielenie błędu konfiguracji od ograniczenia konkretnej platformy. W przypadku laptopa, który nie uruchamia poprawnie środowiska wirtualnego albo wykazuje niestabilność podczas pracy z kilkoma systemami, w Warszawskim Pogotowiu Komputerowym 24/7 wykonywana jest darmowa diagnoza LAPTOPA. Pozwala to sprawdzić podstawowy stan urządzenia i ustalić, czy przyczyną jest konfiguracja, brak zasobów, przegrzewanie, problem z nośnikiem danych czy usterka któregoś z podzespołów. Nie zaleca się wielokrotnego włączania i wyłączania przypadkowych opcji bez zapisania wcześniejszej konfiguracji. W środowisku wielowarstwowym jedna zmiana może wpłynąć na kilka systemów jednocześnie, a późniejsze odtworzenie poprawnych ustawień może być trudniejsze niż pierwotna diagnoza. Bezpieczniejsze jest przeprowadzenie zmian etapami, kontrolowanie obciążenia i testowanie pojedynczych elementów po każdej modyfikacji. |