Accidente del sistema: caracteres extraños en syslog

11

Tengo un pequeño servidor que uso para probar y programar. Actualmente ejecuta Debian 9.4 stretch con 4.14.0-0.bpo.3-amd64 kernel.

Hoy traté de conectarme a través de SSH, pero no pude, intenté hacer ping y no fue accesible. Por lo tanto, tuve que reiniciarlo desconectando el cable de alimentación. Luego fui /var/log/syslog y encontré una línea extraña que contiene exactamente 6140 caracteres como el siguiente

^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@

entonces nada más hasta que se reinicien nuevas entradas de registro del sistema. Esta es la primera vez que sucede.

¿Alguien sabe qué podría ser?

DrKey
fuente
1
@JdeBP Prefiero su primera respuesta / enlace, eso es todo. Odd tiene una pregunta con más de 1500 visitas, no tiene un solo voto, +1.
Rui F Ribeiro

Respuestas:

14

El contenido del archivo syslog que nos está mostrando de todos los ceros es de hecho corrupción de la escritura del sistema de archivos / syslog.

El bloqueo del sistema capturó el sistema a mitad de la escritura en el archivo syslog y ese es el resultado final.

Ya lo he visto suceder varias veces a lo largo de los años, en máquinas virtuales Linux y un par de veces más en Raspberries y Banana Pis.

Nada de lo que obsesionarse (demasiado) o perder mucho tiempo para investigar por qué tiene esto para un evento único. Me preocuparía más saber por qué se bloqueó, especialmente si es un evento regular.

PD: al entrar en territorio anecdótico, la última vez que sucedió esto regularmente en un Banana Pi R1, logré rastrear la causa hasta un chipset wifi realtek (defectuoso).

Rui F Ribeiro
fuente
44
También vale la pena señalar que ^@es el byte NUL (valor de byte 0), por lo que son datos "vacíos" que se agregan al archivo de registro por accidente. Esto podría suceder, por ejemplo, cuando se asigna un nuevo bloque vacío al final del archivo, pero la cantidad de bytes realmente ocupados por datos significativos en ese bloque no se actualiza correctamente (porque el bloqueo / restablecimiento completo ocurrió antes de que ese contador fuera comprometido con la unidad).
marcelm
¿Cómo saber por qué se estrelló?
CEO en Apartico
@CEOatApartico Aconsejaría abrir una nueva pregunta.
Rui F Ribeiro
@RuiFRibeiro unix.stackexchange.com/questions/528275/…
CEO en Apartico
6

Para ampliar ligeramente esa respuesta , su syslog tiene el contenido de una página de memoria parcialmente comprometida en el disco, con los metadatos de syslog no actualizados. Esa cadena de ^@caracteres son en realidad bytes NUL; exactamente lo que contiene inicialmente una página de memoria recién asignada.

Jarhmander
fuente
Un recordatorio amistoso: si va a basarlo en la respuesta JdeBP, intente hacerlo bien. Los sectores de disco se ponen a cero cuando el núcleo los asigna por razones de seguridad, no es memoria con 0s escritos per se. Aconsejo corregir eso.
Rui F Ribeiro