Como posso monitorar o disco io?

267

Eu gostaria de fazer algum monitoramento geral de io de disco em um servidor debian linux. Quais são as ferramentas que devo saber sobre o disco io do monitor para que eu possa ver se o desempenho de um disco está no máximo ou com picos em determinada hora do dia?

camomileCase
fonte

Respostas:

225

Para tendências de E / S de disco, existem algumas opções. Meu favorito pessoal é o sarcomando de sysstat. Por padrão, ele fornece uma saída 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

O %iowaité o tempo de espera em I / O. Usando o pacote Debian, você deve habilitar o coletor de estatísticas através do /etc/default/sysstatarquivo de configuração após a instalação do pacote.

Para ver a utilização atual dividida por dispositivo, você pode usar o iostatcomando também no pacote 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

Algumas outras opções que podem mostrar o uso do disco em gráficos de tendências são munin e cactos .

jordanm
fonte
Munin ou Cacti são mais o que estou procurando. Obrigado pelas indicações.
usar o seguinte
6
Observe que% iowait mostra apenas o momento em que o kernel não tinha mais nada a fazer além de aguardar IO. Em um servidor 100% vinculado à CPU, esse valor será zero, independentemente da quantidade de IO que ele estiver fazendo.
Jürgen Strobel
iostat -x dm-0 | Dispositivo grep; iostat -xd 2 -y dm-0 | grep dm-0
Juan Medina
104

Dê uma olhada no iotop.

Ou iodump, se é mais o seu modo de pensar.

Nota: Isso requer pelo menos o kernel 2.6.20 para funcionar.

consertar
fonte
Este não é apenas o Linux, mas também requer um kernel mais recente (ou corrigido).
jordanm
Eles parecem bons para descobrir o que está acontecendo no momento, mas estou procurando um monitoramento de imagem maior.
usar o seguinte
8
@camomileCase - você não especificou que na sua pergunta ...
tink
90

Eu gosto dstat. Ele pode mostrar totais e estatísticas por disco e até dispositivos md (RAID), também pode usar cores para uma melhor visão geral:

$ 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 timestamps
  • -d para estatísticas de disco
  • -D para especificar os dispositivos exatos a serem relatados
  • 60em média mais de 60 segundos. A exibição é atualizada a cada segundo, mas apenas uma vez a cada 60 segundos uma nova linha será iniciada.

  • não usado neste exemplo, mas -cpode relatar a porcentagem de E / S de espera, que na maioria dos casos está relacionada à CPU aguardando dados dos discos.

Está disponível para a maioria das distribuições Linux, mas às vezes precisa ser instalado a partir de repositórios.

jippie
fonte
49

Apenas nos arquivos do seu computador (assumindo um kernel recente), você pode perguntar /sys/block/sda/statou /proc/diskstats. No entanto, precisará de algumas traduções. Mas é bom para uma verificação rápida e suja.

Charlesbridge
fonte
22
/sys/block/sda/statestá documentado em https://www.kernel.org/doc/Documentation/block/stat.txt
ignis
10
/proc/diskstatsestá documentado em kernel.org/doc/Documentation/iostats.txt
Rikard Söderström
2
A grande vantagem dessa resposta é que nenhuma ferramenta precisa ser instalada. É só lá. (Potencialmente :-)
Ben Aveling 03/02
2
por exemplo, echo "leia io mesclar setores ticks escrever io mesclar setores ticks a bordo ioticks timeinqueu"; cat / sys / block / vda / vda1 / stat; sleep 10; cat / sys / block / vda / vda1 / stat
Ben Aveling
35

Outra opção é usar: sudo iotop -aoP

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

Este programa informará quanto um processo foi gravado no disco e lido desde que o iotop foi iniciado.

lanoxx
fonte
Eu ouço algo acessando o disco, mas a saída acumulada está aumentando muito lentamente, às vezes nem um segundo ... ???
Michael
Se você ouvir o disco, provavelmente é antigo e / ou lento. HDDs modernos tendem a ser muito silenciosos. Que tipo de sons está fazendo? Use smartctlpara verificar se o disco está íntegro.
rudolfbyker 21/06
8

O monitoramento do Disk Io pode ser feito por várias ferramentas, como as seguintes.

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

Além disso, alguns conceitos importantes do sistema operacional são muito necessários para compreendê-los. Leia o tutorial completo do Linux IO

sarath
fonte
2
O iozone é para teste, não para monitoramento: "O Iozone é uma ferramenta de benchmark de sistema de arquivos. O benchmark gera e mede uma variedade de operações de arquivo".
Andrew Beals
7

Outra ótima ferramenta para uma rápida visão geral de onde vem a carga é atop

Ele pode mostrar uma visão geral de todos os recursos (CPU, memória / swap, E / S de rede e disco) ou você pode detalhar um único recurso e classificar os processos de acordo com o quanto eles consomem.

Aaron Digulla
fonte
5

Por que não tentar nmon . Faz discos e interage com processos. Originalmente para AIX, mas já é portado para Linux há alguns anos.

Steve Rowe
fonte
1

A melhor coisa a fazer se você deseja ver o desempenho em um longo período é usar o Centreon, que é uma ferramenta poderosa desenvolvida no Nagios . O Centreon permite monitorar, desenhando gráficos das performances dos recursos e muitas outras coisas.

omar
fonte
Que outras coisas? Alguma captura de tela? Por favor, expanda sua resposta.
Konrad Gajewski