Comment savoir ce qui tourne sur mon disque?

8

J'ai activé "spindown" sur l'un des lecteurs de mon serveur Linux, qui n'est accessible que par un client BitTorrent - ce qui signifie que lorsque je n'ai pas de torrents en cours d'exécution, rien d'autre ne devrait accéder au disque et le réveiller de spindown (non? ).

Mais quelque chose fait tourner le disque toutes les 15 minutes environ. Comment puis-je suivre le coupable voyou?

Merci pour tout commentaire!

Bruno Antunes
la source

Réponses:

8

Vous pouvez consulter http://samwel.tk/laptop_mode/ . Bien que cette page ne traite pas principalement de votre problème, mais donne une bonne image globale du fonctionnement et des idées d'E / S, comment désactiver vos disques en les fermant.

La réponse courte à votre problème:

echo 1> / proc / sys / vm / block_dump

il produira des messages dans syslog comme:

23 juillet 10:04:05 noyau locutus: ls (5224): LIRE le bloc 7340136 sur dm-4
23 juillet 10:04:05 noyau locutus: ls (5224): LIRE le bloc 4335136 sur dm-4
23 juillet 10:04:05 noyau locutus: ls (5224): LIRE le bloc 15505568 sur dm-4
23 juillet 10:04:05 noyau locutus: ls (5224): LIRE le bloc 7340160 sur dm-4
23 juillet 10:04:05 noyau locutus: ls (5224): LIRE le bloc 7340168 sur dm-4

J'ai utilisé une simple commande ls

REMARQUE: assurez-vous que la journalisation de votre système est arrêtée ou écrite sur un disque virtuel (type: tmpfs) avant de le faire, car (citation): "votre système peut entrer dans une boucle de rétroaction, où syslogd provoque l'activité du disque, ce qui provoque la sortie du noyau, et cela fait que syslogd fait plus d'activité sur le disque "

Je recommande de monter / tmp en tant que disque virtuel, puis de configurer la journalisation dans / tmp / syslog. Cela dans / etc / fstab (et un redémarrage) fera:

none / tmp tmpfs par défaut, taille = 256M 0 0
asdmin
la source
9

Sous Linux, le fanotifysyscall récent-ish a activé un utilitaire appelé fatracequi informe sur quel processus frappe quel fichier soit pour le système entier ou une partition particulière. Certainement mon outil préféré pour ce genre de chose:

deluged(6542): R /usr/share/GeoIP/GeoIP.dat
rsyslogd(1737): W /var/log/syslog
rsyslogd(1737): W /var/log/kern.log
skomorokh
la source
Cet outil est génial! Pour moi, il s'est avéré que smartd faisait tourner le lecteur, ce qui, je suppose, est logique.
Alexander O'Mara
5

J'utilise iotop pour comprendre ce qui utilise le lecteur. Depuis le site Web, vous devez avoir "noyau Linux ≥ 2.6.20 avec les options TASK_DELAY_ACCT et TASK_IO_ACCOUNTING activées".

Il semble que vous ne soyez intéressé que par un lecteur particulier. Vous pourriez envisager d'écrire un script qui vérifie régulièrement avec lsof ou le fuser l'accès à ce lecteur / partition.

honte
la source
1

Si un processus commence à écrire des données sur le lecteur, vous pouvez le découvrir en vérifiant régulièrement les fichiers ouverts: lsof .

Sinon, vous pouvez regarder avec "gratuit" si le fichier d'échange est utilisé ou non.

Raffael Luthiger
la source
1

Vous devriez pouvoir utiliser l' audit Linux pour ajouter une surveillance sur le point de montage du lecteur, puis surveiller les journaux avec ausearch après l'événement pour savoir quel fichier a été lu ou écrit (le cas échéant), et quel processus l'a fait, l'audit peut surveillez les lectures, les écritures, les exécutions et les changements d'attributs sur n'importe quel système de fichiers (tant qu'il est pris en charge sur votre système - il devrait l'être).

JamesHannah
la source
0

Vous pouvez peut-être utiliser incron qui utilise inotify pour lancer des commandes basées sur l'activité du système de fichiers. Vous pouvez alors éventuellement regarder le point de montage et utiliser incron pour déclencher lsof pour rechercher le processus qui y accède.

Kyle Brandt
la source
0

La chose la plus simple pour vérifier ce qui tourne sur votre disque est:

allez dans le répertoire du disque monté, pour moi c'était / media / disk0 / transmission

alors vous exécutez: sudo fatrace -c

vous aurez la sortie de anyting qui atteint ce dossier, par exemple, vous pouvez vous connecter avec ssh et faire un ls.

df (54956): bash CO / media / disk1 (55025): bash O / media / disk1 (55025): bash RC / media / disk1 (55026): bash O / media / disk1 (55026): bascule RC / media / disk1


la source