GNU/Linux >> Tutoriales Linux >  >> Linux

10 ejemplos de comandos Fsck de Linux para verificar y reparar el sistema de archivos

La utilidad fsck de Linux se utiliza para comprobar y reparar los sistemas de archivos de Linux (ext2, ext3, ext4, etc.).

Dependiendo de cuándo fue la última vez que se verificó un sistema de archivos, el sistema ejecuta fsck durante el arranque para verificar si el sistema de archivos se encuentra en un estado consistente. El administrador del sistema también podría ejecutarlo manualmente cuando haya un problema con los sistemas de archivos.

Asegúrese de ejecutar el fsck en un sistema de archivos desmontado para evitar problemas de corrupción de datos.

Este artículo explica 10 ejemplos prácticos sobre cómo ejecutar el comando fsck para solucionar y reparar cualquier error del sistema de archivos.

1. Comprobación del sistema de archivos en una partición de disco

Primero, vea todas las particiones disponibles en su sistema usando el comando parted como se muestra a continuación.

# 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

Puede verificar un sistema de archivos específico (por ejemplo:/dev/sda6) como se muestra a continuación.

# 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

Los siguientes son los posibles códigos de salida para el comando fsck.

  • 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

2. Comando Fsck específico para un tipo de sistema de archivos

fsck utiliza internamente el comando de verificación del sistema de archivos respectivo para una operación de verificación del sistema de archivos. Estos comandos fsck checker normalmente se encuentran en /sbin.

El siguiente ejemplo muestra los diversos comandos posibles de fsck checker (por ejemplo:fsck.ext2, fsck.ext3, fsck.ext4, etc.)

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

El comando fsck le dará un error cuando no encuentre un verificador de sistema de archivos para el sistema de archivos que se está verificando.

Por ejemplo, si ejecuta fsck sobre una partición ntfs, obtendrá el siguiente mensaje de error. No hay fsck.ntfs en /sbin. Entonces, esto da el siguiente mensaje de error.

# 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

3. Verifique todos los sistemas de archivos en una sola ejecución usando la opción -A

Puede verificar todos los sistemas de archivos en una sola ejecución de fsck usando esta opción. Esto verifica el sistema de archivos en el orden dado por fs_passno mencionado para cada sistema de archivos en /etc/fstab.

Tenga en cuenta que los sistemas de archivos con un valor fs_passno de 0 se omiten y los mayores que 0 se marcan en el orden.

/etc/fstab contiene las entradas que se enumeran a continuación,

# cat /etc/fstab

##
proc            /proc           proc    nodev,noexec,nosuid 0       0
## / was on /dev/sda5 during installation
/dev/sda5 /               ext4    errors=remount-ro 0       1
## /mydata was on /dev/sda6 during installation
/dev/sda6 /mydata         ext2    defaults        0       2
## /backup was on /dev/sda7 during installation
/dev/sda7 /backup         vfat    defaults        0       3

Aquí, el sistema de archivos con el mismo fs_passno se verifica en paralelo en su sistema.

# fsck -A

Se recomienda que excluya el sistema de archivos raíz durante esta verificación global agregando la opción -R como se muestra a continuación.

# fsck -AR -y
fsck from util-linux 2.20.1
e2fsck 1.42 (29-Nov-2011)
/dev/sda6: clean, 95/2240224 files, 3793506/4476416 blocks
dosfsck 3.0.12, 29 Oct 2011, FAT32, LFN
/dev/sda7: 8 files, 50/1463400 clusters

Nota:La opción -y se explica en uno de los ejemplos a continuación.

4. Marque solo un tipo de sistema de archivos específico usando la opción -t

Con la opción fsck -t, puede especificar la lista de sistemas de archivos que se comprobarán. Cuando está usando la opción -A, el fsck verificará solo el sistema de archivos mencionado con esta opción -t. Tenga en cuenta que fslist son valores separados por comas.

Ahora, pase ext2 como el valor fslist a la opción -t como se muestra a continuación:

# fsck -AR -t ext2 -y
fsck from util-linux 2.20.1
e2fsck 1.42 (29-Nov-2011)
/dev/sda6: clean, 11/2240224 files, 70327/4476416 blocks

En este ejemplo, /dev/sda6 es la única partición creada con el sistema de archivos ext2, por lo que se comprueba en consecuencia.

Usando la palabra clave 'no' delante del sistema de archivos, puede verificar todos los demás tipos de sistemas de archivos excepto un sistema de archivos en particular.

En el siguiente ejemplo, el sistema de archivos ext2 se excluye de la verificación.

# fsck -AR -t noext2 -y
fsck from util-linux 2.20.1
dosfsck 3.0.12, 29 Oct 2011, FAT32, LFN
/dev/sda7: 0 files, 1/1463400 clusters

5. No ejecute Fsck en el sistema de archivos montado usando la opción -M

Es una buena idea usar esta opción por defecto con todas sus operaciones fsck. Esto evita que ejecute fsck accidentalmente en un sistema de archivos que está montado.

# mount | grep "/dev/sd*"
/dev/sda5 on / type ext4 (rw,errors=remount-ro)
/dev/sda6 on /mydata type ext2 (rw)
/dev/sda7 on /backup type vfat (rw)

Como se muestra arriba, /dev/sda7 está montado. Si intenta ejecutar fsck en este sistema de archivos montado /dev/sda7 (junto con la opción -M), fsck simplemente saldrá con el código de salida 0 como se muestra a continuación.

# fsck -M /dev/sda7
# echo $?
0

6. Omita el título de visualización usando la opción -T

Usando la opción -T, puede omitir que el título se muestre al comienzo de la salida del comando fsck.

# fsck -TAR
e2fsck 1.42 (29-Nov-2011)
/dev/sda6 is mounted.  e2fsck: Cannot continue, aborting.
dosfsck 3.0.12, 29 Oct 2011, FAT32, LFN
/dev/sda7: 8 files, 50/1463400 clusters

Tenga en cuenta que el título es algo así como "fsck de util-linux 2.20.1".

7. Forzar una verificación del sistema de archivos incluso si está limpio usando la opción -f

De forma predeterminada, fsck intenta omitir el sistema de archivos limpio para hacer un trabajo más rápido.

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

Puede obligarlo a verificar el sistema de archivos usando -f como se muestra a continuación.

# fsck /dev/sda6 -f
fsck from util-linux 2.20.1
e2fsck 1.42 (29-Nov-2011)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sda6: 95/2240224 files (7.4% non-contiguous), 3793503/4476416 blocks

8. Intente arreglar los problemas detectados automáticamente usando la opción -y

En el siguiente ejemplo, la partición /dev/sda6 está dañada como se muestra a continuación.

# mount /dev/sda6 /mydata
# cd /mydata
# ls -li
ls: cannot access test: Input/output error
total 72
  49061 -rw-r--r--  1 root root     8 Aug 21 21:50 1
  49058 -rw-r--r--  1 root root 36864 Aug 21 21:24 file_with_holes
  49057 -rw-r--r--  1 root root  8192 Aug 21 21:23 fwh
     11 drwxr-xr-x  2 root root 49152 Aug 19 00:29 lost+found
2060353 ?rwSr-S-wT 16 root root  4096 Aug 21 21:11 Movies
      ? -?????????  ? ?    ?        ?            ? test

Como se vio arriba, el directorio Películas y un archivo prueba los atributos no son válidos.

En el siguiente ejemplo, -y pasará "sí" a todas las preguntas para corregir automáticamente la corrupción detectada.

# fsck -y /dev/sda6
fsck from util-linux 2.20.1
e2fsck 1.42 (29-Nov-2011)
/dev/sda6 contains a file system with errors, check forced.
Pass 1: Checking inodes, blocks, and sizes
Inode 2060353 is a unknown file type with mode 0137642 but it looks 
like it is really a directory.
Fix? yes

Pass 2: Checking directory structure
Entry 'test' in / (2) has deleted/unused inode 49059.  Clear? yes

Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information

/dev/sda6: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sda6: 96/2240224 files (7.3% non-contiguous), 3793508/4476416 blocks

9. Evite la reparación, pero informe los problemas a Stdout usando la opción -n

Es posible imprimir tales problemas detectados en la salida estándar sin reparar el sistema de archivos usando la opción fsck -n.

Primero, podría notar/ver el problema en la partición /dev/sda6 de que el directorio de películas (y el archivo fwh) no tiene detalles de atributos válidos.

# mount /dev/sda6 /mydata
# cd /mydata
# ls -lrt
total 64
drwxr-xr-x  2 root root 49152 Aug 19 00:29 lost+found
?--xrwx-wx 16 root root  4096 Aug 21 21:11 Movies
?-----x-wx  1 root root  8192 Aug 21 21:23 fwh
-rw-r--r--  1 root root 36864 Aug 21 21:24 file_with_holes
-rw-r--r--  1 root root     8 Aug 21 21:50 1

El problema anterior en la partición específica que se muestra en stdout sin solucionarlo de la siguiente manera,

El siguiente ejemplo de fsck muestra el problema en la salida estándar sin solucionarlo. (La salida parcial se muestra a continuación).

# fsck -n /dev/sda6
fsck from util-linux 2.20.1
e2fsck 1.42 (29-Nov-2011)
/dev/sda6 contains a file system with errors, check forced.
Pass 1: Checking inodes, blocks, and sizes
Inode 2060353 is a unknown file type with mode 0173 but it looks 
like it is really a directory.
Fix? no
Inode 2060353, i_blocks is 8, should be 0.  Fix? no

Pass 2: Checking directory structure
Inode 2060353 (/Movies) has invalid mode (0173).
Clear? no

Inode 49057 (/fwh) has invalid mode (013).
Clear? no

Entry 'fwh' in / (2) has an incorrect filetype (was 1, should be 0).
Fix? no

Pass 3: Checking directory connectivity
Unconnected directory inode 65409 (???)
Connect to /lost+found? no

'..' in ... (65409) is ??? (2060353), should be  (0).
Fix? no

Unconnected directory inode 2076736 (???)
Connect to /lost+found? no

Pass 4: Checking reference counts
Inode 2 ref count is 4, should be 3.  Fix? no

Inode 65409 ref count is 3, should be 2.  Fix? no

Inode 2060353 ref count is 16, should be 15.  Fix? no

Unattached inode 2060354
Connect to /lost+found? no

Pass 5: Checking group summary information
Block bitmap differences:  -(164356--164357) -4149248
Fix? no

Directories count wrong for group #126 (1, counted=0).
Fix? no

/dev/sda6: ********** WARNING: Filesystem still has errors **********

/dev/sda6: 96/2240224 files (7.3% non-contiguous), 3793508/4476416 blocks

10. Repare automáticamente las partes dañadas usando la opción -a

Para reparar la parte dañada automáticamente (sin interacción del usuario), use la opción -a como se muestra a continuación.

# fsck -a -AR

La opción -a es la misma que -p en la utilidad e2fsck. Hace que e2fsck solucione cualquier problema detectado que deba solucionarse de forma segura sin la interacción del usuario.

En caso de que fsck requiera la atención del administrador, simplemente sale con el código de error 4 antes de imprimir la descripción del problema.

# fsck -a /dev/sda6
fsck from util-linux 2.20.1
/dev/sda6 contains a file system with errors, check forced.
/dev/sda6: Inode 2060353 is a unknown file type with mode 0173 but it looks
like it is really a directory.

/dev/sda6: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
	(i.e., without -a or -p options)

# echo $?
4

Como recordará, la opción fsck -y se puede usar aquí para solucionar el problema anterior automáticamente.

# fsck -y /dev/sda6
fsck from util-linux 2.20.1
e2fsck 1.42 (29-Nov-2011)
/dev/sda6 contains a file system with errors, check forced.
Pass 1: Checking inodes, blocks, and sizes
Inode 2060353 is a unknown file type with mode 0173 but it looks
like it is really a directory.
Fix? yes

Pass 2: Checking directory structure
Inode 49057 (/fwh) has invalid mode (013).
Clear? yes

Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Block bitmap differences:  -(164356--164357)
Fix? yes

Free blocks count wrong for group #5 (0, counted=2).
Fix? yes

Free blocks count wrong (682908, counted=682910).
Fix? yes

/dev/sda6: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sda6: 95/2240224 files (7.4% non-contiguous), 3793506/4476416 blocks

Linux
  1. Ejemplos de comandos sa en Linux

  2. w Ejemplos de comandos en Linux

  3. Ejemplos de comandos ac en Linux

  4. Ejemplos de comandos df en Linux

  5. Ejemplos de comandos mkfs.ext4 en Linux

Cómo usar el comando fsck para verificar y reparar el sistema de archivos

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

Opciones de comando y ejemplos de Tee Command en Linux

Ejemplos de comandos id en Linux

Ejemplos de comandos fsck en Linux

Ejemplos de comandos swapon y swapoff en Linux