7.4. Clustering

Armazenamento em cluster fornece uma imagem do sistema de arquivos consistente em todos os servidores em um cluster, permitindo que os servidores leiam e gravem em um único sistema de arquivos compartilhado. Isso simplifica a administração de armazenamento, limitando tarefas como instalação de reparos e aplicativos em um sistema de arquivos. Um sistema de arquivos em todo o cluster também elimina a necessidade de cópias redundantes de dados de aplicativos, simplificando o backup e a recuperação de desastres.
Red Hat's High Availability Add-On fornece armazenamento em cluster em conjunto com o Red Hat Global File System 2 (parte do Resilient Storage Add-On).

7.4.1. Global File System 2

Global File System 2 (GFS2) é um sistema de arquivos nativos que interage diretamente com o sistema de arquivos do kernel Linux. Ele permite que vários computadores (nós) compartilhem simultaneamente o mesmo dispositivo de armazenamento em cluster. O sistema de arquivos GFS2 é em grande parte auto ajustável, mas o ajuste manual é possível. Esta seção descreve as considerações de desempenho ao tentar ajustar o desempenho manualmente.
A Red Hat Enterprise Linux 6.4 apresenta melhorias no gerenciamento de fragmentação de arquivo no GFS2. Os arquivos criados pelo Red Hat Enterprise Linus 6.3 ou anteriores tinham a tendência à fragmentação de arquivo se múltiplos arquivos fossem gravados ao mesmo tempo por mais de um processo. Esta fragmentação fez com que tudo ficasse mais lento, especialmente em cargas de trabalhos envolvendo grandes arquivos. Com o Red Hat Enterprise Linux 6.4, as gravações simultâneas resultam em menos fragmentações de arquivos e portanto em melhor desempenho para estas cargas de trabalho.
Embora não exista uma ferramenta de desfragmentação para GFS2 no Red Hat Enterprise Linux, você pode desfragmentar arquivos individuais, identificando-os com a ferramenta filefrag, copiá-los para arquivos temporários, e renomear os arquivos temporários para substituir os originais. (Este procedimento também pode ser feito em versões anteriores a 6.4, enquanto que a gravação é feita sequencialmente.)
Como o GFS2 usa um mecanismo de bloqueio global que potencialmente requer a comunicação entre os nós de um cluster, o melhor desempenho será alcançado quando o sistema é projetado para evitar uma contenção de arquivo e diretório entre esses nós. Alguns métodos para evitar contenção são os seguintes:
  • Arquivos pré-alocados e diretórios com o fallocate onde possível, para otimizar o processo de alocação e evitar a necessidade de bloquear páginas fonte.
  • Minimizar as áreas do sistema de arquivos que são compartilhadas entre vários nós para minimizar a invalidação do cache cross-nó e melhorar o desempenho. Por exemplo, se vários nós montarem o mesmo sistema de arquivos, mas acessarem diferentes sub-diretórios, você provavelmente vai conseguir um melhor desempenho movendo um subdiretório para um sistema de arquivo separado.
  • Escolha um tamanho de grupo de recursos ideal e número. Isso depende de tamanhos de arquivo típicos e espaço livre disponível no sistema, e afeta a probabilidade de que vários nós tentarão usar um grupo de recursos simultaneamente. Muitos grupos de recursos podem retardar a alocação de blocos, enquanto o espaço de alocação é localizado, enquanto muito poucos grupos de recursos podem causar contenção de bloqueio durante a desalocação. Em geral, é melhor testar várias configurações para determinar o que é melhor para a sua carga de trabalho.
No entanto, a contenção não é o único problema que pode afetar o desempenho de sistema de arquivo GFS2. Outras práticas para aprimorar o desempenho geral são:
  • Selecione seu hardware de armazenamento de acordo com os modelos de E/S esperados dos nós de cluster e os requerimentos de desempenho do sistema de arquivo.
  • Use armazenamento de estado sólido onde possível para diminuir tempo de busca.
  • Crie um sistema de arquivos de tamanho apropriado para o seu trabalho, e assegure-se que o sistema de arquivos nunca está em mais de 80% da capacidade. Sistemas de arquivos menores terão o tempo de backup proporcionalmente mais curtos, e requerem menos tempo e memória para o controle do sistema de arquivos, mas estão sujeitos a elevada fragmentação caso sejam pequenos demais para a sua carga de trabalho.
  • Defina tamanhos de diários maiores para cargas de trabalho de metadados intensivo, ou quando dados com diário estiver em uso. Embora este use mais memória, ele melhora o desempenho, pois mais espaço diário está disponível para armazenar dados antes de uma gravação ser necessária.
  • Assegure-se de que o relógico nos nós de GFS2 estão sincronizados para evitar problemas com os aplicativos em rede. Recomendamos o uso do NTP (Network Time Protocol).
  • A menos que os tempos de acesso de arquivo ou diretório sejam críticos para a operação de seu aplicativo, monte o sistema de arquivo com as opções de montagem noatime e nodiratime.

    Nota

    Red Hat recomenda o uso da opção noatime com o GFS2.
  • Se você precisar usar quotas, tente reduzir a freqüência das operações de sincronização de cota ou usar a sincronização de quota difusa para evitar problemas de desempenho decorrentes de atualizações de arquivos de quotas constantes.

    Nota

    A conta de cotas "difusas" (fuzzy) pode permitir que usuários ou grupos excedam um pouco do limite de cota. Para minimizar isto, o GFS2 reduz o período de sincronização, de forma dinâmica quando um usuário ou grupo se aproxima do limite de cota.
Para mais informações sobre os aspectos do ajuste de desempenho do GFS2 consulte o Global File System 2 guide, available from http://access.redhat.com/site/documentation/Red_Hat_Enterprise_Linux/.