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
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.
- En núcleos: 2.4.16+
-
Registro diario: metadatos, escritura de datos ordenados,
metadatos+datos completos
- Orden mkfs: mke2fs -j
- Ejemplo mkfs: mke2fs -j /dev/hdc7
- Ordenes relacionadas: debugfs, tune2fs, chattr
- Opciones de montaje relacionadas con el desempeño: noatime
- Otras opciones de montaje:
- data=writeback (desactivar registro diario)
-
data=ordered (el predeterminado, registro de metadatos y datos son
escritos al disco con metadatos)
-
data=journal (registro completo de datos para la integridad de datos
y metadatos. Reduce a la mitad el desempeño de escritura.)
-
Bibliografía de ext3:
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.
- En núcleos: 2.4.0+ (2.4.18+ altamente recomendado)
- Registro diario: metadatos
- Orden mkfs: mkreiserfs
- Ejemplo mkfs: mkreiserfs /dev/hdc7
- Opciones de montaje relacionadas con el desempeño: noatime, notail
-
Bibliografía de ReiserFS:
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.
-
En núcleos: 2.5.34+ solamente, requiere un parche para las series 2.4
- Registro diario: metadatos
- Orden mkfs: mkfs.xfs
- Ejemplo mkfs: mkfs.xfs /dev/hdc7
- Opciones de montaje relacionadas con el desempeño: noatime
-
Bibliografía de XFS:
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:
|