Cómo inspeccionar el disco con fsck

Publicado el 07 enero 2016 por Drassill
En el día de hoy os vengo con uno de los aspectos más importantes de mantener en nuestro sistema operativo: La integridad del disco duro. Ningún sistema es perfecto y todos comparten el factor común de que, en caso de ser apagados abruptamente, pueden resultar dañados. Daños que en un principio son perfectamente reparables, siempre y cuando se recurran a las herramientas adecuadas. En Windows el sistema se encarga de realizar la comprobación y reparación de errores automáticamente, y en Linux en un principio también, si bien a veces la comprobación no se realiza correctamente y requiere ser realizada manualmente, con lo que conviene tener nociones de la herramienta encargada de dicha tarea: fsck (File System Check).
Fsck nació como una herramienta de búsqueda de errores en el sistema de archivos; errores que más tarde repararía. Se creó originalmente para UNIX, con lo que los sistemas basados en este, tales como Linux o MAC OS X, han heredado dicha herramienta, con lo que podríamos considerarla como una herramienta que puede ser usado en distintos ámbitos. Herramienta cuyo uso, afortunadamente, es muy sencillo. El comando más básico de todos tendría la siguiente estructura: fsck /dev/nombre_disco. Los nombres de los discos suelen comenzar por hb y un número o por sda y un número. Un comando básico de ejemplo sería:
fsck /dev/sda1
El comando básico de por sí simplemente buscaría anomalías en el disco y en caso de haberlas analizaría el sistema de archivos y lo repararía, si bien para cada reparación que hiciese pediría nuestra confirmación.
El comando en sí posee también varios parámetros, algunos más útiles o peligrosos que otros, pero que son convenientes tener en cuenta. Los parámetros más importantes serían:
  • -a: Este parámetro hace que todas las acciones realizadas por fsck, se confirme automáticamente; es un parámetro muy cómodo, pero que puede hacer cosas peligrosas sin nuestro consentimiento.
  • -f: forzar la verificación aunque todo parezca normal.
  • -v: (verbose) despliega más información que de lo normal.
  • -r: Con este parámetro forzamos a fsck pedir confirmación para absolutamente todo.
  • -y: Otro parámetro muy cómodo. A la hora de reparar un bloque del disco, fsck pide confirmación por defecto. Este parámetro dice sí a dichas preguntas automáticamente.
Aún con todos estos parámetros, existe un pequeño problema con este comando, y es que únicamente puede ser usado en unidades no montadas. Es decir, unidades que no estén en uso. Para según que unidades (discos duros externos, particiones en desuso, etc...) no supone un gran problema, pero a veces no se tiene esa suerte, viéndonos en problemas. Afortunadamente podemos forzar al equipo para que realice la revisión al arrancar el sistema, justo antes de que éste considere que el disco está montado, ayudándonos a evadir el problema. 
Para ello hay dos métodos posibles; uno orientado a sistemas basados en sysV y otro basado en systemd. Si se trata de un sistema operativo antiguo indudablemente se estará usando SysV, en cambio, en caso de estar usando un sistema reciente, probablemente esté corriendo bajo systemd.
En sysV
La manera de forzar al sistema para que ejecute fsck en el próximo inicio, siempre y cuando se use este init, sería algo tan simple como escribir el siguiente comando como root.
touch/forcefsck
Este comando simplemente crea un fichero con el nombre forcefsck dentro del directorio raíz del sistema. Dicho fichero forzaría al sistema a realizar fsck, pero no solo eso, sino que además dicho fichero se borraría tras realizar dicha revisión, evitando que el sistema realice la revisión cada vez que se iniciase el sistema operativo en el futuro.
En systemd
En systemd cambia un poco, pues aquí es necesario decirle al kernel que haga la revisión en el inicio, cosa que hará en cada arranque a menos que le indiquemos lo contrario en el futuro. Para ello habría que escribir lo siguiente.
  1. fsck.mode=force
  2. fsck.repair=yes

Espero que os haya resultado útil.
Saludos.