GNU/Linux >> Tutoriales Linux >  >> Linux

¿Qué debo hacer para forzar la verificación del sistema de archivos raíz (y, opcionalmente, una corrección) en el arranque?

ext4 verificación del sistema de archivos durante el arranque

Probado en OS:Linux Mint 18.x en una máquina virtual

Información básica

/etc/fstab tiene el fsck orden como la última (sexta) columna, por ejemplo:

<file system>    <mount point>    <type>    <options>    <dump>    <fsck>
UUID=2fbcf5e7-1234-abcd-88e8-a72d15580c99 / ext4 errors=remount-ro 0 1

FSCKFIX=yes variable en /etc/default/rcS

Esto cambiará el fsck a corrección automática, pero no forzar una comprobación de fsck.

Desde man rcS :

FSCKFIX
    When  the  root  and all other file systems are checked, fsck is
    invoked with the -a option which means "autorepair".   If  there
    are  major  inconsistencies then the fsck process will bail out.
    The system will print a  message  asking  the  administrator  to
    repair  the  file  system manually and will present a root shell
    prompt (actually a sulogin prompt) on the console.  Setting this
    option  to  yes  causes  the fsck commands to be run with the -y
    option instead of the -a option.  This will tell fsck always  to
    repair the file systems without asking for permission.

Desde man tune2fs

If you are using journaling on your filesystem, your filesystem
will never be marked dirty, so it will not normally be checked.

Empezar con

Configuración de lo siguiente

FSCKFIX=yes

en el archivo

/etc/default/rcS

Verifique y anote la última vez que se verificó fs:

sudo tune2fs -l /dev/sda1 | grep "Last checked"

Estas dos opciones NO funcionaron

  1. Pasando -F (forzar fsck al reiniciar) argumento para shutdown :

    shutdown -rF now
    

    No; ver:man shutdown .

  2. Agregar el /forcefsck archivo vacío con:

    touch /forcefsck
    

    Estos scripts parecen usar esto:

    /etc/init.d/checkfs.sh
    /etc/init.d/checkroot.sh
    

    NO funciona al reiniciar, pero el archivo se eliminó.

    Verificado por:

    sudo tune2fs -l /dev/sda1 | grep "Last checked"
    sudo less /var/log/fsck/checkfs
    sudo less /var/log/fsck/checkroot
    

    Estos parecen ser los registros del init guiones.

Repito, ¡estas dos opciones NO funcionaron!

Ambos métodos SÍ funcionaron

  1. conmutadores de arranque del kernel systemd-fsck

    Editando el grub principal archivo de configuración:

    sudoedit /etc/default/grub
    
    GRUB_CMDLINE_LINUX="fsck.mode=force"
    
    sudo update-grub
    sudo reboot
    

    Esto hizo una verificación del sistema de archivos como se verificó con:

    sudo tune2fs -l /dev/sda1 | grep "Last checked"
    

    Nota:Este HIZO una verificación, pero para forzar una solución también, debe especificar fsck.repair="preen" o fsck.repair="yes" .

  2. Usando tune2fs para establecer el número de montajes del sistema de archivos antes de hacer un fsck , man tune2fs

    tune2fs' info is kept in the file system superblock
    

    -c interruptor establece el número de veces para montar el fs antes de comprobar el fs.

    sudo tune2fs -c 1 /dev/sda1
    

    Verifique con:

    sudo tune2fs -l /dev/sda1
    

    Este HIZO trabajo como verificado con:

    sudo tune2fs -l /dev/sda1 | grep "Last checked"
    

Resumen

Para forzar un fsck en cada arranque en Linux Mint 18.x, use tune2fs , o fsck.mode=force , con fsck.repair=preen opcional / fsck.repair=yes , la línea de comando del kernel cambia.


Investigación adicional y actualizaciones sobre la respuesta existente

Ahora solo quería comprobar si lo anterior todavía funciona en sistemas basados ​​en Ubuntu 20.04 LTS (probado directamente en Linux Mint 20 Cinnamon y Ubuntu MATE 20.04), y descubrí algunas cosas, comencemos con el intervalo de verificación del sistema de archivos (ejecuté todos los comandos como root (como puede notar ~# delante de los comandos):

Intervalo de comprobación del sistema de archivos

~# LC_ALL=C tune2fs -l /dev/nvme0n1p2 | grep 'Check interval'

Check interval:           0 (<none>)

Bueno, esto fue inesperado. Pensé que nos habíamos ocupado de eso, pero afortunadamente se puede arreglar muy fácilmente. Tome nota, el número que toma como argumento está predeterminado en días, así que asegúrese de usar 1s (1 segundo) en lugar de solo 1, lo que significaría 1 día (86400 segundos):

~# LC_ALL=C tune2fs -i 1s /dev/nvme0n1p2

tune2fs 1.45.5 (07-Jan-2020)
Setting interval between checks to 1 seconds

Ahora, si repetimos la verificación anterior, obtenemos:

Check interval:           1 (0:00:01)

Esto no significa que el sistema de archivos será revisado cada segundo, por supuesto. Más bien, en efecto forzará la verificación del sistema de archivos en cada montaje del sistema de archivos. (Ya que no hay forma de iniciar un sistema dos veces en un segundo).

Número máximo de montajes del sistema de archivos antes de comprobar

Configuración predeterminada:

~# LC_ALL=C tune2fs -l /dev/nvme0n1p2 | grep 'Maximum mount count'

Maximum mount count:      -1

Esta configuración ajusta cuántos montajes se necesitan hasta que se verifica el sistema de archivos. Está bien lo que está escrito en la respuesta original:

~# LC_ALL=C tune2fs -c 1 /dev/nvme0n1p2

tune2fs 1.45.5 (07-Jan-2020)
Setting maximal mount count to 1

Solo asegúrese de no usar 0 o -1, ya que se ignoraría.

Probablemente agregaré más información más adelante... Entonces, sigue revisando (juego de palabras).

Fuentes de información:

  • tune2fs página man

Linux
  1. ¿Qué es el Kernel de Linux? ¿Debería actualizar a la última versión del Kernel?

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

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

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

  5. Cómo forzar la verificación del sistema de archivos raíz usando fsck durante el reinicio

Cómo forzar la verificación del sistema de archivos "FSCK" en Ubuntu

¿Qué significa el atributo 's' en los permisos de archivo?

¿Qué es la función de la comunidad ONLYOFFICE y por qué debería usarla?

¿Cuál es la diferencia entre fsck y e2fsck?

¿Qué tamaños debe asignar a /, /boot, /home y swap?

¿Qué es el sistema de archivos NSFS?