Verifique y corrija los errores del sistema de archivos con el comando fsck en Linux

Hola me llamo Luis. Os traigo un nuevo post sobre el sistema operativo mas molón. Encantado linuxeros.

A veces, a los buenos sistemas les suceden cosas malas.

Afortunadamente, eres un usuario de Linux y tienes uno. fsck (comprobación del sistema de archivos) para obtener ayuda con un sistema de archivos potencialmente dañado. Esta utilidad se utiliza para comprobar y (opcionalmente) reparar el sistema de archivos.

Hay varios escenarios en los que es posible que desee utilizar fsck. Normalmente, le gustaría ejecutar este comando si su sistema no arranca, un dispositivo (dispositivos externos o medios de almacenamiento) no funciona correctamente o si ha visto evidencia de corrupción de archivos.

Fsck es en realidad la «interfaz» para una serie de comprobaciones específicas del sistema de archivos, como fsck.vfat, fsck.ext2 y más. No es necesario especificarlos, pero es posible que pueda encontrar opciones más avanzadas en páginas humanas sobre estos comandos más precisos.

Introducción al comando fsck

El comando fsck sigue un patrón similar a la mayoría de los comandos de Linux.

fsck [options] [filesystem]

Si no especifica un sistema de archivos, el sistema analizará el suyo archivo fstab (/etc/fstab) para escanear dispositivos.

Deberá ejecutar el comando como usuario root o usarlo con sudo.

Puede usar el comando fdisk o df para listar el disco duro de Linux. De esta manera, puede especificar qué dispositivo verificar con el comando fsck.

Disk /dev/nvme0n1: 238.49 GiB, 256060514304 bytes, 500118192 sectors
Disk model: THNSN5256GPUK NVMe TOSHIBA 256GB        
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 014A45DC-22A2-4FC0-BEEA-25A6F2406380

Device            Start       End   Sectors   Size Type
/dev/nvme0n1p1     2048   1050623   1048576   512M EFI System
/dev/nvme0n1p2  1050624  98563270  97512647  46.5G Linux filesystem
/dev/nvme0n1p3 98564096 500117503 401553408 191.5G Linux filesystem

Retire el dispositivo antes de iniciar fsck

No ejecute fsck en un dispositivo montado, primero deberá desmontar el objetivo para evitar dañar sus archivos.

Si intenta ejecutar fsck en un dispositivo montado, debería ver un error como este:

chris@handbook:~$ sudo fsck /dev/sda3
fsck from util-linux 2.34
e2fsck 1.45.5 (07-Jan-2020)
/dev/sda3 is mounted.
e2fsck: Cannot continue, aborting.

Ejecutar fsck en un dispositivo robusto normal se ve así:

chris@handbook:~$ sudo fsck /dev/sda2
fsck from util-linux 2.34
fsck.fat 4.1 (2017-01-24)
/dev/sda2: 5 files, 1967/1972 clusters

Si bien fsck acepta un nombre de dispositivo como /dev/sda, puede optar por ingresar el UUID para evitar confusiones con los dispositivos de montaje y desmontaje. El UUID es un valor fijo asignado a su dispositivo y no se verá afectado por estos cambios del sistema.

Comprender el código fuente del comando fsck

Esta es una lista de códigos que fsck puede devolver después de una verificación de disco. Su código fuente será la suma de estos códigos si analiza una sola unidad. Si usa fsck en varios dispositivos, volverá poco o OR de las dos cantidades.

0 – Sin errores 1 – Errores fijos del sistema de archivos 2 – El sistema debe reiniciarse 4 – Los errores del sistema de archivos permanecen sin corregir 8 – Error operativo 16 – Error de uso o sintaxis 32 – Fsck ha sido cancelado por solicitud del usuario 128 – Error de biblioteca compartida

Puede verificar el código fuente del último comando para ejecutar usando echo $? equipo.

Uso práctico del comando fsck

Ahora que está un poco familiarizado con el comando fsck, veamos ejemplos prácticos del uso de este comando.

Reparar la unidad USB y otros dispositivos extraíbles

Para nuestro propósito, supongamos que ya ha identificado el dispositivo con problemas /dev/sdb.

Primero debe asegurarse de que se retire el dispositivo:

sudo umount /dev/sdb

Ahora ejecute el comando fsck:

sudo fsck /dev/sdb

Verifique la salida para ver si hay errores. Si no se muestra, verifique el código de salida con echo $?.

También hay algunos indicadores de opciones que podemos agregar para permitir la corrección automática. Sin embargo, estos comandos no están estandarizados y debe verificar el tipo de sistema de archivos y comparar la documentación de la página de la persona específica.

Sin embargo, normalmente puede utilizar -p para permitir que fsck aplique correcciones automáticamente.

sudo fsck -p /dev/sdb

Similar, -y aplicará correcciones a cualquier daño detectado en el sistema de archivos.

Reparar el sistema de archivos raíz

No puede eliminar la partición principal mientras el sistema está activo. Si sospecha que su sistema de archivos principal está dañado, debería adoptar un enfoque diferente aquí.

De hecho, hay varias opciones diferentes que puede utilizar. Puede ejecutar fsck durante el arranque, en modo de rescate o usar un CD en vivo con el tema de recuperación.

Muchas distribuciones de Linux forzarán automáticamente a fsck a arrancar después de varios intentos fallidos de arranque. Si prefiere tomar el asunto en sus propias manos, puede programar el sistema para que lo haga usted mismo.

La mayoría de las versiones modernas de Linux tienen una herramienta llamada tune2fs.

sudo tune2fs -c 1 /dev/sda

Suponiendo que su dispositivo principal es dev/sda, este es el comando que debe ingresar.

Lo que realmente sucede es que cambia la configuración del sistema para que fsck se ejecute cada n número de zapatos (1 en el ejemplo). También puede establecer esto en un intervalo de tiempo estándar. Las opciones son mihielo, weeks, o metrolugares.

Supongamos que desea que fsck funcione siempre que lo ejecute si no ha habido un control en una semana. Puedes usar -i para establecer el intervalo y el comando se verá así.

sudo tune2fs -i 1w /dev/sda	

Si está utilizando systemd, puede forzar que fsck se ejecute en el próximo arranque ingresando lo siguiente:

fsck.mode=force
fsck.repair=yes

Conclusión

Siempre puede consultar los manuales para obtener más información. Solo usa man fsck en la terminal.

Espero que haya aprendido algo nuevo sobre el comando fsck. Si tiene algún comentario o pregunta, déjelo a continuación.

Este Blog lo escribimos para ayudar y servir de referencia a la gente Linux. Esperamos que os guste.

Leave a Reply