Detected aborted journal, EXT4 remounts read only

En alguna ocasión, he observado que alguno de mis servidores empezaba a fallar. Podía hacerle ping, pero no me dejaba ni tan siquiera conectarme por ssh.

Al ir al terminal, encontré que mostraba un error similar al siguiente:

EXT4-fs error (device dm-0): ext4_journal_check_start:61: Detected aborted journal
EXT4-fs error (device dm-0): Remounting filesystem read-only

Es decir, que el sistema de ficheros se remontaba en modo solo lectura.

Este error, suele suceder si el journal está dañado o inconsistente, algo que puede ocurrir si se producen apagados repentinos de la máquina, por ejemplo, por falta de alimentación.

Para solucionarlo, podemos recrear el journal.

Por ejemplo, supongamos que el sistema de archivos que está sufriendo estos problemas, es el /dev/pve/root. Para regenerar el journal, ejecutaremos los siguientes comandos:

sudo fsck -y /dev/pve/root
sudo tune2fs -O ^has_journal /dev/pve/root
sudo fsck -f -y /dev/pve/root
sudo tune2fs -j /dev/pve/root

Estos comandos tocan el sistema de archivos EXT4 a bajo nivel, y hay que entenderlos bien antes de ejecutarlos (porque algunos modifican estructuras internas del sistema de archivos).

Te explico qué hace cada uno y en qué orden o contexto se suelen usar:

🧩 1️⃣ fsck -y /dev/pve/root

👉 Qué hace:
Ejecuta una comprobación completa del sistema de archivos (fsck, File System ChecK) sobre la partición /dev/pve/root.

  • La opción -y responde “sí” automáticamente a todas las preguntas, es decir, corrige cualquier error encontrado sin pedir confirmación.

⚠️ Riesgo: Si hay errores graves, fsck podría eliminar o modificar estructuras para intentar reparar el sistema, lo que puede causar pérdida de datos.
Por eso se suele usar sólo en sistemas desmontados o en modo rescate/initramfs.


🧩 2️⃣ tune2fs -O ^has_journal /dev/pve/root

👉 Qué hace:
Desactiva (elimina) la opción has_journal en el sistema de archivos EXT4.

  • El parámetro -O ajusta las opciones o features del sistema de archivos.
  • El símbolo ^ significa eliminar la opción.
  • has_journal es la característica que hace que EXT4 funcione con journaling, es decir, mantenga un registro de operaciones pendientes para evitar corrupción en caso de apagado inesperado.

🔧 Efecto:
Este comando convierte EXT4 en un sistema sin journaling, similar a EXT2, lo que puede acelerar operaciones de escritura pero aumenta el riesgo de corrupción de datos si hay cortes de energía.

📌 Después de ejecutar esto, el sistema de archivos deja de tener su “bitácora” de cambios.


🧩 3️⃣ fsck -f -y /dev/pve/root

👉 Qué hace:
Vuelve a ejecutar una comprobación forzada (-f) y automática (-y).

  • -f obliga a ejecutar la comprobación incluso si el sistema no parece necesitarla (por ejemplo, aunque esté limpio).
  • Se usa después de quitar el journal, para asegurarse de que el sistema de archivos sigue coherente sin él.

🧩 4️⃣ tune2fs -j /dev/pve/root

👉 Qué hace:
Crea un nuevo journal en el sistema de archivos, restaurando la característica has_journal.

  • En otras palabras, convierte el sistema de archivos de nuevo a EXT3/EXT4 con journaling.

📌 Este comando vuelve a activar la bitácora que se había eliminado antes.


⚙️ En conjunto, estos comandos hacen esto:

PasoComandoPropósito
1fsck -y /dev/pve/rootRepara el sistema de archivos antes de manipularlo
2tune2fs -O ^has_journal /dev/pve/rootQuita el journaling (convierte EXT4 → EXT2)
3fsck -f -y /dev/pve/rootRevisa el sistema sin journaling
4tune2fs -j /dev/pve/rootCrea un nuevo journal (EXT2 → EXT3/4 de nuevo)

🧠 ¿Debería aplicar estos comandos sobre otros sistemas de archivos?

Si tienes más sistemas de archivos con journaling, podrías ejecutar estos mismos comandos sobre ellos, para recrear el journal.

Puedes verificar si cualquiera de tus sistemas de archivos tiene journaling con el siguiente comando:

sudo tune2fs -l /dev/sdXN | grep features

Por ejemplo:

sudo tune2fs -l /dev/pve/var | grep features
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum

Si aparece has_journal, significa que el journaling está activado.
Si no aparece, es un EXT4 sin journaling (funcionando efectivamente como EXT2).


⚠️ Recomendaciones

  • Ejecuta todo esto sólo con el sistema de archivos desmontado, por ejemplo, desde un entorno rescue o initramfs.
  • Nunca lo ejecutes en el root filesystem montado en modo lectura-escritura (/).
  • Haz una copia de seguridad si es posible antes de manipular el journal.