Tutorial

Systemd, il futuro della gestione di sistemi Linux

Quando accendiamo il PC e facciamo partire la nostra distribuzione Linux preferita, ci deve necessariamente essere un processo che si occupi dell’inizializzazione e dell’avvio di tutti i componenti necessari al funzionamento del sistema operativo. Questo processo, che fino a qualche anno fa si chiamava  init, è responsabile della corretta procedura di avvio di tutti gli altri processi principali. Per molto tempo, le distribuzioni Linux si sono affidate a sistemi che non sfruttavano al meglio le caratteristiche di parallelizzazione che le moderne CPU offrono, impedendo la riduzione dei tempi di avvio. Poi è stato finalmente messo a punto un sistema di avvio molto più moderno, che si è fortemente diffuso nel giro di pochi anni, arrivando ad essere applicato su un grandissimo numero di distribuzioni Linux: si tratta di systemd.

Ma cos’è systemd? Si tratta di un gestore di sistema e di servizi per Linux, compatibile con gli initscript SysV e LSB. systemd fornisce una notevole capacità di parallelizzazione, usa socket e D-Bus per l’avvio dei demoni, offre un avvio su richiesta dei demoni, tiene traccia dei processi con l’utilizzo del control groups di Linux, supporta lo snapshotting e il restore dello stato del sistema, mantiene i punti di mount e di automount e implementa un elaborato servizio di controllo logico basato sulle relazioni delle dipendenze. Oggigiorno systemd è divenuto stabilmente un componente fondamentale di moltissime distribuzioni Linux.

Per capire qual è il motivo per cui systemd ha migliorato la fase di inizializzazione dei sistemi operativi Linux, iniziamo col dire che un efficiente sistema di boot dovrebbe eseguire il minor numeri di servizi e parallelizzare il più possibile la loro esecuzione. Di conseguenza, è facile supporre che un buon sistema di boot cercherà di rimandare l’avvio di un servizio come bluetoothd (il cui nome ne suggerisce le funzionalità principali), mentre darà priorità a servizi come syslog (responsabile della gestione dei log di sistema). Ed effettivamente, questo è proprio quello che systemd riesce ad implementare.

L’idea che ha consentito a systemd di aumentare il livello di parallelizzazione è stata quella di modificare tutti i demoni dei servizi in modo che essi non richiedano l’inizializzazione dei socket principali, e demandando questa operazione ad una fase di inizializzazione precedente al lancio dei processi, gestita dallo stesso systemd.

Per tutte le distribuzioni che includono systemd, vi sono diverse utility che è possibile sfruttare per la gestione del sistema e dei servizi. Il primo comando che ci interessa conoscere è systemctl che può essere utilizzato per analizzare lo stato dei servizi e del sistema quando essi sono gestiti tramite systemd. Tramite questo comando possiamo svolgere un grandissimo numero di attività. Un’altra interessante utility direttamente connessa con systemd è journalctl che può essere utilizzato per ottenere il contenuto del journal di systemd, contenente tutti i messaggi di log.

Con tutta l’enorme mole di operazioni che permette, systemd può essere al scelta giusta da adottare per una perfetta gestione del vostro sistema.

Vincenzo Abate

Lascia un commento

Back to top button