En uno de los entornos que administro me he encontrado con un error en el el dmesg que decía:
[root@server1 ~]# dmesg |grep i_reserved_data_blocks
[2950049.950132] EXT4-fs (dm-7): Inode 917882 (000000002225e3a7): i_reserved_data_blocks (23) not cleared!
[root@server1 ~]#
Resulta que el device mapper «dm-7» se corresponde con el filesystem /var, lo que significa que hay muchos procesos utilizándolo y no puedo desmontarlo para ejecutar un fsck o crear y fichero /forcefsck y rebotar el servidor para que se repare el FS.
¿Cómo saber si tienes un filesystem corrupto en RedHat?
Revisando la documentación del kernel encontré que este error se podía solucionar remontando el filesystem en caliente activando la opción nodelalloc y luego desactivándola con delalloc. Es decir, el comando a ejecutar sería:
mount -o remount,nodelalloc /var
sleep 1
mount -o remount,delalloc /var
En caso de que el error siga reproduciéndose, podemos ejecutarlo mediante un bucle infinito y matar el proceso padre del bucle cuando ya no aparezca más veces el error i_reserved_data_blocks not cleared!. Lo haríamos de la siguiente manera:
while true; do mount -o remount,nodelalloc /var; sleep 60; mount -o remount,delalloc /var; sleep 60; done &
Si buscamos el man del comando mount, encontraremos la definición de estas opciones:
delalloc
Aplazamiento de la asignación de bloques hasta el momento de la cancelación.
nodelalloc
Deshabilitar la asignación retrasada. Los bloques se asignan cuando los datos se copian del usuario a la memoria caché de la página.
En definitiva, implica es que todas las escrituras posteriores al remontaje en una parte no asignada del archivo se asignarán en el momento en que se «ensucie la página», en lugar de cuando se vuelva a escribir en ella. Es posible que algunas páginas se escriban utilizando la «asignación retardada», y otras páginas en el mecanismo heredado de «asignación en página sucia».
Esto puede ocurrir cuando se vuelve a montar el sistema de archivos; también puede ocurrir cuando el sistema de archivos comienza a acercarse al 100% de su capacidad.
Mi pasión por la tecnología me lleva constantemente a explorar las últimas tendencias y aplicaciones, buscando siempre formas de implementar soluciones innovadoras que mejoren la eficiencia. En puerto53.com comparto contenido valioso para ayudar a otros profesionales y entusiastas de la informática a navegar y dominar el complejo mundo de la tecnología. Mi especialidad en Linux RedHat.
Más sobre mí en el este enlace,