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.