En esta generación de RedHat y CentOS llegan con un cambio total de paradigma en cuento al inicio del sistema operativo y los servicios que cargan con él, prácticamente durante toda la existencia de GNU/Linux y prácticamente cualquier otro Unix se ha sabido que el proceso número 1 es INIT el padre de todo dentro del sistema operativo. Pero ya no mas, es el turno de Systemd
INIT
Init es un proceso muy bien conocido tanto en GNU/Linux como todos Unix que están ahí a fuera, pero tiene un punto débil, a pesar de que es el primer proceso que se ejecuta en un sistema multitarea paradójicamente es un proceso lineal, primero carga driver por driver, luego servicio por servicio no hay ninguna prioridad de carga , así hasta que al terminar su ejecución queda la pantalla de Login dejándonos saber que el sistema operativo está listo para funcionar.
Este método monolítico y lineal hace que INIT tarde mucho en dejar el sistema operativo listo para operar, en esencia hace su trabajo muy bien, tan bien que INIT es el proceso por excelencia para arrancar cualquier unix sin embargo ahora con las modas de los sistemas que arrancan casi de inmediato con solo encender la computadora se requiere mayor velocidad de arranque y es aquí donde entra Systemd
Systemd
SystemD es el nuevo proceso 1, se incluye en algunas distribuciones de Linux y en CentOS 7 a partir de ahora.
Systemd es un proceso multihilos, esto significa que lanza todos los procesos posibles al mismo tiempo, al mismo tiempo carga, apache, mysql, smtp , pop3 y todos servicios, a diferencia de INIT que espera a que cargue uno por esta vez carga todo a la vez, el resultado es que cualquier maquina con CentOS 7 debería arranar en menos de 5 segundos una vez cargado el SystemD
Habrá que darle una oportunidad a Systemd para saber si es realmente vale la pena sustituir todos los Init que hasta hoy que han sido muy estables y hacen su función muy bien.
Que cambia con Systemd
La forma de configurar el sistema, los script de arranque de servicios, la forma de arrancar servicios, reiniciarlos o pararlos.
Por ejemplo en las versiones CentOS 6.x la llamada manual para arranque y paro de servicios es con el comando services + nombre de servicio + start,stop,restart,status
Por ejemplo
Service mysqld stop
Esto cambia al usar Systemd
En systemd el comando es systemctl + start,stop,restart,status + nombre de servicio
systemctl stop mysqld
En CentOS 6.x y anteriores desactivar un servicio del arranque es con el comando chkconfig
Activar o desactivar mysql en el INIT 3 y 5 para arranque automático
chkconfig --level 35 mysql on
chkconfig --level 345 mysql off
en CentOS 7 con systemd
systemctl enable mysqld
systemctl disable mysqld
Ahora un minihowto como agregar un servicio de arranque usando Systemd
Crear un archivo con extensión .service en /usr/lib/systemd/system por ejemplo
/usr/lib/systemd/system/dragon.service
Contenido:
[Unit]
Description=Servicio de Last Dragon
[Service]
Type=oneshot
ExecStart=/bin/startdragon
[Install]
WantedBy=multi-user.target
/bin/startdragon es un script bash que lanza el servicio, cargando módulos y programas necesario para que el servicio funcione.
El ejemplo anterior es básicamente la carga de un servicio pero que no puede ser detenido, por ejemplo un driver o un programa que no necesita un proceso de parado, pero si se requiere parar el servicio o programa se le anexa otra línea la de ExecStop
[Unit]
Description=Servicio de Last Dragon
[Service]
Type=oneshot
ExecStart=/bin/startdragon
ExecStop=/bin/stopdragon
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Ahora una demostración del poder de systemd, en el primer video carga un CentOS 6 que optimice para que arranque lo más rápido posible. El segundo sistema operativo en el video es un CentOS 7 que no está optimizado, esta como outbox , aun así se puede apreciar que SystemD sin optimizar es más rápido que un arranque con INIT optimizado.
Hola que tal, soy uno de los que aun y para esta fecha no le convence lo de SystemD , seria genial que hiciera un post con respecto al rendimiento de systemD y la estabilidad. muchas gracias y adelante.
Es que no hay mucho que decir, realmente tiene mucho rendimiento, claro que ese momento solo sirve en el arranque del sistema, si tienes funcionando init y casi nunca reinicias no tiene ningún caso migrarse, no hay prisa