Linux - SystemD Fundamentals - Fundamentos de SystemD

Page 1

SystemD Gestiรณn avanzada de Sistemas Operativos Gnu/Linux

Expositor: Marcos Pozas S.

Ingeniero en Telecomunicaciones, Conectividad & Redes Versiรณn 1.0


I.- Conceptos bรกsicos

Material elaborado por Marcos Pozas S.


¿Qué es SystemD? • Systemd es un Administrador de sistemas y servicios para Sistemas Operativos basados en GNU/Linux. • SystemD es un conjunto de bloques básicos de compilación para un sistema Linux. Proporciona un gestor de sistemas y servicios que se ejecuta como PID 1 e inicia el resto del sistema. • proporciona una notable capacidad de paralelización, utiliza la activación de socket y D-Bus para iniciar los servicios, permite el inicio de demonios bajo demanda, realiza un seguimiento de los procesos con el uso de los grupos de control de Linux, mantiene los puntos montaje y servicios de montaje automático e implementa un elaborado sistema de gestión de dependencias basado en un control lógico de los servicios.


¿Qué es SystemD? • SystemD es compatible con los scripts de inicialización de SysV y LSB y funciona como un reemplazo de SysVinit. • Otras partes incluyen un demonio de registro, utilidades para controlar la configuración básica del sistema, tales como el nombre del equipo, la fecha, la configuración regional, la lista de usuarios registrados y contenedores y máquinas virtuales en ejecución, cuentas del sistema, directorios y configuraciones de tiempo de ejecución y demonios para gestionar una configuración de red simple, sincronización horaria de la red, reenvío de registros y resolución de nombres.


Estructura de SystemD


Linux Boot Process – Legacy Mode El proceso de arranque de un sistema linux consta de seis etapas: 1.- BIOS: Sistema básico de configuración. La bios inicia MBR. 2.- MBR: Registro de arranque maestro que inicia el Grub. 3.- GRUB: Cargador de arranque que ejecuta el Kernel. 4.- Kernel: Inicia el /sbin/init. 5.- Init: Lanza los programas de Runlevel. 6.- RunLevel: Aquí encontramos las aplicaciones por nivel de ejecución (la ruta puede variar, pero normalmente » /etc/rc.d/rc*.d/».


¿Qué es SysVinit? • SysVinit es uno de los más antiguos y vigentes Administradores de sistemas y servicios para Sistemas basados sobre Linux. Todavía es muy usado sobre muchas de las Distros GNU/Linux de trayectorias, y nuevas, como Devuan. De SysVinit como programa se puede destacar lo siguiente:

•“Es el primer proceso en ejecución tras la carga del kernel y

el que genera todos los demás procesos, se ejecuta como demonio de init y por lo general, tiene el PID 1. Provee un proceso estándar para controlar cuáles programas init lanza o detiene en un determinado nivel de ejecución

”.


“SystemD v/s SysVinit

v/s

init”

• A diferencia de “init” (Administrador de sistemas y servicios inicial de los sistemas Unix), que arrancaba los servicios de mediante un único script denominado “/etc/rc”, SysVinit empezó a usar el esquema de directorios en “/etc/rc.d/” que contenían los scripts de arranque/parada de los distintos servicios. • A nivel de paquetes y funciones SysVinit contiene programas para controlar el arranque, ejecución y descarga de todos los demás programas. • Entre estos se pueden mencionar: • halt, init, killall5, last, lastb, mesg, pidof, poweroff, reboot, runlevel, shutdown, sulogin, telinit, utmpdump y wall. Información importante para aquellos que deseasen instalar y usar SysVinit.


“SystemD v/s SysVinit

v/s

init”

• Hasta el día de hoy, la lucha entre Systemd y SysVinit ha sido dura, y digna de comparación a la de WhatsApp y Telegram. • Y si bien es cierto que el venerable SysVinit tiene fallas o limitaciones (dependiendo del punto de vista de cada quien), las cuales son probablemente solucionables de alguna forma. • los partidarios de Systemd suelen afirmar atrevidamente que Systemd es actualmente el mejor de todos los Administradores de sistemas y servicios inicial de los sistemas Unix actuales.


¿Será posible utilizar SystemD e SysVinit simultáneamente? • Por último, y no menos importante, nos encontramos a la maravillosa alternativa de Systemd-shim. El cual según la página de paquetería de DEBIAN es un paquete que: • “emula la función Systemd que se requiere para ejecutar los ayudantes de systemd sin usar el servicio init”.


¿Existirán otras alternativas? En resumen, incluyendo a las mencionadas, tenemos entre las actuales alternativas de “Administradores de sistemas y servicios para Sistemas” (init systems) para Linux: • openrc • runit • s6 • shepherd • sinit • systemd • systemd-shim • sysvinit


Puntos destacables en SystemD • El objetivo de Systemd es proporcionar una forma única y centralizada de gestionar el proceso de inicio de principio a fin. • Inicia y detiene los procesos y servicios mientras hace un seguimiento de sus dependencias. Incluso puede iniciar un proceso como respuesta a un requisito de dependencia de otro proceso. • Además de iniciar y detener procesos durante el tiempo de arranque, Systemd también puede iniciarse en cualquier momento cuando el sistema está encendido en respuesta a ciertos eventos de disparo, como cuando un dispositivo está conectado. • Tampoco requiere procesos para demonizarse a sí mismos. A diferencia de SysVinit, SystemD puede manejar servicios que se ejecutan sin tener que pasar por el largo proceso de convertirse en demonios.


Puntos destacables en SystemD • A diferencia de SysVinit, systemd conoce y realiza un seguimiento de todos los procesos, incluidos los PID, y obtener información sobre los procesos es mucho más sencillo para los administradores de sistemas en systemd. • Systemd soporta contenedores que son básicamente entornos de servicio aislados sin el requerimiento de máquinas virtuales. Esto tiene un gran potencial para diseñar sistemas más seguros y sencillos en el futuro.


En conclusión... • Al haber sido adoptado por todas las principales distribuciones de GNU/Linux, SystemD está aquí para quedarse. Independientemente de lo que digan algunos administradores de sistemas por la razón que sea, SystemD es el futuro de la corriente principal de Linux, les guste o no a los usuarios individuales, lo que, teniendo en cuenta sus claras ventajas, no es necesariamente algo malo. • Para el usuario medio aporta tiempos de arranque más rápidos y probablemente sistemas más fiables, mientras que en el futuro las distribuciones que lo adopten pueden llegar a ser más «compatibles» entre sí. En cuanto al usuario, nos beneficiaremos definitivamente del diseño de sistemas más actualizados y contemporáneos que aportan a nuestros dispositivos de trabajo.


Actividad formativa - SystemD • Le invitamos a buscar, descargar y posteriormente instalar una “instancia” (S.O. Virtualizado) el cual opere distintos “Administradores de sistemas y servicios para Sistemas”GNU/Linux. • Posteriormente, comente con sus compañeros y docentes su experiencia (utiizando los comandos que se presentan en la imagen), utilizando el servicio SSH.


II.- Gestiรณn del S.O. utilizando SystemD


Consideraciones previas Para poner en práctica el contenido que se dará a conocer, será necesario contar una “instancia virtualizada” de GNU/linux en su estación de trabajo (en este caso, debera ejecutar CentOS/RHEL 7.x ó Posterior). Si desea contar con un mayor detalle respecto de ésta presentación, solicite al relator la guía complementaria de ”Gestión avanzada de Sistemas Operativos GNU/Linux”. Si Ud. cuenta con acceso a “RedHat Academy”, diríjase al curso “Administración de sistemas RedHat III–254ES” (capítulo 1 – Control de Servicios y Demonios), con el fin de utilizar ésta información como material complementario al curso.


I.- Conceptos básicos de SystemD El comando systemctl se usa para administrar diferentes tipos de objetos systemd denominados “unidades”. Utilizando el comando “systemctl –t help” podrá visualizar una lista de los tipos de unidades disponibles en su S.O. • Las unidades.service representan servicios del sistema. Este tipo de unidad se usa para iniciar los demonios con más frecuencia, como un servidor WEB. • Las unidades.socket representan sockets de comunicación entre procesos. • Las unidades.path se usan para demorar la activación de un servicio hasta que ocurra un cambio en el sistema de archivos espeífico, ej: Servidor de impresión. • Las unidades.target permiten ajustar los niveles de ejecución de las aplicaciones como del Sistema Operativo.


II.- Iniciando el trabajo con SystemD Luego de arrancar su mรกquina, proceda a ejecutar los siguientes comandos:

Posteriormente, comente respecto de la interacciรณn con su relator.


III.- Gestión de servicios con SystemD Luego de acceder a su terminal, utilice en la sección $name, la palabra “ssh” y luego proceda a ejecutar las siguientes instrucciones:

Posteriormente, comente respecto de la interacción con su relator.


IV.- Estados de unidades SystemD El estado de un servicio puede visualizarse utilizando el comando “systemctl status $nombre.$unidad ; Si no se proporciona el tipo de unidad, systemctl mostrarĂĄ el estado de la unidad de servicio en caso que exista una.


V.-Gestiรณn global de SystemD Luego de acceder a su terminal, proceda a ejecutar los siguientes comandos:

Posteriormente, comente respecto de la interacciรณn con su relator.


VI.- Gestiรณn de Registros - SystemD Luego de acceder a su terminal, proceda a ejecutar los siguientes comandos:

Posteriormente, comente respecto de la interacciรณn con su relator.


VII:-GestiĂłn de recursos energĂŠticos sobre el Sistema Operativo Luego de acceder a su terminal, proceda a ejecutar los siguientes comandos:

Posteriormente, comente respecto de la interacciĂłn con su relator.


VIII.- Niveles de ejecución en entornos GNU/Linux y su gestión a través de SystemD • El target estándar es default.target, que es un alias predefinido para graphical.target (que corresponde al antiguo nivel de ejecución 5). Para cambiar el target predeterminado en el arranque.De aquí nace una pregunta: ¿A qué se refiere con “nivel de ejecución”? • El término runlevel o nivel de ejecución se refiere al modo de operación en los sistemas operativos que implementan el estilo de sistema de arranque de iniciación tipo “UNIX System V”.


VIII.- Niveles de ejecuciรณn existentes en Sistemas Operativos GNU/Linux La mayor parte de los usuarios puede comprobar el nivel de ejecuciรณn actual de su sistema operativo, utilizando Los siguientes comandos:


VIII.- Niveles de ejecución existentes en Sistemas Operativos GNU/Linux • Para visualizar el nivel de ejecución definido en el sistema operativo, ejecute el siguiente comando: • # systemctl get-default • Si Ud. Desea cambiar los parámetros (nivel de ejecución del sistema operativo), utilice la siguiente instrucción: • # systemctl set-default TARGET.target • Recuerde que systemD utiliza “targets” en cada uno de los niveles de ejecución. Por defecto, los principales targets son: • Multi-user.target: Representa al nivel de ejecución 3 • Graphical.target: Representa al nivel de ejecución 5


IX.- Resolución de problemas utilizando SystemD

Como ejemplo, se procederá a investigar Un error asociado al servicio “systemd-modules-load”:


IX.- Resoluciรณn de problemas utilizando SystemD


IX.- Resoluciรณn de problemas utilizando SystemD


IX.- Resoluciรณn de problemas utilizando SystemD


X.- Comentarios


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.