Posts del SysAdmin

Curso Gratuito Linux – Como verificar y reparar errores en el sistema de archivos con fsck

En nuestro Curso Gratuito Linux, hoy vamos a aprender a verificar y reparar nuestro sistema de archivos con el comando fsck.

Aunque me moleste decirlo, seria el equivalente al comando chkdsk de Windows, pero a no confundir eh! esto no significa que uno haya sido consecuencia del otro, simplemente lo menciono ya que seguramente si estas siguiendo mis post, es porque estás empezando en el mundo GNU/Linux y probablemente estés mas familiarizado con los comandos de Windows.

Yendo a lo nuestro, antes que nada, debemos tener bien en claro que NO debemos ejecutar este comando en sistemas de archivos que se encuentran «montados».

Chequeo de sistema de archivo en una particion

Para ver todas las particiones disponibles en el sistema, vamos a utilizar el comando parted (lo instalaremos con el comando aptitude install parted)

# parted /dev/sda 'print'

Number  Start   End     Size    Type      File system  Flags
 1      1049kB  106MB   105MB   primary   fat16        diag
 2      106MB   15.8GB  15.7GB  primary   ntfs         boot
 3      15.8GB  266GB   251GB   primary   ntfs
 4      266GB   500GB   234GB   extended
 5      266GB   466GB   200GB   logical   ext4
 6      467GB   486GB   18.3GB  logical   ext2
 7      487GB   499GB   12.0GB  logical   fat32        lba

Para verificar un sistema de archivos específico, en nuestro ejemplo sera /dev/sda6, ejecutaremos:

# fsck /dev/sda6
fsck from util-linux 2.20.1
e2fsck 1.42 (29-Nov-2011)
/dev/sda6: clean, 95/2240224 files, 3793506/4476416 blocks

Comando fsck para un sistema de archivos específico

Fsck internamente utiliza un comando específico para cada sistema de archivo. Estos comandos los vamos a encontrar en /sbin

# cd /sbin
# ls fsck*
fsck  fsck.cramfs  fsck.ext2  fsck.ext3  fsck.ext4  fsck.ext4dev  fsck.minix  fsck.msdos  fsck.nfs  fsck.vfat

Fsck nos informará de un error cuando no encuentra un comando específico para un sistema de archivos dado.

Por ejemplo, si ejecutamos fsck en una partición ntfs, vamos a tener como resultado un mensaje de error. Si observamos más arriba vemos que NO tenemos un fsck.ntfs en /sbin

# fsck /dev/sda2
fsck from util-linux 2.20.1
fsck: fsck.ntfs: not found
fsck: error 2 while executing fsck.ntfs for /dev/sda2

Ahora, si no podemos ejecutar fsck con sistemas de archivos que están montados, ¿como hacemos?

O bien nos valemos de live-cd como SystemRescueCD donde vamos a poder trabajar sin problemas ya que no vamos a estar montando nuestro disco, o bien podemos valernos de un truco que consiste en cerar un archivo llamado /forcefsck

Vamos a ver como hacerlo en nuestro Debian, para ello, iniciaremos como super usario root

fsck1

Con el comando touch vamos a generar un archivo vacio con el nombre fsck en la raiz del sistema.

Vamos a comprobar la existencia del archivo con ls

fsck2

Ahora simplemente vamos a reiniciar nuestro sistema con el comando shutdown -r now

fsck3

Cuando el sistema arranca nuevamente, ejecutara el comando fsck y veremos el resultado como se aprecia en la imagen anterior.

Existen muchas mas opciones para la ejecución de fsck, para ello basta con tipear man fsck en nuestro Debian para acceder a las páginas del manual.

Mi consejo es que periódicamente hagan un fsck de vuestro disco. Particularmente lo hago una vez por semana, los días viernes creo el archivo así la próxima vez que prenda mi máquina se corre el comando. ¿Cómo hago?, valiendome de cron 🙂

¿Se acuerdan cuando programamos en el post anterior la sincronización automática de la hora?, bueno… vamos a hacer algo similar para esta creación del archivo /forcefsck

Siempre como root en vamos a editar el archivo crontab tipeando crontab -e

fsck4

De esta manera, a las 11:00 hs todos los días viernes (el 5 corresponde al viernes) se va a crear el archivo y así, la próxima vez que nuestro sistema arranque, se ejecutará automáticamente fsck

Espero que haya sido útil este aporte y por favor, no dejen de compartir!

Eduardo

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *