Miesięcznik informatyków i menedżerów IT sektora publicznego

Artur Pęczak

Funkcje menedżera systemu i sesji systemd

Program systemd jest zamiennikiem demona init. Wprowadza takie usprawnienia, jak wyrafinowana logika sterowania usługami na podstawie zależności między nimi, możliwość równoległego uruchamiania demonów oraz obsługa cgroups do śledzenia działania procesów.

Polecenie systemctl cat mariadb. service wyświetla zawartość pliku konfiguracyjnego (unitu) – tutaj usługi bazy danych MariaDB.

Systemd został zaprojektowany jako zamiennik dla klasycznych implementacji programu init w stylu SystemV (sysvinit) oraz BSD. Należy do tej samej kategorii oprogramowania, co Upstart, który został stworzony i ostatecznie zarzucony w dystrybucji Ubuntu, a także mniej znany OpenRC, oferujący podobny zestaw funkcji, co systemd.

Na wstępie warto zaznaczyć, że nazwa pakietu to „systemd” i tylko taka forma zapisu jest poprawna. Nie „system D”, „System D” ani nawet „SystemD”. W artykule ze względów składniowych stosujemy również zapis „Systemd”, aby zachować poprawność językową dla wypowiedzenia rozpoczynającego zdanie.

Nowy init

Menedżer systemd wprowadza wiele funkcji i udoskonaleń, m.in. możliwość równoległego (to słowo klucz) uruchamiania usług za pomocą aktywacji gniazda (socket) i komunikacji międzyprocesowej D-Bus. Systemd umożliwia również aktywację usług na podstawie dostępności lub zmian w nadzorowanej ścieżce systemu plikowego (w tym celu demon korzysta z inotify) lub według dostępności sprzętu (śledzi zdarzenia rejestrowane przez udev). Nowy menedżer wprowadza też wyrafinowaną logikę sterowania usługami opartą na zależnościach między nimi, zarządza punktami montowania urządzeń i zasobów w systemie oraz korzysta z grup kontrolnych cgroups do śledzenia działania procesów.

Systemd to menedżer systemu i usług, którego proces uruchamiany jest jako pierwszy (PID 1) i odpowiada za start pozostałej części systemu operacyjnego. W tym ujęciu systemd realizuje funkcje pozostałych programów typu init. Autorzy klasyfikują systemd jako pakiet oprogramowania, który tworzą dodatkowo: demon rejestrowania zdarzeń (journald), demon logowania użytkowników (logind), demon do zarządzania podstawową konfiguracją sieci (networkd), demon zarządzania ustawieniami opartymi na czasie (timedated) oraz zestaw wielu narzędzi do konfiguracji ustawień systemu, w tym nazwy komputera (hostname), ustawień lokalnych powłoki (locale) czy katalogów uruchomieniowych. Tylko to wyliczenie doskonale ilustruje, jak wiele funkcji, które dotychczas były realizowane za pomocą niezależnych narzędzi, może być obsługiwanych przy użyciu systemd. Dzisiaj, kiedy program ten stał się domyślnym menedżerem startu wielu dystrybucji Linuksa, pojawiają się obawy, że autorzy oprogramowania będą pisać własne rozwiązania mocno zależne od systemd. W rezultacie podmiana systemd na innego menedżera może być trudniejsza niż kiedykolwiek wcześniej.

Kontrowersje wokół projektu

Nic dziwnego, że prace nad rozwojem systemd wywołały kolejną „świętą wojnę” w świecie open source. Systemd istotnie narusza podstawowe założenie w sposobie tworzenia systemów klasy UNIX/Linux. Mowa tutaj o modularności systemu, złożonego z wielu niezależnych, ale współpracujących ze sobą komponentów. Każdy z nich realizuje tylko wąski zakres funkcji. Demon init w implementacji systemd stanowi tylko rdzeń tego pakietu, który obudowano zestawem demonów, bibliotek i narzędzi do zarządzania konfiguracją systemu Linux.

W gronie konserwatywnych użytkowników Linuksa znalazły się nawet głosy krytyki, które podważają oczywiste udoskonalenia nowego menedżera startu, takie jak szybszy start systemu i lepsze rejestrowanie zdarzeń. Serwery działają w trybie ciągłym, a zatem czas od włączenia zasilania do udostępnienia działającego systemu nie ma wielkiego znaczenia. Systemd rejestruje zdarzenia w formie binarnej. Dzięki indeksowaniu logi mogą być szybko przeszukiwane, ale pliki binarne łatwo jest uszkodzić. To argumenty negujące wprowadzone udoskonalenia.

Pliki typu unit

Konfiguracja systemd opiera się na jednostkach organizacyjnych nazwanych „unitami”. Każda jednostka stanowi ustandaryzowaną definicję obiektu menedżera startu opisującego elementy działania systemu, m.in. usługi sieciowe, konfigurację sieci, urządzeń, punktów montowania w systemie plikowym czy też zadań do wykonania w określonym czasie. Składnia unitów została zainspirowana plikami .desktop wprowadzonymi przez XDG Desktop Entry Specification, które to garściami czerpały z formatu .ini stosowanego w Windows do przechowywania konfiguracji programów. Dokumentacja wyróżnia 12 kategorii plików konfiguracyjnych unit używanych w zależności od typu zasobu, który opisują: .service, .socket, .device, .mount, .automount, .swap, .target, .path, .timer, .snapshot, .slice oraz .scope.

[...]

Autor zawodowo zajmuje się informatyką. Publikuje w magazynach komputerowych i serwisach internetowych.

Pełna treść artykułu jest dostępna w papierowym wydaniu pisma. Zapraszamy do składania zamówień na prenumeratę i numery archiwalne.
 
 

Polecamy

Biblioteka Informacja Publiczna

Specjalistyczne publikacje książkowe dla pracowników administracji publicznej

więcej