IOs lê escritas por arquivo

2

Meu alvo é separar igualmente o banco de dados mysql através do número de drives, usando links simbólicos nas tabelas.

Agora eu não consigo encontrar o caminho para verificar IOs, leituras, escritas por tabela no mysql.

Então, agora estou pensando que talvez haja alguma maneira no linux monitorar ios, leituras, gravações por arquivo?

Iostat mostra IOPS por dispositivo; Iotop mostra IOPS por processo; Existe alguma coisa para mostrar IOPS por arquivo?

    
por Katafalkas 11.02.2012 / 13:51

3 respostas

4

Há um acampamento em DBA-land (ou em algum momento, eu não passei por lá recentemente) que sustentava que o desempenho ótimo era encontrado ao microgerenciar a infraestrutura de armazenamento de tal forma que os sistemas e armazenamento É melhor que os administradores saiam do caminho e forneçam uma pilha de discos rígidos, um ou dois servidores e uma ajuda ocasional quando perguntados.

Esses sistemas geralmente acabam com um grande número de pares RAID1, com arquivos de dados proposital e sistematicamente espalhados por todos e cada um deles. Unidades de log seriam usadas e similarmente segregadas. As ideias por trás desse método são bem simples:

  • Ao fazer isso dessa maneira, você segrega bancos de dados de outros grandes consumidores de IOP para que os grandes usuários nunca afetem o restante do sistema.
  • Por ter muitas unidades, o IOPS agregado para o sistema é muito alto.
  • Ao minimizar as camadas de abstração de armazenamento, você torna o sistema mais confiável e, em geral, tem menor latência.

Existe um problema significativo com esta abordagem, e Chopper3 acertou: manutenibilidade.

Um sistema como esse necessitará de atenção constante e contínua e de ajuste fino para continuar em ótimo desempenho à medida que os bancos de dados aumentam / diminuem, os usuários mudam, os aplicativos e seus padrões de uso evoluem, a recuperação das condições de fuga acontecem e os ciclos de manutenção mudam. O tipo de arquitetura que descrevi acima funciona melhor para tipos de carga de quase-nunca / ler-muitos.

Ele também é usado quando é realmente importante para o banco de dados extrair todo o último ponto percentual de desempenho do hardware. Esta é uma decisão de orçamento em muitos casos, onde se considera que o tempo de DBA é mais barato do que mais hardware. No entanto, existem alguns casos de HPC em que simplesmente não é possível criar uma caixa maior, por isso é necessário otimizar o que você tem. Para o resto de nós que não estão usando servidores de banco de dados monstruosos, há sempre atualizações.

O outro campo, e aquele a que eu atribuo, lida com isso de forma diferente. Ele coloca mais fé na abstração de armazenamento e tende a escalar muito melhor. Em vez de pares R10, você coloca todos esses pares em um conjunto RAID10; ou alternadamente um pequeno número de conjuntos RAID10. Isso permite que a agregação de IOP seja igual à anterior, mas cada arquivo de dados / espaço de tabela / banco de dados obtém acesso a um pouco da capacidade de surto. Usando vários conjuntos R10, você pode fornecer separação de E / S para os bancos de dados e arquivos de log críticos que precisam deles. A necessidade de microgerenciar o desempenho por arquivo é bastante reduzida.

    
por 11.02.2012 / 15:41
6

Essa ideia parece excessivamente complexa, frágil e difícil de gerenciar - você não pode simplesmente colocar os discos em uma matriz RAID 10, que distribuirá os dados e IOPS pelos discos uniformemente - é o que todos os outros faz.

    
por 11.02.2012 / 14:23
1

Você pode monitorar a E / S por arquivo com um script systemtap. Consulte: iotime.stp

    
por 14.02.2012 / 16:46

Tags