Problemas de I/O de disco: compreendendo e corrigindo-os para aumentar o desempenho do sistema

Problemas de I/O de disco e uso de espaço são causas comuns de degradação de desempenho em sistemas de computação. As baixas velocidades do sistema podem afetar diretamente sua capacidade de recuperar e armazenar informações no disco.

Neste artigo, aprenderemos por que ocorrem problemas de I/O de disco, quais são os comandos do Linux que podem ser usados para diagnosticar e solucionar problemas de I/O de disco e métodos comuns para resolvê-los.

O que causa problemas de I/O?

Problemas de I/O de disco podem ser resultado de complexidade de armazenamento, gargalos de aplicações, configurações de RAID, tempos de resposta e design. Vamos dar uma olhada em alguns desses pontos em detalhes.

Armazenamento virtual

Uma camada de armazenamento virtual ou definida por software é executada sobre a camada de armazenamento físico subjacente. O armazenamento virtual aumenta a complexidade e o número de possíveis pontos de falha devido à contenção de recursos porque é incapaz de ler e gravar dados tão rapidamente quanto o armazenamento físico.

Gargalos de aplicações

Aplicações com uso intensivo de IO geralmente causam gargalos e problemas de latência de armazenamento. Eles ocorrem principalmente quando várias aplicações ocupadas usam o mesmo armazenamento de dados. A melhor solução para gargalos de aplicações é encontrar uma maneira de lidar com aplicativos com baixa largura de banda de I/O de armazenamento e usar uma base de usuários maior.

Configuração RAID

A configuração RAID pode ser usada para armazenamento em um aplicativo tanto em nível de hardware quanto de software. A configuração RAID distribui solicitações de I/O e cópias de dados em vários discos, aumentando a I/O de armazenamento e a confiabilidade. Qualquer problema no dispositivo físico ou software que gerencia a matriz RAID (por exemplo, devido à idade, configuração insuficiente ou software desatualizado) pode causar lentidão nas solicitações de I/O.

Tempo de resposta de I/O

Um aumento no tempo de resposta de uma I/O de armazenamento pode degradar o desempenho de I/O. Quando um dispositivo de armazenamento demora mais para responder a uma solicitação de I/O, isso indica que há um gargalo na camada de armazenamento. A carga adicional nos gargalos de I/O de armazenamento existentes leva a um atraso consistente no tempo de resposta.

Design de armazenamento ruim

Outra causa de armazenamento de I/O lenta é o mau funcionamento dos dispositivos de armazenamento físico. À medida que os discos rígidos envelhecem ou experimentam um aumento na temperatura, é menos provável que eles atinjam suas taxas máximas de I/O e a latência de I/O começará a diminuir. Os discos mais antigos devem ser substituídos antes que se deteriorem e eventualmente se desgastem, levando a erros de I/O.

O impacto dos problemas de I/O de disco

Para identificar e corrigir problemas de I/O de disco, é importante entender como eles podem se manifestar em seu sistema. Problemas de I/O de disco podem afetar o desempenho do sistema de diversas maneiras:

  • I/O excessivo pode causar uma carga alta no sistema, excedendo potencialmente a capacidade máxima de carga de 1.
  • Os alertas podem ser acionados, por exemplo, quando um serviço está indisponível ou se o sistema não consegue iniciar um serviço.
  • Os sites hospedados podem demorar inesperadamente para carregar ou podem parar de responder.
  • As máquinas virtuais podem funcionar lentamente ou não responder por longos períodos.
  • Os discos podem ter um desempenho insatisfatório devido ao aumento da latência durante os backups.
  • A entrega de e-mail pode ficar lenta, pois o servidor de e-mail precisa ler e gravar dados de e para os discos rígidos.

Monitorando a performance de disco

Assim que suspeitarmos de um possível problema de I/O de disco, podemos usar métricas para analisar o desempenho de I/O de disco. Algumas dessas métricas importantes são:

  • Ler solicitações por segundo
  • Escrever solicitações por segundo
  • Total de bytes escritos e bytes escritos por segundo
  • Total de bytes lidos e bytes lidos por segundo
  • Solicitações esperando em fila

Identificando problemas de I/O de disco

Depois de medir e monitorar o desempenho do disco usando as métricas acima, podemos usar comandos para identificar problemas de E/S do disco. Três dos comandos mais comumente usados ​​para solucionar problemas são df, iostat, e vmstat.

Usando o comando df

O comando df é a forma abreviada do sistema de arquivos do disco. É um dos comandos mais básicos para solucionar problemas de E/S de disco. Se não houver espaço disponível, as operações de gravação falharão. O comando df exibe o espaço usado e disponível para todos os sistemas de arquivos montados no Linux. O espaço usado e restante é mostrado por padrão em blocos de 1K.

Syntax:

df [OPTIONS] [FILES]

Example:

Executando o comando df, você verá um output semelhante ao mostrado abaixo:

Fig. 1: Saída do comando df Fig. 1: Saída do comando df

Como você pode ver no output acima, ele exibe as seguintes informações para todos os sistemas de arquivos montados:

  • Filesystem: Nome do sistema de arquivo ou do dispositivo
  • 1K-blocks: Tamanho total do sistema de arquivos ou dispositivo em blocos de 1KB
  • Used: Espaço total usado pelos arquivos existentes no sistema de arquivos
  • Available: Espaço total restante para uso no sistema de arquivos
  • %: Percentage de blocos usados pelo sistema de arquivos
  • Mounted on: Ponto de montagem, ou diretório, onde o sistema de arquivos é montado

Usando o comando vmstat

O comando vmstat também é conhecido como estatísticas de memória virtual. É um utilitário de monitoramento de desempenho do sistema no Linux que exibe informações sobre processos, memória, agendamento de CPU, disco e bloco IO. Ele mostra aos usuários o desempenho do sistema em tempo real durante um período de amostragem. Se você não especificar nenhuma opção, o comando vmstat mostrará por padrão as estatísticas desde a última reinicialização do sistema.

Syntax:

vmstat [options][delay [count]]

Atraso e contagem são dois parâmetros importantes para o comando vmstat. Eles são usados ​​para mostrar continuamente o desempenho do sistema em tempo real na taxa de um intervalo especificado por um número definido de vezes.

  • Delay é o intervalo de tempo ou atraso entre as duas atualizações de output.
  • Count define o número de atualizações de saída a serem exibidas. Se esta contagem não for definida, o comando vmstat será executado infinitamente.

Example:

Executar o comando vmstat fornecerá umoutput semelhante ao mostrado abaixo:

Fig. 2: Saída do comando vmstat Fig. 2: Saída do comando vmstat

Esta é a saída básica que exibe estatísticas gerais. Você também pode especificar os parâmetros de atraso e contagem para exibir estatísticas em tempo real continuamente. Por exemplo, executar vmstat 5 3 exibirá as 3 estatísticas em tempo real abaixo, cada uma após um intervalo de 5 segundos.

Fig. 3: Saída em tempo real do comando Fig. 3: Saída em tempo real do comando vmstat

O output acima está dividido em quatro áreas. Nosso foco principal é a seção io. Ele mostra duas colunas:

  • bi: Número de blocos de dados recebidos de um dispositivo
  • bo: Número de blocos de dados enviados para um dispositivo

Podemos usar essas informações para analisar quando os dados estão sendo muito gravados ou lidos. Podemos então usar outro comando, como iostat, para ver qual disco rígido estava carregando a carga e tentar encontrar a causa raiz do problema de E/S do disco.

Usando o comando iostat

Como o próprio nome sugere, o comando iostat é usado para monitorar estatísticas de entrada/saída de um sistema. Ele gera esses relatórios monitorando a relação entre o tempo ativo dos dispositivos e suas taxas médias de transferência. Os relatórios gerados podem ser usados ​​para atualizar a configuração do sistema para obter um melhor equilíbrio de entrada/saída entre vários discos físicos disponíveis.

Syntax:

iostat [option] [interval] [count]

Semelhante ao que vimos com o comando vmstat, os parâmetros interval e count são usados ​​para mostrar atualizações em tempo real infinitamente ou apenas para contagens específicas.

Example:

Executar o comando iostat fornecerá umoutput semelhante ao mostrado abaixo:

Fig 4: Saída do comando iostat Fig. 4: Saída do comando iostat

Os relatórios padrão de saída exibem as estatísticas da CPU e as estatísticas de input/output do dispositivo desde a última reinicialização do sistema. Das duas seções, estamos mais preocupados com a seção Device. Ele gera as seguintes informações para todas as partições ou dispositivos:

  • Device: Nome da partição/dispositivo
  • tps: “Transferência por segundo”; tps mais altos significa um processador mais ocupado
  • Blk_read/s (kB_read/s) e Blk_wrtn/s (kB_wrtn/s): Velocidade de transferência de operações de leitura ou gravação expressa na forma do número de blocos lidos/gravados por segundo
  • Blk_read (kB_read) e Blk_wrtn (kB_wrtn): Número total de blocos lidos e gravados neste dispositivo desde a última reinicialização

Consertando erros de I/O de disco

Os exemplos acima indicam problemas de desempenho de disco no sistema. Você pode implementar diversas correções de software e hardware para mitigar problemas de I/O de disco e uso de espaço.

Correções de software

  • Use discos rígidos virtuais e físicos separados.
  • Instale o sistema operacional host em um disco diferente das máquinas virtuais.
  • Otimize os discos rígidos implementando o particionamento de disco no sistema operacional convidado e host.
  • Atualize o tipo de RAID de acordo com a carga de trabalho da aplicação para obter um desempenho mais rápido da aplicação.
  • Ative o Direct Memory Access.

Correção de hardware

  • Atualize os discos rígidos para uma unidade de estado sólido (SSD) ou um disco de rotação mais rápida.
  • Divida a carga do aplicativo entre os discos rígidos para lidar melhor com a carga de I/O.
  • Atualize para um cache maior na memória para que a leitura e gravação direta dos sistemas de arquivos sejam menos frequentes pelos aplicativos.

Conclusão

O uso do espaço em disco e problemas de I/O podem deteriorar significativamente o desempenho de um sistema. Você deve solucionar e encontrar a causa raiz de problemas como alto uso de espaço ou solicitações de I/O lentos antes de tomar as medidas apropriadas para corrigí-los.

O Linux tem vários comandos que você pode usar para restringir o que está causando problemas de I/O de disco. Os três comandos mais comumente usados discutidos aqui—df, iostat, e vmstat—são suficientes para ajudá-lo a encontrar a causa raíz. Embora tenhamos abordado uma série de correções de software úteis para problemas de I/O de disco, é bom lembrar que às vezes as atualizações de hardware oferecem a melhor solução permanente.

Was this article helpful?
Monitore seu ambiente Linux

Verifique a integridade e a disponibilidade de seus servidores Linux para obter desempenho ideal com a ferramenta de monitoramento Linux do Site24x7.

Write For Us

Write for Site24x7 is a special writing program that supports writers who create content for Site24x7 "Learn" portal. Get paid for your writing.

Write For Us

Write for Site24x7 is a special writing program that supports writers who create content for Site24x7 “Learn” portal. Get paid for your writing.

Apply Now
Write For Us