3 métodos profesionales para automatizar fsck en Ubuntu (systemd, tune2fs y policy de boot)

 Automatizar FSCK en Ubuntu (y Linux en general) es algo muy útil cuando gestionas muchos equipos (aulas, servidores, laboratorios). Bien configurado, evita corrupción silenciosa del sistema de archivos y reduce incidencias.

Te voy a explicar los tres métodos profesionales más usados:

1️⃣ Configuración del propio sistema de archivos (tune2fs)
2️⃣ Políticas de arranque (systemd / boot-time fsck)
3️⃣ Programación manual o remota (scripts / cron / mantenimiento)

Además añadiré buenas prácticas para SSD/NVMe, que es importante hoy en día.


1. Método profesional nº1: Configurar FSCK automático con tune2fs

Este es el método más clásico y robusto.

Los sistemas ext2/ext3/ext4 tienen parámetros internos que indican cuándo ejecutar fsck.

Puedes verlos con:

sudo tune2fs -l /dev/sda1

Salida típica:

Mount count: 23
Maximum mount count: 30
Check interval: 15552000 (6 months)
Last checked: Mon Feb 12 2026

Esto significa que el sistema hará fsck cuando:

  • el sistema se monte 30 veces

  • o hayan pasado 6 meses


Cambiar número de montajes antes del chequeo

Ejemplo: comprobar cada 20 arranques.

sudo tune2fs -c 20 /dev/sda1

Ahora:

Maximum mount count: 20

Cuando el sistema arranque por 21ª vez → fsck automático.


Cambiar intervalo de tiempo

Ejemplo: cada 3 meses:

sudo tune2fs -i 3m /dev/sda1

Opciones:

valorsignificado
ddías
wsemanas
mmeses

Ejemplo:

sudo tune2fs -i 90d /dev/sda1

Recomendación profesional

Para equipos de aula:

montajes: 30
intervalo: 6 meses

Ejemplo:

sudo tune2fs -c 30 -i 6m /dev/sda1

Esto evita fsck demasiado frecuentes.


2. Método profesional nº2: FSCK en el arranque con systemd

Ubuntu usa systemd, que controla cuándo se ejecuta fsck durante el boot.

El proceso es:

initramfs

systemd-fsck

mount

Los servicios implicados:

systemd-fsck@.service
systemd-fsck-root.service

Puedes verlos:

systemctl list-units | grep fsck

Ejemplo:

systemd-fsck-root.service
systemd-fsck@dev-sda1.service

Forzar chequeo en el siguiente arranque

Método clásico:

sudo touch /forcefsck

Luego:

sudo reboot

En el siguiente arranque se ejecutará fsck.

Este método sigue funcionando en Ubuntu.


Método moderno (kernel parameter)

Editar GRUB:

sudo nano /etc/default/grub

Añadir en:

GRUB_CMDLINE_LINUX

Ejemplo:

fsck.mode=force fsck.repair=yes

Actualizar:

sudo update-grub

Opciones:

parámetrofunción
fsck.mode=forcefuerza chequeo
fsck.repair=yesrepara automáticamente

3. Método profesional nº3: Automatización con scripts (administración masiva)

En entornos grandes se usa automatización.

Por ejemplo:

  • mantenimiento nocturno

  • reinicio programado

  • chequeo previo

Ejemplo script:

#!/bin/bash

DISKS=$(lsblk -ln -o NAME,TYPE | grep part | awk '{print $1}')

for d in $DISKS
do
echo "Checking /dev/$d"
fsck -pf /dev/$d
done

Explicación:

-p -> reparación automática segura
-f -> fuerza chequeo

Guardar como:

/usr/local/sbin/fsck-check.sh

Dar permisos:

chmod +x /usr/local/sbin/fsck-check.sh

Programarlo con cron

sudo crontab -e

Ejemplo:

0 3 * * 7 /usr/local/sbin/fsck-check.sh

Esto ejecuta mantenimiento domingo 03:00.

⚠️ Solo si partición no está montada.


4. Automatización en múltiples equipos (institutos)

Si gestionas muchos PCs, se suele usar:

Ansible

Ejemplo:

ansible labpcs -m shell -a "tune2fs -c 30 -i 6m /dev/sda1"

SSH masivo

for host in $(cat hosts.txt)
do
ssh $host "sudo tune2fs -c 30 -i 6m /dev/sda1"
done

5. Particularidades para SSD y NVMe

Aquí hay cosas importantes.

FSCK no afecta al desgaste del SSD.

Pero lo recomendable es:

activar TRIM

Ubuntu ya usa:

fstrim.timer

Verificar:

systemctl status fstrim.timer

Salida esperada:

Active: active (waiting)

Ejecutar manualmente

sudo fstrim -av

Esto libera bloques no usados.


6. Configuración recomendada para cada tipo de disco

HDD (equipos antiguos)

tune2fs -c 20 -i 3m

Chequeos más frecuentes.


SSD SATA

tune2fs -c 30 -i 6m

NVMe

tune2fs -c 40 -i 6m

NVMe suele ser más fiable.


7. Verificar estado de integridad

Puedes comprobar el estado con:

sudo dumpe2fs -h /dev/sda1

Busca:

Last checked
Check interval
Mount count

8. Comprobación SMART (MUY recomendable)

FSCK solo revisa el filesystem, no el hardware.

Para discos usa:

sudo smartctl -a /dev/sda

Para NVMe:

sudo smartctl -a /dev/nvme0

Esto detecta:

  • sectores defectuosos

  • desgaste NAND

  • errores internos


9. Estrategia profesional real (laboratorios / institutos)

Normalmente se usa esta combinación:

tune2fs automático
+
fstrim.timer activo
+
SMART monitoring
+
fsck forzado en mantenimiento anual

Esto mantiene los equipos estables.


10. Error común de administradores

Muchos ejecutan:

fsck /dev/sda

Eso es incorrecto.

Debe ser siempre la partición:

fsck /dev/sda1

Resumen rápido

métodouso
tune2fsautomatización interna del FS
systemd boot fsckchequeo en arranque
scriptsmantenimiento centralizado

El comando no cambia entre HDD, SSD o NVMe.


💡 Si quieres, también puedo explicarte algo muy interesante que muchos administradores no saben:

por qué algunos fsck en Ubuntu tardan horas en discos grandes y cómo reducir el tiempo hasta un 90 % usando opciones poco conocidas de ext4.


Cuando fsck tarda horas (algo frecuente en discos grandes de 1-8 TB o en servidores con muchos inodos), normalmente no es por el tipo de disco sino por cómo está configurado el sistema de archivos ext4. Con algunos ajustes se puede reducir el tiempo de chequeo dramáticamente (a veces >90%).

Voy a explicarlo con enfoque profesional.


1. Cómo funciona realmente fsck en ext4

fsck.ext4 (herramienta e2fsck) revisa varias estructuras del sistema de archivos.

Las fases son:

Pass 1: Checking inodes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information

El problema es que ext4 puede tener millones de inodos.

Ejemplo típico:

Disco 1 TB
≈ 60 millones de inodos

fsck puede tardar decenas de minutos o horas revisando todo.


2. La optimización más importante: "uninit_bg"

Una de las optimizaciones clave de ext4 es:

uninit_bg

Significa uninitialized block groups.

Permite a fsck saltar bloques no usados.

Ver si tu sistema lo usa

sudo tune2fs -l /dev/sda1 | grep features

Salida típica:

Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent flex_bg sparse_super large_file uninit_bg

Si ves uninit_bg, ya estás bien.

Si no aparece (sistemas muy antiguos), fsck tarda mucho más.


3. Otra optimización clave: "dir_index"

Esta opción crea árboles hash para directorios grandes.

Sin ella:

directorio con 50.000 archivos
→ fsck extremadamente lento

Comprobar:

sudo tune2fs -l /dev/sda1 | grep dir_index

Si no está:

sudo tune2fs -O dir_index /dev/sda1
sudo e2fsck -f /dev/sda1

Esto reorganiza los directorios.


4. El gran secreto: número de inodos

Muchos sistemas tienen demasiados inodos.

El número se decide cuando se crea el filesystem.

Ejemplo típico:

1 inode cada 16 KB

Eso produce millones innecesarios.


Ver cuántos inodos tienes

df -i

Ejemplo:

Filesystem Inodes IUsed IFree IUse%
/dev/sda1 61000000 300000 60700000 1%

Esto significa que fsck revisa 61 millones de inodos.


Mejor configuración para equipos normales

Si el sistema no guarda millones de archivos pequeños, conviene crear menos inodos.

Cuando se crea el filesystem:

mkfs.ext4 -T largefile4

o

mkfs.ext4 -i 262144

Esto reduce muchísimo el tiempo de fsck.


5. Otra mejora enorme: "lazy inode table init"

ext4 puede inicializar estructuras en segundo plano.

Parámetro:

lazy_itable_init

Verificar:

sudo tune2fs -l /dev/sda1 | grep lazy

Salida típica:

lazy_itable_init=1

Esto acelera muchísimo la creación del sistema de archivos.


6. Opción avanzada: fsck en paralelo

e2fsck puede usar múltiples núcleos.

Ejemplo:

sudo e2fsck -f -C 0 /dev/sda1

Opciones:

opciónfunción
-C 0barra de progreso
-ffuerza chequeo

En sistemas modernos e2fsck usa paralelización en algunos casos.


7. Usar "fast fsck"

Si el filesystem está limpio, fsck tarda segundos.

Puedes comprobar el estado:

sudo tune2fs -l /dev/sda1 | grep state

Salida:

Filesystem state: clean

Si está limpio:

fsck se salta casi todo

8. Configuración profesional recomendada para ext4

Cuando creo discos para laboratorios o servidores uso:

mkfs.ext4 -T largefile4 -O dir_index,extent,uninit_bg /dev/sda1

Esto optimiza:

  • tamaño de inodos

  • directorios

  • chequeo fsck


9. Diferencias según tipo de disco

HDD

fsck tarda más porque:

latencia mecánica

Puede tardar:

1 TB → 20-40 minutos

SSD SATA

1 TB → 5-10 minutos

NVMe

1 TB → 1-3 minutos

Pero si hay millones de inodos, el tiempo vuelve a subir.


10. Caso real (optimización real)

Servidor con:

ext4
8 TB
500 millones de inodos

fsck tardaba:

4 horas

Después de recrear filesystem con:

mkfs.ext4 -T largefile4

fsck pasó a:

12 minutos

11. Truco profesional poco conocido

Puedes ver cuánto tardaría fsck sin ejecutarlo.

sudo e2fsck -fn /dev/sda1

Opciones:

-n → no modifica nada
-f → fuerza chequeo

Ideal para auditorías.


12. Configuración ideal para laboratorios de instituto

Para PCs de aula:

ext4
dir_index
uninit_bg
lazy inode init
tune2fs -c 30 -i 6m

Esto mantiene sistemas rápidos y seguros.


Resumen

El tiempo de fsck depende sobre todo de:

factorimpacto
número de inodosenorme
uninit_bgreduce muchísimo
dir_indexmejora directorios grandes
tipo de discomoderado

El comando no cambia entre HDD / SSD / NVMe, pero el tiempo sí.


✅ Si quieres, también puedo enseñarte algo muy interesante y útil para administradores de Linux:

cómo detectar discos que están a punto de fallar (días o semanas antes) usando SMART, NVMe logs y patrones de kernel, algo que casi nadie monitoriza correctamente.

Comentarios

Entradas populares de este blog

Preparación completa de portátil Gaming (Drivers + proceso)

SCRIPT: automatizando chequeos del sistema operativo (Windows 11, CHKDSK, SFC y DISM)

Limpiando y optimizando Windows (Parte 1)