systemd (Re: syslog-ng startowany po bindzie)

Tomasz Pala gotar at polanet.pl
Tue Nov 29 11:19:36 CET 2011


On Tue, Nov 29, 2011 at 06:44:08 +0100, Jakub Bogusz wrote:

>> Takie problemy to zjada na śniadanie właśnie dlatego, że nie tylko każdy
>> service jest osobno (jak w SysV), ale także mount(point) i czeka
>> grzecznie, aż się może wykonać.
> 
> Dwa kroki (lokalne i _netdev) to i przy initscripts/rc-scripts nie
> problem. Rzeźba zaczyna się, jeżeli dopiero po zamontowaniu pierwszej
> porcji sieciowych systemów plików można uzyskać dostęp do jakiegoś
> dalszego elementu, który też ma być zamontowany.

To jest właśnie typowy problem wynikający z monolitycznego skryptu
startowego (do którego niejako z boku doklejane są skrypty usług) -
każdą sytuację trzeba przewidzieć, albo dopisać sobie w systemie.
W systemd ani normalny przepływ danych nie jest kontrolowany skryptem sh
(który cierpi na bolączki typu komentowanie danych, kontrola błędów itp.
rzeczy, do których sh po prostu nie służy), ani nie masz wymuszonej tym
skryptem kolejności operacji, bo każda z nich wydzielona jest do osobnej
części i żyje własnym życiem. Jakbyś:
1. podzielił rc.sysinit na minimalne bloki funkcjonalne,
2. każdemu z nich wpisał zależności,
3. wywalił cały narzut sh
to dostaniesz z grubsza to, co oferuje systemd.

Dlatego też nie musisz ograniczać się do 2 kroków w montowaniu, ale
możesz mieć ich nawet 50. Więcej nawet - zależnie od wybranego przy
starcie targetu możesz montować różne zasoby i uruchamiać różne usługi
(powodzenia w robieniu tego za pomocą runleveli).

W ogóle odnoszę wrażenie, jakbym reklamował tutaj jakiś cudowny system,
ale tak na prawdę to obrazuje jedynie stopień zacofania SysV. Mamy
monstrualny shellcode (który nie służy do pisania takich rzeczy) i masę
problemów z nietrywialnymi konfiguracjami. Nie wiem, czy to akurat ta
implementacja ostatecznie zostanie, może za miesiąc pojawi się
systemd-ng i będzie lepszy, ale już dzisiaj trzeba myśleć o migracji.

Co mi się na dzisiaj w systemd nie podoba:

1. zbyt gadatliwy - zamiast samej nazwy usługi, wyświetla cały jej opis
(coś jak:
Starting SYSV: postgresql Starts and stops the PostgreSQL backend daemon that handles all database requests
Started SYSV: postgresql Starts and stops the PostgreSQL backend daemon that handles all database requests).

2. nie aktywuje mi swapów (brak udeva),
3. wymaga devtmpfs - ale da się to później odmontować,
4. coś kulawo obsługuje SysV - próbuje mi uruchamiać usługi, które mam
od dawien dawna wyłączone chkconfigiem.

Ale to nie są rzeczy, których się nie naprawi.

-- 
Tomasz Pala <gotar w pld-linux.org>


More information about the pld-devel-pl mailing list