Tabla de Contenidos

203.2 Maintaining a Linux filesystem​

Pertenece a LPI Topic 203: Filesystem and Devices

Creación de particiones

Para crear particiones podemos usar la utilidad fdisk. fdisk es una herramienta sencilla para crear particiones en diferentes formatos.

Ejemplo:

fdisk /dev/sdb

También hay otras herramientas como cfdisk o parted

Creación de sistemas de ficheros

Con mkfs podemos crear sistemas de ficheros en espacios de almacenamiento sin tratar, tradicionalmente particiones de disco:

Sintaxis:

mkfs [-t tipo] dispositivo

Si no se especifica un tipo, se creará un sistema de ficheros ext2

Ejemplo:

mkfs –t ext4 /dev/sda3

El comando anterior creará un sistema de ficheros ext4 en el dispositivo /dev/sda3 (partición 3 del dispositivo de almacenamiento /dev/sda)

Actualmente, mkfs es una interfaz de varios creadores de sistemas de archivos. Las opciones más comunes que disponemos son:

Si necesitamos crear otros sistemas de ficheros, habría que instalar las utilidades correspondientes. Por ejemplo, si queremos formatear un dispositivo en XFS, instalaríamos el paquete xfsprogs. Entonces ya tendríamos disponible mkfs.xfs.

mkfs.ext2, mkfs.ext3 y mkfs.ext4 utilizan por debajo mke2fs que es el programa que permite crear sistemas de ficheros ext

Ejercicios propuestos:

  1. Añadir un disco y crear una particion ext2.
  2. Montar la partición en /mnt/fhf.
  3. Ejecutar df /mnt/fhf.
  4. Desmontar partición.
  5. Repetir lo pasos anterior para ext4 y xfs.

Comprobación de errores

Para comprobar los errores del sistema de ficheros y repararlos usamos la herramienta fsck.

Sintaxis:

fsck [-t tipo_sistema_ficheros ] [ opciones ] dispositivo

La revisión de un sistema de ficheros consiste principalmente en la comprobación de coherencia entre su tabla de inodos y los bloques de datos correspondientes, coherencia entre su tabla de inodos y los bloques de datos correspondientes. Es decir, para cada inodo se comprobará que los bloques de datos apuntados por este inodo están presentes, con el número y la cantidad indicados.

Linux realiza un fsck al inicio del sistema en las particiones marcadas en /etc/fstab. Esto a veces puede ser un problema a la hora de iniciar un sistema con un uptime.

Esta herramienta solo se puede utilizar sobre particiones que no estén montadas.

Opciones del comando fsck:

Ejemplo:

fsck –t ext4 –N /dev/sda1

Aunque el comando fsck permite comprobar los sistemas de archivos xfs, se recomienda utilizar los comandos específicos xfs_check y xfs_repair.

Si queremos pasar el fsck en la partición del sistema, tendríamos que hacerlo antes de que se montase, es decir, durante el arranque. Para ello, es necesario indicarlo en el fichero /etc/fstab en la columna pass:

# <file system> <mount point> <type> <option>             <dump> <pass>
/dev/sda1       /             ext4   errors=remount-ro    0      1

Sectores defectuosos

badblocks

Aplicación para revisar dispositivos en búsqueda de sectores defectuosos.

badblocks [options] filesystem

Es recomendable no ejecutarlo directamente sino como la opción -c de mkfs:

mkfs.ext4 -c /dev/sda1

De esta manera, se realizará la comprobación de sectores defectuosos y tenerlo en cuenta para crear el sistema de ficheros.

Depurar el sistema de ficheros

debugfs

El comando debugfs es un depurador del sistema de ficheros. Puede ser utlizado para examinar el estado de un sistema de archivos e incluso lograr recuperar ficheros borrados.

Ejemplo:

debugfs /dev/sda1

Ajustar parámetros de sistemas de ficheros ext

Los sistemas de ficheros tienen opciones adaptables, para ello usamos la herramienta tune2fs:

tune2fs

Para sistemas de ficheros ext2, ext3 y ext4.

Sintaxis:

tune2fs [ options ] device

Con tune2fs podemos desactivar el fsck al inicio del SO (en lugar de hacerlo mediante /etc/fstab) o cambiar el porcentaje de bloques reservados para una partición.

Opciones del comando tune2fs:

El UUID (Universally Unique Identifier), como sucede con la etiqueta, permite asociar a un periférico de almacenamiento un identificador (dígitos hexadecimales separados por guiones) en vez de usar el archivo de bloque especial (/dev/sdb1, por ejemplo). La diferencia con la etiqueta es que la asignación del uuid es automática cuando se crea el sistema de archivos.

Conversión de un sistema de archivos ex3 a ext4:

tune2fs -O extents,uninit_bs,div_index dispositivo

Las opciones activadas son las que corresponden a las nuevas funciones introducidas por ext4.

Ejemplo para hacer una comprobación cada 365 días:

tune2fs –i 365 /dev/sda1

Información del superbloque:

tune2fs -l /dev/sda1
tune2fs 1.44.5 (15-Dec-2018)
Filesystem volume name:   <none>
Last mounted on:          /boot
Filesystem UUID:          b5a9d411-1845-4561-aff3-8394f36d60f6
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      ext_attr resize_inode dir_index filetype sparse_super large_file
Filesystem flags:         signed_directory_hash
Default mount options:    user_xattr acl
Filesystem state:         not clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              124928
Block count:              498688
Reserved block count:     24934
Free blocks:              433060
Free inodes:              124589
First block:              1
Block size:               1024
Fragment size:            1024
Reserved GDT blocks:      256
Blocks per group:         8192
Fragments per group:      8192
Inodes per group:         2048
Inode blocks per group:   256
Filesystem created:       Wed Feb 10 18:01:51 2021
Last mount time:          Wed Mar 24 20:22:25 2021
Last write time:          Wed Mar 24 20:22:25 2021
Mount count:              4
Maximum mount count:      -1
Last checked:             Wed Feb 10 18:01:51 2021
Check interval:           0 (<none>)
Lifetime writes:          586 MB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:               128
Default directory hash:   half_md4
Directory Hash Seed:      7a592f52-bf17-457d-89fd-d0e81b5b7ee2

Nos han dado una ventana de 10 minutos para reiniciar el servidor mañana. Miramos el uptime y lleva más de 670 días sin reiniciarse. Debemos desactivar el fsck automático del sistema de ficheros.

Con tanto tiempo funcionando, es probable que fsck encuentre errores y tardará mucho (y solo tenemos 10 minutos). Opciones:

Información del sistema de ficheros

dumpe2fs

Antes de modificar cualquier cosa del FS con tune2fs es importante saber el estado actual del sistema de ficheros. Para ello usamos dumpe2fs:

dumpe2fs [options] device

Otros sistemas de archivos

XFS

Sistema que permite accesos muy rápidos de lectura/escritura y genera los inodos de forma dinamica.

En los sitemas extended (ext2, ext3, ext4), al formatearlos, tienen definido un tamaño de inodo y sector. En función de eso se generan un número de inodos. Este número es finito y determina el número de ficheros y directorios que se pueden tener. El problema es que si creamos tantos ficheros como inodos disponibles, ya no podríamos seguir creando ficheros en ese sistema de ficheros aunque tuviésemos espacio. XFS no tiene esa limitación, va generando los inodos sobre la marcha cuando creamos los ficheros.

Herramientas:

xfs_check y xfs_repair serían equivalentes al fsck. xfs_admin sería el equivalente a tune2fs.

Aumentar el tamaño del sistema de archivos al máximo del espacio disponible en el dispositivo:

xfs_growfs -d /dev/sdb

Btrfs

Sistema de ficheros aún en desarrollo, pero que ya viene soportado de serie por los últimos kernels. Se puede convertir en una alternativa muy eficiente a los sistemas Ext2/3/4.

Características fundamentales:

ZFS

Sistema de ficheros aún en desarrollo, aún no soportado de serie por la mayoría de los kernels. Sus características cambian el paradigma del diseño tradicional de los sistemas de ficheros.

Características fundamentales:

Smartmontools

Conjunto de herramientas para monitorizar y controlar discos por medio de la tecnología SMART. Esta tecnología de hardware que nos permite comunicarnos directamente con los discos duros y analizarlos, monitorizarlos…

Para poder emplear esta tecnología, debe estar soportada a nivel de placa y disco de almacenamiento.

El paquete smartmontools instala dos programas:

Test

¿Qué comando se puede utilizar en una partición existente (y formateada) para configurar el intervalo entre las comprobaciones del disco cuando montamos las particiones?

De acuerdo a la siguiente salida de df -i:

Filesystem Inodes    IUsed IFree    IUse%    Mounted on
/dev/md0   1966080   45044 1921036  3%       /
/dev/sde1  0         0     0        -        /mnt

¿Qué sistema de ficheros usa /dev/sde1: