Comment puis-je surveiller le disque io?


267

J'aimerais effectuer une surveillance générale du disque io sur un serveur Linux Debian. Quels sont les outils que je devrais connaître à propos du moniteur de disque io afin que je puisse voir si les performances d’un disque atteignent leur maximum ou leurs pointes à une certaine heure de la journée?


Réponses:


225

Pour les tendances d'E / S de disque, il existe quelques options. Mon préféré est la sarcommande de sysstat. Par défaut, cela donne une sortie comme ceci:

09:25:01 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
09:35:01 AM     all      0.11      0.00      0.01      0.00      0.00     99.88
09:45:01 AM     all      0.12      0.00      0.01      0.00      0.00     99.86
09:55:01 AM     all      0.09      0.00      0.01      0.00      0.00     99.90
10:05:01 AM     all      0.10      0.00      0.01      0.02      0.01     99.86
Average:        all      0.19      0.00      0.02      0.00      0.01     99.78

La %iowaitest le temps passé à attendre sur I / O. À l'aide du paquet Debian, vous devez activer le collecteur de statistiques via le /etc/default/sysstatfichier de configuration après l'installation du paquet.

Pour voir l'utilisation actuelle ventilée par périphérique, vous pouvez utiliser la iostatcommande, également à partir du package sysstat:

$ iostat -x 1
Linux 3.5.2-x86_64-linode26 (linode)    11/08/2012      _x86_64_        (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.84    0.00    0.08    1.22    0.07   97.80

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
xvda              0.09     1.02    2.58    0.49   112.79    12.11    40.74     0.15   48.56   3.88   1.19
xvdb              1.39     0.43    4.03    1.82    43.33    18.43    10.56     0.66  112.73   1.93   1.13

Munin et cacti sont quelques-unes des autres options pouvant indiquer l'utilisation du disque dans les graphiques de tendance .


Munin ou Cacti sont plus ce que je cherche. Merci pour les pointeurs.
camomileCase

6
Notez que% iowait n'affiche que l'heure à laquelle le noyau n'a rien d'autre à faire que d'attendre IO. Sur un serveur lié à 100% de la CPU, cette valeur sera égale à zéro, quel que soit le nombre d'E / S qu'il effectue.
Jürgen Strobel

iostat -x dm-0 | grep Device; iostat -xd 2-a dm-0 | grep dm-0
Juan Medina

104

Regardez iotop.

Ou iodump, si c'est plus votre façon de penser.

Remarque: Cela nécessite au moins le noyau 2.6.20 pour fonctionner.


Ce n’est pas seulement Linux, mais nécessite également un noyau plus récent (ou corrigé).
Jordanie

Celles-ci semblent bonnes pour savoir ce qui se passe actuellement, mais je recherche une surveillance plus globale.
camomileCase

8
@camomileCase - vous n'avez pas précisé cela dans votre question ...
tink

90

J'aime dstat. Il peut afficher les totaux et les statistiques par disque et même md-devices (RAID), ainsi que les couleurs utilisées pour une meilleure vue d'ensemble:

$ dstat -tdD total,sda,sdb,sdc,md1 60 
----system---- -dsk/total----dsk/sda-----dsk/sdb-----dsk/sdc-----dsk/md1--
     time     | read  writ: read  writ: read  writ: read  writ: read  writ
08-11 22:08:17|3549k  277k: 144k   28k: 851k   62k: 852k   60k:  25k   82k
08-11 22:09:17|  60k  258k:1775B   15k:  13k   63k:  15k   60k:  68B   74k
08-11 22:10:17| 176k  499k:   0    14k:  41k  122k:  41k  125k: 273B  157k
08-11 22:11:17|  42k  230k:   0    14k:9830B   54k:  14k   51k:   0    70k
08-11 22:11:52|  28k  132k:   0  5032B:5266B   33k:9479B   28k:   0    37k
  • -t pour les horodatages
  • -d pour les statistiques de disque
  • -D pour spécifier les périphériques exacts à signaler
  • 60faire en moyenne plus de 60 secondes. L'affichage est mis à jour toutes les secondes, mais une nouvelle ligne ne démarre qu'une fois toutes les 60 secondes.

  • non utilisé dans cet exemple, mais -cpeut signaler un pourcentage d'attente d'E / S, qui est dans la plupart des cas lié au processeur en attente de données provenant des disques.

Il est disponible pour la plupart des distributions Linux, mais doit parfois être installé à partir de référentiels.


49

Juste à partir de fichiers sur votre ordinateur (en supposant un noyau récent), vous pouvez demander /sys/block/sda/statou /proc/diskstats. Il faudra cependant traduire. Mais c'est bien pour un test rapide et sale.


22
/sys/block/sda/statest documenté à https://www.kernel.org/doc/Documentation/block/stat.txt
ignis

10

2
Le gros avantage de cette réponse est qu’aucun outil n’a besoin d’être installé. C'est juste là. (Potential :-)
Ben Aveling

2
par exemple, echo "lire io fusionner secteurs ticks écrire io fusionner secteurs tic inflight ioticks timeinqueu"; cat / sys / block / vda / vda1 / stat; sommeil 10; chat / sys / bloc / vda / vda1 / stat
Ben Aveling

35

Une autre option consiste à utiliser: sudo iotop -aoP

-a    Will show accumulated output
-o    Will only output 
-P    Will only show processes instead of threads

Ce programme vous indiquera combien de processus un processus a écrit sur le disque et lu à partir du disque depuis le démarrage d’iotop.


J'entends quelque chose accéder au disque, mais la sortie accumulée augmente très lentement, parfois pas du tout en une seconde ... ???
Michael

Si vous entendez le disque, il est probablement ancien et / ou lent. Les disques durs modernes ont tendance à être très silencieux. Quel genre de sons fait-il? Utilisez smartctlpour voir si le disque est en bon état.
Rudolfbyker le

8

La surveillance du disque Io peut être effectuée à l'aide de plusieurs outils, tels que les suivants.

  1. Iostat
  2. Iozone
  3. SAR
  4. vmstat

De plus, certains concepts de système d'exploitation importants sont très nécessaires pour les comprendre. Lisez le tutoriel complet sur Linux IO


2
iozone est conçu pour les tests et non pour la surveillance: "Iozone est un outil de référence des systèmes de fichiers. Ce test génère et mesure diverses opérations sur les fichiers."
Andrew Beals

7

Un autre excellent outil pour un aperçu rapide de la charge provient: atop

Il peut vous montrer une vue d'ensemble de toutes les ressources (CPU, mémoire / swap, réseau et E / S disque) ou vous pouvez explorer une ressource unique et trier les processus en fonction de leur consommation.


5

Pourquoi ne pas essayer Nmon . Il fait des disques et réseau avec les processus. A l'origine pour AIX, mais il est porté sur Linux depuis quelques années maintenant.


1

La meilleure chose à faire si vous voulez voir des performances sur une longue période est d'utiliser Centreon, un outil puissant basé sur Nagios . Centreon vous permet de surveiller en traçant des graphiques des performances des ressources et beaucoup d'autres choses.


Ce que d'autres choses? Des captures d'écran? S'il vous plaît développez votre réponse.
Konrad Gajewski le
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.