====== 203.2 Maintaining a Linux filesystem ======
Pertenece a [[informatica:certificaciones:lpic:lpic-2:203_fileystem_and_devices|LPI Topic 203: Filesystem and Devices]]
* **Weight**: 3
* **Description**: Candidates should be able to properly maintain a Linux filesystem using system utilities. This objective includes manipulating standard filesystems and monitoring SMART devices.
* **Key Knowledge Areas**:
* Tools and utilities to manipulate and ext2, ext3 and ext4
* Tools and utilities to perform basic Btrfs operations, including subvolumes and snapshots
* Tools and utilities to manipulate XFS
* Awareness of ZFS
* **Terms and Utilities**:
* ''mkfs'' (''mkfs.*'')
* ''mkswap''
* ''fsck'' (fsck.*)
* ''tune2fs'', ''dumpe2fs'' and ''debugfs''
* ''btrfs'', ''btrfs-convert''
* ''xfs_info'', ''xfs_check'', ''xfs_repair'', ''xfsdump'' and ''xfsrestore''.
* ''smartd'', ''smartctl''
===== 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
* ''-t tipo'': especifica el tipo de sistema de ficheros que se creará (ext2, ext3, ext4, reiserfs, xfs)
* ''dispositivo'': archivo especial de bloque que designa el dispositivo donde se creará el sistema de ficheros.
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:
* ''mkfs.ext2'' (crea sistemas de ficheros **ext2**)
* ''mkfs.ext3'' (crea sistemas de ficheros **ext3**)
* ''mkfs.ext4'' (crea sistemas de ficheros **ext4**)
* ''mkfs.raiserfs'' (crea sistemas de ficheros **ReiserFS**)
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:
- Añadir un disco y crear una particion ext2.
- Montar la partición en ''/mnt/fhf''.
- Ejecutar ''df /mnt/fhf''.
- Desmontar partición.
- 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'':
* ''-f'': Fuerza la revisión (sistema de archivos desmontado o sólo lectura)
* ''-N'': Comprueba el sistema de ficheros sin repararlo (para cuando el sistema de ficheros montado)
* ''-V'': Modo verbose
* ''-y'': Acepta (con yes) todas las preguntas. Cuando detecta errores y pregunta por su reparación, de esta manera le estamos respondiendo siempre que sí.
* ''-A'': Realiza la reparación automática.
* ''-C'': Muestra el % de progreso.
* ''-p'': reparación automática (sin hacer preguntas)
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'':
#
==== Sectores defectuosos ====
=== badblocks ===
Aplicación para revisar dispositivos en búsqueda de sectores defectuosos.
badblocks [options] filesystem
* ''-o file'': Vuelca el listado de sectores defectuosos a un archivo. Esto nos servirá para saber dónde no escribir, es decir, que sectores no utilizar.
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'':
* ''-c [n]'': Número de veces que se monta un sistema de ficheros antes de chequearse (intervalo entre comprobaciones).
* ''-i [n]'': Intervalo de tiempo entre dos comprobaciones (días).
* ''-j'': Añade un //journal// a un sistema de ficheros. Se puede utilizar para "convertir" un sistema de archivos ext2 a ext3.
* ''-O'': añade características al sistema de ficheros. Se puede utilizar para "convertir" un sistema de archivos ext3 a ext4.
* ''-L'': Permite modificar la etiqueta.
* ''-U [UUID]'': Permite modificar el valor de UUID.
* ''-l'': Muestra el contenido del **superbloque** (parte reservada del sistema de ficheros donde se almacena información sobre sí mismo)
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:
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 ()
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:
* Editar ''/etc/fstab'' y cambiar la última opción (pass) a 0
* Cambiar con ''tune2fs'' el parámetro para que la comprobación se haga tras X días.
==== 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
* ''-h'': Solo muestra información del superbloque (igual que ''tune2fs -l /dev/sda1'').
* ''-b'': Muestra los bloques marcados como erróneos
===== 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_info'': ver la información de la geometría de un sistema de ficheros XFS.
* ''xfs_check'': chequea la consistencia del sistema de ficheros.
* ''xfs_repair'': repara un sistema de ficheros XFS dañado
* ''xfs_admin'': modifica parámetros de un sistema de ficheros XFS
* ''xfs_growfs'': aumenta el tamaño de un sistema de ficheros XFS (solo si está montado)
''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:
* Optimización muy eficiente del espacio.
* Generación dinámica de inodos.
* Snapshots. Imágenes del estado del sistema en un determinado momento.
* Creación de subvolúmenes. Crear "particiones" dentro de la propia partición.
* Soporte RAID.
==== 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:
* Capacidad de almacenamiento casi ilimitada
* Snapshots.
* Alta tolerancia a fallos.
* Compresión de datos.
* Soporte RAID.
* ZFS pools: creación de volúmenes lógicos (tipo LVM) sobre el sistema de ficheros.
===== Smartmontools =====
Conjunto de herramientas para monitorizar y controlar discos por medio de la tecnología [[https://en.wikipedia.org/wiki/S.M.A.R.T.|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:
* ''smartd'': demonio del sistema que monitoriza los discos y envía alertas de errores.
* ''smartctl'': panel de control de utilidades para trabajar con discos.
===== 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?
* ''tune2fs''
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'':
* ''xfs'' porque no aparece nada sobre inodos porque inodos los crea dinámicamente.