Comment trouver quel processus écrit régulièrement sur le disque?


42

Comment trouver quel processus écrit en permanence sur le disque?

J'aime que mon poste de travail soit presque silencieux et je viens de construire un nouveau système (P8B75-M + Core i5 3450 - le 's' car il a un TDP max. Inférieur) avec des ventilateurs silencieux, etc. et j'ai installé Debian Wheezy 64 bits. dessus.

Et quelque chose me tracasse: j'entends une sorte de motif comme si le disque dur était en train d'écrire ou de chercher quelque chose ( tick ... tick ... tick ... tick ... trrrrrr rincer et répéter à peu près toutes les secondes).

Dans le passé, j'avais un problème similaire dans le passé (il y a plusieurs années) et il s'est avéré qu'il s'agissait d'un journal CUPS ou quelque chose du genre et j'ai simplement redirigé celui-ci (peu important) vers un disque (réel) RAM.

Mais ici je ne suis pas sûr.

J'ai essayé ce qui suit:

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

mais rien n'y change.

Ce qui est étrange, c’est que j’entends aussi le motif lorsque l’invite me demandant de saisir ma phrase secrète de déchiffrement LVM s’affiche.

Pourrait-il y avoir quelque chose dans le noyau / système que je viens d'installer ou ai-je un disque dur défectueux?

hdparm -tT /dev/sda signaler une vitesse HD correcte (130 Go / s non mis en cache, 6 Go sata) et j'ai déjà installé et compilé à partir de grandes sources (Emacs) sans problème, donc je ne pense pas que le système est mauvais.

(HD est un disque Seagate Barracude 500 Go)


Êtes-vous sûr que c'est un disque dur qui fait ce bruit, et pas autre chose? (Vérifiez les ventilateurs, y compris le ventilateur du PSU. Vous avez eu des cliquetis très étranges une fois quand un câble très fin était trop près d'un ventilateur et que parfois il touchait très légèrement les pales et rebondissait en quelques "clics" ...)
Mat

@ Mat: Je vais prendre le disque dur à l'extérieur de l'affaire (les connecteurs devraient être assez longs) pour être sûr et je vais faire rapport; )
Cedric Martin

2
Assurez-vous que vos systèmes de fichiers sur disque sont montés relatime ou noatime. Les lectures de fichiers peuvent provoquer des écritures dans les inodes pour enregistrer le temps d'accès.
camh

Réponses:


43

Avez-vous essayé d'examiner quels programmes sont comme iotop? Il vous dira exactement quel type de processus écrit actuellement sur le disque.

exemple de sortie:

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
merci pour ce conseil. Je ne connaissais pas iotop . Sur Debian, j'ai fait une recherche sur apt-cache avec iotop pour découvrir que je devais prendre apt-get iotop . Commande très cool!
Cedric Martin

3
J'utilise iotop -o -b -d 10toutes les 10 secondes une liste de processus en lecture / écriture sur disque et la quantité de bande passante IO utilisée.
Ndemou

15

Vous pouvez activer le débogage IO via echo 1 > /proc/sys/vm/block_dump, puis regarder les messages de débogage dans / var / log / syslog . Cela présente l’avantage d’obtenir un certain type de fichier journal avec les activités passées alors iotopque l’activité en cours est uniquement affichée.


4
Il est absolument fou de laisser sysloging activé lorsque block_dump est actif. La journalisation provoque une activité du disque, ce qui entraîne la journalisation, ce qui provoque l'activité du disque, etc. Mieux vaut arrêter syslog avant de l'activer (et utiliser dmesg pour lire les messages)
dan3

Vous avez absolument raison, même si l'effet n'est pas aussi dramatique que vous le décrivez. Si vous souhaitez simplement jeter un coup d'œil sur l'activité du disque, il n'est pas nécessaire d'arrêter le démon syslog.
scai

Je l'ai essayé il y a environ 2 ans et ma machine s'est arrêtée. Un de ces jours où je n'ai rien d'important à courir, j'essaye encore :)
dan3

J'ai essayé, rien ne s'est vraiment passé. Surtout à cause de la mise en mémoire tampon du système de fichiers. Une écriture sur syslog ne déclenche pas immédiatement une écriture sur le disque.
scai

1
Je supposerais qu'il existe une limitation générale du taux en place pour les messages de journal, qui traite également ce cas (?)
Volker Siegel

5

En supposant que les bruits du disque soient dus à un processus provoquant une écriture et non à un problème de rotation du disque , vous pouvez utiliser le sous-système audit (installer le auditdpackage). ). Mettez une montre sur les syncappels et ses amis:

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

Regarder les journaux dans /var/log/audit/audit.log . Veillez à ne pas le faire si les journaux d'audit sont vidés! Vérifiez /etc/auditd.confque l' flushoption est définie sur none.

Si les fichiers sont souvent vidés, les journaux du système sont probablement responsables. Par exemple, si vous enregistrez les tentatives de connexion entrantes échouées et que quelqu'un vérifie votre ordinateur, cela générera un grand nombre d'entrées. cela peut entraîner un disque à émettre des bruits de type mitrailleuse. Avec le démon de journal de base sysklogd, vérifiez /etc/syslog.conf: si aucun nom de fichier journal n’est précédé -, ce journal est vidé sur le disque après chaque écriture.


@StephenKitt Huh. Le demandeur a mentionné Debian, je l'ai donc changé pour un lien vers le paquet Debian.
Gilles 'SO- arrête d'être méchant'

3

Il se peut que vos disques ralentissent automatiquement, de nombreux lecteurs grand public le font de nos jours. Malheureusement, même sur un système peu chargé, les disques ralentissent constamment, puis de nouveau, surtout si vous utilisez hddtemp ou similaire pour surveiller la température du lecteur (la plupart des lecteurs ne vous laissent bêtement pas interroger la valeur de température SMART. sans faire tourner le disque - crétineux!).

Ce n'est pas seulement gênant, cela peut aussi user les disques plus rapidement car de nombreux disques ne disposent que d'un nombre limité de cycles de parcage. par exemple, voir https://bugs.launchpad.net/ubuntu/+source/hdparm/+bug/952556 pour une description du problème.

Je désactive inactive sur tous mes lecteurs avec le code de shell suivant. vous pouvez le mettre dans un script /etc/rc.boot, ou dans /etc/rc.local ou similaire.

pour le disque dans / dev / sd? ; faire
  / sbin / hdparm -q -S 0 "$ disk"
terminé

2
le fait que vous ne puissiez pas interroger les lectures SMART sans faire tourner le lecteur me laisse sans voix: - / Il est évident que le problème du "ralentissement" peut devenir assez compliqué. En ce qui concerne la désactivation du ralentissement: est-ce que cela ne ferait pas en sorte que la HD s'use plus rapidement? Je veux dire: il n'est jamais "en repos" tant que le système est en marche alors?
Cedric Martin

IIRC vous permet d'interroger certaines valeurs SMART sans provoquer la rotation du disque, mais la température ne figure sur aucun des disques que j'ai testés (modèles de WD, Seagate, Samsung, Hitachi). Ce qui est, bien sûr, fou parce que l’inquiétude vis-à-vis de la température est l’une des raisons pour lesquelles il est inutile de conduire au ralenti. re: wear: AIUI 1. la vitesse constante est moins résistante que le changement de vitesse. 2. Les disques doivent garer la tête dans une zone sûre et un disque n’est conçu que pour le faire autant de fois (IIRC jusqu’à quelques centaines de milliers - facilement dépassé si le disque tourne au ralenti et tourne toutes les quelques secondes)
cas

C'est un long débat quant à savoir s'il est préférable de laisser les lecteurs en marche ou de les réduire. Personnellement, je pense qu'il est préférable de les laisser tourner. J'éteins mon ordinateur la nuit et quand je sors, mais à part ça, je ne désactive jamais mes lecteurs. Certaines personnes préfèrent les baisser, par exemple la nuit, si elles laissent l'ordinateur allumé ou si l'ordinateur est inactif pendant une longue période. Dans ce cas, il est discutable de pouvoir les faire tourner pendant quelques heures plutôt que de les laisser tourner. . Ce qui n’est jamais bon, c’est quand le disque dur tourne et retourne à plusieurs reprises en peu de temps.
Micheal Johnson

Notez également que tourner le lecteur après une période d'inactivité de quelques heures est un peu idiot, car s'il est inactif pendant quelques heures, il sera probablement utilisé à nouveau dans l'heure. Dans ce cas, il semblerait préférable d'extraire rapidement le lecteur s'il est inactif (dans les 10 minutes, par exemple), mais il est également possible que le lecteur reste inactif pendant quelques minutes lorsque quelqu'un utilise l'ordinateur et a probablement besoin de le lecteur à nouveau bientôt.
Micheal Johnson

Je pensais que cela résoudrait mon problème en entendant le lecteur émettre un claquement périodique (3-4 fois / seconde) comme si il écrivait même s'il n'est pas monté! Mais j'entends toujours le bruit après avoir exécuté cette commande. Fait inquiétant, c’est le lecteur que j’utilise pour sauvegarder mon SSD interne ...
Michael,

1

Je viens de découvrir que smart provoquait un disque USB externe à redémarrer encore et encore sur mon framboise pi. Bien que SMART soit généralement une bonne chose, j'ai décidé de le désactiver à nouveau et depuis lors, il semble que l'activité indésirable du disque s'est arrêtée.


Vous pouvez configurer le démon intelligent pour ne pas analyser les disques USB. La plupart des bonnes distributions Linux le font par défaut.
Lzap

1

Vous pouvez vous en occuper un peu. Devrait le réduire pour la plupart.

find / -mount -newer /proc -print

Donne les fichiers modifiés depuis l’amorçage sur le périphérique physique du système / files. Connaître les fichiers aidera probablement à identifier l'auteur.


1

Au cas où vous auriez besoin de le réduire à un disque exact, utilisez ce qui suit:

courir lsblket rechercher le numéro de périphérique. Dans le cas ci-dessous c'est9: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

exécuter lsof | grep '9,126'avec le :remplacer avec ,comparé au numéro de disque ci-dessus. Dans mon cas, cela se présente comme suit:

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

avec le PID de 389162tuer ce processus en utilisant:

kill -9 389162

-1

Le problème est que le système doit vider les données des tampons de disque sur le disque au moins 5 secondes par défaut. Ainsi, si le disque tourne au ralenti, il n’y aura que très peu d’option autre que de revenir en arrière lorsqu’un vidage doit avoir lieu. Le problème n’est donc vraiment pas évitable si ce n’est en désactivant les fonctions de ralentissement ou les fonctionnalités de gestion de l’alimentation du disque hdparm -B 255 /dev/hdax. C’est probablement la meilleure option, car le fait de redémarrer si souvent peut certainement être plus dommageable que de simplement rester allumé tout le temps.


1
Il ne videra les données que s'il y a des données à vider. Si le disque n'est vraiment pas utilisé, aucune donnée en mémoire tampon ne sera vidée.
Micheal Johnson
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.