No meu post anterior, apresentei as soluções NetApp e BeeGFS e o novo suporte da NetApp para BeeGFS. Neste post, meu objetivo é fornecer uma introdução técnica aos principais componentes e conceitos gerais por trás do sistema de arquivos de cluster paralelo BeeGFS. É difícil prever o público-alvo exato, mas espero que qualquer pessoa que esteja pensando em implantar o BeeGFS em seu ambiente ou que simplesmente precise de uma breve introdução, ache esse post valioso.
Se você estiver familiarizado com sistemas de arquivos de cluster paralelo, você pode ignorar este parágrafo. Para todos os outros, indicar o BeeGFS como um sistema de arquivos paralelo indica que os arquivos são distribuídos em vários nós de servidor para maximizar a performance de leitura/gravação e a escalabilidade do sistema de arquivos. O fato de ser agrupado indica que esses nós de servidor trabalham juntos para fornecer um único sistema de arquivos que pode ser simultaneamente montado e acessado por outros nós de servidor, comumente conhecidos como clientes. Para evitar confusão, não vou fazer mais generalizações sobre como os sistemas de arquivos de cluster paralelos funcionam. A principal conclusão é que os clientes podem ver e consumir este sistema de arquivos distribuído de forma semelhante a um sistema de arquivos local, como NTFS, XFS ou ext4.
Agora vamos ver o que é o burburburinho e entrar na arquitetura de alto nível do BeeGFS.
Existem quatro componentes principais necessários: O gerenciamento, armazenamento, metadados e serviços de cliente que são executados em uma ampla variedade de distribuições Linux suportadas. Esses serviços se comunicam por qualquer rede compatível com TCP/IP ou RDMA, incluindo InfiniBand (IB), Omni-Path (OPA) e RDMA sobre Ethernet convergente (RoCE). Os serviços do servidor BeeGFS (gerenciamento, storage e metadados) são daemons do espaço do usuário, enquanto o cliente é um módulo do kernel nativo (sem patchless). Todos os componentes podem ser instalados ou atualizados sem reinicialização, e você pode executar qualquer combinação de serviços no mesmo nó, incluindo todos eles.
Figura 1) componentes e relacionamentos da solução BeeGFS usados com o NetApp e-Series.Esses serviços são abordados em maior profundidade mais adiante neste post do blog, juntamente com uma breve introdução a uma série de serviços de suporte e utilitários. Também vamos falar brevemente sobre como começar com o BeeGFS.
Primeiro é o serviço de gerenciamento BeeGFS . Este serviço pode ser pensado como um Registro e watchdog para todos os outros serviços envolvidos no sistema de arquivos. A única configuração necessária é onde o serviço armazena seus dados. Ele armazena apenas informações sobre outros nós no cluster, de modo que consome espaço mínimo em disco (88KB GB no meu ambiente) e o acesso aos dados não é essencial à performance. Na verdade, esse serviço é tão leve que você provavelmente vai querer colocá-lo em outro nó, provavelmente um nó de metadados. Você terá apenas um serviço de gerenciamento para cada implantação do BeeGFS, e o endereço IP desse nó será usado como parte da configuração de todos os outros serviços do BeeGFS.
Em seguida, é o serviço de storage BeeGFS . Se você está vindo de outro sistema de arquivos paralelo, talvez você saiba isso como um serviço de storage de objetos. Cada serviço de storage BeeGFS requer um ou mais destinos de storage, que são simplesmente bloquear dispositivos com um sistema de arquivos em conformidade com Linux POSIX. (Eu recomendo os volumes e XFS da série e do NetApp.) Você precisará de um ou mais serviços de storage para cada implantação do BeeGFS.
Como o nome indica, o serviço de storage BeeGFS armazena o conteúdo distribuído dos arquivos do usuário, conhecido como arquivos de bloco de dados, em seus destinos de storage. Os blocos de dados de cada arquivo de usuário são distribuídos em todos ou um subconjunto de destinos de storage no sistema de arquivos BeeGFS. Para flexibilidade, o BeeGFS permite que você defina o padrão de distribuição em um determinado diretório, que controla o tamanho e o número da parte e a seleção dos destinos de armazenamento usados para novos arquivos no diretório.
O terceiro é o serviço de metadados do BeeGFS . Outros sistemas de arquivos paralelos podem se referir a isso como o MDS. Cada serviço de metadados BeeGFS requer exatamente um destino de metadados, que novamente é simplesmente um dispositivo de bloco com um sistema de arquivos compatível com Linux POSIX. (Eu recomendo volumes e-Series e ext4.) Você precisará de um ou mais serviços de metadados para cada implantação do BeeGFS.
Os requisitos de capacidade de storage para metadados do BeeGFS são muito pequenos, em geral, de 0,3% a 0,5% da capacidade de storage total. No entanto, isso realmente depende do número de diretórios e entradas de arquivos no sistema de arquivos. Como regra geral, a documentação do BeeGFS afirma que 500GB TB de capacidade de metadados é bom para cerca de 150.000.000 arquivos ao usar o ext4 no destino de metadados subjacente.
O serviço de metadados do BeeGFS armazena dados que descrevem a estrutura e o conteúdo do sistema de arquivos. Sua função inclui manter o controle dos diretórios no sistema de arquivos e as entradas de arquivo em cada diretório. O serviço também é responsável por armazenar atributos de diretório e arquivo, como propriedade, tamanho, atualização ou tempo de criação, e a localização real dos blocos de arquivo de dados do usuário nos destinos de armazenamento.
Fora das operações de abertura/fechamento de arquivos, o serviço de metadados não está envolvido no acesso aos dados, o que ajuda a evitar que o acesso aos metadados se torne um gargalo de performance. Outra vantagem é que os metadados são distribuídos por diretório. Isso significa que, quando um diretório é criado, o BeeGFS seleciona um servidor de metadados para esse diretório e arquivos contidos, mas os subdiretórios podem ser atribuídos a outros servidores de metadados, equilibrando a carga de trabalho e a capacidade dos metadados nos servidores disponíveis. Essa estratégia aborda questões de desempenho e escalabilidade associadas a alguns sistemas de arquivos de cluster paralelos legados.
Quarto é o serviço cliente BeeGFS , que se Registra nativamente com a interface do sistema de arquivos virtual do kernel Linux. Para manter as coisas simples, o código-fonte do módulo do kernel é incluído com o cliente BeeGFS e a compilação acontece automaticamente. Nenhuma intervenção manual é necessária quando você atualiza o kernel ou o serviço cliente BeeGFS. Você precisa se certificar de que a versão instalada do pacote kernel-devel corresponda à versão do kernel atualmente instalada (ou muito impactos de cabeça pode ocorrer). O cliente também inclui um daemon de ajuda de espaço de usuário para lidar com log e resolução de hostname.
Por padrão, os clientes montam o sistema de arquivos BeeGFS em /mnt/beegfs, embora isso possa ser alterado se desejado. Depois de consultar o serviço de gerenciamento BeeGFS para obter detalhes de topologia, os clientes se comunicam diretamente com os nós de storage e metadados para facilitar a e/S do usuário Observe que não há acesso direto de clientes para armazenamento de bloco de back-end ou destinos de metadados como há em alguns ambientes, como o StorNext. Isso evita a dor de cabeça de gerenciar um ambiente multipath grande e potencialmente heterogêneo.
Para maximizar a performance, o cliente BeeGFS nativo é recomendado para todos os nós que acessam o sistema de arquivos BeeGFS. O cliente BeeGFS fornece um ponto de montagem normal, para que as aplicações possam acessar o sistema de arquivos BeeGFS diretamente sem a necessidade de modificações especiais. Você também pode exportar um ponto de montagem BeeGFS usando NFS ou Samba, ou como um substituto drop-in para HDFS do Hadoop. Atualmente, o suporte ao cliente está disponível apenas para Linux, embora as próximas versões forneçam um cliente nativo para Windows.
O sistema de arquivos pode ser gerenciado usando o beegfs-ctl CLI incluído com o pacote beegfs-utils. Este utilitário deve ser executado a partir de um nó cliente e é instalado automaticamente com o serviço cliente. A ajuda integrada está disponível anexando --help a qualquer comando. Este pacote também inclui o verificador do sistema de arquivos BeeGFS (beegfs-fsck), que é usado para verificar e corrigir a consistência do sistema de arquivos.
Se GUIs forem sua preferência, o serviço Admon (sistema de administração e monitoramento) fornece uma interface baseada em Java para gerenciar e monitorar BeeGFS. O serviço de back-end da Admon é executado em qualquer máquina com acesso à rede aos outros serviços para monitorar seus status e coletar métricas para armazenamento em um banco de dados. A GUI do cliente baseado em Java é executada em uma estação de trabalho ou host de salto e se coneta ao daemon remoto Admon via HTTP.
Há também um serviço BeeGFS Mon que pode ser usado para coletar estatísticas do sistema e gravá-las no InfluxDB (um banco de dados de séries temporais). O serviço Mon inclui painéis Grafana predefinidos que podem ser usados para visualizar os dados; ou ferramentas alternativas podem ser usadas com os dados do InfluxDB. Se você está apenas procurando monitoramento gráfico sobre gerenciamento, eu recomendo esta rota sobre o Admon.
Normalmente, os serviços BeeGFS são instalados usando seu gerenciador de pacotes de escolha (por exemplo, apt/yum/zypper) depois de adicionar os repositórios BeeGFS. Os arquivos de configuração para todos os serviços BeeGFS podem ser encontrados em /etc/beegfs/beegfs-*.conf. Os arquivos de log estão localizados em /var/log/beegfs-*.log, com arquivos rotativos mantidos como beegfs-*.log.old-*. Os scripts e binários do BeeGFS estão localizados em /opt/beegfs/, e os serviços BeeGFS são gerenciados como unidades do systemd.
Eu poderia escrever uma postagem inteira no blog sobre a implantação do BeeGFS, mas o NetApp já publicou um guia de implantação de solução. Se você estiver interessado em explorar ainda mais os números de performance do e-Series e do BeeGFS, faça o download da arquitetura dereferência .
Embora o BeeGFS geralmente funcione bem pronto para uso, as opções de configuração e ajuste exaustivos estão disponíveis para maximizar a performance de um determinado workload ou ambiente. A partir de setembro de 2019, a NetApp também oferece suporte a soluções e-Series e BeeGFS para ajudá-lo a aproveitar ao máximo os ambientes de storage de computação de alta performance desenvolvidos no BeeGFS e no e-Series.
Eu adoraria receber seus comentários neste post ou ouvir o que você está fazendo com o BeeGFS em seu ambiente. Deixe-me uma linha em joe.mccormick@netapp.com ou deixe um comentário abaixo.
Joe McCormick é engenheiro de software na NetApp com mais de dez anos de experiência no setor DE TI. Com quase sete anos na NetApp, o foco atual de Joe está desenvolvendo soluções de computação de alto desempenho em torno do e-Series. Joe também é um grande defensor da automação, acreditando que se você fez isso uma vez, por que você está fazendo isso novamente.