ES - AR - Red Hat RHCSA™ 9 Cert Guide - EX200 (582 - 872)

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 291

Machine Translated by Google

5. Mire el archivo /var/log/messages. Ves un mensaje de error


fue registrado aquí.
6. Desde el shell del estudiante, escriba logger hola. Verás el
mensaje que aparece en el archivo /var/log/messages en tiempo real.
7. En la terminal tail ­f, presione Ctrl­C para dejar de rastrear los mensajes.
archivo.

8. Escriba tail ­20 /var/log/secure. Esto muestra las últimas 20 líneas en /


var/log/secure, que también muestra los mensajes que los errores de
contraseña han generado anteriormente.

Trabajar con systemd­journald

El servicio systemd­journald almacena mensajes de registro en el diario, un


archivo binario que se almacena temporalmente en el archivo /run/log/journal.
Este archivo se puede examinar usando el comando journalctl.

Usando journalctl para buscar eventos

La forma más sencilla de utilizar journalctl es simplemente escribiendo el


comando. Muestra que se han escrito eventos recientes en el diario desde
la última vez que se inició su servidor. El resultado de este comando se
muestra en el paginador menos y, de forma predeterminada, verá el
comienzo del diario. Debido a que el diario se escribe desde el momento
en que se inicia el servidor, el inicio del resultado muestra mensajes
de registro relacionados con el inicio. Si quieres ver los últimos mensajes que han sido
Machine Translated by Google

registrado, puede usar journalctl ­f, que muestra las últimas líneas de los
mensajes donde se agregan automáticamente nuevas líneas de registro.
También puede escribir journalctl y usar G (mayúscula) para ir al final del
diario. También tenga en cuenta que las opciones de búsqueda / y ?
trabajar en la salida de journalctl. El ejemplo 13­3 muestra un resultado parcial de esto.
dominio.

Ejemplo 13­3 Información de registro de observación generada por systemd­


journald

Haga clic aquí para ver la imagen del código

­­ Los registros comienzan el sábado 2019­06­08 04:45:34 EDT, finalizan


04:56:11EDT. ­­
08 de junio 04:45:34 kernel server1.example.com: Linux el8.x86_64
(mockbuild@x86­vm­08.b>
08 de junio 04:45:34 kernel server1.example.com: Comman
IMAGE=(hd0,msdos1)/vmlinuz­4.18.0­80.e> 08 de junio
04:45:34 kernel server1.example.com: operaciones deshabilitadas Jun 08
04:45:34
kernel server1.example.com: x86/fp
característica 0x001: 'x87 flotante po>
08 de junio 04:45:34 kernel server1.example.com: función x86/fp 0x002:
'registros SSE'
8 de junio 04:45:34 kernel server1.example.com: función x86/fp 0x004:
'registros AVX'
08 de junio 04:45:34 kernel server1.example.com: x86/fp
característica 0x008: 'Registro de límites MPX>
Machine Translated by Google

08 de junio 04:45:34 kernel server1.example.com: x86/fp


característica 0x010: 'MPX CSR'
08 de junio 04:45:34 kernel server1.example.com: x86/fp
576, xstate_sizes[2]: 256
08 de junio 04:45:34 kernel server1.example.com: x86/fp
832, xstate_sizes[3]: 64
8 de junio 04:45:34 kernel server1.example.com: x86/fp 896, xstate_sizes[4]:
64
08 de junio 04:45:34 kernel server1.example.com: x86/fp presenta 0x1f, el
tamaño del contexto es 96>

Lo que hace que journalctl sea un comando flexible es que sus numerosas
opciones de filtrado le permiten mostrar exactamente lo que necesita.
El ejercicio 13­2 muestra algunas de las opciones más interesantes.

Ejercicio 13­2 Descubriendo journalctl

1. Escriba diarioctl. Verá el contenido del diario desde la última vez que se inició
su servidor, comenzando desde el principio del diario. El contenido se
muestra en less, por lo que puede utilizar comandos less comunes
para recorrer el archivo.
2. Escriba q para salir del buscapersonas. Ahora escriba journalctl ­­no­pager.
Esto muestra el contenido del diario sin utilizar un buscapersonas.
3. Escriba diarioctl ­f. Esto abre el modo de vista en vivo de journalctl, que le
permite ver los nuevos mensajes desplazándose en tiempo real.
Presione Ctrl­C para interrumpir.
Machine Translated by Google

4. Escriba journalctl, presione la barra espaciadora y luego presione la tecla Tab


dos veces. Cuando se le solicite ver todas las posibilidades, escriba y y
luego presione la tecla Intro. Esto muestra opciones específicas que se
pueden utilizar para filtrar. Escriba, por ejemplo, journalctl _UID=1000 para
mostrar los mensajes que se han registrado para su usuario estudiante.
cuenta.

5. Escriba journalctl ­n 20. La opción ­n 20 muestra las últimas 20 líneas.


del diario (al igual que tail ­n 20).
6. Escriba journalctl ­p err. Este comando solo muestra errores.
7. Si desea ver los mensajes del diario que se han escrito en un período de
tiempo específico, puede utilizar los comandos ­­since y ­­until.
Ambas opciones toman el parámetro de tiempo en el formato AAAA­MM­DD
hh:mm:ss. Además, puedes utilizar ayer, hoy y mañana como parámetros.
Entonces, escriba journalctl ­­desde ayer para mostrar todos los
mensajes que se han escrito desde ayer.

8. journalctl también le permite combinar diferentes opciones. Entonces,


Si desea mostrar todos los mensajes con un error de prioridad que se han
escrito desde ayer, utilice journalctl ­­since ayer ­
p errar.
9. Si necesita tantos detalles como sea posible, utilice journalctl ­o
verboso. Esto muestra diferentes opciones que se utilizan al escribir
en el diario (consulte el Ejemplo 13­4). Todas estas opciones se pueden
utilizar para indicarle al comando journalctl qué información
específica está buscando. Escriba, por ejemplo, journalctl
Machine Translated by Google

_SYSTEMD_UNIT=sshd.service para mostrar más información

sobre la unidad sshd Systemd.

10. Escriba journalctl ­­dmesg. Esto muestra mensajes relacionados con el kernel.

solo. No mucha gente usa este comando, ya que el comando dmesg

da exactamente el mismo resultado.

En el ejercicio anterior, escribió journalctl ­o verbose para mostrar una salida

detallada. El ejemplo 13­4 muestra un ejemplo de salida detallada. Como

puede ver, esto proporciona información detallada para todos los elementos que se

han registrado, incluido el PID, el ID del usuario asociado y la cuenta de grupo, el

comando asociado y más. Esta información detallada puede ayudarle

a depurar unidades Systemd específicas.

Ejemplo 13­4 Mostrar información de registro detallada con journalctl


­o detallado

Haga clic aquí para ver la imagen del código

[root@server1 ~]# journalctl _SYSTEMD_UNIT=sshd.se ­ Los registros


comienzan el sábado 2019­06­08 04:45:34 EDT, finalizan
05:01:40EDT. ­­
Sábado 2019­06­08 04:45:52.633752 EDT [s=53e57e248143
;i=898;b=f35bb68348284f9ead79c3>
_BOOT_ID=f35bb68348284f9ead79c3c6750adfa1
_MACHINE_ID=5aa095b495ed458d934c54a88078c165
_HOSTNAME=servidor1.ejemplo.com
Machine Translated by Google

PRIORIDAD=6
_UID=0
_GID=0
_SYSTEMD_SLICE=system.slice
_CAP_EFFECTIVE=3ffffffff
_TRANSPORTE=syslog
SYSLOG_FACILITY=10
SYSLOG_IDENTIFIER=sshd
SYSLOG_PID=1211
MESSAGE=Servidor escuchando en 0.0.0.0 puerto 22.
_PID=1211
_COMM=sshd
_EXE=/usr/sbin/sshd
_CMDLINE=/usr/sbin/sshd ­D ­oCiphers=aes256­gc
chacha20­poly1305@openssh.com,aes256­>
_SELINUX_CONTEXT=system_u:system_r:sshd_t:s0­s
_SYSTEMD_CGROUP=/system.slice/sshd.service
_SYSTEMD_UNIT=sshd.service
_SYSTEMD_INVOCATION_ID=728a7dfecd7d436387dcd6e
_SOURCE_REALTIME_TIMESTAMP=1559983552633752
Sábado 2019­06­08 04:45:52.634696 EDT [s=53e57e248143
;i=899;b=f35bb68348284f9ead79c3>
_BOOT_ID=f35bb68348284f9ead79c3c6750adfa1
líneas 1­26

Hay algunas opciones más interesantes para usar con el comando

journalctl. La opción ­b muestra un registro de inicio, que incluye solo los

mensajes que se generaron durante el inicio. El


Machine Translated by Google

La opción ­x agrega explicación a la información que se muestra. Este

La explicación facilita la interpretación de mensajes específicos. Tú

También debería considerar la opción ­u, que le permite ver

mensajes que se han registrado solo para una unidad systemd específica.

Utilice, por ejemplo, journalctl ­u sshd para ver todos los mensajes que tienen

se ha registrado para el servicio sshd. La Tabla 13­3 proporciona una descripción general.

de las opciones de journalctl más interesantes.

Tabla 13­3 Opciones de journalctl más útiles

Uso de la opción

­F Muestra la parte inferior del diario y agrega novedades en vivo.

mensajes que se generan

­b Muestra el registro de arranque

­X Agrega una explicación adicional a los elementos registrados.

­en Se utiliza para filtrar mensajes de registro solo para una unidad específica

­pag Permite filtrar mensajes con un específico


Machine Translated by Google

Uso de la opción

prioridad

Preservando el diario Systemd

De forma predeterminada, el diario se almacena en el archivo /run/log/journal.

Todo el directorio /run se utiliza únicamente para información sobre

el estado actual del proceso, lo que significa que el diario se borra cuando se

reinicia el sistema. Para que el diario sea persistente entre reinicios del

sistema, debe crear un directorio /var/log/journal.

El almacenamiento permanente del diario requiere el parámetro

Storage=auto en /etc/systemd/journald.conf, que está configurado de forma predeterminada.

Este parámetro puede tener diferentes valores:

Storage=auto El diario se escribirá en el disco si el directorio /var/log/

journal existe.

Storage=volatile El diario se almacenará únicamente en el directorio /

run/log/journal.

Almacenamiento = persistente El diario se almacenará en el disco en el

directorio /var/log/journal. Este directorio se creará automáticamente si

no existe.

Almacenamiento = ninguno No se almacenarán datos, pero el reenvío a otros

destinos, como el búfer de registro del kernel o syslog, seguirá funcionando.


Machine Translated by Google

Incluso cuando el diario se escribe en el archivo permanente en /


var/log/journal, eso no significa que el diario se conserve para siempre.
El diario tiene una rotación de registros incorporada que se utilizará
mensualmente. Además, el diario está limitado a un tamaño máximo del
10 por ciento del tamaño del sistema de archivos en el que se encuentra y
dejará de crecer si menos del 15 por ciento del sistema de archivos sigue libre.
Si eso sucede, los mensajes más antiguos del diario se eliminan
automáticamente para dejar espacio a los mensajes más nuevos. Para
cambiar esta configuración, puede modificar el archivo /etc/systemd/
journald.conf, como se muestra en el Ejemplo 13­5 (junto con otros parámetros que puede co

Ejemplo 13­5 Configuración de parámetros de diario a través


de /etc/systemd/journald.conf

Haga clic aquí para ver la imagen del código

[Diario]
#Almacenamiento=auto

#Comprimir=sí
#Sello=sí
#ModoDividido=uid
#SyncIntervalSec=5m
#RateLimitIntervalSec=30s
#RateLimitBurst=10000
#UsoMáximoSistema=
#SistemaMantenerLibre=
#SystemMaxFileSize=
Machine Translated by Google

#SystemMaxFiles=100
#RuntimeMaxUse=
#RuntimeKeepFree=
#RuntimeMaxFileSize=
#RuntimeMaxFiles=100
#SecRetenciónMax=
#MaxFileSec=1mes
#ForwardToSyslog=no
#ReenviarToKMsg=no
#ForwardToConsole=no
#ForwardToWall=sí
#TTYPath=/dev/consola
#MaxLevelStore=depurar
#MaxLevelSyslog=depurar

Hacer que el diario systemd sea permanente no es difícil de hacer. El


ejercicio 13­3 muestra cómo proceder.

Ejercicio 13­3 Cómo hacer persistente el diario systemd

1. Abra un shell raíz y escriba mkdir /var/log/journal.


2. Antes de que journald pueda escribir la revista en este directorio,
debe establecer la propiedad. Escriba chown root:systemd­journal /
var/log/journal, seguido de chmod 2755 /var/log/journal.
3. Utilice systemctl restart systemd­journal­flush para recargar el
nuevos parámetros de systemd­journald.
4. El diario Systemd ahora es persistente tras los reinicios.
Machine Translated by Google

Configurando rsyslogd

Para asegurarse de que la información que debe registrarse se escriba en la

ubicación donde desea encontrarla, puede configurar el servicio rsyslogd

a través del archivo /etc/rsyslog.conf y archivos desplegables opcionales en /etc/

rsyslog. d. En el archivo /etc/rsyslog.conf encontrará diferentes secciones que le

permitirán especificar dónde


y cómo se debe escribir la información.

Comprensión de los archivos de configuración rsyslogd

Como muchos otros servicios en RHEL, la configuración de rsyslogd no está definida

en un solo archivo de configuración. El archivo /etc/rsyslog.conf es la ubicación

central donde se configura rsyslogd. A partir de este archivo se incluye el contenido

del directorio /etc/rsyslog.d. Este directorio se puede completar instalando

paquetes RPM en un servidor. Cuando busque una configuración de registro

específica, asegúrese de considerar siempre también el contenido de este directorio.

Comprender las secciones de rsyslog.conf

El archivo rsyslog.conf se utiliza para especificar qué se debe registrar y dónde se

debe registrar. Para hacer esto, encontrarás diferentes secciones en el archivo

rsyslog.conf:

#### MÓDULOS ####: rsyslogd es modular. Se incluyen módulos para

mejorar las funciones admitidas en rsyslogd.


Machine Translated by Google

#### DIRECTIVAS GLOBALES ####: Esta sección se utiliza para especificar

parámetros globales, como la ubicación donde se escriben los archivos

auxiliares o el formato de marca de tiempo predeterminado.

#### REGLAS ####: Esta es la parte más importante del archivo

rsyslog.conf. Contiene las reglas que especifican qué información

debe registrarse en qué destino.

Comprensión de las instalaciones, prioridades y destinos de los registros

Para especificar qué información debe registrarse en qué destino,

rsyslogd utiliza instalaciones, prioridades y destinos:

Una instalación especifica una categoría de información que se registra.

rsyslogd utiliza una lista fija de funciones, que no se puede ampliar.

Esto se debe a la compatibilidad con versiones anteriores del servicio

syslog heredado.

Se utiliza una prioridad para definir la gravedad del mensaje que debe

registrarse. Cuando especifica una prioridad, de forma predeterminada se

registran todos los mensajes con esa prioridad y todas las prioridades superiores.

Un destino define dónde se debe escribir el mensaje.

Los destinos típicos son archivos, pero los módulos rsyslog también se

pueden usar como destino para permitir un procesamiento posterior a través

de un módulo rsyslogd.

El ejemplo 13­6 muestra la sección REGLAS en rsyslog.

Ejemplo 13­6 La sección REGLAS en rsyslog.conf


Machine Translated by Google

Haga clic aquí para ver la imagen del código

#### NORMAS ####

# Registra todos los mensajes del kernel en la consola.


# El registro y muchas otras cosas saturan la pantalla.
#kern.* /dev/c

# Registrar cualquier cosa (excepto el correo) de nivel de información o alto


# ¡No registre mensajes de autenticación privados!
*.info;mail.none;authpriv.none;cron.none /var/l

# El archivo authpriv tiene acceso restringido.


autenticaciónpriv.* /era

# Registre todos los mensajes de correo en un solo lugar.


correo.* ­/var/l

# Registrar cosas cron


cron.* /var/l

# Todo el mundo recibe mensajes de emergencia.


*.emergente :omusrmsg:

# Guardar errores de noticias de nivel crítico y superior en como


uucp,noticias.crit
Machine Translated by Google

En el ejemplo 13­6, puedes ver cómo diferentes instalaciones y prioridades

se utilizan para definir ubicaciones donde se puede registrar información. El

Las instalaciones y prioridades disponibles son fijas y no se pueden agregar.

La Tabla 13­4 muestra qué instalaciones están disponibles y la Tabla 13­5

muestra una lista de todas las prioridades.

Tabla 13­4 Instalaciones de rsyslogd

Instalación Usado por

auth/authpriv Mensajes relacionados con la autenticación.

cron Mensajes generados por el servicio crond.

demonio Instalación genérica que se puede utilizar para

demonios no especificados.

núcleo Mensajes del núcleo.

lpr Mensajes generados a través del lpd heredado

sistema de impresión.
Machine Translated by Google

Instalación Usado por

correo Mensajes relacionados con el correo electrónico.

marca Facilidad especial que se puede utilizar para escribir un

marcador periódicamente.

noticias Mensajes generados por las noticias NNTP

sistema.

seguridad Igual que autenticación/authpriv. No debería ser usado

ya no.

registro del sistema Mensajes generados por el sistema syslog.

usuario Mensajes generados en el espacio del usuario.

uucp Mensajes generados por el UUCP heredado

sistema.

local0­7 Mensajes generados por servicios que son

configurado por cualquiera de los locales0 a través

instalaciones locales7.
Machine Translated by Google

Cuando especifica un destino, a menudo se utiliza un archivo. Si el nombre del archivo comienza con un

guión (como en ­/var/log/maillog), los mensajes de registro no se enviarán inmediatamente al archivo, sino

que se

almacenado en búfer para hacer que las escrituras sean más eficientes. Los archivos del dispositivo también pueden ser

utilizado, como /dev/console. Si se utiliza este dispositivo, los mensajes se

escrito en tiempo real en la consola. En los servidores modernos, esto a menudo

No tiene sentido, porque los administradores a menudo inician sesión de forma remota y no ven lo que

sucede en la consola del servidor.

Las funciones de syslog se definieron en la década de 1980 y, para garantizar la compatibilidad con

versiones anteriores, no se pueden agregar nuevas funciones. El resultado es que todavía existen algunas

instalaciones que básicamente ya no sirven para nada, y algunos servicios que se han vuelto

relevantes en una etapa posterior no tienen sus propias instalaciones. Como solución, se pueden utilizar

dos tipos de instalaciones específicas. La función demonio es una función genérica que puede ser

utilizada por cualquier demonio. Además, el local0 a través de

Se pueden utilizar las instalaciones locales7.

Si los servicios que no tienen su propia función rsyslogd necesitan escribir mensajes de registro en

un archivo de registro específico de todos modos, estos servicios se pueden configurar para utilizar

cualquiera de las funciones local0 a local7. A continuación, debe configurar los servicios para utilizar

también estas instalaciones.

El procedimiento que sigue para hacerlo es específico del servicio que está utilizando. Luego, debe

agregar una regla al archivo rsyslog.conf para enviar los mensajes que ingresan a través de esa

instalación a un registro específico.

archivo.
Machine Translated by Google

Para determinar qué tipos de mensajes se deben registrar, puede utilizar diferentes

gravedades en las líneas de rsyslog.conf. Estas gravedades son las prioridades de syslog.

La Tabla 13­5 proporciona una descripción general de las prioridades disponibles en

orden ascendente.

Tabla 13­5 Prioridades de rsyslogd

Prioridad Descripción

depurar Mensajes de depuración que brindarán la mayor

cantidad de información posible sobre el

funcionamiento del servicio.

información
Mensajes informativos sobre el funcionamiento normal del servicio.

aviso Mensajes informativos sobre elementos que podrían

convertirse en un problema más adelante.

advertencia Algo no es óptimo, pero no hay nada real.

(advertir) error todavía.


Machine Translated by Google

Prioridad Descripción

error (err) Se ha producido un error no crítico.

crítico Se ha producido un error crítico.

alerta Mensaje utilizado cuando la disponibilidad del


el servicio está a punto de suspenderse.

emerger Mensaje generado cuando la disponibilidad del

(pánico) el servicio está discontinuado.

Cuando se utiliza una prioridad específica, todos los mensajes con esa prioridad y

superiores se registran de acuerdo con las especificaciones utilizadas en esa regla

específica. Si necesita configurar el registro de forma detallada, donde los mensajes

con diferentes prioridades se envían a diferentes archivos, puede especificar la prioridad

con un signo igual (=) delante, como en la siguiente línea, que escribirá todos los cron.

mensajes con solo la prioridad de depuración a un archivo específico con el nombre /var/

log/cron.debug. El ­ delante de la línea especifica las escrituras

en el búfer para que la información se registre de una manera más eficiente.

Haga clic aquí para ver la imagen del código


Machine Translated by Google

cron.=depurar ­/var/log/cron.debug

Consejo

No es necesario que se aprenda de memoria los nombres

de las instalaciones y prioridades de rsyslogd. Todos están listados

en man 5 rsyslog.conf. En el examen, usted tiene acceso a las

páginas de manual, por lo que esta información será fácilmente


accesible.

El ejercicio 13­4 muestra cómo cambiar rsyslog.conf. Configura el servicio Apache

para registrar mensajes a través de syslog y crea una regla que registra los

mensajes de depuración en un archivo de registro específico.

Ejercicio 13­4 Cambiando las reglas de rsyslog.conf

1. De forma predeterminada, el servicio Apache no registra a través de rsyslog

sino que mantiene su propio registro. Vas a cambiar eso. Para comenzar,

escriba dnf install ­y httpd para asegurarse de que el servicio Apache esté
instalado.

2. Después de instalar el servicio Apache, abra su archivo de configuración /etc/

httpd/conf/httpd.conf y verifique que tenga la siguiente línea:

Registro de errores registro del sistema:local1


Machine Translated by Google

3. Escriba systemctl reiniciar httpd.

4. Cree una línea en el archivo /etc/rsyslog.conf que enviará todos

mensajes que recibe para la instalación local1 (que ahora utiliza el servicio

httpd) al archivo /var/log/httpd­error.log. Para hacer esto, incluya la siguiente

línea en la sección #### REGLAS ####


del archivo:

Haga clic aquí para ver la imagen del código

local1.error /var/log/httpd­error.log

5. Dígale a rsyslogd que recargue su configuración usando systemctl

reinicie rsyslog.

6. Todos los mensajes de error de Apache ahora se escribirán en el archivo

httpd­error.log.

7. Desde el navegador Firefox, vaya a http://localhost/index.html.

Debido a que todavía no existe ninguna página index.html, esto se escribirá en el

registro de errores.

8. Cree un archivo complementario que registre los mensajes de depuración en un archivo específico.

también. Para hacer esto, escriba echo "*.debug /var/log/messages­

debug" /etc/rsyslog.d/debug.conf.

9. Nuevamente, reinicie rsyslogd usando systemctl restart rsyslog.

10. Utilice el comando tail ­f /var/log/messages­debug para abrir un

rastrear el archivo recién creado.

11. Desde una segunda terminal, escriba logger ­p daemon.debug

"Mensaje de depuración del demonio". Verás el mensaje de depuración.


Machine Translated by Google

pasando por.

12. Presione Ctrl­C para cerrar el archivo de registro de depuración.

Archivos de registro rotativos

Para evitar que los mensajes de syslog llenen su sistema por completo,

puede rotar los mensajes de registro. Eso significa que cuando se alcanza un cierto

umbral, el archivo de registro antiguo se cierra y se abre un archivo de registro

nuevo. La utilidad logrotate se inicia periódicamente para encargarse de la rotación de

los archivos de registro.

Cuando se rota un archivo de registro, el archivo de registro antiguo generalmente se copia

a un archivo que tiene la fecha de rotación. Entonces, si /var/log/messages se rota el 8

de junio de 2023, el nombre del archivo rotado será /var/log/messages­20230608.

De forma predeterminada, se guardan cuatro archivos de registro antiguos en el sistema.

Los archivos anteriores a ese período se eliminan del sistema automáticamente.

Advertencia

Los archivos de registro que se han rotado no se almacenan

en ningún lugar; simplemente se han ido. Si la política de su empresa

requiere que pueda acceder a información sobre eventos que

ocurrieron hace más de cinco semanas, por ejemplo, debe hacer una

copia de seguridad de los archivos de registro o configurar un

servidor de registro centralizado donde logrotate


Machine Translated by Google

mantiene los mensajes rotados durante un período significativamente

más largo.

La configuración predeterminada para la rotación de registros se guarda en

el archivo /etc/logrotate.conf (consulte el Ejemplo 13­7).

Ejemplo 13­7 /etc/logrotate.conf Contenido de muestra

Haga clic aquí para ver la imagen del código

[root@server1 cron.d]# cat /etc/logrotate.conf # consulte "man


logrotate" para obtener más detalles

# las opciones globales no afectan la inclusión anterior d

# rotar archivos de registro semanalmente

semanalmente

# mantener 4 semanas de retrasos


rotar 4

# crear archivos de registro nuevos (vacíos) después de rotar los antiguos


crear

# usar la fecha como sufijo del archivo rotado


fechatexto

# descomentar esto si desea que sus archivos de registro se compriman


Machine Translated by Google

#comprimir

# paquetes colocan información de rotación de registros en este include /etc/


logrotate.d

# También se pueden configurar registros específicos del sistema.

Las configuraciones más importantes utilizadas en este archivo de configuración le indican

a logrotate que rote los archivos semanalmente y conserve cuatro archivos antiguos.

versiones del archivo. Puede obtener más información sobre otros

parámetros en este archivo a través del comando man logrotate.

Si archivos específicos necesitan configuraciones específicas, puede

crear un archivo de configuración para ese archivo en /etc/logrotate.d. La

configuración para ese archivo específico sobrescribe la

configuración predeterminada en /etc/logrotate.conf. Encontrará que ya existen

diferentes archivos en este directorio para encargarse de algunos de los archivos de configuración.

Resumen
En este capítulo, aprendió a configurar el registro. Leyó cómo se utilizan los

servicios rsyslogd y journald en RHEL para mantener información de registro y

aprendió a administrar los registros escritos por estos servicios. También

aprendió a configurar la rotación de registros y hacer que el diario sea persistente.


Machine Translated by Google

Tareas de preparación de exámenes

Como se menciona en la sección "Cómo utilizar este libro" en el

Introducción, tiene varias opciones para la preparación del examen: el

laboratorios de final de capítulo; las tablas de memoria en el Apéndice C; Capítulo 27,

“Preparación Final”; y los exámenes de práctica.

Revisar todos los temas clave

Revise los temas más importantes del capítulo, anotados con el

Icono de tema clave en el margen de la página. La tabla 13­6 enumera una

referencia para estos temas clave y el número de página en el que cada


es encontrado.

Tabla 13­6 Temas clave para el Capítulo 13

Tema clave
Descripción Página
Elemento

Párrafo explicación del diario systemd 290

Párrafo explicación de rsyslogd 290


Machine Translated by Google

Tema clave
Descripción Página
Elemento

Tabla 13­2 Descripción general de los archivos de registro del sistema 292

Tabla 13­3 Opciones de journalctl más útiles 298

Ejercicio 13­3 Hacer el diario systemd 300

Persistente

Tabla 13­4 Instalaciones 302

Tabla 13­5 Prioridades de rsyslogd 303

Tablas y listas completas de memoria

Imprima una copia del Apéndice C, “Tablas de memoria” (que se encuentra en la

sitio web complementario), o al menos la sección de este capítulo, y

Completar las tablas y listas de memoria. Apéndice D, “Memoria

Clave de respuestas de tablas”, incluye tablas completas y listas para verificar.

tu trabajo.
Machine Translated by Google

Definir términos clave

Defina los siguientes términos clave de este capítulo y verifique sus respuestas
en el glosario:

diario­systemd

rsyslogd

diarioctl

rotación de registros

instalación

prioridad

destino

Preguntas de revisión

Las preguntas que siguen están destinadas a ayudarle a evaluar su


conocimiento de conceptos y terminología y la amplitud de su conocimiento.
Puede encontrar las respuestas a estas preguntas en el Apéndice A.

. ¿Qué archivo se utiliza para configurar rsyslogd?


Machine Translated by Google

. ¿Qué archivo de registro contiene mensajes relacionados con la autenticación?

. Si no configura nada, ¿cuánto tiempo tardarán en eliminarse los archivos de registro?

. ¿Qué comando le permite registrar un mensaje del comando?

línea a la instalación del usuario, utilizando la prioridad de aviso?

. ¿Qué línea agregarías para escribir todos los mensajes con una prioridad de

información al archivo /var/log/messages.info?

. ¿Qué archivo de configuración le permite permitir que la revista crezca?

¿Más allá de sus restricciones de tamaño predeterminadas?

. ¿Qué comando le permite verificar el inicio del diario systemd?

mensajes, donde se incluye una explicación?

. ¿Qué comando le permite ver todos los mensajes registrados en el diario que se

han escrito para el PID 1 entre las 9:00 a. m. y las 3:00 p. m.?

. ¿Qué comando usas para ver todos los mensajes que han sido

¿Ha iniciado sesión en el servicio sshd?

. ¿Qué procedimiento le permite hacer el diario systemd?

¿persistente?

Laboratorio de fin de capítulo


Machine Translated by Google

Ahora ha aprendido cómo trabajar con el inicio de sesión en Red Hat Enterprise Linux 9 y

sabe cómo configurar rsyslogd y journald. Ahora puede completar el laboratorio de final

de capítulo para reforzar estas habilidades recién adquiridas.

Laboratorio 13.1

1. Configure el diario para que sea persistente durante los reinicios del sistema.

2. Cree un archivo de configuración que escriba todos los mensajes con una información.

prioridad al archivo /var/log/messages.info.

3. Configure logrotate para conservar diez versiones antiguas de archivos de registro.


Machine Translated by Google

Capítulo 14

Gestión del almacenamiento

En este capítulo se tratan los siguientes temas:

Comprender las particiones MBR y GPT

Gestión de particiones y sistemas de archivos

Montaje de sistemas de archivos

En este capítulo se tratan los siguientes objetivos del examen RHCSA:

Enumerar, crear y eliminar particiones en discos MBR y GPT

Configure sistemas para montar sistemas de archivos en el arranque mediante ID

universalmente único (UUID) o etiqueta

Agregue nuevas particiones y volúmenes lógicos y cambie a un sistema de forma no

destructiva

Cree, monte, desmonte y utilice sistemas de archivos vfat, ext4 y xfs

Trabajar con almacenamiento es una tarea importante para un administrador

de Linux. En este capítulo, adquirirá el primer conjunto de habilidades de almacenamiento

esenciales. Aprenderá a crear y administrar particiones, formatearlas con el sistema de

archivos que necesita usar y montar estos sistemas de archivos.


Machine Translated by Google

“¿Ya lo sé?” Prueba

El cuestionario “¿Ya lo sé?” El cuestionario le permite evaluar si debe leer este capítulo

completo detenidamente o pasar a la sección "Tareas de preparación para el

examen". Si tiene dudas sobre sus respuestas a estas preguntas o sobre su propia

evaluación de su conocimiento de los temas, lea el capítulo completo. La Tabla

14­1 enumera los títulos principales de este capítulo y sus correspondientes “¿Ya lo

sé?” preguntas del cuestionario. Puede encontrar las respuestas en el Apéndice A,

“Respuestas a la pregunta '¿Ya lo sé?' Cuestionarios y preguntas de repaso”.

Tabla 14­1 “¿Ya lo sé?” Mapeo de sección a pregunta

Sección de Temas de Fundación Preguntas

Comprender las particiones 1 y 2 de MBR y GPT

Gestión de particiones y sistemas de archivos 3–6

Montaje de sistemas de archivos 7–10

. ¿Cuál de las siguientes no es una ventaja de usar un GUID?

tabla de particiones en lugar de usar una tabla de particiones MBR?


Machine Translated by Google

1. El tiempo de acceso a un directorio es más rápido.

2. Una partición puede abordar una cantidad total de 8 ZiB.

3. Con particiones GUID, se realiza una copia de seguridad de la tabla de particiones.

creado automáticamente.

4. Puede haber hasta 128 particiones en total.

. ¿Cuál de las siguientes afirmaciones sobre las particiones GPT no es


¿verdadero?

1. Puede convertir fácilmente un disco MBR existente a GPT utilizando

discog.
2. Puede utilizar fdisk para escribir una etiqueta de disco GPT.

3. Los tipos de partición en GPT son de cuatro caracteres en lugar de dos


caracteres.

4. Las particiones GPT se pueden crear en sistemas MBR y EFI.

. ¿Qué tipo de partición se usa comúnmente para crear una partición de intercambio?

1. 81

2. 82

3. 83

4. 8e

. ¿Cuál es el nombre del dispositivo de disco predeterminado que esperaría ver en


¿Máquinas virtuales KVM?

1. /dev/sda
Machine Translated by Google

2. /dev/hda

3. /dev/vda

4. En /dev/xs

. ¿Cuál de las siguientes declaraciones no es cierta?

1. Nunca deberías usar gdisk en un disco MBR. 2. fdisk también

ofrece soporte para administrar particiones GPT.

3. Dependiendo de tus necesidades, puedes crear particiones MBR y GPT

en el mismo disco.

4. Si su servidor arranca desde EFI, debe usar particiones GPT.

. ¿Cuál de los siguientes sistemas de archivos se utiliza como predeterminado en RHEL?


9?

1. Ext4

2.XFS

3. btrfs

4.Ext3

. ¿Qué comando le permite encontrar los UUID actuales configurados para el archivo?

sistemas en su servidor?

1. montar

2. df­h

3. lsblk

4. niño negro
Machine Translated by Google

. ¿Qué pondrías en la columna de dispositivo de /etc/fstab para montar un

sistema de archivos basado en su ID único 42f419c4­633f­4ed7­b161­


519a4dadd3da?

1.42f419c4­633f­4ed7­b161­519a4dadd3da

2. /dev/42f419c4­633f­4ed7­b161­519a4dadd3da
3. ID=42f419c4­633f­4ed7­b161­519a4dadd3da

4. UUID=42f419c4­633f­4ed7­b161­519a4dadd3da

. ¿Qué comando puedes usar para verificar el contenido de /etc/fstab?

antes de arrancar?

1.fsck­fstab

2. encontrar­verificar
3. montar ­a

4. reiniciar

. Al crear un archivo de unidad de montaje systemd, se crean diferentes elementos.

requerido. ¿Cuál de los siguientes no es uno de ellos?

1. El nombre del archivo de la unidad de montaje corresponde al punto de montaje.

2. Se incluye una sección [Instalar] para configurar el nivel de ejecución predeterminado.

3. Se incluye una declaración de qué para indicar qué se debe

montado.

4. Se incluye una declaración donde para indicar dónde se encuentra el dispositivo.

debe montarse.
Machine Translated by Google

Temas de la Fundación

Comprender las particiones MBR y GPT

Para utilizar un disco duro, es necesario que tenga particiones. Algunos sistemas

operativos instalan todo en una partición, mientras que otros sistemas operativos como

Linux normalmente tienen varias particiones en un disco duro. Usar más de una

partición en un sistema tiene sentido por múltiples razones:

Es más fácil distinguir entre diferentes tipos de datos.

Se pueden utilizar opciones de montaje específicas para mejorar la seguridad o

el rendimiento.

Es más fácil crear una estrategia de copia de seguridad en la que sólo se realicen copias de

seguridad de las partes relevantes del sistema operativo.

Si una partición se llena por completo accidentalmente, las otras particiones

aún se podrán utilizar y es posible que su sistema no falle inmediatamente.

Nota

En lugar de utilizar varias particiones diferentes, también puede utilizar

volúmenes lógicos LVM o sistemas de archivos Stratis.

La administración de volúmenes lógicos y sistemas de archivos Stratis

se trata en el Capítulo 15, “Administración del almacenamiento avanzado”.


Machine Translated by Google

En versiones recientes de RHEL, hay dos esquemas de partición diferentes disponibles.

Antes de crear su primera partición, debe


comprender estos esquemas.

Comprender el esquema de partición MBR

Cuando se inventó la computadora personal a principios de la década de 1980, se

necesitaba un sistema para definir la distribución del disco duro. Este sistema se conoció

como esquema de partición Master Boot Record (MBR) .

Al iniciar una computadora, el sistema básico de entrada/salida (BIOS)

se cargó para acceder a dispositivos de hardware. Desde el BIOS, el

Se leyó el dispositivo de disco de arranque y, en este dispositivo de arranque, el

Se asignó MBR. El MBR contiene todo lo necesario para iniciar un

computadora, incluido un cargador de arranque y una tabla de particiones.

Cuando aparecieron por primera vez los discos duros para PC a principios de la década

de 1980, los usuarios podían tener diferentes sistemas operativos. Algunos de estos

incluido MS­DOS/PC­DOS, PC/IX (UNIX de IBM para PC 8086), CPM86,

y MPM86. El disco se dividiría de tal manera que cada sistema operativo instalado

obtuviera una parte del disco. Una de las particiones se activaría, es decir, el código en

el arranque
sector en el MBR leería el primer sector de ese activo

partición y ejecute el código. Ese código luego cargaría el resto del sistema operativo.

Esto explica por qué cuatro particiones se consideraron “suficientes”.

El MBR se definió como los primeros 512 bytes en el disco duro de una computadora,

y en el MBR un cargador de arranque del sistema operativo (como


Machine Translated by Google

COMIDA 2; consulte el Capítulo 17, “Administración y comprensión del


procedimiento de inicio”) , así como una tabla de particiones. El tamaño que se
utilizó para la tabla de particiones era relativamente pequeño, sólo 64 bytes, por
lo que en el MBR no se podían crear más de cuatro particiones. Dado que los
datos del tamaño de la partición se almacenaban en valores de 32 bits y se
usaba un tamaño de sector predeterminado de 512 bytes, el tamaño máximo
que podía usar una partición estaba limitado a 2 TiB (apenas era un
problema a principios de los años 1980).

En el MBR sólo se pueden crear cuatro particiones. Debido a que muchos


sistemas operativos de PC necesitaban más de cuatro particiones, se
encontró una solución para ir más allá de cuatro. En el MBR, una partición
podría crearse como partición extendida, a diferencia de las otras particiones
que se crearon como particiones primarias.
Dentro de la partición extendida, se podrían crear múltiples particiones lógicas
para alcanzar un número total de 15 particiones que podrían ser direccionadas
por el kernel de Linux.

Comprender la necesidad de la partición GPT

Los discos duros de las computadoras actuales se han vuelto


demasiado grandes para ser abordados por particiones MBR. Ésa es una de
las razones principales por las que se necesitaba un nuevo esquema de
partición. Este esquema de partición es la tabla de particiones GUID (GPT).
En las computadoras que utilizan la nueva Interfaz de firmware extensible
unificada (UEFI) como reemplazo del antiguo sistema BIOS, las particiones GPT son las únicas
Machine Translated by Google

forma de abordar los discos. Además, los sistemas informáticos más antiguos que

utilizan BIOS en lugar de UEFI se pueden configurar con particiones de ID únicas

globalmente (GUID), lo cual es necesario si se utiliza un disco de mayor tamaño.


Es necesario abordar problemas de más de 2 TiB.

El uso de GUID ofrece muchos beneficios:

El tamaño máximo de partición es 8 zebibytes (ZiB), que son 1024 × 1024 × 1024 ×

1024 gibibytes.

En GPT, se pueden almacenar hasta un número máximo de 128 particiones.


creado.

El límite de 2 TiB ya no existe.

Debido a que el espacio disponible para almacenar particiones es mucho

mayor que los 64 bytes que se usaban en MBR, ya no es necesario distinguir entre

particiones primarias, extendidas y lógicas.

GPT utiliza un GUID de 128 bits para identificar particiones.

De forma predeterminada, se crea una copia de seguridad de la tabla de particiones

GUID al final del disco, lo que elimina el punto único de falla que existe en

las tablas de particiones MBR.

Comprensión de las unidades de medida de almacenamiento

Cuando hablamos de almacenamiento, utilizamos diferentes unidades de medida.

En algunos casos, se utilizan unidades como megabytes (MB). En otros casos, se

utilizan unidades como mebibyte (MiB). La diferencia entre estos


Machine Translated by Google

La segunda es que un megabyte es múltiplo de 1000 y un mebibyte es un

múltiplo de 1.024. En informática, tiene sentido hablar de

múltiplos de 1024 porque así es como las computadoras abordan los elementos.

Sin embargo, se creó confusión cuando los proveedores de hardware tardaron mucho en

Hace un tiempo se empezó a hablar de megas en lugar de mebibytes.

En los primeros días de la informática, la diferencia no era tanta

importante. La diferencia entre un kilobyte (KB) y un kibibyte

(KiB) tiene solo 24 bytes. Cuanto más crecen los números, mayor es el

la diferencia se convierte. Un gigabyte, por ejemplo, equivale a 1.000 × 1.000 ×

1.000 bytes, es decir, 1.000.000.000 de bytes, mientras que un gibibyte es 1.024 ×

1.024 × 1.024 bytes, lo que hace un total de 1.073.741.824 bytes,

que tiene más de 70 MB y más de 1 GB.

En las distribuciones actuales de Linux, los números binarios (MiB, no MB)

se han convertido en el estándar. En la Tabla 14­2, puede ver una descripción general
de los valores que se utilizan.

Tabla 14­2 Especificaciones de tamaño de disco

Nombre del símbolo Nombre del símbolo de valor Valor

KB Kilobytes 1000 1 Kib kibibyte 1024 1


Machine Translated by Google

Nombre del símbolo Nombre del símbolo de valor Valor

2 2
MEGABYTE
Megabytes 1000 MB Mebibytes 1024

ES gigabytes 3 1000 Gibraltar


gibibyte 1024 3

tuberculosis
Terabyte 4 1000 TiB tebibyte 1024 4

PB Petabytes 5 1000 pib Pebibyte 1024 5

EB 6 1000 EiB 6
Exabyte Exbibyte 1024

ZB 7 ZiB 1024 7
Zettabytes 1000 zebibyte

YB 8 YiB 1024 8
Yottabyte 1000 Yobibyte

En el pasado, KB, MB, etc. se usaban tanto en formato decimal como

situaciones binarias; a veces incluso estaban mezclados. Por ejemplo,

La velocidad de una línea de 1 Mbps es de un millón de bits por segundo. El una vez famoso

El disquete “1,44 MB” tenía en realidad un tamaño de 1.440.000 bytes (80 pistas

× 2 cabezas × 9 sectores × sectores de 512 bytes), creando un significado mixto

de MB: 1,44 × (K decimal) × (K binario).


Machine Translated by Google

Gestión de particiones y sistemas de archivos

Como se analizó en la sección anterior, se pueden usar dos tipos


diferentes de particiones en RHEL. Para combinar los diferentes tipos de
partición, también hay dos utilidades de partición diferentes. La utilidad fdisk
existe desde hace mucho tiempo y se puede utilizar para crear y administrar
particiones MBR y GPT. La utilidad gdisk se utiliza para crear particiones
GPT. En esta sección aprenderá a utilizar
ambos.

Además de fdisk y gdisk, también existen otras utilidades de partición, de las


cuales parted es probablemente la más importante. A algunas personas
les gusta porque es relativamente fácil de usar, pero al mismo tiempo oculta
algunas de las funciones más avanzadas. Por esa razón, este

El capítulo se centra en trabajar con fdisk y gdisk y presenta parted sólo


brevemente.

Para las particiones MBR y GPT, debe especificar el nombre del dispositivo de
disco como argumento. Utilice el comando lsblk para imprimir una lista de
todos los dispositivos de disco disponibles en su sistema. La Tabla 14­3
muestra los nombres de dispositivos de disco más comunes con los que trabaja en RHEL.
Machine Translated by Google

Tabla 14­3 Tipos de dispositivos de disco comunes

Nombre del dispositivo Descripción

/dev/sda Un disco duro que utiliza el controlador SCSI. Usado

para dispositivos de disco SCSI y SATA. Comun

servidores físicos pero también en VMware virtuales


máquinas.

/dev/nvme0n1 El primer disco duro en una interfaz NVM Express (NVMe).

NVMe es de nivel de servidor


método para abordar dispositivos SSD avanzados.

Tenga en cuenta al final del nombre del dispositivo que el

El primer disco en este caso se denomina n1.

en lugar de a (como es común con los otros

tipos).

/dev/hda El tipo de dispositivo de disco IDE (heredado). Rara vez

verás este tipo de dispositivo en los teléfonos modernos.

ordenadores.

/dev/vda Un disco en una máquina virtual KVM que utiliza

el controlador de disco virtio. Este es el común

tipo de dispositivo de disco para máquinas virtuales KVM.


Machine Translated by Google

Nombre del dispositivo Descripción

/dev/xvda Un disco en una máquina virtual Xen que utiliza el

Controlador de disco virtual Xen. Ves esto cuando

instalar RHEL como máquina virtual en Xen


virtualización. RHEL 9 no se puede utilizar como

Hipervisor Xen, pero es posible que vea máquinas

virtuales RHEL 9 encima del hipervisor Xen

usando estos tipos de discos.

Como puede ver en la Tabla 14­3, casi todos los nombres de dispositivos de disco terminan

con la letra a. La razón es que es el primer disco que fue

encontrado en su servidor. El segundo disco SCSI, por ejemplo, tendría el nombre /

dev/sdb. Si hay muchos discos instalados en un servidor, puede tener hasta /dev/sdz

e incluso más. Después de /dev/sdz, el kernel continúa creando dispositivos con nombres

como /dev/sdaa y

/dev/sdab. Tenga en cuenta que en los dispositivos NVMe, se utilizan números en su lugar.

de letras. Entonces el primer disco NVMe es nvme0n1, el segundo NVMe

el disco es nvme0n2, etc.

Creando particiones MBR con fdisk

Para crear una partición de disco MBR, debe aplicar un procedimiento de varios pasos,

como se muestra en el Ejercicio 14­1.


Machine Translated by Google

Ejercicio 14­1 Creación de particiones MBR con fdisk

Este ejercicio ha sido escrito para utilizar una instalación de RHEL que

contiene un disco no utilizado. Puede agregar fácilmente un segundo disco a su

entorno. Puede ser un disco virtual que se agrega a través de su programa de

virtualización o una unidad flash USB si está trabajando en una instalación

física. En ese caso, asegúrese de reemplazar los nombres de los dispositivos

en este ejercicio con los nombres de los dispositivos que coincidan con su

hardware.

1. Abra un shell raíz y escriba lsblk. Esto enumera los dispositivos de bloqueo.
que están disponibles.

2. Abra un shell raíz y ejecute el comando fdisk. Este comando necesita como

argumento el nombre del dispositivo de disco donde desea crear la partición.

Este ejercicio utiliza /dev/sdb.

Cámbielo, si es necesario, según su hardware.


Haga clic aquí para ver la imagen del código

[root@server1 ~]# fdisk /dev/sdb Bienvenido a fdisk


(util­linux 2.37.4).
Los cambios permanecerán sólo en la memoria, hasta que usted decida
a ellos.

Tenga cuidado antes de utilizar el comando de escritura.

El dispositivo no contiene una partición reconocida


Machine Translated by Google

Creó una nueva etiqueta de disco de DOS con identificador de disco

Comando (m para ayuda):

3. Antes de hacer cualquier cosa, es una buena idea comprobar cuánto espacio en

disco tienes disponible. Presione p para ver una descripción general de


asignación de disco actual:

Haga clic aquí para ver la imagen del código

Comando (m para ayuda): p


Disco /dev/sdb: 20 GiB, 21474836480 bytes, 419430
Modelo de disco: VMware Virtual S
Unidades: sectores de 1 *
512 = 512 bytes
Tamaño del sector (lógico/físico): 512 bytes / 512
Tipo de etiqueta de disco: dos
Identificador de disco: 0x2c00c707

En el resultado de este comando, busque en particular el número total de sectores

y el último sector que se utiliza actualmente. Si la última partición no termina en el

último sector, tiene espacio disponible para crear una nueva partición. En

este caso, eso no debería ser un problema porque se supone que debes usar

un nuevo
disco en este ejercicio.

4. Escriba n para agregar una nueva partición:


Haga clic aquí para ver la imagen del código
Machine Translated by Google

Comando (m para ayuda): n


Tipo de partición p
primaria (0 primaria, 0 extendida, 4 libre) e extendida (contenedor para
partición lógica
Seleccione (p predeterminado):

5. Presione p para crear una partición primaria. Aceptar la partición

número que ahora se sugiere, que debería ser /dev/sdb1.

6. Especifique el primer sector del disco en el que comenzará la nueva partición. El

primer sector disponible se sugiere de forma predeterminada, así que presione

Entrar para aceptar.

7. Escriba +1G para convertirla en una partición de 1 GiB. Si simplemente

presionara Enter, se sugeriría el último sector disponible en el disco.

Si usaras eso, después de este ejercicio no te quedaría espacio en disco para

crear particiones o volúmenes lógicos adicionales, por lo que deberías usar

otro último sector. Para usar otro último sector, puede hacer una de las

siguientes cosas: 1. Ingrese el número del último sector que desea

usar.

2. Ingrese +número para crear una partición cuyo tamaño sea específico
número de sectores.

3. Ingrese +número(K,M,G) para especificar el tamaño que desea asignar

a la partición en KiB, MiB o GiB.


Haga clic aquí para ver la imagen del código

Comando (m para ayuda): n


Tipo de partición
Machine Translated by Google

p primario (0 primario, 0 extendido, 4 libre) e extendido (contenedor


para partición lógica
Seleccionar (p predeterminado): p
Número de partición (1­4, predeterminado 1):
Tamaño de E/S (mínimo/óptimo): 512 bytes/512 bytes
Primer sector (2048­41943039, predeterminado 2048):
Último sector, +/­sectores o +/­tamaño{K,M,G,T,P} (2 predeterminado
41943039): +1G
Creó una nueva partición 1 de tipo 'Linux' y de

Después de ingresar el límite final de la partición, fdisk


mostrar una confirmación.

8. En este punto, puede definir el tipo de partición. Por defecto, un

Se utiliza el tipo de partición Linux. Si desea que la partición sea de cualquier

otro tipo de partición, use t para cambiarla. Para este ejercicio no es necesario

cambiar el tipo de partición. Los tipos de partición comunes incluyen

los siguientes: 1. 82: intercambio de Linux

2.83 :Linux

3.8e : LVM de Linux

9. Si estás satisfecho con las modificaciones, presiona w para escribirlas.


al disco y salir de fdisk.

10. Escriba lsblk para verificar que la nueva partición se haya creado correctamente.
Machine Translated by Google

Uso de particiones lógicas y extendidas en MBR

En el procedimiento anterior, aprendió cómo agregar una partición


primaria. Si ya se han creado tres particiones MBR, hay espacio para una
partición primaria más, después de lo cual la tabla de particiones se llena
por completo. Si desea ir más allá de cuatro particiones en un
disco MBR, debe crear una partición extendida. Después de eso,
puede crear particiones lógicas dentro de la partición extendida.

El uso de particiones lógicas le permite ir más allá de la limitación de cuatro


particiones en el MBR; Sin embargo, también hay una desventaja.
Todas las particiones lógicas existen dentro de la partición extendida. Si
algo sale mal con la partición extendida, también tendrá un problema
con todas las particiones lógicas que existen dentro de ella. Si necesita
más de cuatro unidades de asignación de almacenamiento independientes,
es mejor que utilice LVM en lugar de particiones lógicas. Si está en un
disco completamente nuevo, es posible que desee crear particiones GPT.
En el ejercicio 14­2 aprenderá a trabajar con particiones lógicas y
extendidas.

Nota

Una partición extendida se utiliza únicamente con el fin de


crear particiones lógicas. ¡No puede crear sistemas de
archivos directamente en una partición extendida!
Machine Translated by Google

Ejercicio 14­2 Creación de particiones lógicas

1. En un shell raíz, escriba fdisk /dev/sdb para abrir la interfaz fdisk.

2. Escriba n para crear una nueva partición. Para crear una partición lógica,

cuando fdisk le pregunte qué tipo de partición desea crear, ingrese e. Esto le

permite crear una partición extendida, que es necesaria para luego agregar

particiones lógicas.
Haga clic aquí para ver la imagen del código

Comando (m para ayuda): n


Tipo de partición p
primaria (1 primaria, 0 extendida, 3 libres) e extendida (contenedor
para partición lógica
Seleccione (p predeterminado): e

3. Si la partición extendida es la cuarta partición que está

Al escribir en el MBR, también será la última partición que se puede agregar

al MBR. Por esa razón, debería llenar el resto del disco duro de su computadora.

Presione Enter para aceptar el primer sector predeterminado y presione

Enter nuevamente cuando fdisk solicite el último sector (incluso si esta no

es la cuarta partición todavía).


Haga clic aquí para ver la imagen del código

Seleccione (p predeterminado): e
Número de partición (2­4, predeterminado 2):
Primer sector (2099200­41943039, predeterminado 2099200)
Machine Translated by Google

Último sector, +/­sectores o +/­tamaño{K,M,G,T,P} (2 predeterminado


41943039):

Creó una nueva partición 2 de tipo 'Extendido' y

4. Ahora que se ha creado la partición extendida, puede

cree una partición lógica dentro de él. Aún desde la interfaz fdisk, presione n

nuevamente. Debido a que todo el espacio en la unidad se ha asignado a

particiones, la utilidad sugerirá de forma predeterminada agregar una partición

lógica con el número de partición 5.


Haga clic aquí para ver la imagen del código

Comando (m para ayuda): n Todo el


espacio para las particiones primarias está en uso.
Agregar partición lógica 5 Primer sector
(2101248­41943039, predeterminado 2101248)

5. Presione Enter para aceptar el primer sector predeterminado. cuando se le pidió

el último sector, ingrese +1G:


Haga clic aquí para ver la imagen del código

Primer sector (2101248­41943039, predeterminado 2101248)

Último sector, +/­sectores o +/­tamaño{K,M,G,T,P} (2 predeterminado


41943039): +1G
Machine Translated by Google

Creé una nueva partición 5 de tipo 'Linux' y de

6. Ahora que se ha creado la partición lógica, ingrese w para


escriba los cambios en el disco y salga de fdisk.

Consejo

En algunos casos, fdisk imprimirá un mensaje después de


escribir las particiones en el disco, indicando que no pudo
actualizar la tabla de particiones. Si eso sucede, puede intentar
usar el comando partprobe para actualizar manualmente
la tabla de particiones. Utilice lsblk para verificar que
ahora esté visible. Si este no es el caso, use reiniciar para reiniciar

tu sistema.

Creando particiones GPT con gdisk

Si un disco está configurado con una tabla de particiones GUID (GPT), o si


es un disco nuevo que aún no contiene nada y tiene un tamaño que supera
los 2 TiB, debe crear particiones GUID. La forma más sencilla de hacerlo es
mediante la utilidad gdisk. Esta utilidad tiene muchas
similitudes con fdisk pero también tiene algunas diferencias.

Tenga en cuenta que sólo puede decidir qué tipo de tabla de particiones
crear al inicializar un disco no utilizado. Una vez MBR o GPT
Machine Translated by Google

Se han creado particiones en un disco, no puede cambiar su tipo.

La utilidad preferida para crear particiones GPT es gdisk.

Alternativamente, después de iniciar fdisk en un disco nuevo, puede usar el comando g


comando para inicializar un GPT. El ejercicio 14­3 muestra cómo crear

particiones en gdisk en un disco que aún no tiene particiones.

¡Advertencia!

Nunca utilice gdisk en un disco que haya sido formateado

con fdisk y que ya contenga particiones fdisk. gdisk detectará

que hay un MBR presente y lo convertirá en un GPT (consulte la

siguiente lista de códigos). ¡Lo más probable es que su

computadora no pueda arrancar después de hacer esto! Cuando

vea el siguiente mensaje, use q para salir de gdisk

inmediatamente, ¡sin guardar nada!

Haga clic aquí para ver la imagen del código

[root@server1 ~]# gdisk /dev/sda GPT fdisk (gdisk)


versión 1.0.7

Escaneo de la tabla de particiones:

MBR: solo MBR


BSD: no presente
APM: no presente
GPT: no presente
Machine Translated by Google

*****************************************

Se encontró GPT no válido y MBR válido; converti en memoria. ¡ESTA OPERACIÓN

ES POTENCIALMENTE escribir 'q' si no desea convertir y al formato GPT!

*****************************************

¡Advertencia! ¡La mesa de partición secundaria supera los 33 bloques!

Deberá eliminar esta partición o utilidad.

Comando (? para pedir ayuda):

Para evitarle la molestia de pasar por esto, verifiqué que hace lo que

dice. Después de convertir un MBR a GPT, su máquina ya no se iniciará.

Ejercicio 14­3 Creando particiones GPT con gdisk

Para aplicar el procedimiento de este ejercicio, necesita un nuevo


dispositivo de disco. No utilice un disco que contenga datos que desee
conservar, porque este ejercicio eliminará todos los datos que contiene. Si está
utilizando este ejercicio en una máquina virtual, puede agregar el nuevo disco
a través del software de virtualización. Si está trabajando en una máquina
física, puede utilizar una memoria USB como dispositivo de disco para este
ejercicio. Tenga en cuenta que este ejercicio funciona perfectamente en una computadora.
Machine Translated by Google

eso comienza desde BIOS y no EFI; todo lo que necesitas es un disco dedicado
dispositivo.

1. Para crear una partición con gdisk, abra un shell raíz y escriba

gdisk/dev/sdc. (Reemplace /dev/sdc con el nombre exacto del dispositivo

utilizado en su computadora). gdisk intentará detectar el diseño actual del

disco y, si no detecta nada, creará el GPT y el diseño del disco asociado.

Haga clic aquí para ver la imagen del código

[root@server1 ~]# gdisk /dev/sdc GPT fdisk (gdisk)


versión 1.0.7

Escaneo de la tabla de particiones:

MBR: no presente
BSD: no presente
APM: no presente
GPT: no presente

Creando nuevas entradas GPT en la memoria.

Comando (? para pedir ayuda):

2. Escriba n para ingresar una nueva partición. Puedes elegir cualquier partición.

número entre 1 y 128, pero es aconsejable aceptar el número de partición

predeterminado que se sugiere.


Haga clic aquí para ver la imagen del código
Machine Translated by Google

Comando (? para ayuda): n Número


de partición (1­128, predeterminado 1): 1

3. Ahora se le pedirá que ingrese al primer sector. Por defecto, el primero

Se utilizará el sector que está disponible en el disco, pero también puede

especificar un desplazamiento. Esto no tiene sentido, así que simplemente

presione Enter para aceptar el primer sector predeterminado que se propone.


Haga clic aquí para ver la imagen del código

Primer sector (34­2097118, predeterminado = 2048) o {+­

4. Cuando se le solicita el último sector, de forma predeterminada se propone el

último sector que está disponible en el disco (lo que crearía una partición que

llenaría todo el disco duro). Puede especificar un último sector diferente o

especificar el tamaño del disco usando +, el tamaño y KMGTP. Entonces, para

crear una partición de disco de 1 GiB, use +1G.


Haga clic aquí para ver la imagen del código

Número de partición (1­128, predeterminado 1): 1


Primer sector (34­41943006, predeterminado = 2048) o {+
Último sector (2048­41943006, predeterminado = 41943006)
El tipo actual es 8300 (sistema de archivos Linux)
Código hexadecimal o GUID (L para mostrar códigos, Ingrese = 8300)
Machine Translated by Google

5. Ahora se le pedirá que configure el tipo de partición. Si no lo haces

cualquier cosa, el tipo de partición está configurado en 8300, que es Linux

tipo de partición del sistema de archivos. También hay otras opciones disponibles.

Puede presionar l para mostrar una lista de tipos de particiones disponibles.


Haga clic aquí para ver la imagen del código

El tipo actual es 'sistema de archivos Linux'


Código hexadecimal o GUID (L para mostrar códigos, Ingrese = 8300)
0700 Datos básicos de Microsoft 0c01 Reserva de Microsoft
RE
Arranque 3000 ONIE 3001 configuración ONIE
Arranque PReP de PowerPC 4100 4200 datos LDM de Windows
LDM metadatos

4202 Espacio de almacenamiento de Windows 7501 IBM GPFS


núcleo
7f01 raíz de ChromeOS 7f02 reserva de ChromeOS

intercambio

Sistema de archivos Linux 8300 / 8301 Linux reservado


inicio

8303 Linux x86 raíz (/) 8304 Linux x86­64 raíz


ARM64 raíz (/)
8306 Linux/srv 8307 raíz de Linux ARM32

Rápido Comenzar

8e00 Linux LVM carga de arranque de Android a000


gestor de arranque 2
a002 arranque de Android a003 recuperación de Android
miscelánea

a005 metadatos de Android a006 sistema android


Machine Translated by Google

cache
a008 datos de Android a009 Android persiste
fábrica
a00b Android fastboot/ter a00c Android OEM
etiqueta de disco

a501 arranque FreeBSD intercambio a502 FreeBSD


UFS
a504 FreeBSDZFS a505 FreeBSD Vinum/RA
datos BSD

Arranque BSD de medianoche a581 a582 medianoche BSD swa


BSD UFS

Etiqueta de disco A584 Midnight a585 Medianoche BSD Vin


BSD ZFS

a800 Apple UFS intercambio a901 NetBSD


FFS
a903 NetBSD LFS a904 NetBSD concatena

cifrado
a906 NetBSD RAID ab00 Recuperación HD
HFS/HFS+

af01 Apple RAID af02 Apple RAID desactivado


etiqueta

Los tipos de partición relevantes son los siguientes:

1. 8200: intercambio de Linux

2. 8300: sistema de archivos Linux


3. 8e00: LVM de Linux

Observe que estos son los mismos tipos de partición que los que

se utilizan en MBR, con dos ceros agregados a las ID. También puedes simplemente
Machine Translated by Google

presione Entrar para aceptar el tipo de partición predeterminado 8300.

6. La partición ahora está creada (pero aún no escrita en el disco). Prensa

p para mostrar una descripción general, que le permite verificar que esto es

realmente lo que quieres usar.


Haga clic aquí para ver la imagen del código

Comando (? para ayuda): p


Disco /dev/sdc: 41943040 sectores, 20,0 GiB
Modelo: VMware Virtual S

Tamaño del sector (lógico/físico): 512/512 bytes


Identificador de disco (GUID): 49433C2B­16A9­4EA4­9D79­
La tabla de particiones tiene capacidad para hasta 128 entradas.
La tabla de particiones principal comienza en el sector 2 y termina. El primer
sector utilizable es 34, el último sector utilizable es Las particiones se
alinearán en el límite de 2048 sectores.
El espacio libre total es 39845821 sectores (19,0 GiB)

Número de inicio (sector) Tamaño final (sector)


1 2048 2099199 1024,0 millones

sistema de archivos

Comando (? para pedir ayuda):

7. Si está satisfecho con la partición actual, presione w para

escriba los cambios en el disco y confirme. Esto da una advertencia que

puede ignorarlo con seguridad escribiendo Y, después de lo cual el nuevo

La tabla de particiones se escribe en la tabla de particiones GUID.


Machine Translated by Google

Haga clic aquí para ver la imagen del código

Comando (? para ayuda): w

Comprobaciones finales completadas. A punto de escribir datos GPT.


SOBRESCRIBIR EXISTENTES

PARTICIONES!!

Quieres proceder? (S/N): Sí , está bien;


escribiendo una nueva tabla de particiones GUID (GPT) en /d

La operación se ha completado con éxito.

8. Si en este punto recibe un mensaje de error que indica que el


Si la tabla de particiones está en uso, escriba partprobe para actualizar la tabla de

particiones del kernel.

Crear particiones GPT con parted

Como se mencionó anteriormente, además de fdisk y gdisk, la utilidad parted


se puede utilizar para crear particiones. Debido a que carece de soporte para
funciones avanzadas, me he centrado en fdisk y gdisk, pero me gustaría
brindarles una descripción general rápida de cómo trabajar con parted.
Machine Translated by Google

Para utilizar parted, debes saber que cuenta con un shell interactivo en el que puedes

trabajar con sus diferentes opciones. El ejercicio 14­4 le guía a través del

procedimiento de creación de particiones utilizando particiones. Este ejercicio supone

que tiene un disco nuevo y sin usar.

dispositivo /dev/sdd disponible.

Ejercicio 14­4 Creando particiones con parted

Necesita un disco nuevo para trabajar con este procedimiento. Este ejercicio

Se supone que el nuevo nombre del disco es /dev/sdd.

1. Desde un shell raíz, escriba parted /dev/sdd. Esto abre el caparazón dividido

interactivo.

2. Escriba ayuda para obtener una descripción general de los comandos disponibles.

3. Escriba imprimir. Verá un mensaje sobre un disco no reconocido.


etiqueta.

4. Escriba mklabel y presione Entrar. separado ahora solicitará un

tipo de etiqueta de disco. Presione la tecla Tab dos veces para ver una lista de los tipos

de etiquetas de disco disponibles. De la lista, seleccione gpt y presione Entrar.

5. Escriba mkpart. La utilidad solicita un nombre de partición. Tipo

part1 (el nombre de la partición realmente no importa).

6. Ahora la utilidad solicita un tipo de sistema de archivos. Esto es muy

Opción confusa, porque sugiere que está configurando un tipo de sistema de archivos

aquí, pero ese no es el caso. Además, cuando utilices la función Tabulación, verás una

lista de sistemas de archivos que probablemente nunca antes hayas usado. De hecho,

puedes simplemente presionar Enter para aceptar.


Machine Translated by Google

la sugerencia predeterminada de ext2, ya que la configuración no se usa de todos

modos, pero sugiero usar un tipo de sistema de archivos que se acerque al que

usará en la partición. Entonces escribe xfs y presiona Enter


continuar.

7. Ahora se le solicitará una ubicación de inicio. Puedes especificar el

ubicación inicial como un número de bloques, o un desplazamiento desde el inicio

del dispositivo. Tenga en cuenta que puede escribir 1M para especificar el inicio de la

partición en 1 megabyte, o escribir 1 MiB para que comience en 1 MiB. Esto es

confuso, así que asegúrese de especificar el valor apropiado aquí. En

este punto, escriba 1MiB y presione


Ingresar.

8. Escriba 1GiB para especificar el final de la partición. Después de hacerlo,

escriba imprimir para imprimir la tabla de particiones actual y escriba salir para salir

de la utilidad y confirmar los cambios.

9. Escriba lsblk para verificar que se haya creado la nueva partición. Él

debería mostrarse como /dev/sdd1.

10. Utilice mkfs.ext4 /dev/sdd1 para formatear esta partición con Ext4

sistema de archivos.

Creando sistemas de archivos

En este punto, ya sabes cómo crear particiones. Una partición por sí sola no es muy útil.

Sólo resulta útil si decides hacer algo con él. Eso a menudo significa que tienes que

ponerle un sistema de archivos encima. En esta sección, aprenderá cómo hacerlo.


Machine Translated by Google

Se pueden utilizar diferentes sistemas de archivos en RHEL 9. La Tabla 14­4 proporciona

una descripción general de los sistemas de archivos más comunes.

Tabla 14­4 Descripción general del sistema de archivos

Archivo

Descripción
Sistema

XFS El sistema de archivos predeterminado en RHEL 9.

ext4 El sistema de archivos predeterminado en versiones anteriores

de RHEL; todavía está disponible y es compatible con RHEL 9.

ext3 La versión anterior de Ext4. En RHEL 9, ya no es necesario

utilizar Ext3.

ext2 Un sistema de archivos muy básico que se desarrolló a principios

de los años 1990. No es necesario utilizar este sistema de archivos.

en RHEL 9 más.

BtrFS Un sistema de archivos relativamente nuevo que no es compatible


en RHEL 9.
Machine Translated by Google

Archivo

Descripción
Sistema

NTFS Un sistema de archivos compatible con Windows que no

es compatible con RHEL 9.

VFAT Un sistema de archivos que ofrece compatibilidad con


Windows y macOS y es el funcional.

equivalente al sistema de archivos FAT32. Útil en memorias

USB que intercambian datos con otras computadoras

pero no en los discos duros de un servidor.

Para formatear una partición con uno de los sistemas de archivos compatibles,

puede usar el comando mkfs, usando la opción ­t para especificar qué sistema de

archivos específico usar. Alternativamente, puede utilizar una de las herramientas

específicas del sistema de archivos, como mkfs.ext4, para formatear un archivo Ext4.

sistema.

Nota

Si utiliza mkfs sin especificar más qué sistema de archivos desea

formatear, se formateará un sistema de archivos Ext2.

Probablemente esto no sea lo que


Machine Translated by Google

desea utilizar, así que no olvide especificar qué archivo

sistema que desea utilizar.

Para formatear una partición con el sistema de archivos XFS predeterminado, utilice el

comando mkfs.xfs. El ejemplo 14­1 muestra el resultado de este


dominio.

Ejemplo 14­1 Formateo de un sistema de archivos con XFS

Haga clic aquí para ver la imagen del código

[root@servidor1 ~]# mkfs.xfs /dev/sdb1


metadatos=/dev/sdb1 tamaño = 512 agcon
= sectasz=512 atributos=2
= crc=1 termina
= enlace de referencia = 1 cinturón
datos = bsize=4096 bloques
= Suní=0 ancho
denominación = registro de bsize=4096 ascii­
versión 2 = registro interno bsize=4096 bloques
= sectasz=512 sunitas=
tiempo real = ninguno extsz=4096 bloques

En el ejercicio 14­5, creará un sistema de archivos en el archivo creado previamente.

partición /dev/sdb1.
Machine Translated by Google

Ejercicio 14­5 Creación de un sistema de archivos

En el ejercicio 14­1, creó una partición /dev/sdb1. En este ejercicio, lo formateará

con un sistema de archivos XFS. Este ejercicio tiene un solo paso.

1. Desde un shell raíz, escriba mkfs.xfs /dev/sdb1

Cambiar las propiedades del sistema de archivos

Cuando trabaja con sistemas de archivos, también puede administrar algunas propiedades.

Las propiedades del sistema de archivos son específicas del sistema de archivos que está

utilizando, por lo que trabaja con diferentes propiedades y diferentes herramientas para

los diferentes sistemas de archivos.

Administrar las propiedades del sistema de archivos Ext4

La herramienta genérica para administrar las propiedades del sistema de archivos

Ext4 es tune2fs. Esta herramienta fue desarrollada hace mucho tiempo para el sistema de

archivos Ext2 y también es compatible con Ext3 y Ext4. Cuando administras las propiedades

del sistema de archivos Ext4, tune2fs ­l es un buen comando para empezar. El

ejemplo 14­2 presenta el resultado de este comando donde se muestran diferentes

propiedades del sistema de archivos.

Tenga en cuenta que primero debe crear un sistema de archivos Ext4, usando

mkfs.ext4, antes de poder usar tune2fs.

Ejemplo 14­2 Mostrando las propiedades del sistema de archivos con tune2fs ­l
Machine Translated by Google

Haga clic aquí para ver la imagen del código

[root@servidor1 ~]# tune2fs ­l /dev/sdd1


tune2fs 1.46.5 (30 de diciembre de 2021)
Nombre del volumen del sistema de archivos: <ninguno>
Montado por última vez en: <no disponible>

UUID del sistema de archivos: 5d34b37c­5d32­4790­8364­

Número mágico del sistema de archivos: 0xEF53


Revisión del sistema de archivos n.°: 1 (dinámico)
Características del sistema de archivos: has_journal ext_attr res
Banderas del sistema de archivos: firmado_directorio_hash
Opciones de montaje predeterminadas: user_xattr acl
Estado del sistema de archivos: limpio
Comportamiento de errores: Continuar

Tipo de sistema operativo de archivos: linux


Recuento de inodos: 65536
Recuento de bloques: 262144
Recuento de bloques reservados: 13107
Grupos aéreos: 12949
Bloques libres: 249189
Inodos libres: 65525
Primer bloque: 0
Tamaño de bloque: 4096

Tamaño del fragmento: 4096

Tamaño del descriptor de grupo: 64


Bloques GDT reservados: 127

Bloques por grupo: 32768

Fragmentos por grupo: 32768


Machine Translated by Google

Inodos por grupo: 8192

Bloques de inodos por grupo: 512


Tamaño del grupo de bloques flexibles: dieciséis

Sistema de archivos creado: Jueves 15 de septiembre 11:56:2


Hora del último montaje: n/A
Hora de la última escritura: Jueves 15 de septiembre 11:56:2
Recuento de monturas: 0
Recuento máximo de montaje: ­1
Última comprobación: Jueves 15 de septiembre 11:56:2
Intervalo de control: 0 (<ninguno>)
Toda la vida escribe: 533 kB
Uid de bloques reservados: 0 (usuario raíz)
Bloques reservados gid: 0 (raíz del grupo)
Primer inodo: 11
Tamaño del inodo: 256

Tamaño extra requerido: 32


Tamaño extra deseado: 32
Inodo de diario: 8

Hash de directorio predeterminado: half_md4


Semilla de hash de directorio: ba256a6f­1ebe­4d68­8ff3­

Copia de seguridad del diario: bloques de inodo

Tipo de suma de comprobación: crc32c


Suma de comprobación: 0x49ee65b4

Como puede ver, el comando tune2fs ­l muestra muchos sistemas de archivos

propiedades. Una propiedad interesante es la etiqueta del sistema de archivos, que

se muestra como el nombre del volumen del sistema de archivos. Las etiquetas se utilizan para establecer un

nombre único para un sistema de archivos, que permite que el sistema de archivos sea
Machine Translated by Google

montado de manera consistente, incluso si el nombre del dispositivo subyacente cambia.

También son interesantes las características del sistema de archivos y las opciones de

montaje predeterminadas .

Para cambiar cualquiera de las opciones predeterminadas del sistema de archivos, puede

usar el comando tune2fs con otros parámetros. Algunos ejemplos de uso comunes se

enumeran aquí:

Utilice tune2fs ­o para configurar las opciones de montaje predeterminadas del sistema

de archivos. Cuando se configura en el sistema de archivos, ya no es necesario

especificar la opción durante el montaje a través de /etc/fstab. Utilice, por ejemplo,

tune2fs ­o acl,user_xattr para activar las listas de control de acceso y

atributos extendidos por el usuario. Utilice ^ delante de la opción para desactivarlo

nuevamente, como en tune2fs ­o ^acl,user_xattr.

Los sistemas de archivos externos también vienen con funciones de sistema de archivos

que pueden estar habilitadas de forma predeterminada. Para activar una función del

sistema de archivos, use tune2fs ­O seguido de la función. Para desactivar una función, utilice ^

delante del nombre de la función.

Utilice tune2fs ­L para establecer una etiqueta en el sistema de archivos. Como se

describe en la sección “Montaje de sistemas de archivos” más adelante en este capítulo,

puede usar una etiqueta de sistema de archivos para montar un sistema de archivos según su

nombre en lugar del nombre del dispositivo. En lugar de tune2fs ­L, el

El comando e2label le permite establecer una etiqueta en el sistema de archivos.


Machine Translated by Google

Administrar las propiedades del sistema de archivos XFS

El sistema de archivos XFS es un sistema de archivos completamente diferente y, por esa

razón, también tiene un conjunto de herramientas completamente diferente para administrar

sus propiedades. No le permite establecer atributos del sistema de archivos dentro de los

metadatos del sistema de archivos. Sin embargo, puede cambiar algunas propiedades de

XFS utilizando el comando xfs_admin. Por ejemplo, utilice xfs_admin ­L mylabel para

establecer la etiqueta del sistema de archivos en mylabel.

Agregar particiones de intercambio

La mayoría de las particiones en un servidor Linux se utilizan para sistemas de archivos

normales. En Linux, el espacio de intercambio normalmente se asigna en un dispositivo

de disco. Puede ser una partición o un volumen lógico LVM (discutido en el

Capítulo 15). En caso de emergencia, incluso puedes utilizar un archivo para ampliar el

espacio de intercambio disponible.

Usar swap en Linux es una forma conveniente de mejorar el uso de la memoria del kernel de

Linux. Si se produce una escasez de RAM física, las páginas de memoria no utilizadas

recientemente se pueden mover para intercambiar, lo que deja más RAM disponible para

los programas que necesitan acceder a las páginas de memoria.

Por ese motivo, la mayoría de los servidores Linux están configurados con una cierta cantidad

de intercambio. Sin embargo, si el intercambio comienza a usarse de manera intensiva,

podría tener problemas y es por eso que el uso del intercambio debe ser monitoreado

de cerca.
Machine Translated by Google

A veces, tiene sentido asignar más espacio de intercambio. Si se produce una escasez de

memoria, esta escasez se puede aliviar asignando más espacio de intercambio en

algunas situaciones. Esto se hace mediante un procedimiento en el que primero se

crea una partición con el tipo de partición de intercambio y luego esta partición se

formatea como intercambio.

El ejercicio 14­6 describe cómo hacer esto.

Ejercicio 14­6 Creación de una partición de intercambio

1. Escriba fdisk /dev/sdb para abrir su disco en fdisk.

2. Presione n para agregar una nueva partición. Especifique el cilindro inicial y el tamaño para

cree una partición de 1 GiB.

3. Escriba t para cambiar el tipo de partición. Si está utilizando fdisk, escriba

swap para establecer el tipo de partición de intercambio en 82. Si está usando

gdisk, use el tipo de partición 8200. Presione w para escribir y salir.

4. Utilice mkswap para formatear la partición como espacio de intercambio. Usar para

Por ejemplo, mkswap /dev/sdb6 si la partición que acaba de

creado es /dev/sdb6.

5. Escriba libre ­m. Verá la cantidad de espacio de intercambio que hay

asignado actualmente. Esto no incluye el espacio de intercambio que acaba de crear,

ya que aún debe activarse.

6. Utilice swapon para activar el espacio de intercambio recién asignado. Si por

Por ejemplo, el dispositivo de intercambio que acaba de crear es /dev/sdb6, use

swapon /dev/sdb6 para activar el espacio de intercambio.

7. Escriba libre ­m nuevamente. Verás que el nuevo espacio de intercambio ha sido

agregado a su servidor.
Machine Translated by Google

8. Abra el archivo /etc/fstab con un editor y, en la última línea, agregue lo siguiente

para garantizar que el espacio de intercambio también esté disponible después

de reiniciar: /dev/sdb6 none swap defaults 0 0

Agregar archivos de intercambio

Si no tiene espacio libre en disco para crear una partición de intercambio y

necesita agregar espacio de intercambio con urgencia, también puede usar un

archivo de intercambio. Desde una perspectiva de rendimiento, ni siquiera hace

mucha diferencia si se utiliza un archivo de intercambio en lugar de un

dispositivo de intercambio como una partición o un volumen lógico, y puede

ayudarle a satisfacer una necesidad urgente de manera oportuna.

Para agregar un archivo de intercambio, primero debe crear el archivo. El

comando dd if=/dev/zero of=/swapfile bs=1M count=100 agregaría


100 bloques con un tamaño de 1 MiB del dispositivo /dev/zero (que

genera 0) al archivo /swapfile. El resultado es un archivo de 100 MiB que se puede

configurar como intercambio. Para hacerlo, puedes seguir el mismo

procedimiento que para las particiones de intercambio. Primero use mkswap /

swapfile para marcar el archivo como un archivo de intercambio y luego use

swapon /swapfile para activarlo. Además, colóquelo en el archivo /etc/

fstab para que se inicialice automáticamente, usando una línea que tiene el siguiente aspecto:

Haga clic aquí para ver la imagen del código


Machine Translated by Google

/swapfile ninguno valores predeterminados de intercambio 0 0

Montaje de sistemas de archivos

Simplemente crear una partición y ponerle un sistema de archivos no es suficiente

para comenzar a usarla. Para usar una partición, también debes montarla. Al montar una

partición (o mejor, el sistema de archivos que contiene), se puede acceder a su contenido a

través de un directorio específico.

Para montar un sistema de archivos, se necesita cierta información:

Qué montar: esta información es obligatoria y especifica


el nombre del dispositivo que debe montarse.

Dónde montarlo: Esta también es información obligatoria que especifica el directorio

en el que se debe montar el dispositivo.

Qué sistema de archivos montar: opcionalmente, puede especificar el tipo de sistema de

archivos. En la mayoría de los casos esto no es necesario. El comando de montaje

detectará qué sistema de archivos se utiliza en el dispositivo


y asegúrese de utilizar el controlador correcto.

Opciones de montaje: se pueden utilizar muchas opciones de montaje al

montar un dispositivo. El uso de opciones es opcional y depende de las necesidades

que pueda tener para el sistema de archivos.


Machine Translated by Google

Montaje manual de sistemas de archivos

Para montar manualmente un sistema de archivos, utilice el comando de montaje.

Para desconectar un sistema de archivos montado, utilice el comando

umount . Usar estos comandos es relativamente fácil. Para montar el sistema de

archivos que está en /dev/sdb5 en el directorio /mnt, por ejemplo, utilice el siguiente

comando:

montar /dev/sdb5 /mnt

Para desconectar el soporte, puede usar umount con el nombre del dispositivo

o el nombre del punto de montaje que desea desconectar. Entonces, los dos

comandos siguientes funcionarán:

desmontar /dev/sdb5
desmontar /mnt

Uso de nombres de dispositivos, UUID o etiquetas de disco

Para montar un dispositivo, puede utilizar el nombre del dispositivo, como en el

comando mount/dev/sdb5 /mnt. Si su servidor se utiliza en un entorno donde

se utiliza una topología de almacenamiento dinámico, este no siempre es el mejor

enfoque. Es posible que hoy tenga un dispositivo de almacenamiento /dev/sdb5,

que después de cambios en la topología de almacenamiento puede ser /dev/

sdc5 después del próximo reinicio de su servidor. Esta es la razón por la que en un
Machine Translated by Google

instalación predeterminada de RHEL 9, los ID universalmente únicos (UUID) son


utilizado en lugar de nombres de dispositivos.

Cada sistema de archivos tiene por defecto un UUID asociado, no solo los sistemas

de archivos que se utilizan para almacenar archivos, sino también sistemas de

archivos especiales, como el sistema de archivos de intercambio. Puede

utilizar el comando blkid para obtener una descripción general de los sistemas de

archivos actuales en su sistema y el UUID que utiliza ese sistema de archivos.

Antes de que el uso de UUID fuera común, los sistemas de archivos a menudo

se configuraban para funcionar con etiquetas, que se pueden configurar

usando el comando e2label, el comando xfs_admin ­L o, al crear el sistema de archivos,

el comando mkfs.xxxx ­L. Esto se ha vuelto menos común en las versiones

recientes de Linux. Si un sistema de archivos tiene una etiqueta, el comando blkid

también la mostrará. En el Ejemplo 14­3 puede ver un ejemplo de salida blkid.

Ejemplo 14­3 Uso de blkid para buscar UUID del sistema de archivos actual

Haga clic aquí para ver la imagen del código

[root@servidor1 ~]# blkid /dev/mapper/


rhel­swap: UUID="3f377db9­7a25­4456­bd
TIPO="intercambio" /
dev/sdd1: PARTLABEL="parte1" PARTUUID="97ddf1cb­6f
e4345862283d"
/dev/sdb5: UUID="5d34b37c­5d32­4790­8364­d22a8b8f8
Machine Translated by Google

TAMAÑO="4096" TIPO="ext4" PARTUUID="e049881b­05"


/dev/sdb1: UUID="1e6b3b75­3454­4e03­b5a9­81e5fa1f0
TAMAÑO="512" TIPO="xfs" PARTUUID="e049881b­01"
/dev/sdb6: UUID="b7ada118­3586­4b22­90db­451d821f1
PARTUUID="e049881b­06"
/dev/sr0: BLOCK_SIZE="2048" UUID="2022­04­19­20­42
9­0­0­BaseOS­x86_64" TYPE="iso9660" PTUUID="3a60 /dev/mapper/rhel­
root: UUID="1e9d930d­4c05­4c91­9b
BLOCK_SIZE="512" TYPE="xfs"
/dev/sdc1: PARTLABEL="sistema de archivos Linux"
PARTUUID="c021ce85­8a1b­461a­b27f­d911e2ede649"

/dev/sda2: UUID="bKb2nd­kGTl­voHS­h8Gj­AjTD­fORt­X
miembro" PARTUUID="908faf3e­02"
/dev/sda1: UUID="6c2b4028­1dcb­44cb­b5b7­c8e52352b
TAMAÑO="512" TIPO="xfs" PARTUUID="908faf3e­01"

Para montar un sistema de archivos basado en un UUID, utilice UUID=nnnnn en

lugar del nombre del dispositivo. Entonces, si desea montar /dev/sdb5 del

Ejemplo 14­3 según su UUID, el comando se convierte en


sigue:

Haga clic aquí para ver la imagen del código

montar UUID="5d34b37c­5d32­4790­8364­d22a8b8f88db" /

Montar dispositivos manualmente usando el UUID no es exactamente más fácil. Si


Los montajes están automatizados como se analiza en la siguiente sección; sin embargo,
Machine Translated by Google

usar UUID en lugar de nombres de dispositivos tiene sentido.

Para montar un sistema de archivos usando una etiqueta, use el

comando mount LABEL=nombre de etiqueta. Por ejemplo, utilice

mount LABEL=mylabel /mnt para montar temporalmente el sistema de archivos

con el nombre mylabel en el directorio /mnt.

Automatización de montajes del sistema de archivos mediante /etc/fstab

Normalmente, no querrás montar sistemas de archivos manualmente.

Una vez que esté satisfecho con ellos, es una buena idea montarlos

automáticamente. La forma clásica de hacer esto es a través del archivo /etc/

fstab . El ejemplo 14­4 muestra cómo podría verse el contenido de este archivo.

Ejemplo 14­4 Ejemplo de contenido del archivo /etc/fstab

Haga clic aquí para ver la imagen del código

[raíz@servidor1 ~]# cat /etc/fstab


#
# /etc/fstab
# Creado por anaconda el jueves 1 de septiembre a las 12:06:40 de 2022
#

# Los sistemas de archivos accesibles, por referencia, se mantienen


disco/'.
# Ver las páginas de manual fstab(5), findfs(8), mount(8) y/
Machine Translated by Google

información.

# Después de editar este archivo, ejecute 'systemctl daemon­r


sistemad
# unidades generadas a partir de este archivo.
#

/dev/mapper/rhel­root / xfs de
UUID=6c2b4028­1dcb­44cb­b5b7­c8e52352b06c /arranque
valores predeterminados 0 0.

/dev/mapper/rhel­swap ninguno /dev/sr0 /repo de


cambiar iso9660 de

En el archivo /etc/fstab, todo está especificado para montar el archivo.

sistema automáticamente. Para ello, cada línea tiene seis campos, como
resumido en la Tabla 14­5.

Tabla 14­5 Campos /etc/fstab

Campo Descripción

Dispositivo El dispositivo que se debe montar. Un dispositivo

Se puede utilizar nombre, UUID o etiqueta.


Machine Translated by Google

Campo Descripción

Montar El directorio o interfaz del kernel donde

Punto Es necesario montar el dispositivo.

Archivo El tipo de sistema de archivos.

Sistema

Montar Opciones de montaje.

Opciones

Vertedero Utilice 1 para habilitar el soporte para realizar copias de seguridad

Apoyo utilizando la utilidad de volcado. Esto puede ser necesario para

algunas soluciones de respaldo.

Automático Este campo especifica si el sistema de archivos debe verificarse

Controlar automáticamente al iniciar.

Utilice 0 para desactivar la verificación automática, 1 si este es el

sistema de archivos raíz y debe verificarse automáticamente,

y 2 para todos los demás sistemas de archivos que necesitan

verificación automática durante el arranque.

Los sistemas de archivos de red deben tener esta opción configurada

a 0.
Machine Translated by Google

Según lo que se ha comentado anteriormente sobre el comando de montaje,


no debería tener problemas para comprender los campos Dispositivo, Punto de
montaje y Sistema de archivos en /etc/fstab. Tenga en cuenta que en el punto
de montaje no todos los sistemas de archivos utilizan un nombre de
directorio. Algunos dispositivos del sistema, como el swap, no están montados
en un directorio, sino en una interfaz del kernel. Es fácil reconocer
cuando se utiliza una interfaz del kernel; su nombre no comienza con / (y

no existe en el sistema de archivos de su servidor).

El campo Opciones de montaje define opciones de montaje específicas que se pueden

utilizar. Si no se requieren opciones específicas, esta línea simplemente leerá "valores

predeterminados". Para ofrecer una funcionalidad específica, aquí se puede especificar

una gran cantidad de opciones de montaje. La Tabla 14­6 ofrece una descripción

general de algunas de las opciones de montaje más comunes.

Tabla 14­6 Opciones de montaje comunes

Opción Usar

automático / Monta/no monta el sistema de archivos


tú automáticamente.
Machine Translated by Google

Opción Usar

accl Agrega soporte para listas de control de acceso al sistema

de archivos (consulte el Capítulo 7,

“Administración de permisos”).

usuario_xattr Agrega soporte para atributos extendidos por el usuario

(consulte el Capítulo 7).

ro Monta el sistema de archivos en modo de solo lectura.

un momento / Deshabilita/habilita las modificaciones del tiempo de acceso.

no hay tiempo

noexec / Deniega/permite la ejecución de archivos de programa


ejecutivo desde el sistema de archivos.

La quinta columna de /etc/fstab especifica la compatibilidad con la utilidad de

volcado, que se desarrolló hace mucho tiempo para crear copias de seguridad del sistema

de archivos. En los sistemas de archivos modernos, esta opción no es necesaria, por lo

que la verá establecida en 0 en la mayoría de los casos.

La última columna indica si es necesario verificar la integridad del sistema de archivos

durante el arranque. Ingrese un 0 si no desea verificar el sistema de archivos en absoluto,

un 1 si este es el sistema de archivos raíz que necesita ser


Machine Translated by Google

verificado antes que nada, y un 2 si se trata de un sistema de archivos no


raíz que debe verificarse durante el arranque. Debido a que la coherencia del
sistema de archivos se verifica de otra manera, esta opción ahora
comúnmente se establece en el valor 0.

Después de agregar montajes a /etc/fstab, es una buena idea verificar que no


cometió ningún error. Si /etc/fstab contiene errores, ya no podrá iniciar su
sistema y en el examen RHCSA el resultado podría ser que no apruebe el
examen. Se pueden utilizar las siguientes opciones para verificar el contenido
de /etc/fstab:

findmnt ­­verify Verifica la sintaxis de /etc/fstab y le avisa si hay algo


incorrecto. mount ­a
Monta todos los sistemas de archivos que tienen una línea en /etc/fstab y
no están montados actualmente.

En el Ejercicio 14­7, aprenderá cómo montar particiones a través de /etc/


fstab montando la partición con formato XFS /dev/sdb5 que creó en ejercicios
anteriores.

Ejercicio 14­7 Montaje de particiones mediante /etc/fstab

1. Desde un shell raíz, escriba blkid. Utilice el ratón para copiar el


UUID=parte “nnnn” para /dev/sdb5.
2. Escriba mkdir ­p /mounts/data para crear un punto de montaje para esto
dividir.
3. Abra /etc/fstab en un editor y agregue la siguiente línea:
Machine Translated by Google

Haga clic aquí para ver la imagen del código

UUID="nnnn" /montajes/datos xfs valores predeterminados 0

4. Antes de intentar un montaje automático mientras reinicia, es una buena idea

probar la configuración. Escriba montaje ­a. Este comando monta todo

lo que se especifica en /etc/fstab y que aún no se ha montado.

5. Escriba df ­h para verificar que la partición se haya montado.

correctamente.

Usando montajes Systemd

El archivo /etc/fstab se ha utilizado para automatizar montajes desde el

primeros días de UNIX. En versiones recientes de RHEL, se utiliza como

archivo de entrada para crear montajes systemd, ya que, en última instancia,

systemd es responsable de montar los sistemas de archivos. Puede

encontrar los archivos generados por /etc/fstab en el directorio /run/systemd/

generator. En el Ejemplo 14­5 puedes ver cómo se vería su contenido.

Ejemplo 14­5 Ejemplo de archivo de montaje Systemd

Haga clic aquí para ver la imagen del código


Machine Translated by Google

[root@servidor1 ~]# cat /run/systemd/generator/repo.


# Generado automáticamente por systemd­fstab­generat

[Unidad]
Documentación=man:fstab(5) man:systemd­fstab­gener
RutaFuente=/etc/fstab
Antes=local­fs.target
Después=blockdev@dev­sr0.target

[Montar]
Qué=/dev/sr0
Donde=/repositorio
Tipo = iso9660

Como systemd se encarga de los montajes, también puede optar por montar
sus sistemas de archivos de esta manera. Para hacerlo, necesita crear un
archivo de montaje en /etc/systemd/system, que cumpla con los
siguientes requisitos:

El nombre del archivo corresponde al directorio donde desea montar su


dispositivo. Entonces, si desea montar en /data, el
El archivo es datos.mount.

El archivo contiene una sección [Montar] que tiene las líneas Qué,

Dónde y tipo.
El archivo tiene una sección [Instalar] que contiene
WantedBy=some.target. Sin esta sección el soporte no puede
Machine Translated by Google

estar habilitado.

En el Ejercicio 14­8, creará un archivo de montaje para el dispositivo /dev/sdc1


que se creó anteriormente.

Ejercicio 14­8 Creación de un archivo de montaje Systemd

1. Utilice mkfs.ext4 /dev/sdc1 para formatear /dev/sdc1 con un archivo Ext4

sistema.
2. Escriba mkdir /exercise para crear el punto de montaje. 3.
Utilice vim /etc/systemd/system/exercise.mount y proporcione el archivo.
los siguientes contenidos:
Haga clic aquí para ver la imagen del código

[Unidad]
Antes = local­fs.target

[Montar]
Qué=/dev/sdc1
Donde=/ejercicio

Tipo=ext4

[Instalar]
WantedBy=multiusuario.objetivo

4. Utilice systemctl enable ­­ahora ejercicio.mount para habilitar y


inicie la unidad de montaje.
Machine Translated by Google

5. Tipo de montaje | ejercicio grep para verificar que se creó el montaje.

6. Utilice systemctl status ejercicio.mount para verificar el archivo de la unidad.

Resumen

En este importante capítulo, aprendió a trabajar con particiones y

sistemas de archivos en RHEL 9. Aprendió a crear particiones para discos MBR

y GPT y a colocar un sistema de archivos encima de la partición. También

aprendió cómo montar estas particiones manual y automáticamente a

través de /etc/fstab o usando archivos de unidad systemd.

Tareas de preparación de exámenes

Como se menciona en la sección "Cómo utilizar este libro" en el

Introducción, tiene varias opciones para la preparación de exámenes: los

laboratorios de final de capítulo; las tablas de memoria en el Apéndice C; Capítulo

27, “Preparación Final”; y los exámenes de práctica.

Revisar todos los temas clave

Revise los temas más importantes del capítulo, señalados con el ícono de Tema

clave en el margen de la página. La Tabla 14­7 enumera una referencia

para estos temas clave y los números de página en los que


cada uno se encuentra.
Machine Translated by Google

Tabla 14­7 Temas clave para el Capítulo 14

Descripción del elemento clave del tema Página

Tabla 14­2 Especificaciones de tamaño de disco 316

Tabla 14­3 Tipos de dispositivos de disco comunes 317

Tabla 14­4 Descripción general del sistema de archivos 328

Tabla 14­5 /etc/fstab Campos 336

Tabla 14­6 Opciones de montaje comunes 337

Tablas y listas completas de memoria

Imprima una copia del Apéndice C, “Tablas de memoria” (que se encuentra en la

sitio web complementario), o al menos la sección de este capítulo, y

Completar las tablas y listas de memoria. Apéndice D, “Memoria

Clave de respuestas de tablas”, incluye tablas completas y listas para verificar.

tu trabajo.
Machine Translated by Google

Definir términos clave

Defina los siguientes términos clave de este capítulo y verifique sus respuestas

en el glosario:

dividir

Registro de arranque maestro (MBR)

Sistema básico de entrada/salida (BIOS)

partición extendida

partición primaria

partición lógica

Tabla de particiones GUID (GPT)

Interfaz de firmware extensible unificada (UEFI)

XFS

ext4

ext3

ext2
Machine Translated by Google

BtrFS

VFAT

montar

desmontar

ID universalmente único (UUID)

etiqueta

fstab

Preguntas de revisión

Las preguntas que siguen utilizan un formato abierto destinado a ayudarle a evaluar su

conocimiento de conceptos y terminología y la amplitud de su conocimiento. Puede encontrar

las respuestas a estas preguntas en el Apéndice A.

. ¿Qué herramienta utilizas para crear particiones GUID?

. ¿Qué herramienta utilizas para crear particiones MBR?

. ¿Cuál es el sistema de archivos predeterminado en RHEL 9?

. ¿Cuál es el nombre del archivo que se utiliza para montar automáticamente?

particiones durante el arranque?


Machine Translated by Google

. ¿Qué opción de montaje utiliza si desea que un sistema de archivos no sea

¿Se monta automáticamente durante el arranque?

. ¿Qué comando le permite formatear una partición que tiene tipo

82 con el sistema de archivos apropiado?

. Acabas de agregar un par de particiones para montaje automático.

mientras arranca. ¿Cómo se puede probar de forma segura si esto funcionará sin tener

que reiniciar?

. ¿Qué sistema de archivos se crea si usa el comando mkfs?

¿Sin ninguna especificación del sistema de archivos?

. ¿Cómo se formatea una partición Ext4?

. ¿Cómo encuentra los UUID para todos los dispositivos en su computadora?

Laboratorio de fin de capítulo

Para realizar esta práctica de laboratorio de final de capítulo, deberá agregar un dispositivo

de disco nuevo y sin usar. Cree este nuevo dispositivo de disco usando el

software de virtualización que está usando o agregando un USB vacío

memoria USB.
Machine Translated by Google

Laboratorio 14.1

1. Agregue dos particiones a su servidor. Cree ambas particiones con un tamaño de 100

MiB. Una de estas particiones debe configurarse como espacio de intercambio; la

otra partición debe formatearse con un sistema de archivos Ext4.

2. Configure su servidor para montar automáticamente estas particiones.

Monte la partición Ext4 en /mounts/data y monte la partición de intercambio como

espacio de intercambio.

3. Reinicie su servidor y verifique que todo esté montado correctamente. En caso de

problemas, lea el Capítulo 18, “Habilidades esenciales para solucionar problemas”,

para obtener consejos sobre cómo solucionar problemas.


Machine Translated by Google

Capítulo 15

Gestión del almacenamiento avanzado

En este capítulo se tratan los siguientes temas:

Entendiendo LVM

Creación de volúmenes lógicos LVM

Cambiar el tamaño de los volúmenes lógicos LVM

Configurando Stratis

En este capítulo se tratan los siguientes objetivos del examen RHCSA:

Crear y eliminar volúmenes físicos

Asignar volúmenes físicos a grupos de volúmenes

Crear y eliminar volúmenes lógicos

Ampliar los volúmenes lógicos existentes

En el Capítulo 14, “Administración del almacenamiento”, aprendió a administrar

particiones en un disco duro. Crear múltiples particiones en un disco es útil porque le

permite mantener diferentes tipos de datos en particiones separadas, pero no

ofrece la flexibilidad que ofrecen las soluciones de almacenamiento avanzadas.

En este capítulo, aprenderá a trabajar con soluciones de almacenamiento avanzadas,

incluidos Logical Volume Manager (LVM) y Stratis.


Machine Translated by Google

“¿Ya lo sé?” Prueba

El cuestionario “¿Ya lo sé?” El cuestionario le permite evaluar si debe leer este

capítulo completo detenidamente o pasar a la sección "Tareas de preparación

para el examen". Si tiene dudas sobre sus respuestas a estas preguntas o sobre

su propia evaluación de su conocimiento de los temas, lea el capítulo

completo. La Tabla 15­1 enumera los títulos principales de este capítulo y sus

correspondientes “¿Ya lo sé?” preguntas del cuestionario. Puede encontrar las

respuestas en el Apéndice A, “Respuestas a la pregunta '¿Ya lo sé?' Cuestionarios

y preguntas de repaso”.

Tabla 15­1 “¿Ya lo sé?” Mapeo de sección a pregunta

Sección de Temas de Fundación Preguntas

Entendiendo LVM 1–2

Creación de volúmenes lógicos LVM 3–5

Cambiar el tamaño de los volúmenes lógicos LVM 6–8

Configurando Stratis 9–10


Machine Translated by Google

. ¿Cuál de los siguientes no es un componente estándar en un LVM?

¿configuración?

1. Volumen lógico 2.

Sistema de

archivos 3. Grupo

de volúmenes 4. Volumen físico

. ¿Cuál de las siguientes no es una característica de LVM?

1. Cambio de tamaño del

volumen 2. Reemplazo en caliente del disco

defectuoso 3. Copia en

escritura 4. Instantáneas

. ¿Qué tipo de partición necesitas en una partición GPT para marcarla?

con el tipo de partición LVM?

1. 83

2.8e

3. 8300

4. 8e00

. ¿Cuál de los siguientes comandos muestra correctamente cómo crear un volumen

lógico que utilice el 50% del espacio disponible en disco en el grupo de volúmenes?
Machine Translated by Google

1. vgadd ­n lvdata ­l +50% GRATIS vgdata 2. lvcreate

lvdata ­l 50% GRATIS vgdata 3. lvcreate ­n lvdata ­l

50% GRATIS vgdata 4. lvadd ­n lvdata ­l 50% GRATIS /

dev/vgdata

. ¿Qué comandos muestran una descripción general de las funciones físicas disponibles?

volúmenes? (Escoge dos.)

1. pvshow 2.

pvdisplay 3. pvs

4. pvlista

. ¿Qué afirmación sobre el cambio de tamaño de los volúmenes lógicos LVM no es cierta?

1. El sistema de archivos Ext4 se puede aumentar y disminuir de tamaño.

2. Utilice lvextend con la opción ­r para cambiar automáticamente el tamaño del archivo.

sistema.

3. No se puede cambiar el tamaño del sistema de archivos XFS.

4. Para aumentar el tamaño de un volumen lógico, necesita espacio asignable en el

grupo de volúmenes.

. Quiere eliminar el volumen físico /dev/sdd2 del

grupo de volúmenes vgdata. ¿Cuál de las siguientes afirmaciones sobre el

procedimiento de expulsión no es cierta?

1. El sistema de archivos debe admitir la reducción.


Machine Translated by Google

2. Necesita que la cantidad de extensiones utilizadas en /dev/sdd2 sea

disponible en el resto de dispositivos.

3. Antes de poder usar vgreduce, debe mover las extensiones utilizadas a

los volúmenes restantes.

4. Utilice pvmove para mover las extensiones utilizadas.

. Ha ampliado el tamaño de un volumen lógico sin ampliar el sistema de archivos XFS que

contiene. ¿Cuál de las siguientes soluciones puedes utilizar para solucionarlo?

1. Utilice lvresize nuevamente, pero esta vez con la opción ­r. El

El comando cambiará el tamaño solo del sistema de archivos.

2. Devuelva el volumen lógico a su tamaño original y luego use lvresize ­r nuevamente.

3. Utilice fsresize para cambiar el tamaño del sistema de archivos más adelante.

4. Utilice xfs_growfs para hacer crecer el sistema de archivos al tamaño disponible en

El volumen lógico.

. ¿Cuánto almacenamiento se utiliza en un sistema de archivos Stratis para metadatos?

¿almacenamiento?

1. 527 MB

2. 1 GiB

3. 4 MB

4. 4 GB
Machine Translated by Google

. ¿Cuál de las siguientes líneas muestra correctamente cómo funciona un archivo Stratis?

¿El sistema debe montarse a través de /etc/fstab?

1. UUID=abcd /stratis xfs valor predeterminado 0 0

2. /dev/stratis/stratis1 /stratis xfs valores predeterminados,x­

systemd.requires=stratis.servicio 0 0

3. UUID=abcd /stratis xfs valores predeterminados,x­

systemd.requires=stratis.servicio 0 0

4. /dev/stratis/stratis1 /stratis xfs valor predeterminado 0 0

Temas de la Fundación

Entendiendo LVM

En los primeros días de los servidores Linux, el almacenamiento se manejaba

mediante la creación de particiones en discos. Incluso si este enfoque funciona, existen

algunas desventajas, la más importante de las cuales es que las particiones son inflexibles.

Por eso se introdujo el Administrador de volúmenes lógicos. Mientras que no es posible hacer

crecer dinámicamente una partición que se está quedando sin espacio en disco, esto es

posible cuando se trabaja con LVM. LVM también ofrece muchas otras ventajas, que

conocerá en este capítulo.


Machine Translated by Google

Arquitectura LVM

En la arquitectura LVM se pueden distinguir varias capas. En la capa más baja se

utilizan los dispositivos de almacenamiento. Puede ser cualquier dispositivo de

almacenamiento, como discos completos, particiones, unidades lógicas (LUN) en

una red de área de almacenamiento (SAN) y cualquier otra cosa que sea posible

en las topologías de almacenamiento modernas. En este capítulo aprenderá a

utilizar particiones como volúmenes físicos, lo cual es una práctica

recomendada. Al utilizar particiones en lugar de dispositivos de disco completos,

es fácil para otras herramientas reconocer que ya se ha configurado parte del

almacenamiento en el dispositivo de bloque, lo que hace menos probable que se

produzcan configuraciones erróneas.

Los dispositivos de almacenamiento deben marcarse como volúmenes físicos, lo que


los hace utilizables en un entorno LVM y los hace

utilizable por otras utilidades que intentan obtener acceso al volumen lógico.

Se puede agregar un dispositivo de almacenamiento que sea un volumen físico

al grupo de volúmenes, que es la abstracción de todo el almacenamiento disponible.

La “abstracción” significa que el grupo de volúmenes no es algo

eso es fijo, pero se puede cambiar su tamaño cuando sea necesario, lo que lo hace

Es posible agregar más espacio en el nivel de grupo de volúmenes cuando los

volúmenes se están quedando sin espacio en disco. La idea es simple: si se está

quedando sin espacio en disco en un volumen lógico, toma el espacio

disponible en disco del grupo de volúmenes. Y si no hay espacio disponible en

disco en el grupo de volúmenes, simplemente agréguelo agregando un volumen físico.


Machine Translated by Google

Encima del grupo de volúmenes están los volúmenes lógicos. Los volúmenes

lógicos no actúan directamente sobre los discos, sino que obtienen su espacio en disco

del espacio disponible en el grupo de volúmenes. Eso significa que un volumen

lógico puede consistir en almacenamiento disponible de múltiples volúmenes físicos,

lo que agrega una capa importante de flexibilidad adicional a la configuración del

almacenamiento.

Nota

Es una buena idea evitar que los volúmenes lógicos abarquen

varios volúmenes físicos; Si uno de los volúmenes físicos se rompe,

todos los archivos del sistema de archivos LVM quedarán

inaccesibles.

Los sistemas de archivos reales se crean en los volúmenes lógicos. Debido a que los

volúmenes lógicos son flexibles en cuanto a tamaño, eso hace que los sistemas de

archivos también sean flexibles. Si un sistema de archivos se está quedando sin espacio

en disco, es relativamente fácil ampliar el sistema de archivos o reducirlo si el sistema

de archivos lo permite. Tenga en cuenta que para cambiar el tamaño de los

sistemas de archivos cuando se cambia el tamaño de los volúmenes lógicos, los

sistemas de archivos deben ofrecer soporte para eso.

La Figura 15­1 ofrece una descripción general de la arquitectura LVM.


Machine Translated by Google

Figura 15­1 Descripción general de la arquitectura LVM

Características de LVM

Hay varias razones por las que LVM es genial. La razón más importante es que

LVM ofrece una solución flexible para gestionar el almacenamiento.

Los volúmenes ya no están sujetos a las restricciones de los discos duros físicos.

Si se necesita espacio de almacenamiento adicional, el grupo de volúmenes se

puede ampliar fácilmente agregando un nuevo volumen físico, de modo que se

pueda agregar espacio en disco a los volúmenes lógicos. También es posible

reducir el tamaño de un volumen lógico, pero solo si el sistema de archivos que se

creó en ese volumen admite la función de reducir el tamaño.


Machine Translated by Google

Tamaño del sistema de archivos. Ext4 admite crecimiento y reducción; El tamaño

de XFS sólo se puede aumentar.

Otra razón importante por la que a los administradores les gusta usar LVM es la

compatibilidad con instantáneas. Una instantánea mantiene el estado actual de un

volumen lógico y se puede utilizar para volver a una situación anterior o para realizar

una copia de seguridad del sistema de archivos en el volumen lógico si el

volumen está abierto. El uso de instantáneas es esencial en las estrategias de respaldo.

Las instantáneas de LVM se crean copiando el volumen lógico


datos administrativos (los metadatos) que describen el estado actual

de archivos a un volumen de instantáneas. Siempre que nada cambie, desde los

metadatos de la instantánea LVM se abordan los bloques originales en el volumen

original. Cuando se modifican los bloques, los bloques que contienen el estado

anterior del archivo se copian en el volumen de la instantánea, que por ese

motivo crecerá. El uso de este método garantiza que, al acceder a un

volumen de instantánea LVM, se pueda acceder al estado exacto de los

archivos tal como estaban cuando se creó la instantánea. Debido a que la

instantánea crecerá cuando cambien los archivos en el volumen original, al

planificar las instantáneas, debe asegurarse de que haya suficiente espacio en

disco disponible. Además, se supone que las instantáneas son temporales: una vez

que han cumplido su propósito, se pueden eliminar.

Una tercera ventaja importante de utilizar volúmenes lógicos LVM es la opción de

reemplazar fácilmente el hardware defectuoso. Si un disco duro falla,


Machine Translated by Google

los datos se pueden mover dentro del grupo de volúmenes (a través del comando

pvmove), el disco defectuoso se puede eliminar del grupo de volúmenes y se

puede agregar un nuevo disco duro dinámicamente, sin requerir ningún

tiempo de inactividad para el volumen lógico en sí.

Creación de volúmenes lógicos LVM

La creación de volúmenes lógicos LVM implica la creación de tres capas en la

arquitectura LVM. Primero hay que convertir dispositivos físicos, como discos

o particiones, en volúmenes físicos (PV); luego debe crear el grupo de

volúmenes (VG) y asignarle PV. Como último paso, debe crear el volumen

lógico (LV). En esta sección, aprenderá lo que implica la creación de estas tres

capas.

Existen diferentes utilidades para crear volúmenes lógicos LVM. Este

capítulo se centra en el uso de las utilidades de línea de comandos. Son

relativamente fáciles de usar y están disponibles en todos los entornos (ya sea

que esté ejecutando una interfaz gráfica o no).

Consejo

No es necesario que memorice los comandos que se

analizan en este capítulo para el examen RHCSA. Todo lo que

necesitas recordar es pv, vg y lv. Abra una línea de comando,

escriba pv y presione la tecla Tab dos veces. Esto mostrará

todos los comandos que comienzan


Machine Translated by Google

con pv, que son todos los comandos que se utilizan para
Manejo de volúmenes físicos. Después de haber encontrado el
comando que necesita, ejecute este comando con ­­
opción de ayuda. Esto muestra un resumen de uso que enumera

todo lo que debes hacer para crear el elemento que deseas


necesidad. El ejemplo 15­1 muestra un ejemplo de la
comando pvcreate ­­help (que se explica en el
siguiente subsección).

Ejemplo 15­1 Solicitud de ayuda para el comando pvcreate

Haga clic aquí para ver la imagen del código

[root@servidor1 ~]# pvcreate ­­ayuda


pvcreate: inicializa los volúmenes físicos para su uso.

PVC crear fotovoltaica...


[ ­f|­­fuerza ]
[ ­M|­­tipo de metadatos lvm2 ]
[ ­u|­­uuid Cadena ]
[ ­Z|­­cero y|n ]
[ ­­dataalignment Tamaño[k|UNIDAD] ]
[ ­­dataalignmentoffset Tamaño[k|UNIDAD] ]
[ ­­bootloaderareasize Tamaño[m|UNIT] ]
[ ­­número de sector de etiquetas ]
[ ­­pvmetadatacopies 0|1|2 ]
[ ­­metadatasize Tamaño[m|UNIDAD] ]
Machine Translated by Google

[ ­­metadataignore y|n ]
[ ­­norestorefile ]
[ ­­setphysicalvolumesize Tamaño[m|UNIDAD] [ ­­
reportformat basic|json ]
[ ­­restorefile Cadena ]
[OPCIONES_COMUNES]

Opciones comunes para lvm:


[ ­d|­­depurar ]
[ ­h|­­ayuda ]
[ ­q|­­silencio ]
[ ­v|­­detallado ]
[ ­y|­­sí ]
[ ­t|­­prueba ]
­­commandprofile Cadena ]
­­config Cadena ]
­­driverloaded y|n ]
­­sin bloqueo]
­­lockopt Cadena]
­­ayuda larga]
­­cadena de perfil]
­­versión ]
­­cadena de archivos de dispositivos]
­­dispositivos PV ]
­­ninguna pista]
­­cadena de diario]
[[[[[[[[[[[[[

Utilice ­­longhelp para mostrar todas las opciones y avanzadas


Machine Translated by Google

Creando los volúmenes físicos

Antes de poder utilizar las herramientas LVM para crear volúmenes


físicos (PV), debe crear una partición marcada como tipo de partición LVM.
Este es básicamente el mismo procedimiento descrito en el Capítulo 14, con
la única diferencia de que antes de escribir cambios en el disco, necesita
cambiar el tipo de partición.

En fdisk y gdisk, puede usar t en el menú para cambiar el tipo. Si está


utilizando un disco MBR, el tipo de partición es 8e. Si está utilizando un disco
GUID, utilice el tipo de partición 8e00. En fdisk también puede escribir lvm
como tipo de partición a usar, ya que la versión RHEL 9 de fdisk admite el
uso de alias. Si está utilizando parted para crear particiones, necesita usar el
comando set n lvm on desde la interfaz parted (donde n es el número de la
partición que desea marcar para usar con LVM).

Después de crear la partición y marcarla como tipo de partición LVM, debe


usar pvcreate para marcarla como un volumen físico.
Esto escribe algunos metadatos en la partición, lo que permite su uso en un
grupo de volúmenes. Todo el procedimiento se resume en el ejercicio 15­1,
en el que se crea un volumen físico. Consulte también el Ejemplo 15­2
para obtener una descripción general de este procedimiento.

Ejercicio 15­1 Creando un volumen físico


Machine Translated by Google

Para realizar este ejercicio, necesita un disco duro que tenga espacio

libre (sin particiones) disponible. El método recomendado para liberar espacio en

disco es agregar un nuevo disco duro en su entorno de máquina virtual. En este

ejercicio, utilizo un limpio

/dev/sdd dispositivo para crear la partición. Es posible que deba cambiar el nombre

del dispositivo para que coincida con su configuración.

1. Abra un shell raíz y escriba fdisk /dev/sdd 2. Escriba p.

Esto mostrará el diseño actual de la tabla de particiones. No debería haber ninguno en

este momento.

3. Escriba g para crear una tabla de particiones GPT.

4. Escriba n para crear una nueva partición. Presione Enter cuando se le solicite

el número de partición, así como cuando se le solicite el primer sector.

5. Cuando se le solicite el último sector, escriba +1G para crear un sector de 1 GiB.

dividir.

6. Escriba t para cambiar el tipo de partición. Como sólo tiene una partición en

este momento, esta partición se selecciona automáticamente. Cuando

se le solicite el tipo de partición, ingrese lvm.

7. Presione p para verificar que la partición se haya creado correctamente.

8. Repita este procedimiento para crear otros tres LVM de 1 GiB.

particiones para uso futuro.

9. Presione w para escribir las nuevas particiones en el disco y salir de fdisk.

10. Utilice el comando lsblk para verificar que las nuevas particiones fueran

creado exitosamente.
Machine Translated by Google

11. Escriba pvcreate /dev/sdd1 para marcar la nueva partición como LVM

volumen físico (ver Ejemplo 15­3).

12. Escriba pvs para verificar que el volumen físico se creó correctamente.

Ejemplo 15­2 Creación de una partición LVM en fdisk

Haga clic aquí para ver la imagen del código

[raíz@
[raíz@servidor1 ~]# fdisk /dev/sdd

Bienvenido a fdisk (util­linux 2.37.4).


Los cambios permanecerán sólo en la memoria hasta que usted decida. Tenga
cuidado antes de utilizar el comando de escritura.

Comando (m para ayuda): g


Creó una nueva etiqueta de disco GPT (GUID:
3BCE8E49­EFDF­9144­ACD5­290F4FCCDA07).

Comando (m para ayuda): n


Número de partición (1­128, predeterminado 1):
Primer sector (2048­41943006, por defecto 2048):
Último sector, +/­sectores o +/­tamaño{K,M,G,T,P} (204
41943006): +1G

Creó una nueva partición 1 de tipo 'Sistema de archivos Linux GiB.


Machine Translated by Google

Comando (m para ayuda): t


Partición seleccionada 1
Tipo de partición o alias (escriba L para enumerar todo): lvm
Se cambió el tipo de partición 'sistema de archivos Linux' a 'L

Comando (m para ayuda): p


Disco /dev/sdd: 20 GiB, 21474836480 bytes, 41943040
Modelo de disco: VMware Virtual S
Unidades: sectores de 1 *
512 = 512 bytes
Tamaño del sector (lógico/físico): 512 bytes / 512 por
Tamaño de E/S (mínimo/óptimo): 512 bytes/512 bytes
Tipo de etiqueta de disco: gpt
Identificador de disco: 3BCE8E49­EFDF­9144­ACD5­290F4FCCDA

Dispositivo Comenzar Tipo de tamaño de sectores finales


/dev/sdd1 2048 2099199 2097152 1G Linux LVM

Comando (m para ayuda): w


La tabla de particiones se ha alterado.
Llamar a ioctl() para volver a leer la tabla de particiones.
Sincronización de discos.

Ejemplo 15­3 Verificación del volumen físico

Haga clic aquí para ver la imagen del código


Machine Translated by Google

[root@servidor1 ~]# pvcreate /dev/sdd1


Volumen físico "/dev/sdd1" creado correctamente
[raíz@servidor1 ~]# pvs
fotovoltaica VG Fmt Attr PTamaño PLibre

/dev/sda2 rhel lvm2 a­­ <19.00g /dev/sdd1 1.00g 1.00g 0


lvm2­­­

Como alternativa al comando pvs, que muestra un resumen de

los volúmenes físicos y sus atributos, puede utilizar el

Comando pvdisplay para mostrar más detalles. El ejemplo 15­4 muestra una

ejemplo del resultado de este comando.

Ejemplo 15­4 Ejemplo de salida del comando pvdisplay

Haga clic aquí para ver la imagen del código

[root@servidor1 ~]# pvdisplay /dev/sdd1


"/dev/sdd1" es un nuevo volumen físico de "1.00 Gi
­­­ NUEVO Volumen físico ­­­
Nombre PV /dev/sdd1
Nombre de VG

Tamaño fotovoltaico 1,00 GiB


Asignable NO
Tamaño PE 0
PE total 0
Educación física gratuita 0
Machine Translated by Google

PE asignado 0
UUID PV cjdhpJ­bRh9­fg3B­KlPh­XQzD

Si desea una descripción general compacta del almacenamiento actual

configuración en su servidor, es posible que también le guste el lsblk


dominio. Como se muestra en el ejemplo 15­5, este comando proporciona una

descripción jerárquica de qué discos y particiones se utilizan en

qué grupos de volúmenes LVM y volúmenes lógicos.

Ejemplo 15­5 Uso de lsblk para una descripción general compacta de la corriente

Configuración de almacenamiento

Haga clic aquí para ver la imagen del código

[raíz@servidor1 ~]# lsblk


NOMBRE MAJ:MIN RM TAMAÑO RO TIPO PUNTOS DE MONTAJE
sda 8:0 0 20G 0 disco

├─sda1 8:1 0 1G 0 parte /arranque


└─sda2 8:2 0 19G 0 parte
├─rhel­raíz 253:0 └─rhel­intercambio 0 17G 0 lvm /

253:1 sdb 0 2G 0 nivel [CAMBIAR]


8:16 0 20G 0 disco

├─sdb1 8:17 0 1G 0 parte


├─sdb2 8:18 0 1K 0 parte
├─sdb5 8:21 0 1G 0 parte
└─sdb6 8:22 0 1G 0 parte
COSUDE 8:32 0 20G 0 disco
Machine Translated by Google

└─sdc1 8:33 0 1G 0 parte /ejercicio


SDD 8:48 0 20G 0 disco
└─sdd1 8:49 0 1G 0 parte
sr0 11:0 1 8G 0 rom/repositorio
nvme0n1 259:0 0 20G 0 disco

Crear los grupos de volúmenes

Ahora que se ha creado el volumen físico, puede asignarlo


a un grupo de volúmenes (VG). Es posible agregar un volumen físico a
un grupo de volúmenes existente (que se analiza más adelante en este

capítulo), pero aquí aprenderá cómo crear un nuevo grupo de volúmenes


y agregarle el volumen físico. Este es un simple comando
procedimiento. Simplemente escriba vgcreate seguido del nombre del volumen.
grupo que desea crear y el nombre del dispositivo físico que desea
quiero agregarle. Entonces, si el nombre del volumen físico es /dev/sdd1, el
El comando completo es vgcreate vgdata /dev/sdd1. Eres
completamente gratis en tu elección de nombre para el grupo de volumen. I
Me gusta comenzar todos los nombres de grupos de volúmenes con vg, lo que facilita

para encontrar los grupos de volúmenes si hay muchos, pero usted es libre de

elige lo que quieras.

Entre el apartado anterior y el párrafo anterior, usted


He aprendido cómo crear un grupo de volúmenes en dos pasos.
procedimiento donde primero se crea el volumen físico con el
Machine Translated by Google

comando pvcreate y luego agregue el grupo de volúmenes usando el


comando vgcreate. También puede hacer esto en un procedimiento de un
solo paso (donde no será necesario usar un comando pvcreate separado).

El procedimiento de un solo paso es particularmente útil para agregar


un dispositivo de disco completo). Si desea agregar el disco /dev/sdc, por
ejemplo, simplemente escriba vgcreate vgdata /dev/sdc para crear un grupo
de volúmenes vgdata que contenga el dispositivo /dev/sdc. Cuando haces
esto para agregar un dispositivo que aún no ha sido marcado como volumen
físico, la utilidad vgcreate lo marcará automáticamente como volumen
físico para que puedas verlo mientras usas pvs.
dominio.

Cuando se crean grupos de volúmenes, se utiliza un tamaño de extensión


física. El tamaño de la extensión física define el tamaño de los bloques de
construcción utilizados para crear volúmenes lógicos. Un volumen lógico siempre
tiene un tamaño que es múltiplo del tamaño de la extensión física. Si necesita
crear volúmenes lógicos enormes, es más eficiente utilizar un tamaño
de extensión física grande. Si no especifica nada, se utiliza un tamaño de
extensión predeterminado de 4 MiB. El tamaño de la extensión física
siempre se especifica como un múltiplo de 2 MiB, con un tamaño máximo de 128 MiB.
Utilice la opción vgcreate ­s para especificar el tamaño de extensión física que
quiere usar.

Nota
Machine Translated by Google

Cuando trabaja con LVM, debe considerar

el tamaño de la extensión física. Este es el tamaño del básico.

bloques de construcción utilizados en la configuración LVM. Cuando

estás trabajando con un sistema de archivos ext4, lógico


Se utilizan extensiones. Los tamaños de extensión en LVM no están en ningún caso.

relacionado de alguna manera con los tamaños de extensión que se utilizan en el

sistemas de archivos.

Después de crear el grupo de volúmenes, puede solicitar detalles sobre el

grupo de volúmenes utilizando el comando vgs para obtener un breve resumen, o el

comando vgdisplay para obtener más información. El ejemplo 15­6 muestra

un ejemplo de la salida del comando vgdisplay.

Ejemplo 15­6 Mostrando las propiedades del grupo de volúmenes actual

Haga clic aquí para ver la imagen del código

[root@servidor1 ~]# vgdisplay vgdata


­­­ Grupo de volumen ­­­
Nombre de VG vgdatos
ID del sistema
Formato lvm2
Áreas de metadatos 1

Secuencia de metadatos nº 1
Acceso VG leer escribir
Estado VG redimensionable

VI MÁX. 0
Machine Translated by Google

Cur LV 0

BT abierto 0
PV máx. 0
PV actual 1
Ley PV 1
Tamaño VG 1020.00 MB
Tamaño PE 4,00 MB
PE total 255
Alloc PE / Tamaño 0/0
Libre PE / Tamaño 255 / 1020,00 MB
UUID VG KrzkCo­QUFs­quJm­Z6pM­qMh0

Creación de volúmenes lógicos y sistemas de archivos

Ahora que se ha creado el grupo de volúmenes, puede comenzar

creando uno o más volúmenes lógicos (LV) a partir de él. Este

El procedimiento es ligeramente más complicado que la creación de

volúmenes físicos o grupos de volúmenes porque hay más

elecciones a tomar. Mientras crea el volumen lógico, debe

especifique un nombre de volumen y un tamaño.

El tamaño del volumen se puede especificar como un valor absoluto usando ­L

opción. Utilice, por ejemplo, ­L 5G para crear un volumen LVM con un 5­

Tamaño GiB. Alternativamente, puede usar tamaños relativos con ­l

opción. Por ejemplo, use ­l 50%FREE para usar la mitad de todos los disponibles

Espacio del disco. También puede utilizar la opción ­l para especificar el número de
Machine Translated by Google

extensiones que desea que tenga el volumen lógico. Además, deberá especificar el

nombre del grupo de volúmenes al que está asignado el volumen lógico y, opcionalmente

(pero muy recomendable), puede usar ­n para especificar el nombre del volumen

lógico. Por ejemplo, use lvcreate ­n lvdata ­l 100 vgdata para crear un volumen lógico con

el nombre lvdata y un tamaño de 100 extensiones y agréguelo al

grupo de volúmenes vgdata. Una vez que se haya creado el volumen lógico, puede

utilizar la utilidad mkfs para crear un sistema de archivos encima de él.

Comprensión de los nombres de dispositivos LVM

Ahora que se ha creado el volumen lógico, puede empezar a utilizarlo. Para hacer esto,

necesita saber el nombre del dispositivo. Los nombres de dispositivos de volumen

LVM se pueden abordar de varias maneras. El método simple es direccionar el

dispositivo como /dev/vgname/lvname. Entonces, por ejemplo, si ha creado un

volumen con el nombre lvdata, que obtiene su espacio disponible en disco del

grupo de volúmenes vgdata, el nombre del dispositivo sería /dev/vgdata/lvdata, que de

hecho es un enlace simbólico al dispositivo. nombre del mapeador (que se explica

próximo).

Para nombrar los volúmenes LVM, otro sistema desempeña un papel: el mapeador

de dispositivos. El asignador de dispositivos (abreviado como dm) es una interfaz

genérica que utiliza el kernel de Linux para direccionar dispositivos de almacenamiento.

El asignador de dispositivos es utilizado por múltiples tipos de dispositivos, como LVM


Machine Translated by Google

volúmenes, sino también mediante software RAID y dispositivos de

almacenamiento de red avanzados, como dispositivos multiruta.

Los dispositivos mapeadores de dispositivos se generan al detectarse y usan nombres

que se generan durante el arranque, como /dev/dm­0 y /dev/dm­1. Para facilitar el

acceso a estos dispositivos, el asignador de dispositivos crea enlaces simbólicos

en el directorio /dev/mapper que apuntan a estos nombres de dispositivos sin

sentido. Los enlaces simbólicos siguen la estructura de nombres /dev/mapper/

vgname­lvname.

Entonces, el dispositivo /dev/vgdata/lvdata también se conocería como /

dev/mapper/vgdata­lvdata. Cuando trabaje con volúmenes lógicos LVM, puede

utilizar cualquiera de estos nombres de dispositivo. El ejemplo 15­7 muestra una

descripción general de los diferentes nombres de dispositivos LVM proporcionados

por el asignador de dispositivos. En el ejercicio 15­2, aprenderá a crear un grupo de

volúmenes y volúmenes lógicos.

Ejemplo 15­7 Descripción general del nombre del dispositivo LVM

Haga clic aquí para ver la imagen del código

[root@servidor1 ~]# ls ­l /dev/mapper/vgdata­lvdata lrwxrwxrwx. 1 raíz raíz 7 16


de septiembre 11:34 /dev/mapper
../dm­2

lrwxrwxrwx. 1 raíz raíz 7 16 de septiembre 11:34 /dev/vgdata


Machine Translated by Google

Ejercicio 15­2 Creación del grupo de volúmenes y volúmenes lógicos

En el ejercicio 15­1, creaste un volumen físico. En este ejercicio continúas trabajando

ese volumen físico y lo asignas a un grupo de volumen. Luego agrega un volumen

lógico de ese grupo de volúmenes. Podrá trabajar en este ejercicio sólo después de

completar con éxito el Ejercicio 15­1.

1. Abra un shell raíz. Escriba pvs para verificar la disponibilidad física

volúmenes en su máquina. Debería ver el volumen físico /dev/sdd1 que se

creó anteriormente.

2. Escriba vgcreate vgdata /dev/sdd1. Esto creará el volumen

grupo con el volumen físico que tiene asignado.

3. Escriba vgs para verificar que se creó el grupo de volúmenes.

exitosamente. También escriba pvs. Observe que este comando ahora

muestra el nombre de los volúmenes físicos, con los nombres de los grupos de

volúmenes a los que están asignados.

4. Escriba lvcreate ­n lvdata ­l 50%FREE vgdata. Esto crea un

Volumen lógico LVM con el nombre lvdata, que utilizará el 50% del espacio

disponible en disco en el grupo de volúmenes vgdata.

5. Escriba lvs para verificar que el volumen se agregó correctamente.

6. En este punto, está listo para crear un sistema de archivos encima del volumen

lógico. Escriba mkfs.ext4 /dev/vgdata/lvdata para crear el sistema de archivos.

7. Escriba mkdir /files para crear una carpeta en la que se pueda guardar el volumen.
ser montado.
Machine Translated by Google

8. Agregue la siguiente línea al final de /etc/fstab:


Haga clic aquí para ver la imagen del código

/dev/vgdata/lvdata /files ext4 valores predeterminados 0 0

9. Escriba mount ­a para verificar que el montaje funcione y monte el

sistema de archivos.

10. Utilice lsblk para verificar que la partición se montó correctamente.

La Tabla 15­2 resume los comandos relevantes para crear lógicas.


volúmenes.

Tabla 15­2 Comandos esenciales de administración de LVM

Explicación del comando

crear pvc Crea volúmenes físicos.

PVS Muestra un resumen de los volúmenes físicos disponibles.

pvdisplay Muestra una lista de volúmenes físicos y sus propiedades.


Machine Translated by Google

Explicación del comando

pvremove Elimina la firma del volumen físico de un


dispositivo de bloqueo

vgcreate Crea grupos de volúmenes

etc. Muestra un resumen de los grupos de volúmenes disponibles.

vgdisplay Muestra una lista detallada de los grupos de volúmenes y sus


propiedades

vgremove Elimina un grupo de volúmenes

crear Crea volúmenes lógicos

lvs Muestra un resumen de todos los lógicos disponibles.


volúmenes

lvdisplay Muestra una lista detallada de lógicas disponibles.


volúmenes y sus propiedades

lvremove Elimina un volumen lógico


Machine Translated by Google

Cambiar el tamaño de los volúmenes lógicos LVM

Uno de los principales beneficios de usar LVM es que los volúmenes LVM son fáciles

de cambiar de tamaño, lo cual es muy útil si su sistema de archivos se está quedando

sin espacio disponible en el disco. Si se utiliza el sistema de archivos XFS, se puede

aumentar el tamaño de un volumen, pero no disminuirlo. Otros sistemas de archivos,

como Ext4, también admiten la reducción del tamaño del sistema de archivos. Puede

reducir un sistema de archivos Ext4 solo sin conexión, lo que significa que debe

desmontarlo antes de poder cambiar su tamaño. En esta sección, aprenderá cómo

aumentar el tamaño de un volumen lógico LVM. Para aumentar el tamaño de un

volumen lógico, necesita tener espacio en disco disponible en el grupo de volúmenes,

por lo que abordaremos eso primero.

Cambiar el tamaño de los grupos de volúmenes

La característica más importante de la flexibilidad de LVM radica en el hecho de que es

muy fácil cambiar el tamaño de los grupos de volúmenes y los volúmenes lógicos que

utilizan espacio en disco de los grupos de volúmenes. El comando vgextend se

usa para agregar almacenamiento a un grupo de volúmenes y el comando

vgreduce se usa para sacar volúmenes físicos de un grupo de volúmenes. El

procedimiento para agregar almacenamiento a un grupo de volúmenes es relativamente

sencillo:

1. Asegúrese de que haya un volumen físico o dispositivo disponible para agregarlo

al grupo de volúmenes.
Machine Translated by Google

2. Utilice vgextend para ampliar el grupo de volúmenes. El nuevo espacio en disco

se mostrará inmediatamente en el grupo de volúmenes.

Después de ampliar un grupo de volúmenes, puede utilizar el comando vgs para

verifique que se haya agregado un volumen físico al grupo de volúmenes.

En el ejemplo 15­8, puede ver que el VG vgdata contiene dos

volúmenes físicos, como se indica en la columna #PV.

Ejemplo 15­8 Verificación de operaciones de cambio de tamaño de VG con vgs

Haga clic aquí para ver la imagen del código

[raíz@servidor1 ~] #vgs
VG #PV #LV #SN Atributo Tamaño V VF
cientos 1 2 0 wz­­n­ <19.00g 0

vgdatos 2 1 0 wz­­n­1020.00m 51

Cambiar el tamaño de volúmenes lógicos y sistemas de archivos

Los grupos de volúmenes similares se pueden ampliar con vgextend

comando, los volúmenes lógicos se pueden ampliar con el comando lvextend

dominio. Este comando tiene una opción muy útil ­r para cuidar

de extender los sistemas de archivos en el volumen lógico al mismo tiempo

tiempo; se recomienda utilizar esta opción y no la alternativa

enfoque que extiende por separado los volúmenes lógicos y el archivo

sistemas encima de los volúmenes lógicos. La mayoría de los cambios de tamaño del sistema de archivos
Machine Translated by Google

Las operaciones se pueden realizar en línea si es necesario ampliar


el sistema de archivos sin desmontarlo.

Para aumentar el tamaño del volumen lógico, use lvextend o


lvresize, seguido de la opción ­r para cambiar el tamaño del sistema de
archivos utilizado en él. Luego especifique el tamaño que desea que tenga el
volumen redimensionado. La forma más fácil e intuitiva de hacerlo es usar
­L seguido de un signo + y la cantidad de espacio en disco que desea
agregar, como en lvresize ­L +1G ­r /dev/vgdata/lvdata. Una forma alternativa
de cambiar el tamaño del volumen lógico es utilizar la opción ­l. A esta
opción le sigue el número de extensiones que se agregan al volumen lógico
o el porcentaje absoluto o relativo de extensiones en el grupo de volúmenes
que se utilizará. Puede, por ejemplo, utilizar los siguientes
comandos para cambiar el tamaño del volumen lógico:

lvresize ­r ­l 75%VG /dev/vgdata/lvdata Cambia el tamaño del volumen


lógico para que ocupe el 75% del espacio total en disco en el grupo
de volúmenes. Tenga en cuenta que si actualmente el volumen lógico
utiliza más del 75% del espacio en disco del grupo de volúmenes,
este comando intentará reducir el tamaño del volumen
lógico. lvresize ­r ­l +75%VG /dev/vgdata/lvdata Intenta agregar el 75%
del tamaño total del grupo de volúmenes al volumen lógico. Este
Machine Translated by Google

funcionará sólo si actualmente al menos el 75% del grupo de volumen no

se utiliza. (Observe la diferencia con el comando anterior). lvresize ­r ­l

+75%FREE /dev/vgdata/lvdata Agrega el 75% de todo el espacio libre en

disco al volumen lógico. lvresize ­r ­l

75%FREE /dev/vgdata/lvdata Cambia el tamaño del volumen lógico a un

tamaño total que equivale al 75% de la cantidad de espacio libre en disco, lo

que puede resultar en un intento de reducir el tamaño del volumen

lógico. (Observa la diferencia con el anterior


dominio.)

Una extensión lógica es el bloque de construcción lógico que se utiliza al crear

volúmenes lógicos y se asigna a una extensión física, cuyo tamaño se puede

especificar al crear un grupo de volúmenes. Todas las operaciones de

cambio de tamaño deben coincidir con extensiones lógicas completas.

A veces notará que el tamaño de cambio de tamaño se redondea hacia arriba o

hacia abajo al tamaño de extensión lógica. También puede especificar la

cantidad de extensiones lógicas que deben agregarse o eliminarse directamente

usando la opción ­l con el comando lvresize.

Como puede ver, cambiar el tamaño de un volumen lógico tiene muchas

opciones y debe tener cuidado de utilizar las opciones correctas porque es fácil

cometer un error. En el ejercicio 15­3, aprenderá a cambiar el tamaño de los

volúmenes lógicos y los sistemas de archivos utilizados sobre ellos.

Nota
Machine Translated by Google

El tamaño de un sistema de archivos XFS no se puede reducir; sólo se

puede aumentar. Si necesita un sistema de archivos que

se puede reducir de tamaño, use Ext4, no XFS.

Ejercicio 15­3 Cambio de tamaño de volúmenes lógicos

En los ejercicios 15­1 y 15­2, creó un volumen físico, un grupo de volúmenes y un volumen

lógico. En este ejercicio, ampliará el tamaño del volumen lógico y el sistema de archivos

utilizado sobre él.

1. Escriba pvs y vgs para mostrar el volumen físico actual y la configuración del grupo

de volúmenes.

2. Utilice lsblk para verificar que tiene disponible una partición no utilizada

que se puede agregar al grupo de volúmenes. En el Ejercicio 15­1 creó la partición /

dev/sdd2 para este propósito.

3. Escriba vgextend vgdata /dev/sdd2 para extender vgdata con el

tamaño total del dispositivo /dev/sdd2.

4. Escriba vgs para verificar que el tamaño del grupo de volúmenes disponible sea

aumentó.

5. Escriba lvs para verificar el tamaño actual del volumen lógico lvdata.

6. Escriba df ­h para verificar el tamaño actual del sistema de archivos en lvdata.

7. Escriba lvextend ­r ­l +50%FREE /dev/vgdata/lvdata para extender

lvdata con el 50% de todo el espacio disponible en disco en el grupo de volúmenes.

8. Escriba lvs y df ­h nuevamente para verificar que el espacio en disco agregado haya

volverse disponible.
Machine Translated by Google

Reducción de grupos de volumen

Si un grupo de volúmenes consta de varios PV, se puede eliminar un PV del VG si

los PV restantes tienen suficiente espacio libre para asignar las extensiones que

utiliza actualmente. Este procedimiento no funcionará si los PV restantes ya se han

utilizado por completo. Quitar un PV de un VG es un procedimiento de dos pasos.

Primero, use pvmove para mover las extensiones utilizadas del PV que desea

eliminar a cualquiera de los volúmenes restantes. A continuación, utilice

vgreduce para completar la eliminación de PV. En el Ejercicio 15­4 puedes

practicar esto.

Ejercicio 15­4 Eliminación de un VG de un PV

1. Utilice fdisk para crear dos particiones con un tamaño de 2 GiB cada una y

establezca el tipo en lvm. En el resto de este ejercicio, asumiré que estás

usando las particiones /dev/sdd3 y dev/sdd4 para este propósito.

2. Utilice vgcreate vgdemo /dev/sdd3 para crear un grupo de volúmenes.

3. Escriba lvcreate ­L 1G ­n lvdemo /dev/vgdemo para crear una lógica


volumen con un tamaño de 1 GiB. Tenga en cuenta que es fundamental no utilizar

¡Todo el espacio disponible en disco!

4. Escriba vgextend vgdemo /dev/sdd4 para ampliar el grupo de volúmenes.

5. Utilice pvs para verificar el uso de extensiones en /dev/sdd3 y /dev/sdd4. Deberías

ver que sdd3 está usando aproximadamente la mitad de sus extensiones y todas

las extensiones en /dev/sdd4 aún no se utilizan.


Machine Translated by Google

6. Ahora escriba lvextend ­L +500M /dev/vgdemo/lvdemo /dev/sdd4

para hacer crecer el volumen lógico lvdemo. Fíjate que tienes que agregar

/dev/sdd4 para garantizar que las extensiones libres se tomarán del

dispositivo sdd4.

7. Escriba pvs para verificar el uso actual de la extensión en los dispositivos.

8. Cree un sistema de archivos usando mkfs.ext4 /dev/vgdemo/lvdemo 9. Monte

temporalmente el volumen lógico usando mount

/dev/vgdemo/lvdemo /mnt

10. Utilice df ­h para verificar el uso del espacio en disco.

11. Utilice dd if=/dev/zero of=/mnt/bigfile bs=1M count=1100. El


El tamaño garantiza que los datos del archivo estén en ambos PV.

12. Ahora puede preparar el sdd4 para su eliminación. Como primer paso, usted

necesita mover todas las extensiones que utiliza a extensiones no utilizadas en sdd1.

Escriba lo siguiente para hacerlo: pvmove ­v /dev/sdd4 /dev/sdd3. Esto puede

tardar uno o dos minutos en completarse.

13. Escriba pvs, lo que mostrará que /dev/sdd4 ya no se utiliza.

14. En este punto puede eliminar el volumen físico no utilizado,

usando vgreduce vgdemo /dev/sdd4

Configurando Stratis

En RHEL 9, Red Hat ofrece Stratis como una solución de almacenamiento

avanzada. Stratis es el llamado sistema de archivos de administración de volúmenes e

introduce funciones de almacenamiento avanzadas que no estaban disponibles

antes de RHEL 8. Al hacerlo, Red Hat pretende ofrecer un


Machine Translated by Google

alternativa a los sistemas de archivos Btrfs y ZFS que se utilizan en otros entornos. Stratis

ofrece las siguientes características:

Aprovisionamiento ligero: esta característica permite que un sistema de archivos Stratis se

presente a los usuarios como mucho más grande de lo que realmente es. Esto es útil

en muchos entornos, como los escritorios virtuales, donde cada usuario puede ver 20 GiB

de almacenamiento disponible en total, aunque en realidad se aprovisiona a cada usuario

una cantidad mucho menor.

Instantáneas: una instantánea de Stratis permite a los usuarios tomar una "imagen" del

estado actual de un sistema de archivos. Esta instantánea facilita la reversión al estado

anterior de un sistema de archivos, deshaciendo cualquier cambio que se haya realizado.

Nivel de caché: el nivel de caché es una función de almacenamiento de Ceph que

garantiza que los datos se puedan almacenar físicamente más cerca del cliente de Ceph.

lo que hace que el acceso a los datos sea más rápido.

API programática: la API programática garantiza que el almacenamiento se pueda

configurar y modificar fácilmente mediante el acceso a la API. Esto es particularmente

interesante en entornos de nube, donde configurar el almacenamiento directamente

desde aplicaciones nativas de la nube es extremadamente útil.

Monitoreo y reparación: mientras que los sistemas de archivos más antiguos necesitan

herramientas como fsck para verificar la integridad del sistema de archivos, Stratis

tiene funciones integradas para monitorear el estado del sistema de archivos y

repararlo si es necesario.
Machine Translated by Google

Entendiendo la arquitectura Stratis

La capa más baja en la arquitectura Stratis es la piscina. Desde una perspectiva

funcional, el grupo Stratis es comparable a un grupo de volúmenes LVM. Un grupo

representa todo el almacenamiento disponible y consta de uno o más dispositivos

de almacenamiento, que en un entorno Stratis se denominan blockdev. Es

posible que estos dispositivos de bloque no tengan aprovisionamiento ligero en el nivel

de hardware subyacente. Stratis crea un directorio /dev/stratis/poolname para cada

grupo.

Desde el grupo Stratis, se crean los sistemas de archivos XFS. Tenga en cuenta

que Stratis solo funciona con XFS y el sistema de archivos XFS que utiliza está

integrado con el volumen Stratis. Cuando se crea un sistema de archivos, no se

especifica ningún tamaño y cada sistema de archivos puede crecer hasta el tamaño de

todo el espacio de almacenamiento disponible en el grupo. Los sistemas de archivos

Stratis siempre tienen aprovisionamiento ligero. El volumen delgado crece

automáticamente a medida que se agregan más datos al sistema de archivos.

Creando almacenamiento Stratis

La creación de volúmenes Stratis es un proceso de varios pasos. Esta sección

proporciona una descripción general de alto nivel y luego el Ejercicio 15­5 de la

siguiente sección lo guía a través del procedimiento. Empiece por crear un grupo. Una

vez que se haya agregado el grupo, puede crear sistemas de archivos a partir de él.

Antes de comenzar, asegúrate de que los dispositivos de bloque que vas a

utilizar en Stratis tengan un tamaño mínimo de 5 GiB.


Machine Translated by Google

Cada sistema de archivos Stratis ocupa un mínimo de 527 MiB de espacio en

disco, incluso si no se han copiado datos en el sistema de archivos.

1. Instale el software Stratis usando dnf instalando stratis­cli

y paquetes estratisd.

2. Inicie y habilite el demonio del espacio de usuario, usando systemctl


habilitar ­­ahora estratisd.

3. Una vez que el demonio se esté ejecutando, use la creación del grupo Stratis.

comando para crear el grupo con el que desea trabajar. Por ejemplo, utilice

stratis pool create mypool /dev/sde para crear un grupo basado en el dispositivo

de bloque /dev/sdd. Puede agregar dispositivos de bloque adicionales más

adelante, usando stratis pool add­data poolname blockdevname, como en

stratis pool add­data mypool

/dev/sde.

4. Una vez que haya creado el grupo, agregue un sistema de archivos usando Stratis

fs crea nombre de grupo fsname.

5. Para verificar que todo se creó correctamente, use la lista Stratis fs


dominio.

6. Después de crear el sistema de archivos, puede montarlo. Para montar un

sistema de archivos Stratis a través de /etc/fstab, debe usar el UUID; No se

admite el uso del nombre del dispositivo. Además, al montar el volumen Stratis a

través de /etc/fstab, incluya la opción de montaje x­systemd.requires=stratisd.service

para garantizar que Systemd espere para activar este dispositivo hasta

que se ejecute el servicio Stratis.


Machine Translated by Google

cargado. Sin esta opción no podrás iniciar tu


sistema más.

Gestión de estratos

Después de crear el sistema de archivos Stratis, puede realizar varias tareas de

administración diferentes. Para empezar, puede ampliar dinámicamente el grupo

utilizando los datos adicionales del grupo Stratis. Además, debe monitorear los

volúmenes de Stratis utilizando herramientas específicas de Stratis, ya que

las herramientas tradicionales de Linux no pueden manejar los volúmenes

de aprovisionamiento ligero. Los siguientes comandos están disponibles:

Stratis blockdev: Muestra información sobre todos los dispositivos de bloque.

que se utilizan para Stratis.

grupo Stratis: brinda información sobre los grupos Stratis. Tenga en


cuenta en particular el parámetro Físico utilizado, que no debe acercarse
demasiado al parámetro Tamaño físico.
Sistema de archivos Stratis: Le permite monitorear archivos individuales.
sistemas.

Otra característica de Stratis que quizás quieras administrar es la


instantánea. Una instantánea contiene el estado del sistema de archivos
en el momento en que se creó la instantánea. Después de la creación, la
instantánea se puede modificar. También es bueno saber que la instantánea
y su origen no están vinculados, lo que permite que la instantánea dure
más que el sistema de archivos desde el que se creó. Esto es fundamentalmente
Machine Translated by Google

diferente de, por ejemplo, las instantáneas LVM, que no pueden permanecer

activas si se elimina el volumen al que están vinculadas.

En el ejercicio 15­5, configuró un entorno con volúmenes de Stratis.

Ejercicio 15­5 Gestión de volúmenes Stratis

Necesita un disco dedicado con un tamaño mínimo de 5 GiB para

realice los pasos de este ejercicio. En este ejercicio, el nombre del disco /dev/sde se

utiliza como ejemplo. Reemplace este nombre con el nombre del dispositivo de

disco que se presenta en su hardware.

1. Escriba dnf install stratisd stratis­cli para instalar todo lo necesario

paquetes.

2. Escriba systemctl enable ­­now stratisd para habilitar Stratis


demonio.

3. Escriba stratis pool create mypool /dev/sde para agregar todo el

disk /dev/sde al grupo de almacenamiento.

4. Escriba lista de grupos de Stratis para verificar la creación exitosa del grupo.

5. Escriba stratis fs create mypool stratis1 para crear el primer Stratis.

sistema de archivos. Tenga en cuenta que no es necesario especificar un sistema de archivos.

tamaño.

6. Escriba stratis fs list para verificar la creación del sistema de archivos.

7. Escriba mkdir /stratis1 para crear un punto de montaje para el archivo Stratis.

sistema.

8. Escriba stratis fs list para encontrar el UUID del volumen de Stratis.


Machine Translated by Google

9. Agregue la siguiente línea a /etc/fstab para permitir que el volumen sea

montado automáticamente. Asegúrese de utilizar el nombre UUID que utiliza su

sistema de archivos Stratis.


Haga clic aquí para ver la imagen del código

UUID=xxx /stratis1 xfs defaults,x­systemd.requir servicio 0 0

10. Escriba mount ­a para montar el volumen Stratis. Utilice el comando de montaje

para verificar que este procedimiento funcionó correctamente.

11. Escriba cp /etc/[af]* /stratis1 para copiar algunos archivos al Stratis


volumen.

12. Escriba la instantánea del sistema de archivos Stratis mypool stratis1 stratis1­

snap para crear una instantánea del volumen que acaba de crear. Tenga en cuenta

que este comando puede tardar hasta un minuto en completarse.

13. Escriba la lista del sistema de archivos Stratis para obtener estadísticas sobre el archivo actual.

uso del sistema.

14. Escriba rm ­f /stratis1/a* para eliminar todos los archivos que tengan un nombre

comenzando con a.

15. Escriba mount /dev/stratis/mypool/stratis1­snap /mnt y

verifique que los archivos cuyos nombres comienzan con a todavía estén disponibles

en el directorio /mnt.

16. Reinicie su servidor. Después de reiniciar, verifique que el volumen Stratis

todavía se monta automáticamente.


Machine Translated by Google

Resumen

En este capítulo, aprendió cómo trabajar con almacenamiento avanzado en RHEL

9. Primero, leyó cómo se usa LVM para brindar flexibilidad al almacenamiento. Al

utilizar LVM, obtiene las ventajas de volúmenes cuyo tamaño se puede cambiar

fácilmente y volúmenes lógicos multidispositivo. A continuación, le presentaron

Stratis, el sistema de archivos de gestión de volúmenes. Stratis incorpora

funciones de almacenamiento de próxima generación a RHEL 9 y, de forma

predeterminada, crea sistemas de archivos con aprovisionamiento ligero.

Tareas de preparación de exámenes

Como se menciona en la sección "Cómo utilizar este libro" en el

Introducción, tiene varias opciones para la preparación de exámenes: los laboratorios

de final de capítulo; las tablas de memoria en el Apéndice C; Capítulo 27, “Preparación

Final”; y los exámenes de práctica.

Revisar todos los temas clave

Revise los temas más importantes del capítulo, señalados con el ícono de Tema

clave en el margen de la página. La Tabla 15­3 enumera una referencia

para estos temas clave y el número de página en el que cada


es encontrado.
Machine Translated by Google

Tabla 15­3 Temas clave para el Capítulo 15

Tema clave
Descripción Página
Elemento

Figura 15­1 Descripción general de la arquitectura LVM 347

Tabla 15­2 Gestión LVM esencial 357

Comandos

Lista Comandos LVM lvresize 359

Tablas y listas completas de memoria

Imprima una copia del Apéndice C, “Tablas de memoria” (que se encuentra en la

sitio web complementario), o al menos la sección de este capítulo, y

Completar las tablas y listas de memoria. Apéndice D, “Memoria

Clave de respuestas de tablas”, incluye tablas completas y listas para verificar.

tu trabajo.

Definir términos clave

Defina los siguientes términos clave de este capítulo y verifique su

respuestas en el glosario:

instantánea
Machine Translated by Google

volumen físico (PV)

grupo de volumen (VG)

extensión física

volumen lógico (LV)

mapeador de dispositivos

extensión lógica

estratis

Preguntas de revisión

Las preguntas que siguen están destinadas a ayudarle a evaluar su

conocimiento de conceptos y terminología y la amplitud de su conocimiento. Puede

encontrar las respuestas a estas preguntas en el Apéndice A.

. ¿Qué tipo de partición se utiliza en una partición GUID que necesita ser
utilizado en LVM?

. ¿Qué comando le permite crear un grupo de volúmenes con el

¿Nombra vgroup que contiene el dispositivo físico /dev/sdb3 y utiliza un tamaño de

extensión física de 4 MiB?


Machine Translated by Google

. ¿Qué comando muestra un breve resumen de los volúmenes físicos?

en su sistema, así como el grupo de volúmenes al que pertenecen?

. ¿Qué necesita hacer para agregar un disco duro completo /dev/sdd al

grupo de volumen vgrupo?

. ¿Qué comando le permite crear un volumen lógico lvvol1?


con un tamaño de 6 MiB?

. ¿Qué comando le permite agregar 100 MB al volumen lógico lvvol1, suponiendo

que el espacio en disco esté disponible en el grupo de volúmenes?

. ¿Qué dos comandos utilizas para eliminar un volumen físico?

de un grupo de volumen?

. Cuando trabaje con Stratis, ¿qué línea agregaría a /etc/fstab?


para montar el volumen Stratis?

. ¿Qué comando utiliza para crear un grupo Stratis basado en


en el dispositivo de bloque /dev/sdd?

. ¿Cómo se formatea un volumen Stratis con el sistema de archivos Ext4?

Laboratorios de fin de capítulo


Machine Translated by Google

Para completar las siguientes prácticas de laboratorio de final de capítulo, necesita un

dispositivo de disco dedicado. Utilice una memoria USB o agregue una nueva

disco virtual a su entorno virtual antes de comenzar.

Laboratorio 15.1

1. Cree un volumen lógico de 500 MB denominado lvgroup. Formatéelo con el

sistema de archivos XFS y móntelo de forma persistente en /groups. Reinicie su

servidor para verificar que el montaje funcione.

2. Después de reiniciar, agregue otros 250 MB al volumen lvgroup que acaba de

crear. Verifique que el sistema de archivos también cambie de tamaño mientras

cambia el tamaño del volumen.

3. Verifique que la extensión del volumen se haya realizado correctamente.

Laboratorio 15.2

1. Cree un grupo Stratis con un tamaño de 5 GiB. En este grupo, cree dos sistemas

de archivos Stratis y asegúrese de que se carguen automáticamente.


montado.

2. Agregue un dispositivo de bloque adicional al grupo Stratis y verifique que el

tamaño del grupo se haya ampliado correctamente.

3. Asegúrese de que el nuevo dispositivo Stratis se monte automáticamente en

el directorio /stratis mientras reinicia.


Machine Translated by Google

Parte III

Realizar la administración avanzada del sistema


Tareas
Machine Translated by Google

Capítulo 16

Gestión básica del núcleo

En este capítulo se tratan los siguientes temas:

Comprender el papel del kernel de Linux


Trabajar con módulos del kernel
Actualización del kernel de Linux

El kernel de Linux es el corazón del sistema operativo Linux. Se encarga


de muchas cosas, incluida la gestión del hardware. En este capítulo,
aprenderá todo lo que necesita saber sobre el kernel de Linux desde
una perspectiva RHCSA. De hecho, incluso aprendes un poco más. Los
temas tratados en este capítulo no están incluidos en los objetivos actuales
del examen RHCSA, pero sí en cualquier Linux serio.
El administrador debe ser capaz de tratar cuestiones relacionadas con la

kernel, por lo que los abordaré en este capítulo.

“¿Ya lo sé?” Prueba

El cuestionario “¿Ya lo sé?” El cuestionario le permite evaluar si debe leer


este capítulo completo detenidamente o pasar a la sección "Tareas de
preparación para el examen". Si tiene dudas sobre sus respuestas a estas
preguntas o sobre su propia evaluación de su conocimiento de los
temas, lea el capítulo completo. La Tabla 16­1 enumera los títulos
principales de este capítulo y sus correspondientes “¿Debo
Machine Translated by Google

¿Ya lo sabes? preguntas del cuestionario. Puede encontrar las respuestas en el

Apéndice A, “Respuestas a la pregunta '¿Ya lo sé?' Cuestionarios y preguntas

de repaso”.

Tabla 16­1 “¿Ya lo sé?” Mapeo de sección a pregunta

Sección de Temas de Fundación Preguntas

Comprender la función del kernel de Linux 1–4

Trabajar con módulos del kernel 5–9

Actualización del kernel de Linux 10

. ¿Qué causa un grano contaminado?

1. Un controlador de kernel que no está disponible como controlador de código

abierto. 2. Un controlador que se desarrolló para un sistema operativo diferente

pero que se ha portado a Linux.


3. Un conductor que ha fallado

4. Un controlador no compatible

. ¿Qué comando muestra los eventos del kernel desde el inicio?

1.

registrador 2. dmesg
Machine Translated by Google

3. klogd
4. diario

. ¿Qué comando le permite encontrar la versión real del


¿Núcleo que se utiliza?

1. uname ­r
2. uname ­v

3. procinfo ­k 4.
procinfo ­l

. ¿Qué comando muestra la versión actual de RHEL que estás?


¿usando?

1. uname ­r

2. cat /proc/rhel­versión
3. gato /etc/redhat­release
4. uname ­k

. ¿Cuál es el nombre del proceso que ayuda al kernel a inicializarse?


dispositivos de hardware correctamente?

1. systemd­udevd
2. hwinit
3. udev
4. udevd
Machine Translated by Google

. ¿Dónde encuentra su sistema las reglas predeterminadas que se utilizan para

¿inicializando nuevos dispositivos de hardware?

1. /etc/udev/rules.d

2. /usr/lib/udev/rules.d

3. /usr/lib/udev.d/rules

4. /etc/udev.d/rules

. ¿Qué comando debería utilizar para descargar un módulo del kernel?

incluyendo todas sus dependencias?

1. rmod

2. insmod­r

3. modprobe ­r 4.

modprobe

. ¿Qué comando le permite ver si es apropiado

¿Se han cargado módulos del kernel para el hardware de su servidor?

1. lsmod

2. modprobe ­l 3.

lspci ­k 4.

lspci

. ¿Dónde se especifica un parámetro del módulo del kernel para hacerlo?

¿persistente?
Machine Translated by Google

1. /etc/modules.conf

2. /etc/modprobe.conf 3. /

etc/modprobe.d/algún nombre de archivo

4. /usr/lib/modprobe.d/algún nombre de archivo

. ¿Qué afirmaciones sobre la actualización del kernel no son ciertas?

1. El comando dnf update kernel instalará un nuevo kernel y

no actualizarlo.
2. El comando dnf install kernel instalará un nuevo kernel y

conservar el núcleo antiguo.

3. El paquete del kernel debe configurarse como un paquete protegido con dnf para

asegúrese de que después de una actualización el kernel antiguo todavía esté disponible.

4. Después de haber instalado una nueva versión del kernel, debe ejecutar el

comando grub2­mkconfig para modificar el menú de inicio de GRUB 2 para que

muestre el kernel antiguo y el kernel recién instalado.

Temas de la Fundación

Comprender el papel del kernel de Linux

El kernel de Linux es el corazón del sistema operativo. Es la capa entre el

usuario que trabaja con Linux desde un entorno shell y el hardware que

está disponible en la computadora en la que el usuario está trabajando. El kernel

gestiona la E/S.
instrucciones que recibe del software y las traduce a
Machine Translated by Google

las instrucciones de procesamiento que son ejecutadas por la central


unidad de procesamiento y otro hardware en la computadora. el núcleo
También se encarga de manejar las tareas esenciales del sistema operativo. Uno

Un ejemplo de tal tarea es el programador que se asegura de que cualquier

Los procesos que se inician en el sistema operativo son manejados por


la CPU.

Comprender el uso de controladores y subprocesos del kernel

Las tareas del sistema operativo que realiza el kernel son

implementado por diferentes subprocesos del kernel. Los hilos del núcleo son

Se reconoce fácilmente con un comando como ps aux. El hilo del núcleo


Los nombres se enumeran entre corchetes (consulte el ejemplo 16­1).

Ejemplo 16­1 Listado de subprocesos del kernel con ps aux

Haga clic aquí para ver la imagen del código

[root@servidor1 ~]# ps aux | cabeza ­n 20


USUARIO PID %CPU %MEM VSZ RSS TTY ESTADÍSTICA STA
raíz 1 1,8 0,6 52980 6812? Sal 11:4

systemd/systemd ­­switched­root ­­system ­­deseria


raíz 2 0,0 0,0 0 0? T 11:44 0:00
raíz 3 0,0 0,0 0 0? T 11:44 0:00
raíz 4 0,0 0,0 0 0? T 11:44 0:00
raíz 5 0,0 0,0 0 0? < 11:44 0:00
raíz 6 0,0 0,0 0 0? T 11:44 0:00
Machine Translated by Google

raíz 7 0,1 0,0 0 0? T 11:44 0:00


raíz 8 0,0 0,0 0 0? T 11:44 0:00
raíz 9 0,0 0,0 0 0? T 11:44 0:00
raíz 10 0,0 0,0 0 0? T 11:44 0:00
raíz 11 0,0 0,0 0 0? T 11:44 0:00
raíz 12 0,0 0,0 0 0? T 11:44 0:00
raíz 13 0,0 0,0 0 0? T 11:44 0:00
raíz 14 0,0 0,0 0 0? T 11:44 0:00
raíz 15 0,0 0,0 0 0? T 11:44 0:00
raíz 16 0,0 0,0 0 0? T 11:44 0:00
raíz 17 0,0 0,0 0 0? T 11:44 0:00
raíz 18 0,0 0,0 0 0? T 11:44 0:00
raíz 19 0,0 0,0 0 0? T 11:44 0:00

Otra tarea importante del kernel de Linux es el hardware.


inicialización. Para asegurarse de que se pueda utilizar este hardware, el
El kernel de Linux utiliza controladores. Cada pieza de hardware contiene
características específicas, y para usar estas características, un conductor debe ser

cargado. El kernel de Linux es modular y los controladores se cargan como

módulos del kernel, sobre los cuales leerá más adelante en este
capítulo.

En algunos casos, la disponibilidad de conductores es un problema porque

Los fabricantes de hardware no siempre están dispuestos a ofrecer acceso abierto.

controladores fuente que se pueden integrar bien con el kernel de Linux.


Esto puede resultar en un controlador que no proporcione todos los

funcionalidad proporcionada por el hardware.


Machine Translated by Google

Si un fabricante no está dispuesto a proporcionar controladores de código abierto, una

alternativa es trabajar con controladores de código cerrado. Aunque permiten utilizar

el hardware en Linux, la solución no es la ideal. Debido a que un controlador realiza

instrucciones privilegiadas dentro del espacio del kernel, un controlador que funcione

mal puede bloquear todo el kernel. Si esto sucede con un controlador de código

abierto, la comunidad del kernel de Linux puede ayudar a depurar el problema y

asegurarse de que se solucione. Si sucede con un controlador de código cerrado,

la comunidad del kernel de Linux no puede hacer nada. Sin embargo, un controlador

propietario puede proporcionar acceso a funciones que no proporciona su equivalente

de código abierto.

Para que sea más fácil ver si un kernel utiliza controladores de código cerrado,

se utiliza el concepto de kernel contaminado. Un kernel contaminado es un kernel que

contiene controladores de código cerrado. El concepto de núcleos contaminados

ayuda a solucionar problemas de controladores. Si su kernel RHEL parece estar

contaminado, el soporte de Red Hat puede identificarlo como un kernel contaminado

y reconocer qué controlador lo está contaminando. Para solucionar el problema, Red

Hat podría pedirle que elimine el controlador que lo convierte en un kernel

contaminado.

Analizando lo que está haciendo el kernel

Para ayudar a analizar qué está haciendo el kernel, los sistemas operativos Linux

proporcionan algunas herramientas:


Machine Translated by Google

La utilidad dmesg
El sistema de archivos /proc

La utilidad uname

La primera utilidad a considerar si necesita información detallada sobre la


actividad del kernel es dmesg. Esta utilidad muestra el contenido del búfer
circular del kernel, un área de memoria donde el kernel de Linux guarda
sus mensajes de registro recientes. Un método alternativo para obtener acceso
a la misma información en el búfer de anillo del kernel es el comando
journalctl ­­dmesg, que es equivalente a journalctl ­ k. En el Ejemplo 16­2,
puedes ver una parte del resultado del dmesg
dominio.

Ejemplo 16­2 Análisis de la actividad del kernel utilizando dmesg

Haga clic aquí para ver la imagen del código

[ 8.153928] sd 0:0:0:0: sg genérico scsi adjunto [ 8.154289] sd 0:0:1:0: sg


genérico scsi adjunto [ 8.154330] sd 0:0:2:0: sg genérico scsi adjunto
[ 8.154360 ] sd 0:0:3:0: Sg genérico scsi adjunto [8.154421] sr 4:0:0:0: Sg
genérico scsi adjunto [8.729016] ip_tables: (C) 2000­2006 Netfilter C
[8.850599] nf_conntrack versión 0.5. 0 (7897 buc
Machine Translated by Google

[ 8.939613] ip6_tables: (C) 2000­2006 Netfilter [ 9.160092] Ebtables


v2.0 registrado [ 9.203710] Puente cortafuegos
registrado [ 9.586603] IPv6: ADDRCONF(NETDEV_UP):
eno167777 [ 9.587520] e1000: 6777736 El enlace NIC está activo 10

Control de flujo: Ninguno

[9.589066] IPv6: ADDRCONF(NETDEV_CHANGE): eno16


listo
[10.689365] Redondeando hacia abajo max_sectors alineados fr
4294967288
[ 5158.470480] Ajustando tsc más del 11% (69405 [21766.132181]
e1000: eno16777736 El enlace NIC está inactivo [21770.391597] e1000:
eno16777736 El enlace NIC está activo 1
Dúplex, control de flujo: ninguno
[21780.434547] e1000: eno16777736 El enlace NIC está inactivo

En la salida de dmesg, se muestran todos los mensajes relacionados con


el kernel. Cada mensaje comienza con un indicador de tiempo que muestra
en qué segundo específico se registró el evento. Este indicador de tiempo
es relativo al inicio del kernel, lo que le permite ver exactamente
cuántos segundos han pasado entre el inicio del kernel y un evento
en particular. (Observe que los comandos journalctl ­k y journalctl ­­dmesg
muestran la hora del reloj, en lugar de la hora relativa al inicio del kernel).
Este indicador de tiempo proporciona una indicación clara de lo
que ha estado sucediendo y en qué momento sucedió. .
Machine Translated by Google

Otra valiosa fuente de información es el sistema de archivos /proc.

El sistema de archivos /proc es una interfaz para el kernel de Linux y


contiene archivos con información de estado detallada sobre lo que está

sucediendo en su servidor. Muchas de las herramientas relacionadas con el rendimiento

extraen el sistema de archivos /proc para obtener más información.

Como administrador, encontrará que algunos de los archivos en /proc son muy legibles

y contienen información de estado sobre la CPU, la memoria, los montajes y más. Eche

un vistazo, por ejemplo, a /proc/meminfo, que brinda información detallada

sobre cada segmento de memoria y qué está sucediendo exactamente en estos

segmentos de memoria.

segmentos.

Una última fuente útil de información es el comando uname. Este

El comando brinda diferentes tipos de información sobre su sistema operativo.

Escriba, por ejemplo, uname ­a para obtener una descripción general de todos los

parámetros relevantes de uname ­r para ver qué versión del kernel se utiliza actualmente.

Esta información también se muestra cuando estás usando

el comando hostnamectl status, que muestra datos adicionales útiles

información también (ver Ejemplo 16­3).

Consejo

En algunas ocasiones, es posible que necesite conocer información

específica sobre la versión de RHEL que está utilizando. Para obtener

esa información, ejecute cat /etc/redhat­release


Machine Translated by Google

ordenar y revisar su salida; le indicará qué versión de Red Hat está

utilizando y qué nivel de actualización se aplica.

Ejemplo 16­3 Obtención de más información sobre el sistema

Haga clic aquí para ver la imagen del código

[root@server1 ~]# hostnamectl status Nombre de host


estático: server1.example.com
Nombre del icono: computadora­vm
Chasis: vm ¬
ID de la máquina: d04b1233036748edbcf73adc926c98e3
ID de arranque: 21e4e2e53648413dbe7975f64f570e51
Virtualización: vmware

Sistema operativo: Red Hat Enterprise Linux 9.0 (Pl CPE Nombre del sistema
operativo: cpe:/o:redhat:enterprise_linux:9 Kernel: Linux
5.14.0­70.13.1.el9_0.x86_6
Arquitectura: x86­64

Proveedor de hardware: VMware, Inc.


Modelo de hardware: plataforma virtual VMware
Machine Translated by Google

Trabajar con módulos del kernel

En los viejos tiempos de Linux, los kernels tenían que compilarse para incluir todos los

controladores necesarios para soportar el hardware de la computadora. Otra funcionalidad

específica necesitaba ser compilada en el kernel como

Bueno. Desde el lanzamiento del kernel 2.0 de Linux en 1996, los kernels ya no existen.

Ya compilado pero modular. Un núcleo modular consta de un núcleo central

relativamente pequeño y proporciona soporte de controladores a través de módulos que se

cargan cuando es necesario. Los núcleos modulares son muy eficientes, ya que incluyen

sólo aquellos módulos que realmente son

necesario.

Consejo

Un módulo del kernel implementa una funcionalidad específica

del kernel. Los módulos del kernel se utilizan para cargar controladores que

permiten comunicaciones adecuadas con dispositivos de hardware,

pero no se limitan a cargar controladores de hardware únicamente.

Por ejemplo, el soporte del sistema de archivos es

cargados como módulos. Otras características del kernel pueden ser

cargados como módulos también.

Comprender la inicialización del hardware

La carga de controladores es un proceso automatizado que se desarrolla aproximadamente

como esto:
Machine Translated by Google

1. Durante el arranque, el kernel prueba el hardware disponible.

2. Al detectar un componente de hardware, el proceso systemd­udevd se encarga de

cargar el controlador apropiado y hacer que el dispositivo de hardware

esté disponible.

3. Para decidir cómo se inicializan los dispositivos, systemd­udevd lee los archivos de

reglas en /usr/lib/udev/rules.d. Estos son proporcionados por el sistema.


archivos de reglas que no deben modificarse.

4. Después de procesar los archivos de reglas udev proporcionados por el sistema,

systemd­udevd va al directorio /etc/udev/rules.d para leer cualquier


reglas personalizadas si están disponibles.

5. Como resultado, los módulos del kernel necesarios se cargan automáticamente.


y estado de los módulos del kernel y el hardware asociado

se escribe en el sistema de archivos sysfs, que está montado en el directorio /sys.

El kernel de Linux utiliza este pseudo sistema de archivos para rastrear la

configuración relacionada con el hardware.

El proceso systemd­udevd no es un proceso que se realiza una sola vez;

monitorea continuamente la conexión y desconexión de nuevos dispositivos de

hardware. Para tener una idea de cómo funciona esto, como root puede escribir el

comando udevadm monitor. Esto enumera todos los eventos que se procesan al

activar nuevos dispositivos de hardware. Por ejemplo, si conecta un

dispositivo USB mientras este comando está activo, podrá ver exactamente lo que está

sucediendo. Presione Ctrl­C para cerrar la salida del monitor udevadm.


Machine Translated by Google

El ejemplo 16­4 muestra el resultado del comando monitor udevadm.

En este comando, puede ver cómo el kernel y systemd­udevd descubren

automáticamente las funciones que ofrece el hardware trabajando juntos.

Cada fase del sondeo de hardware concluye con la creación de un archivo en

el sistema de archivos /sys. Una vez que el hardware se haya inicializado

por completo, también puede


Vea que algunos módulos del kernel están cargados.

Nota

Aunque es útil saberlo, la inicialización del hardware no está

incluida en los objetivos actuales de la RHCSA.

Ejemplo 16­4 Salida del comando udevadm monitor

Haga clic aquí para ver la imagen del código

[root@server2 ~]# udevadm monitor monitor


imprimirá los eventos recibidos para:
UDEV: el evento que udev envía después de la regla p
KERNEL: el evento del kernel

NÚCLEO[132406.831270] agregar
/dispositivos/pci0000:00/0000:00:11.0/0000:02:04.0/us
NÚCLEO[132406.974110] agregar
/dispositivos/pci0000:00/0000:00:11.0/0000:02:04.0/us
Machine Translated by Google

UDEV [132406.988182] agregar


/devices/pci0000:00/0000:00:11.0/0000:02:04.0/us KERNEL[132406.999249]
agregar /module/usb_storage (mod UDEV [132407.001203] agregar /module/
usb_storage (modu agregar

/dispositivos/pci0000:00/0000:00:11.0/0000:02:04.0/us host33 (scsi)

UDEV [132407.002575] agregar


/dispositivos/pci0000:00/0000:00:11.0/0000:02:04.0/us
NÚCLEO[132407.002583] agregar
/devices/pci0000:00/0000:00:11.0/0000:02:04.0/us host33/scsi_host/host33
(scsi_host)
KERNEL[132407.002590] agregar /bus/usb/drivers/usb­sto UDEV
[132407.004479] agregar /bus/usb/drivers/usb­stor UDEV [132407.005798]
agregar
/dispositivos/pci0000:00/0000:00:11.0/0000:02:04.0/us host33 (scsi)

UDEV [132407.007385] agregar


/devices/pci0000:00/0000:00:11.0/0000:02:04.0/us host33/scsi_host/host33
(scsi_host)
NÚCLEO[132408.008331] agregar
/dispositivos/pci0000:00/0000:00:11.0/0000:02:04.0/us host33/target33:0:0
(scsi)
NÚCLEO[132408.008355] agregar
/devices/pci0000:00/0000:00:11.0/0000:02:04.0/us host33/target33:0:0/33:0:0:0
(scsi)
...

KERNEL[132409.381930] agregar /módulo/fat (mod /kernel/


KERNEL[132409.381951] agregar slab/fat_
Machine Translated by Google

KERNEL[132409.381958] agregar /kernel/slab/fat_


KERNEL[132409.381964] agregar /module/vfat (mes
UDEV [132409.385090] agregar /módulo/fat (mod
UDEV [132409.385107] agregar /kernel/slab/fat_
UDEV [132409.385113] agregar /kernel/slab/fat_
UDEV [132409.386110] agregar /module/vfat (mes

Gestión de módulos del kernel

Los módulos del kernel de Linux normalmente se cargan automáticamente para el

dispositivos que los necesitan, pero en raras ocasiones tendrás que


cargue los módulos del kernel apropiados manualmente. Algunos comandos
se utilizan para la gestión manual de los módulos del kernel. Tabla 16­2
proporciona una visión general.

Tabla 16­2 Descripción general de la gestión del módulo del kernel de Linux

Uso del comando

lsmod Lista los módulos del kernel actualmente cargados

información mod Muestra información sobre los módulos del kernel.


Machine Translated by Google

Uso del comando

modprobe Carga los módulos del kernel, incluidas todas sus


dependencias.

sonda mod ­ Descarga los módulos del kernel, considerando las


r dependencias de los módulos del kernel.

Un método alternativo para cargar módulos del kernel es a través del


directorio /etc/modules­load.d. En este directorio, puede crear archivos para
cargar módulos automáticamente que aún no estén cargados mediante el
método systemd­udevd. Para los módulos predeterminados que siempre
deben cargarse, este directorio tiene una contraparte en /usr/lib/modules­
cargar.d.

El primer comando a utilizar cuando se trabaja con módulos del kernel es


lsmod. Este comando enumera todos los módulos del kernel que se
utilizan actualmente, incluidos los módulos que utilizan este módulo específico.
El ejemplo 16­5 muestra el resultado de las primeras diez líneas del lsmod
dominio.

Ejemplo 16­5 Listado de módulos cargados con lsmod

Haga clic aquí para ver la imagen del código


Machine Translated by Google

[root@servidor1 ~]# lsmod | cabeza


Módulo Tamaño utilizado por
nls_utf8 16384 1
isofs 45056 1
fusible 126976 3
rfcom 90112 6
xt_CHECKSUM 16384 1

ipt_MASQUERADE 16384 1
xt_conntrack 16384 1

ipt_REJECT 16384 1
nft_counter 16384 dieciséis

Consejo

Muchos comandos de Linux muestran su salida en diferentes

columnas, y no siempre está claro qué columna es


Se utiliza para mostrar qué tipo de información. La mayoría de

estos comandos tienen una línea de encabezado en la primera línea

de salida del comando. Entonces, si en la salida de cualquier

comando no estás seguro de lo que estás viendo, canaliza

la salida del comando a través de head para ver

si hay un archivo de encabezado o canaliza el comando

salida a menos, lo que le permite avanzar hasta la primera página


línea de salida de comando fácilmente.
Machine Translated by Google

Si quieres tener más información sobre un kernel específico

módulo, puede utilizar el comando modinfo. Esto da completa

información sobre módulos específicos del kernel, incluidos dos

Secciones interesantes: el alias y los parms. Un alias de módulo es


otro nombre que también se puede utilizar para direccionar el módulo. El

Las líneas parms se refieren a parámetros que se pueden configurar mientras se carga el

módulo. (En la sección "Administración de los parámetros del módulo Kernel"

Más adelante en este capítulo, aprenderá cómo trabajar con el módulo del kernel.

parámetros.) El ejemplo 16­6 muestra la salida parcial del modinfo


Comando e1000.

Ejemplo 16­6 Mostrando información del módulo con modinfo

Haga clic aquí para ver la imagen del código

[root@servidor1 ~]# modinfo e1000


nombre de archivo: /lib/modules/5.14.0­70.13.1.el9_0.
controladores/net/ethernet/intel/e1000/e1000.ko.xz
licencia: GPLv2

descripción: autor: Controlador de red Intel(R) PRO/1000


Corporación Intel, <linux.nics@int
versión rhel: 9.0
versión original: 55BD0A50779C0A80232DEDD
alias: pci:v00008086d00002E6Esv*sd*bc*sc*
alias: pci:v00008086d000010B5sv*sd*bc*sc*
alias: pci:v00008086d00001099sv*sd*bc*sc*

Machine Translated by Google

depende:
retpoline: Y

introduzca: Y

nombre: e1000

vermagic: 5.14.0­70.13.1.el9_0.x86_64 SMP pr


modversiones

sig_id: PKCS#7

firmante: Kernel de Red Hat Enterprise Linux


sig_key: 41:63:79:65:D6:4F:CE:E6:A4:AB:67:F
:CA:C6

sig_hashalgo: sha256
firma:

parm: TxDescriptors:Número de transmisión d


de int)
parma: RxDescriptors:Número de mensajes recibidos
parma: Velocidad: configuración de velocidad (matriz de int)
parma: Dúplex: Configuración dúplex (matriz de
AutoNeg: negociación automática anunciada
parámetro: int)
parma: FlowControl: configuración de control de flujo (
parma: XsumRX: Deshabilitar o habilitar Recibir C

(matriz de int)
parma: TxIntDelay:Transmitir interrupción Dela
parma: TxAbsIntDelay:Transmitir entrada absoluta
(matriz de int)
parma: RxIntDelay:Recepción de retraso de interrupción
parm: RxAbsIntDelay: Recibir Int Absoluto
de int)
Machine Translated by Google

InterruptThrottleRate:Interrupt Th parm: (matriz de int)

parm: SmartPowerDownEnable: Habilitar PHY sm

(matriz de int)
recibir copybreak: tamaño máximo del paquete t parm: nuevo buffer al
(uint) debug: nivel de depuración
parma: (0=ninguno,...,16=a

Para cargar y descargar módulos manualmente, puede utilizar los comandos modprobe y

modprobe ­r. En versiones anteriores de Linux, es posible


He utilizado los comandos insmod y rmmod. Estos no deberían

ya no se pueden usar porque no cargan las dependencias del módulo del

kernel. En el Ejercicio 16­1, aprenderá cómo administrar los módulos del kernel usando

estos comandos.

Ejercicio 16­1 Gestión de módulos del kernel desde la línea de comandos

1. Abra un shell raíz y escriba lsmod | menos. Esto muestra todos los módulos del

kernel actualmente cargados.

2. Escriba modprobe vfat para cargar el módulo del kernel vfat.

3. Verifique que el módulo esté cargado utilizando lsmod | Comando grep vfat. Puedes

ver que el módulo está cargado, así como

algunas de sus dependencias.

4. Escriba modinfo vfat para obtener información sobre el módulo del kernel vfat.

Observe que no tiene ningún parámetro.

5. Escriba modprobe ­r vfat para descargar nuevamente el módulo del kernel vfat.
Machine Translated by Google

6. Escriba modprobe ­r xfs para intentar descargar el módulo del kernel xfs.

Observe que recibe un mensaje de error porque el módulo del kernel

está actualmente en uso.

Comprobación de la disponibilidad de controladores para dispositivos de hardware

En los servidores Linux modernos, se admiten muchos dispositivos de hardware.

En ocasiones, es posible que algunos dispositivos no sean compatibles

correctamente porque sus módulos no están cargados actualmente. La mejor manera

de saber si este es el caso de su hardware es mediante el comando lspci. Si se

usa sin argumentos, muestra todos los dispositivos de hardware que se han

detectado en el bus PCI. Un argumento muy útil es ­k, que enumera todos los

módulos del kernel que se utilizan para los dispositivos PCI que se detectaron. El

ejemplo 16­7 muestra el resultado de muestra del comando lspci ­k.

Ejemplo 16­7 Comprobación de la disponibilidad del módulo kernel

Haga clic aquí para ver la imagen del código

[root@servidor1 ~]# lspci ­k | head 00:00.0 Puente de


host: Intel Corporation 440BX/ZX/DX Puente de host (rev 01)

Subsistema: Chipset de máquina virtual VMware Controlador


kernel en uso: agpgart­intel 00:01.0 Puente PCI: Intel
Corporation 440BX/ZX/DX
Machine Translated by Google

puente (rev 01)


00:07.0 Puente ISA: Intel Corporation 82371AB/EB/M Subsistema: Conjunto
de chips de máquina virtual VMware 00:07.1 Interfaz IDE:
Intel Corporation 82371AB/E
01)
Subsistema: Controlador del kernel del chipset de la máquina
virtual VMware en uso: ata_piix Módulos del
kernel: ata_piix, ata_generic 00:07.3 Puente: Intel
Corporation 82371AB/EB/MB PI Subsistema: Módulos del kernel del
chipset de la máquina virtual VMware: i2c_piix4

00:07.7 Periférico del sistema: Máquina virtual VMware


Interfaz (revisión 10)
Subsistema: VMware Virtual Machine Communica
Controlador kernel en uso: vmw_vmci
Módulos del kernel: vmw_vmci
00:0f.0 Controlador compatible con VGA: VMware SVGA II A
Subsistema: Adaptador VMware SVGA II
Controlador kernel en uso: vmwgfx
Módulos kernel: vmwgfx 00:10.0
Controlador de almacenamiento SCSI: LSI Logic / Symbi PCI­X Fusion­
MPT Dual Ultra320 SCSI (rev 01)
Subsistema: VMware LSI Logic Parallel SCSI C Controlador
kernel en uso: mptspi Módulos kernel:
mptspi 00:11.0 Puente PCI:
Puente PCI VMware (rev 02)
00:15.0 Puente PCI: Puerto raíz PCI Express de VMware (controlador del
kernel en uso: pcieport
Machine Translated by Google

Si descubre que se encontraron dispositivos PCI para los cuales no se


pudieron cargar módulos del kernel, probablemente se trate de un
dispositivo que no es compatible. Puede intentar encontrar un módulo
de kernel de código cerrado, pero debe tener en cuenta que hacerlo podría
poner en peligro la estabilidad de su kernel. Un enfoque mucho mejor es
verificar con su proveedor de hardware que Linux sea totalmente
compatible antes de comprar hardware específico.

Administrar los parámetros del módulo kernel

En ocasiones, es posible que desees cargar módulos del kernel con


parámetros específicos. Para hacerlo, primero debe averiguar qué
parámetro desea utilizar. Si ha encontrado el parámetro que desea utilizar,
puede cargarlo manualmente, especificando el nombre del parámetro
seguido del valor que desea asignar. Para que este sea un
procedimiento automatizado, puede crear un archivo en el directorio /etc/
modprobe.d, donde se carga el módulo, incluido el parámetro que desea
cargar. En el Ejercicio 16­2 verá cómo hacer esto usando el módulo
del kernel del cdrom.

Ejercicio 16­2 Carga de módulos del kernel con parámetros

1. Escriba lsmod | grepcdrom. Si ha utilizado la unidad óptica en su


computadora, este módulo debe estar cargado y debe indicar que
es utilizado por el módulo sr_mod.
Machine Translated by Google

2. Escriba modprobe ­r cdrom. Esto no funcionará porque el

El módulo está siendo utilizado por el módulo sr_mod.

3. Escriba modprobe ­r sr_mod; modprobe ­r cdrom. Esto debería

descargue ambos módulos, pero lo más probable es que falle. (No fallará si

actualmente no hay ningún dispositivo óptico montado).

4. Escriba umount /dev/sr0 para desmontar el archivo cdrom montado.

sistema y use modprobe ­r sr_mod. Esto debería funcionar ahora.

5. Escriba modinfo cdrom. Esto muestra información sobre el

módulo cdrom, incluidos los parámetros que admite. Uno de ellos es el parámetro

de depuración, que admite un valor booleano como


es valioso.

6. Escriba modprobe cdrom debug=1. Esto carga el módulo cdrom.

con el parámetro de depuración activado.

7. Escriba dmesg. Para algunos módulos del kernel, la información de carga es

escrito en el búfer de anillo del kernel, que se puede mostrar usando el comando

dmesg. Lamentablemente, este no es el caso de la


módulo del núcleo del cdrom.

8. Cree un archivo con el nombre /etc/modprobe.d/cdrom.conf y

dale el siguiente contenido: opciones

cdrom debug=1

Esto habilita el parámetro cada vez que el kernel del cdrom


cargas del módulo.
Machine Translated by Google

Actualización del kernel de Linux

De vez en cuando, es necesario actualizar el kernel de Linux. Cuando actualiza el

kernel de Linux, aparece una nueva versión del kernel.


instalado y utilizado como kernel predeterminado. La versión antigua del

Sin embargo, el archivo kernel seguirá estando disponible. Esto garantiza que su

computadora aún pueda arrancar si el nuevo kernel incluye funciones no compatibles.

Para instalar una nueva versión del kernel, puede usar el comando dnf update

kernel. El kernel de instalación dnf


El comando también funciona. Ambos comandos instalan el nuevo kernel.

al lado del núcleo antiguo.

Los archivos del kernel de los últimos cuatro kernels que haya instalado en su servidor

se guardarán en el directorio /boot. El cargador de arranque GRUB 2 selecciona

automáticamente todos los kernels que encuentra en este directorio. Esto le

permite seleccionar una versión anterior del kernel durante el arranque, lo cual es

útil si el kernel recién instalado no arranca correctamente.

Resumen

En este capítulo, aprendió a trabajar con el kernel de Linux.

Aprendiste que el kernel de Linux es modular y que es importante trabajar con

módulos del kernel. También aprendió cómo administrar los módulos del

kernel y cómo los módulos del kernel se administran automáticamente mientras

trabaja con hardware nuevo.


Machine Translated by Google

Tareas de preparación de exámenes

Como se menciona en la sección "Cómo utilizar este libro" en el

Introducción, tiene varias opciones para la preparación de exámenes: los laboratorios de final de

capítulo; las tablas de memoria en el Apéndice C; Capítulo 27, “Preparación Final”; y los exámenes

de práctica.

Revisar todos los temas clave

Revise los temas más importantes del capítulo, señalados con el ícono de Tema clave en el

margen de la página. La Tabla 16­3 enumera una referencia para estos temas clave

y el número de página en el que cada uno

es encontrado.

Tabla 16­3 Temas clave para el Capítulo 16

Tema clave
Descripción Página
Elemento

Lista Descripción general de las herramientas relacionadas con el kernel 373

Tabla 16­2 Gestión del módulo del kernel de Linux 378

Descripción general
Machine Translated by Google

Tablas y listas completas de memoria

Imprima una copia del Apéndice C, “Tablas de memoria” (que se


encuentra en el sitio web complementario), o al menos la sección de este
capítulo, y complete las tablas y listas de memoria. El Apéndice D, “Clave de
respuestas de las tablas de memoria”, incluye tablas y listas completas para
verificar su trabajo.

Definir términos clave

Defina los siguientes términos clave de este capítulo y verifique sus


respuestas en el glosario:

núcleo

núcleo contaminado

dmesg

/proceso

módulo

Preguntas de revisión

Las preguntas que siguen están destinadas a ayudarle a evaluar su


conocimiento de conceptos y terminología y la amplitud de su
Machine Translated by Google

conocimiento. Puede encontrar las respuestas a estas preguntas en el Apéndice

A.

. ¿Qué comando muestra la versión actual del kernel que es?

usado en tu computadora?

. ¿Dónde encuentra información de la versión actual de su RHEL?


¿instalación?

. ¿Qué comando muestra una lista de los módulos del kernel que actualmente están?
¿cargado?

. ¿Qué comando le permite descubrir el módulo del kernel?

parámetros?

. ¿Cómo se descarga un módulo del kernel?

. ¿Qué puede hacer si recibe un mensaje de error al intentar


descargar un módulo del kernel?

. ¿Cómo puedo saber qué parámetros del módulo del kernel son compatibles?

. ¿Dónde se especifican los parámetros del módulo del kernel que deberían ser?

usado persistentemente?

. Suponiendo que el módulo cdrom tiene un parámetro depuración, que debe establecerse

en 1 para habilitar el modo de depuración, ¿qué línea incluiría en el archivo que

cargará automáticamente ese módulo?


Machine Translated by Google

. ¿Cómo se instala una nueva versión del kernel?

Laboratorio de fin de capítulo

En la práctica de laboratorio al final del capítulo, instalará una nueva versión del kernel.
y trabajar con módulos del kernel.

Laboratorio 16.1

1. Descubra si hay disponible una nueva versión del kernel. En ese caso,

instálelo y reinicie su computadora para que se use.

2. Utilice el comando apropiado para mostrar eventos recientes que

sido registrado por el kernel.

3. Localice el módulo del kernel que utiliza su tarjeta de red.

Descubra si tiene opciones. Intente cargar manualmente una de estas opciones del

módulo del kernel; si eso tiene éxito, tome las medidas necesarias para cargar

esta opción de manera persistente.


Machine Translated by Google

Capítulo 17

Administrar y comprender el arranque


Procedimiento

En este capítulo se tratan los siguientes temas:

Gestión de objetivos Systemd

Trabajando con GRUB 2

En este capítulo se tratan los siguientes objetivos del examen RHCSA:

Configurar sistemas para que se inicien automáticamente en un destino específico

Modificar el gestor de arranque del sistema

En este capítulo, aprenderá cómo está organizado el procedimiento de arranque

en Red Hat Enterprise Linux. En la primera parte de este capítulo, aprenderá sobre los

objetivos Systemd y cómo puede usarlos para iniciar su sistema Linux en un estado

específico. La segunda parte de este capítulo analiza GRUB2 y cómo aplicar

cambios al cargador de arranque de GRUB 2. La resolución de problemas no es un tema

de este capítulo; se trata en el Capítulo 18, “Habilidades esenciales para la

resolución de problemas”.

“¿Ya lo sé?” Prueba

El cuestionario “¿Ya lo sé?” El cuestionario le permite evaluar si debe leer este capítulo

completo detenidamente o pasar al siguiente.


Machine Translated by Google

Sección “Tareas de preparación de exámenes”. Si tiene dudas sobre sus respuestas

a estas preguntas o sobre su propia evaluación de su conocimiento de los

temas, lea el capítulo completo. La Tabla 17­1 enumera los títulos principales de

este capítulo y sus correspondientes “¿Ya lo sé?” preguntas del cuestionario. Puede

encontrar las respuestas en el Apéndice A, “Respuestas a la pregunta '¿Ya lo sé?'

Cuestionarios y preguntas de repaso”.

Tabla 17­1 “¿Ya lo sé?” Mapeo de sección a pregunta

Sección de Temas de Fundación Preguntas

Gestión de objetivos Systemd 1–7

Trabajando con GRUB 2 8–10

. ¿Cuál de las siguientes es la forma más eficiente de definir un sistema?


¿desear?

1. Utilice el comando systemctl enable.

2. Defina el deseo en la sección [Servicio] del archivo de la unidad.

3. Cree un enlace simbólico en el directorio /usr/lib/system/system.

4. Cree un enlace simbólico en el directorio de deseos de la unidad en el

Directorio /etc/system/system.
Machine Translated by Google

. ¿Qué objetivo se considera el objetivo normal para que se inicien los servidores?

¿en?

1. destino.gráfico 2.

destino.servidor 3.

destino.multiusuario 4.

destino.predeterminado

. ¿Cuál de los siguientes no es un ejemplo de un objetivo systemd?

1. rescate.objetivo

2. reiniciar.destino 3.

multiusuario.destino 4.

gráfico.destino

. ¿Dónde se define en qué objetivo debe iniciarse una unidad si

¿está habilitado?

1. El archivo de la unidad de

destino 2. El directorio de deseos

3. El archivo systemctl.conf

4. La sección [Instalar] en el archivo de la unidad.

. Para permitir que se aíslen los objetivos, necesita una declaración específica en el archivo de la

unidad de destino. ¿Cuál de las siguientes describe esa afirmación?

1. Permitir aislar
Machine Translated by Google

2. Aislar

3. Establecer aislamiento

4. Aislado

. Un administrador desea cambiar el objetivo multiusuario actual por el objetivo de

rescate. ¿Cuál de las siguientes cosas debería hacer el administrador?

1. Utilice el comando systemctl Insulated Rescue.target.

2. Utilice el comando systemctl start Rescue.target.

3. Reinicie el sistema y, desde el indicador de inicio de GRUB, especifique que se

debe iniciar Rescue.target.

4. Utilice el comando systemctl enable rescate.target ­­now.

. ¿A qué nivel de ejecución heredado de System V se aplica multi­user.target?

¿corresponder?

1. 2

2. 3

3. 4

4. 5

. ¿Cuál es el nombre del archivo donde debes aplicar los cambios?

la configuración de GRUB 2?

1. /boot/grub/menu.lst 2. /

boot/grub2/grub.cfg 3. /etc/

sysconfig/grub
Machine Translated by Google

4. /etc/default/grub

. Después de aplicar cambios a la configuración de GRUB 2, debe


escribir esos cambios. ¿Cuál de los siguientes comandos hará eso
por usted?

1. grub2 ­o /boot/grub/grub.cfg 2.
grub2­mkconfig > /boot/grub2/grub.cfg 3. grub2
> /boot/grub2/grub.cfg 4. grub2­
install > /boot/grub2/ grub.cfg

. ¿Cuál es el nombre del archivo de configuración GRUB2 que


se genera en un sistema UEFI?

1. /boot/efi/redhat/grub.cfg
2. /boot/efi/EFI/redhat/grub.cfg
3. /boot/EFI/grub.cfg
4. /boot/EFI/efi/grub.cfg

Temas de la Fundación

Gestión de objetivos Systemd

Systemd es el servicio de Red Hat Enterprise Linux 9 que se


encarga de iniciar todo tipo de cosas. Systemd va mucho más allá
de iniciar servicios; Otros elementos también se inician desde Systemd.
En el Capítulo 11, “Trabajar con Systemd”, aprendió sobre
Machine Translated by Google

los fundamentos de Systemd; Este capítulo analiza cómo se utilizan los


destinos Systemd para iniciar su sistema en un estado específico.

Comprender los objetivos de Systemd

Un objetivo systemd es básicamente solo un grupo de unidades que


van juntas. Algunos objetivos son sólo eso y nada más, mientras que
otros pueden usarse para definir el estado en el que se inicia un sistema,
porque estos objetivos tienen una propiedad específica que los
objetivos normales no tienen: pueden aislarse. Los objetivos aislables
contienen todo lo que un sistema necesita para iniciar o cambiar su estado
actual. Se pueden utilizar cuatro objetivos durante el arranque:

Emergency.target: en este objetivo solo se inicia una cantidad mínima


de unidades, lo suficiente para reparar su sistema si algo sale mal.
Descubrirá que es bastante mínimo, ya que algunas unidades
importantes no se inician.
Rescue.target: este objetivo inicia todas las unidades necesarias para
obtener un sistema Linux completamente operativo. Sin
embargo, no inicia servicios no
esenciales. multi­user.target: este destino se usa a menudo como el
destino predeterminado en el que se inicia un sistema. Inicia todo lo
que se necesita para la funcionalidad completa del sistema y se
usa comúnmente en servidores. Graphical.target: este objetivo también se
utiliza habitualmente. Inicia todas las unidades necesarias para
una funcionalidad completa, así como una interfaz gráfica.
Machine Translated by Google

Trabajar con objetivos

Trabajar con objetivos puede parecer complicado, pero no lo es. perfora

hasta tres tareas comunes:

Agregar unidades para que se inicien automáticamente

Establecer un objetivo predeterminado

Ejecutar un objetivo no predeterminado para ingresar al modo de solución de problemas

En el Capítulo 11 aprendió a utilizar los comandos systemctl enable y systemctl enable para

agregar o eliminar servicios de objetivos. En este capítulo, aprenderá cómo configurar

un destino predeterminado y cómo ejecutar un destino no predeterminado para ingresar

al modo de solución de problemas. Pero primero echemos un vistazo más de cerca

al funcionamiento de los objetivos bajo el capó.

Comprender las unidades objetivo

Detrás de un objetivo hay alguna configuración. Esta configuración consta de dos partes:

El archivo de la unidad de destino

El directorio "quiere", que contiene referencias a todos los archivos de unidad que deben

cargarse al ingresar a un objetivo específico


Machine Translated by Google

Los objetivos por sí mismos pueden tener dependencias con otros


objetivos, que se definen en el archivo de la unidad de destino . El ejemplo
17­1 muestra la definición del archivo multi­user.target, que define el
estado operativo normal de un servidor RHEL.

Ejemplo 17­1 El archivo multiusuario.target

Haga clic aquí para ver la imagen del código

[root@localhost ~]# systemctl cat multi­user.targe # /usr/lib/systemd/system/multi­


user.target # Identificador de licencia SPDX: LGPL­2.1+

# Este archivo es parte de systemd.


#

# systemd es software gratuito; puede redistribuir # bajo los términos de GNU


Lesser General Publi

publicado por
# la Fundación para el Software Libre; ya sea la versión 2.
o

# (a su elección) cualquier versión posterior.

[Unidad]
Descripción=Documentación del sistema
multiusuario=man:systemd.special(7)
Requiere=basic.objetivo
Conflictos=rescate.servicio rescate.objetivo
Machine Translated by Google

Después=basic.target rescate.servicio rescate.objetivo


AllowIsolate=yes

Puedes ver que por sí sola la unidad objetivo no contiene mucho.


Simplemente define lo que requiere y con qué servicios y objetivos no
puede coexistir. También define el orden de carga mediante el uso de
la instrucción After en la sección [Unidad]. El archivo de destino no
contiene ninguna información sobre las unidades que deben incluirse; es
decir, en los archivos de las unidades individuales y en los deseos
(explicados en la próxima sección “Comprensión de los deseos”).

Los objetivos de Systemd se parecen un poco a los niveles de ejecución


utilizados en versiones anteriores de RHEL, pero los objetivos son más
que eso. Un objetivo es un grupo de unidades y hay varios objetivos
diferentes. Algunos objetivos, como el objetivo multiusuario y el objetivo
gráfico, definen un estado específico en el que el sistema debe entrar. Otros
objetivos simplemente agrupan un grupo de unidades, como nfs.target y
sound.target. Estos objetivos se incluyen desde otros objetivos, como
multi­user.target o graphical.target.

Comprender los deseos

Comprender el concepto de deseo simplemente requiere


comprender el verbo querer en el idioma inglés, como en "Quiero una
galleta". Los deseos en Systemd definen qué unidades quiere Systemd
al iniciar un objetivo específico. Los deseos se crean cuando
Machine Translated by Google

Las unidades Systemd se habilitan usando systemctl enable, y


esto sucede creando un enlace simbólico en el directorio /etc/
systemd/system. En este directorio, encontrará un subdirectorio
para cada objetivo, que contiene deseos como enlaces simbólicos a
servicios específicos que se van a iniciar. El multi­user.target, por
ejemplo, contiene sus deseos en /etc/systemd/system/multi­user.target.wants/.

Gestión de objetivos Systemd

Como administrador, debe asegurarse de que los servicios


necesarios se inicien cuando se inicie el servidor. Para hacer esto,
use los comandos systemctl enable y systemctl enable. No es
necesario pensar en el destino específico en el que se debe iniciar un
servicio. A través de la sección [Instalar] en el archivo de la unidad de
servicio, los servicios saben por sí mismos en qué destinos deben
iniciarse y se crea un deseo automáticamente. en ese destino cuando
el servicio está habilitado. El siguiente procedimiento le guía por los
pasos para habilitar un servicio:

1. Escriba dnf install ­y vsftpd, seguido de systemctl status


vsftpd. Si el servicio aún no se ha habilitado, la línea Cargado
mostrará que actualmente está deshabilitado:

Haga clic aquí para ver la imagen del código


Machine Translated by Google

[root@server202 ~]# systemctl status vsftpd vsftpd.service ­


Demonio ftp de Vsftpd
Cargado: cargado (/usr/lib/systemd/system/vsftpd
Activo: inactivo (muerto)

2. Escriba ls /etc/systemd/system/multi­user.target.wants. usted


Vea enlaces simbólicos que se encargan de iniciar los diferentes servicios
en su máquina. También puede ver que el enlace
vsftpd.service no existe.
3. Escriba systemctl enable vsftpd. El comando te muestra que
está creando un enlace simbólico para el
archivo /usr/lib/systemd/system/vsftpd.service al directorio /etc/
systemd/system/multi­user.target.wants. Básicamente, cuando habilitas un
archivo de unidad Systemd, en segundo plano aparece un archivo simbólico.
se crea el enlace.

Consejo

En el examen RHCSA, es probable que habilite un par de


servicios. Es una buena idea leer las preguntas del examen,
identificar los servicios que deben ofrecerse
habilitados y habilítelos todos a la vez para asegurarse

que se inicien automáticamente cuando reinicie.


Esto evita que estés tan concentrado en configurar
Machine Translated by Google

el servicio que te olvidas por completo de habilitarlo como


Bueno.

Aislar objetivos

Como ya se mencionó, en las máquinas Systemd hay varios objetivos. También

sabes que un objetivo es un conjunto de unidades. Algunos de esos objetivos tienen un

papel especial porque pueden aislarse.

Estos también son los objetivos que puede establecer como objetivos a alcanzar después

del inicio del sistema.

Al aislar un objetivo, comienza ese objetivo con todas sus dependencias.

Solo se pueden aislar objetivos que tengan habilitada la opción de aislamiento.

Exploraremos el comando systemctl Insulated más adelante en esta sección. Antes

de hacer eso, echemos un vistazo a los objetivos predeterminados en su

computadora.

Para obtener una lista de todos los objetivos cargados actualmente, escriba

systemctl ­­ type=target. Verá una lista de todos los objetivos actualmente activos. Si

su servidor ejecuta un entorno gráfico, esto incluirá todas las dependencias necesarias

para instalar el gráfico. objetivo también.

Sin embargo, esta lista muestra sólo los objetivos activos, no todos los objetivos.

Escriba systemctl ­t target ­­all para obtener una descripción general de todos los

objetivos que existen en su computadora. Ahora también verá objetivos inactivos

(consulte el Ejemplo 17­2).


Machine Translated by Google

Ejemplo 17­2 Mostrando objetivos del sistema

Haga clic aquí para ver la imagen del código

root@localhost ~]# systemctl ­­type=target ­­all


UNIDAD CARGA ACTIVO

DESCRIPCIÓN

basic.target sistema cargado y

básico activo

bluetooth.objetivo activo cargado

bluetooth activo

cryptsetup.objetivo activo cargado

activo local cifrado V

dbus.objetivo
inactivo muerto dbus

emergencia.objetivo inactivo cargado

muerto Modo de emergencia


getty­pre.objetivo cargado

activo Mensajes de inicio de sesión activos (Pr


getty.target active cargado

Mensajes de inicio de sesión

objetivo.grafico cargado

Interfaz gráfica activa

initrd­fs.objetivo muerto cargado

Sistemas de archivos initrd

initrd­root­device.target cargado Dispositivo raíz Initrd


muerto

initrd­root­fs.objetivo cargado
Machine Translated by Google

muerto Sistema de archivos raíz Initrd


initrd­switch­root.target cargado i
Cambiar raíz

initrd.target inactivo cargado


muerto Objetivo predeterminado de Initrd

local­fs­pre.target sistemas de yo

activo archivos locales activos (Pre)


local­fs.target activo cargado

activo Sistemas de archivos locales


multi­user.target activo activo muy
Sistema multiusuario

red­en­linea.objetivo carga
activo La red activa está en línea.

objetivo­pre­red muy
activo Red activa (Pre)
red.objetivo red activa cargado
activo

nfs­cliente.objetivo cargado
servicios de cliente NFS activos

nss­lookup.objetivo muerto cargado

Búsqueda de nombres de host y red


nss­buscar­usuario.objetivo cargado

Búsquedas activas de nombres de usuarios y grupos


rutas.objetivo cargado
Caminos activos
Remote­fs­pre.target Sistemas de cargado

archivos remotos activos (Pre)


remote­fs.target sistemas cargado

de archivos remotos activos


Machine Translated by Google

rescate.objetivo cargado
inactivo muerto El modo de rescate

rpc_pipefs.objetivo cargado
activo rpc_pipefs. objetivo
rpcbind.objetivo cargado activo

Asignador de puertos RPC

apagado.objetivo muerto cargado i


Cerrar

rebanadas.objetivo cargado aire acondicionado activo

Rebanadas

sockets.objetivo cargado aire acondicionado activo

tarjeta de sonido cargado activo un


sound.target

sshd­keygen.destino sshd­ cargado activo

keygen. objetivo
swap.target cargado activo

Intercambiar sysinit.target cargado activo

Inicialización del sistema

De los objetivos de su sistema, algunos tienen un papel importante

porque pueden iniciarse (aislarse) para determinar el estado de su

comienza el servidor. Estos también son los objetivos que se pueden establecer como

objetivos predeterminados. Estos objetivos también corresponden aproximadamente a niveles de ejecución.

utilizado en versiones anteriores de RHEL. Estos son los siguientes objetivos:

poweroff.objetivo nivel de ejecución 0


Machine Translated by Google

objetivo.rescate nivel de ejecución 1

multiusuario.objetivo nivel de ejecución 3

objetivo.grafico nivel de ejecución 5

reiniciar.objetivo nivel de ejecución 6

Si observa el contenido de cada uno de estos objetivos, también verá que contienen

la línea AllowIsolate=yes. Eso significa que puede cambiar el estado actual de su

computadora a cualquiera de estos destinos usando el comando systemctl

Insulated. El ejercicio 17­1 le muestra cómo hacer esto.

Ejercicio 17­1 Aislar objetivos

1. Desde un shell raíz, vaya al directorio /usr/lib/systemd/system.

Escriba grep Aislar *.target. Este comando muestra una lista de todos los

objetivos que permiten el aislamiento.

2. Escriba systemctl aislar rescate.objetivo. Este comando cambia su computadora a

Rescue.target. Debe escribir la contraseña de root en la consola de su

servidor para iniciar sesión.


Machine Translated by Google

3. Escriba systemctlisolatereboot.target. Este comando se reinicia

tu computadora.

Establecer el objetivo predeterminado

Establecer el objetivo predeterminado es un procedimiento sencillo que se

puede realizar desde la línea de comando. Escriba systemctl get­default para ver el objetivo

predeterminado actual y use systemctl set­default para establecer el objetivo

predeterminado deseado.

Para configurar Graphical.target como destino predeterminado, debe asegurarse de que

los paquetes necesarios estén instalados. Si este no es el caso, puede usar el

comando dnf group list para mostrar una lista de todos los grupos de paquetes RPM. Se

aplica el grupo de paquetes "servidor con GUI". Utilice la instalación del grupo

dnf " servidor con interfaz gráfica de usuario " para instalar todo

Paquetes GUI en un servidor donde aún no se han instalado.

Trabajando con GRUB 2

El cargador de arranque GRUB 2 es una de las primeras cosas que debe funcionar bien

para arrancar un servidor Linux. Como administrador, en ocasiones necesitarás aplicar

modificaciones a la configuración del cargador de arranque GRUB 2. Esta sección explica

cómo hacerlo. El procedimiento de inicio de RHEL 9 se analiza con más detalle en el

Capítulo 18, donde también se tratan temas de solución de problemas.


Machine Translated by Google

Entendiendo GRUB 2

El cargador de arranque GRUB 2 garantiza que pueda iniciar Linux.

GRUB 2 está instalado en el sector de arranque del disco duro de su servidor y

está configurado para cargar un kernel de Linux y el initramfs:

El kernel es el corazón del sistema operativo y permite a los usuarios


para interactuar con el hardware que está instalado en el servidor.

El initramfs contiene los controladores necesarios para iniciar su servidor.

Contiene un mini sistema de archivos que se monta durante el arranque.

En él se encuentran los módulos del kernel que se necesitan durante el resto

del proceso de arranque (por ejemplo, los módulos LVM y los módulos

SCSI para acceder a discos que no son compatibles de forma predeterminada).

Normalmente, GRUB 2 funciona bien y no necesita mucho mantenimiento.

Sin embargo, en algunos casos, es posible que tengas que cambiar su

configuración. Para aplicar cambios a la configuración de GRUB 2, el punto de

partida es el archivo /etc/default/grub, que tiene opciones que le indican a

GRUB qué hacer y cómo hacerlo. El ejemplo 17­3 muestra el contenido de

este archivo después de una instalación con la configuración predeterminada de


RHEL 9.
Machine Translated by Google

Ejemplo 17­3 Contenido del archivo /etc/default/grub

Haga clic aquí para ver la imagen del código

[root@localhost ~]# cat /etc/default/grub GRUB_TIMEOUT=5


GRUB_DISTRIBUTOR="$

(sed 's, release .*$,,g' /etc/s GRUB_DEFAULT=saved

GRUB_DISABLE_SUBMENU=verdadero
GRUB_TERMINAL_OUTPUT="consola"
GRUB_CMDLINE_LINUX="crashkernel=reanudación automática=/dev/m

rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb aquí GRUB_DISABLE_RECOVERY="true"

GRUB_ENABLE_BLSCFG=verdadero

Como puede ver, el archivo /etc/default/grub no contiene mucha información. La parte

más importante que configura es la opción GRUB_CMDLINE_LINUX. Esta línea

contiene argumentos de arranque para el kernel de su servidor.

Consejo

Para el examen RHCSA, asegúrese de comprender el contenido del

archivo /etc/default/grub. Eso es el


Machine Translated by Google

parte más importante de la configuración de GRUB 2

de todos modos.

Aparte de la configuración en /etc/default/grub, hay algunos archivos de

configuración en /etc/grub.d. En estos archivos, encontrará un código de shell

bastante complicado que le indica a GRUB qué cargar y cómo hacerlo.

Normalmente no es necesario modificar estos archivos. Tampoco necesita

modificar nada si desea tener la capacidad de seleccionar entre diferentes

núcleos durante el arranque. GRUB 2 recoge automáticamente nuevos

kernels y los agrega al menú de inicio automáticamente, por lo que

no es necesario agregar nada manualmente.

Comprender los archivos de configuración de GRUB 2

En base a los archivos de configuración mencionados anteriormente, se crea el

archivo de configuración principal. Si su sistema es un sistema BIOS, el nombre

del archivo es /boot/grub2/grub.cfg. En un sistema UEFI, el archivo se escribe

en /boot/efi/EFI/redhat/grub.cfg en RHEL y /boot/efi/EFI/centos/

grub.cfg en CentOS. Después de realizar modificaciones en la

configuración de GRUB 2, deberá volver a generar el archivo de

configuración relevante con el comando grub2­mkconfig, por lo que

debe saber el nombre del archivo que se aplica a la arquitectura de su sistema.

No lo edites, ya que este archivo se genera automáticamente.


Machine Translated by Google

Modificación de las opciones de arranque predeterminadas de GRUB 2

Para aplicar modificaciones al cargador de arranque GRUB 2, el archivo /

etc/default/grub es su punto de entrada. La línea más importante en


Este archivo es GRUB_CMDLINE_LINUX, que define cómo funciona Linux.

Se debe iniciar el kernel. En esta línea, puede aplicar correcciones permanentes

a la configuración de GRUB 2. Algunos posibles candidatos para la

eliminación son las opciones rhgb y quiet. Estas opciones le dicen al kernel

que oculte todos los resultados durante el arranque. Es bueno ocultar

mensajes confusos para los usuarios finales, pero si es administrador

de servidor, probablemente solo desee eliminar estas opciones para poder ver lo

que sucede durante el arranque.

Consejo

En el examen quieres saber inmediatamente si algo no sale

bien. Para lograr esto, es una buena idea eliminar las opciones rhgb

y de arranque silencioso. Sin estos, no tendrá que adivinar por

qué su servidor tarda tanto en reiniciarse; simplemente podrás ver.

Otro parámetro interesante es GRUB_TIMEOUT. Esto define la cantidad de tiempo

que su servidor espera a que usted acceda al menú de inicio de GRUB 2 antes

de continuar iniciando automáticamente. Si su servidor se ejecuta en

hardware físico que tarda mucho en obtenerse


Machine Translated by Google

A través de las comprobaciones de la BIOS, puede ser interesante aumentar

un poco este tiempo para que tengas más tiempo para acceder al menú de inicio.

Mientras trabaja con GRUB 2, necesita saber un poco sobre los argumentos de

arranque del kernel. Hay muchos y la mayoría de ellos nunca los usarás, pero es

bueno saber dónde puedes encontrarlos. Escriba man 7 bootparam para obtener

una página de manual que contenga una excelente descripción de todos los

parámetros de arranque que puede usar al iniciar


el núcleo.

Para escribir la configuración modificada en los archivos apropiados, use el

comando grub2­mkconfig y redirija su salida al archivo de configuración apropiado.

En un sistema BIOS, el comando sería grub2­mkconfig ­o /boot/grub2/grub.cfg y

en un sistema UEFI, el comando sería grub2­mkconfig ­o /boot/efi/EFI/redhat/

grub.cfg.

En el Ejercicio 17­2, aprenderá cómo aplicar modificaciones a la configuración

de GRUB 2 y escribirlas en el archivo de configuración /boot/grub2/grub.cfg.

Consejo

Debe saber cómo aplicar cambios a la configuración de GRUB,

pero también debe saber que la configuración predeterminada

de GRUB 2 funciona bien tal como está para


Machine Translated by Google

Casi todas las computadoras. Por lo tanto, ¡probablemente nunca

tendrás que aplicar ningún cambio!

Ejercicio 17­2 Aplicación de modificaciones a GRUB 2

1. Abra el archivo /etc/default/grub con un editor y elimine el

rhgb y opciones silenciosas de la línea GRUB_CMDLINE_LINUX.

2. Desde el mismo archivo, establezca el parámetro GRUB_TIMEOUT en 10

segundos. Guarde los cambios en el archivo y cierre el editor.

3. Desde la línea de comando, escriba grub2­mkconfig >

/boot/grub2/grub.cfg para escribir los cambios en GRUB 2. (Tenga en cuenta

que en lugar de usar el redirector > para escribir cambios en el archivo grub.cfg,

puede usar la opción ­o. Ambos métodos tienen el mismo resultado. )

4. Reinicie y verifique que durante el inicio vea mensajes de inicio.

desplazándose.

Resumen
En este capítulo, aprendió cómo se utilizan Systemd y GRUB 2 para llevar su servidor

al estado exacto que desea al final del procedimiento de arranque. También aprendiste

cómo está organizado Systemd y


Machine Translated by Google

cómo se pueden configurar las unidades para el inicio automático con el uso de

objetivos. Finalmente, leyó cómo aplicar cambios al cargador de arranque

predeterminado de GRUB 2. En el siguiente capítulo, aprenderá cómo

solucionar problemas del procedimiento de arranque y solucionar algunos problemas comunes.

Tareas de preparación de exámenes

Como se menciona en la sección "Cómo utilizar este libro" en el

Introducción, tiene varias opciones para la preparación de exámenes: los laboratorios

de final de capítulo; las tablas de memoria en el Apéndice C; Capítulo 27, “Preparación

Final”; y los exámenes de práctica.

Revisar todos los temas clave

Revise los temas más importantes del capítulo, señalados con el ícono de Tema

clave en el margen de la página. La Tabla 17­2 enumera una referencia

para estos temas clave y el número de página en el que cada uno


es encontrado.
Machine Translated by Google

Tabla 17­2 Temas clave para el Capítulo 17

Tema clave
Descripción Página
Elemento

Sección Comprender las unidades objetivo 391

Sección Gestión de objetivos Systemd 392

Ejercicio 17­1 Aislar objetivos 396

Lista Explicación del papel del kernel. 396

e initramfs

Ejemplo 17­3 Contenido de /etc/default/grub 397

Archivo

Ejercicio 17­2 Aplicar modificaciones a GRUB 2 399

Definir términos clave

Defina los siguientes términos clave de este capítulo y verifique su

respuestas en el glosario:

sistemad
Machine Translated by Google

objetivo

dependencia

unidad

desear

cargador de arranque

COMIDA

núcleo

initramfs

Preguntas de revisión

Las preguntas que siguen están destinadas a ayudarle a evaluar su conocimiento

de conceptos y terminología y la amplitud de su conocimiento. Puede encontrar las

respuestas a estas preguntas en el Apéndice A.

. ¿Qué es una unidad?

. ¿Qué comando le permite asegurarse de que un objetivo no sea

¿Ya no es elegible para el inicio automático al iniciar el sistema?


Machine Translated by Google

. ¿Qué archivo de configuración debería modificar para aplicar cambios comunes

a GRUB 2?

. ¿Qué comando debería utilizar para mostrar todas las unidades de servicio que están

actualmente cargado?

. ¿Cómo se crea el deseo de un servicio?

. ¿Cómo se cambia el objetivo operativo actual al

rescate.objetivo?

. ¿Por qué puede suceder que recibas el mensaje de que un objetivo no puede
estar aislado?

. Quiere cerrar un servicio Systemd, pero antes de hacerlo quiere saber qué otras

unidades tienen dependencias de este servicio. ¿Qué comando usarías?

. ¿Cuál es el nombre del archivo de configuración de GRUB 2 donde

¿Aplicar cambios a GRUB 2?

. Después de aplicar cambios a la configuración de GRUB 2, que

¿Comando deberías ejecutar?

Laboratorios de fin de capítulo

Ahora ha aprendido a trabajar con objetivos Systemd y el cargador de arranque

GRUB 2. Antes de continuar, es una buena idea trabajar


Machine Translated by Google

en algunas prácticas de laboratorio que le ayudarán a garantizar que pueda aplicar las

habilidades que adquirió en este capítulo.

Laboratorio 17.1

1. Establezca el destino predeterminado en multi­user.target.

2. Reinicie para verificar que esto esté funcionando como se esperaba.

Laboratorio 17.2

1. Cambie la configuración de inicio de GRUB 2 para que vea mensajes de inicio al iniciar.
Machine Translated by Google

Capítulo 18

Habilidades esenciales para solucionar problemas

En este capítulo se tratan los siguientes temas:

Comprensión del procedimiento de arranque de RHEL 9

Pasar argumentos de arranque del kernel

Usando un disco de rescate

Solucionar problemas comunes

En este capítulo se tratan los siguientes objetivos del examen RHCSA:

Arrancar sistemas en diferentes destinos manualmente

Interrumpir el proceso de arranque para obtener acceso a un sistema

En el Capítulo 17, “Administración y comprensión del procedimiento de arranque”, aprendió

cómo arranca un servidor RHEL 9 y qué papel desempeñan el cargador de arranque

GRUB 2 y Systemd en ese proceso. En este capítulo, aprenderá qué puede hacer cuando

ocurren problemas comunes al iniciar su servidor. Este capítulo enseña enfoques generales

que ayudan a solucionar algunos de los problemas más comunes que pueden ocurrir durante

el arranque. Asegúrese de dominar bien los temas tratados en este capítulo; ¡Podrían

salvarte la vida (profesional) algún día!


Machine Translated by Google

“¿Ya lo sé?” Prueba

El cuestionario “¿Ya lo sé?” El cuestionario le permite evaluar si debe leer este capítulo

completo detenidamente o pasar a la sección "Tareas de preparación para el examen".

Si tiene dudas sobre sus respuestas a estas preguntas o sobre su propia evaluación de su

conocimiento de los temas, lea el capítulo completo. La Tabla 18­1 enumera los

títulos principales de este capítulo y sus correspondientes “¿Ya lo sé?” preguntas del

cuestionario. Puede encontrar las respuestas en el Apéndice A, “Respuestas a la pregunta

'¿Ya lo sé?' Cuestionarios y preguntas de repaso”.

Tabla 18­1 “¿Ya lo sé?” Mapeo de sección a pregunta

Sección de Temas de Fundación Preguntas

Comprensión del procedimiento de arranque de RHEL 9 1

Pasar argumentos de arranque del kernel 2–6

Usando un disco de rescate 7

Solucionar problemas comunes 8–10


Machine Translated by Google

. ¿Cuál de los siguientes viene primero en Red Hat Enterprise Linux?

9 procedimiento de arranque?

1. Sistema
2. núcleo

3. COMIDA 2

4. Iniciamfs

. Acaba de ingresar un argumento del kernel en el arranque de GRUB 2.

inmediato. ¿Presionar qué tecla(s) le permite comenzar con este argumento de

arranque?

1. ZZ

2. Ctrl­X

3. ESC

4. Ingrese

. Su initramfs parece defectuoso y no puede inicializar el LVM

volúmenes en su disco. ¿Qué archivo de configuración debería comprobar para ver

las opciones que se utilizan?

1. /etc/dracut.d/dracut.conf

2. /etc/dracut.conf

3. /etc/sysconfig/dracut
4. /etc/mkinitrd.conf
Machine Translated by Google

. No tienes la contraseña de root y quieres restablecerla. Cual

¿El argumento del kernel ofrece la forma recomendada de restablecerlo?

1. inicio=/bin/bash

2. inicio=/bin/sh

3. systemd.unit=emergencia.objetivo
4. er. descanso

. Quiere ver exactamente qué sucede al iniciar el sistema. ¿Qué dos opciones de arranque

debería eliminar del indicador de arranque de GRUB 2? (Escoge dos.)

1. rhgb 2.

logotipo

3. tranquilo
4. silencioso

. Desea ingresar al modo de solución de problemas más mínimo donde

Se cargan la menor cantidad de servicios posible. ¿Qué argumento de arranque

debería utilizar?

1. systemd.unit=break.target 2.

systemd.unit=emergencia.target 3.

systemd.unit=rescue.target
4. 1
Machine Translated by Google

. ¿Cuál de las siguientes situaciones se puede resolver sólo mediante el uso de un


¿disco de recuperación?

1. El kernel deja de cargarse.

2. El initramfs deja de cargarse.

3. Nunca llega al mensaje de inicio de GRUB 2.

4. Se le solicitará que ingrese la contraseña de root para mantenimiento.


modo.

. Ha ingresado al modo de solución de problemas y se lee el acceso al disco.

solo. ¿Qué deberías hacer?

1. Reinicie el modo de resolución de problemas y pase la opción de inicio rw


al núcleo.

2. Utilice el argumento de arranque rd.break para iniciar manualmente el


modo initramfs.

3. Utilice mount ­o remount,rw /

4. Utilice el soporte /

. Su servidor muestra un cursor parpadeante sólo durante el arranque. No hay menú GRUB

2 disponible. ¿Cuál es el primer paso para solucionar este problema?


¿asunto?

1. Desde un disco de rescate, pruebe la opción Arrancar desde disco local.


2. Inicie un entorno de rescate y reinstale GRUB.

3. Inicie un entorno de rescate y vuelva a crear initramfs.

4. Utilice el argumento de arranque rd.break.


Machine Translated by Google

. Después de restablecer la contraseña de root desde un entorno que se inició


con el argumento de arranque del kernel init=/bin/bash, ¿cómo se puede
reiniciar el sistema normalmente?

1. reiniciar

2. systemctl aísla multi­user.target 3. exec /usr/


lib/systemd/system
4. salir

Temas de la Fundación

Comprensión del procedimiento de arranque de RHEL 9

Para solucionar problemas de arranque, es esencial tener un buen


conocimiento del procedimiento de arranque. Si ocurre un problema durante el
inicio, debe poder juzgar en qué fase del procedimiento de inicio ocurre
el problema para poder seleccionar la herramienta adecuada para solucionar el problema.

Los siguientes pasos resumen cómo ocurre el procedimiento de arranque.


en Linux:

1. Realizar POST: La máquina está encendida. Desde el


firmware del sistema, que puede ser el moderno Universal Extended
Machine Translated by Google

Interfaz de firmware (UEFI) o el clásico Sistema básico de entrada/salida

(BIOS), se ejecuta la autoprueba de encendido (POST) y se inicializa el

hardware necesario para iniciar el sistema.

2. Seleccionar el dispositivo de arranque: ya sea desde el arranque UEFI


firmware o desde el BIOS, se encuentra un dispositivo de arranque.

3. Cargando el cargador de arranque: Desde el dispositivo de arranque, se

ubica un cargador de arranque. En RHEL, suele ser GRUB 2.

4. Cargando el kernel: El cargador de arranque puede presentar un menú de

arranque al usuario o puede configurarse para iniciar automáticamente un

sistema operativo predeterminado. Para cargar Linux, el kernel se carga

junto con el archivo initramfs. initramfs contiene módulos del kernel para

todo el hardware necesario para arrancar, así como los scripts iniciales

necesarios para pasar a la siguiente etapa de arranque . En RHEL 9,

initramfs contiene un sistema operativo completo (que puede usarse para

solucionar problemas).

5. Iniciar /sbin/init: Una vez que el kernel se carga en la memoria, se carga el

primero de todos los procesos, pero aún desde initramfs. Este es el proceso /

sbin/init, que en RHEL está vinculado a Systemd.

El demonio systemd­udevd también se carga para encargarse de una

mayor inicialización del hardware. Todo esto sigue sucediendo desde la

imagen de initramfs.

6. Procesamiento de initrd.target: el proceso Systemd ejecuta todos

unidades de initrd.target, que prepara un entorno operativo mínimo,

donde el sistema de archivos raíz en el disco se monta en el directorio /

sysroot. A estas alturas ya es suficiente


Machine Translated by Google

cargado para pasar a la instalación del sistema que se escribió en el


disco duro.

7. Cambiar al sistema de archivos raíz: el sistema cambia al sistema de archivos raíz que

está en el disco y en este punto también puede cargar el proceso Systemd desde

el disco.

8. Ejecutando el objetivo predeterminado: Systemd busca el objetivo predeterminado

objetivo para ejecutar y ejecuta todas sus unidades. En este proceso, se presenta una

pantalla de inicio de sesión y el usuario puede autenticarse. Tenga en cuenta que el

mensaje de inicio de sesión puede aparecer antes de que todos los archivos de la

unidad Systemd se hayan cargado correctamente. Por lo tanto, ver un mensaje de

inicio de sesión no significa necesariamente que su servidor esté en pleno

funcionamiento todavía; Es posible que los servicios aún se carguen en segundo plano.

En cada una de las fases enumeradas, pueden ocurrir problemas debido a una

mala configuración u otros problemas. La Tabla 18­2 resume dónde se configura

una fase específica y qué puede hacer para solucionar problemas si algo sale mal.
Machine Translated by Google

Tabla 18­2 Descripción general de la configuración y solución de problemas de la fase de inicio

Fase de arranque Configurándolo Arreglando lo

CORREO Configuración de hardware (F2, Esc, F10 u Reemplazar

otra tecla). hardware.

Seleccionando Configuración BIOS/UEFI o Reemplazar

el menú de inicio de hardware. hardware o

de arranque sistema de rescate

dispositivo

Cargando el grub2­install y edita en /etc/defaults/ Utilice el GRU

cargador de arranque grub. bomba de arranque

ediciones a

/etc/predeterminado

seguido de

grub2­mkc

Cargando el Edita la configuración de GRUB y /etc/ Utilice el GRU

núcleo dracut.conf. bomba de arranque

ediciones a

/etc/predeterminado

seguido de

grub2­mkc
Machine Translated by Google

Fase de arranque Configurándolo Arreglando lo

A partir de Compilado en initramfs. Usa el inicio

/sbin/iniciar arranque del kernel

argumento,
rd.romper ke

argumento de arranque

Procesando Compilado en initramfs. Usa el dra

initrd.target dominio. (

no lo hará a menudo

molestar

este.)

Cambiar a Edita el archivo /etc/fstab. Aplicar ediciones

el archivo raíz /etc/fstab archivo

sistema

Correr Usando systemctl set­default para Iniciar el

el valor por defecto crear el rescate.

objetivo /etc/systemd/system/default.target enlace arranque del kernel

simbólico. argumento.

Consejo
Machine Translated by Google

La resolución de problemas siempre ha sido parte del examen

RHCSA. Si encuentra un problema, asegúrese de poder identificar

en qué fase del procedimiento de inicio ocurre y qué puede hacer

para solucionarlo.

En la siguiente sección aprenderá cómo aplicar las diferentes técnicas

de solución de problemas descritas en esta tabla.

Pasar argumentos de arranque del kernel

Si su servidor no arranca normalmente, el indicador de arranque de GRUB

ofrece una manera conveniente de detener el procedimiento de arranque y

pasar opciones específicas al kernel durante el arranque. En esta sección,

aprenderá cómo acceder al indicador de inicio y cómo pasar argumentos de inicio

específicos al kernel durante el inicio.

Accediendo al indicador de arranque

Cuando su servidor arranca, verá brevemente el menú de GRUB 2. Mira rápido

porque durará sólo unos segundos. Desde este menú de inicio, puede escribir

e para ingresar a un modo en el que pueda editar comandos, o c para

ingresar un símbolo del sistema de GRUB completo, como se muestra en la Figura

18­1. Para pasar opciones de arranque a un kernel inicial, use e.


Machine Translated by Google

Figura 18­1 Ingreso al mensaje de inicio de GRUB

Después de pasar una e al menú de inicio de GRUB, verá la interfaz que


se muestra en la Figura 18­2. Desde esta interfaz, desplácese hacia
abajo para ubicar la sección que comienza con linux ($root)/vmlinuz
seguido de muchos argumentos. Esta es la línea que le dice a GRUB cómo
iniciar un kernel y, de forma predeterminada, se ve así:
Machine Translated by Google

Figura 18­2 Ingrese argumentos de inicio en la línea que comienza con Linux

Haga clic aquí para ver la imagen del código

linux ($root)/vmlinuz­{número de versión].el9.x86_64 ro rhel­root ro crash


kernel=[opciones] resume=/dev/m rd.lvm.lv=rhel/ root rd.lvm.lv=rhel/swap
rhgb tranquilo

Para empezar, es una buena idea quitar las partes rhgb y silenciosas de
esta línea; Estos argumentos ocultan los mensajes de inicio y, por
lo general, desea ver qué sucede durante el inicio. En la siguiente
sección, conocerá algunas opciones de solución de problemas a las
que puede ingresar desde el indicador de inicio de GRUB.
Machine Translated by Google

Después de ingresar las opciones de arranque que desea usar, presione Ctrl­

X para iniciar el kernel con estas opciones. Tenga en cuenta que estas opciones

se utilizan una sola vez y no son persistentes. Para hacerlos

persistentes, debe modificar el contenido del archivo de configuración /etc/

default/grub y usar grub2­mkconfig ­o /boot/grub2/

grub.cfg para aplicar la modificación. (Consulte el Capítulo 17 para obtener más

detalles sobre este procedimiento).

Iniciar un objetivo de solución de problemas

Si tiene problemas al iniciar su servidor, tiene varias opciones que puede

ingresar en el indicador de inicio de GRUB 2:

rd.break: esto detiene el procedimiento de arranque mientras aún se

encuentra en la etapa initramfs. Su sistema todavía estará en la etapa initramfs

de arranque, lo que significa que el sistema de archivos raíz aún no está

montado en /. Tendrás que proporcionar la contraseña de root para ingresar a esto.


modo.

init=/bin/sh o init=/bin/bash: esto especifica que se debe iniciar un shell

inmediatamente después de cargar el kernel e initrd. Esta opción proporciona

el acceso más temprano posible a un sistema en ejecución.

No tendrá que ingresar la contraseña de root, pero observe que solo está

montado el sistema de archivos raíz y sigue siendo de solo lectura. Leer


Machine Translated by Google

Más información sobre esta opción en la sección "Restablecer la contraseña

raíz" más adelante en este capítulo.

systemd.unit=emergency.target: esto ingresa a un modo que carga una cantidad mínima

de unidades Systemd. Requiere una contraseña de root. Para ver que solo se ha

cargado un número muy limitado de archivos de unidades, puede escribir systemctl

list­units
dominio.

systemd.unit=rescue.target: Esto inicia algunas unidades Systemd más para llevarlo

a un modo operativo más completo. Requiere una contraseña de root. Para ver que

solo se ha cargado un número muy limitado de archivos unitarios, puede escribir

systemctl list­
mando de las unidades.

En el Ejercicio 18­1, aprenderá cómo ingresar los objetivos de solución de

problemas. Los otros modos enumerados aquí se analizan a continuación.


secciones.

Ejercicio 18­1 Exploración de objetivos de resolución de problemas

1. (Re)inicie su computadora. Cuando aparezca el menú GRUB, seleccione

la primera línea del menú y presione e.

2. Desplácese hacia abajo hasta la línea que comienza con linux $(root)/vmlinuz. En

Al final de esta línea, escriba systemd.unit=rescue.target. También elimine las

opciones rhgb quit de esta línea. Presione Ctrl­X para


Arranque con estas modificaciones.

3. Ingrese la contraseña de root cuando se la solicite.


Machine Translated by Google

4. Escriba systemctl list­units. Esto muestra todos los archivos de unidad que están

actualmente cargado. Puedes ver que un entorno de sistema básico


ha sido cargado.

5. Escriba systemctl show­environment. Esto muestra el shell actual.


Variables de entorno.

6. Escriba systemctl reboot para reiniciar su máquina.

7. Cuando aparezca el menú GRUB, presione e nuevamente para ingresar al

modo editor. Al final de la línea que carga el kernel, escriba

systemd.unit=emergency.target. Presione Ctrl­X para iniciar con esta opción.

8. Cuando se le solicite, ingrese la contraseña de root para iniciar sesión.

9. Después de iniciar sesión correctamente, escriba systemctl list­units. Note que el


El número de archivos unitarios cargados se reduce al mínimo.

10. Escriba reiniciar para reiniciar su sistema en el destino predeterminado.

Usando un disco de rescate

Si tiene suerte cuando encuentre problemas, aún podrá iniciar desde el disco duro. Si

tiene un poco menos de suerte, verá un cursor parpadeante en un sistema que no

arranca en absoluto. Si eso sucede, necesitas un disco de rescate. La imagen

de rescate predeterminada para Red Hat Enterprise Linux se encuentra en el disco de

instalación. Al iniciar desde el disco de instalación, verá un elemento del menú

Solución de problemas.

Seleccione este elemento para obtener acceso a las opciones que necesita para reparar su
máquina.
Machine Translated by Google

Restaurar el acceso al sistema mediante un disco de rescate

Después de seleccionar la opción Solución de problemas, se le presentan las

siguientes opciones, como se muestra en la Figura 18­3:

Figura 18­3 Inicio desde un disco de rescate

Instale Red Hat Enterprise Linux 9 en modo de gráficos básico: esta opción

reinstala su máquina. No lo utilices a menos que


desea solucionar una situación en la que una instalación normal

no funciona y necesitas un modo de gráficos básico. Normalmente, nunca

debería necesitar utilizar esta opción para solucionar un problema


Instalación rota.

Rescatar un sistema Red Hat Enterprise Linux: este es el sistema de rescate

más flexible. En el ejercicio 18­2, puedes explorarlo en


Machine Translated by Google

detalle. Esta debería ser la primera opción cuando se utiliza un


disco de recuperación.

Ejecute una prueba de memoria: ejecute esta opción si encuentra errores de

memoria. Le permite marcar chips de memoria defectuosos para que su

máquina pueda arrancar normalmente.

Arrancar desde la unidad local: si no puede arrancar desde GRUB en su disco

duro, pruebe esta opción primero. Ofrece un cargador de arranque que intenta

instalarse desde el disco duro de su máquina y, como tal, es la opción menos

intrusiva disponible.

Después de iniciar un sistema de rescate, normalmente necesitará habilitar

el acceso completo a la instalación en disco. Normalmente, el disco de rescate

detecta su instalación y la monta en el directorio /mnt/sysimage. Para arreglar el

acceso a los archivos de configuración y sus ubicaciones predeterminadas, ya

que deberían estar disponibles en el disco, use el comando chroot /mnt/

sysimage para hacer que el contenido de este directorio sea su entorno de

trabajo real. Si no utiliza este comando chroot, muchas utilidades no

funcionarán, porque si escriben en un archivo de configuración,

será la versión que existe en el disco de solo lectura. El uso del comando chroot

garantiza que todas las referencias de ruta a los archivos de configuración sean

correctas.

En el Ejercicio 18­2, aprenderá cómo utilizar la opción Rescatar un

sistema Red Hat Enterprise Linux para solucionar problemas de un sistema que

ya no arranca.
Machine Translated by Google

Ejercicio 18­2 Usando la opción de rescate

1. Reinicie su servidor desde el disco de instalación. Selecciona el

Opción de menú de solución de problemas.

2. En el menú Solución de problemas, seleccione Rescatar un Red Hat

Sistema Linux empresarial. Esto le pedirá que presione Entrar para iniciar la

instalación. No te preocupes; esta opción no sobrescribe su configuración

actual, solo carga un rescate

sistema.

3. El sistema de rescate ahora le indica que intentará encontrar un

Instalé el sistema Linux y monté en /mnt/sysimage. Presione 1 para aceptar la opción

Continuar (consulte la Figura 18­4).


Machine Translated by Google

Figura 18­4 El sistema de rescate busca una imagen del sistema instalado y la monta para

4. Si se encontró una instalación válida de Red Hat, se le solicitará


que su sistema ha sido montado en /mnt/sysimage. En este punto,
puede presionar Enter para acceder al shell de rescate.
5. En este momento, se puede acceder a su instalación de Linux a través
del directorio /mnt/sysimage. Escriba chroot /mnt/sysimage. En este
punto, tiene acceso a su sistema de archivos raíz y puede acceder a
todas las herramientas que necesita para reparar el acceso a su sistema.
6. Escriba salir para salir del entorno chroot y escriba reiniciar para reiniciar
su máquina en modo normal.
Machine Translated by Google

Reinstalar GRUB usando un disco de rescate

Una de las razones más comunes por las que podría necesitar iniciar un disco
de rescate es que el cargador de arranque GRUB 2 se estropee. Si eso sucede,
es posible que tengas que reinstalarlo. Una vez que haya restaurado el acceso
a su servidor utilizando un disco de rescate, reinstalar GRUB 2 no es difícil
y consta de dos pasos:

Asegúrese de haber puesto el contenido del directorio /mnt/


sysimage a disposición de su entorno de trabajo actual, utilizando chroot
como se describió anteriormente.
Utilice el comando grub2­install, seguido del nombre del dispositivo en el
que desea reinstalar GRUB 2. Entonces, en una máquina virtual KVM,
el comando a utilizar es grub2­install /dev/vda, y en un servidor físico o
Máquina virtual VMware o Virtual Box, es grub2­install /dev/sda.

Recreación de Initramfs usando un disco de rescate

Ocasionalmente, la imagen initramfs también puede dañarse. Si esto sucede,


no podrá iniciar su servidor en modo operativo normal. Para reparar la
imagen initramfs después de iniciar en el entorno de rescate, puede usar el
comando dracut . Si se usa sin argumentos, este comando crea un nuevo
initramfs para el kernel actualmente cargado.
Machine Translated by Google

Alternativamente, puede usar el comando dracut con varias opciones para crear un

initramfs para entornos de kernel específicos.

La configuración de dracut está dispersa en diferentes ubicaciones:

/usr/lib/dracut/dracut.conf.d/*.conf contiene los archivos de configuración predeterminados

del sistema. /etc/

dracut.conf.d contiene archivos de configuración personalizados de dracut. /etc/

dracut.conf ahora está en desuso y no debería usarse más. Coloque su

configuración en archivos en /etc/dracut.conf.d/


en cambio.

Consejo

Según los objetivos de la RHCSA, no se debe


Tienes que trabajar con un disco de rescate en el examen.

Sin embargo, como administrador de Linux, debe esperar lo inesperado,

por lo que es una buena idea asegurarse de poder manejar

escenarios de solución de problemas comunes y menos comunes.

Solucionar problemas comunes

En un pequeño capítulo como este, no es posible considerar todos los posibles problemas

que uno podría encontrar al trabajar con Linux. Sin embargo, hay algunos problemas que

es más probable que


Machine Translated by Google

ocurren que otros. En esta sección aprenderá sobre algunos de los


problemas más comunes.

Reinstalar GRUB 2

El código del cargador de arranque no desaparece así, pero en ocasiones


puede suceder que el código de arranque de GRUB 2 se dañe. En ese
caso, debe saber cómo reinstalar GRUB 2. El enfoque exacto
depende de si su servidor todavía se encuentra en un estado de arranque.
Si es así, reinstalar GRUB 2 es bastante fácil. Simplemente escriba grub2­
install seguido del nombre del dispositivo en el que desea instalarlo. El
comando tiene muchas opciones diferentes para ajustar qué se instalará
exactamente, pero probablemente no las necesite porque, de forma
predeterminada, el comando instala todo lo que necesita para que su
sistema pueda iniciarse nuevamente.

Reinstalar GRUB 2 se vuelve un poco más complicado si su máquina no se


encuentra en un estado de arranque. Si eso sucede, primero debe iniciar un
sistema de rescate y restaurar el acceso a su servidor desde el sistema de
rescate. (Consulte el Ejercicio 18­2 para conocer el procedimiento exacto
sobre cómo hacerlo). Después de montar los sistemas de archivos
de su servidor en /mnt/sysimage y usar chroot /mnt/sysimage para
convertir la imagen del sistema montada en su imagen raíz, reinstalar es tan
fácil como descrito anteriormente: simplemente ejecute grub2­install para
instalar GRUB 2 en el dispositivo de instalación deseado. Entonces, si estás en un KVM virtua
Machine Translated by Google

máquina, ejecute grub2­install /dev/vda y, si está en un disco físico, ejecute grub2­install /

dev/sda.

Arreglando los Initramfs

En casos raros, initramfs podría dañarse. Si analiza el procedimiento de arranque

cuidadosamente, aprenderá que tiene un problema con initramfs porque nunca verá que

el sistema de archivos raíz se monte en el directorio raíz, ni verá que se inicie ninguna

unidad Systemd. Si sospecha que tiene un problema con initramfs, es fácil volver

a crearlo. Para recrearlo usando todas las configuraciones predeterminadas (lo cual está

bien en la mayoría de los casos), simplemente puede ejecutar el comando dracut ­­force.

(Sin ­­force, el comando

se negará a sobrescribir sus initramfs existentes).

Recuperarse de problemas del sistema de archivos

Si realiza una mala configuración en los montajes de su sistema de archivos, es

posible que el procedimiento de arranque termine con el mensaje "Proporcione

contraseña de root para mantenimiento". Este mensaje es, en particular,

generado por el comando fsck que intenta verificar la integridad de los sistemas

de archivos en /etc/fstab durante el arranque. Si fsck falla, se requiere intervención manual

que puede generar este mensaje durante el arranque. ¡Asegúrate de saber qué hacer

cuando esto te suceda!

Consejo
Machine Translated by Google

Asegúrate de dominar muy bien este tema. Los temas


relacionados con el sistema de archivos tienen un gran
peso en los objetivos de RHCSA y es probable que necesite
crear particiones y/o volúmenes lógicos y colocarlos en /etc/
fstab para su montaje automático. Eso también hace que sea
probable que algo salga mal, y si eso sucede durante
el examen, ¡será mejor que te asegures de saber cómo
solucionarlo!

Si se hace referencia a un dispositivo que no existe, o si hay algún error

en el UUID que se utiliza para montar el dispositivo, por ejemplo, Systemd


espera primero para ver si el dispositivo regresa por sí solo. Si eso no
sucede, aparece el mensaje "Proporcione contraseña de root para
mantenimiento" (consulte la Figura 18­5). Si eso sucede, primero debe
ingresar la contraseña de root. Luego puede escribir journalctl ­xb como se
sugiere para ver si los mensajes relevantes que brindan información
sobre lo que está mal se escriben en el registro de inicio del diario. Si el
problema está orientado al sistema de archivos, escriba mount ­o
remount,rw / para asegurarse de que el sistema de archivos raíz esté
montado en lectura/escritura y analice qué está mal en el archivo /etc/fstab y solucione
él.
Machine Translated by Google

Figura 18­5 Si ve esto, normalmente tiene un problema con /etc/fstab

Restablecer la contraseña raíz

Un escenario común para un administrador de Linux es que la raíz

la contraseña ha desaparecido. Si eso sucede, debes restablecerlo.


La única forma de hacerlo es iniciando en modo mínimo, que le
permite iniciar sesión sin ingresar una contraseña. Para hacerlo, siga
estos pasos:
Machine Translated by Google

1. Al iniciar el sistema, presione e cuando se muestre el menú de inicio de GRUB 2.

2. Ingrese init=/bin/bash como argumento de inicio en la línea que carga

el kernel y presione Ctrl­X para arrancar con esta opción.

3. Una vez abierto el shell raíz, escriba mount ­o remount,rw / para obtener

acceso de lectura/escritura al sistema de archivos raíz.

4. Ahora puede ingresar passwd y establecer la nueva contraseña para el


usuario raíz.

5. Porque en esta etapa de arranque tan temprana SELinux no ha sido

activado todavía, el tipo de contexto en /etc/shadow estará en mal estado. Escriba

touch /.autorelabel para crear el archivo autorelabel en el directorio raíz. Esto

asegurará que, al reiniciar, las etiquetas de seguridad de SELinux estén configuradas

correctamente.

6. Escriba exec /usr/lib/systemd/systemd para reemplazar /bin/bash

(que es el PID 1 actual) con Systemd. Esto iniciará su sistema de la manera normal.

Tenga en cuenta que no puede utilizar el comando de reinicio, ya que /bin/bash es

actualmente el PID 1 y el comando de reinicio requiere Systemd como PID 1.

7. Verifique que pueda iniciar sesión como usuario root después de reiniciar.

En el procedimiento anterior, cambió la contraseña de root desde un shell init=/bin/bash.

Salir de un entorno init=/bin/bash es un poco especial, ya que Systemd no está cargado

actualmente. Debido a esto, no puede simplemente usar el comando reboot para reiniciar,

ya que el reinicio invoca Systemd. Escribir salir tampoco es una opción, como lo haría
Machine Translated by Google

salir del PID 1 y dejar el kernel sin PID 1. Por lo tanto,


Tienes que iniciar Systemd manualmente.

En este entorno especial donde bash es PID 1, no puede simplemente


escribir /usr/lib/systemd/system para iniciar Systemd. Esto se debe a
que escribir un comando normalmente crea un proceso hijo del proceso
actual, un proceso conocido genéricamente como "bifurcación". En este
caso eso no funciona, ya que Systemd necesita ser PID 1. La solución que
se usó en el procedimiento anterior fue usar exec /usr/lib/
systemd/system. Mientras que fork creará un proceso hijo para el proceso
actual, exec reemplaza el proceso actual con el comando que se inicia de
esta manera. Esto permite que Systemd se inicie como PID 1, y eso
es exactamente lo que se necesita en este escenario.

Resumen

En este capítulo, aprendió cómo solucionar problemas del


procedimiento de inicio de Red Hat Enterprise Linux 9. En general,
aprendió qué sucede cuando se inicia un servidor y en qué puntos
específicos puede interferir para solucionar los problemas que salen mal.
También aprendiste qué hacer en algunos casos específicos. Asegúrese de
conocer bien estos procedimientos; es probable que los encuentre en el examen.

Tareas de preparación de exámenes


Machine Translated by Google

Como se menciona en la sección "Cómo utilizar este libro" en el

Introducción, tiene varias opciones para la preparación de exámenes: los laboratorios de final de

capítulo; las tablas de memoria en el Apéndice C; Capítulo 27, “Preparación Final”; y los exámenes

de práctica.

Revisar todos los temas clave

Revise los temas más importantes del capítulo, señalados con el ícono de Tema clave en el

margen de la página. La Tabla 18­3 enumera una referencia para estos temas clave

y el número de página en el que cada uno

es encontrado.

Tabla 18­3 Temas clave para el Capítulo 18

Tema clave
Descripción Página
Elemento

Lista Resumen de fases procesadas durante el arranque. 406

Tabla 18­2 Configuración de la fase de arranque y 407

Descripción general de la resolución de problemas


Machine Translated by Google

Tema clave
Descripción Página
Elemento

Lista Resumen de opciones de arranque de GRUB 2 409

relevantes para la resolución de problemas

Sección Restablecer la contraseña raíz 416

Tablas y listas completas de memoria

Imprima una copia del Apéndice C, “Tablas de memoria” (que se encuentra

en el sitio web complementario), o al menos la sección de este capítulo, y

complete las tablas y listas de memoria. El Apéndice D, “Clave de respuestas de

las tablas de memoria”, incluye tablas y listas completas para verificar su trabajo.

Definir términos clave

Defina los siguientes términos clave de este capítulo y verifique sus respuestas

en el glosario:

initramfs

COMIDA

dracut
Machine Translated by Google

tenedor

ejecutivo

Preguntas de revisión

Las preguntas que siguen están destinadas a ayudarle a evaluar su

conocimiento de conceptos y terminología y la amplitud de su conocimiento. Puede

encontrar las respuestas a estas preguntas en el Apéndice A.

. ¿Qué tecla debe presionar para ingresar al menú de inicio de GRUB?


modo editor?

. Durante el inicio, el procedimiento de inicio no se completa y el

En su lugar, el servidor solicita la contraseña de root. ¿Cuál será probablemente el


¿razón de esto?

. Quiere ingresar al modo de solución de problemas, pero no conoce la contraseña de

root. ¿Qué argumento le pasaría al kernel para ingresar a un modo que proporcione

acceso a la mayoría de las funciones de la máquina?

. Inicias tu servidor y no pasa nada. Simplemente ves un cursor parpadeante y eso es

todo. ¿Cuál es el primer paso para solucionar este problema?


¿asunto?
Machine Translated by Google

. Quiere saber qué unidades están disponibles en un área específica

entorno de resolución de problemas. ¿Qué comando usarías?

. Acaba de cambiar la contraseña de root desde init=/bin/bash

ambiente. ¿Qué debe hacer para iniciar su sistema de forma normal?

camino ahora?

. ¿Cómo se asegura que después de restablecer la contraseña de root todos los archivos

¿Se les proporciona la etiqueta de contexto SELinux correcta?

. Está en modo de solución de problemas y no puede escribir ningún archivo en

el sistema de archivos raíz. El sistema de archivos raíz se montó correctamente.

¿Qué puedes hacer para que se pueda volver a escribir?

. Ha aplicado cambios al cargador de arranque de GRUB 2 y desea guardarlos. ¿Cómo

haces eso?

. No conoce la contraseña de root en una máquina en la que

desea ingresar al modo de solución de problemas más mínimo. ¿Qué argumento

de arranque de GRUB 2 usarías?

Laboratorio de fin de capítulo

La práctica de laboratorio 18.1 le muestra cómo solucionar algunos problemas comunes.


Machine Translated by Google

Laboratorio 18.1

1. Reinicie su servidor y cambie la contraseña de root desde el

modo de resolución de problemas adecuado.

2. En /etc/fstab, cambie uno de los nombres de dispositivo para que en el siguiente

reiniciar el sistema de archivos no se puede montar. Reinicie y solucione el

problema que encuentre.

3. Utilice un disco de rescate para que su servidor funcione correctamente.


modo desde el disco de rescate.

4. Vuelva a crear initramfs.


Machine Translated by Google

Capítulo 19

Una introducción a la automatización con Bash Shell

secuencias de comandos

En este capítulo se tratan los siguientes temas:

Comprensión de los elementos principales de Shell Scripting

Uso de variables y entradas

Usando bucles condicionales

En este capítulo se tratan los siguientes objetivos del examen RHCSA:

Ejecutar código condicionalmente (uso de if, test, [], etc.)

Usar construcciones de bucle (para, etc.) para procesar entradas de archivos y líneas

de comandos.

Procesar entradas de script ($1, $2, etc.)

Procesar la salida de comandos de shell dentro de un script

Las secuencias de comandos de Shell son una ciencia en sí misma. Sin embargo, en

este capítulo no aprenderá todos los aspectos prácticos relacionados con esta ciencia.

En su lugar, aprenderá a aplicar elementos básicos de scripts de shell, lo que le

permitirá escribir un script de shell simple y analizar lo que sucede en un script de shell.
Machine Translated by Google

“¿Ya lo sé?” Prueba

El cuestionario “¿Ya lo sé?” El cuestionario le permite evaluar si debe leer este capítulo

completo detenidamente o pasar a la sección "Tareas de preparación para el

examen". Si tiene dudas sobre sus respuestas a estas preguntas o sobre su propia

evaluación de su conocimiento de los temas, lea el capítulo completo. La Tabla

19­1 enumera los títulos principales de este capítulo y sus correspondientes “¿Ya lo

sé?” preguntas del cuestionario. Puede encontrar las respuestas en el Apéndice A,

“Respuestas a la pregunta '¿Ya lo sé?' Cuestionarios y preguntas de repaso”.

Tabla 19­1 “¿Ya lo sé?” Mapeo de sección a pregunta

Sección de Temas de Fundación Preguntas

Comprensión de los elementos principales 1 y 2 de los scripts de Shell

Uso de variables y entradas 3–5

Usando bucles condicionales 6­10

. ¿Con qué línea debería comenzar cada script de shell Bash?

1. /bin/bash
Machine Translated by Google

2. #!/bin/bash

3. !#/bin/bash

4. !/bin/bash

. ¿Cuál es el propósito del comando de salida 0 que se puede usar en el

¿Fin de un guión?

1. Informa al shell principal que el script se ejecutó sin ningún

problemas.

2. Garantiza que el script se pueda detener correctamente.

3. Sólo es necesario si se ha utilizado un bucle for para cerrar el bucle for.

estructura de bucle.

4. Se utiliza para terminar una estructura condicional en el script.

. ¿Cómo se detiene un script para permitir que un usuario proporcione información?

1. pausa
2. romper

3. leer

4. detener

. ¿Qué línea almacena el valor del primer argumento que se proporcionó al

iniciar un script en la variable NOMBRE?

1. NOMBRE = $1

2. $1 = NOMBRE

3. NOMBRE = $@
Machine Translated by Google

4. NOMBRE=$1

. ¿Cuál es la mejor manera de distinguir entre diferentes argumentos?

que se han pasado a un script de shell?

1.$?

2.$#

3.$*

4.$@

. ¿Qué se utiliza para cerrar un bucle if?

1. fin

2. salir

3. detener

4. ser

. ¿Qué falta en el siguiente guión en la posición de los puntos?

Haga clic aquí para ver la imagen del código

si [­f $1] entonces

echo "$1 es un archivo"


….. [­d $1] entonces

echo "$1 es un directorio"


demás
Machine Translated by Google

echo "No sé qué es \$1"


ser

1. más

2. si

3. alif

4. o

. ¿Qué falta en el siguiente guión en la posición de los puntos?

Haga clic aquí para ver la imagen del código

for (( contador=100; contador>1; contador­­ )); .....


eco $ contador
hecho
salir 0

1 en

2. hacer

3. correr

4. empezar

. ¿Qué comando se utiliza para enviar un mensaje con el asunto?

¿“error” al usuario raíz si algo no funcionó en un script?

1. raíz del error de correo

2. raíz del error de correo ­s


Machine Translated by Google

3. raíz de error de correo.


4. raíz de error de correo ­s < .

. En una declaración de caso, es una buena idea incluir una línea que se

aplique a todas las demás situaciones. ¿Cuál de los siguientes haría eso?

1. *)
2. *
3. más
4. o

Temas de la Fundación

Comprensión de los elementos principales de Shell Scripting

Básicamente, un script de shell es una lista de comandos que se ejecuta


secuencialmente, con alguna lógica de script opcional que permite que el
código se ejecute solo bajo condiciones específicas. Para comprender
los scripts de shell complejos, comencemos mirando un script muy básico,
que se muestra en el Ejemplo 19­1.

Ejemplo 19­1 Guión básico

Haga clic aquí para ver la imagen del código


Machine Translated by Google

#!/bin/bash
#
# Este es un script que saluda al mundo # Uso: ./hello

claro
eco hola mundo

salir 0

Este script básico contiene algunos elementos que deben usarse en todos los
scripts. Para empezar, está el asunto. Esta es la línea #!/bin/bash.
Cuando se inicia un script desde un entorno de shell principal , se abre
un subshell. En esta subcapa se ejecutan diferentes comandos. Estos
comandos se pueden interpretar de cualquier manera y, para dejar claro cómo
deben interpretarse, se utiliza el shebang.
En este caso, el shebang deja claro que el script es un script de shell Bash.
También se pueden especificar otros shells. Por ejemplo, si su script contiene
código Perl, el shebang debería ser #!/usr/bin/perl.

Es una buena práctica comenzar un guión con un tinglado; si se omite, el


código del script también será ejecutado por el shell que se utiliza en el
shell principal. Debido a que sus scripts también pueden ser ejecutados, por
ejemplo, por usuarios de ksh, es importante usar un shebang para llamar
a /bin/bash como subshell para evitar confusiones.
Machine Translated by Google

Justo después del asunto, hay una parte que explica de qué trata el guión.

Es una buena idea incluir en cada guión algunas líneas de comentarios. En un

guión breve, suele ser obvio lo que hace el guión. Si el guión se hace más largo y

a medida que más personas se involucran en escribirlo y mantenerlo, a menudo

quedará menos claro qué pretendía hacer el escritor. Para evitar esa

situación, asegúrese de incluir líneas de comentarios que comiencen con #.

Inclúyalos no sólo al comienzo del guión sino también al comienzo de cada

subsección del guión.

Los comentarios seguramente serán útiles si lees tu guión unos meses

después y no recuerdas exactamente lo que intentabas hacer mientras lo creabas.

También puedes utilizar comentarios dentro de líneas. No importa en qué

posición se use #, todo desde # hasta


el final de la línea es el texto del comentario.

El siguiente es el cuerpo del guión. En el ejemplo 19­1, el cuerpo es simplemente

un script simple que contiene algunos comandos que se ejecutan

secuencialmente. El cuerpo puede crecer a medida que se desarrolla el guión.

Al final del script, incluí la declaración exit 0. Una declaración de salida le dice

al shell principal si el script fue exitoso.

Un 0 significa que fue exitoso y cualquier otra cosa significa que el script encontró

un problema. El estado de salida del último comando del script es el estado

de salida del propio script, a menos que el comando de salida se utilice al final

del script. Pero es bueno saber que puedes trabajar con exit para informar al shell

principal cómo
Machine Translated by Google

todo fue. Para solicitar el estado de salida del último comando, desde el
shell principal, utilice el comando echo $? dominio. Esta solicitud puede ser
útil para determinar si algo no funcionó y por qué.

Después de escribir un script, asegúrese de que se pueda ejecutar. La forma


más común de hacer esto es aplicarle el permiso de ejecución. Entonces, si el
nombre del script es hola, use chmod +x hola para hacerlo ejecutable. El
script también se puede ejecutar como argumento del
comando bash, por ejemplo. Usa bash hello para ejecutar hola

guion. Si se inicia como argumento del comando bash, el script


no es necesario que sea ejecutable.

Básicamente, puede almacenar el script en cualquier lugar que desee, pero si


va a almacenarlo en una ubicación que no está incluida en $PATH, debe
ejecutarlo con un ./ delante del nombre del script. Por lo tanto,
simplemente escribir hola no es suficiente para ejecutar el script; escriba ./hello para ejecutar
Tenga en cuenta que ./ también es necesario si desea ejecutar el script desde
el directorio actual, porque en Linux el directorio actual no está incluido en
la variable $PATH. O colóquelo en un directorio estándar que esté incluido
en la variable $PATH, como /usr/local/bin. En

En el ejercicio 19­1, aplica estas habilidades y escribe un script de shell simple.

Ejercicio 19­1 Escribir un script de Shell simple

1. Usa vim para crear un script con el nombre hola en tu casa


directorio.
Machine Translated by Google

2. Proporcione a este script el contenido que ve en el Ejemplo 19­1 y


cierralo.

3. Utilice ./hello para intentar ejecutarlo. Recibirás un "permiso denegado"

mensaje de error.

4. Escriba chmod +x hola e intente ejecutarlo nuevamente. Verás eso


ahora funciona.

Uso de variables y entradas

Los scripts de Linux Bash son mucho más que una simple lista de comandos

ejecutados secuencialmente. Una de las cosas buenas de los scripts es que

pueden trabajar con variables y entradas para hacer que el script sea flexible.

En esta sección, aprenderá a trabajar con variables y entradas.

Usando parámetros posicionales

Al iniciar un script, puede utilizar argumentos. Un argumento es cualquier

cosa que ponga detrás del comando del script al iniciarlo. Se pueden utilizar

argumentos para hacer que un script sea más flexible. Tomemos, por ejemplo, el

comando useradd lisa. En este ejemplo, el comando es useradd y el

argumento lisa especifica lo que se necesita


para acabar. En este caso, un usuario con el nombre lisa tiene que ser

creado. En este ejemplo, lisa es el argumento del comando useradd. En un

script, el primer argumento se denomina $1, el segundo argumento se

denomina $2, y así sucesivamente. El guión en


Machine Translated by Google

El ejemplo 19­2 muestra cómo se puede utilizar un argumento. ¡Continúe y


pruébelo utilizando los argumentos que desee utilizar!

Ejemplo 19­2 Guión que utiliza argumentos

Haga clic aquí para ver la imagen del código

#!/bin/bash
# ejecuta este script con algunos argumentos echo El
primer argumento es $1 echo El segundo
argumento es $2 echo el tercer argumento
es $3

Si intentó ejecutar el código de muestra del Ejemplo 19­2, es posible que


haya notado que su contenido no es perfecto. Si usa tres argumentos
mientras usa el script, funcionará perfectamente. Si usa sólo dos argumentos,
el tercer eco se imprimirá sin valor para $3.
Si usa cuatro argumentos, el cuarto valor (que se almacenaría en $4)
nunca se usará. Por lo tanto, si desea utilizar argumentos, será mejor que
utilice un enfoque más flexible. El ejemplo 19­3 muestra un script que utiliza
un enfoque más flexible.

Ejemplo 19­3 Guión que utiliza argumentos de forma flexible

Haga clic aquí para ver la imagen del código


Machine Translated by Google

#!/bin/bash
# ejecuta este script con algunos argumentos. echo, has
ingresado $# argumentos para i en $@

hacer

echo $i
hecho
salir 0

En el ejemplo 19­3, se incluyen dos elementos nuevos que se relacionan con los argumentos.

introducido:

$# es un contador que muestra cuántos argumentos se utilizaron al iniciar

el script. $@ se refiere a todos

los argumentos que se utilizaron al iniciar el script.

Para evaluar los argumentos que se utilizaron al iniciar este script, puede

utilizar un bucle condicional con for. En los bucles condicionales con for, los

comandos se ejecutan siempre que la condición sea verdadera. En este script, la

condición es para i en $@, que significa "para cada argumento". Cada vez que

el script pasa por el bucle, se asigna un valor de la variable $@ a la variable

$i. Entonces, mientras haya argumentos, se ejecuta el cuerpo del script.

El cuerpo de un bucle for siempre comienza con do y se cierra con done, y


entre estos dos, los comandos que deben ser
Machine Translated by Google

ejecutados se enumeran. Entonces, el script del Ejemplo 19­3 usará eco para mostrar

el valor de cada argumento y se detendrá cuando no haya más argumentos

disponibles. En el ejercicio 19­2, puede probar esto usted mismo escribiendo

un script que funcione con parámetros posicionales.

Ejercicio 19­2 Trabajando con parámetros posicionales

1. Abra un editor, cree un script llamado ex192a y copie el contenido del

Ejemplo 19­2 en este script.

2. Guarde el script y hágalo ejecutable.


3. Ejecute el comando ./ex192a abc. Verás que hay tres líneas.
repitió.

4. Ejecute el comando ./ex192a abcdef. Verás que tres


Las líneas todavía se repiten.

5. Abra un editor para crear el script ex192 y copie el contenido.

del Ejemplo 19­3 en este script.

6. Guarde el script y hágalo ejecutable.


7. Ejecute el comando ./ex192 abcde. Verás que cinco líneas son
repitió.

8. Ejecute el comando ./ex192 sin argumentos. Verás eso

el comando no repite ningún argumento, pero sí indica que se ingresan cero

argumentos.
Machine Translated by Google

Trabajar con variables

Una variable es una etiqueta que se utiliza para hacer referencia a una ubicación

específica en la memoria que contiene un valor específico. Las variables se

pueden definir estáticamente usando NOMBRE = valor o se pueden definir de

forma dinámica. Hay dos soluciones para definir una variable dinámicamente:

Utilice leer en el script para solicitar información al usuario que ejecuta el

script.
Utilice la sustitución de comandos para utilizar el resultado de un comando y

asignar ese resultado a una variable. Por ejemplo, el comando fecha +%d­%m­%y

muestra la fecha actual en formato día­mes­año. Para asignar esa fecha

a una variable en un script, puede usar el comando HOY=$(fecha +%d­%m­

%y).

En la sustitución de comandos, sólo tienes que encerrar entre paréntesis el comando

cuyo resultado deseas utilizar, con un signo de dólar precediendo al paréntesis

de apertura. Como alternativa a esta notación, puede utilizar comillas

inversas. Entonces el comando TODAY=`date +%d­%m­%y` haría exactamente lo

mismo.
Machine Translated by Google

En la sección anterior sobre parámetros posicionales, aprendió cómo proporcionar

argumentos al iniciar un script. En algunos casos, un enfoque más eficaz es pedir información

cuando descubres que falta algo esencial. El script del Ejemplo 19­4 muestra cómo hacer

esto usando read.

Ejemplo 19­4 Script que utiliza el comando read

Haga clic aquí para ver la imagen del código

#!/bin/bash

si [­z $1]; luego haga eco,


ingrese un nombre

leer NOMBRE
demás

NOMBRE=$1

ser

echo has ingresado el texto $NAME salida 0

En el ejemplo 19­4, se utiliza una sentencia if... then... else... fi para comprobar si el

argumento $1 existe. Esto se hace mediante el comando de prueba, que se puede

escribir de dos maneras: prueba o [...]. En el ejemplo 19­4, la línea if [ ­z $1 ] se ejecuta para

ver si la prueba

­z $1 es verdadero. La prueba ­z comprueba si $1 no existe. Fijado

de lo contrario, la línea if [ ­z $1 ] comprueba si $1 está vacío; si es así,


Machine Translated by Google

significa que no se proporcionó ningún argumento al iniciar este script. Si

este es el caso, los comandos después de la declaración entonces son

ejecutado. Tenga en cuenta que cuando escribe el comando de prueba con corchetes,

es esencial incluir un espacio después del corchete de apertura y un espacio

antes del corchete de cierre; sin estos espacios, el comando no funcionará.

Observe que la instrucción then sigue inmediatamente al comando de prueba.

Esto es posible porque se utiliza un punto y coma (;). Un punto y coma es un

separador de comandos y puede reemplazar una nueva línea en un script. En la

declaración then, se ejecutan dos comandos: un comando de eco que muestra

un mensaje en pantalla y un comando de lectura. El comando de lectura

detiene el script para que la entrada del usuario pueda procesarse y almacenarse

en la variable NOMBRE. Entonces, la línea leída NOMBRE coloca todas las

entradas del usuario en la variable NOMBRE, que se usará más adelante en el

script.

En el ejemplo 19­4, la siguiente parte se introduce con la declaración else.


Los comandos después de la instrucción else se ejecutan en todos los demás

casos, que en este caso significa "si se proporcionó un argumento". Si

ese es el caso, se define la variable NOMBRE y la corriente

se le asigna el valor de $1.

Observe cómo se define la variable: directamente después del nombre de la

variable hay un signo =, seguido de $1. Tenga en cuenta que nunca debe utilizar

espacios al definir variables.


Machine Translated by Google

Luego, el ciclo if se cierra con una declaración fi. Una vez que se ha completado el

ciclo if, sabrá con seguridad que la variable NOMBRE está definida y tiene un

valor. La última línea del script lee el valor de la variable NOMBRE y muestra este

valor en STDOUT mediante el comando echo. Observe que para solicitar el valor

actual de una variable, el script hace referencia al nombre de la variable,

precedido por un signo $.

En el ejercicio 19­3, puedes practicar cómo trabajar con entradas.

Ejercicio 19­3 Trabajando con entradas

1. Abra un editor y cree un script con el nombre ex193. Ingresar

el contenido del Ejemplo 19­4 en este script.

2. Escriba el script en el disco y use chmod +x ex193 para hacerlo.


ejecutable.

3. Ejecute el script usando ./ex193 y sin más argumentos. usted

vea que solicita entrada.

4. Ejecute el script usando hola como argumento. Se hará eco de "tú


He ingresado el texto hola” en STDOUT.

Usando bucles condicionales

Como ya has visto, puedes utilizar bucles condicionales en un script. Estos

bucles condicionales se ejecutan sólo si un cierto


Machine Translated by Google

la condición es verdadera. En Bash, los siguientes bucles condicionales suelen ser

usado:

si... entonces... más: Se utiliza para ejecutar código si se cumple una condición específica.

verdadero

for: Se usa para ejecutar comandos para un rango de valores mientras: Se

usa para ejecutar código siempre que se cumpla una condición específica

verdadero

hasta: Se utiliza para ejecutar código hasta que una condición específica sea

verdadera. Caso: Se utiliza para evaluar valores específicos, donde de antemano se

espera un número limitado de valores.

Trabajando con si... entonces... más

…entonces…de lo contrario la construcción es común para evaluar El si específico

condiciones. Ya viste un ejemplo con él en el Ejemplo 19­4.

Este bucle condicional se utiliza a menudo junto con el comando de prueba, que

vio en acción anteriormente para comprobar si existe un archivo. Este comando también le

permite hacer muchas otras cosas, como comparar archivos, comparar números enteros y

mucho más.

Consejo
Machine Translated by Google

Mire la página de manual del comando de prueba.

La construcción básica con if es si... entonces... fi. Esta construcción

evalúa una sola condición, como en el siguiente ejemplo:

Haga clic aquí para ver la imagen del código

si [ ­z $1 ] entonces

eco no se proporciona ningún valor


ser

En el ejemplo 19­4 vio cómo se pueden evaluar dos condiciones incluyendo else en la

declaración. El ejemplo 19­5 muestra cómo se pueden evaluar múltiples condiciones

contratando else con if para convertirse en elif. Esta construcción es útil si es necesario

comprobar muchos valores diferentes. En el ejemplo 19­5, tenga en cuenta que se

utilizan varios comandos de prueba.


usado también.

Ejemplo 19­5 Script con si... entonces... si no

Haga clic aquí para ver la imagen del código

#!/bin/bash

# ejecuta este script con un argumento # el objetivo es


averiguar si el argumento es un archivo
Machine Translated by Google

si [­f $1] entonces

echo "$1 es un archivo"

elif [ ­d $1 ] entonces

echo "$1 es un directorio"


demás

echo "No sé qué es \$1"


ser
salir 0

Observe también el uso de la barra invertida (\) en el ejemplo 19­5. Este

carácter informa al shell que no debe interpretar el siguiente carácter, lo que

se conoce como escapar del carácter.

Obviamente, si desea que se imprima el valor de $1 en lugar de la cadena $1,

deberá eliminar el archivo \.

Usando || y &&

En lugar de escribir declaraciones


completas si... entonces, puede utilizar los

operadores lógicos || y &&. || es un OR lógico y ejecutará la segunda parte de la

declaración sólo si la primera parte no es verdadera; && es el AND lógico y ejecutará

la segunda parte de la declaración sólo si la primera parte es verdadera.

Considere estos dos uno­


revestimientos:

Haga clic aquí para ver la imagen del código


Machine Translated by Google

[ ­z $1 ] && echo no se proporciona ningún argumento ping ­c


1 10.0.0.20 2>/dev/null || El nodo de eco no es

En el primer ejemplo, se realiza una prueba (usando la sintaxis del comando de prueba

alternativa) para ver si $1 está vacío. Si esa prueba es verdadera (lo que

básicamente significa que el comando de prueba sale con la salida

código 0), se ejecuta el segundo comando.

En el segundo ejemplo, se utiliza un comando ping para comprobar la

disponibilidad de un host. El OR lógico se utiliza en este ejemplo para repetir el

texto "el nodo no está disponible" en caso de que el comando ping no haya tenido

éxito. A menudo encontrará que en lugar de declaraciones if... then completamente

escritas, las && y || Se utilizan construcciones. En el Ejercicio 19­4 puedes

practicar algunas habilidades si... entonces... si no, usando


ya sea si... entonces... si no o && y ||.

Ejercicio 19­4 Usando if... entonces... else

En este ejercicio, trabajará en un script que verifica si el argumento es un archivo, un

directorio o ninguno de los dos.

1. Inicie un editor y cree un script usando filechk como nombre.

2. Copie el contenido del Ejemplo 19­5 a este script.

3. Ejecute un par de pruebas con él, como


Machine Translated by Google

./filechk /etc/hosts
./filechk /usr
./filechk archivo­no­existente

Solicitar

El condicional for proporciona una excelente solución para procesar rangos


de datos. En el Ejemplo 19­6, puede ver el primer script con for, donde se
define y procesa un rango siempre que haya valores sin procesar en ese
rango.

Ejemplo 19­6 Script con for

Haga clic aquí para ver la imagen del código

#!/bin/bash
#
para (( CONTADOR=100; CONTADOR>1; CONTADOR­­ )); hacer eco
$CONTADOR
hecho
salir 0

Una declaración condicional for siempre comienza con for, seguida de


la condición que debe verificarse. Luego viene hacer, seguido de los
comandos que deben ejecutarse si
Machine Translated by Google

la condición es verdadera y la declaración condicional se cierra con


hecho.

En el ejemplo 19­6, puede ver que la condición es un rango de


números asignados a la variable CONTADOR. La variable primero se
inicializa con un valor de 100, y siempre que el valor sea mayor que 1, en
cada iteración se resta 1. Mientras la condición sea verdadera, se muestra
el valor de la variable $COUNTER, usando el
comandos de eco.

El ejemplo 19­7 muestra una de mis frases favoritas con for. El rango se
define esta vez como una serie de números, comenzando con 100 y
subiendo hasta 104.

Ejemplo 19­7 One­Liner con for

Haga clic aquí para ver la imagen del código

para i en {100..104}; hacer ping ­c 1 192.168.4.$i >/d


192.168.4.$i está arriba; hecho

Observe cómo se define el rango: especifica el primer número, seguido


de dos puntos y cierra con el último número del rango.
Con for i in, cada uno de estos números se asigna a la variable i.
Machine Translated by Google

Para cada uno de estos números, se ejecuta un comando ping, donde la


opción ­c 1 asegura que solo se envíe una solicitud de ping.

En este comando ping, no es el resultado lo que cuenta, por lo que el


resultado se redirige al dispositivo /dev/null. Según el estado de salida del
comando ping, se ejecuta la parte detrás de &&. Entonces, si se pudo
contactar al anfitrión, se repite una línea.

indicando que está arriba.

Entendiendo mientras y hasta

Mientras que la declaración for que acaba de leer es útil para trabajar con
rangos de elementos, la declaración while es útil si desea monitorear algo como
la disponibilidad de un proceso. En el ejemplo 19­8 puede ver cómo se
utiliza while para monitorear la actividad del proceso.

Ejemplo 19­8 Monitoreo de procesos con while

Haga clic aquí para ver la imagen del código

#!/bin/bash
#
# uso: monitorear <nombre de proceso> mientras ps

aux | grep $1 | grep ­v grep > ~/output.t hacer

dormir 5
Machine Translated by Google

hecho

claro

eco su proceso se ha detenido el registrador


$1 ya no está presente

El guión del ejemplo 19­8 consta de dos partes. Primero, está el bucle while. En

segundo lugar, hay todo lo que debe ejecutarse cuando el ciclo while ya no se

evalúa como verdadero. El núcleo del bucle while es el comando ps, que se

registra para detectar la aparición de $1. Observe el uso de grep ­v

grep, que excluye del resultado las líneas que contienen el comando grep. Tenga

en cuenta que el comando ps incluirá todos los comandos en ejecución, incluido el

comando grep al que se canaliza la salida del comando ps. Esto puede

resultar en una coincidencia falsa positiva. Los resultados del comando ps aux se

redirigen al archivo ~/output.txt. Eso hace posible leer los resultados más tarde

desde ~/output.txt si es necesario, pero no se muestran de forma predeterminada.

Los comandos que deben ejecutarse si la declaración se evalúa

a verdadero seguir después de las declaraciones while. En este caso, el

El comando es dormir 5, que básicamente pausará el script durante 5 segundos.

Mientras el comando while se evalúe como verdadero, seguirá ejecutándose. Si ya

no lo hace (lo que en este caso significa que el proceso ya no está disponible), se

detiene y se pueden ejecutar los comandos que siguen al ciclo while.


Machine Translated by Google

La contraparte de while es hasta, que abre una iteración que dura hasta que la

condición sea verdadera. En el ejemplo 19­9, hasta se utiliza para filtrar la salida

del comando de usuarios para la aparición de $1, que sería un nombre de usuario.

Hasta que este comando sea verdadero, el

la iteración continúa. Cuando el nombre de usuario se encuentra en la salida de

usuarios, la iteración se cierra y los comandos después del bucle hasta


son ejecutados.

Ejemplo 19­9 Monitoreo del inicio de sesión del usuario con hasta

Haga clic aquí para ver la imagen del código

#!/bin/bash
#

hasta los usuarios | grep $1 > /dev/null hacer

echo $1 aún no ha iniciado sesión dormir 5

hecho

echo $1 acaba de iniciar sesión

Entendiendo el caso

El último de los ciclos de iteración importantes es el caso. La declaración

de caso se utiliza para evaluar una serie de valores esperados. La declaración de

caso en particular es importante en los scripts de inicio de Linux.


Machine Translated by Google

que se utilizaron para iniciar servicios en versiones anteriores de RHEL. En una

declaración de caso, usted define cada argumento específico que espera,

seguido del comando que debe ejecutarse si se usó ese argumento.

En el Ejemplo 19­10, puede ver el modelo de la declaración de caso que se usó en los

scripts de servicio en versiones anteriores de RHEL para iniciar casi cualquier servicio.

Esta declaración funciona con $1, que es el nombre de un script de inicio. Después

del nombre del script, el usuario puede escribir iniciar, detener, reiniciar, etc.

Ejemplo 19­10 Evaluación de casos específicos con case

Haga clic aquí para ver la imagen del código

caso "$1" en

comenzar)

comenzar;;
detener)
rm ­f $archivo de bloqueo

detener;;
Reanudar)
Reanudar;;
recargar)
recargar;;
estado)
estado
Machine Translated by Google

;;
*)
echo "Uso: $0 (inicio|parada|reinicio|rel
;;
esac

El relato del caso tiene algunas particularidades. Para empezar, la sintaxis


genérica es elemento de caso para evaluar. Esta sintaxis va seguida de
una lista de todos los valores posibles que deben evaluarse. Cada
elemento se cierra con un paréntesis de cierre. A esto le sigue una
lista de comandos que deben ejecutarse si se utilizó un argumento específico.
usado. La lista de comandos se cierra con doble punto y coma. Este

;; se puede usar directamente después del último comando y se puede usar en

una línea separada. Observe también que el *) se refiere a todas las demás

opciones no especificadas anteriormente. Es una declaración “general”. La

declaración del caso se cierra con una declaración esac.

Observe que las evaluaciones en caso se realizan en orden. Cuando


Se realiza la primera coincidencia, la declaración del caso no se evaluará.

algo más. Dentro de la evaluación, se pueden utilizar patrones tipo comodín. Esto se

muestra en la evaluación *), que coincide con todo.

Pero también puedes usar evaluaciones como start|Start|START) para


coincidir con el uso de un caso diferente.
Machine Translated by Google

Depuración de scripts de Bash Shell

Cuando un script no hace lo que usted espera que haga, es útil depurarlo. Intente

iniciarlo como argumento del comando bash ­x. Este comando le muestra línea

por línea lo que el script intenta hacer y también le muestra errores específicos si no

funciona.

El ejemplo 19­11 muestra un script que utiliza bash ­x donde inmediatamente

queda claro que el comando grep no sabe lo que se espera que haga; La razón es

que falta un argumento para


trabajar en.

Ejemplo 19­11 Uso de bash ­x para depurar scripts

Haga clic aquí para ver la imagen del código

[root@servidor1 ~]# bash ­x 319.sh


+ grep

Uso: grep [OPCIÓN]... PATRÓN [ARCHIVO]...

Pruebe 'grep ­­help' para obtener más información.


+ usuarios

+ eco no ha iniciado sesión todavía no ha


iniciado sesión todavía + dormir
5
Machine Translated by Google

Resumen

En este capítulo aprendiste cómo escribir scripts de shell. También trabajó


con algunos ejemplos y ahora está familiarizado con algunos de los elementos
básicos necesarios para crear un guión exitoso.

Tareas de preparación de exámenes

Como se menciona en la sección "Cómo utilizar este libro" en el

Introducción, tiene varias opciones para la preparación de exámenes: los


laboratorios de final de capítulo; las tablas de memoria en el Apéndice C;
Capítulo 27, “Preparación Final”; y los exámenes de práctica.

Revisar todos los temas clave

Revise los temas más importantes del capítulo, señalados con el ícono de
Tema clave en el margen de la página. La Tabla 19­2 enumera una
referencia para estos temas clave y el número de página en el que cada
es encontrado.
Machine Translated by Google

Tabla 19­2 Temas clave para el Capítulo 19

Descripción del elemento clave del tema Página

Párrafo Definición de variable 427

Lista Definición dinámica de variables 427

Lista Descripción general de los bucles condicionales 429

Definir términos clave

Defina los siguientes términos clave de este capítulo y verifique su


respuestas en el glosario:

el asunto

shell padre

subcapa

variable

bucle condicional

O
Machine Translated by Google

iteración

Preguntas de revisión

Las preguntas que siguen están destinadas a ayudarle a evaluar su

conocimiento de conceptos y terminología y la amplitud de su conocimiento. Puede

encontrar las respuestas a estas preguntas en el Apéndice A.

. ¿Cuál es el efecto si un guión no comienza con un tinglado?

. ¿Cómo se puede comprobar si una variable VAR no tiene valor?

. ¿Qué usarías en un script para contar el número de argumentos?


que se han usado?

. ¿Qué usarías para referirte a todos los argumentos que se han utilizado?

al iniciar el guión?

. ¿Cómo se procesa la entrada del usuario en un script?

. ¿Cuál es la forma más sencilla de comprobar si un archivo existe y ejecutarlo?


¿El comando echo “el archivo no existe” si no es así?

. ¿Qué prueba realizarías para saber si un elemento es un archivo o un

¿directorio?
Machine Translated by Google

. ¿Qué construcción usarías para evaluar una variedad de elementos?

. ¿Cómo se cierra una declaración elif en un script?

. En una declaración de caso, usted evalúa una variedad de elementos.

Para cada uno de estos elementos, ejecuta uno o más comandos. ¿Qué
necesitas usar después del último comando para cerrar el elemento específico?

Laboratorio de fin de capítulo

En esta práctica de laboratorio de final de capítulo, aplicará sus habilidades de programación para escribir dos

secuencias de comandos simples.

Laboratorio 19.1

1. Escribe un guión que funcione con argumentos. Si se utiliza el argumento


uno, el script debería crear un archivo llamado /tmp/one. Si se utiliza el
argumento dos, el script debería enviar un mensaje que contenga
el asunto "dos" al usuario root.
2. Escribe un guión de cuenta regresiva. El script debe usar un argumento.
(y no más de uno). Este argumento especifica el número de
Minutos para la cuenta regresiva. Debería empezar con ese número de

minutos y cuente regresiva segundo a segundo, escribiendo el texto


"quedan nn segundos" en cada iteración. usa el sueño
para definir los segundos. Cuando ya no queda más tiempo, el

El script debería hacer eco de "se acabó el tiempo" y salir.


Machine Translated by Google

Parte IV

Gestión de servicios de red


Machine Translated by Google

Capítulo 20

Configurando SSH

En este capítulo se tratan los siguientes temas:

Fortalecer el servidor SSH

Uso de otras opciones sshd útiles

Configurar la autenticación basada en claves con frases de contraseña

En este capítulo se cubre el siguiente objetivo del examen RHCSA:

Configurar la autenticación basada en claves para SSH

Secure Shell (SSH) se encuentra entre las utilidades más importantes que utilizan los

administradores de sistemas. En el Capítulo 5, “Conexión a Red Hat Enterprise Linux

9”, aprendió cómo usar SSH para conectarse a un servidor mediante un

autenticación basada en contraseña o clave. En este capítulo, aprenderá sobre

algunas de las opciones de configuración más avanzadas.

“¿Ya lo sé?” Prueba

El cuestionario “¿Ya lo sé?” El cuestionario le permite evaluar si

debe leer este capítulo completo detenidamente o pasar a la sección "Tareas de

preparación para el examen". Si tiene dudas sobre sus respuestas a estas preguntas o

sobre su propia evaluación de su conocimiento de los temas, lea el capítulo

completo. La Tabla 20­1 enumera los títulos principales de este capítulo y sus

correspondientes “¿Ya lo sé?” prueba


Machine Translated by Google

preguntas. Puede encontrar las respuestas en el Apéndice A, “Respuestas a la pregunta

'¿Ya lo sé?' Cuestionarios y preguntas de repaso”.

Tabla 20­1 “¿Ya lo sé?” Mapeo de sección a pregunta

Sección de Temas de Fundación Preguntas

Fortalecer el servidor SSH 1–5

Uso de otras opciones sshd útiles 6–8, 10

Configuración de la autenticación basada en claves con 9

Frases de contraseña

. ¿Cuál de las siguientes no es una estrategia común para prevenir la agresión brutal?

¿Forzar ataques contra servidores SSH?

1. Deshabilitar el reenvío X11 2. Tener

escucha SSH en un puerto no predeterminado 3. Deshabilitar

el inicio de sesión con contraseña 4.

Permitir que solo usuarios específicos inicien sesión

. ¿Cuál de las siguientes opciones limita con éxito el acceso al servidor SSH a los usuarios?

¿Bob y Lisa solo?

1. Limitar usuarios bob, lisa


2. Usuarios permitidos bob lisa
Machine Translated by Google

3. Permitir usuarios bob lisa

4. Usuarios permitidos bob, lisa

. ¿Cuál de los siguientes comandos se debe utilizar para proporcionar

¿Puerto no predeterminado 2022 con la etiqueta SELinux correcta?

1. puertos semanage ­m ­t ssh_port_t ­p 2022 2. puerto

semanage ­m ­t ssh_port_t ­p tcp 2022 3. puertos semanage

­a ­t ssh_port_t ­p tcp 2022 4. puerto semanage ­a ­t ssh_port_t

­p tcp 2022

. ¿Cuál de las siguientes descripciones es correcta para MaxAuthTries?

¿opción?

1. Después de alcanzar el número de intentos especificado aquí, la cuenta


quedará bloqueado.

2. Esta opción especifica el número máximo de intentos de inicio de sesión. Después de

alcanzar la mitad del número especificado aquí, se registran fallas adicionales.

3. Después de alcanzar el número de intentos especificado aquí, se bloquea la

dirección IP de donde provienen los intentos de inicio de sesión.

4. El número especificado aquí indica el número máximo de intentos de inicio de

sesión por minuto.

. ¿Qué archivo de registro analiza para obtener información sobre intentos fallidos de

inicio de sesión SSH?

1. /var/log/auth
Machine Translated by Google

2. /var/log/autenticación 3. /var/log/

messages 4. /var/log/secure

. El inicio de sesión SSH en su entorno de prueba lleva mucho tiempo. De los cuales

¿Las siguientes opciones podrían ser probablemente las responsables de los problemas de

tiempo de conexión?

1. UsarIniciar sesión

2. Autenticación GSSAPI

3. Utilice DNS

4. TCPMantener vivo

. ¿Cuál de las siguientes opciones no se utiliza para mantener las conexiones SSH?
¿vivo?

1. TCPMantener vivo
2. IntervaloClientAlive

3. ClienteAliveCountMax

4. Utilice DNS

. ¿Qué archivo en una computadora cliente SSH se debe agregar para configurar el

¿ServerKeepAliveInterval para un usuario individual?

1. ~/.ssh/ssh_config 2.

~/.ssh/config 3. /etc/

ssh/config 4. /etc/ssh/

ssh_config
Machine Translated by Google

. Suponiendo que se tiene un par de claves pública/privada protegida por contraseña

Ya se ha creado, ¿cómo configura su sesión para que tenga que ingresar la frase de

contraseña solo una vez?

1. Copie la frase de contraseña en el archivo ~/.ssh/passphrase.

2. Ejecute ssh­add /bin/bash seguido de ssh­agent.

3. Ejecute ssh­agent /bin/bash seguido de ssh­add.

4. Esto no es posible; debe ingresar la frase de contraseña cada vez que


se crea la conexión.

. La opción MaxSessions se puede utilizar para ajustar el número máximo de sesiones

que se pueden abrir al mismo tiempo. ¿Qué valor tiene por defecto?

1. 10

2. 25

3. 100

4. 1000

Temas de la Fundación

Fortalecer el servidor SSH

SSH es una solución importante y conveniente que le ayuda a establecer conexiones

remotas a servidores. También es una solución peligrosa. Si su servidor SSH es visible

directamente desde Internet, puede estar seguro de que

tarde o temprano un intruso intentará conectarse a su servidor,

con la intención de hacer daño.


Machine Translated by Google

Los ataques de diccionario son comunes contra un servidor SSH. En un ataque de diccionario, el

atacante utiliza contraseñas comunes (el diccionario) que se utilizan para intentar iniciar sesión

repetidamente. El atacante aprovecha el hecho de que los servidores SSH suelen ofrecer sus servicios

en el puerto 22 y que todavía hay demasiados servidores Linux.

Los servidores tienen una cuenta raíz a la que se le permite iniciar sesión a través de SSH. Basado

Con esa información, es fácil para un atacante intentar iniciar sesión como root simplemente

adivinando la contraseña. Si la contraseña tiene una complejidad limitada y no se han

tomado medidas de seguridad adicionales, tarde o temprano el intruso podrá conectarse.

Afortunadamente, puedes tomar algunas medidas para proteger los servidores SSH contra este tipo

de ataques.

ataques:

Deshabilitar el inicio de sesión raíz

Deshabilitar el inicio de sesión con contraseña

Configure un puerto no predeterminado para que SSH escuche

Permitir que usuarios específicos solo inicien sesión en SSH

En las siguientes subsecciones, aprenderá lo que implica cambiar estas opciones.

Limitar el acceso raíz

En versiones anteriores de RHEL, al usuario root se le permitía iniciar sesión, tanto local como

remotamente, a través de SSH. En RHEL 9 esto se ha solucionado. El instalador de RHEL 9 ahora

tiene una opción para no establecer una contraseña para el usuario root, lo que deshabilita el inicio

de sesión como root. Además, de forma predeterminada, el usuario root no puede iniciar sesión

a través de SSH. Esto se logra mediante la opción PermitRootLogin prohibit­password, que está

configurada de forma predeterminada. Este


Machine Translated by Google

La opción permite al usuario root iniciar sesión solo si el usuario tiene un par de claves

pública/privada válido, y se recomienda no cambiar esto.

Incluso si el inicio de sesión raíz en SSH está deshabilitado, aún es posible realizar tareas

de administración remota. Para hacerlo, primero deberá iniciar sesión de forma remota

como usuario no root, usando un comando como ssh Student@remoteserver.

Una vez finalizada la sesión al servidor remoto

se ha establecido, use sudo ­i para abrir un shell raíz si está usando un usuario habilitado

para sudo, o su ­ para usuarios no habilitados para sudo. Este es también el

Procedimiento a seguir si no se ha establecido ninguna contraseña de root.

Configurar puertos alternativos

Muchos problemas de seguridad en los servidores Linux comienzan con un escaneo de

puertos realizado por el atacante. Escanear todos los 65,535 puertos que potencialmente

pueden estar escuchando lleva mucho tiempo, pero la mayoría de los escaneos de puertos se

centran únicamente en los puertos conocidos, y el puerto SSH 22 siempre está entre los primeros

puertos escaneados. No subestime el riesgo de los escaneos de puertos. En varias

ocasiones, encontré que un puerto SSH escuchando en el puerto 22 estaba

descubierto dentro de una hora después de la instalación del servidor.

Para protegerse contra escaneos de puertos, puede configurar su servidor SSH para escuchar

en otro puerto. De forma predeterminada, el archivo sshd_config contiene el

línea Puerto 22 que le dice a SSH que escuche en el puerto privilegiado 22. Para tener SSH

escuche en otro puerto, debe cambiar el puerto 22 a otro.

Se pueden utilizar diferentes puertos. Puede optar por utilizar un puerto completamente

aleatorio como 2022, pero también puede resultar útil configurar SSH para escuchar en el

puerto 443.
Machine Translated by Google

El puerto 443 de forma predeterminada se asigna a los servidores web que utilizan Transport

Layer Security (TLS) para ofrecer cifrado. Si los usuarios que desean acceder al servidor SSH

normalmente están detrás de un proxy que permite el tráfico solo a los puertos 80 y 443, puede

tener sentido configurar SSH para escuchar en el puerto.

443. Sin embargo, debes tener en cuenta que al hacerlo, el puerto 443 no puede

utilizado por su servidor web; ¡Se puede asignar un puerto a un solo servicio a la vez!

Por lo tanto, haga esto sólo en una máquina en la que no planee ejecutar un servidor web

habilitado para TLS.

Consejo

Para evitar que se le bloquee el acceso a su servidor después de realizar

un cambio en el puerto de escucha SSH mientras está conectado de forma

remota, es una buena idea abrir dos sesiones en su servidor SSH. Use

una sesión para aplicar cambios y probar, y use la otra sesión para

mantener su actual

opción de conexión. Las sesiones activas no serán

desconectado después de reiniciar el servidor SSH (a menos que

no se puede reiniciar el servidor SSH correctamente).

Modificación de SELinux para permitir cambios de puerto

Después de cambiar el puerto SSH, también necesita configurar SELinux para permitir este

cambio. (Consulte el Capítulo 22, “Administración de SELinux”, para obtener más información.

detalles sobre SELinux.) Los puertos de red están etiquetados con SELinux

etiquetas de seguridad para evitar que los servicios accedan a los puertos donde

no debería ir. Para permitir que un servicio se conecte a un puerto no predeterminado, debe
Machine Translated by Google

Es necesario utilizar el puerto semanage para cambiar la etiqueta en el puerto de destino.

Antes de hacerlo, es buena idea comprobar si el puerto ya tiene una etiqueta. Puede hacer esto

usando el comando semanage port ­l.

Si el puerto aún no tiene una etiqueta de seguridad configurada, use ­a para agregar una etiqueta al

puerto. Si ya se ha configurado una etiqueta de seguridad, utilice ­m para modificar la etiqueta de

seguridad actual. Utilice, por ejemplo, el comando semanage port ­a ­t ssh_port_t ­p tcp 2022 para

etiquetar el puerto 2022 para el acceso mediante sshd.

Si desea volver a etiquetar un puerto que ya estaba en uso por otro

servicio, debe usar semanage port ­m para modificar el actual

asignación de puerto. Esto es necesario si, por ejemplo, desea que SSH pueda conectarse al

puerto 443.

Limitar el acceso de los usuarios

Puede encontrar muchas opciones para sshd simplemente navegando por el archivo

sshd_config. Una de las opciones más interesantes a utilizar es AllowUsers. Esta opción

toma una lista separada por espacios de todos los usuarios a los que se les permitirá iniciar sesión

a través de SSH. Note que este es un poderoso

opción, limitando el inicio de sesión solo a estos usuarios y excluyendo a todos los demás

usuarios, incluido el usuario root.

Cuando utilice el parámetro AllowUsers, considere cuidadosamente qué nombre de usuario desea

permitir o denegar el acceso. En una fuerza bruta programada

ataque, los intrusos normalmente también prueban nombres de usuario comunes como

administrador, administrador y jsmith. Es fácil agregar una capa de seguridad seleccionando un

nombre de usuario poco común. Observe lo siguiente sobre el parámetro AllowUsers:


Machine Translated by Google

La opción AllowUsers de forma predeterminada no aparece en ninguna parte del

archivo /etc/ssh/sshd_config predeterminado.

La opción AllowUsers es una mejor opción que PermitRootLogin

porque es más restrictivo que simplemente negarle a root el inicio de sesión.

Si la opción AllowUsers no especifica root, aún puedes convertirte en

root usando su ­ o sudo ­i después de realizar una conexión como de costumbre


usuario.

Un parámetro que parece prometedor, pero engañoso, es MaxAuthTries.

Podría pensar que esta opción bloquea el acceso al mensaje de inicio de sesión SSH

después de un número máximo de intentos fallidos de inicio de sesión. Esta funcionalidad

resulta útil cuando se conecta a un servidor local (cuya configuración se

puede cambiar fácilmente si es necesario), pero en un servidor SSH con acceso a

Internet, es una opción bastante peligrosa, lo que facilita la realización de una denegación

de servicio. ataque al servidor. Un intruso sólo tendría que ejecutar un script que intenta

iniciar sesión como un usuario específico para bloquear el acceso de ese usuario durante

un período de tiempo. Es por eso que

MaxAuthTries no hace lo que usted podría pensar que haría. Es solo

comienza a registrar intentos fallidos de inicio de sesión después de la mitad del número de intentos exitosos

intentos de inicio de sesión especificados aquí.

Aún así, la opción MaxAuthTries es útil. Para analizar eventos de seguridad

relacionado con su servidor SSH, no es tan interesante saber cuándo

El usuario por accidente ha escrito una contraseña incorrecta una o dos veces. Él

se vuelve interesante sólo después de múltiples intentos fallidos. Cuanto mayor sea el

número de intentos, más probable será que un intruso esté intentando entrar. SSH escribe

información de registro sobre los intentos fallidos de inicio de sesión en el


Machine Translated by Google

Instalación de syslog AUTHPRIV. De forma predeterminada, esta función está configurada

para escribir información sobre errores de inicio de sesión en /var/log/secure.

En el ejercicio 20­1, aplicará las opciones SSH comunes que se han


discutido hasta ahora.

Ejercicio 20­1 Configuración de opciones de seguridad SSH

En este ejercicio, el proceso sshd debe configurarse en el servidor1.

Utilice un segundo servidor, servidor2, para probar el acceso al servidor1.

1. Abra un shell raíz en el servidor1 y, desde allí, abra el archivo de configuración

sshd /etc/ssh/sshd_config en un editor.

2. Busque la línea Puerto y debajo de esa línea agregue la línea Puerto 2022. Esto

le dice al proceso sshd que debe vincularse a dos puertos diferentes, lo que garantiza

que aún pueda abrir sesiones SSH incluso si


ha cometido un error.

3. Agregue la línea AllowUsers Student al archivo de configuración SSH como


Bueno.

4. Guarde los cambios en el archivo de configuración y reinicie sshd, usando

systemctl reinicia sshd. Verá un mensaje de error.

5. Escriba systemctl status ­l sshd. Verás un "permiso denegado"

Error para SSH al intentar conectarse al puerto 2022.

6. Escriba semanage port ­a ­t ssh_port_t ­p tcp 2022 para aplicar el

corrija la etiqueta SELinux al puerto 2022.

7. Abra también el firewall para el puerto 2022, usando firewall­cmd ­­add­

puerto=2022/tcp, seguido de firewall­cmd ­­add­port=2022/tcp ­­

permanente
Machine Translated by Google

8. Escriba systemctl status ­l sshd nuevamente. Verá que el proceso sshd ahora escucha

en dos puertos.

9. Intente iniciar sesión en su servidor SSH desde su otro servidor, usando ssh ­ p 2022

estudiante@servidor1. Una vez abierto el shell de usuario, escriba su ­

para obtener acceso root.

Uso de otras opciones sshd útiles

Además de las opciones relacionadas con la seguridad, existen algunas opciones diversas

útiles que puede utilizar para optimizar el rendimiento de SSH. En las dos

subsecciones siguientes, leerá sobre algunas de las opciones más importantes.

Opciones de sesión

Para empezar, existe la opción UseDNS. Esta opción está activada de forma predeterminada e

indica al servidor SSH que busque el nombre de host remoto y verifique con DNS que el

nombre de host resuelto para el host remoto se asigne.

volver a la misma dirección IP. Aunque esta opción tiene cierta seguridad.

beneficios, también implica una importante penalización en el rendimiento. si cliente

las conexiones son lentas, asegúrese de configurarlo en no, para apagar el cliente

verificación del nombre de host por completo.

Otra opción relacionada con la sesión es MaxSessions. Esta opción especifica el número máximo

de sesiones que se pueden abrir desde una dirección IP simultáneamente. Si espera que varios

usuarios utilicen el
Machine Translated by Google

misma dirección IP para iniciar sesión en su servidor SSH, es posible que necesite

aumentar esta opción más allá de su valor predeterminado de 10.

Opciones de conexión activa

Las conexiones TCP en general son un recurso relativamente escaso, lo cual es

por qué las conexiones que no se utilizan durante algún tiempo normalmente caducan.

Puede utilizar algunas opciones para mantener vivas las conexiones inactivas durante un

período de tiempo más largo.

La opción TCPKeepAlive se utiliza para monitorear si el cliente todavía está

disponible. El uso de esta opción (que está activada de forma predeterminada) garantiza

que se libere la conexión para cualquier máquina que esté inactiva durante un período de

tiempo determinado. Sin embargo, si se usa solo, podría llevar a una situación en la que

también se liberen las conexiones no utilizadas, por lo que tiene sentido usar la opción

ClientAliveInterval. Esta opción establece un intervalo, en segundos, después del cual el

servidor envía un paquete al cliente si no se ha detectado actividad. El parámetro

ClientAliveCountMax especifica cuántos de estos paquetes deben enviarse. Si

ClientAliveInterval se establece en 30 y ClientAliveCountMax se establece en 10,

por ejemplo, las conexiones inactivas se mantienen vivas durante unos cinco

minutos. Es una buena idea configurar esto para que coincida con la cantidad de tiempo que

desea mantener abiertas las conexiones inactivas.

Las opciones ClientAliveInterval y ClientAliveCountMax pueden ser

especificado únicamente en un servidor. También existe un equivalente del lado del cliente

para estas opciones. Si no puede cambiar la configuración del servidor SSH, utilice las opciones

ServerAliveInterval y ServerAliveCountMax para


Machine Translated by Google

iniciar el tráfico de mantenimiento de conexión desde la máquina cliente. Estos

Las opciones se configuran en el archivo /etc/ssh/ssh_config si es necesario aplicarlas.

para todos los usuarios en esa máquina, o en ~/.ssh/config si se solicita


usuarios individuales.

La Tabla 20­2 proporciona una descripción general de las opciones SSH más útiles.

Tabla 20­2 Opciones de configuración de sshd más útiles

Opción Usar

Puerto Define el puerto de escucha TCP.

Permitir inicio de sesión raíz Indica si se permite o

no permitir el inicio de sesión de root.

MaxAuthTries Especifica el número máximo de

intentos de autenticación. Después de alcanzar

la mitad de este número, las fallas son

registrado en syslog.

Sesiones máximas Indica el número máximo de

sesiones que se pueden abrir desde una IP


DIRECCIÓN.
Machine Translated by Google

Opción Usar

Permitir usuarios Especifica una lista separada por espacios de


usuarios que pueden conectarse a

el servidor.

PasswordAuthentication Especifica si se permite la contraseña.

autenticación. Esta opción está activada por


por defecto.

TCPMantener vivo Especifica si se debe limpiar o no.


Conexiones TCP inactivas.

IntervaloClienteVivo Especifica el intervalo, en segundos, que

Los paquetes se envían al cliente para calcular.


averiguar si el cliente sigue vivo.

ClienteAliveCountMax Especifica el número de clientes vivos.

paquetes que deben enviarse.

UsarDNS Si está activado, utiliza la búsqueda de nombres DNS para coincidir

direcciones IP entrantes a nombres.

ServidorAliveInterval Especifica el intervalo, en segundos, en

que un cliente envía un paquete a un


Machine Translated by Google

Opción Usar

servidor para mantener vivas las conexiones.

ServidorAliveCountMax Especifica la cantidad máxima de paquetes que un

cliente envía a un servidor para mantener activas

las conexiones.

Configuración de la autenticación basada en claves con

Frases de contraseña

De forma predeterminada, la autenticación de contraseña está permitida en los servidores RHEL SSH.

Si se utiliza un par de claves pública/privada, como se explica en el Capítulo 5, este par de claves se

utiliza primero. Si desea permitir solo la autenticación basada en claves públicas/privadas y

deshabilitar la autenticación basada en contraseñas

completamente, establezca la opción PasswordAuthentication en no.

Cuando utiliza claves públicas/privadas, se puede utilizar una frase de contraseña. El uso de una

frase de contraseña fortalece el par de claves. Un intruso no sólo tiene que obtener acceso a la

clave privada, sino que cuando lo haga, también debe conocer la frase de contraseña para usar la

clave. Es por esto que para establecer

conexiones cliente/servidor con claves públicas/privadas, se recomienda utilizar frases de contraseña.

Sin configuración adicional, el uso de frases de contraseña significaría que los usuarios

tendrían que ingresar la frase de contraseña cada vez antes de que se pueda crear una

conexión, y eso es

inconveniente.
Machine Translated by Google

Para que trabajar con frases de contraseña sea un poco menos complicado, puede almacenar

en caché la frase de contraseña para una sesión. Para hacer esto, necesita los comandos ssh­

agent y ssh­add. Suponiendo que el par de claves pública/privada

ya ha sido creado, este es un sencillo procedimiento de tres pasos:

1. Escriba ssh­agent /bin/bash para iniciar el agente para el actual (Bash)

caparazón.

2. Escriba ssh­add para agregar la frase de contraseña para la cuenta privada del usuario actual.

llave. La clave ahora está almacenada en caché.

3. Conéctese al servidor remoto. Observe que ya no es necesario ingresar la frase de contraseña.

Este procedimiento debe repetirse para todas las sesiones nuevas que se realicen.

creado.

Resumen

En este capítulo, aprendió cómo configurar el servidor SSH con opciones avanzadas.

También aprendió cómo configurar opciones de seguridad para sshd y cómo configurar

opciones de cliente específicas que ayudan a mantener activas las conexiones durante

un período más largo.

Tareas de preparación de exámenes

Como se menciona en la sección "Cómo utilizar este libro" en el

Introducción, tiene varias opciones para la preparación del examen: el final


Machine Translated by Google

laboratorios del capítulo; las tablas de memoria en el Apéndice C; Capítulo 27, “Preparación

Final”; y los exámenes de práctica.

Revisar todos los temas clave

Revise el tema más importante del capítulo, señalado con el ícono de Tema clave en el

margen de la página. La Tabla 20­3 enumera una referencia para este tema clave y el

número de página en la que se encuentra.

Tabla 20­3 Tema clave para el Capítulo 20

Tema clave
Descripción Página
Elemento

Tabla 20­2 Configuración sshd más útil 447

Opciones

Tablas y listas completas de memoria

Imprima una copia del Apéndice C, “Tablas de memoria” (que se encuentra en la

sitio web complementario), o al menos la sección de este capítulo, y

Completar las tablas y listas de memoria. El Apéndice D, “Clave de respuestas de las

tablas de memoria”, incluye tablas y listas completas para verificar sus


trabajar.
Machine Translated by Google

Definir términos clave

Defina los siguientes términos clave de este capítulo y verifique sus respuestas en el

glosario:

conexión

frase de contraseña

Preguntas de revisión

Las preguntas que siguen están destinadas a ayudarle a evaluar su conocimiento de conceptos

y terminología y la amplitud de su conocimiento. Puede encontrar las respuestas a estas

preguntas en el Apéndice A.

. ¿Qué dos comandos necesitas para almacenar en caché la frase de contraseña configurada?

en su clave privada?

. Desea no permitir el inicio de sesión de root y solo permitir que el usuario lisa inicie sesión en

su servidor. ¿Cómo lo harías tú?

. ¿Cómo se configura su servidor SSH para escuchar en dos diferentes?

puertos?

. ¿Cuál es el nombre del archivo de configuración SSH principal?

. Al configurar un caché para almacenar la frase de contraseña de su clave, donde

¿Se almacenará esta frase de contraseña?


Machine Translated by Google

. ¿Cuál es el nombre del archivo que contiene la configuración del cliente SSH para todos?
usuarios?

. ¿Qué configuración debería utilizar para establecer el número máximo de


¿Sesiones SSH simultáneas a 10?

. ¿Cómo se configura SELinux para permitir que SSH se enlace al puerto 2022?

. ¿Cómo se configura el firewall en el servidor SSH para permitir

¿Conexiones entrantes al puerto 2022?

. ¿Qué configuración podría utilizar si experimenta tiempos de espera prolongados al intentar

establecer una conexión SSH?

Laboratorio de fin de capítulo

En esta práctica de laboratorio de final de capítulo, configurará SSH para mejorar la seguridad

y optimizar la configuración de conexión. Utilice el servidor1 para configurar el servidor

SSH y utilice el servidor2 como cliente SSH.

Laboratorio 20.1

1. Configure su servidor SSH de tal manera que las sesiones inactivas

mantenerse abierto durante al menos una hora.

2. Asegure su servidor SSH para que escuche solo en el puerto 2022 y que solo el usuario lisa

pueda iniciar sesión.

3. Pruebe la configuración del servidor2. Asegúrese de que el firewall también

como SELinux están configurados para admitir sus configuraciones.


Machine Translated by Google

Capítulo 21

Gestión de servicios HTTP de Apache

En este capítulo se tratan los siguientes temas:

Configurar un servidor Apache básico

Comprender los archivos de configuración de Apache

Creación de hosts virtuales Apache

Este capítulo trata un tema que no figura en los objetivos de la RHCSA. Sin

embargo, para un administrador de servidor Red Hat, es importante saber

cómo manejar el servicio web Apache. En el Capítulo 22, “Administración de

SELinux”, aprenderá cómo configurar SELinux. Para conocer SELinux conviene


conocer también un poco

sobre servicios que se pueden proteger con SELinux, por lo que es útil saber cómo

configurar un servidor Apache. Además, en el capítulo

11, "Trabajando con Systemd", aprendiste cómo trabajar con servicios

en un entorno RHEL. Saber configurar un servicio común como el servicio web

Apache seguramente te ayudará a hacerlo. Es por eso que este capítulo explica los

conceptos básicos del servidor web Apache.

“¿Ya lo sé?” Prueba

El cuestionario “¿Ya lo sé?” El cuestionario le permite evaluar si debe leer este

capítulo completo detenidamente o pasar a la sección "Tareas de preparación para el

examen". Si tiene dudas sobre sus respuestas a estas preguntas o sobre su propia

evaluación de su conocimiento del


Machine Translated by Google

temas, lea el capítulo completo. La Tabla 21­1 enumera los títulos principales de este

capítulo y sus correspondientes “¿Ya lo sé?” preguntas del cuestionario. Puede

encontrar las respuestas en el Apéndice A, “Respuestas a las

'¿Ya lo sé?' Cuestionarios y preguntas de repaso”.

Tabla 21­1 “¿Ya lo sé?” Mapeo de sección a pregunta

Sección de Temas de Fundación Preguntas

Configurar un servidor Apache básico 1–4

Comprensión de los archivos de configuración de Apache 5–7

Creación de hosts virtuales Apache 8–10

. ¿Qué comando instala los paquetes de software necesarios para configurar un

servidor web Apache?

1. dnf instala httpd


2. dnf instala el servidor web

3. dnf instala apache 4.

dnf instala apache2

. ¿Cuál es el nombre del archivo de configuración principal de Apache?

1. /etc/httpd/conf/httpd.conf 2. /etc/

httpd/httpd.conf
Machine Translated by Google

3. /etc/apache2/apache.conf 4. /etc/

httpd/default­server.conf

. ¿Qué parámetro en el archivo de configuración de Apache se utiliza para especificar

¿Desde dónde entregará Apache sus documentos?

1. Raíz del servidor

2. Documentos del servidor

3. raíz del documento

4. Índice de documentos

. ¿Qué parámetro en el archivo de configuración principal de Apache define la ubicación donde el

proceso de Apache busca sus archivos de configuración?

1. Raíz del servidor

2. Documentos del servidor

3. raíz del documento

4. Índice de documentos

. ¿Qué directorio contiene el archivo de configuración principal de Apache?

1. /etc/httpd 2. /

etc/httpd/conf 3. /etc/

httpd/conf.d 4. /etc/httpd/

conf.modules.d

. ¿Qué directorio contiene los archivos de configuración para los diferentes?

¿Módulos de Apache?
Machine Translated by Google

1. /etc/httpd 2. /

etc/httpd/conf 3. /etc/

httpd/conf.d 4. /etc/httpd/

conf.modules.d

. ¿Qué directorio se utiliza para eliminar los archivos de configuración que están instalados?
de RPM?

1. /etc/httpd 2. /

etc/httpd/conf 3. /etc/

httpd/conf.d 4. /etc/httpd/

conf.modules.d

. ¿Qué tipo de host virtual le permite ejecutar múltiples hosts virtuales en


la misma dirección IP?

1. Basado en nombres

2. Basado en IP

3. Basado en configuración
4. Predeterminado

. ¿Qué línea se utiliza para iniciar la definición de un host virtual que escucha?

en el puerto 80 de todas las direcciones IP en el servidor actual?

1. <Host virtual *:80>

2. <Host virtual *>

3. <NombreHost *:80

4. <NombreHost *>
Machine Translated by Google

. ¿Cuál de las siguientes afirmaciones sobre los hosts virtuales no es cierta?

1. Cuando se ofrecen hosts virtuales a través de un proceso httpd, la configuración

predeterminada ya no funciona.

2. Los nombres de los hosts virtuales deben poder resolverse a través de /etc/hosts o
DNS.

3. Para utilizar hosts virtuales, se debe instalar el paquete mod_virt.

4. Las configuraciones del host virtual se pueden especificar en httpd.conf.

Temas de la Fundación

Configurar un servidor Apache básico

Configurar un servidor Apache básico no es difícil. Consta de unos sencillos pasos:

1. Instale el software requerido.

2. Identifique el archivo de configuración principal.

3. Cree algún contenido de servidor web.

Instalación del software requerido

El servidor Apache se proporciona a través de algunos paquetes de software

diferentes. El paquete básico es httpd, que contiene todo lo necesario para un servidor

web operativo pero básico. También hay algunos paquetes adicionales. Utilice la

instalación del grupo dnf "Web básico

Server" para instalar todos los paquetes relevantes en un solo comando.


Machine Translated by Google

Identificación del archivo de configuración principal

La configuración del servidor web Apache pasa por diferentes archivos de

configuración. La sección "Comprensión de los archivos de configuración de Apache"

más adelante en este capítulo proporciona una descripción general de la forma en

que se organizan estos archivos. El archivo de configuración

principal de Apache es /etc/httpd/conf/httpd.conf. En este archivo, se especifican muchos parámetros.

El parámetro más importante que hay que entender para configurar un servidor

web básico es el parámetro DocumentRoot . Este parámetro especifica la ubicación

predeterminada donde el servidor web Apache busca su


contenido.

Otro parámetro de configuración importante es ServerRoot. Esto define el directorio

predeterminado donde Apache buscará sus archivos de configuración.

De forma predeterminada, se utiliza el directorio /etc/httpd para este propósito, pero

también se pueden utilizar directorios alternativos. Se hace referencia a muchos

otros archivos de configuración en el archivo httpd.conf, una parte del cual se

muestra en el Ejemplo 21­1. El uso de archivos de configuración adicionales facilita

que las aplicaciones instalen archivos directos que el servidor Apache incluirá desde

los paquetes RPM. Los nombres de todos estos archivos de configuración son

relativos al ServerRoot /etc/httpd.

Ejemplo 21­1 Contenido parcial del archivo de configuración /etc/httpd/conf/

httpd.conf

Haga clic aquí para ver la imagen del código


Machine Translated by Google

[root@localhost ~]# grep ­v '#' /etc/httpd/conf/httpd

Raíz del servidor "/etc/httpd"

Escuchar 80

Incluir conf.modules.d/*.conf

usuario apache
grupo apache

Administrador del servidor raíz@localhost

<Directorio />
Permitir anulación ninguno

Requerir todo denegado


</Directorio>

Raíz del documento "/var/www/html"

<Directorio "/var/www">
Permitir anulación ninguna

Requerir todo concedido


</Directorio>

<Directorio "/var/www/html">
Opciones Índices SeguirSymLinks

Permitir anulación ninguna


Machine Translated by Google

Requerir todo concedido


</Directorio>

<IfModule dir_module> DirectoryIndex

index.html </IfModule>

<Archivos ".ht*">
Requerir todo denegado
</Archivos>

ErrorLog "registros/error_log"

Advertencia de nivel de registro

<IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}
{Usuario­Agente}i\"" combinado
LogFormat "%h %l %u %t \"%r\" %>s %b" común

<IfModule logio_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referencia
{Usuario­Agente}i\" %I %O" combinado
</IfModule>

CustomLog "logs/access_log" combinado


</IfModule>

<IfModule alias_módulo>
Machine Translated by Google

ScriptAlias /cgi­bin/ "/var/www/cgi­bin/"

</IfModule>

<Directorio "/var/www/cgi­bin">
Permitir anulación ninguna

Opciones Ninguna
Requerir todo concedido
</Directorio>

<IfModule mime_module>
TypesConfig /etc/mime.types

Aplicación AddType/x­compress .Z Aplicación


AddType/x­gzip .gz .tgz

AddType texto/html .shtml


AddOutputFilter INCLUYE .shtml
</IfModule>
Agregar conjunto de caracteres predeterminado UTF­8

<IfModule mime_magic_module>
MIMEMagicFile conf/magia
</IfModule>

HabilitarEnviararchivo en
IncluirOpcional conf.d/*.conf

También podría gustarte