z/VM – system operacyjny działający na komputerach IBM mainframe i oferujący funkcjonalność maszyn wirtualnych.

Geneza tego systemu sięga lat sześćdziesiątych XX wieku. Pierwsza wersja nazywała się CP-40 i działała na komputerze IBM 360/40. Później rozwijany przez IBM pod nazwą VM (VM/370, VM/SP, VM/XA, VM/ESA i obecnie z/VM). Praca z/VM jest sprzętowo wspomagana przez procesor, co pozwala na osiągnięcie niewielkich narzutów na wydajność maszyny wirtualnej. z/VM pozwala na uruchomienie wielu systemów operacyjnych na jednej rzeczywistej maszynie, mogą to być wszystkie systemy działające na komputerze mainframe, czyli: z/OS, z/VM, zTPF, z/VSE, Linux, OpenSolaris. Istnieje również możliwość wielostopniowej wirtualizacji, czyli z/VM uruchamia na wirtualnej maszynie kolejny z/VM, który jest hypervisorem dla kolejnych maszyn wirtualnych. Poszczególne systemy mogą mieć różne wersje. z/VM umożliwia również emulację zasobów fizycznie niedostępnych w danej maszynie, np. pracę trzech procesorów na maszynie jednoprocesorowej. Dodatkowo istnieje „system operacyjny” przeznaczony do pracy w maszynie wirtualnej – CMS (Początkowo nazywany Cambrige Monitor System, później nazwany Conversational Monitor System). CMS nie może być uruchomiony na fizycznym procesorze ani w partycji logicznej LPAR. Dla swojej pracy wymaga serwisów oferowanych przez z/VM. Testowanie, produkcja, programowanie odbywają się fizycznie w jednym komputerze. System może używać procesora kryptograficznego do szyfrowania danych. SSL (Secure Sockets Layer) obsługujące TCP/IP, używany jest również system Kerberos, zostało zaimplementowane również obsługę języków programowania takich jak APL2, Asembler, C, C++, COBOL, Fortran, Pascal, PL/I, REXX. z/VM był pierwszą platformą, na której udostępniono język skryptowy REXX.

Opis Podstawowe informacje System w obecnej wersji może posiadać 8 TB pamięci RAM, jednak jedna wirtualna maszyna naraz może używać 256 GB. Na jeden obraz systemu z/VM może przypaść maksymalnie 32 procesory. Dzięki technikom wirtualizacji system pozwala na tworzenie wirtualnych minidysków na dyskach rzeczywistych dzięki czemu wirtualny system posiada rzeczywisty dysk. System potrafi obsługiwać macierze dyskowe w jednostce na której jest zainstalowany. Można tworzyć wirtualne przełączniki, jak i również wirtualne karty sieciowe, dzięki czemu można doprowadzić do tego, że poszczególne maszyny będą się widziały tak jakby były oddzielnymi komputerami. W systemie zaimplementowane są takie elementy jak: CP „Control program” – odpowiada on za komunikacje pomiędzy poszczególnymi maszynami wirtualnymi, nadzoruje i przygotowuje wirtualne środowisko, dla każdej z maszyn wirtualnych. „Conversational Monitor System” – CMS system operacyjny, który pozwala na komunikację użytkownika z maszyną. APPC/VM – czyli zaawansowany program do komunikacji pomiędzy poszczególnymi aplikacjami, mogą się komunikować za pomocą sieci SNA. System współpracuje z różnymi technologiami, jak nie tylko wspomnianych tu SNA i TCP/IP, także BSC, X.25, Token Ring, Ethernet, X-Windows, Network File System, Simple mail Protocol, IP Multicast, X.400, NJE. „Dump View Facility” – aplikacja, która pozwala przeglądać zrzuty błędów i innych danych, takich jak zrzuty konsoli które chce otrzymać użytkownik. GCS, czyli system nadzorujący. HCD „Hardware Configuration Definition” oraz HCM „Hardware Configuration Manager” – służą do konfiguracji sprzętu w maszynie, w której system się znajduje. REXX – język skryptowy. „IBM Tape manager for z/VM” – System zrzutu danych na taśmy. TSAF „Transparent Services Access Facility” – pozwala na komunikacje z APPC/VM.

Dzięki technologiom wirtualizacji system jest rozwiązaniem które umożliwia użytkownikom używanie więcej niż jednego systemu na jednej maszynie typu mainframe. Konsola w trybie ASCII jest dosyć przyjemna w pracy, a obsługa takich języków jak REXX znacznie ułatwia automatyzację procesów administracyjnych. Dzięki temu, że z/VM może obsługiwać procesory IFL przeznaczone dla Linuksa oraz zAAP procesor dla Javy pod z/OS (pod z/VM instrukcje Javy nie są obsługiwane, traktowany jest jako dodatkowy IFL), cieszy się wielką popularnością wśród użytkowników komputerów typu mainframe. Dzięki tym cechom jest jednym z idealnych rozwiązań dla serwerów sieciowych. Potrafi pracować w konfiguracji klient-serwer.

Podstawowe założenia systemu z/VM System z/VM został stworzony by umożliwić wielu użytkownikom korzystanie z tej samej maszyny, jaką jest jednostką typu mainframe w tym samym czasie. Każdy użytkownik miał mieć system dla siebie, do którego mógłby się podłączyć za pomocą zdalnego terminala i praca na nim nie miała kolidować z pracą innych użytkowników. System z/VM umożliwia pełną funkcjonalną komunikację między poszczególnymi użytkownikami. Wykorzystano do tego technikę wirtualizacji.

Wirtualizacja to zdolność systemu komputerowego do dzielenia zasobów w jednym fizycznej maszynie na wiele wirtualnych serwerów. z/VM pozwala na współdzielenie fizycznych zasobów mainframe, takich jak pamięć dyskowa, pamięć RAM, karty sieciowe oraz procesor. Zasoby te zarządzane są przez zarządcę.

Zarządca w z/VM nazywany jest Control Program (CP). Kiedy użytkownik loguje się do systemu tworzy wirtualną maszynę, w której może uruchomić wiele systemów operacyjnych, takich jak z/OS, z/TPF, Linux, z/VSE, CMS albo po prostu z/VM kolejnego poziomu. Tworzy wirtualną maszynę składającą się z wirtualnych procesorów, urządzeń komunikacyjnych oraz zasobów. Zmniejsza to znacząco koszty administracji. Dzięki temu można łatwiej i efektywniej rozplanować zasoby dla poszczególnych maszyn, które oddzielone od siebie, mogą robić coś zupełnie innego znajdując się w jednym mainframe. Uruchomione oprogramowanie jest zupełnie nieświadome, że warstwa sprzętowa została zwirtualizowana. Wydaje mu się, że działa na osobnej odseparowanej maszynie. Mechanizm ten pozwala na zredukowanie zużycia procesora i zasobów sprzętowych, poprzez dostarczenie maszynie takich zasobów jakich potrzebuje.

Zalety wirtualizacji Zalety wirtualizacji: Większa utylizacja zasobów – wirtualizacja pozwala na dynamiczny podział zasobów, dzięki czemu uzyskuje się bardziej efektywną utylizację zasobów, zwłaszcza dla mało przeciążonych urządzeń, które posiadają więcej zasobów niż potrzebują. Mniejsze koszty zarządzania – wirtualizacja zwiększa efektywność personelu poprzez redukcje fizycznych zasobów, które muszą być obsługiwane. Upraszcza zarządzanie zadaniami poprzez ich automatyzacje, wszystko jest bardziej scentralizowane. Zwiększona elastyczność – wirtualizacja pozwala włączać zasoby i dynamicznie je konfigurować, co jest bardzo przydatne w rozwiązaniach biznesowych, gdzie potrzeby bardzo szybko się zmieniają. Zwiększone bezpieczeństwo – wirtualizacja pozwala na separację maszyn od siebie, co nie jest możliwe przy prostych mechanizmach współdzielenia. Dostarcza również kontrolę nad dostępem do danych i urządzeń. Każda wirtualna maszyna może być kompletnie odizolowana od głównego systemu i innych wirtualnych maszyn. Jeśli jedna maszyna zawiedzie lub zostanie zaatakowana, nie wpływa to na pozostałe maszyny. Wirtualizacja chroni dane i pilnuje aplikacji, żeby komunikowały się tylko skonfigurowanymi połączeniami sieciowymi przez operatora. Większa dostępność – mechanizm wirtualizacji pozwala na fizyczne zamiany zasobów sprzętowych bez wiedzy użytkownika. Zwiększona skalowalność – partycjonowanie i agregacja zasobów w wirtualnych zasobach, polegające na zmniejszaniu i zwiększaniu zasobów dla maszyny. Można skalować zasobami bez zmiany jakichkolwiek zasobów fizycznych. Interoperacyjność i inwestycja w bezpieczeństwo – wirtualne zasoby mogą być kompatybilne z interfejsami i protokołami które są mogą być niedostępne dla ukrytych fizycznych zasobów.

Na powyższym rysunku widzimy system wirtualizacji realizowanej za pomocą systemu z/VM. System z/VM pełny dostęp to wszystkich zasobów, a potem tworzy oddzielne wirtualne maszyny, w których mogą być uruchomione inne systemy. Zasoby dzielone są za pomocą systemu 1 poziomu, czyli z/VM kontrolującego wszystkie zasoby i rozdzielane na inne maszyny. Dysk rzeczywisty dzielony jest na dyski wirtualne i systemy poniżej nie zdają są sprawy, że są zainstalowane na dysku wirtualnym. W przypadku gdyby zabrakło zasobów, na przykład dyskowych, mamy dostępny mechanizm agregacji zasobów, możemy dowolnie powiększać miejsce na dysku dokładając maszynie cześć dysku rzeczywistego. Jeśli zajdzie taka potrzeba można utworzyć jeden wirtualny dysk składający się z kilku dysków rzeczywistych. Proces wirtualizacji pozwala na wymianę elementów bez wiedzy maszyny wirtualnej. Proces agregacji jest bardzo przydatny, doskonale sprawdza się w rozwiązaniach biznesowych, jest również bardzo wygodny dla użytkownika. System emulacji zawarty w wirtualizacji pozwala uruchomić serwisy czasem nawet niedostępne sprzętowo. Możliwe jest uruchomienia wirtualnego kontrolera SCSI, tworzenia wirtualnych taśm na fizycznym dysku.

Dzięki systemowi wirtualizacji zawartemu w systemie z/VM można stworzyć doskonałe środowisko testowe. Funkcjonalność systemu dzięki mechanizmom wirtualizacji jest bardzo dużo i pozwala nam na realizowanie takich zadań jak: Testowanie programów, które z różnych przyczyn nie mogą działać w rzeczywistej maszynie lub po prostu nie można przerywać procesu produkcyjnego. Można przetestować nową odsłonę systemu – nowa wersja będzie zainstalowana oraz testowana w tym samym czasie na tej samej maszynie, w której znajduje się platforma produkcyjna. Pozwala to na wdrożenie i instalację nowej wersji na platformę produkcyjną bardzo szybko, od razu można zauważyć jakie problemy z tego wynikną. Zdolność systemu Z/VM pozwala na instalację nowych wersji w czasie, gdy maszyny działające w niższym poziomie cały czas pracują. Wprowadzanie poprawek – gdy wprowadzamy nowe poprawki do systemu utworzone przez producenta, wgrywamy je najpierw i testujemy. Poprawki można cofnąć do momentu, gdy nie zostaną zatwierdzone. Gdy zatwierdzimy poprawki, nie mamy już takiej łatwej możliwości cofnięcia. Możliwość tworzenia kopi zapasowych – system z/VM nie jest wymagającym systemem, może pracować na różnych modelach maszyn serwerowych, dopóki są spełnione minimalne wymogi sprzętowe. Pozwala to na mało wymagające modele serwerowe, zużywa mniej zasobów sprzętowych. Dzięki tej zdolności możemy zrobić kopię zapasową na system o dużo wyższych wymaganiach sprzętowych niż w rzeczywistości mamy. Symulują nową konfigurację systemu przed instalacją urządzeń kanałowych oraz urządzeń I/O. Można odwołać się do urządzenia, które w rzeczywistości nie zostało jeszcze zainstalowane, tworząc odpowiednią konfigurację I/O. Można przetestować jakie to będzie miało skutki dla systemu. Systemy napisane specjalnie dla klientów mogą być testowane bez zakłócania procesu produkcyjnego.

Architektura systemów „z” Architektura systemów „z” dostarcza 3 różne tryby pracy w których system może wykonywać operacje: natywny, w LPAR, oraz w trybie gościa pod systemem z/VM. Tryb natywny – w natywnym trybie pracy, zwanym czasem trybem prostym, wejście do fizycznego systemu używane jest przez pojedynczy system. Jest to najrzadziej używany tryb pracy. Obecnie w architekturze z196 został usunięty. Tryb [LPAR] – w trybie operacji logicznego partycjonowania lub LPAR pojedynczy system mainframe jest logicznie podzielony na wiele partycji. W trybie LPAR najczęściej używanym trybie partycjonowania w mainframe, dostarczane są dodatkowe udogodnienia dzięki czemu uzyskujemy dodatkowe wspomaganie systemowe niedostępne w prostym trybie. Tryb gościa pod system z/VM – system z/VM ma zaimplementowane partycjonowanie na poziomie programowym. System może działać na partycjonowaniu LPAR, ale również na starszym sprzęcie w trybie prostym.

Control Program