GNU/Linux >> Tutoriales Linux >  >> Linux

Comprobar y reparar errores del sistema de archivos con el comando fsck en Linux

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

Afortunadamente, eres usuario de Linux y tienes fsck (comprobación del sistema de archivos) para ayudar 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 puede querer usar fsck. Por lo general, querrá ejecutar este comando si su sistema no arranca, si un dispositivo (unidades externas o medios de almacenamiento) no funciona correctamente o si ha visto evidencia de corrupción de archivos.

Fsck es en realidad un "front-end" para una serie de verificadores específicos del sistema de archivos como fsck.vfat, fsck.ext2, etc. No es necesario especificarlos, pero es posible que pueda encontrar opciones más avanzadas en el manual páginas de 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á su archivo fstab (/etc/fstab ) para que los dispositivos los escaneen.

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

Puede usar el comando fdisk o df para enumerar el disco duro en Linux. De esta forma, puede especificar qué dispositivo se comprobará 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

Desmontar el dispositivo antes de ejecutar 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:

[email protected]:~$ 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 disco normal y saludable se ve así:

[email protected]:~$ sudo fsck /dev/sda2
fsck from util-linux 2.34
fsck.fat 4.1 (2017-01-24)
/dev/sda2: 5 files, 1967/1972 clusters

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

Comprensión de los códigos de salida para el comando fsck

Esta es una lista de los códigos que puede devolver fsck después de inspeccionar un disco. Su código de salida será una suma de estos códigos si analiza un disco. Si está utilizando fsck en varios dispositivos, devolverá el bit-wise OR de las dos sumas.

  • 0 - Sin errores
  • 1 - Errores del sistema de archivos corregidos
  • 2 - El sistema debe reiniciarse
  • 4 - Errores del sistema de archivos sin corregir
  • 8 - Error operativo
  • 16 - Error de uso o sintaxis
  • 32 - Fsck cancelado por solicitud del usuario
  • 128 - Error de biblioteca compartida

Puede verificar el código de salida del último comando de ejecución usando echo $? comando.

Uso práctico del comando fsck

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

Reparar un disco USB y otros dispositivos removibles

Para nuestro propósito, supongamos que ya ha identificado el dispositivo problemático /dev/sdb .

Primero, debe asegurarse de que la unidad se haya desmontado:

sudo umount /dev/sdb

Ahora ejecute el comando fsck:

sudo fsck /dev/sdb

Compruebe la salida para ver si hay errores. Si no aparece ninguno, verifique el código de salida con echo $? .

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

A pesar de eso, generalmente puedes usar -p para permitir que fsck aplique automáticamente las reparaciones.

sudo fsck -p /dev/sdb

Del mismo modo, -y aplicará correcciones a cualquier corrupción del sistema de archivos detectada.

Reparar el sistema de archivos raíz

No puede desmontar la partición raíz mientras el sistema está activo. Si sospecha que su sistema de archivos principal está dañado, debe usar un enfoque diferente aquí.

En realidad, hay algunas opciones diferentes que puede usar. Puede ejecutar fsck en el momento del arranque, en modo de rescate o usar un CD en vivo con tema de recuperación.

Muchas distribuciones de Linux forzarán automáticamente fsck al inicio después de una cierta cantidad de intentos fallidos de arranque. Si prefiere tomar el asunto en sus propias manos, puede programar el sistema para que lo haga nosotros mismos.

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

sudo tune2fs -c 1 /dev/sda

Suponiendo que su dispositivo raíz es dev/sda , este es el comando que ingresaría.

Ahora, lo que realmente sucede es que está cambiando la configuración del sistema para que fsck se ejecute cada n número de botas (1 en el ejemplo). También puede establecer esto en un intervalo de tiempo estándar. Las opciones son d sí, w semanas, o m meses.

Digamos que desea que fsck se ejecute cada vez que inicie si no ha habido una verificación en una semana. Podrías usar -i para especificar el intervalo y el comando se vería así.

sudo tune2fs -i 1w /dev/sda	

Si está utilizando systemd, puede forzar la ejecución de fsck en su próximo arranque ingresando lo siguiente:

fsck.mode=force
fsck.repair=yes

Conclusión

Siempre puede consultar las páginas del manual para obtener más información. Solo usa man fsck en la terminal.

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


Linux
  1. Verifique los procesos de Java en Linux con el comando jps

  2. Ver comandos y tareas con el comando watch de Linux

  3. Verifique el estado del archivo en Linux con el comando stat

  4. Linux:¿cómo hacer para forzar la verificación del sistema de archivos raíz (y, opcionalmente, una solución) en el arranque?

  5. Cómo verificar el sistema operativo y la versión usando un comando de Linux

Comando Fsck en Linux (Sistema de archivos de reparación)

15 comandos ps de Linux con ejemplos

Comando Fsck en Linux

Cómo comprobar y reparar un sistema de archivos en RHEL Linux

Cómo comprobar la versión del sistema operativo con la línea de comandos de Linux

Cómo verificar los parámetros del servidor VPS con el comando Linux