LinuxParty

NUESTRO SITIO necesita la publicidad para costear hosting y el dominio. Por favor considera deshabilitar tu AdBlock en nuestro sitio. También puedes hacernos una donación entrando en linuxparty.es, en la columna de la derecha.

Ratio: 5 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio activado
 

LPIC-1 Capítulo 3

EN ESTE CAPÍTULO SE ABARCAN LOS SIGUIENTES OBJETIVOS DEL EXAMEN:

  • 101.1: Determinar y configurar parámetros de hardware (2)
  • 102.1: Diseñar la estructura de discos duros (2)
  • 104.1: Crear particiones y sistemas de archivos (2)
  • 104.2: Mantener la integridad de los sistemas de archivos (2)
  • 104.3: Controlar el montaje y desmontaje de sistemas de archivos (3)

Instalar, configurar y administrar el hardware del equipo

IRQ

Petición de interrupción o interrupción (IRQ): Señal enviada a la CPU que le indica que suspenda su actividad y se encargue de eventos externos, como por ejemplo el teclado, existencia de datos a procesar por parte de la gráfica, etc…

El diseño del bus ISA (Industry Standard Architecture) hace complicado compartir una interrupción entre dos dispositivos, algo que puede llevar a conflictos (por ejemplo en la IRQ5 de la siguiente tabla) este bus está obsoleto desde 2001, pero si tenemos una máquina con este tipo de bus, debemos de asegurarnos de que no comparte IRQ.

 

El bus PCI (Peripheral Component Interconnect, Interconexión de componentes periféricos) es un bus de recurso compartido (esperan su turno para comunicarse por el bus) con limitación de latencia (ancho de banda) que hace mas fácil compartir las interrupciones, pero solo entre dispositivos PCI. Existen ciertas limitaciones a la hora de compartir IRQ entre dispositivos PCI, por ejemplo, quizás la BIOS y la placa base permitan compartir IRQ pero no el propio dispositivo PCI, que exige su propia IRQ para un correcto funcionamiento.

IRQ y sus funciones habituales en sistemas x86:

0 Reloj del sistema (uso interno)
1 Teclado
2 Gestión IRQ 8-15 (El circuito interno de administración IRQ en x86 solo puede ocuparse de 8 IRQ. La IRQ2 está asociada con la gestión de las 16 IRQ, aunque solo debe usarse para gestionar las IRQ 8-15).
3 Segundo puerto serie RS-232: COM2 en Win. Puede compartirse con un cuarto puerto RS-232
4 Primer puerto serie RS-232: COM1 en Win. Puede compartirse con un tercer puerto RS-232
5 Tarjeta de Sonido o segundo puerto paralelo LPT en Win.
6 Controlador de discos flexibles
7 Primer puerto paralelo: LPT1
8 Reloj de tiempo real (usado por el reloj del sistema)
9 Interrupción abierta
10 Interrupción abierta
11 Interrupción abierta
12 Ratón PS/2
13 Coprocesador matemático (uso interno)
14 Controlador ATA primario para dispositivos ATA: hda y hdb
15 Controlador ATA secundario para dispositivos ATA: hdc y hdd

NOTA: En sistemas x86_64 las IRQ se suelen asignar como hemos mencionado arriba, pero a las IRQ superiores se les puede asignar hardware adicional

Para comprobar nuestra tabla IRQ y ver si existen conflictos o simplemente varios dispositivos comparten IRQ, podemos hacer uso del sistema de archivos virtual (/proc), el cual hace referencia a datos del kernel, hardware, procesos en ejecución, etc. Precisamente el archivo /proc/interrupts ($cat /proc/interrupts) es el encargado de enumerar las IRQ que están en uso en Linux, es decir, que no aparezca la IRQ 7 (puerto paralelo) no quiere decir que no esté disponible, si no que ningún componente hardware está haciendo uso de ella en ese momento.

Podemos resolver problemas con las IRQ desde la BIOS, con paquetes como isapnptools, a través de los jumpers del dispositivo, etc..

Algunos pasos para configurar las IRQ de dispositivos PCI/AGP:

  1. Desde la BIOS deshabilitar todos los dispositivos que no estemos usando, para permitir asignar a otros su propia IRQ.
  2. En la BIOS, localizar la configuración PnP y asegurarnos de que nuestra BIOS está configurada para ejecutar un sistema operativo “non-PnP” y además seleccionamos la opción “Reset ESCD data” (o similar), para forzar que tras un reinicio del sistema la BIOS reasigne de nuevo las IRQ

Si tras los pasos anteriores seguimos teniendo problemas de suplantación de IRQ entre dispositivos, podemos probar con otras dos opciones:

  1. Existen BIOS que nos permiten asignar nosotros mismos las IRQ (opción menos frecuente)
  2. Si tenemos slots PCI aun libres: Apagamos el equipo, lo desconectamos de la toma eléctrica y pulsamos varias veces el botón de encendido para descargarlo por completo, y movemos las tarjetas PCI de slot hasta encontrar que todas o al menos las que no permiten compartir IRQ han encontrado su propia IRQ, esto habrá que comprobarlo con el comando $cat /proc/interrupts, es un poco “gipsy” pero funciona.
Nota: Linux cuenta con una suit de tools pci para facilitar su configuración (pci-utils). La herramienta de configuración avanzada de hardware PCI es setpci, pero también podemos ayudarnos con lspci para ver la configuración.

Podemos emplear la utilidad setpci para consultar y ajustar directamente las configuraciones de los dispositivos PCI a bajo nivel, como la latencia, algo muy útil (aunque suelen venir configurado para un funcionamiento optimo) cuando añadimos o cambiamos de hardware. Una latencia de 0 indica que el dispositivo se detendrá en el momento en que otra tarjeta PCI necesite su atención, una latencia de 248 (máxima) demorará su parada.

Con el comando lspci podemos comprobar la configuración de los dispositivos PCI. lspci muestra información sobre todos los buses del sistema y los dispositivos conectados a estos.

Otros comandos como lshw, dmidecode, lsusb y biosdecode, nos permitirán tener un mejor conocimiento sobre el hardware que el sistema tiene instalado.

Desde el BIOS podemos desactivar/activar dispositivos hardware de nuestro sistema, como la tarjeta de sonido, usar la gráfica nativa de la placa o bien activar alguna que hayamos instalado, etc..

Nota: Aunque existan controladores para la administración de dispositivos, la mayoría de estos están diseñado para cargar, configurar y actualizar nuevas características de estos, pero lo normal a la hora de desactivar componentes hardware es hacerlo a través del firmware

Direcciones de E/S

Las direcciones de entrada/salida (conocidas como puertos E/S), son ubicaciones exclusivas en memoria, reservadas para las comunicaciones entre la CPU y dispositivos hardware específicos. Como pasa con las IRQ, lo normal es no compartir una misma dirección para 2 o mas dispositivos.

Podemos explorar que dispositivos E/S están en uso, desplegando el contenido del archivo virtual /proc/ioports.

Direcciones DMA

Un método alternativo para la comunicación de los puertos E/S es la DMA (Direct Memory Addressing, Direccionamiento directo de memoria), que permite a los dispositivos E/S enviar directamente la información sin que medie en esto la CPU, mejorando el rendimiento global del sistema. Este método utiliza canales de comunicación, que al igual que pasa con las IRQ y los puertos E/S, conviene no compartir un canal. Para conocer los canales que están en uso podemos desplegar el contenido del archivo virtual /proc/dma.

Geometría de un disco duro

Geometría CHS (Cilindros/Cabezales/Sectores): Estructura tradicional de un disco duro que consiste en un número fijo de cabezales de lectura/escritura, encargados de delimitar las pistas al girar sobre los discos, las cuales en su conjunto forman los cilindros (organizados verticalmente). Cada pista esta formada por cientos de sectores.
Un sector puede ser identificado por tres números: un número de cilindro, un número de cabezal y un número de sector. Para ello la BIOS debe conocer el número de cabezales, cilindros y sectores que tiene el disco. El tamaño de un sector suele ser de 512 bytes

discochs

La geometría CHS tiene sus inconvenientes, como por ejemplo determinar el número de sectores por pistas en los discos mas recientes, ya que estos tienen mas sectores en las pistas externas que en las internas, por consiguiente la geometría que el disco duro presenta a la BIOS es realmente falsa, alcanzando además un máximo de 540MB, sin el uso de parches para la traducción de geometría CHS, con el que alcanzaríamos un total de 8GB.
Para dar solución a esto, actualmente se utiliza el modo LBA (Logical Block Addressing) por el cual se asigna un número exclusivo a cada sector del disco, permitiendo al firmware del disco leer del cabezal y cilindro correctos cuando se le pasa un número determinado de sector.

Dispositivos de conexión en frio (coldplug) y en caliente (hotplug)

Los dispositivos de conexión en frio (RS-232, LPT, ISA…) están diseñados para conectarse y desconectarse físicamente sólo cuando el ordenador está desconectado. Intentar conectar y desconectar estos dispositivos en plena ejecución del ordenador puede dañar el dispositivo o el ordenador. Precisamente por esto, se desarrolló una variante de PCI de conexión en caliente para utilizarla en equipos donde la interrupción o apagado no es una opción (como por ejemplos servidores). También existen dispositivos SATA para la conexión en caliente, y dispositivos como los USB, Ethernet e IEEE-1394 que son dispositivos puramente de desconexión en caliente, basados en un software especializado de Linux que permite detectar los cambios del sistema según se conecten y desconecten.

Algunas utilidades para administrar los dispositivos en caliente podrían ser:

  • Sysfs : El sistema de archivo virtual /sys, exporta información sobre los dispositivos, de forma que los programas del usuario puedan acceder a ellos. Antiguamente /dev era el encargado de proporcionar los medios principales de interfaz entre los programas del usuario y el hardware.
  • Demonio HAL (hald) : Suministra de forma constante información sobre el hardware disponible a los programas de usuario.
  • D-Bus : Demonio que permite a los procesos comunicarse entre si en lo referente a las notificaciones de eventos, por ejemplo la disponibilidad de un nuevo disco externo USB
  • udev : Es el gestor de dispositivos que usa el kernel de Linux en su versión 2.6. Su función es controlar los ficheros de dispositivo en /dev, lo que significa que maneja el directorio /dev y todas las acciones del espacio de usuario al agregar o quitar dispositivos, incluyendo la carga de firmware. Se creó para corregir ciertas limitaciones de devfs (su predecesor) como el de poder acceder a un dispositivo con un nombre siempre fijo. devfs ya mejoró en ciertos aspectos la gestión de dispositivos conectados al sistema. Antiguamente el directorio /dev contenía un nodo para cada dispositivo conocido, estuviese o no conectado al sistema, formando un conjunto de archivos estáticos. Esto tiene sus limitaciones e inconvenientes como la dificultad de administrar el directorio /dev debido a la gran cantidad de archivos, el uso limitado de números asociados a dispositivos, etc…
    udev mantiene en /dev sólo las entradas correspondientes a los dispositivos que hay conectados al sistema, solucionando así el problema de cantidad de archivos estáticos en el directorio /dev. udev no usa el número mayor y menor para reconocer a cada dispositivo además avisa mediante mensajes D-BUS para que cualquier programa del espacio de usuario pueda enterarse cuando un dispositivo se conecta o desconecta (esto es útil para HAL). También permite a los programas consultar la lista de dispositivos conectados y la forma de acceder a cada uno.
    El proceso udevd ocupa poca memoria y no necesita ejecutarse siempre. Esto también favorece a los sistemas embebidos y equipos poco potentes.

Módulos del kernel

El hardware en Linux es administrado por los controladores (módulos) del kernel, que son archivos independientes que suelen estar bajo el directorio /lib/modules. Estos módulos suelen cargarse al iniciar el sistema, aunque es posible que necesite cargar otros módulos una vez el sistema haya iniciado. Existe diferentes herramientas que nos ayudarán a gestionar estos módulos.

Por ejemplo vamos a suponer que queremos ver los módulos que se encuentran actualmente cargados en nuestro sistema, para esto podremos usar lsmod, que nos desplegará una lista con los nombres de todos los módulos cargados, así como la memoria que consume, el número de procesos o otros módulos que están haciendo uso de él y que proceso o modulo es este.

Nota: El comando lsmod solo muestra los módulos cargados y no los controladores que se compilan directamente en el kernel. Esto quiere decir que para utilizar un hardware concreto quizás debamos cargar manualmente nosotros el módulo (si es que no aparece en el listado de lsmod) o bien se cargará al inicio y aparecerá en el listado de lsmod, pero a lo mejor en otro sistema que usemos ese mismo hardware no aparece el módulo y si funcione el hardware, eso es debido a que el controlador venga directamente compilado en el kernel.

Si encontramos un módulo que indica estar siendo utilizado por otro, no podremos eliminarlo hasta que previamente se elimine el que está haciendo uso de este. Podemos obtener información sobre un determinado módulo con el comando modinfo.

Para descargar un módulo podemos usar el comando rmmod (solo descarga un módulo que no se encuentra en uso) o modprobe -r, que descargará el módulo y todos aquellos de los que depende (a menos que estén siendo utilizado, que entonces no se eliminarán). Por el contrario si quisiéramos cargar un módulo recurrimos al comando insmod o modprobe. La diferencia es que insmod solo carga el módulo en cuestión mientras que modprobe carga el módulo y aquellos de los que posiblemente dependa. Si vamos a cargar un módulo con insmod y este depende de otro, el módulo no será cargado hasta que antes carguemos del que depende. El comando nmmod es el opuesto a insmod, es decir solo descarga el módulo especificado y no aquellos de los que depende, se esté haciendo uso de ellos o no.

A modprobe basta con pasarle el nombre del módulo a diferencia de insmod que necesita conocer la ruta completa y el nombre del módulo.ko, por ello modprobe depende de un archivo de configuración /etc/modprobre.conf o varios archivos bajo /etc/modprobre.d/

Nota: El tener módulos cargados que no se estén usando no tiene mas inconveniente que la memoria de la que esta haciendo uso, que suele ser mínima.

Controladores USB de Linux

El USB es el sistema de interfaz preferido para el uso de muchos dispositivos externos, es tanto un protocolo como un puerto de hardware para transmitir datos hacia y desde dispositivos. Existen diferentes especificaciones USB. El USB 1.0 y 1.1 admiten un total de 127 dispositivos y velocidades de transferencias de hasta 12Mbps, mientras que USB 2.0 transfiere a un máximo de 480Mbps y USB 3.0 tiene una velocidad teórica de 4,8Gbps, aunque en la práctica se aproxima a 3,2Gbps.

El motivo de que al conectar un disco duro externo por USB aparezca como /dev/sdX (aparentemente bajo conexión SCSI), es porque en las primeras implementaciones de USB para Linux, este necesitaba un controlador independiente para cada uno de ellos, controladores que aun siguen en el kernel y además hay programas que los utilizan. Estos controladores USB hacen de “puente” pareciendole a Linux que se trata de una conexión SCSI. Además Linux ofrece un sistema de archivos USB bajo /proc/bus/usb, donde accede el software para controlar el dispositivo.

Como USB se diseñó como hotplug, el kernel de Linux no fue concebido originalmente con este tipo de actividad, por lo que la administración de dispositivos USB se apoya en utilidades externas, como por ejemplo usbmrg y hotplug.

  • usbmgr es un programa que se ejecuta en segundo plano y que al detectar cambios, carga o descarga los módulos del kernel necesarios para controlar los dispositivos. usbmgr a perdido relevancia con el tiempo debido al cambio de controladores USB específicos a sistemas de archivos de dispositivos USB (/proc/bus/usb).
  • hotplug es la nueva herramienta con la que podremos tener un control sobre los dispositivos USB conectados al sistema. hotplug utiliza archivos almacenados en /etc/hotplug para controlar la configuración de dispositivos USB. El archivo /etc/hotplug/usb.usermap contiene una base de datos ID de dispositivos USB y punteros a los scripts de /etc/hotplug/usb que se ejecutan cuando se conectan o desconectan dispositivos USB. Con estos scripts podrían cambiarse los permisos de los archivos de los dispositivos USB para poder ser usados por otros usuarios, ejecutar comandos para detectar nuevos dispositivos USB, etc…
Nota: Aunque los USB y los IEEE-1394 sean dispositivos de conexión en caliente, es recomendable desmontar antes el sistema de archivos, para asegurar una extracción correcta del dispositivo.

Configurar discos duros

Son habituales tres tipos de interfaces de disco duro: PATA (ATA en Paralelo, Advance Technology Attachment), SATA (ATA en Serie) y SCSI (Small Computer System Interface).
SCSI suele ser un bus en paralelo aunque su variante SAS (Serial Atachment SCSI) es un bus en serie.

Los discos PATA suelen tener nomenclatura hda (maestro del 1º controlador) , hdb (esclavo del primer controlador), hdc (maestro del segundo controlador), hdd (esclavo del segundo controlador) y asi…
Según la partición tendrá un numero u otro; hda1, hda2, hda3, hdb1, hdb2, hdc1, etc…
Los discos PATA solían usarse en PC del 2005 o anterior y se configuraban (maestro/esclavo) mediante un Jumper o bien indicando en la BIOS que su configuración sea mediante cable. El cable para discos PATA tiene 3 conectores, el de la placa base, el del disco esclavo (el conector intermedio) y el del maestro (último conector). Para un correcto funcionamiento, lo mejor es conectar un disco PATA en cada cable, ya que el controlador PATA posee un rendimiento limitado, que puede verse superado por la suma de los dos discos.

Los discos SATA a pesar de ser conexión en serie, envían mas bit/s que sus predecesores PATA. La configuración de SATA es prácticamente nula, los cables son mas finos y la placaba base contiene un conector para cada disco (normalmente 4), la posición es independiente. La mayoría de los controladores Linux para discos SATA, tratan a estos como discos SCSI (/dev/sdX), aunque algunos controladores antiguos, los nombran hdX como si de discos PATA se tratase.

SCSI es tradicionalmente un bus PATA aunque bastante mas costoso. Su variante SAS es un bus en serie como SATA. SCSI en teoría admite de 8 a 16 dispositivos, aunque en la práctica esto depende de diversos factores, como por ejemplo la longitud del cable. Cada dispositivo SCSI tiene su propio ID, asignado normalmente a través del jumper. Para arrancar un sistema desde un disco SCSI se precisa de un dispositivo costoso, que tenga su propio firmware compatible con el arranque, de lo contrario, su placa reconocerá los discos y podrá hacer uso de almacenamiento, pero no de arranque.
Los ID SCSI no se utilizan para identificar el archivo de dispositivo, que siguen la nomenclatura /dev/sd[abc..] para los discos, /dev/st[0123..] y /dev/nst[0123…] para las cintas y /dev/scd[0123…] para dispositivos CDROM y DVDROM SCSI, si no que identifican a los propios discos, por lo que es recomendable usar IDs bajos para los primeros discos e ir subiendo consecutivamente para nuevas unidades, aunque esto depende de en parte del diseño del adaptador de host SCSI, como Wide SCSI que enumera del ID 14 al 8. Los discos SCSI no son de conexión en caliente y a menos que no sea un disco extraible, como un disco ZIP, es primordial desmontarlo antes, para evitar posibles daños en el sistema de archivo.

Particionar un disco

Definición breve de partición: Dividir un disco físico, en varios discos “lógicos” en los que poder almacenar diferentes sistemas operativos, o usar como “cajones” para almacenar nuestra información digital.

Particionar un disco nos ofrece diferentes ventajas, como por ejemplo: el soporte multi-OS, el uso de diferentes sistemas de archivos, una mejor forma de administrar el espacio en disco, protección frente a errores de disco (al tener diferentes particiones podemos mover los datos de una a otra e incluso instalar un nuevo sistema en otra partición y gestionar los datos exitente en otra partición a través de este nuevo sistema), seguridad (por ejemplo empleando diferentes opciones de montaje para cada partición) y por supuesto copias de seguridad (aisladas del sistema de archivo de uso ordinario), o bien para una mejor gestión de las particiones de menor tamaño a la hora de crear una copia de la misma.

Cuando creamos un esquema de particiones, este, se guarda en una parte del disco duro. Existen diferentes sistemas para guardar este esquema aunque hay dos que destacan por su popularidad, como es MBR y GPT, sistemas de los que se hablará mas detalladamente en el tema 5.
Existe la alternativa a estos sistemas de particionado, y es LVM (Logical Volumen Management), el cual nos permitirá, crear grupos de volúmenes, con varios sistemas de archivos (volúmenes lógicos) que pueden ocupar incluso varios discos físico, simulando hasta cierto punto un RAID 0. Una de las grandes ventajas de LVM es el crear/destruir/redimensionar particiones de forma no muy complicada, por ejemplo, si tenemos un volumen lógico creado para /home, y nos estamos quedando sin espacio, pero disponemos de otro volumen, por ejemplo /usr y tenemos suficiente espacio libre, podemos reducir este, usando el espacio para asignárselo a /home o incluso podríamos añadir un nuevo disco físico y dar parte o la totalidad de este disco al volumen lógico /home.

Los bloques que constituyen un LVM son: Volumen Lógico (LV) formado por “extensiones lógicas” (LE), uno o varios LV se encuentran en uno o varios Volumenes Físicos (PV) formados por Extensiones Físicas (PE) y uno o un grupo de estos forman los grupo de volúmenes (VG)

  • Volumen Lógico (Logical Volume, LV): Podemos pensar que estos son particiones normales, las cuales pueden contener sistemas de archivos diferentes montados en /home, /opt, /usr, etc. Están formados por Extensiones Lógicas (LE). Todos Volúmenes Lógicos tendrán el mismo tamaño para sus Extensiones Lógicas.
  • Volúmenes físicos (Physical Volume, PV): Son particiones en discos físicos o bien directamente discos físicos completos o archivos loopback donde almacenamos uno o varios volúmenes lógicos. El PV posee una cabecera especial y está dividido en Extensiones Físicas (Physical Extents,PE) que tienen el mismo tamaño que las Extensiones Físicas del Grupo de Volúmenes. Mientras no agreguemos un PV a un VG, este no podrá ser utilizado.
  • Grupo de Volúmenes (Volume Group, VG): Grupos de volúmenes físicos. Podemos pensar en que un Grupo de volúmenes puede hacer referencia al conjunto de discos físicos o particiones de estos, es decir podemos tener un Grupo de Volumenes con un espacio de 500GB que en realidad es la suma de 2 discos de 200GB cada uno mas 2 particiones de 500MB cada una de las cuales pertenecen a discos diferentes (sda + sdb + sdc1 + sdd1, por poner un ejemplo…)

Ventajas del uso de LVM:

  • Usar varios discos físicos como uno solo gracias a la agrupación de estos, mediante el VG (Volume Group)
  • Tener una partición (Lógical Volume) que ocupe el tamaño de varios discos físicos
  • Facilidad para añadir, eliminar y redimensionar particiones, ya que estás no dependen de su posición como es el caso de las particiones normales.

Desventajas del uso de LVM:

  • Su configuración es algo mas complicada que la administración de particiones normales.

Técnicas de particionado de un disco

Antes de comenzar vamos a ver una estructura básica de un disco particionado para Linux.

sistema_fichero

Nota: Los directorios /etc, /bin, /sbin, /lib, /dev e incluso /usr no deben de colocarse en particiones independientes, puesto que contienen archivos de configuración del sistema y programas ejecutables que posibilitan el inicio del sistema como por ejemplo el fichero /etc/fstab, el cual contiene los dispositivos a ser montados. El directorio /dev puede residir en un sistema de archivo independiente pero no en una partición independiente ya que la utilidad udev controla el sistema de archivos /dev en las versiones mas recientes de Linux.

El particionamiento de un disco conlleva dos tareas: crear las particiones y prepararlas para su uso (darles formato). En Linux suelen utilizarse herramientas diferente para cada operación, aunque también las hay que realizan ambas cosas.

Herramientas particionado MBR:

  • fdisk (fixed disk): Es la herramienta tradicional en modo texto utilizada para el particionado MBR del disco. Para utilizar fdisk solo hay que escribir el comando seguido del disco a particionar (#fdisk /dev/hdX o sdX) y se desplegará un menú donde se nos presentan una serie de opciones. Podemos ver las particiones de un disco directamente desde línea de comandos, sin entrar al programa con #fdisk -l. fdisk no admite tabla de particiones GPT.
    Nota: La herramienta FDISK de DOS es totalmente independiente de fdisk de Línux, quizás sirvan para el mismo propósito pero su uso y funcionamiento, poco tienen que ver.
  • cfdisk: Editor de particionamiento con una interfaz diferente a fdisk y que además, a diferencia de esta, cfdisk nos permite redimensionar particiones extendidas cuando existe espacio libre tras ellas. Es fácil moverse por la interfaz mediante los cursores y además nos ofrece varias opciones obvias como new (para nuevas particiones), type (para escoger el tipo de sistema de archivo), bootable (si queremos hacer arrancable una partición), entre otras.
  • sfdisk: Una de las principales diferencias de sfdisk con respecto a fdisk es que no es interactiva, por lo que nos permite automatizar mediante scripts el particionado de un disco o crear un clon de nuestro disco como medida de seguridad. sfdisk no alinea las particiones y tampoco está diseñado para particiones de gran tamaño. Los principales uso de sfdisk son: mostrar el tamaño de las particiones, ver las particiones de un disco, checkear las particiones de un disco y reparticionar un disco.

Herramientas de particionado GPT:

  • parted: Se inicia de un modo similar a fdisk, escribiendo su nombre seguido del dispositivo que se desea modificar, #parted /dev/sdX. Podemos desplegar una lista de comandos usando el caracter ?. Algunos de los comandos de parted son: print que muestra la tabla de particiones actual, mkpart para crear una partición, rm elimina una partición y algunos mas que veremos en la sección de comandos. Parted soporta particiones MBR, GPT, Acceso Raw (útil para RAID/LVM) y mapa de particiones Macintosh, entre otros.
    Uso de parted:

- Detecta sistemas de ficheros: ext2, ext3, FAT16, FAT32, linux-swap, hfs/hfs+, jfs, ntfs, reiserfs, ufs y xfs.

- Crea particiones ext2, FAT16, FAT32, linux-swap y reiserfs (necesitaremos tener instalada la librería libreiserfs).

- Aumentar particiones ext2/ext3

- Reducir particiones FAT16 (debido al tamaño del cluster no podremos aumentarlas), FAT32, linux-swap, hfs/hfs+, reiserfs (el inicio de la partición debe de permanecer fijo y además deberemos de tener la libreria libreiserfs).

- Copiar particiones ext2/ext3 (la partición de destino tiene que ser igual o mayor que la de origen), FAT16/FAT32 y reiserfs.

- Comprobar particiones ext2/ext3, FAT16/FAT32, linux-swap y reiserfs

  • GNOME Partition Editor o gparted: Digamos que es la herramienta gráfica por excelencia para escritorios GNOME, formada principalmente por la librería GNU parted. Según que sistema de archivo manipule, gparted nos permite una infinidad de cosas tanto en particiones MBR, GPT, APM y BSD (entre otros), como por ejemplo, crear, eliminar, mover, redimensionar particiones, seleccionar el tipo de sistema de archivos, etc.. Habrá opciones que solo podamos usar si arrancamos desde un disco de rescate o las particiones a tratar no están en uso. Tiene soporte para CHS y LBA.
  • GPT fdisk es un set de herramientas de modo texto para el particionado del disco, tanto para MBR como para GTP. En este set se encuentran las herramientas:

- gdisk: Es el “hermano” de fdisk pero para particiones GPT, tanto para discos rígidos como SSD, donde se encarga por defecto de que sus particiones estén perfectamente alineadas. Su uso es puramente desde línea de comandos con permisos de administrador. Algunos de sus comandos útiles son:

- m: Volver al menú principal

- d: Para eliminar una partición

- n: para crear una partición

- o: Para crear una nueva tabla de particiones GPT

- b: Bakcup de la tabla de particiones

- t: para cambiar el tipo de partición

- cgdisk (interfaz interactiva) y sgdisk (útil en scripts) : que son válidas tanto para Linux como para Windows, FreeBSD y OS X.

Los programas de particionamiento actuales comienzan las particiones en límites de 1MB (2048 sectores) debido a que muchos discos modernos requieren que las particiones se alineen en limites de ocho sectores o mas para obtener un rendimiento óptimo.

A la hora de crear una partición de arranque GPT, existen dos opciones para dar formato al sector de arranque:

  1. El ordenador soporta arranque UEFI mediante la BIOS con tabla de partición GPT:
    Es necesario tener una primera partición especial (ESP) formateada con FAT donde estarán los o el cargador de arranque.
    #gdisk /dev/sda
    n (nueva partición), 1 (primera partición), +200M (espacio de la partición), L (listar códigos de tipo de particiones) y escribimos ef00 > [Enter]
  2. El ordenador no soporta UEFI por lo que arranca con BIOS y un disco con particionado GPT:
    Se va a crear la partición que se sitúa entre el primer sector (MBR) y la primera partición que se le dará un tamaño de 200M para poder convertirla en EFI si así quisiéramos, ya que EFI necesita mínimo 200M).
    Nota: No aplicamos formato sobre esta partición!!!

Referencias:

http://www.ubuntu-es.org/node/173252#.VKmb0l237tQ

http://es.wikipedia.org/wiki/Formato_de_disco

 

Tipos y Creación de sistemas de archivos

¿Que es un sistema de archivos?

“Un sistema de archivos son los métodos y estructuras de datos que un sistema operativo utiliza para seguir la pista de los archivos de un disco o partición; es decir, es la manera en la que se organizan los archivos en el disco. El término también es utilizado para referirse a una partición o disco que se está utilizando para almacenamiento, o el tipo del sistema de archivos que utiliza.”

Definición dada en el libro “Guía para administradores v 0.8″

La mayoría de los sistema de archivos UNIX tienen una estructura general parecida, aunque los detalles
exactos pueden variar un poco. Los conceptos centrales son superbloque, nodo-i, entradas de directorio y bloque de datos.

  • El superbloque contiene metadatos críticos del sistema de archivos como información acerca del tamaño, cantidad de espacio libre y donde se encuentra los datos. Si el superbloque es dañado, y su información se pierde, no podría determinar que partes del sistema de archivos contiene información y lo mas seguro es que no podamos ni montar el sistema de archivos por este motivo, se guardan varias copias del superbloque en determinados bloques del sistema de archivos.
    Por defecto estas copias se almacena cada 8.192 bloques, por lo que la primera copia se encontrara en el bloque 8.193 (se suma 8192 al primer bloque), la segunda en el bloque 16.385, 24577, etc… Podremos usar el comando # dumpe2fs <dispositivo> para verificar que es este el tamaño de nuestro ‘Block group‘ en concreto la línea que nos dará esta información será ‘Blocks per group: ‘ por lo que podremos buscarla con grep (ya que la salida de dumpe2fs será muy extensa). Se nos mostrarán varias líneas indicando donde se encuentran las copias de seguridad. Una vez localizadas (supongamos que una de ella se encuentra en el superbloque 32768, se lo pasaremos al comando e2fsck junto con las opciones -f y -b (man e2fsck o apartado de comandos de este tema)
  • Un nodo-i (inode, Nodo de indice): Contienen información sobre un archivo, salvo su nombre. Un inodo guarda la siguiente información:
    • Identificador del dispositivo que alberga al sistema de archivos.
    • Número de inodo que identifica al archivo dentro del sistema de archivos.
    • Longitud del archivo en bytes (tamaño del archivo).
    • Identificador del usuario propietario del archivo con derechos diferenciados.
    • Identificador del grupo propietario del archivo con derechos diferenciados.
    • Modo de acceso al archivo.
    • Marcas de tiempo: última modificación (mtime), acceso (atime) y de alteración del propio inodo (ctime).
    • Número de enlaces (hard links) es decir, entradas de directorio asociados con este inodo.

    Nota: Podemos conocer el número de nodo de indice de un archivo mediante el comando ls -i o el comando stat

  • Entradas de directorios: Contienen el nombre de un archivo y el número de nodo-i que representa a este.
  • Bloque de datos: Conjunto de sectores contiguos que componen la unidad de almacenamiento más pequeña de un disco. El número de bloques es determinado al crearse el sistema de archivos, y depende del tipo elegido, así como de las opciones que use en su creación. Un bloque solo puede contener un archivo, o parte de un archivo, es decir, si el archivo es más pequeño que el bloque, el espacio restante del bloque no será utilizado. El tamaño por defecto de bloque es de 4KB.

Nota: Existen sistemas de archivos como Reiserfs que usan técnicas para encajar los finales de los archivos en los espacios sin utilizar de otros.

Fuentes:

Tipos de Sistemas de archivos:

1. Nativos de Linux:

  • ext2 : extendido 2 es el tradicional sistema de archivos nativo de Linux, es un sistema fiable y perfecto para particiones /boot o discos de menos de 1GB. No posee respaldo de transacciones.
  • ext3 : Es el evolutivo del segundo sistema de archivos nativo para Linux (ext2), incluye respaldo de transacciones por lo que es un sistema de archivos igual de fiable que ext2 y además se recupera mucho mas rápidamente de los cortes de alimentación y las caídas del sistema.
  • ext4 : Es la nueva generación de la familia “extendidos”, pensado para trabajar con archivos grandes (+2TB), discos muy grandes (+16TB) y extensiones que mejoran el rendimiento.
  • Reiserfs : Diseñado para trabajar con un gran número de archivos pequeños (menos 32KB) ya que utiliza varios trucos para encajar los finales de los archivos en los espacios sin utilizar de otros. Reiserfs hasta su versión 3.x viene incluido en el kernel. Tiene varias características que no todos los sistemas de archivos poseen, como journaling que previene el riesgo de corrupción del propio sistema de archivo, reparticionamiento tanto con el filesystem montado (online, solo es posible aumentarlo) como desmontado (offline, permite aumentar o disminuir el tamaño) o el Tail packing que reduce la fragmentación interna.
  • JFS (Journaling File System): Sistema de archivos de 64bits con respaldo de transacciones creado por IBM para sistemas de altos rendimientos y donado a Linux (su versión OS/2) aunque existen versiones para otros sistemas como AIX, HP-UX… JFS utiliza un método para organizar los bloques vacíos estructurándolos en un árbol y además al ser 64bits soporta bastante bien el manejo de grandes ficheros y particiones LFS (Large File Support). Podríamos resaltar algunas características como el Journaling que al igual que reiserfs sigue el principio de metadata only que en vez de una comprobación completa, solo se tienen en cuenta las modificaciones en los metadatos provocados por las actividades del sistema, eficiente administración de directorios, mejor utilización de la memoria mediante adjudicación dinámica de inodos, etc.
  • XFS (Extents File System): Al igual que JFS, es un sistema técnicamente sofisticado aunque se ganó su reputación por su robustez, velocidad y flexibilidad en IRIX, no todas estas características fueron bien encajadas en Linux. Red Hat Enterprise Linux incorporó en su versión 7 XFS como su sistema de archivos por defecto, destacando su capacidad de manejar una partición de hasta 500TB
  • Btrfs (B-tree FS): Es un sistema de archivos copy-on-write anunciado por Oracle Corporation para GNU/Linux. El objetivo de Btrfs es sustituir a ext3, eliminando el mayor número de sus limitaciones como el tamaño máximo de los ficheros o la compatibilidad con nuevas tecnologías. Btrfs tiene la intención de centrarse en la tolerancia a fallos, reparación y fácil administración. Algunas de sus características mas importantes son:

- Asignación dinámica de inodos (no se crea un número máximo de archivos al crear el filesystem)

- Snapshot escribibles y snapshot de snapshot

- Comprobación de datos y metadatos (alta seguridad de integridad)

- Comprobación del sistema de archivos sin desmontar (aunque desmontado es aun mas rápida su comprobación)

- Desfragmentación sin desmontar

- Modo optimizado para SSD

- Mejora opcional en el formato de discos incompatibles con el objetivo de acelerar el sistema

- Optimizaciones de rendimiento

2. Otros sistemas de archivos:

  • FAT (File Allocation Table): Antiguo y primitivo pero omnipresente ya que los principales OS entienden a FAT lo que lo convierte en un buen file system para discos extraibles con los que intercambiar datos. Existen dos variantes de FAT que principalmente difieren en el tamaño de la estructura de datos de FAT (FAT16 bits y FAT32 bits). Para utilizar los nombres de archivos tradicionales de FAT (limitados a 8 caracteres para el nombre y 3 para la extensión lo que se conoce como nombres de archivos 8.3) utiliza el código de tipo de sistema de archivos msdos, mientras que para usar el tipo de nombres de archivos extensos al estilo de Windows, utilice VFAT.
  • NTFS (New Technology File System): Es el preferido por los principales OS Windows (desde mas antiguos hasta los mas nuevos). Desafortunadamente el soporte de NTFS para Linux es bastante rudimentario no pudiendo escribir nuevos datos en particiones NTFS. Si necesitásemos tener un buen soporte de lectura/escritura podríamos probar con el controlador NTFS-3G que reside en el área del usuario en vez de en el del kernel.
  • HFS/HFS+ (Hierarchical File System): Es el sistema de archivos para usuarios de Mac OS, aunque si quisiéramos cambiar archivos con ellos, lo mejor sería utilizar FAT. Apple ha ampliado HFS con HFS+ conocido como HFS extendido (plus) para dar un mejor soporte a discos duros de gran capacidad y a diversas funcionalidades Unix. El kernel de Linux desde su versión 2.6.x incorpora un soporte limitado para HFS+, pero la compatibilidad de escritura solo funciona si se desactiva las transacciones HFS+. HFS+ soporta archivos mucho mas grandes a parte de usar Unicode en vez de Mac OS Roman para el nombre de los archivos, lo que además permitió nombres de archivos de hasta 255 letras. HFS+ utiliza tabla de asignación de 32bits y no de 16bits como HFS, limitación sería que suponía que ningún disco, independientemente de su tamaño pudiese apoyar mas de 65.536 archivos.
  • ISO-9660: Estándar para CD-ROM, presente en varios niveles. El Nivel 1 es similar a FAT, por lo que solo soporta nombres de archivos 8.3. Los niveles 2 y 3 soportan nombres de archivos de hasta 32 caracteres. El código para este sistema de archivo en Linux es iso9660. El soporte de ISO-9660 de Linux también funciona con extensiones Rock Ridge (permite nombres largos, permisos, enlaces simbólicos, etc..) y Joliet.
  • UDF (Universal Disc Format): Siguiente generación para discos ópticos. Suele usarse en discos regrabables y DVDs. La compatibilidad lectura/escritura de UDF con Linux aun es precaria.

Crear una partición:

Para crear un sistema de archivos usamos el comando mkfs o mkisofs (para ISO-9660). Existen otras herramientas como mke2fs y mkdosfs que no son mas que referencia a mkfs.ext2 o mkfs -t ext2 (para mke2fs) y referencias a mkfs.msdos (mkfs -t msdos) y mkfs.vfat (mkfs -t vfat).

El uso de mkfs es simple y suele usarse sin opciones aunque hay dos a las que debemos de prestar atención como son:

  1. La opción -c hace que mkfs compruebe los bloques defectusos sector a sector, invalidando estos en caso de que se encuentren bloques defectuosos en ellos. Esto producirá una demorá en el tiempo de ejecución de mkfs
  2. La opción -m nos permite eliminar el espacio libre que deja mkfs al sistema de archivos, espacio reservado para poder restaurar el sistema si fuese necesario, permitiendo a root crear nuevos archivos o directorios de rescate en ese espacio. El problema es que para discos grandes, quizás se desperdicie demasiado espacio ya que el % por defecto de mkfs es del 5%. Con -m nuevo_% podemos reducir este tamaño, ideal para discos extraibles (que podemos dejarlo incluso a 0) o dicos de mayor tamaño. Tambien tiene sentido establecer a 0 este espacio, en sistemas de archivos de almacenamiento de datos, como por ejemplo /home

Nota: Una vez creado un sistema de archivos podemos revisar los bloques malos o sectores defectuosos con el comando badblocks. En realidad la opción -c hace este trabajo durante la creación del sistema de archivos, pero no estará de mas conocer badblocks y revisar nuestro sistema de archivos una vez creado.

Partición de intercambio:

Una partición de intercambio es una partición/archivo que Linux utiliza como una extensión de la memoria (no por ello es tan rápida ya que se encuentra en disco físico). El código que identifica a esta partición es 0x82

Nota: Solaris para x86 también utiliza el código de tipo de partición MBR 0x82, pero en solaris hace referencia a una partición estándar. Si tenemos un arranque dual con Linux y Solaris deberemos de prestar especial atención a esto, ya que quizás sea necesario cambiar el código de partición con fdisk, para cambiar temporalmente el código evitando que Linux utilice una partición estándar de Solaris como partición de intercambio o al contrario, sea Solaris quien use la partición de intercambio Linux como una de sus particiones.

Para crear un espacio de intercambio utilizamos el comando mkswap, por ejemplo #mkswap /dev/sda5 y lo activaremos con swapon, #swapon /dev/sda5.

Nota: Para activar de forma permanente el espacio de intercambio deberemos de crear una entrada en /etc/fstab

 

Puntos de montaje

Los puntos de montajes son directorios que nos permitirán montar sobre ellos un sistema de archivos. Supongamos que creamos en el directorio /mnt un nuevo directorio llamado USB, ahora si tuviésemos un disco duro externo que contenga por ejemplo 2 carpetas “backups” y “multimedia” o en vez de un disco duro externo, una partición independiente de nuestro disco, podremos montarla en /mnt/USB, quedando una vez montados, de tal forma: /mnt/USB/backups y /mnt/USB/multimedia. Si accedemos a estos directorios y vemos su contenido con ls, veremos que contienen todos los datos del disco duro externo. Podemos crear una entrada para cada directorio en /etc/fstab de manera que se monten automáticamente o no y con restrinciones o opciones por defecto.

Montar sistemas de archivos de forma permanente

Para montar sistemas de archivos de forma permanente hacemos uso del archivo /etc/fstab (filesystem table) que consiste en una serie de líneas con seis campos cada una separados por uno o mas espacios o tabulaciones.

Un ejemplo de archivo podría ser:

#device mount point filesystem options dump fsck
/dev/sda1 / ext4 defaults 1 1
LABEL=/home /home reiserfs defaults 0 0
/dev/sda5 /mnt/USB vfat uid=500,umask=0,auto 0 0
//winsrv/shared /media/shared cifs users,credentials=/root/cred 0 0

Descripción de cada campo:

  • device : Indica el dispositivo de montaje. Suele usarse nombres de dispositivos (/dev/sda1) aunque para evitar errores en caso de cambiar el nombre de dispositivo es válido e incluso mejor usar LABEL o UUID para identificar el dispositivo o partición. También se puede usar algo como server:/home (para exportar el sistema de archivos /home del equipo “server”) o //winsrv/shared (que identifica un recurso compartido a traves de un equipo Windows o Samba llamado winsrv)
  • mount point : Indica el punto de montaje.
  • filesystem : Indica el tipo de sistema de archivos.
  • Opciones de montaje : Son las opciones con las que es posible montar un dispositivo. Estas las vimos junto al comando mount
  • dump : Si recibe un 1 es que se generará una copia de seguridad. El programa dump está en desuso por lo que aun teniendo un 1 carezca de sentido si no se usa el programa dump.
  • fsck : Indica la revisión del sistema de archivos durante el arranque o montaje del sistema de archivo. Un 0 indica que no se debe revisar, un 1 (lo normal para /) indica que será el primero en ser revisado y un 2 (para el resto de dispositivos) indica que se revisarán en segunda posición. El sistema de archivos reiserfs no debe ser revisado automáticamente por lo que se le asignará un 0.
Nota: La entrada //winsrv/shared contiene la opción “credentials=/root/cred” es útil cuando se comparten archivos mediante Windows o Samba y el recurso compartido está protegido por usuario y contraseña. Aunque se podría haber usado las opciones username=usuario y password=contraseña, estas no son la mejor opción ya que cualquiera con acceso a fstab vería las credendiales, por lo que es mejor utilizar un archivo (cred) en este caso que se encuentre protegido de cualquier usuario distinto de root y en su interior contenga las credenciales:
username=usuario
password=contraseña

 

Poner a punto un File System

Hay tres herramientas especialmente importantes para poner a punto los sistemas de archivos ext2, ext3 y ext4 que son: dumpe2fs, tune2fs y debugfs

  • Con dumpe2fs podemos depurar un sistema de archivos (ext2, ext3 y ext4) y obtener información de como se encuentra configurado, como por ejemplo cuando se realizó el último fsck al dispositivo, que cantidad de nodos indices (inodo) tenemos disponible (lo que se traduce en cantidad de archivos, ya que cada inodo guarda información sobre un archivo concreto), características del sistema de archivos, etc… dumpe2fs lo podemos ejecutar mientras el sistema de archivo se encuentra montado por lo que podemos ver su configuración y en caso de no agradarnos en varios aspectos podemos reconfigurarlo. La sintaxis de dumpe2fs es muy sencilla, en realidad basta con pasarle como argumento el nombre del dispositivo (/dev/sdaX), aunque tambien admite varias opciones que estudiaremos en el apartado de comandos de este mismo tema.
  • Para reconfigurar las opciones del filesystem podemos usar la utilidad tune2fs, la cual nos permite cambiar muchos de los parámetros del sistema de archivos de los que informa dumpe2fs. Debemos usar tune2fs con opciones, ya que cada una de estas ajustará un parámetro diferente. La sintaxis de tune2fs es sencilla pero tiene multitud de opciones que estudiaremos en el apartado de comandos, algunas de ellas son: Ajustar el número máximo de montajes para un dispositivo, añadir respaldo de transacciones, ajustar el tiempo entre comprobaciones, definir bloques reservados…
Nota: No se recomienda utilizar herramientas de bajo nivel como tune2fs mientras el sistema de archivos a configurar se encuentra montado. Si necesitásemos configurar “/” podríamos arrancar desde un LiveCD o disco de emergencias.
  • Existen herramientas que nos permiten depurar un sistema de archivos interactivamente como debugfs (para abarcar las posibilidades de dumpe2fs y tune2fs) o xfs_db para sistemas de archivos XFS. El uso de xfs_db está recomendado para expertos en sistemas de archivos XFS, no así debugfs que si que va incluido en el exámen. Debugfs proporciona las capacidades de dump2fs, tune2fs y muchas de las herramientas habituales de manipulación de archivos Linux (ls, rm, ln…). Para utilizar debugfs basta con escribir debugfs seguido del nombre de archivo del dispositivo (/dev/sdaX). Algunos de los comandos para ejecutar una vez estemos interactuando con debugfs son: stats (mostrar información de los super bloques del sistema), stat nombre-archivo (mostrar información de nodos de indice), help…, estudiaremos debugfs mas a fondo en la sección de comandos.

Otros muchos sistemas de archivos carecen de un equivalente a dumpe2fs y tune2fs pero no es el caso de XFS para el que existe la herramienta xfs_info que comparte ciertas similitudes con dumpe2fs y xfs_admin que es el equivalente a tune2fs.

Para utilizar xfs_info basta con pasarle el nombre del dispositivo o punto de montaje como argumento y que el sistema de archivos se encuentre montado. La información devuelta por xfs_info es bastante técnica, relacionada en gran parte con el tamaño de los bloques, tamaño de sectores, uuid del dispositivo, etc…
Otra herramienta de XFS es xfs_metadump la cual copia los metadados del filesystem en un archivo (nombres y tamaños de los archivos, etc…) para posteriormente estudiarlo e intentar deducir problemas. xfs_metadump no se utiliza para realizar copias de seguridad, ya que no copia los archivos sino su información. xfs_metadump es una herramienta de depuración del sistema de archivos su sintaxis es: #xfs_metadump /dev/sdaX ~/dump_my-fs
Podemos obtener un listado de todos los inodos y rutas de archivos del sistema de archivos con el comando xfs_ncheck

Como ya hemos dicho, xfs_admin es el equivalente de tune2fs y algunas de sus opciones son: Utilizar la versión 2 del formato del respaldo de transacciones, obtener la etiqueta y UUID del sistema de archivos (aunque para esto tambien se puede utilizar el comando blkid que aporta este tipo de información y no solo de la partición XFS), definir la etiqueta y UUID del sistema de archivos…

 

Respaldo de transacciones

Los sistemas de archivos con respaldo de transacciones mantienen un registro (.journal) con una estructura de datos que describen las operaciones pendientes de lo que se va hacer, de forma que si el sistema se cae o falla la alimentación, examinará el registro revisando las estructura de datos pendientes. Los sistemas de transacciones Linux no cuentan con una opción “deshacer” ilimitada. En caso de encontrar inconsistencias, el sistema puede revertir los cambios, devolviendo al disco un estado consistente. Al revisar solo las estructuras de datos pendientes de cambios se acelera enormemente la comprobación del disco tras un fallo, caída o corte de alimentación. Linux posee 5 sistemas de archivos con respaldo de transacciones que son: ext3, ext4, Reiserfs, XFS y JFS. No obstante ext2 puede convertirse a ext3 con tune2fs y su opción -j, como se describe en las opciones del comando tune2fs.

 

Revisar sistemas de archivos

Errores, fallos de alimentación o problemas mecánicos pueden afectar a las estructuras de datos de un sistema de archivos lo que puede derivar en pérdidas de datos o un rendimiento precario, por lo que es conveniente revisar periodicamente el filesystem. Linux incluye herramientas para tal fin, como por ejemplo fsck, que en realidad es una interfaz de usuario, front-end de e2fsck que a su vez este lo es para fsck.ext2, fsck.ext3 y fsck.ext4 o xfs_check y xfs_repair de XFS.

El exámen se centra mas en e2fsck que en fsck pero al ser fsck una herramienta mas general y util en otros sistemas de archivos, la comentaremos de forma detallada. Aun así, en esta sección nos preocuparemos de las herramientas fsck, e2fsck, xfs_check y xfs_repair de igual manera.

  • fsck : Es una herramiento para comprobar y opcionalmente reparar uno o varios sistemas de archivos, normalmente dañados o inconsistentes a causa de fallas de la red eléctrica, que apaga el sistema sin la posibilidad de que sync vacíe la caché del buffer en el disco que puede resultar en bloques de datos marcados como usados cuando en realidad se encuentran vacios. Otros errores se dan cuando se escribe directamente a un dispositivo en un área que ya contiene datos.
    Para usar fsck la mejor opción es desmontar el sistema de archivos a revisar y ejecutar el comando pasando como argumento el nombre del sistema de archivos (etiqueta), nombre de archivo de dispositivo como /dev/sda4, un punto de montaje como /home o un UUID, acompañado de alguna de sus opciones. Por regla general fsck intentará comprobar sistemas de archivos de diferentes discos de forma paralela para reducir el tiempo de comprobación de todos ellos, tiempo que se incrementaria al hacerlo en serie. Si no se especifica un filesystem o la opción -A, fsck intentará revisa en serie (-s), todos los sistemas de archivos encontrados en el fichero /etc/fstab.
    Algunas de las acciones mas utiles de fsck podrian ser: revisar todos los sistemas de archivos (-A), indicar el progreso de la operación (-C), mostrar una salida detallada (-V), realizar una simulación de lo que haría fsck (-N), ejecutar en modo no interactivo (-a), ejecutar en modo interactivo (-r) o revisar si existen bloques defectuoso (-c)
  • e2fsck : No es mas que la utilidad fsck pero para sistemas de archivos ext2, ext3 y ext4. Por regla general no es seguro ejecutar el comando e2fsck con los sitemas de archivos montados a excepción de que pasemos la opción -n (solo lectura y asume como ‘no’ la respuesta a todas las preguntas que nos realice e2fsck) y no vaya acompañada de -c, -l o -L, aun así se recomienda que solo expertos en sistemas de ficheros de la familia de extendidos ejecuten e2fsck con sistemas de archivos montados.
  • xfs_check : Debe usarse cuando haya evidencias de que el sistema de archivos esta comprometido o inconsistente. Por supuesto se recomienda desmontar la unidad a comprobar o al menos montarla en solo lectura. Se aconseja usar el comando xfs_repair -n para mayor escalabilidad y velocidad.
  • xfs_reparir : Util para reparar un sistema de archivos XFS corrupto. Este debe de estar desmontado de lo contrario los resultados no serán del todo fiables.

Monitorizar el uso del disco

Es primordial llevar un control del uso y espacio libre o consumido de un disco. Para ello disponemos de dos herramientas como son df y du.

Por particiones:

La herramienta df en su uso mas simple (es decir sin pasar opciones ni argumentos) nos mostrará información sobre el consumo del espacio de disco para cada una de las particiones y sistemas de archivos montados en el sistema, así como su punto de montaje. df es util para localizar particiones en peligro de desbordarse, pero una vez obtenida dicha información será momento de especificar un poco mas, el porque y en donde se está produciendo dicho desbordamiento. Para tal fin contamos con la herramienta du.

du busca los directorios especificados e informa de cuanto espacio consumen cada uno. La búsqueda es recursiva, aunque podemos modificar la salida de du mediante sus opciones como por ejemplo indicar que queremos mostrar los archivos, tener una suma total, contar enlaces de referencias, resumir la salida, etc…

Un ejemplo del uso de du sería ver que usuarios están haciendo un mayor uso de consumo de disco, podemos entonces crear una búsqueda simplificada (es decir que solo muestre el total de espacio para cada directorio que cuelga directamente de /home, esto sería algo como #du -s /home/*

Notas del autor:

 


Comandos Capítulo 3

 

Licencia Creative Commons
Curso LPIC-1 400 Capítulo 3 por nebul4ck se distribuye bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 4.0 Internacional.

Pin It

Escribir un comentario


Código de seguridad
Refescar



Redes:



 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Filtro por Categorías