En Linux, el reciente fanotify
syscall habilitó una buena utilidad llamada fatrace
que informa sobre qué proceso está accediendo a qué archivo, ya sea para todo el sistema o para una partición en particular. Definitivamente mi herramienta favorita para este tipo de cosas:
deluged(6542): R /usr/share/GeoIP/GeoIP.dat
rsyslogd(1737): W /var/log/syslog
rsyslogd(1737): W /var/log/kern.log
Puede consultar http://samwel.tk/laptop_mode/ . Aunque esta página no se trata principalmente de su problema, pero brinda una buena imagen general de cómo funciona IO e ideas, cómo silenciar sus discos apagándolos.
La respuesta corta para su problema:
echo 1 > /proc/sys/vm/block_dump
producirá mensajes en syslog como:
Jul 23 10:04:05 locutus kernel: ls(5224): READ block 7340136 on dm-4 Jul 23 10:04:05 locutus kernel: ls(5224): READ block 4335136 on dm-4 Jul 23 10:04:05 locutus kernel: ls(5224): READ block 15505568 on dm-4 Jul 23 10:04:05 locutus kernel: ls(5224): READ block 7340160 on dm-4 Jul 23 10:04:05 locutus kernel: ls(5224): READ block 7340168 on dm-4
He usado un comando ls simple
NOTA:asegúrese de que el registro de su sistema esté apagado o escrito en un ramdisk (tipo:tmpfs) antes de hacerlo, porque (cita):"su sistema puede entrar en un ciclo de retroalimentación, donde syslogd causa actividad en el disco, esto provoca la salida del kernel, y esto hace que syslogd realice más actividad en el disco"
Recomiendo montar /tmp como ramdisk y luego configurar el registro en /tmp/syslog. Esto en /etc/fstab (y un reinicio) hará:
none /tmp tmpfs defaults,size=256M 0 0
He estado usando iotop para averiguar qué está usando la unidad. Desde el sitio web debe tener "Linux kernel ≥ 2.6.20 con las opciones TASK_DELAY_ACCT y TASK_IO_ACCOUNTING habilitadas".
Parece que solo está interesado en una unidad en particular. Podría considerar escribir un script que verifique rutinariamente con lsof o fuser para acceder a esa unidad/partición.