133 votes

Comment puis-je surveiller la charge du disque dur sous Linux ?

Existe-t-il un bon utilitaire en ligne de commande pour surveiller la charge du disque dur sous linux ? Quelque chose comme top mais en surveillant l'activité du disque et l'utilisation du processeur.

Plus précisément, je soupçonne que pour certains serveurs (à forte charge), après plusieurs optimisations sur diverses parties du ou des programmes qui y sont exécutés, le goulot d'étranglement est actuellement simplement la journalisation vers les fichiers sur le disque. Mais je trouve qu'il est très difficile d'évaluer le volume de trafic que les serveurs peuvent supporter.

L'outil idéal serait quelque chose qui imprime "Vous utilisez 35% de votre bande passante disque en ce moment". Des idées ?

2 votes

Question parfaite, c'est exactement ce que je cherchais =)

0 votes

Il est possible de lire sysfs directement, comme /sys/block/sda/stat . Le champ #1 donne le nombre total de lectures, le champ #5 est le nombre total d'écritures, le champ #9 est le nombre d'opérations I/O en cours. Pour en savoir plus kernel.org/doc/Documentation/iostats.txt Les valeurs sont longues non signées et peuvent être enveloppées.

0 votes

C'est une très bonne question car nous sommes toujours confrontés à ce problème sur les serveurs Plesk. Cependant, ce qui manque est how do you do it with SNMP? . C'est bien de se connecter et de vérifier des choses, mais on a vraiment besoin de données historiques.

108voto

Dave Cheney Points 18132

Vous pouvez obtenir une assez bonne mesure de cela en utilisant la fonction iostat outil.

% iostat -dx /dev/sda 5

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.78    11.03    1.19    2.82    72.98   111.07    45.80     0.13   32.78   1.60   0.64

L'utilisation du disque est indiquée dans la dernière colonne. Elle est définie comme suit

Pourcentage du temps CPU pendant lequel des demandes d'E/S ont été émises vers le dispositif. (utilisation de la bande passante pour le périphérique). La saturation du périphérique se produit lorsque cette valeur est proche de 100 %.

3 votes

Dans quel paquet se trouve-t-il dans Debian, le cas échéant ? apt-cache dump n'a rien donné pour l'iostat

12 votes

@Brian : C'est dans le paquetage sysstat (par yum en tout cas...)

0 votes

Je ne l'ai pas trouvé sur RHEL 6.5. Est-il disponible pour RHEL ?

92voto

Tim Howland Points 4638

iotop est une version de top qui regarde combien d'IO chaque processus utilise. Elle est dans les dépôts standards d'ubuntu ; je ne sais pas si elle est dans RHEL ou Fedora, mais elle devrait l'être.

enter image description here

Pour les anciens noyaux (par exemple CentOS 5.x ou RHEL 5.x) qui ne supportent pas iotop, utilisez topio à la place (documenté ici) : http://yong321.freeshell.org/freeware/pio.html#linux . Il s'appuie sur /proc//io pour les statistiques io et fournit des fonctionnalités similaires à celles de iotop. Voir le lien pour plus de détails.

1 votes

En effet, il n'est pas installé par défaut dans Ubuntu, donc on pourrait faire : sudo apt-get install iotop pour l'obtenir

1 votes

Iotop nécessite un noyau supérieur à 2.6.20, ce qui exclut malheureusement RedHat el4 et el5.

2 votes

À partir de RedHat 5.4, les éléments nécessaires au fonctionnement d'iotop ont été rétroportés. Profitez-en !

20voto

Comme suggéré par sastanin dans les commentaires, vous pouvez traiter directement les valeurs données dans /sys/block/sda/stat o /proc/diskstats . Cela peut être utile lorsqu'aucun des autres outils mentionnés n'est disponible et que vous ne pouvez pas les installer facilement.

Par exemple (IIUC) quelque chose comme ceci (en bash) devrait donner le nombre de lectures par seconde :

OLD=`awk '{print $1}' /sys/block/sda/stat` # First field is number of read I/Os processed
DT=1
for ii in `seq 1 10`
do
    sleep $DT
    NEW=`awk '{print $1}' /sys/block/sda/stat`
    echo $((($NEW-$OLD)/$DT))
    OLD=$NEW
done

Siehe https://www.kernel.org/doc/Documentation/iostats.txt y https://www.kernel.org/doc/Documentation/block/stat.txt pour la documentation.

16voto

Yvan Points 330

Vous devriez jeter un coup d'œil à au sommet de qui combine la puissance de iotop/top/iftop, le tout en un seul endroit, et met en évidence les parties critiques de votre système.

6voto

MikeyB Points 38317

Je vous recommande de jeter un coup d'œil à l'outil nmon. Il vous montrera la charge en direct d'un certain nombre de paramètres système et enregistrera les données dans un fichier pour une consultation ultérieure. C'est un outil gratuit disponible ici :

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X