¿Cómo puedo monitorear el disco io?

267

Me gustaría hacer un poco de supervisión general de disco io en un servidor Debian Linux. ¿Cuáles son las herramientas que debo saber sobre ese disco de monitor io para poder ver si el rendimiento de un disco está al máximo o aumenta en cierto momento durante el día?

camomila
fuente
44
serverfault.com/questions/9428/… || superuser.com/questions/115358/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Respuestas:

225

Para las tendencias de E / S de disco hay algunas opciones. Mi favorito personal es el sarcomando de sysstat. Por defecto, da una salida como esta:

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

El %iowaites el tiempo que pasa esperando en E / S. Con el paquete Debian, debe habilitar el recopilador de estadísticas a través del /etc/default/sysstatarchivo de configuración después de la instalación del paquete.

Para ver la utilización actual desglosada por dispositivo, puede usar el iostatcomando, también desde el paquete 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

Algunas otras opciones que pueden mostrar el uso del disco en los gráficos de tendencias son munin y cacti .

jordanm
fuente
Munin o Cacti son más lo que estoy buscando. Gracias por los consejos.
camomileCase
66
Tenga en cuenta que% iowait solo muestra el tiempo cuando el kernel no tenía nada más que hacer que esperar a IO. En un servidor con un 100% de CPU, esto será cero independientemente de cuánto esté haciendo IO.
Jürgen Strobel
iostat -x dm-0 | dispositivo grep; iostat -xd 2 -y dm-0 | grep dm-0
Juan Medina
104

Echa un vistazo a iotop.

O iodump, si eso es más por tu forma de pensar.

Nota: Esto requiere al menos el kernel 2.6.20 para funcionar.

tink
fuente
Esto no es solo Linux, sino que también requiere un kernel más nuevo (o parcheado).
jordanm
Estos se ven bien para descubrir lo que está sucediendo en este momento, pero estoy buscando un monitoreo de imagen más grande.
camomileCase
8
@camomileCase - no especificó eso en su pregunta ...
tink
90

Me gusta dstat. Puede mostrar totales y estadísticas por disco e incluso dispositivos md (RAID), también puede usar colores para una mejor visión general:

$ 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 para marcas de tiempo
  • -d para estadísticas de disco
  • -D para especificar los dispositivos exactos para informar
  • 60en promedio más de 60 segundos. La pantalla se actualiza cada segundo, pero solo una vez cada 60 segundos se iniciará una nueva línea.

  • no se usa en este ejemplo, pero -cpuede informar el porcentaje de espera de E / S, que en la mayoría de los casos está relacionado con la CPU esperando datos de los discos.

Está disponible para la mayoría de las distribuciones de Linux, pero a veces debe instalarse desde repositorios.

jippie
fuente
49

Solo desde archivos en su computadora (suponiendo un kernel reciente) puede preguntar /sys/block/sda/stato /proc/diskstats. Sin embargo, necesitará algunas traducciones. Pero es bueno para un cheque rápido y sucio.

puente de Charles
fuente
22
/sys/block/sda/statestá documentado en https://www.kernel.org/doc/Documentation/block/stat.txt
ignis
10
/proc/diskstatsestá documentado en kernel.org/doc/Documentation/iostats.txt
Rikard Söderström
2
La gran ventaja de esta respuesta es que no es necesario instalar herramientas. Solo esta ahi. (Potencialmente :-)
Ben Aveling
2
por ejemplo, echo "leer io fusionar sectores ticks escribir io fusionar sectores ticks en vuelo ioticks timeinqueu"; cat / sys / block / vda / vda1 / stat; dormir 10; cat / sys / block / vda / vda1 / stat
Ben Aveling
35

Otra opción es usar: sudo iotop -aoP

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

Este programa le dirá cuánto ha escrito y leído un proceso en el disco desde que se inició iotop.

lanoxx
fuente
Oigo que algo accede al disco, pero la producción acumulada aumenta muy lentamente, a veces en absoluto en un segundo ... ???
Michael
Si escucha el disco, probablemente sea viejo y / o lento. Los discos duros modernos tienden a ser muy silenciosos. ¿Qué tipo de sonidos está haciendo? Use smartctlpara ver si el disco está en buen estado.
Rudolfbyker
8

El monitoreo de Disk Io se puede hacer mediante múltiples herramientas como las siguientes.

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

También algunos conceptos importantes del sistema operativo son muy necesarios para comprenderlos ... lea el tutorial completo de Linux IO

sarath
fuente
2
iozone es para probar, no para monitorear: "Iozone es una herramienta de referencia del sistema de archivos. El punto de referencia genera y mide una variedad de operaciones de archivos".
Andrew Beals
7

Otra gran herramienta para una descripción rápida de dónde proviene la carga es atop

Puede mostrarle una descripción general de todos los recursos (CPU, memoria / intercambio, red y E / S de disco) o puede profundizar en un solo recurso y ordenar los procesos según cuánto consuman.

Aaron Digulla
fuente
5

¿Por qué no probar nmon ? Hace discos y red con procesos. Originalmente para AIX, pero se ha portado a Linux desde hace algunos años.

Steve Rowe
fuente
1

Lo mejor que puede hacer si desea ver el rendimiento durante un período prolongado es usar Centreon, que es una poderosa herramienta desarrollada en Nagios . Centreon le permite monitorear dibujando gráficos de los rendimientos de los recursos y muchas otras cosas.

omar
fuente
¿Qué otras cosas? ¿Alguna captura de pantalla? Por favor expanda su respuesta.
Konrad Gajewski