Per FreeBSD è in sviluppo il nuovo gestore di sistema rcd

Baptiste Daroussin, membro del FreeBSD Core Team e autore del gestore di pacchetti pkg, sta sviluppando un nuovo gestore di sistema per FreeBSD: rcd. Il gestore di sistema rcd viene chiamato dal processo init al posto di /etc/rc, legge i file di configurazione dei servizi (/etc/rcd.d/*.ucl), costruisce un albero delle dipendenze e avvia i servizi il più possibile in parallelo l'uno con l'altro, quindi monitora l'attività dei servizi e li riavvia se necessario.

La gestione dei processi in background e le operazioni sui servizi possono essere effettuate tramite l'invio diretto di comandi a un socket UNIX o mediante l'utilizzo dell'utilità da riga di comando rctl. I file unit con i parametri dei servizi sono redatti nel formato UCL, che ricorda il formato dei file di configurazione di nginx e bind, con elementi per semplificare l'elaborazione automatizzata, presi in prestito da JSON. È possibile creare modelli di file unit tipici e scrivere gestori incorporati in linguaggio Lua. Esempio di file unit per avviare nginx: name = "nginx"; description = "Server HTTP Nginx"; 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"; }; }

Invece di lavorare con i file PID, il monitoraggio dell'attività dei processi avviati avviene utilizzando descrittori restituiti dalla chiamata di sistema pdfork(). È supportata l'attivazione dei servizi solo in risposta a una connessione di socket di rete e c'è la possibilità di proteggere i servizi critici da chiusure forzate in caso di esaurimento della memoria di sistema. È possibile aggiornare la versione del processo in background rcd in tempo reale senza perdita di stato.

Per limitare le risorse disponibili per un servizio si utilizza rctl, mentre per una completa isolamento dei servizi viene supportato l'avvio in ambienti jail. È possibile configurare l'accesso al socket UNIX di gestione legato a singoli servizi. È supportato il passaggio in modalità sleep.

Il gestore di sistema è completamente retrocompatibile con il sistema esistente di avvio sequenziale dei servizi rc.d e può funzionare senza modificare gli script rc.d e i file di configurazione esistenti. È sufficiente installare rcd su un sistema operativo e, dopo il riavvio, tutto continuerà a funzionare come prima, tranne per la riduzione dei tempi di avvio grazie alla parallelizzazione dell'avvio dei servizi. Tale compatibilità semplificherà la migrazione dei sistemi a rcd e permetterà di convertire gradualmente gli script rc.d esistenti nel formato dei file unit.

Per garantire la compatibilità con rc.d, viene supportato un tipo speciale di unit chiamato "legacy". Rcd scansiona il contenuto di /etc/rc.d/ e /usr/local/etc/rc.d/, analizza le intestazioni PROVIDE/REQUIRE/BEFORE/KEYWORD negli script, legge le impostazioni rc.conf e determina lo stato di avvio degli script, quindi gestisce ogni script come un'unità legacy virtuale. Nel caso in cui venga utilizzato il comando rcctl per gestire tali unità virtuali, le operazioni vengono tradotte nel formato precedente, ad esempio, l'esecuzione di "rcctl reload sshd" porterà all'esecuzione di "/etc/rc.d/sshd reload".

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS 🔥 Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS - ProHoster