¿Cómo encontrar qué proceso está escribiendo regularmente en el disco?


42

¿Cómo puedo encontrar qué proceso está escribiendo constantemente en el disco?

Me gusta que mi estación de trabajo esté casi silenciosa y acabo de construir un nuevo sistema (P8B75-M + Core i5 3450s, el 's' porque tiene un TDP máximo más bajo) con ventiladores silenciosos, etc. e instalé Debian Wheezy de 64 bits en eso.

Y algo me está poniendo nervioso: puedo escuchar algún tipo de patrón, como si el disco duro estuviera escribiendo o buscando algo ( tick ... tick ... tick ... trrrrrr enjuagar y repetir cada segundo más o menos).

En el pasado tuve un problema similar en el pasado (hace muchos, muchos años) y resultó que era un registro de CUPS o algo así y simplemente redirigí ese registro (no importante) a un disco RAM (real).

Pero aquí no estoy seguro.

Intenté lo siguiente:

ls -lR /var/log > /tmp/a.tmp && sleep 5 && ls -lR /var/log > /tmp/b.tmp && diff /tmp/?.tmp

Pero nada está cambiando allí.

Ahora lo extraño es que también escucho el patrón cuando aparece el mensaje que me pide que ingrese mi frase de contraseña de descifrado LVM.

¿Podría ser algo en el kernel / sistema que acabo de instalar o tengo un disco duro defectuoso?

hdparm -tT /dev/sda reporto una velocidad HD correcta (130 GB / s sin almacenamiento en caché, sata 6GB) y ya he instalado y compilado desde grandes fuentes (Emacs) sin problemas, así que no creo que el sistema sea malo.

(HD es un Seagate Barracude 500GB)


¿Estás seguro de que es un disco duro que hace ese ruido y no otra cosa? (Verifique los ventiladores, incluido el ventilador de la fuente de alimentación. Hubo ruidos de clics muy extraños una vez cuando un cable muy delgado estaba demasiado cerca de un ventilador y a veces tocaba ligeramente las aspas y rebotaba por unos pocos "clics" ...)
Mat

@ Mat: llevaré el disco duro fuera de la carcasa (los conectores deben ser lo suficientemente largos) para estar seguro y reportaré; )
Cedric Martin

2
Asegúrese de que los sistemas de archivos de su disco estén montados relatime o noatime. Las lecturas de archivos pueden causar que las escrituras en inodes registren el tiempo de acceso.
camh

Respuestas:


43

¿Intentaste examinar qué programas iotopse muestran como? Le dirá exactamente qué tipo de proceso está escribiendo actualmente en el disco.

salida de ejemplo:

Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
    1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % init
    2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
    3 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/0]
    6 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/0]
    7 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [watchdog/0]
    8 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/1]
 1033 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [flush-8:0]
   10 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/1]

1
gracias por ese consejo No sabía sobre Iotop . En Debian realicé una búsqueda de apt-cache en iotop para descubrir que tenía que obtener apt-get iotop . ¡Muy buen comando!
Cedric Martin

3
Utilizo iotop -o -b -d 10que cada 10 segundos imprime una lista de procesos que leen / escriben en el disco y la cantidad de ancho de banda de E / S utilizada.
ndemou

15

Puede habilitar la depuración de E / S mediante echo 1 > /proc/sys/vm/block_dumpy luego ver los mensajes de depuración en / var / log / syslog . Esto tiene la ventaja de obtener algún tipo de archivo de registro con actividades pasadas, mientras que iotopsolo muestra la actividad actual.


44
Es absolutamente loco dejar el sysloging habilitado cuando block_dump está activo. El registro provoca actividad en el disco, lo que provoca el registro, lo que provoca actividad en el disco, etc. Es mejor detener syslog antes de habilitar esto (y usar dmesg para leer los mensajes)
dan3

Tiene toda la razón, aunque el efecto no es tan dramático como lo describe. Si solo quiere echar un vistazo a la actividad del disco, no es necesario detener el demonio syslog.
scai

Lo probé hace aproximadamente 2 años y detuvo mi máquina. Uno de estos días cuando no tengo nada importante corriendo lo intentaré de nuevo :)
dan3

Lo intenté, realmente no pasó nada. Especialmente debido al almacenamiento en búfer del sistema de archivos. Una escritura en syslog no desencadena inmediatamente una escritura en el disco.
scai

1
Supongo que existe una limitación de velocidad general para los mensajes de registro, que también maneja este caso (?)
Volker Siegel

5

Suponiendo que los ruidos del disco se deben a un proceso que causa una escritura y no a algún problema de división del disco , puede usar el subsistema de auditoría (instalar el auditdpaquete ). Vigile las syncllamadas y sus amigos:

auditctl -S sync -S fsync -S fdatasync -a exit,always

Mira los registros /var/log/audit/audit.log. ¡Tenga cuidado de no hacer esto si los registros de auditoría están vacíos! Compruebe /etc/auditd.confque la flushopción está establecida en none.

Si los archivos se limpian con frecuencia, un posible culpable son los registros del sistema. Por ejemplo, si registra intentos fallidos de conexión entrante y alguien está probando su máquina, eso generará muchas entradas; Esto puede hacer que un disco emita ruidos tipo ametralladora. Con el registro básico daemon sysklogd, verifique /etc/syslog.conf: si un nombre de archivo de registro no está precedido -, entonces ese registro se vacía en el disco después de cada escritura.


@StephenKitt Huh. No. El autor de la pregunta mencionó Debian, así que lo cambié a un enlace al paquete Debian.
Gilles 'SO- deja de ser malvado'

3

Puede ser que sus unidades giren automáticamente, muchas unidades de nivel de consumidor lo hacen en estos días. Desafortunadamente, incluso en un sistema con poca carga, esto hace que las unidades giren constantemente hacia abajo y luego vuelvan a girar, especialmente si está ejecutando hddtemp o similar para controlar la temperatura de la unidad (la mayoría de las unidades estúpidamente no le permiten consultar el valor de temperatura INTELIGENTE sin girar el disco, ¡cretino!).

Esto no solo es molesto, sino que puede desgastar las unidades más rápido, ya que muchas unidades tienen solo un número limitado de ciclos de estacionamiento. por ejemplo, consulte https://bugs.launchpad.net/ubuntu/+source/hdparm/+bug/952556 para obtener una descripción del problema.

Desactivo idle-spindown en todas mis unidades con el siguiente bit de código de shell. puede ponerlo en un script /etc/rc.boot, o en /etc/rc.local o similar.

para disco en / dev / sd? ; hacer
  / sbin / hdparm -q -S 0 "$ disco"
hecho

2
que no puede consultar lecturas SMART sin girar la unidad me deja sin palabras: - / Ahora, obviamente, el problema de "girar hacia abajo" puede volverse bastante complicado. Con respecto a la desactivación del giro hacia abajo: ¿eso en sí mismo no causaría que el HD se desgaste más rápido? Quiero decir: ¿nunca está "descansando" mientras el sistema esté encendido?
Cedric Martin

IIRC puede consultar algunos valores SMART sin hacer que la unidad gire, pero la temperatura no es una de ellas en ninguna de las unidades que he probado (incluidos los modelos de WD, Seagate, Samsung, Hitachi). Lo cual, por supuesto, es una locura porque la preocupación por la temperatura es una de las razones para dejar el disco en ralentí. re: wear: AIUI 1. la velocidad constante es menos desgastante que la velocidad cambiante. 2. los discos tienen que estacionar los cabezales en un área segura y un disco solo está calificado para hacerlo tantas veces (IIRC hasta unos cientos de miles, fácilmente superado si el disco está en ralentí y gira cada pocos segundos)
cas

Es un largo debate sobre si es mejor dejar las unidades en funcionamiento o hacerlas girar. Personalmente, creo que es mejor dejarlos en funcionamiento: apago mi computadora por la noche y cuando salgo, pero aparte de eso, nunca apago mis discos. Algunas personas prefieren hacerlos girar, por ejemplo, por la noche si dejan la computadora encendida o si la computadora está inactiva durante mucho tiempo, y en tales casos la ventaja de dejarlos caer durante unas horas en lugar de dejarlos en funcionamiento es discutible . Sin embargo, lo que nunca es bueno es cuando el disco duro gira repetidamente hacia abajo y hacia arriba en un corto período de tiempo.
Micheal Johnson

Tenga en cuenta también que girar el disco hacia abajo después de haber estado inactivo durante algunas horas es un poco tonto, porque si ha estado inactivo durante unas horas, es probable que se vuelva a usar dentro de una hora. En ese caso, parecería mejor girar la unidad rápidamente hacia abajo si está inactiva (por ejemplo, en 10 minutos), pero también es posible que la unidad esté inactiva durante unos minutos cuando alguien está usando la computadora y es probable que necesite la unidad de nuevo pronto.
Micheal Johnson

¡Pensé que esto solucionaría mi problema cuando escuche que la unidad emite un sonido de chasquido periódico (3-4 veces / segundo) como si estuviera escribiendo incluso cuando no está montada! Pero todavía escucho el ruido después de ejecutar este comando. Es preocupante, es la unidad que utilizo para hacer una copia de seguridad de mi SSD interna ...
Michael

1

Me acabo de dar cuenta de que Smart estaba causando que un disco USB externo girara una y otra vez en mi Raspberry Pi. Aunque SMART es generalmente algo bueno, decidí deshabilitarlo nuevamente y desde entonces parece que la actividad no deseada del disco se ha detenido


Puede configurar el demonio inteligente para que no escanee discos USB, la mayoría de las distribuciones de Linux buenas lo hacen de manera predeterminada.
lzap

1

Puedes hablar un poco sobre esto. Debería reducirlo para la mayoría.

find / -mount -newer /proc -print

Proporcione archivos modificados desde el arranque en el dispositivo físico del sistema de archivos /. Conocer los archivos probablemente ayudará a identificar al escritor.


1

En caso de que necesite reducirlo a un disco exacto, use lo siguiente:

ejecutar lsblky buscar el número de dispositivo. En el caso de abajo es9:126

NAME        MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda           8:0    0   7.3T  0 disk  
└─md126       9:126  0  13.8T  0 raid0 /mnt/InternalPhase
sdb           8:16   0   7.3T  0 disk  
└─md126       9:126  0  13.8T  0 raid0 /mnt/InternalPhase
sdc           8:32   0   7.3T  0 disk  
└─sdc1        8:33   0   7.3T  0 part  /mnt/InternalFBE

ejecutar lsof | grep '9,126'con el :reemplazo en ,comparación con el número de disco anterior. En mi caso, esto aparece como:

bash      389162            root  cwd       DIR              9,126      4096  449183796 /mnt/InternalPhase/0000000001/CHANNEL01/LIVE/PHASE/DATA/2018/10/04

con el PID de 389162matar este proceso usando:

kill -9 389162

-1

El problema es que el sistema necesita vaciar los datos de las memorias intermedias del disco al disco cada 5 segundos aproximadamente de forma predeterminada. Por lo tanto, si el disco gira hacia abajo, habrá pocas opciones además de volver a girar hacia arriba cuando sea necesario un lavado. Por lo tanto, el problema no se puede evitar de otra manera que no sea desactivar los giros o las funciones de administración de energía del disco por completo hdparm -B 255 /dev/hdax. Esta es probablemente la mejor opción, ya que reiniciar tan a menudo definitivamente puede ser más perjudicial que simplemente permanecer encendido todo el tiempo.


1
Solo vaciará datos si hay datos que vaciar. Si el disco realmente no está en uso, entonces no habrá datos almacenados en búfer para vaciar.
Micheal Johnson
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.