Wirtualizacja

Baza na twardo, czyli jak „konsumować” Oracle

 Baza na twardo

Koszty oprogramowania Oracle spędzają sen z oczu wielu dyrektorom departamentów informatyki w Polsce. Poziomy cenowe ustalane przez strategów sprzedaży Oracle nie uwzględniają specyfiki biznesu w krajach słabiej rozwiniętych. Innymi słowy: nie jest tanio, a wręcz przerażająco drogo. Wystarczy wspomnieć, że katalogowy koszt jednej licencji bazy danych Oracle Enterprise Edition to 47 500 dolarów, do czego należy doliczyć koszty wsparcia w wysokości 10 450 dolarów rocznie. Jedna licencja Oracle opiewa tylko na jeden rdzeń procesorów POWER lub dwa rdzenie procesorów Xeon lub SPARC. Ile tych licencji trzeba ostatecznie zakupić? W przypadku maszyn fizycznych odpowiedź jest prosta: tyle, ile wynosi liczba rdzeni zainstalowanych w serwerze pomnożona przez odpowiedni współczynnik zależny od rodzaju procesora (tzw. core-factor). Koszty nie są może niskie, ale w miarę przewidywalne. W przypadku maszyn wirtualnych prostota znika, a w jej miejsce pojawia się labirynt warunków licencyjnych pełen potencjalnie kosztownych pułapek.

Moja firma niedawno zainwestowała w wirtualizację. Zakupiliśmy 4 nowe serwery, każdy z dwoma 10-rdzeniowymi procesorami Intel Xeon wraz z oprogramowaniem VMware vSphere ESX. Zwirtualizowaliśmy i skonsolidowaliśmy większość naszych systemów przez co obniżyliśmy koszty infrastruktury i administracji IT. Teraz chcemy przemigrować dwa środowiska Oracle pracujące na starych 2-procesorowych serwerach i powiedziano nam, że musimy wykupić licencje na wszystkie rdzenie znajdujące się pod kontrolą VMware vSphere. Zamiast posiadanych obecnie 4 licencji Oracle będziemy musieli zapłacić za wszystkie 80 rdzeni czyli potrzebujemy ich dziesięć razy tyle. Co więcej, dostawca oprogramowania twierdzi, że realizacja zgłoszenia serwisowego przez firmę Oracle może wymagać od nas odtworzenia problemu w systemie fizycznym. Dlaczego?

Tak drastyczny wzrost kosztów licencji i wprowadzenie dodatkowych ograniczeń w zakresie wsparcia serwisowego jest wynikiem polityki prowadzonej przez największe firmy z branży informatycznej, a Oracle jest tego wymownym przykładem. Podział na dostawców infrastruktury i oprogramowania powoli się zaciera. Duże korporacje IT starają się skompletować w swoim portfolio produkty pokrywające funkcjonalnością cały stos informatyczny: od urządzeń, poprzez hyperwizory, systemy operacyjne, bazy danych, warstwy pośrednie oraz aplikacje biznesowe. Wprowadzają przy tym zasady sprzedażowe, licencyjne, wsparcia i inne, których celem jest promowanie takiego jednolitego (pod względem producenta) środowiska informatycznego u klienta.

Łatwo też zgadywać, które firmy mają największe szanse w wyścigu o przejęcie serwerowni klientów klasy Enterprise. Są to te, które posiadają największy udział w rynku produktów z wyższych poziomów tego stosu informatycznego. Gdzie za parę lat zainstalowanych będzie większość baz Microsoft SQL Server? Jaka będzie dominująca platforma systemowa i wirtualizacyjna dla serwera aplikacyjnego JBoss? Gdzie klienci umieszczą oprogramowanie Oracle SOA Suite? Moim zdaniem, nie będzie to VMware vSphere, pomimo jego obecnej znaczącej przewagi technologicznej i rynkowej w obszarze wirtualizacji x86.


„Duże korporacje IT starają się skompletować w swoim portfolio produkty pokrywające funkcjonalnością cały stos informatyczny: od urządzeń, poprzez hyperwizory, systemy operacyjne, bazy danych, warstwy pośrednie oraz aplikacje biznesowe. Wprowadzają przy tym zasady sprzedażowe, licencyjne, wsparcia i inne, których celem jest promowanie jednolitego (pod względem producenta) środowiska informatycznego u klienta”


Zostawmy jednak politykę i przejdźmy do zagadnień technicznych. Oficjalne stanowisko Oracle w powyższej sprawie jest następujące: technologię VMware vSphere ESX zalicza do tzw. miękkiego partycjonowania, więc nie uznaje jej jako metody ograniczania kosztów licencji swojego oprogramowania. Tylko technologie zakwalifikowane jako tzw. twarde partycjonowanie – z wyłączonymi mechanizmami migracji „na gorąco” – umożliwiają wnoszenie opłat proporcjonalnych do mocy procesorów wykorzystywanych przez maszyny wirtualne. Jest ich całkiem sporo, m.in. IBM LPAR, HP Integrity VM, Fujitsu PPAR, Oracle VM for SPARC, Oracle Solaris Zones. Prawie wszystkie z nich są drogimi rozwiązaniami ze świata procesorów RISC. W przypadku platform x86 mamy do dyspozycji tylko dwa zgodne rozwiązania: kontenery systemu operacyjnego Solaris x86 (Solaris Zones) oraz produkt o nazwie Oracle VM Server for x86. Pierwszego nie będę omawiał ze względu na jego hermetyczność, wynikającą z przypisania do jednego systemu operacyjnego. Natomiast drugim warto się zainteresować, a przynajmniej wiedzieć, że istnieje i ma się coraz lepiej.

Oracle VM to rodzina produktów do wirtualizacji, w skład której wchodzi znany chyba wszystkim VirtualBox, a także Oracle VM for SPARC, zwany kiedyś Sun Logical Domains, oraz interesujący nas Oracle VM for x86. Ten ostatni (podobnie zresztą jak VirtualBox) dystrybuowany jest na zasadach open source i można go używać całkowicie za darmo, także do celów komercyjnych. Gdybyśmy potrzebowali wsparcia technicznego, wydamy 599 USD rocznie za wsparcie dla każdego wykorzystywanego serwera fizycznego (hyperwizora) z maksymalnie 2 procesorami albo 1199 USD, jeżeli nasze serwery posiadają więcej zapełnionych gniazd CPU. W tej cenie otrzymamy również wsparcie dla podstawowej konsoli administracyjnej o nazwie Oracle VM Manager, a także licencję uprawniającą do użycia oprogramowania Oracle Enterprise Manager Cloud Control z dodatkiem Oracle Virtualization Plugin. Ten ostatni komponent pozwala na bardziej rozbudowane zarządzenie i monitorowanie, a także utworzenie chmury prywatnej. Alternatywnie, ale w tej samej cenie, możemy używać Oracle VM Server pod kontrolą OpenStack w wersji Icehouse.

Przedstawione poziomy cenowe dla niewielkiej liczby maszyn fizycznych są zbliżone do najtańszych wersji VMware vSphere dostępnych w tzw. pakietach startowych, np. Essentials Plus Kit. Natomiast w przypadku większych instalacji przewaga cenowa Oracle VM nad produktem EMC staje się wyraźniejsza. Ta stosunkowo umiarkowana cena nie wynika tylko z potrzeby zachęcenia klientów do stosowania kompletu rozwiązań jednego producenta. Oracle VM Server for x86 to produkt oparty na otwartym projekcie Xen, będący też podstawą takich rozwiązań jak Citrix XenServer czy też Amazon Elastic Compute Cloud (EC2). Właściwie jest to prawie dokładnie ten znany wszystkim produkt open source w wersji 4.3 rozbudowany o dodatkowe funkcjonalności dostarczane przez Oracle.


„Oracle VM Server for x86 to produkt oparty na otwartym projekcie Xen, będący też podstawą takich rozwiązań jak Citrix XenServer czy też Amazon Elastic Compute Cloud (EC2). Najważniejsze cechy, które odróżniają go od wersji rozwijanej przez społeczność to: konsola administracyjna o nazwie Oracle VM Manager wraz z odpowiednimi agentami, klastrowy system plików OCFS2 pełniący rolę podobną do VMware VMFS, dodatkowe API umożliwiające integrację z innymi produktami Oracle, w tym z Enterprise Manager”


Najważniejsze cechy, które odróżniają go od wersji rozwijanej przez społeczność to: konsola administracyjna o nazwie Oracle VM Manager wraz z odpowiednimi agentami, klastrowy system plików OCFS2 pełniący rolę podobną do VMware VMFS, dodatkowe API umożliwiające integrację z innymi produktami Oracle, w tym z Enterprise Manager, a także bogaty zbiór udostępnianych przez Oracle szablonów z maszynami wirtualnymi zawierającymi gotowe do natychmiastowego użycia aplikacje tej firmy. Z drugiej strony, niektóre elementy systemu Xen dostępne w wersji społecznościowej nie są z kolei wspierane przez Oracle, a korzystanie z części z nich bywa wręcz niemożliwe – z powodu pominięcia ich przy kompilacji lub braku zgodności z konsolą VM Manager. Poniższa tabela zawiera porównanie kilku podstawowych cech Oracle VM 3.3 Server i VMware vSphere 6.0:

Tabela 1. Porównanie podstawowych cech Oracle VM 3.3 Server i VMware vSphere 6.0
Tabela 1. Porównanie podstawowych cech Oracle VM 3.3 Server i VMware vSphere 6.0

Rozbudowując tę tabelę o kolejne punkty szybko zauważymy, że Oracle VM for x86 zapewnia nam tylko podstawowe funkcje wirtualizatora i dosyć blado wypada w porównaniu z liderem tej technologii. W praktyce najwięcej rozczarowań przynosi brak gotowego rozwiązania do backupu maszyn wirtualnych. Co prawda, Oracle zaimplementował w systemie plików OCFS2 mechanizm REFLINK pełniący funkcję copy-on-write, ale niestety nie udostępnia go w postaci API dla backupu lub replikacji, jak to robi VMware. W związku z tym, na rynku nie ma produktów archiwizujących, które w prosty i naturalny sposób integrują się z Oracle VM.

W oficjalnych dokumentach Oracle zaleca więc tradycyjny sposób tworzenia kopii zapasowych maszyn wirtualnych, tzn. instalację klientów backupu w każdej domenie. Podobne ograniczenia dotyczą funkcji Disaster Recovery, które trzeba budować w tradycyjnym modelu pomiędzy maszynami wirtualnymi znajdującymi się w odseparowanych geograficznie lokalizacjach. Klienci narzekają także na zbyt skromny interfejs VM Managera, w którym brakuje przede wszystkim możliwości delegowania uprawnień użytkowników z użyciem ról oraz grupowania maszyn wirtualnych. Przydałoby się także wsparcie dla NPIV (ang. N_Port ID Virtualization – wirtualizacja portów w sieciach Fibre Channel) i wirtualnych napędów taśmowych, albo, zamiast tego, oficjalne wsparcie dla technologii SR-IOV (ang. Single Root I/O Virtualization), która umożliwia współdzielenie jednego urządzenia PCIe przez wiele maszyn wirtualnych. To, że wspiera ją Xen nie wystarczy, bowiem nie jest ona wspierana przez konsolę Oracle VM Manager – przynajmniej na razie.


„Oracle VM for x86 zapewnia nam tylko podstawowe funkcje wirtualizatora i dosyć blado wypada w porównaniu z liderem tej technologii. W praktyce najwięcej rozczarowań przynosi brak gotowego rozwiązania do backupu maszyn wirtualnych. Co prawda, Oracle zaimplementował w systemie plików OCFS2 mechanizm REFLINK pełniący funkcję copy-on-write, ale niestety nie udostępnia go w postaci API dla backupu lub replikacji, jak to robi VMware. W związku z tym, na rynku nie ma produktów archiwizujących, które w prosty i naturalny sposób integrują się z Oracle VM (…). Podobne ograniczenia dotyczą funkcji Disaster Recovery”


Oczywiście istnieją metody obejścia wielu z tych ograniczeń. Klienci posiadający macierze dyskowe, których producenci uczestniczą w programie Oracle VM Storage Connect Plugins mogą je zintegrować z konsolą VM Managera, i w ten sposób uzyskać możliwość tworzenia migawek (tutaj klonów) maszyn wirtualnych z menu tej konsoli. Z kolei instalacja oprogramowania Oracle Enterprise Manager Cloud Control i podłączenie do niego naszej farmy serwerów Oracle VM for x86, pozwala zarządzać nią i monitorować ją w znacznie szerszym zakresie.

Takie podejście stosuje również sam Oracle, który zaimplementował Oracle VM for x86 w wielu swoich produktach klasy Engineered Systems. Już nie tylko Oracle Exalogic Elastic Cloud, Oracle Virtual Compute Appliance, czy też Oracle Database Appliance posiadają wbudowany hyperwizor Oracle VM for x86, ale pojawił się on ostatnio także w najnowszej wersji flagowego produktu Oracle czyli w Exadata Database Machine X5. Celem tego zabiegu jest ułatwienie konsolidacji oraz obniżenie ceny pierwotnego zakupu poprzez wprowadzenie twardego modelu licencjonowania do tych produktów.

W tych zintegrowanych systemach informatycznych Oracle VM nie ustępuje tak bardzo konkurencji pod względem funkcjonalnym. Producent zadbał o backup i replikację danych, dodając w standardzie lub jako opcja swoją macierz ZFS Storage ZS-3. Kluczem do uzyskania maksymalnej wydajności jest zastosowanie przełączników i kart InfiniBand, maszyny wirtualne komunikują się z pamięciami masowymi bezpośrednio, wykorzystując technologię SR-IOV. Pomijając te różnice implementacyjne pomiędzy produktem dostępnym oddzielnie i w jednym z powyższych zestawów, jest to dowód na to, iż Oracle VM for x86, mimo swoich ograniczeń, sprawdza się w największych instalacjach oprogramowania Oracle na świecie. Potwierdza to też Gartner, który w swoim „magicznym kwadrancie” wirtualizacji umieszcza Oracle VM na trzecim miejscu pod względem „skuteczności rynkowej”.

Przy okazji omówienia Oracle VM warto wspomnieć o systemie Oracle Linux. Łącząc te produkty w jednej instalacji otrzymujemy zestaw będący referencyjną podstawą dla wdrożeń baz danych oraz aplikacji biznesowych firmy Oracle. Producent zachęca do tego na kilka sposobów. Przede wszystkim, Oracle Linux dostarczany jest w takim samym modelu jak Oracle VM for x86, a więc jest dostępny za darmo – nawet do zastosowań komercyjnych. Za pełne wsparcie techniczne zapłacimy 1399 USD lub 2299 USD rocznie. Wyższa cena dotyczy instalacji na serwerach posiadających więcej niż dwa procesory. W ramach tej kwoty otrzymujemy pełne wsparcie dla nieograniczonej liczby instancji na jednym serwerze, a także dodatkowe produkty takie jak: oprogramowanie klastrowe Clusterware, Enterprise Manager Cloud Control z dodatkami do zarządzania Oracle Linux, DTrace oraz KSplice – rozwiązanie pozwalające na wgrywanie poprawek bezpieczeństwa dla jądra systemu Linux bez konieczności restartu systemu operacyjnego.


„Oracle twierdzi, że użycie jądra Oracle UEK poprawia wydajność i stabilność aplikacji tej firmy, a także umożliwia uruchomienie dodatkowych funkcji niedostępnych w RHEL, takich jak DTrace i ASMlib. W kontekście Oracle VM for x86 jądro to zawiera również wiele poprawek dotyczących wirtualizacji Xen. Dzięki tym cechom Oracle wspiera praktycznie wszystkie swoje aplikacje na Oracle Linux niezależnie od tego, czy jest on uruchomiony na maszynie fizycznej czy jako maszyna wirtualna Oracle VM”


Oracle Linux jest zgodny z Red Hat Enterprise Linux, gdyż dystrybucja ta oparta jest na źródłach publikowanych przez Red Hat. Numeracja wersji obu produktów jest identyczna, tzn. Oracle Linux 6.6 jest w pełni zgodny z RHEL 6.6. Oracle udostępnia obrazy instalacyjne jak również publiczny serwer aktualizacji YUM dla wszystkich swoich dystrybucji Oracle Linux oraz Oracle VM. Red Hat robi to tylko dla klientów opłacających subskrypcję wsparcia technicznego. Nie wszystkie komponenty Red Hat Enterprise Linux znajdziemy w Oracle Linux, jednak rdzeń systemu jest taki sam. Oracle zapewnia, że wszystkie aplikacje przeznaczone dla RHEL będą poprawnie się instalować i działać w jego systemie operacyjnym. Co więcej, Oracle jest kontrybutorem kodu źródłowego Linuxa w zakresie, który można zweryfikować na stronach http://oss.oracle.com oraz http://linux.oracle.com.

Część poprawek wprowadza jednak tylko do własnego jądra o nazwie Unbreakable Enterprise Kernel, które dostarczane jest obok standardowej wersji zawartej w zgodnej dystrybucji RHEL. Oracle twierdzi, że użycie jądra Oracle UEK poprawia wydajność i stabilność aplikacji tej firmy, a także umożliwia uruchomienie dodatkowych funkcji niedostępnych w RHEL, takich jak DTrace i ASMlib. W kontekście Oracle VM for x86 jądro to zawiera również wiele poprawek dotyczących wirtualizacji Xen. Dzięki tym cechom Oracle wspiera praktycznie wszystkie swoje aplikacje na Oracle Linux niezależnie od tego, czy jest on uruchomiony na maszynie fizycznej czy jako maszyna wirtualna Oracle VM.

Nic nie wskazuje na to, by Oracle VM for x86 miał stać się platformą używaną powszechnie, jak VMware. Wydaje się, że tym produktem Oracle konsekwentnie realizuje swoją strategię, dążąc do tego, by jego oprogramowanie działało wydajnie i stabilnie w każdych warunkach, w tym w środowiskach wirtualnych, bez potrzeby sięgania po oprogramowanie firm trzecich.

Oracle VM for x86 w kontekście OpenStack

Interesująco zapowiada się integracja Oracle VM for x86 z architekturą OpenStack. Pod koniec 2014 r. Oracle opublikował pierwszą oficjalnie wspieraną wersję takiego zestawu. Na razie Oracle OpenStack for Oracle Linux posiada mało zachęcający numer wersji 1.0, ale to może być mylące. Doświadczenia firmy w tym zakresie wynikają z tego, że już wcześniejszej zaimplementowała architekturę OpenStack w systemie Solaris 11.2. Oracle OpenStack for Oracle Linux pozwala użyć jako węzłów obliczeniowych (komponent Nova) zarówno serwerów z Oracle Linux (KVM) jak i Oracle VM (Xen). W tym drugim zestawie pozbywa się niezbyt udanego VM Managera na korzyść szybko rozwijających się komponentów tworzonych przez społeczność, a jednocześnie nie rezygnuje ze stabilnego hyperwizora i bogatej biblioteki gotowych szablonów. Kwestia tego, czy wykorzystanie Oracle VM for x86 wraz z architekturą OpenStack mieści się w Oracle’owej definicji twardego partycjonowania, nie została dotychczas jednoznacznie wyjaśniona. Być może ma to związek z pewnymi ograniczeniami technicznymi po stronie zaimplementowanej przez Oracle wersji OpenStack o kodowej nazwie Icehouse. Następna wersja powinna znieść te ograniczenia i będzie to już tylko kwestia „decyzji politycznej”.

Michał Wesołowski jest architektem systemowym w firmie Advatech. Można się z nim skontaktować pod adresem: mwesolowski w domenie advatech kropka pl.