Zalety i wady wirtualnych I/O

0

Hypervisor kontrolujący maszyny wirtualne ma skomplikowane zadanie do wykonania – musi stworzyć dla każdego systemu operacyjnego wirtualne środowisko wyglądające jak prawdziwy komputer. W rzeczywistości wszystkie systemy operacyjne współdzielą komponenty większego serwera, w tym interfejsy I/O.

W przypadku wirtualnej pamięci RAM trzeba utrzymywać tablicę, która mapuje pamięć wirtualnych maszyn na pamięć fizyczną serwera. W większości przypadków zarządzanie tą tablicą należy do hypervisora. Jednak w nowych serwera montuje się już procesory z funkcjami wsparcia wirtualizacji – wtedy tablicą alokacji pamięci zarządza procesor, co poprawia wydajność.

Zupełnie inną historią są operacje wejścia/wyjścia. Kiedy system operacyjny wysyła dane poza własne środowisko, musi te dane przekazać do urządzenia, które potrafi komunikować się ze światem zewnętrznym. Tym urządzeniem jest z reguły karta sieciowa lub karta HBA. Niezależnie, jaka jest to karta, hypervisor musi udostępniać jedno urządzenie fizyczne wielu systemom operacyjnym, z których każdy je zaprojektowany z założeniem, że ścieżka I/O jest do jego wyłącznej dyspozycji.

Początkowo wydawało się, że jest to problem podobny do zarządzania pamięcią. Ogólnie, systemy operacyjne obsługują operacje I/O, wykorzystując DMA (w celu bezpośredniego adresowania pamięci). Z kolei odbieranie danych polega na monitorowaniu określonych lokalizacji w pamięci i przekazywaniu odebranych danych do procesu, którego ich oczekuje. Zadaniem hypervisora jest inspekcja odbieranych danych w celu identyfikacji procesu i przekazania tych danych do właściwej maszyny wirtualnej.

Proces obsługi operacji I/O różni się w szczegółach w zależności od rozwiązania do wirtualizacji. W przypadku IBM do obsługi operacji I/O jest przeznaczona oddzielna partycja. Ta partycja ma dwie podstawowe funkcje: obsługę komunikacji sieciowej i dostęp do macierzy dyskowych. W przypadku pamięci masowych system operacyjny pełni rolę warstwy wirtualizacji, która umożliwi dostęp do dowolnego systemu pamięci masowej, począwszy od dysków podłączonych bezpośrednio do serwera, a skończywszy na sieci SAN. We wszystkich tych przypadkach pamięć masowa jest udostępniania maszynie wirtualnej jako standardowy dysk SCSI. Takie rozwiązanie umożliwia współdzielenie adapterów sieciowych i urządzeń. Co istotne, każdy system operacyjny wymaga dwóch urządzeń: karty sieciowej Ethernet i karty HBA.

Podejście VMware
Oprogramowanie VMware inaczej niż IBM obsługuje operacje I/O. W tym przypadku nie jest tworzona oddzielna partycja, lecz sam hypervisora przejmuje jej rolę. Maszyny wirtualne mają przydzielone wirtualne karty sieciowe lub zwirtualizowane sterowniki dla niektórych modeli kart sieciowych. Oprogramowania VMware oferuje także wirtualną kartę sieciową VMXnet. Kiedy urządzenie chce uzyskać dostęp do fizycznego sprzętu, wszystkie odwołania są przechwytywane przez hypervisor, który umieszcza te żądania w stosie hypervisora. Hypervisor zarządza kolejką żądań, które są realizowane przez sterownik urządzenia fizycznego.

Oczywiście cały proces umieszczania w kolejce odczytywanych i zapisywanych danych, a następnie translacji ich do sterownika, który następnie przesyła je do urządzenia fizycznego ma wpływ na wydajność. Dlatego producenci pracują nad uproszczeniem tego procesu.

VMware rozwija technologię VM Direct Path, która umożliwi maszynom wirtualnym bezpośredni dostęp do fizycznego sprzętu. Funkcja VM Direct Path jest wbudowana w VMware vSphere, ale wciąż jest to wczesna wersja, która zawiera różne ograniczenia, np. w przypadku maszyn korzystających z VM Direct Path nie można stosować VMotion.

Maszyna wirtualna może bezpośrednio zapisywać żądania do kolejki, ale jest to możliwe tylko pod warunkiem, że przygotowane są na to procesory – muszą być wyposażone w dodatkowe mechanizmy ochronne. Jest to konieczne, ponieważ system operacyjny w wirtualnej maszynie zaczyna komunikować się bezpośrednio ze sprzętem i wykorzystywać kontroler DMA.

Na pierwszy rzut oka zarządzanie operacjami I/O wirtualnych maszyn może wydawać się proste, jednak w rzeczywistości takie nie jest. Przede wszystkim dlatego, że ruch sieciowy (Ethernet) i komunikacja z macierzami dyskowymi (Fibre Channel) ma inną charakterystykę. Przykładowo, sieć Ethernet transmituje pakiety danych pochodzące z różnych urządzeń. Pakiety te są przesyłane wspólnym łączem i sortowane na drugim końcu połączenia. Natomiast w przypadku pamięci masowych wykorzystuje się bloki danych i zakłada się, że urządzenie odbiera je wszystkie. Sytuację komplikuje wykorzystanie takich protokołów, jak iSCSI, który przesyłane bloki danych kapsułkowane w pakietach IP.

iSCSI umożliwia przepuszczanie komunikacji z pamięciami masowymi przez kartę Ethernet. To pozwala puszczać ruch sieciowy i dane wspólnym kablem Ethernet. Wtedy wszystkie maszyny wirtualne współdzielą jedno łącze. To może doprowadzić do przeciążenia karty sieciowej i przełączników Ethernet.

Ruch iSCSI powinien wykorzystywać oddzielną sieć i oddzielną infrastrukturę w zwirtualizowanym środowisku. Co więcej, najlepiej jest umieszczać wirtualne maszyny, które muszą się ze sobą intensywnie komunikować, na jednym serwerze fizycznym. Wiele technologii. Jest wiele technologii, które mogą skorzystać na komunikacji bezpośrednio pomiędzy maszynami wirtualnymi z pominięciem infrastruktury sieciowej. W ten sposób ruch, który odbywałbym się pomiędzy serwerem a siecią SAN, można by zamknąć w jednym serwerze fizycznym.

Operacje I/O, szczególnie dotyczące dostępu do pamięci masowych, komplikują się w związku z koniecznością tworzenia backupu. Przesyłanie dużych ilości danych może skutecznie zapchać sieć. Na szczęście, przy prawidłowym planowaniu zadań backupu i innego przewidywalnego ruchu sieciowego można uniknąć tego problemu. Większość platform wirtualizacji ma własne mechanizmy tworzenia kopii zapasowych, ale zaplanowanie zadań backupu jest skomplikowanym zadaniem, ponieważ w grę wchodzi wiele czynników i parametrów, które można skonfigurować.

Podsumowując, operacje I/O maszyn wirtualnych przypominają skomplikowany system połączeń. Jeśli jednocześnie zacznie się ruch na wszystkich połączeniach, z pewnością dojdzie do przeciążenia. Zadaniem hypervisora lub innego dedykowanego elementu jest zapewnienie, żeby przepływy odbywały się w uporządkowany sposób, żeby uniknąć przeciążeń i umożliwić komunikację bez nadmiernych opóźnień.

PODZIEL SIĘ

BRAK KOMENTARZY

ZOSTAW ODPOWIEDŹ