Baptiste Daroussin, član FreeBSD Core Team-a i autor upravitelja paketa pkg, razvija novi sistemski upravitelj za FreeBSD — rcd. Sistemski upravitelj rcd poziva init-proces umjesto /etc/rc, čita konfiguracijske datoteke usluga (/etc/rcd.d/*.ucl), gradi stablo ovisnosti i pokreće usluge paralelno koliko je moguće, nakon čega prati rad usluga i po potrebi ih restartuje.
Upravljanje pozadinskim procesom i operacije sa uslugama mogu se obavljati putem izravnog slanja naredbi u UNIX-soket ili pomoću komandne linije rctl. Unit-datoteke s parametrima usluga definiraju se u UCL formatu, koji podsjeća na format konfiguracijskih datoteka nginx i bind, s elementima za pojednostavljenu automatizaciju obrade, posuđenim iz JSON-a. Omogućeno je stvaranje predložaka tipičnih unit-datoteka i pisanje ugrađenih obraditelja na jeziku Lua. Primjer unit-datoteke za pokretanje nginx-a: name = „nginx”; description = „Nginx HTTP Server”; type = „simple”; command = „/usr/local/sbin/nginx”; command_args = „-g ‘daemon off;'”; provides = [„nginx”, „http”]; requires = [„NETWORKING”, „sshd”]; restart { policy = „always”; max_retries = 10; delay = 2000; backoff = „linear”; } process { user = „www”; group = „www”; cpuset = „0-3”; } rctl { memoryuse = { action = „deny”; amount = „2g”; }; pcpu = { action = „throttle”; amount = „80”; }; }
Umjesto rada s PID-datotekama, praćenje aktivnosti pokrenutih procesa vrši se upotrebom deskriptora koje vraća sistemski poziv pdfork(). Postoji podrška za aktivaciju usluga samo prilikom pristupa mrežnom soketu i mogućnost zaštite važnih usluga od prisilnog završetka u slučaju nedostatka memorije u sistemu. Moguće je ažurirati verziju pozadinskog procesa rcd u hodu bez gubitka stanja.
Za ograničavanje dostupnih resursa usluzi koristi se rctl, a za potpunu izolaciju usluga podržava se njihovo pokretanje u jail-okruženjima. Moguća je konfiguracija pristupa upravljačkom UNIX-soketu u okviru pojedinih usluga. Podržava se prebacivanje u stanje mirovanja.
Sistemski menadžer je potpuno unazad kompatibilan sa postojećim sistemom sekvencijalnog pokretanja usluga rc.d i može raditi bez izmene postojećih rc.d skripti i konfiguracionih datoteka. Dovoljno je instalirati rcd na radni sistem, a nakon ponovnog pokretanja sve će nastaviti funkcionisati kao ranije, osim što će vreme pokretanja biti skraćeno zahvaljujući paralelizaciji pokretanja usluga. Ova kompatibilnost će olakšati migraciju sistema na rcd i omogućiti postepeno prebacivanje postojećih rc.d skripti u format unit-datoteka.
Za kompatibilnost sa rc.d podržava se poseban tip unit-a „legacy“. Rcd skenira sadržaj /etc/rc.d/ i /usr/local/etc/rc.d/, analizira naslove PROVIDE/REQUIRE/BEFORE/KEYWORD u skriptama, čita postavke rc.conf i određuje stanje pokretanja skripti, nakon čega obrađuje svaku skriptu kao virtuelni legacy unit. U slučaju korišćenja komande rcctl za upravljanje ovim virtuelnim unit-ima, operacije se prevode u stari format, na primer, izvršavanje „rcctl reload sshd“ dovešće do pokretanja „/etc/rc.d/sshd reload“.
Izvor: opennet.ru
