LPIC-2 Tema 203.2: Mantenimiento de un sistema de archivos en Linux
Nueva entrada sobre las certificaciones LPIC-2, esta vez sobre el tema 203.2 dedicado al mantenimiento del sistema de archivos en Linux. Para ello, los candidatos tendrán que conocer algunas de las herramientas del sistema destinadas a ello, además de saber monitorizar el estado de los medios de almacenamiento con S.M.A.R.T..
En estos exámenes se evaluarán los conocimientos sobre las herramientas y utilidades para manipular sistemas de archivos como los ext2, ext3 y ext4, además de Btrfs (inclusidos subvolúmenes y snapshots), XFS y conocimientos sobre ZFS.
ÍNDICE:
Sobre ZFS
ZFS (Zettabyte File System) es un sistema de archivos, bajo estándar POSIX, creado originalmente por Sun Microsystems (ahora Oracle) para el sistema operativo Solaris. Destaca por su gran capacidad, sencillez de mantenimiento, capacidad de auto-reparación (self-healing) contra corrupción de datos, capacidad de compresión y cifrado transparente, capacidad para instantáneas (snapshots), gran capacidad para un máximo de 248 y tamaños máximos de volúmenes de hasta 16 EB, etc.
El código fuente de ZFS se lanzó bajo licencia CDDL como parte de OpenSolaris, momento en el que sería adaptado para otros sistemas operativos, como un port FUSE y otro nativo para Linux, BSD, o Illumos. y nacería la implementación OpenZFS.
Canonical incluyó ZFS en Ubuntu en 2016, siendo la primera distro en adoptarlo de forma oficial. Incluso se admite de forma experimental para la partición raíz.
La adopción de ZFS en Linux causaría mucha controversia, ya que FSF aseguraba que CCDL no era compatible con la licencia GPL del kernel. Para salvar este obstáculo, se debe compilar y cargar el módulo con el código ZFS por separado.
En 2006 hubo una posible solución a esta incompatibilidad de licencias, y era usando un port experimental de ZFS para FUSE que se ejecutaba desde el espacio de usuario en vez de integrarlo en el kernel. Así no se consideraría un trabajo derivado del núcleo, aunque eso generó penalizaciones de rendimiento importantes, terminando en el abandono en 2016.
Más información – OpenZFS
Herramientas para mantenimiento de sistemas de archivos
Para poder mantener los sistemas de archivos, tienes que conocer una serie de herramientas y utilidades que ya introduje en un artículo previo. Por eso, aquí me limitaré a poner algunos ejemplos frecuentes, de algunas de ellas, que se suelen hacer durante el mantenimiento.
- Para más información sobre la solución de problemas ver esto.
- Para más información sobre los sistemas de archivos ver estos:
fsck
Esta utilidad es muy importante para verificar y reparar errores en el sistema de archivos. Sus siglas provienen de File System Consistency Check y suele ejecutarse de forma transparente durante el arranque, como recordarás cuando se estudió el fichero /etc/fstab. No obstante, también podrás ejecutarlo en cualquier otro momento con privilegios.
Se puede emplear con tres modos de operación:
- Comprobar si existen errores y dejar que el usuario decida qué hacer.
- Verificar errores y hacer reparaciones automáticamente.
- Comprobar errores pero no realizar ninguna acción.
*IMPORTANTE: no se debe usar fsck con unidades montadas. Siempre se deben desmontar antes de operar sobre ellas.
Para su uso, puedes seguir estos ejemplos:
#Verificar si una partición tiene errores sin reparar fsck -n /dev/sdb2 #Comprobar y reparar automáticamente los errores de /dev/sdb2 fsck -a /dev/sdb2 #Comprobar solo partición con un sistema de archivos específico fsck -t ext4 /dev/sdb1 #Realizar una comprobación de los errores de todas las particiones fsck -A #Si quieres comprobar todas, pero deshabilitar la verificación de / fsck -AR #Comprobar coherencia solo en unidades sin montar fsck -AM #Más información man fsck
Herramientas para btrfs
El sistema de archivos btrfs también se está haciendo un hueco en Linux. Fue anunciado por Oracle para GNU/Linux, con el objetivo de sustituir ext4. La idea era vencer las limitaciones de este otro FS, como el tamaño máximo de los ficheros soportados. Además, está muy orientado a la tolerancia de fallos, reparación y fácil administración. Es decir, coge algunas ideas del diseño de Resier4 y ZFS.
Pues bien, para mantener la integridad de este tipo de sistema de archivos, tiene sus propias herramientas:
#Listar los subvolúmenes btrfs subvolume list /btrfs #Crear una instantánea o snapshot del subvolumen SV1 y llamar SV1-snap btrfs subvolume snapshot /btrfs/SV1 /btrfs/SV1-snap #Obtener información del FS btrfs filesystem df /btrfs btrfs filesystem show #Forzar la sincronización de datos que no estuvieran escritos btrfs filesystem sync /btrfs #Defragmentación de un fichero concreto o un directorio respectivamente btrfs filesystem defragment -vf /home/system.iso btrfs filesystem defragment -vf /home #Redimensionar una partición. Por ejemplo, reducir 2GB una partición btrfs filesystem resize -2G /btrfs #Puedes usar + en vez de - para ampliar, o solo usar el número para indicar el nuevo tamaño concreto que quieres que tenga esa unidad. Además de M o K para megas y kilo en vez de gigas. #Más información man btrfs #Convertir un sistema de archivos a Btrfs btrfs-convert -r /dev/sdc1 #¡IMPORTANTE! Tras la conversión hay que editar /etc/fstab para usar el nuevo UUID y tipo de FS
S.M.A.R.T.
S.M.A.R.T. son las giglas de Self Monitoring Analysis and Reporting Technology. Una tecnología para verificar la salud del disco duro (HDD o SSD). De esa forma, el usuario puede anticiparse y poder realizar una copia de seguridad del contenido, o reemplazar el medio, antes de un fallo irrecuperable.
Esta tecnología se basa en una serie de comprobaciones:
- Temperatura: un aumento de temperatura suele ser indicativo de problemas en el motor de los HDD.
- Velocidad de lectura: una reducción de la tasa puede indicar también problemas internos.
- Tiempo de partida (spin-up): es también indicativo de fallos del motor o cabezal.
- Contador de sectores reasignados: cuando se reasignan muchos sectores internos suele indicar que la unidad está sufriendo más datos de lo normal y está a punto de fallar.
- Otros: también miden la velocidad de búsqueda (seek time), altura de vuelo del cabezal, ECC, propiedades eléctricas, fallos de programa en SSD, fallos de borrado en SSD, vida restante según el número de ciclos de escritura y borrado en los SSD, etc.
Para poder trabajar con esta tecnología y obtener datos, puedes usar herramientas como el demonio smartd que se encarga de monitorizar y su fichero de configuración /etc/smartmontools/smartd.conf. Para eso tendrás que tener instalado el paquete smartmontools. Y para operar:
#Mostrar información smartctl -a -d /dev/sdb #Calcular el tiempo estimado de test smartctl -c /dev/sdb #Comprobar el estado de salud del /dev/sdb smartctl -i /dev/sdb #Test largo y prolongado o corto y rápido smartctl --test=long /dev/sdb smartctl --test=short /dev/sdb #Mostrar información general de salud de un disco smartctl -H /dev/sdc #Mostrar el registro de errores del disco smartctl -l error /dev/sdc #Habilitar y deshabilitar SMART en un disco respectivamente smartctl -s on /dev/sdc smartctl -s off /dev/sdc #Ver reslutados del auto-test del disco smartctl -l selftest /dev/sdb
Otras herramientas para mantenimiento del FS
Por último, también existen otras herramientas que ya introduje en temas previos y que, además de servir para crear y obtener información de los sistemas de archivos, también sirve para su mantenimiento. Aquí tienes algunos ejemplos habituales:
#Comprobar los sectores malos de un disco mke2fs -c /dev/sdc1 #Simular la creación de un FS para comprobar lo que ocurriría en la stdout mkfs -t ext3 -n /dev/sda6 #Ver detalles de inode tune2fs -l /dev/sdc | grep Inode #Cambiar el Inode-per-group a 8192 mke2fs -i 8192 /dev/sdc #Cambio del tamaño de Inode en una partición mke2fs -I 128 -i 8192 /dev/sdc1 #Información del superblock dumpe2fs -h /dev/sda3 dumpe2fs /dev/sda3 #Obtener información para depuración de un medio debugfs /dev/sdb2 #Obtener información de la partición XFS xfs_info /dev/sdc1 #Redimensionar una partición XFS a 256 bloques (1GB, ya que los bloques son de 4096 bytes) xfs_growfs /dev/sdc4 -D 256 #Mostrar lo que ocurriría durante la reparación del XFS, pero sin hacerlo xfs_repair -n /dev/sdc1 xfs_check /dev/sdc1 #Reparar el FS xfs_repair /dev/sdc1 #Backup en XFS xfsdump –l 0 –L "Copia de seguridad" –f /dev/sdc1 /xfs #Ver el inventario de copias xfsdump -l #Copia de seguridad de un directorio o fichero específico xfsdump –f /home/prueba /xfs #Recuperación de las copias realizadas previamente xfsrestore –f /dev/sdc1 /xfs xfsrestore –f /home/prueba /xfs