Słoneczna dziesiątka

Solaris 10 zawiera bardzo wiele nowości funkcjonalnych. Niektóre z nich są naprawdę przełomowe. Praktycznie wszystkie udoskonalenia dostępne są bez względu na platformę sprzętową: UltraSPARC, Intel IA-32 oraz AMD64.

Solaris 10 zawiera bardzo wiele nowości funkcjonalnych. Niektóre z nich są naprawdę przełomowe. Praktycznie wszystkie udoskonalenia dostępne są bez względu na platformę sprzętową: UltraSPARC, Intel IA-32 oraz AMD64.

Lista nowości w Solarisie 10 jest bardzo długa. Oprócz możliwości podziału systemu na niezależne partycje (containers, zones) wymienić trzeba nowy, skalowalny i niezawodny system plików ZFS, unikatowe narzędzie do analizy problemów i optymalizacji wydajności DTrace, mechanizmy automatycznie wykrywające i usuwające nieprawidłowości w działaniu sprzętu i oprogramowania oraz zwiększoną wydajność funkcji sieciowych - żeby wymienić najważniejsze. Pomniejszych, choć często bardzo użytecznych nowości jest znacznie więcej.

Partycja jak system

Przełomową innowacją Solarisa 10 jest możliwość podziału systemu operacyjnego na partycje. To ważna zmiana, bo Sun oferował dotychczas jedynie opcję uruchamiania oddzielnych kopii całego systemu operacyjnego na oddzielnych płytach głównych większych serwerów. Podział zasobów systemu Unix na niezależne od siebie domeny oferuje od pewnego czasu IBM, który zaadaptował w tym celu technologię maszyn wirtualnych definiowanych w mikrokodzie procesora. W podobnym kierunku zmierza, jak się wydaje, również HP.

Sun przyjął inną zasadę. Zamiast uruchamiać wiele kopii systemu obok siebie, utrzymał jedno jądro i pojedyncze kopie wszystkich usług systemowych. Partycjonowanie w Solarisie 10 polega na dodaniu warstwy logiki, dzięki której procesy, usługi i zasoby przypisywane są do jednego z wielu tzw. kontenerów czy też stref (zones), definiowanych w ramach strefy globalnej. Każdemu kontenerowi przypisywany jest wycinek mocy obliczeniowej i zasobów systemu (pamięci, systemu plików itp.).

Bezproblemowa instalacja i rozbudowana konfiguracja sprawiają, że system od razu robi dobre wrażenie.

Bezproblemowa instalacja i rozbudowana konfiguracja sprawiają, że system od razu robi dobre wrażenie.

Kontener prowadzi własną listę procesów i zarządza nimi niezależnie od pozostałych, zawiera własną przestrzeń nazw, własne pliki konfiguracyjne, biblioteki, skrypty, listy użytkowników, spisy haseł, konsole administracyjne itp. Działając wewnątrz kontenera, procesy nie są "świadome" istnienia innych kontenerów w tym samym systemie. Bezpośrednia komunikacja między procesami (mechanizm IPC - Inter-Process Communications) działa wyłącznie w obrębie jednego kontenera. Aby skomunikować ze sobą procesy działające w różnych strefach, trzeba skorzystać z pośrednictwa wirtualnych interfejsów sieciowych.

Konsekwencją daleko idącej separacji kontenerów jest duża odporność na awarie systemu jako całości - ograniczone do minimum jądro realizuje właściwie jedynie funkcje kontroli dostępu do zasobów - wszystkie pozostałe funkcje działają w wyższych warstwach w ramach kontenerów. W rezultacie awaria aplikacji czy zagrożenie bezpieczeństwa w jednym kontenerze nie ma wpływu na działanie pozostałych. Można więc wyobrazić sobie wydajne klastry, których węzły działają w różnych strefach. Mimo separacji, aplikacji używanych w wielu kontenerach nie trzeba instalować oddzielnie w każdym z nich.

Diagnostyka w nowym wydaniu

Sun położył duży nacisk na to, żeby Solaris 10 wymagał możliwie jak najmniej interwencji administratora. Solaris Fault Manager to moduł, który w czasie rzeczywistym zbiera i analizuje informacje o zdarzeniach zachodzących w systemie. Gdy wykryje nieprawidłowości, uruchamia odpowiedni moduł Solaris Fault Agent, który automatycznie naprawia problem i komunikuje rezultaty właściwemu administratorowi. Agent odpowiedzialny za pamięć sprawdzi przyczyny błędów pamięci i jeśli będą się powtarzać, wyłączy określone adresy z dostępnej puli pamięci. Jeśli problemem okaże się niestabilna aplikacja, odpowiedni agent sprawdzi jej funkcjonowanie i ewentualne wstrzyma ją, wyłączy lub zrestartuje. Podobny mechanizm, zwany Solaris Service Manager, opracowano do monitorowania i zarządzania usługami systemowymi. W obu wypadkach rozwiązania zostały zaprojektowane tak, aby w przyszłości można było dodawać lub aktualizować zarówno moduły analizujące poszczególne kategorie zdarzeń (procesy, pamięć, operacje I/O itd.), jak i reagujące na nieprawidłowości. Sun przygotował do tego specjalne interfejsy API.

Przyjemnie pracuje się z podręczną konsolą zarządzania wirtualnymi pulpitami.

Przyjemnie pracuje się z podręczną konsolą zarządzania wirtualnymi pulpitami.

Automatyzacja będzie nabierać znaczenia, ale na pewno nie wszystko da się naprawić w ten sposób. Aby ułatwić administratorom znajdowanie rzeczywistych przyczyn problemów, Sun wbudował w Solaris 10 DTrace, narzędzie do śledzenia i optymalizacji pracy procesów. Ten niepozorny program może się okazać jednym z poważniejszych powodów do przechodzenia na Solaris 10. Od podobnych narzędzi w innych systemach operacyjnych odróżnia go śledzenie oparte na zmianie stanu procesu.

To przełom, bo śledzenie oparte wyłącznie na czasie (które DTrace również umożliwia) nie wychwyci bardzo szybkich zmian w stanach procesów (trwających poniżej 10 ms), a w skrajnych przypadkach nawet w ogóle ich nie wykryje! Tymczasem w systemie zdarza się sporo krótkich operacji, które zajmują większość czasu procesora podczas określonego przerwania. Możliwość poznania każdego bez wyjątku stanu procesu to obietnica znacznej optymalizacji wydajności aplikacji. Aby poprawić wydajność śledzenia, Sun po prostu zrezygnował z bieżącej translacji formatu zapisu czasu w języku maszynowym na format czytelny dla narzędzi używanych przez administratorów. Translacja jest wykonywana dopiero wtedy, gdy administrator chce analizować dane.

Pojemność bez granic

Kolejna ważna nowość Solarisa 10 to bezpieczny i wprost niebywale skalowalny system plików ZFS (Zettabyte File System). Właściwie jest to system systemów plików, bo można w nim zdefiniować oddzielny system plików każdego kontenera systemowego, aplikacji, a nawet użytkownika! Podstawowy sekret ZFS polega na tym, że łączy funkcje zarządzania urządzeniami (dyskami, kontrolerami) oraz menedżera woluminów logicznych, udostępniając systemom plików jeden wielki "zasób dyskowy". Wypada jeszcze dodać, że ZFS alokuje systemom plików pojemność nie z góry, lecz na bieżąco, dzięki czemu przestrzeń dyskowa się nie marnuje. ZFS obsługuje także kompresję danych w locie.

Na jednym woluminie można utworzyć wiele różnych systemów plików (w tym UFS, NFS czy VxFS) - w dotychczasowych rozwiązaniach to było nie do pomyślenia. Według Suna, pojemność ZFS jest automatycznie rozszerzana lub zmniejszana wraz z dodawaniem albo wyłączaniem poszczególnych urządzeń - bez zatrzymywania aplikacji. Maksymalna pojemność zasobu dyskowego przeznaczona na dane sięga... 2128 bajtów, a na wszystko inne (metadane systemów plików, kopie snapshot itp.) - 264 bajtów. To nie koniec. Solaris ZFS działa w trybie transakcyjnym - zmiany są zawsze zapisywane w wolnym obszarze i dopiero gdy zostaną zapisane, potwierdza aplikacji dokonanie zmian i modyfikuje wskazania do fizycznych zapisów na dysku. Działa więc tak, jak mechanizmy copy-on-write w rozwiązaniach do wykonywania błyskawicznych kopii danych (snapshot). Te ostatnie mogą być w ZFS wykonywane dowolnie często. Odzyskiwaniem wolnej przestrzeni dyskowej po zmienionych wpisach zajmuje się działający w tle odpowiedni proces.

Dodatkowym zabezpieczeniem danych są 64-bitowe sumy kontrolne (funkcje skrótu) wykonywane dla każdego bloku lub ich grupy równolegle ze zmianą ich zawartości. W połączeniu z transakcyjnością zapisu mechanizm ten w zasadzie gwarantuje spójność danych w każdym czasie. ZFS oferuje ponadto: automatyczne dobieranie długości bloku danych do aktualnych potrzeb, automatyczne rozkładanie danych na jak najwięcej urządzeń fizycznych w celu zwiększenia wydajności, mirroring danych, wielostrumieniowy zapis i predykcyjny odczyt danych. O bezpieczeństwo informacji dba z kolei podsystem szyfrowania danych.


Zobacz również