Gentoo Logo

Renuncia de responsabilidad: La versión original de este artículo fue publicada por IBM developerWorks y es propiedad de Westtech Information Services. Este documento es una versión actualizada del artículo original y contiene mejoras introducidas por el Equipo de Documentación de Gentoo.
Este documento carece de soporte activo.


Preparación para el examen de certificación 101 del LPI (segundo lanzamiento), Parte 4

Contenido:

1.  Antes de comenzar

Acerca de este tutorial

Bienvenido a "Administración avanzada", el último de cuatro tutoriales diseñado para prepararlo para el examen 101 del Instituto Profesional de Linux (LPI por sus siglas en inglés). En este tutorial (parte 4), reforzaremos sus conocimientos de administración avanzada Linux cubriendo una gran variedad de temas incluyendo sistemas de archivos Linux, el proceso de arranque de Linux, niveles de ejecución, cuotas del sistema de archivos, y registros del sistema.

Este tutorial es particularmente apropiado para alguien que este actuando por primera vez como administrador principal del sistema ya que cubrimos una gran cantidad de problemas de bajo nivel que todo administrador de sistemas debería conocer. Si es nuevo en Linux, recomendamos que comience con la Parte 1 y trabaje con la serie a partir de ahí. Para algunos, este material será nuevo, pero los usuarios Linux más experimentados encontrarán en este tutorial una buena manera de complementar sus conocimientos básicos de administración Linux y prepararse para el siguiente nivel de certificación LPI.

Al final de esta serie de tutoriales (ocho en total, cubriendo los exámenes LPI 101 y 102), tendrá el conocimiento necesario para ser un administrador de sistemas Linux y estará listo para obtener una certificación LPIC nivel 1 del Instituto de Profesionales Linux si así lo desea.

Para aquellos que han tomado el release 1 version de este tutorial por razones diferentes a la preparación para el examen LPI, probablemente no sea necesario tomar esta versión. Sin embargo, si planea presentarse a los exámenes, debe considerar seriamente leer este tutorial.

El logotipo LPI es una marca registrada del Instituto Profesional de Linux.

Acerca de los autores

Para preguntas técnicas acerca del contenido de este tutorial, puede contactar con los autores:

Daniel Robbins vive en Albuquerque, Nuevo México, y es el Arquitecto jefe de Gentoo Technologies, Inc., el creador de Gentoo Linux, un Linux avanzado para PC, y el sistema Portage, una nueva generación de sistemas de puertos (ports) para Linux. También ha contribuido como autor de los libros Macmillan Caldera OpenLinux Unleashed, SuSE Linux Unleashed, y Samba Unleashed. Daniel ha estado involucrado con las computadoras de alguna manera desde el segundo grado, cuando fue expuesto por primera vez al lenguaje de programación Logo, así como a una dosis potencialmente peligrosa de Pac-Man. Posiblemente esto explica porqué desde entonces ha servido como artista líder de gráficos en SONY Electronic Publishing/Psygnosis. Daniel disfruta su tiempo libre con su esposa, Mary, y su hija, Hadassha.

Chris Houser, conocido por sus amigos como "Chouser," ha sido partidario de UNIX desde 1994 cuando se unió al equipo de administración de la red de informática en la Universidad Taylor en Indiana, donde obtuvo su licenciatura en Ciencias de la Computación y Matemáticas. Desde entonces ha trabajado en programación de aplicaciones web, diseño de interfaz de usuario, soporte para programas de vídeo profesional y ahora programando el controlador del dispositivo Tru4 UNIX en Compaq. Además ha contribuido en varios proyectos de programas libres (recientemente en Gentoo Linux). Vive con su esposa y dos gatos en New Hampshire.

Aron Griffis, graduado de la Universidad Taylor con título en Ciencias de la Computación y premiado con el título "Futuro fundador de una comunidad UNIX utópica". Trabajando para conseguir ese objetivo Aron es empleado de Compaq, escribe controladores de red para Tru64 UNIX y utiliza su tiempo libre tocando melodías en el piano o desarrollando Gentoo Linux. Vive con su esposa Amy (también ingeniera UNIX) en Nashua, NH.

2.  Sistemas de archivos, particiones y dispositivos de bloques

Introducción a los dispositivos de bloques

En esta sección, echaremos un buen vistazo a los aspectos Linux orientados al disco, incluyendo sistemas de archivos Linux, particiones y dispositivos de bloques. Una vez que esté familiarizado con las entradas y salidas de discos y sistemas de archivos, le guiaremos a través del proceso de creación de particiones y sistemas de archivos Linux.

Para comenzar, haré una introducción a "dispositivos de bloques". El dispositivo de bloques más famoso es probablemente el que representa la primera unidad de disco IDE en un sistema Linux:

Listado de Código 2.1: La primera unidad de disco IDE en Linux

/dev/hda

Si su sistema utiliza unidades SCSI, entonces el primer disco duro será el siguiente:

Listado de Código 2.2: La primera unidad de disco SCSI en Linux

/dev/sda

Capas de abstracción

Los dispositivos de bloques mencionados anteriormente representan una interfaz abstracta en el disco. Los programas de usuario pueden utilizar estos dispositivos de bloques para interaccionar con el disco sin preocuparse acerca de si sus unidades son IDE, SCSI, o cualquier otra cosa. El programa simplemente puede direccionar el almacenamiento en el disco como un grupo de bloques de 512 bytes contiguos, accesibles aleatoriamente.

Particiones

Bajo Linux, creamos sistemas de archivos mediante un comando especial llamado mkfs (o mke2fs, mkreiserfs, etc.), especificando un dispositivo de bloques particular como argumento en la línea de comandos.

Sin embargo, aunque teóricamente es posible usar un dispositivo de bloques de "disco completo" (uno que represente todo el disco) como /dev/hda o /dev/sda para albergar un único sistema de archivos, esto casi nunca se hace en la práctica. En cambio, los discos completos de dispositivos de bloques están divididos en dispositivos de bloques más pequeños y manejables llamados particiones. Las particiones son creadas utilizando una herramienta llamada fdisk, la cual es usada para crear y editar la tabla de particiones que está almacenada en cada disco. La tabla de particiones define exactamente como dividir el disco completo.

Introducción a fdisk

Podemos echar un vistazo a la tabla de particiones de un disco ejecutando fdisk, especificando como argumento el dispositivo de bloques que representa el disco completo.

Nota: Interfaces alternativas a la tabla de partición del disco incluyen cfdisk, parted, y partimage. Le recomiendo que evite el uso de cfdisk (a pesar de lo que pueda decir la página de manual de fdisk) ya que algunas veces calcula la geometría del disco de manera incorrecta.

Listado de Código 2.3: Usar fdisk en la unidad IDE

# fdisk /dev/hda

Listado de Código 2.4: Usar fdisk en la unidad SCSI

# fdisk /dev/sda

Importante: No debe guardar o hacer cambios en la tabla de particiones del disco si alguna de sus particiones contienen sistemas de archivos que están en uso o datos importantes. Hacerlo, generalmente ocasiona que los datos en el disco se pierdan.

Dentro de fdisk

Una vez en fdisk, le dará la bienvenida un símbolo de espera de órdenes parecido a este:

Listado de Código 2.5: Símbolo de espera de órdenes de bienvenida de fdisk

Command (m for help):

Teclee p para desplegar la configuración actual de la tabla de particiones del disco:

Listado de Código 2.6: Desplegar la configuración actual de las particiones

Command (m for help): p

Disk /dev/hda: 240 heads, 63 sectors, 2184 cylinders
Units = cylinders of 15120 * 512 bytes

Device Boot    Start       End    Blocks   Id  System
/dev/hda1             1        14    105808+  83  Linux
/dev/hda2            15        49    264600   82  Linux swap
/dev/hda3            50        70    158760   83  Linux
/dev/hda4            71      2184  15981840    5  Extended
/dev/hda5            71       209   1050808+  83  Linux
/dev/hda6           210       348   1050808+  83  Linux
/dev/hda7           349       626   2101648+  83  Linux
/dev/hda8           627       904   2101648+  83  Linux
/dev/hda9           905      2184   9676768+  83  Linux

Command (m for help):

Este disco en particular está configurado para albergar siete sistemas de archivos Linux (cada uno con su partición correspondiente listada como "Linux") así como una partición de intercambio ("listada como Linux swap").

Resumen de dispositivos de bloques y particionamiento

Observe el nombre correspondiente a la partición del dispositivo de bloques en el lado izquierdo, comenzando con /dev/hda1 y siguiendo hasta /dev/hda9. En los primeros días de la PC, el software de particionamiento solo permitía un máximo de cuatro particiones (llamadas particiones primarias). Esto limitaba demasiado, por lo que fue creada una solución temporal llamada partición extendida. Una partición extendida es muy similar a la partición primaria, y cuenta para el límite de cuatro particiones primarias. Sin embargo, la partición extendida puede contener cualquier número de las llamadas particiones lógicas dentro de ella, dando así un medio eficaz para trabajar con el límite de cuatro particiones.

Resumen de particionamiento, continuación

Todas las particiones hda5 y superiores son particiones lógicas. Los números del 1 al 4 están reservados para particiones primarias o extendidas.

En nuestro ejemplo, hda1 hasta hda3 son particiones primarias. hda4 es una partición extendida que contiene las particiones lógicas hda5 hasta hda9. Realmente nunca utilizará /dev/hda4 para almacenar cualquier sistema de archivos, simplemente actúa como contenedor para las particiones hda5 hasta hda9.

Tipos de partición

También observe que cada partición tiene un "identificador" ("Id"), también llamado tipo de partición. Siempre que crea una nueva partición, debe asegurarse que el tipo de partición está definido correctamente. 83 es el tipo correcto de partición para particiones que albergarán sistemas de archivos Linux, y 82 es el tipo correcto de partición para las particiones de intercambio Linux. Puede establecer el tipo de partición usando la opción t en fdisk. El núcleo Linux utiliza la configuración del tipo de partición para autodetectar los sistemas de archivos y dispositivos de intercambio en el disco durante el arranque.

Usar fdisk para crear las particiones

Ahora que ya tiene una introducción al modo en que se crean las particiones del disco en Linux, es hora de caminar a través del proceso de crear las particiones del disco y los sistemas de archivos para una nueva instalación de Linux. En este proceso, configuraremos un disco con nuevas particiones y después crearemos sistemas de archivos en ellas. Estos pasos nos darán como resultado un disco completamente limpio, sin datos, que puede ser utilizado como la base de una nueva instalación de Linux.

Importante: Para seguir estos pasos, debe tener un disco duro que no contenga ningún dato importante, ya que estos pasos borrarán los datos del disco. Si esto le es nuevo, debería considerar solo leer los pasos, o usar un disco de arranque Linux en un sistema de prueba donde ningún dato corra peligro.

Cómo debería verse el disco

Después de caminar a través del proceso de creación de particiones en el disco, la configuración de las particiones se verá así:

Listado de Código 2.7: Vista del disco después de crear particiones

Disk /dev/hda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Device Boot    Start       End    Blocks   Id  System
/dev/hda1    *        1        14    105808+  83  Linux
/dev/hda2            15        81    506520   82  Linux swap
/dev/hda3            82      3876  28690200   83  Linux

Command (m for help):

Comentario sobre la partición de ejemplo

En nuestra configuración de particiones sugerida tipo "novato", tenemos tres particiones. La primera de ellas (/dev/hda1) al inicio del disco es una pequeña partición llamada partición de arranque (boot). El propósito de la partición de arranque es mantener todos los datos críticos relacionados con el arranque, información del gestor de arranque GRUB (si está utilizando GRUB) así como el(los) núcleo(s) Linux. La partición de arranque nos brinda un lugar seguro para almacenar todo lo relacionado al arranque de Linux. Durante el uso normal día a día de Linux, la partición de arranque debe permanecer desmontada por seguridad. Si está configurando un sistema SCSI, su partición de arranque probablemente terminará siendo /dev/sda1.

Se recomienda tener las particiones de arranque (conteniendo todo lo necesario para que el gestor de descarga trabaje) en el inicio del disco. Aunque ya no se requiere necesariamente, es una tradición útil desde los días en que el gestor de arranque LILO no era capaz de cargar núcleos desde sistemas de archivos que se extendieran en el disco mas allá del cilindro 1024.

La segunda partición (/dev/hda2) se utiliza para el espacio de intercambio. El núcleo utiliza el espacio de intercambio como memoria virtual cuando la memoria RAM es baja. Esta partición, relativamente hablando, no es muy grande, por lo general se encuentra alrededor de los 512 MB. Si está configurando un sistema SCSI, esta partición probablemente terminará llamádose /dev/hda2.

La tercera partición /dev/hda3) es bastante grande y ocupa el resto del disco. Esta partición se llama partición raíz (root) y se utilizará para almacenar el sistema de archivos principal que alberga el sistema de archivos Linux principal. En un sistema SCSI, esta partición se llamará /dev/sda3.

Primeros pasos

Bien, ahora vamos a crear las particiones como en el ejemplo y la tabla de arriba. En primer lugar, entre en fdisk escribiendo fdisk /dev/hda o fdisk /dev/sda, dependiendo de si está usando IDE o SCSI. A continuación, teclee p para ver la configuración de particiones actual. ¿Hay algo en el disco que desee conservar? Si es así, deténgase ahora. Si continúa con estas instrucciones, todos los datos existentes en el disco se borrarán.

Importante: ¡Si sigue las siguientes instrucciones todos los datos en su disco sean borrados!. Si hay algo en el disco, por favor asegúrese que no sea información crítica y que no le importe perder. También asegúrese de que ha seleccionado la unidad correcta para que no se eliminen por error datos de la unidad equivocada.

Eliminar las particiones existentes

Ahora, es el momento de eliminar las particiones existentes. Para hacerlo, escriba d y pulse intro. A continuación se le pedirá el número de partición que le gustaría borrar. Para eliminar una pre-existente /dev/hda1, debe escribir:

Listado de Código 2.8: Eliminar una partición pre-existente

Command (m for help): d
Partition number (1-4): 1

La partición ha sido programada para su eliminación. Ya no aparecerá si teclea p, pero no será borrada hasta que los cambios sean guardados. Si comete algún error y quiere abortar sin guardar ninguno de los cambios, escriba q inmediatamente y oprima intro y la partición no será eliminada.

Ahora, suponiendo que quiere eliminar todas las particiones en el sistema, repetidamente teclee p para imprimir un listado de las particiones y después escriba d y el número de la partición a eliminar. Eventualmente, terminará con una tabla de particiones sin nada en ella:

Listado de Código 2.9: Vista de la unidad después de limpiarla


Disk /dev/hda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Device Boot    Start       End    Blocks   Id  System

Command (m for help):

Crear una partición de arranque

Ahora que la tabla de particiones en memoria está vacía, estamos listos para crear una partición de arranque. Para hacerlo, escriba n para crear una partición nueva, después p para decirle a fdisk que quiere una partición primaria. Después escriba 1 para crear la primera partición primaria. Cuando se le pida el primer cilindro, pulse intro. Cuando se le pida el último cilindro, teclee +100M para crear una partición de 100MB de tamaño. Aquí está la salida de estos pasos:

Listado de Código 2.10: Crear una partición de arranque

Command (m for help): n
Command action
e   extended
p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-3876, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-3876, default 3876):+100M

Ahora, cuando teclee p, deberá ver la siguiente impresión de la partición:

Listado de Código 2.11: Listado de la partición

Command (m for help): p

Disk /dev/hda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Device Boot    Start       End    Blocks   Id  System
/dev/hda1             1        14    105808+  83  Linux

Crear la partición de intercambio

A continuación, crearemos la partición de intercambio (swap). Para hacer esto, teclee n para crear una nueva partición, después n para decirle a fdisk que desea una partición primaria. Después teclee 2 para crear la segunda partición primaria, /dev/hda2 en nuestro caso. Cuando se le pida el primer cilindro, pulse intro. Cuando se le pida el último cilindro, teclee +512M para crear una partición de 512MB de tamaño. Después de hacer esto, teclee t para establecer el tipo de partición, y luego escriba 82 para establecer el tipo de partición a "Intercambio Linux". Después de completar estos pasos, al teclear p se debería mostrar una tabla de partición parecida a la siguiente:

Listado de Código 2.12: Tabla de particiones

Command (m for help): p

Disk /dev/hda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Device Boot    Start       End    Blocks   Id  System
/dev/hda1             1        14    105808+  83  Linux
/dev/hda2            15        81    506520   82  Linux swap

Hacer la partición arrancable

Por último, tenemos que definir la bandera "de arranque" en nuestra partición de arranque y después escribir los cambios en el disco. Para etiquetar /dev/hda1 como partición "de arranque", escriba a en el menú y después escriba 1 para el número de partición. Si escribe p ahora, verá que /dev/hda1 tiene un "*" en la columna "Boot". Ahora, vamos a escribir los cambios en el disco. Para hacerlo, escriba w y pulse intro. Las particiones del disco están configuradas correctamente para la instalación de Linux.

Nota: Si fdisk le indica que debe hacerlo, por favor, reinicie el sistema para permitir que su sistema detecte la nueva configuración de las particiones.

Particionamiento extendido y lógico

En el ejemplo de arriba, creamos una partición primaria que contiene un sistema de archivos utilizado para almacenar todos nuestros datos. Esto significa que después de instalar Linux, este sistema de archivos principal se montará en "/" y albergará un árbol de directorios que contiene todos nuestros archivos.

Si bien esto es una forma común de configurar un sistema Linux, existe otro enfoque que debe conocer. Este método utiliza varias particiones que albergan múltiples sistemas de archivos que son "enlazados" juntos para formar un árbol cohesivo de sistemas de archivos. Por ejemplo, es común poner /home y /var en sus propios sistemas de archivos.

Podríamos haber creado hda2 como una partición extendida en lugar de una primaria. En este caso, podríamos haber creado las particiones lógicas hda5, hda6 y hda7 (que técnicamente estarían "dentro" de hda2), las cuales albergarían los sistemas de archivos /, /home, y /var respectivamente.

Puede aprender más acerca de este tipo de configuración de múltiples sistemas de archivos mediante el estudio de la bibliografía listada más abajo.

Bibliografía de particionamiento

Para más información acerca de particionamiento, eche un vistazo a los siguientes consejos de particionamiento:

Creación de sistemas de archivos

Ahora que hemos creado las particiones, es hora de crear sistemas de archivos en las particiones de arranque y raíz para que se puedan montar y utilizar para almacenar datos. Además configuraremos la partición de intercambio para que funcione como un almacén de intercambio.

Linux soporta una gran variedad de diferentes tipos de sistemas de archivos, cada tipo tiene sus fortalezas y debilidades y su propio conjunto de características de desempeño. En este tutorial, cubriremos la creación de sistemas de archivos ext2, ext3, XFS, JFS y ReiserFS. Antes de crear sistemas de archivos en nuestro sistema de ejemplo, hagamos un breve repaso de los sistemas de archivos disponibles en Linux. Veremos con más detalle los sistemas de archivos más adelante en este tutorial.

El sistema de archivos ext2

ext2 es el sistema de archivos Linux confiable y de sobra probado, pero no tiene registro de metadatos (metadata journaling), lo que significa que las revisiones de rutina del sistema de archivos ext2 en el inicio pueden consumir mucho tiempo. En la actualidad existe una gran selección de sistemas de archivos de nueva generación que pueden revisar la consistencia con mucha rapidez y por lo general son los preferidos sobre sus contrapartes sin registro diario (journaling). Los sistemas con registro diario evitan largas esperas cuando el sistema arranca y el sistema de archivos resulta estar en un estado inconsistente.

El sistema de archivos ext3

ext3 es la versión con registro diario del sistema de archivos ext2, proporciona registro de metadatos para una rápida recuperación además de otros modos de registro diario mejorados, tales como datos de registro completos y ordenados. ext3 es un sistema de archivos muy bueno y confiable. En general ofrece un desempeño decente en la mayoría de las condiciones. Debido a que no emplea ampliamente el uso de "árboles" en su diseño interno, no se escala muy bien, lo que significa que no es la opción ideal para sistemas de archivos muy grandes o grandes cantidades de archivos en un solo directorio. Pero cuando es usado dentro de sus parámetros de diseño, ext3 es un excelente sistema de archivos.

Una de las cosas buenas de ext3 es que los sistemas de archivos existentes ext2 pueden ser actualizados "in situ" a ext3 con bastante facilidad. Esto permite un camino de actualización sin problemas para sistemas Linux que ya están usando ext2.

El sistema de archivos ReiserFS

ReiserFS es un sistema de archivos basado en árboles-B que tiene un desempeño general muy bueno y supera en gran medida a ext2 y ext3 cuando se trata de archivos pequeños (archivos de menos de 4k), a menudo por un factor de 10x-15x. ReiserFS además se escala sumamente bien y tiene registro de metadatos. A partir del núcleo 2.4.18+, ReiserFS es sólido como una roca y altamente recomendado para usarlo tanto como sistema de archivos de uso general como en casos extremos, como la creación de sistemas de archivos grandes, el uso de muchos archivos pequeños, archivos muy grandes, y directorios que contengan decenas de miles de archivos. ReiserFs es el sistema de archivos que recomendamos de forma predeterminada para todas las particiones que no sean de arranque.

El sistema de archivos XFS

XFS es un sistema de archivos con registro de metadatos. Viene con un conjunto de características robusto y está optimizado para la escalabilidad. Solo recomendamos utilizar este sistema de archivos en sistemas Linux con SCSI de alto nivel y/o almacenamiento en canal de fibra y un sistema de alimentación ininterrumpido. Debido a que XFS obtiene datos en tránsito en RAM agresivamente, los programas mal diseñados (aquellos que no toman las debidas precauciones cuando escriben archivos al disco, y hay un buen número de ello) pueden perder una buena cantidad de datos si el sistema se apaga de manera inesperada.

El sistema de archivos JFS

JFS es el sistema de archivos transaccional de alto rendimiento propio de IBM. Ha sido liberado recientemente, y nos gustaría ver un historial más largo antes de comentar de manera positiva o negativa su estabilidad general en este punto.

Recomendaciones de sistema de archivos

Si está buscando el sistema de archivos transaccional más resistente, use ext3. Si busca un sistema de archivos de alto rendimiento de propósito general con soporte de registro de datos, use ReiserFs; tanto ext3 como ReiserFS son maduros, refinados y recomendados para uso general.

Basados en nuestro ejemplo anterior, usaremos las siguientes órdenes para inicializar todas las particiones para su uso:

Listado de Código 2.13: Inicializar particiones

# mke2fs -j /dev/hda1
# mkswap /dev/hda2
# mkreiserfs /dev/hda3

Elegimos ext3 para la partición de arranque /dev/hda1 debido a que es un sistema de archivos transaccional robusto que puede ser utilizado con todos los gestores de arranque principales. Usamos mkswap para la partición de intercambio /dev/hda2, aquí la elección es obvia. Y para el sistema de archivos raíz principal en /dev/hda3 elegimos ReiserFS, ya que es un sistema de archivos transaccional que ofrece un excelente rendimiento. Ahora, continúe e inicialice las particiones.

Hacer el intercambio

mkswap es la orden utilizada para inicializar las particiones de intercambio:

Listado de Código 2.14: Inicializar la partición de intercambio

# mkswap /dev/hda2

A diferencia de los sistemas de archivos regulares, las particiones de intercambio no se montan. En cambio, son habilitadas utilizando la orden swapon:

Listado de Código 2.15: Habilitar partición de intercambio

# swapon /dev/hdc6

Los guiones de inicio del sistema Linux se harán cargo de habilitar automáticamente las particiones de intercambio. Por lo tanto, la orden swapon por lo general solo se necesita cuando es necesario agregar inmediatamente alguna partición de intercambio recién creada. Para ver los dispositivos de intercambio habilitados actualmente, teclee cat/proc/swaps.

Crear sistemas de archivos ext2, ext3, y ReiserFS

Puede usar la orden mke2fs para crear sistemas de archivos ext2:

Listado de Código 2.16: Crear sistemas de archivos ext2

# mke2fs /dev/hda1

Si desea utilizar ext3, puede crear sistemas de archivos ext3 usando mke2fs -j:

Listado de Código 2.17: Crear sistemas de archivos ext3

# mke2fs -j /dev/hda3

Nota: Puede saber más acerca del uso de ext3 en Linux 2.4 en este sitio desarrollado por Andrew Morton.

Para crear sistemas de archivos ReiserFS, use la orden mkreiserfs:

Listado de Código 2.18: Crear sistemas de archivos ReiserFS

# mkreiserfs /dev/hda3

Crear sistemas de archivos XFS y JFS

Para crear un sistema de archivos XFS, use la orden mkfs.xfs:

Listado de Código 2.19: Crear sistemas de archivos XFS


# mkfs.xfs /dev/hda3

Nota: Es posible que desee agregar un par de opciones adicionales a la orden mkfs.xfs: -d agcount=3 -l size=32m. La orden -d agcount=3 disminuirá el número de grupos asignados. XFS insistirá en al menos un grupo asignado por 4GB de la partición, por lo que, por ejemplo, si tiene una partición de 20GB necesitará un agcount mínimo de 5. La orden lsize=32m aumenta el tamaño de registro a 32MB, incrementando el rendimiento.

Para crear sistemas de archivos JFS, use la orden mkfs.jfs:

Listado de Código 2.20: Crear sistemas de archivos JFS

# mkfs.jfs /dev/hda3

Montar sistemas de archivos

Una vez que se ha creado el sistema de archivos, podemos montarlo utilizando la orden mount:

Listado de Código 2.21: Montar el sistema de archivos

# mount /dev/hda3 /mnt

Para montar un sistema de archivos, especifique la partición del dispositivo de bloques como primer argumento y un "sitio para el montaje" como segundo argumento. El sistema de archivos nuevo se "injerta en" ese punto de montaje. Esto también tiene el efecto de "esconder" cualquier archivo que esté en el directorio /mnt en el sistema de archivos padre. Después, cuando se desmonta el sistema de archivos, estos archivos reaparecen. Después de ejecutar la orden de mount, cualquier archivo creado o copiado dentro de /mnt será almacenado en el nuevo sistema de archivos ReiserFS que montó.

Digamos que queremos montar nuestra partición de arranque dentro de /mnt. Podemos hacerlo realizando los siguientes pasos:

Listado de Código 2.22: Montar partición de arranque en /mnt

# mkdir /mnt/boot
# mount /dev/hda1 /mnt/boot

Ahora, nuestro sistema de archivos está disponible dentro de /mnt/boot. Si creamos archivos dentro de /mnt/boot, serán almacenados en nuestro sistema de archivos ext3 que físicamente reside en /dev/hda1. Si creamos un archivo dentro de /mnt pero no en /mnt/boot, entonces serán almacenados en nuestro sistema de archivos ReiserFS que reside en /dev/hda3. Y si creamos archivos fuera de /mnt, no se pueden almacenar en cualquiera de los sistemas de archivos sino en el sistema de archivos de nuestro sistema actual Linux o en el disco de arranque.

Para ver cuales sistemas de archivos están montados, escriba mount. Aquí está la salida de mount en uno de nuestros sistemas Linux actualmente en ejecución, el cual tiene las particiones configuradas de forma similar a las del ejemplo de arriba:

Listado de Código 2.23: Salida de la orden mount

/dev/root on / type reiserfs (rw,noatime)
none on /dev type devfs (rw)
proc on /proc type proc (rw)
tmpfs on /dev/shm type tmpfs (rw)
usbdevfs on /proc/bus/usb type usbdevfs (rw)
/dev/hde1 on /boot type ext3 (rw,noatime)

También puede ver información similar escribiendo cat /proc/mounts. El sistema de archivos raíz, /dev/hda3 lo monta automáticamente el núcleo en el momento de arrancar, y recibe el nombre simbólico /dev/hda3. En nuestro sistema, tanto /dev/hda3 y /dev/root señalan al mismo dispositivo de bloques usando un enlace simbólico:

Listado de Código 2.24: Enlaces simbólicos

# ls -l /dev/root
lr-xr-xr-x   1 root   root   33 Mar 26 20:39 /dev/root ->
ide/host0/bus0/target0/lun0/part3

# ls -l /dev/hda3
lr-xr-xr-x   1 root   root   33 Mar 26 20:39 /dev/hde3 ->
ide/host0/bus0/target0/lun0/part3

Aún más cosas de montaje

Entonces, ¿qué es este archivo "/dev/ide/host0...."? Sistemas como el mío que utilizan el dispositivo de administración de sistemas de archivos devfs para /dev, tienen nombres oficiales más largos para la partición y los dispositivos de bloques del disco que los que solía tener Linux. Por ejemplo, /dev/ide/host0/bus1/target0/lun0/part7 es el nombre oficial para /dev/hdc7, y /dev/hdc7 es en sí un enlace simbólico al dispositivo de bloques oficial. Puede determinar si su sistema utiliza devfs revisando si el archivo /dev/.devfsd existe; si es así, entonces devfs está activo.

Cuando se utiliza la orden mount para montar sistemas de archivos, ésta intenta autodetectar el tipo de sistema de archivos. Algunas veces, esto no funciona y tendrá que especificar manualmente el tipo de sistema de archivos a ser montado utilizando la opción -t, de la siguiente manera:

Listado de Código 2.25: Montar un sistema de archivos ext3 manualmente con la opción -t

# mount /dev/hda1 /mnt/boot -t ext3

or

Listado de Código 2.26: Montar un sistema de archivos reiserfs manualmente con la opción -t

# mount /dev/hda3 /mnt -t reiserfs

Opciones de montaje

También es posible personalizar varios atributos del sistema de archivos que se quiere montar, especificando las opciones de montaje. Por ejemplo, puede montar un sistema de archivos de "solo lectura" utilizando la opción "ro":

Listado de Código 2.27: Montar un sistema de archivos de solo lectura

# mount /dev/hdc6 /mnt -o ro

Con /dev/hdc6 montado como solo lectura, no hay archivos que puedan ser modificados en /mnt, solo lectura. Si su sistema de archivos está montado como "lectura/escritura" y desea cambiar al modo de solo lectura, puede utilizar la opción "remount" para evitar tener que montar y desmontar el sistema de archivos otra vez:

Listado de Código 2.28: Usar la opción remount

# mount /mnt -o remount,ro

Tenga en cuenta que no necesitamos especificar la partición del dispositivo de bloques debido a que el sistema de archivos ya está montado y mount sabe que /mnt está asociado con /dev/hdc6. Para hacer el sistema de archivos de escritura otra vez, podemos montarlo nuevamente como lectura y escritura:

Listado de Código 2.29: Remontar un sistema de archivos como lectura-escritura

# mount /mnt -o remount,rw

Tenga en cuenta que las ordenes remount no se completarán correctamente si cualquier proceso ha abierto archivos o directorios en /mnt. Para familiarizarse con todas las opciones de montaje disponibles en Linux, escriba man mount.

Introducción a fstab

Hasta ahora, hemos visto cómo particionar un disco de ejemplo y montar sistemas de archivos manualmente desde un disco de arranque. Pero una vez que tengamos un sistema Linux instalado, ¿cómo podemos configurar ese sistema Linux para montar los sistemas de archivos correctos en el momento adecuado? Por ejemplo, digamos que instalamos Gentoo Linux en nuestra configuración actual del sistema de archivos de ejemplo. ¿Cómo sabría nuestro sistema cómo encontrar el sistema de archivos raíz en /dev/hda3? Y si algún otro sistema de archivos, como el de intercambio, necesita ser montado en el momento de arranque, ¿cómo sabría cuáles?

Bien, el gestor de arranque le indica al núcleo de Linux qué sistema de archivos raíz usar, y le daremos un vistazo a los gestores de arranque de Linux después en este tutorial. Pero para todo lo demás, su sistema Linux tiene un archivo llamado /etc/fstab que indica qué sistemas de archivos están disponibles para el montaje. Echemos un vistazo.

Una muestra de fstab

Veamos una muestra del archivo /etc/fstab:

Listado de Código 2.30: Muestra del archivo /etc/fstab

<fs> <mountpoint> <type>    <opts>
<dump/pass>

/dev/hda1       /boot           ext3            noauto,noatime          1 1
/dev/hda3       /               reiserfs        noatime                 0 0
/dev/hda2       none            swap            sw                      0 0
/dev/cdrom      /mnt/cdrom      iso9660         noauto,ro,user          0 0
# /proc should always be enabled
proc            /proc           proc            defaults                0 0

Arriba, cada línea no comentada en /etc/fstab especifica una partición del dispositivo de bloques, un sitio para montaje, un tipo de sistema de archivos, las opciones para usar cuando se monte el sistema de archivos, y dos campos numéricos. El primer campo numérico se usa para indicarle a la orden de respaldo dump el sistema de archivos que debe ser respaldado. Por supuesto, si no planea utilizar dump en su sistema, entonces puede ignorar sin peligro este campo. El último campo es usado por el programa de revisión de integridad del sistema de archivos fsck, e indica el orden en que sus sistemas de archivos deben ser revisados en el arranque. Tocaremos el tema fsck de nuevo en unos cuantos paneles.

Mire la línea /dev/hda1; verá que /dev/hda1 es un sistema de archivos ext3 que debe ser montado en el sitio para montaje /boot. Ahora mire las opciones de montaje de /dev/hda1 en la columna opts. La opción noauto le indica al sistema no montar /dev/hda1 de manera automática en el momento del arranque del sistema.

También, observe que la opción noauto, desactiva la grabación de la información atime (tiempo del último acceso) en el disco. Esta información por lo general no es necesaria, y desactivar las actualizaciones de atime tiene un efecto positivo en el desempeño del sistema de archivos.

Ahora, eche un vistazo a la línea /proc y tenga en cuenta la opción defaults. Use defaults siempre que desee que un sistema de archivos se monte solo con las opciones estándar. Debido a que /etc/fstab tiene campos múltiples, no podemos simplemente dejar el campo de la opción en blanco.

Observe también la línea para /dev/hda2 en /etc/fstab. Esta línea define a /dev/hda2 como un dispositivo de intercambio. Debido a que los dispositivos de intercambio no se montan como sistemas de archivos, se especifica none (ninguno) en el campo mountpoint (punto de montaje). Gracias a esta entrada de /etc/fstab, nuestro dispositivo de intercambio /dev/hda2 se habilitará automáticamente cuando se inicie el sistema.

Con una entrada para /dev/cdrom en /etc/fstab como la de arriba, montar la unidad CD-ROM es más sencillo. En lugar de escribir:

Listado de Código 2.31: Montar CD-ROM sin la entrada en fstab

# mount -t iso9660 /dev/cdrom /mnt/cdrom -o ro

Podemos escribir:

Listado de Código 2.32: Montar CD-ROM con la entrada en fstab

# mount /dev/cdrom

De hecho, usar /etc/fstab nos permite tomar ventaja de la opción user (usuario). La opción de montaje user le indica al sistema que debe permitir que cualquier usuario pueda montar ese sistema de archivos en particular. Esto resulta útil para los medios extraíbles como las unidades CD-ROM. Sin esta opción de montaje de fstab, solo el superusuario podría utilizar la unidad CD-ROM.

Desmontar sistemas de archivos

Por lo general, todos los sistemas de archivos montados son desmontados automáticamente por el sistema cuando se reinicia o se apaga. Cuando se desmonta un sistema de archivos, cualquier dato de ese sistema de archivos que se haya almacenado en memoria se vacía al disco.

Sin embargo, también es posible desmontar sistemas de archivos manualmente. Antes de que un sistema de archivos se pueda desmontar, primero debe asegurarse de que no hay otros procesos en ejecución que tengan archivos abiertos del sistema de archivos en cuestión. Después, utilice la orden umount, especificando el nombre del dispositivo o el sitio de montaje como argumento:

Listado de Código 2.33: Usar la orden umount

# umount /mnt

o

Listado de Código 2.34: Usar la orden umount

# umount /dev/hda3

Una vez desmontado, cualquier archivo en /mnt que se "tapó" por el sistema de archivos previamente montado reaparecerá.

Introducción a fsck

Si el sistema se cae o se bloquea por alguna razón, éste no tiene oportunidad de desmontar limpiamente los sistemas de archivos. Cuando esto sucede, los sistemas de archivos quedan en un estado inconsistente (impredecible). Cuando el sistema reinicia, el programa fsck detectará que los sistemas de archivos no fueron desmontados limpiamente y realizará una revisión de consistencia de los sistemas de archivos que figuran en /etc/fstab.

Importante: Para que fsck revise un sistema de archivos, debe tener un número diferente de cero en el campo "pass" (el último campo) en /etc/fstab. Normalmente, el sistema de archivos raíz se define con un número pass 1, especificando que debe ser revisado primero. Todos los otros sistemas de archivos que deben ser revisados al inicio deben tener un número pass de 2 o superior. Para algunos sistemas de archivos transaccionales como ReiserFS, es seguro tener un número pass 0 ya que el código de registro diario (y no un fsck externo) se encarga de hacer al sistema de archivos consistente de nuevo.

A veces, es posible que después de reiniciar sea incapaz de reparar totalmente un sistema de archivos dañado parcialmente. En estos casos, lo que necesita hacer es bajar su sistema a un modo de mono-usuario y ejecutar fsck manualmente, suministrando la partición del dispositivo de bloques como argumento. Como fsck realiza la reparación de su sistema de archivos, es posible que le pregunte si desea reparar defectos particulares del sistema de archivos. En general, debe decir y (si) a todas las preguntas y permitirle a fsck hacer su trabajo.

Problemas con fsck

Uno de los problemas con el análisis de fsck es que puede tomar mucho tiempo para completarse, ya que se necesita analizar la totalidad de los metadatos (estructura de datos interna) del sistema de archivos con el fin de asegurar su consistencia. Con sistemas de archivos muy grandes, no es raro que un fsck exhaustivo tome más de una hora.

Para resolver este problema, se diseñó un nuevo tipo de sistema de archivos, llamado sistema de archivos transaccional. Los sistemas de archivos transaccionales guardan un registro en disco de los cambios recientes de los metadatos del sistema de archivos. En caso de una caída, el controlador del sistema de archivos inspecciona el registro. Debido a que el registro contiene un relato preciso de los últimos cambios en el disco, solo esas partes de los metadatos del sistema de archivos necesitarán revisarse para buscar errores. Gracias a esta importante diferencia de diseño, revisar la consistencia del sistema de archivos transaccional generalmente solo toma unos segundos, sin importar el tamaño del sistema de archivos. Por esta razón, los sistemas de archivos transaccionales están ganando popularidad en la comunidad Linux. Para más información de sistemas de archivos transaccionales, vea Advanced filesystem implementor's guide, part 1: Journaling and ReiserFS.

Vamos a cubrir la mayoría de los sistemas de archivos disponibles en Linux, junto con sus ordenes y opciones asociadas.

El sistema de archivos ext2

El sistema de archivos ext2 ha sido el estándar de los sistemas de archivos durante muchos años. Generalmente tiene un buen desempeño para la mayoría de las aplicaciones, pero no ofrece ninguna capacidad de registro diario. Esto lo hace inadecuado para sistemas de archivos muy grandes, debido a que fsck puede tomar un tiempo extremadamente largo. Además, ext2 tiene algunas limitaciones incorporadas por el hecho de que todo sistema de archivos ext2 tiene un número fijo de inodos que puede contender. Dicho esto, ext2 es considerado generalmente un sistema de archivos no transaccional extremadamente robusto y eficiente.

  • En núcleos: 2.0+
  • Registro diario: no
  • Orden mkfs: mke2fs
  • Ejemplo mkfs: mke2fs /dev/hdc7
  • Ordenes relacionadas: debugfs, tune2fs, chattr
  • Opciones de montaje relacionadas con el desempeño: noatime.

El sistema de archivos ext3

El sistema de archivos ext3 utiliza el mismo formato en disco que ext2, pero agrega capacidades de registro diario. De hecho, de todos los sistemas de archivos Linux, ext3 tiene el soporte más amplio de registro diario, soportando no solo el registro de metadatos, sino también el registro de datos ordenados (el modo predeterminado) y registro completo de datos y metadatos. Esos modos "especiales" de registro ayudan a asegurar la integridad de los datos, no solo para fscks más cortos como otras implementaciones de registros diarios. Por esta razón, ext3 es el mejor sistema de archivos para usar si la integridad de los datos es la primera y absoluta prioridad. Sin embargo, estas características de integridad de datos causan un poco de impacto en el desempeño. Además puesto que ext3 utiliza el mismo formato en disco que ext2, todavía sufre de las mismas limitaciones de escalamiento que su primo no-transaccional. Ext3 es una buena elección si está buscando un buen sistema de archivos transaccional de propósito general que además es muy robusto.

El sistema de archivos ReiserFS

ReiserFS es un sistema de archivos relativamente nuevo que ha sido diseñado con el propósito de proveer un buen desempeño en archivos pequeños, muy buen desempeño general y ser muy escalable. En general, ReiserFS ofrece un muy buen rendimiento en la mayoría de las situaciones. ReiserFS es el preferido de muchos por su velocidad y escalabilidad.

El sistema de archivos XFS

El sistema de archivos XFS es un sistema de archivos transaccional de clase empresarial que se está portando a Linux por SGI. XFS es un sistema de archivos transaccional, completo, escalable y es una buena opción para hardware de una gama alta, fiable (ya que depende en gran medida del almacenamiento de datos en la RAM), pero no es una buena opción para hardware de gama baja.

El sistema de archivos JFS

JFS es un sistema de archivos transaccional de alto desempeño portado a Linux por IBM. JFS es utilizado por los servidores empresariales IBM y está diseñado para aplicaciones de alto rendimiento. Puede aprender más acerca de JFS en el sitio Web del proyecto JFS.

  • En núcleos: 2.4.20+
  • Registro diario: metadatos
  • Orden mkfs: mkfs.jfs
  • Ejemplo mkfs: mkfs.jfs /dev/hdc7
  • Opciones de montaje relacionadas con el desempeño: noatime
  • Bibliografía de JFS: el sitio Web del proyecto JFS (IBM).

VFAT

El sistema de archivos VFAT no es realmente un sistema de archivos que elegiría para almacenar archivos Linux. En cambio, es un sistema de archivos compatible con DOS que le permite montar e intercambiar datos con los sistemas de archivos DOS y Windows basados en FAT. El sistema de archivos VFAT está presente en el núcleo estándar Linux.

3.  Arrancar el sistema

Acerca de esta sección

Esta sección hace una introducción al procedimiento de arranque de Linux. Cubriremos el concepto de gestor de arranque, cómo definir las opciones del núcleo al arranque, y cómo examinar el registro de arranque para localizar errores.

El MBR

Los procesos de arranque son similares para todas las máquinas, independientemente de cuál distribución está instalada. Considere el siguiente disco duro de ejemplo:

Listado de Código 3.1: Estructura de un disco duro

+----------------+
|      MBR       |
+----------------+
|  Partición 1:  |
| Raíz Linux (/) |
|   contiene el  |
|   núcleo y el  |
|    sistema.    |
+----------------+
|  Partición 2:  |
|   Linux swap   |
+----------------+
|  Partición 3:  |
|   Windows 3.0  |
|(último arranque|
|    en 1992)    |
+----------------+

En primer lugar, el BIOS de la computadora lee los primeros sectores del disco duro. Estos sectores contienen un programa muy pequeño, llamado "registro principal de arranque", o "MBR" (por sus siglas en inglés). El MBR tiene almacenada la localización del núcleo Linux en el disco duro (partición 1 en el ejemplo de arriba), por lo que carga el núcleo en la memoria y lo inicia.

El proceso de arranque del núcleo

La siguiente cosa que verá (aunque es probable que parpadee rápidamente) es una línea similar a la siguiente:

Listado de Código 3.2: Línea de proceso de arranque

Linux version 2.4.16 (root@time.flatmonk.org) (gcc version 2.95.3 20010315
(release)) #1 Sat Jan 12 19:23:04 EST 2002

Esta es la primera línea impresa por el núcleo cuando este empieza a ejecutarse. La primera parte es la versión del núcleo, seguido por la identificación del usuario que construyó el núcleo (generalmente el superusuario), el compilador que lo construyó, y la fecha en que fue construido.

Seguido a esta línea está un gran cantidad de salidas desde el núcleo con respecto al hardware en el sistema: el procesador, la línea de datos PCI, el controlador del disco, discos, puertos seriales, unidad de disquete, dispositivos USB, adaptadores de red, tarjetas de sonido, y posiblemente otros que en su turno reportan su estado.

/sbin/init

Cuando el núcleo termina de cargar, inicia un programa llamado init. Este programa permanece ejecutándose hasta que el sistema es apagado. Siempre tiene asignado el identificador (ID) de proceso 1, como puede ver:

Listado de Código 3.3: ID del proceso init

$ ps --pid 1
PID TTY          TIME CMD
1 ?        00:00:04 init.system

El programa init arranca el resto de la distribución ejecutando una serie de guiones. Estos guiones por lo general viven en /etc/rc.d/init.d o /etc/init.d, y realizan servicios como definir el nombre del sistema anfitrión, revisar el sistema de archivos en busca de errores, montar sistemas de archivos adicionales, habilitar la red, inicializar servicios de impresión, etc. Cuando los guiones están completos, init inicia un programa llamado getty el cual despliega el símbolo de espera de órdenes de inicio, y ¡ya está listo!

Cavando en: LILO

Ahora que hemos dado un rápido recorrido a través del proceso de arranque, veamos más de cerca la primera parte: el MBR y la carga del núcleo. El mantenimiento del MBR es responsabilidad del "gestor de arranque". Los dos gestores de arranque más populares para Linux basados en x86 son "LILO" (LInux LOader) y "GRUB" (GRand Unified Bootloader).

De los dos, LILO es gestor de arranque mayor y el más común. La presencia de LILO en el sistema se reporta en el arranque, con el breve símbolo de espera de órdenes: "LILO boot:". Tenga en cuenta que posiblemente deba mantener pulsada la tecla mayúsculas durante el arranque para obtener el símbolo de espera de órdenes, debido a que muchas veces el sistema está configurado para pasar rápido y directo sin detenerse.

No hay mucha fanfarria en el símbolo de espera de órdenes de LILO, pero si pulsa la tecla <tabulador>, se le presentará una lista de núcleos potenciales (u otros sistemas operativos) para arrancar. A menudo solo hay uno en la lista. Puede arrancar uno de ellos escribiéndolo y presionando <intro>. De manera alternativa puede simplemente pulsar <intro> y el primer elemento de la lista arrancará de manera predeterminada.

Usar LILO

Es ocasiones es posible que desee pasarle una opción al núcleo en el momento de arranque. Algunas de las opciones más comunes son root= para especificar un sistema de archivos raíz alternativo, init= para especificar un programa init alternativo (como init=/bin/sh para rescatar un sistema mal configurado), y mem= para especificar la cantidad de memoria en el sistema (por ejemplo mem=512M en caso de que Linux autodetecte solo 128M). Puede pasarle al núcleo estas opciones en el símbolo de espera de órdenes de arranque de LILO:

Listado de Código 3.4: Símbolo de espera de órdenes de arranque LILO

LILO boot: linux root=/dev/hdb2 init=/bin/sh mem=512M

Si necesita especificar estas opciones en la línea de comandos, debe considerar agregarlas a /etc/lilo.conf. El formato de este archivo está descrito en la página de manual lilo.conf(5).

Una advertencia importante de LILO

Antes de pasar a GRUB, hay una advertencia importante de LILO. Siempre que haga cambios en /etc/lilo.conf, o cada vez que instale un nuevo núcleo, debe ejecutar lilo. El programa lilo reescribe el MBR para reflejar los cambios que ha hecho, incluyendo la grabación de la ubicación absoluta del núcleo en el disco. El ejemplo siguiente hace uso de la opción -v para verbosidad:

Listado de Código 3.5: Usar la orden lilo con la opción -v

# lilo -v
LILO version 21.4-4, Copyright (C) 1992-1998 Werner Almesberger
'lba32' extensions Copyright (C) 1999,2000 John Coffman

Reading boot sector from /dev/hda
Merging with /boot/boot.b
Mapping message file /boot/message
Boot image: /boot/vmlinuz-2.2.16-22
Added linux *
/boot/boot.0300 exists - no backup copy made.
Writing boot sector.

Cavando en: GRUB

Se puede considerar a GRUB como la siguiente generación de gestores de arranque, después de LILO. Más visible a los usuarios, ofrece una interfaz con un menú en lugar de el primitivo símbolo de espera de órdenes de LILO. Para administradores de sistemas, los cambios son más significativos. GRUB soporta más sistemas operativos que LILO, y proporciona cierta seguridad basada en contraseñas en el menú de arranque, también es más sencillo de administrar.

GRUB se instala usualmente con la orden grub-install. Una vez instalado, el menú de GRUB es administrado por medio de la edición del archivo /boot/grub/grub.conf. Estas dos tareas están fuera del alcance de este documento; debería leer las páginas de información de GRUB antes de intentar instalar o administrar GRUB.

Usar GRUB

Para darle parámetros al núcleo, puede pulsar e en el menú de arranque. Esto le da la oportunidad de editar (presionando nuevamente e) tanto el nombre del núcleo a cargar como los parámetros para pasarle. Cuando termine la edición, pulse <intro> después b para arrancar con los cambios.

dmesg

Los mensajes de arranque del núcleo y los guiones de inicio por lo general se despliegan rápidamente. Puede que observe un error, pero se ha ido antes de que pueda leerlo correctamente. En este caso, hay dos lugares que puede ver después de que el sistema arranca para ver qué salió mal (y esperemos tener una idea de cómo solucionarlo).

Si el error ocurrió mientras que el núcleo se cargaba o probando los dispositivos de hardware, puede obtener una copia del registro del núcleo utilizando la orden dmesg:

Listado de Código 3.6: Obtener el registro del núcleo utilizando la orden dmesg

Linux version 2.4.16 (root@time.flatmonk.org) (gcc version 2.95.3 20010315
(release)) #1 Sat Jan 12 19:23:04 EST 2002

Vaya, ¡reconocemos esa línea! Es la primera que el núcleo imprime cuando carga. En efecto, si envía por una tubería la salida de dmesg a un paginador, puede ver todos los mensajes escritos por el núcleo durante el arranque, además de los mensajes que el núcleo ha impreso en la consola mientras tanto.

/var/log/messages

El segundo lugar para buscar información es el archivo /var/log/messages. Este archivo lo modifica el demonio syslog, el cual acepta entradas desde librerías, demonios, y el núcleo. Cada línea en el archivo de mensajes tiene fecha y hora. Este archivo es un buen lugar para buscar errores que ocurrieron durante la etapa de arranque de los guiones de inicio. Por ejemplo, para ver los últimos mensajes desde el servidor de nombres:

Listado de Código 3.7: Usar grep en el archivo /var/log/messages

# grep named /var/log/messages | tail -3
Jan 12 20:17:41 time /usr/sbin/named[350]: listening on IPv4 interface lo,
127.0.0.1#53
Jan 12 20:17:41 time /usr/sbin/named[350]: listening on IPv4 interface
eth0, 10.0.0.1#53
Jan 12 20:17:41 time /usr/sbin/named[350]: running

Información adicional

Información adicional relacionada con esta sección se puede encontrar aquí:

4.  Niveles de ejecución

Modo mono-usuario

Recordemos de la sección con respecto a los gestores de arranque que es posible pasarle parámetros al núcleo cuando arranca. Uno de los parámetros más usados es s, el cual hace que el sistema inicie en modo "mono-usuario". Este modo por lo general solo monta el sistema de archivos raíz, inicia un subconjunto mínimo de los guiones de inicio e inicia una interfaz de comandos en lugar de proporcionar un símbolo de espera de órdenes de inicio. Además la red no está configurada, por lo que no hay ninguna posibilidad de que factores externos afecten su trabajo.

Entendiendo el modo mono-usuario

Entonces, ¿qué "trabajo" se puede hacer con el sistema en ese estado? Para responder a esta pregunta, debemos tener en cuenta una gran diferencia entre Linux y Windows. Windows está diseñado para ser utilizado por lo general por una sola persona a la vez, sentado en la consola. En efecto, siempre está en un modo "mono-usuario". Por otro lado, Linux se utiliza con más frecuencia para servir a las aplicaciones de red, o proveer interfaz de comandos o sesiones de X a usuarios remotos en la red. Estas variables adicionales no son deseables cuando se desean realizar operaciones de mantenimiento tales como la restauración desde una copia de seguridad, creación o modificación de sistemas de archivos, actualización del sistema desde un CD, etc. En estos casos debe usar el modo mono-usuario.

Niveles de ejecución

De hecho, no es realmente necesario reiniciar para poder llegar a un modo mono-usuario. El programa init gestiona el modo actual, o "nivel de ejecución", para el sistema. Los niveles de ejecución estándar en un sistema Linux se definen como sigue:

  • 0: Detener la computadora
  • 1 o s: Modo mono-usuario
  • 2: Multi-usuario, no red
  • 3: Multi-usuario, consola de texto
  • 4: Multi-usuario, consola gráfica
  • 5: El mismo que 4
  • 6: Reiniciar la computadora.

Estos niveles de ejecución varían entre las distribuciones, así que asegúrese de consultar la documentación de su distribución.

telinit

Para cambiar a modo mono-usuario, use la orden telinit, la cual le indica a init cambiar los niveles de ejecución:

Listado de Código 4.1: Usar la orden telinit

# telinit 1

Puede ver en la tabla anterior que también se puede apagar o reiniciar el sistema de esta manera. telinit 0 detiene la computadora; telinit 6 reiniciará la computadora. Cuando se ejecuta la orden telinit para cambiar los niveles de ejecución, un subconjunto de los guiones init se ejecutarán para apagar o iniciar los servicios del sistema.

Etiqueta del nivel de ejecución

Sin embargo, tenga en cuenta que esto no es de buen gusto si hay usuarios conectados al sistema en ese momento (que se pueden enojar bastante). La orden shutdown proporciona un método para cambiar los niveles de ejecución en una manera que trata a los usuarios de un modo razonable. Similar a la habilidad de la orden kill para mandar una variedad de señales a los procesos, se puede usar shutdown para detener, reiniciar, o cambiar a modo mono-usuario. Por ejemplo, para cambiar a modo mono-usuario en 5 minutos:

Listado de Código 4.2: Cambiar a modo mono-usuario con una demora de 5 minutos

# shutdown 5
Broadcast message from root (pts/2) (Tue Jan 15 19:40:02 2002):
The system is going DOWN to maintenance mode in 5 minutes!

Si pulsa <control-c> en ese momento, puede cancelar el cambio pendiente a modo mono-usuario. El mensaje anterior aparecería en todas las terminales del sistema, de modo que los usuarios tendrían una cantidad de tiempo razonable para guardar sus trabajo y cerrar sesión. (Algunos podrían argumentar si 5 minutos es "razonable" o no).

"Now" y halt

Si es la única persona en el sistema, puede usar "now" (ahora) en lugar del argumento en minutos. Por ejemplo, para reiniciar el sistema en este momento:

Listado de Código 4.3: Usar la orden shutdown con la opción now

# shutdown -r now

No hay posibilidad de oprimir <control-c> en este caso, el sistema ya se encuentra en el camino a apagarse. Por último, la opción -h detendrá el sistema:

Listado de Código 4.4: Detener el sistema

# shutdown -h 1
Broadcast message from root (pts/2) (Tue Jan 15 19:50:58 2002):
The system is going DOWN for system halt in 1 minute!

El nivel de ejecución predeterminado

Probablemente en este punto ha concluido que el programa init es muy importante en un sistema Linux. Puede configurarlo editando el archivo /etc/inittab, el cual es descrito en la página de manual inittab(5). Solo veremos una de las líneas clave en este archivo:

Listado de Código 4.5: Editar el archivo de configuración init

# grep ^id: /etc/inittab
id:3:initdefault:

En mi sistema, el nivel de ejecución 3 es el nivel de ejecución predeterminado. Puede ser útil cambiar este valor si prefiere que su sistema arranque de inmediato en un inicio de sesión gráfico (por lo general el nivel de ejecución de 4 o 5). Para ello, basta con editar el archivo y cambiar el valor de esa línea. ¡Pero cuidado! Si lo cambia a algún valor no válido, probablemente tendrá que emplear el truco de init=/bin/sh que mencioné anteriormente.

Información adicional

Información adicional relacionada con esta sección se puede encontrar en:

5.  Cuotas del sistema de archivos

Introducción a cuotas

Las cuotas son una característica de Linux que permite limitar el uso del disco por usuario o por grupo. Son útiles para impedir que cualquier usuario o grupo use una parte injusta de un sistema de archivos, o de llenarlo por completo. Las cuotas solo se pueden habilitase y gestionarse por medio del superusuario. En esta sección, voy a describir cómo configurar las cuotas en el sistema Linux y gestionarlas de manera efectiva.

Apoyo del núcleo

Las cuotas son una característica del sistema de archivos, por lo tanto, requieren el apoyo del núcleo. Lo primero que hay que hacer es comprobar que tiene soporte de cuotas en el núcleo. Puede hacerlo usando grep:

Listado de Código 5.1: Comprobación de la configuración del núcleo para el soporte de cuotas

# cd /usr/src/linux
# grep -i quota .config
CONFIG_QUOTA=y
CONFIG_XFS_QUOTA=y

Si esta orden regresa algo menos concluyente (como CONFIG_QUOTA is not set) entonces debe reconstruir el núcleo para incluir soporte de cuotas. No es un proceso difícil, pero se encuentra fuera del alcance de esta sección del tutorial. Si no está familiarizado con los pasos para construir e instalar un nuevo núcleo, puede considerar la referencia a este tutorial.

Apoyo del sistema de archivos

Antes de profundizar en la administración de cuotas, por favor, tenga en cuenta que el soporte de cuotas en Linux en las series del núcleo 2.4.x no está completo. Actualmente hay problemas con las cuotas en los sistemas de archivos ext2 y ext3, y ReiserFS parece no apoyar las cuotas en absoluto. Este tutorial basa sus ejemplos en XFS, support quotas , que parece soportar cuotas apropiadamente.

Configurar cuotas

Para comenzar a configurar las cuotas en el sistema, debe editar /etc/fstab para montar los sistemas de archivos afectados con cuotas habilitadas. Para nuestro ejemplo, usamos un sistema de archivos XFS montado con cuotas habilitadas para usuario y grupo:

Listado de Código 5.2: Configurar cuotas

# grep quota /etc/fstab
/usr/users   /mnt/hdc1    xfs    usrquota,grpquota,noauto   0 0
# mount /usr/users

Tenga en cuenta que las opciones usrquota y grpquota no necesariamente habilitan cuotas en el sistema de archivos. Puede asegurarse de que las cuotas se habiliten usando la orden quotaon:

Listado de Código 5.3: Habilitar cuotas

# quotaon /usr/users

Hay una orden correspondiente quotaoff si desea deshabilitar las cuotas en el futuro:

Listado de Código 5.4: Deshabilitar quotas

# quotaoff /usr/users

Pero por el momento, si está intentando algunos de los ejemplos de este tutorial, asegúrese de tener cuotas habilitadas.

La orden quota

La orden quota muestra el uso del disco de un usuario y los límites para todos los sistemas de archivos montados actualmente. La opción -v incluye en la lista los sistemas de archivos donde las cuotas están habilitadas, pero no el almacenamiento que está asignado para el usuario.

Listado de Código 5.5: Usar la orden quota

# quota -v

Disk quotas for user root (uid 0):
Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
/dev/hdc1       0       0       0               3       0       0

La primera columna, "blocks", muestra la cantidad de espacio en disco que el superusuario está utilizando en cada sistema de archivos en la lista. Las siguientes columnas, "quote" y "limit", hacen referencia a los límites vigentes del espacio en disco. Vamos a explicar la diferencia entre cuota y límite, y el significado de la columna "grace" después. La columna "files" muestra el número de archivos que le pertenecen al superusuario en el sistema de archivos particular. Las siguientes columnas "quota" y "limit" se refieren al límite de los archivos.

Ver la cuota

Cualquier usuario puede utilizar la orden quota para ver su propio reporte de cuota como se muestra en el ejemplo anterior. Sin embargo, solo el superusuario puede ver las cuotas de otros usuarios y grupos. Por ejemplo, digamos que tenemos un sistema de archivos, /dev/hdc1 montado en /usr/users, con dos usuarios: jane y john. Primero, veamos los límites y el espacio de disco utilizado por jane.

Listado de Código 5.6: Ver la cuota para un usuario

# quota -v jane

Disk quotas for user jane (uid 1003):
Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
/dev/hdc1    4100       0       0               6       0       0

En este ejemplo, podemos ver que las cuotas de jane están definidas como cero, lo que indica que no tiene un límite.

edquota

Ahora digamos que queremos darle al usuario jane una cuota. Haremos esto con la orden edquota. Antes de comenzar a editar las cuotas, veamos cuanto espacio disponible hay disponible en /usr/users:

Listado de Código 5.7: Revisar el espacio disponible en /usr/users

# df /usr/users

Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/hdc1               610048      4276    605772   1% /usr/users

Este no es un sistema de archivos particularmente grande, solo 600 MB aproximadamente. Parece prudente darle a jane una cuota para que no pueda usar más de una parte justa. Cuando ejecuta edquota, se crea un archivo temporal para cada uno de los usuarios o grupos que especifica en la línea de comandos.

La orden edquota lo envía a un editor, el cual lo habilita para agregar y/o modificar cuotas por medio de este archivo temporal.

Listado de Código 5.8: Modificar cuota

# edquota jane

Disk quotas for user jane (uid 1003):
Filesystem         blocks       soft       hard     inodes     soft     hard
/dev/hdc1           4100          0          0          6        0        0

Parecido a la salida de la orden quota de arriba, las columnas "block" e "inodes" en este archivo temporal hacen referencia al espacio del disco y el número de archivos que jane está utilizando. No puede modificar el número de bloques o inodos, cualquier intento de hacerlo será descartado por el sistema. Las columnas "soft" y "hard" muestran la cuota de jane, la cual podemos ver actualmente como ilimitada (de nuevo, cero indica que no hay una cuota).

Entendiendo edquota

El límite soft es la cantidad máxima de uso de disco que jane ha asignado para su sistema (en otras palabras, su cuota). Si jane utiliza más espacio de disco del que está asignado a su límite soft, se emitirán advertencias sobre su violación de cuotas vía correo electrónico. El límite hard indica el límite absoluto del uso del disco, que el usuario no puede exceder. Si jane trata de usar más espacio en disco del que está especificado en el límite hard, recibirá un error "Límite de cuota excedido" ("Disk quota exceeded") y no podrá completar la operación.

Hacer cambios

Así que aquí cambiamos los límites soft y hard de Jane y guardamos el archivo:

Listado de Código 5.9: Cambiar los límites soft y hard


Disk quotas for user jane (uid 1003):
Filesystem         blocks       soft       hard     inodes     soft     hard
/dev/hdc1           4100      10000      11500          6     2000     2500

Al ejecutar la orden quota, podemos inspeccionar las modificaciones:

Listado de Código 5.10: Revisar la cuota para el usuario jane

# quota jane

Disk quotas for user jane (uid 1003):
Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
/dev/hdc1    4100   10000   11500               6    2000    2500

Copiar cuotas

Recordará que también tenemos otro usuario en este sistema de archivos, john. Si quiere darle a john la misma cuota a que le dio a jane, podemos usar la opción -p en edquota, la cual utiliza las cuotas de jane como un prototipo para los siguientes usuario en la línea de comandos. Es una manera fácil de definir cuotas para los grupos de usuarios.

Listado de Código 5.11: Copiar quotas

# edquota -p jane john
# quota john

Disk quotas for user john (uid 1003):
Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
/dev/hdc1       0   10000   11500               1    2000    2500

Restricciones de los grupos

También podemos usar edquota para restringir la asignación del espacio en disco basados en la propiedad de grupo de los archivos. Por ejemplo, para editar las cuotas para el grupo users:

Listado de Código 5.12: Editar cuotas para el grupo users

# edquota -g users
Disk quotas for group users (gid 100):
Filesystem blocks soft hard inodes soft hard
/dev/hdc1 4100 500000 510000 7 100000 125000

A continuación, para ver las cuotas modificadas para el grupo users

Listado de Código 5.13: Ver las cuotas modificadas

# quota -g users
Disk quotas for group users (gid 100):
Filesystem blocks quota limit grace files quota limit grace
/dev/hdc1 4100 500000 510000 7 100000 125000

La orden repquota

Ver las cuotas de cada uno de los usuarios utilizando la orden quota puede ser tedioso si hay muchos usuarios dentro del sistema de archivos. La orden repquota resume las cuotas de un sistema de archivos en un lindo reporte. Por ejemplo para ver las cuotas para todos los usuarios y grupos en /usr/users:

Listado de Código 5.14: Resumir cuotas

# repquota -ug /usr/users
*** Report for user quotas on device /dev/hdc1
Block grace time: 7days; Inode grace time: 7days
Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --       0       0       0              3     0     0
john      --       0   10000   11500              1  2000  2500
jane      --    4100   10000   11500              6  2000  2500

*** Report for group quotas on device /dev/hdc1
Block grace time: 7days; Inode grace time: 7days
Block limits             File limits
Group           used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --       0       0      0               3     0     0
users     --    4100  500000 510000               7 100000 125000

Opciones de repquota

Hay un par de opciones más para repquota que vale la pena mencionar. repquota -a informará sobre todos los sistemas de archivos de lectura y escritura montados que tienen cuotas habilitadas. repquota -n no resolverá uids y gids para los nombres. Esto aumentará la velocidad de la salida para listas grandes.

Monitorizar cuotas

Si es administrador de un sistema, debe tener un modo de monitorizar las cuotas para asegurarse de que no están siendo excedidas. Una manera fácil de hacer esto es usar warnquota. La orden warnquota envía un correo electrónico a los usuarios que han excedido su límite soft. Por lo general warnquota se ejecutará como un trabajo preprogramado bajo el control del demonio cron.

Cuando un usuario excede su límite soft, la columna grace en la salida de la orden quota le indicará el periodo de gracia, es decir el tiempo antes de que el sistema de archivos force el límite soft.

Listado de Código 5.15: Revisar el periodo de gracia

Disk quotas for user jane (uid 1003):
Filesystem  blocks   quota   limit   grace   files   quota   limit
grace
/dev/hdc1   10800*  10000   11500    7days      7     2000    2500

De manera predeterminada, el periodo de gracia para bloques e inodos es de siete días.

Modificar el período de gracia

Puede modificar el período de gracia para el sistema de archivos utilizando equota:

Listado de Código 5.16: Modificar el período de gracia

# edquota -t

Esto lo coloca en el editor de un archivo temporal parecido a esto:

Listado de Código 5.17: Vista del editor grace

Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem             Block grace period     Inode grace period
/dev/hdc1                    7days                  7days

El texto en el archivo es muy explicativo. ¡Asegúrese de darle a los usuarios el tiempo suficiente para recibir su correo electrónico de advertencia y encontrar algunos archivos para eliminar!

Revisar cuotas en el arranque

También es posible que desee revisar las cuotas en el arranque. Puede hacer esto utilizando un guión para ejecutar la orden quotacheck; hay un guión de ejemplo en Quota Mini HOWTO. La orden quotacheck también tiene la habilidad de reparar archivos de cuota dañados; familiarícese con ella leyendo la página de manual de quotacheck(8).

También recuerde lo que mencionamos anteriormente sobre quotaon y quotaoff. Debe incorporar quotaon en su guión de arranque para que las cuotas se habiliten. Para habilitar las cuotas en todos los sistemas de archivos donde las cuotas son compatibles, utilice la opción -a:

Listado de Código 5.18: Usar la opción -a

# quotaon -a

6.  Registros del sistema

Introducción a syslogd

El demonio syslog ofrece un mecanismo maduro de cliente-servidor para el registro de mensajes desde programas ejecutándose en el sistema. Syslog recibe un mensaje desde un demonio o programa, categoriza el mensaje por prioridad y tipo, entonces lo registra de acuerdo a las reglas configurables por el administrador. El resultado es un enfoque robusto y unificado para la gestión de registros.

Leer registros

Saltemos justo ahí y veamos el contenido de un archivo de registro grabado por syslog. El FHS (vea Parte 2 de esta serie de tutoriales) indica que los archivos de registro deben estar en /var/log. Aquí usamos la orden tail para desplegar las últimas 10 líneas en el archivo "messages":

Listado de Código 6.1: Leer registros

# cd /var/log
# tail messages
Jan 12 20:17:39 bilbo init: Entering runlevel: 3
Jan 12 20:17:40 bilbo /usr/sbin/named[337]: starting BIND 9.1.3
Jan 12 20:17:40 bilbo /usr/sbin/named[337]: using 1 CPU
Jan 12 20:17:41 bilbo /usr/sbin/named[350]: loading configuration from
'/etc/bind/named.conf'
Jan 12 20:17:41 bilbo /usr/sbin/named[350]: no IPv6 interfaces found
Jan 12 20:17:41 bilbo /usr/sbin/named[350]: listening on IPv4 interface
lo, 127.0.0.1#53
Jan 12 20:17:41 bilbo /usr/sbin/named[350]: listening on IPv4 interface
eth0, 10.0.0.1#53
Jan 12 20:17:41 bilbo /usr/sbin/named[350]: running
Jan 12 20:41:58 bilbo gnome-name-server[11288]: starting
Jan 12 20:41:58 bilbo gnome-name-server[11288]: name server starting

Puede que recuerde del curso exprés de procesamiento de texto que la orden tail muestra las últimas líneas de un archivo. En este caso, podemos ver que el servidor de nombres named se inicializó recientemente en este sistema, el cual se llama bilbo. Si estuviéramos implementando IPv6, se puede notar que named no encontró las interfaces de IPv6, lo que indica un problema potencial. Además, podemos ver que un usuario puede haber iniciado recientemente GNOME, indicado por la presencia de gnome-name-server.

Usar tail con archivos de registro

Un administrador de sistemas con experiencia puede utilizar tail -f para dirigir la salida a un archivo de registro tal como se presenta:

Listado de Código 6.2: Usar la orden tail -f

# tail -f /var/log/messages

Por ejemplo, en caso de depurar nuestro problema teórico del IPv6, ejecutar la orden de arriba en una terminal mientras detiene e inicia named desplegará inmediatamente los mensajes desde ese demonio. Puede ser una técnica útil mientras depura. Algunos administradores incluso mantienen en ejecución constante los mensajes tail -f en una terminal donde pueden vigilar los eventos del sistema.

Hacer grep a los registros

Otra técnica útil es buscar un archivo de registro utilizando la utilidad grep, descrita en la Parte 2 de esta serie de tutoriales. En el caso de arriba, podemos usar grep para encontrar donde ha cambiado el comportamiento de "named":

Listado de Código 6.3: Hacer grep a los registros

# grep named /var/log/messages

Resumen de registros

Lo siguiente resume los archivos de registros generalmente encontrados en /var/log y mantenidos por syslog:

  • messages: Mensajes de información y de errores desde los programas y demonios del sistema general.
  • secure: Mensajes y errores de autenticación, manténgalos separados de messages para seguridad extra.
  • maillog: Mensajes relacionados al correo y errores.
  • cron: Mensajes relacionados con Cron y errores.
  • spooler: Mensajes relacionados con noticias y UUCP y errores.

syslog.conf

A decir verdad, ahora sería un buen momento para investigar el archivo de configuración de syslog, /etc/syslog.conf. (Nota: Si no tiene syslog.conf, siga leyendo en aras de la información ya que puede estar utilizando un demonio syslog alternativo). Buscando ese archivo, veremos que hay entradas para cada uno de los archivos de registro comunes mencionados arriba, además de posiblemente otras entradas. El archivo tiene el formato facility.priority action, donde los campos se definen de la siguiente manera:

facility (instalación): Especifica el subsistema que produjo el mensaje. Las palabras clave válidas para facility son auth, authpriv, cron, daemon, kern, lpr, mail, news, syslog, user, uucp y local0 hasta local7.

priority (prioridad): Especifica la gravedad mínima del mensaje, lo que significa que los mensajes de esta y mayor prioridad coincidirán con esta regla. Las palabras clave válidas para priority son debug, info, notice, warning, err, crit, alert, y emerg.

action (acción): El campo action puede ser un nombre de archivo, tty (tal como /dev/console), una máquina remota con el prefijo @, una lista de usuarios separados por coma, o el envío del mensaje a todos los que han iniciado sesión. La acción mas común es un simple nombre de archivo.

Recarga e información adicional

Esperamos que este resumen del archivo de configuración le ayude a tener noción de la fortaleza del sistema syslog. Debería leer la página de manual syslog.conf(5) para más información antes de realizar cambios. De forma adicional, la página de manual de syslogd(8) brinda información mucho más detallada.

Tome en cuenta que necesita informar al demonio syslog de los cambios del archivo de configuración antes de que se pongan en práctica. Enviar una señal SIGHUP es el método correcto, y puede utilizar la orden killall para hacerlo fácilmente:

Listado de Código 6.4: Usar la orden killall

# killall -HUP syslogd

Una nota de seguridad

Debe tener cuidado ya que syslogd creará sus archivos de registro si no existen. Independientemente de su configuración actual de umask, los archivos se crearán para que todo el mundo los pueda leer. Si le preocupa la seguridad, debe aplicar chmod a los archivos para que solo el superusuario pueda leer y escribir en estos archivos. Además, el programa logrotate (descrito más adelante) se puede configurar para crear nuevos archivos de registro con los permisos apropiados. El demonio syslog siempre conserva los atributos actuales de un archivo de registro existente, así que no tiene por que preocuparse una vez que se ha creado el archivo.

logrotate

Los archivos de registro en /var/log crecerán con el tiempo, y potencialmente pueden llenar el sistema de archivos. Es recomendable emplear un programa como logrotate para gestionar el archivado automático de los registros. El programa logrotate usualmente se ejecuta como una tarea diaria controlada por el demonio cron, y se puede configurar para rotar, comprimir, eliminar o enviar por correo los archivos de registro.

Por ejemplo, una configuración predeterminada de logrotate puede rotar los registros semanalmente, manteniendo cuatro semanas el valor de los registros anteriores (agregando un número secuencial al nombre del archivo), y comprimir los registros anteriores para ahorrar espacio. Además, el programa se puede configurar para que envíe una señal SIGHUP a syslogd de modo que el demonio sepa que los archivos de registro están ahora vacíos y los debe ligar apropiadamente.

Para más información sobre logrotate, consulte la página de manual logrotate(8), que contiene una descripción del programa y la sintaxis del archivo de configuración.

Tema avanzado, klogd

Antes de alejarnos de syslog, me gustaría señalar un par de temas avanzados para los lectores ambiciosos. Estos consejos pueden ahorrarle algo de dolor cuando intente entender temas relacionados a syslog.

En primer lugar, el demonio syslog es en realidad parte del paquete sysklogd, el cual contiene un segundo demonio llamado klogd. El trabajo de klogd es recibir información y mensajes de error desde el núcleo, y pasarlos a syslogd para la clasificación y registro. Los mensajes recibidos por klogd son exactamente los mismos que puede recuperar con la orden dmesg. La diferencia es que dmesg imprime el contenido actual de un búfer de anillo en el núcleo, mientras que klogd está pasando los mensajes a syslog para que no se pierdan cuando el anillo se envuelve.

Tema avanzado, gestores de registro de actividades alternativos

En segundo lugar, hay alternativas al paquete estándar sysklogd. Las alternativas intentan ser más eficientes, fáciles de configurar, y posiblemente con más características que el paquete sysklogd. Syslog-ng y Metalog parecen ser algunas de las alternativas más populares; puede investigarlas si descubre que sysklogd no le ofrece el poder que requiere.

En tercer lugar, puede registrar los mensajes en sus guiones usando la orden logger. Vea la página de manual logger(1) para más información.

7.  Resumen y bibliografía

Resumen

¡Felicidades, ha llegado al final de este tutorial! Bueno, casi. Hay un par de temas que no hemos podido incluir en nuestros primeros cuatro tutoriales debido a las limitaciones de espacio. Afortunadamente, tenemos un buen par de recursos que lo ayudarán a ponerse al día sobre estos temas en poco tiempo. Asegúrese de cubrir estos tutoriales, en particular si está planeando obtener su certificación LPIC nivel 1.

No teníamos espacio suficiente en este tutorial para cubrir el importante tema del respaldo de sistemas. Afortunadamente, IBM developerWorks ya cuenta con un tutorial sobre este tema, llamado Backing up your Linux machines. En este tutorial, aprenderá como respaldar sistemas Linux usando una variante de tar llamada star. Además aprenderá cómo usar la orden mnt para controlar las funciones tape.

El segundo tema que no fuimos capaces de integrar fue la planificación periódica. Afortunadamente, hay buena documentación de cron disponible en la Universidad de Indiana. cron se utiliza para programar los trabajos para que se ejecuten en un momento determinado, y es una herramienta importante para cualquier administrador de sistemas.

Más abajo, encontrará una serie de recursos que le serán útiles para aprender más sobre los temas presentados en este tutorial.

Bibliografía

Para obtener más información sobre el soporte de cuotas en Linux, asegúrese de revisar el Linux Quota mini-HOWTO. También asegúrese de consultar las páginas de manual quota(1), edquota(8), repquota(8), quotacheck(8), y quotaon(8) en su sistema.

Información adicional del proceso de arranque del sistema y de los gestores de arranque se puede encontrar en:

Para obtener más información acerca de los sistemas de archivos Linux, lea la guía avanzada de múltiples partes del implementador del sistema de archivos en la zona Linux de IBM developerWorks, que abarca:

Para más información sobre particionamiento, echar un vistazo a los siguientes consejos sobre particionamiento en la zona Linux de IBM developerWorks:

Bibliografía de ReiserFS:

Bibliografía de ext3:

Bibliografía de XFS y JFS:

No olvide linuxdoc.org. Encontrará su colección de guías, COMOs, FAQs, y páginas de manual como un recurso invaluable. Revise también Linux Gazette y LinuxFocus.

La guía del administrador de sistemas Linux, disponible en Linuxdoc.org's "Guides" section , es un buen complemento a esta serie de tutoriales, ¡Léalo!. También Unix and Internet Fundamentals HOWTO de Eric S. Raymond le será de gran ayuda.

En la serie de artículos “Bash con ejemplos” de developerWorks, Daniel le muestra cómo usar los programas constructores de bash para escribir sus propios guiones de bash. Esta serie (particularmente la parte 1 y 2) será una buena preparación para el examen LPIC nivel 1:

Recomendamos ampliamente el Technical FAQ by Linux Users de Mark Chapman, un listado de 50 páginas que muestran la lista de preguntas más frecuentes de Linux con respuestas detalladas. El FAQ es un archivo formato PDF (Acrobat). Si es un usuario Linux principiante o intermedio, definitivamente debe revisar este FAQ. También recomendamos el Linux glossary for Linux users, también de Mark.

Si no está familiarizado con el editor vi, revise Vi intro -- the cheat sheet method tutorial de Daniel. Este tutorial le dará una gentil y rápida introducción a este poderoso editor de texto. Considere este material como un "debe leer" si desconoce cómo utilizar vi.

Comentarios

Por favor envíe cualquier comentario acerca de este tutorial a los autores:



Imprimir

Página actualizada 17 de diciembre, 2005

Sumario: En este tutorial, haremos una introducción a todos los sistemas de archivos populares en Linux. Le enseñaremos cómo montar y desmontar dispositivos. En el siguiente capítulo aprenderá cómo arrancar el sistema y cómo trabajar con los niveles de ejecución. En la siguiente sección de este tutorial, introduciremos las cuotas del sistema de archivos, le enseñaremos cómo definirlas y cómo configurarlas. Al final de este tutorial conocerá los registros del sistema.

Daniel Robbins
Autor

Chris Houser
Autor

Aron Griffis
Autor

Gabriela Villanueva
Traductora

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.