Surveillance de disques
Linux
iostat
https://www.linuxtechi.com/monitor-linux-systems-performance-iostat-command/
On commence par installer le paquet sysstat si cela est nécessaire:
apt install sysstat
Ensuite, on dispose de la commande iostat, qui donne des informations sur les IO sous tous les angles : CPU, disque. La commande est très complète et permet en général de savoir tout ce dont l'on a besoin. Dans son fonctionnement, iostat va lire les fichiers système:
- /proc/diskstats for disk stats
- /proc/stat for system stats
- /sys for block device stats
- /proc/devices for persistent device names
- /proc/self/mountstats for all the network filesystems
- /proc/uptime for information regarding system uptime
Usage
L'usage par défaut:
<source lang="bash"> [justine@Argonaut ~]$ iostat Linux 5.5.8-1-MANJARO (Argonaut) 24/03/2020 _x86_64_ (8 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
9,00 0,00 3,80 0,15 0,00 87,05
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd loop0 0,03 0,47 0,00 0,00 2135 0 0 loop1 0,02 0,24 0,00 0,00 1094 0 0 loop2 0,00 0,00 0,00 0,00 4 0 0 sda 0,11 2,79 0,01 0,00 12690 32 0 sdb 20,18 362,11 254,93 2186,65 1647836 1160089 9950676 scd0 0,00 0,00 0,00 0,00 2 0 0 </source>
- %user, utilisation CPU pour l'utilisateur
- %nice, utilisation CPU pour les applications avec priorité "nice" (http://wawadeb.crdp.ac-caen.fr/iso/tmp/ressources/linux/doc.mandrakelinux.com/MandrakeLinux/100/fr/Command-Line.html/process-priority.html)
- %system CPU utilisé par le système
- %iowait temps passé avec un CPU qui attend que les opérations disques se terminent
- %steal Pourcentage de temps passé à attendre après l'hyperviseur
- %idle Pourcentage de temps passé à attendre.
Les valeurs en dessous sont assez explicites.
Il existe de nombreuses, très nombreuses options !
- iostat -c : Seulement infos CPU
- iostat -d : Seulement infos sur les Devices
- iostat -x : Infos détaillées
- iostat -xd : Infos détaillées et séparées par devices
- iostat -p sda : I/O seulement pour sda
- iostat -N : Rapport LVM
- iostat -z : Rapport seulement sur les devices actifs.
- iostat -t : Pour avoir un timestamp
- iostat -j : On peut donner un blkid juste après pour voir seulement ce device là
- nfsiostat : Variante pour les systèmes nfs
Temporalité
La commande iostat est intéressante pour faire du troubleshooting, mais il vaut mieux l'utiliser "en continu"; si je ne la lance qu'une fois, je peux tomber en plein dans un pic ou dans un creux. Le plus intéressant est ce type d'usage:
<source lang="bash"> [justine@Argonaut ~]$ iostat 2 5 Linux 5.5.8-1-MANJARO (Argonaut) 24/03/2020 _x86_64_ (8 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
8,89 0,00 3,89 0,14 0,00 87,08
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd loop0 0,02 0,41 0,00 0,00 2135 0 0 loop1 0,02 0,21 0,00 0,00 1094 0 0 loop2 0,00 0,00 0,00 0,00 4 0 0 sda 0,10 2,41 0,01 0,00 12691 32 0 sdb 18,05 313,86 239,16 1904,36 1649982 1257277 10011192 scd0 0,00 0,00 0,00 0,00 2 0 0
avg-cpu: %user %nice %system %iowait %steal %idle
8,10 0,00 4,61 0,06 0,00 87,22
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read kB_wrtn kB_dscd loop0 0,00 0,00 0,00 0,00 0 0 0 loop1 0,00 0,00 0,00 0,00 0 0 0 loop2 0,00 0,00 0,00 0,00 0 0 0 sda 0,00 0,00 0,00 0,00 0 0 0 sdb 0,00 0,00 0,00 0,00 0 0 0 scd0 0,00 0,00 0,00 0,00 0 0 0 </source>
Ici, je lance deux rapports à 5 secondes d'intervalle. Si je ne passe qu'un seul chiffre, ce sera le temps d'intervalle entre deux rapports. Par exemple un:
iostat 5
...me donnera un rapport toutes les 5 secondes.