Atualização do sistema de arquivos de cluster LizardFS 3.13.0-rc2

Depois de uma pausa de um ano no desenvolvimento retomado trabalhando em uma nova ramificação de um sistema de arquivos distribuído tolerante a falhas LagartoF 3.13 и publicado segundo candidato a lançamento. Recentemente aconteceu mudança de proprietários da empresa desenvolvedora do LizardFS, nova gestão foi adotada e desenvolvedores foram substituídos. Nos últimos dois anos, o projeto esteve afastado da comunidade e não lhe deu a devida atenção, mas a nova equipa pretende reavivar a relação anterior com a comunidade e estabelecer uma interação estreita com ela. O código do projeto é escrito nas linguagens C e C++ e distribuído por sob licença GPLv3.

LagartoFS é um sistema de arquivos de cluster distribuído, que permite distribuir dados entre diferentes servidores, mas fornece acesso a eles na forma de uma única partição grande, que é trabalhada de maneira semelhante às partições de disco tradicionais. Uma partição montada com LizardFS suporta atributos de arquivo POSIX, ACLs, bloqueios, soquetes, pipes, arquivos de dispositivos, links simbólicos e físicos. O sistema não possui um único ponto de falha; todos os componentes são redundantes. A paralelização de operações de dados é suportada (vários clientes podem acessar arquivos simultaneamente).

Para garantir a tolerância a falhas, os dados são divididos em réplicas, que são distribuídas entre diferentes nós com redundância (várias cópias são colocadas em nós diferentes); se os nós ou unidades falharem, o sistema continua a operar sem perda de informações e redistribui automaticamente os dados tendo em conta os restantes nós. Para expandir o armazenamento, basta conectar novos nós a ele sem interromper os trabalhos de manutenção (o próprio sistema replica parte dos dados para novos servidores e equilibra o armazenamento levando em consideração os novos servidores). Você pode fazer o mesmo para reduzir o tamanho do cluster - você pode simplesmente desabilitar o equipamento obsoleto que está sendo removido do sistema.

Dados e metadados são armazenados separadamente. Para funcionamento, recomenda-se a instalação de dois servidores de metadados operando em modo master-slave, bem como pelo menos dois servidores de armazenamento de dados (chunkserver). Além disso, para fazer backup de metadados, servidores de log podem ser usados ​​para armazenar informações sobre alterações nos metadados e permitir restaurar a operação em caso de danos a todos os servidores de metadados existentes. Cada arquivo é dividido em blocos (pedaços), de até 64 MB. Os blocos são distribuídos entre os servidores de armazenamento de acordo com o modo de replicação selecionado: padrão (determinação explícita do número de cópias a serem colocadas em diferentes nós, inclusive em relação a diretórios individuais - para dados importantes o número de cópias pode ser aumentado, e para dados sem importância reduzidos), XOR (RAID5) e EC (RAID6).

O armazenamento pode ser dimensionado para tamanhos de petabytes. As áreas de aplicação incluem arquivamento, armazenamento de imagens de máquinas virtuais, dados multimídia, backups, uso como DRC (Disaster Recovery Center) e como armazenamento em clusters de computação de alto desempenho. O LizardFS oferece altíssima velocidade de leitura para arquivos de qualquer tamanho e, ao gravar, apresenta bom desempenho ao gravar arquivos inteiros de grande e médio porte, quando não há modificação constante, trabalho intensivo com arquivos abertos e operações únicas com um monte de arquivos pequenos.

Atualização do sistema de arquivos de cluster LizardFS 3.13.0-rc2

Dentre as funcionalidades do FS, nota-se também a presença de suporte para snapshots, refletindo o estado dos arquivos em um determinado momento, e uma implementação integrada da “lixeira” (os arquivos não são excluídos imediatamente e ficam disponíveis para recuperação por algum tempo). O acesso a uma partição pode ser limitado por endereço IP ou senha (semelhante ao NFS). Existem mecanismos de gerenciamento de cotas e qualidade de serviço que permitem limitar o tamanho e a largura de banda para determinadas categorias de usuários. É possível criar instalações de armazenamento distribuídas geograficamente, cujos segmentos estão localizados em diferentes data centers.

O projeto LizardFS foi fundado em 2013 como um fork MooseFS, e difere principalmente na presença de um modo de replicação baseado em códigos de correção de erros Reed-Solomon (análogo ao raidzN), suporte ACL expandido, presença de um cliente para a plataforma Windows, otimizações adicionais (por exemplo, ao combinar um cliente e um servidor de armazenamento, os blocos, se possível, são enviados com o nó atual e os metadados são armazenados em cache na memória), um sistema de configuração mais flexível, suporte para leitura antecipada de dados, cotas de diretório e retrabalho interno.

O LizardFS 3.13.0 está programado para ser lançado no final de dezembro. A principal inovação do LizardFS 3.13 é a utilização de um algoritmo de consenso para garantir tolerância a falhas (troca de servidores master em caso de falha) Raft (usa nossa própria implementação do uRaft, que anteriormente era usada em produtos comerciais). O uso do uRaft simplifica a configuração e reduz os atrasos na recuperação de falhas, mas requer pelo menos três nós de trabalho, um dos quais é usado para quorum.

Outras mudanças: um novo cliente baseado no subsistema FUSE3, resolvendo problemas de correção de erros, o plugin nfs-ganesha foi reescrito em linguagem C. A atualização 3.13.0-rc2 corrige vários bugs críticos que tornaram as versões de teste anteriores da ramificação 3.13 inutilizáveis ​​(as correções para a ramificação 3.12 ainda não foram publicadas e a atualização de 3.12 para 3.13 ainda leva à perda completa de dados).

Em 2020, o trabalho centrar-se-á no desenvolvimento
Agama, um novo kernel LizardFS completamente reescrito, que, segundo os desenvolvedores, proporcionará um aumento de três vezes no desempenho em comparação com o branch 3.12. Agama fará a transição para uma arquitetura orientada a eventos, baseada em entrada/saída assíncrona Asio, funcionam principalmente no espaço do usuário (para reduzir a dependência dos mecanismos de cache do kernel). Além disso, serão oferecidos um novo subsistema de depuração e um analisador de atividade de rede com suporte para ajuste automático de desempenho.

O cliente LizardFS adicionará suporte completo para operações de gravação de versionamento, o que melhorará a confiabilidade da recuperação de desastres, resolverá problemas que surgem quando diferentes clientes compartilham acesso aos mesmos dados e permitirá melhorias significativas de desempenho. O cliente será transferido para seu próprio subsistema de rede operando no espaço do usuário. O primeiro protótipo funcional do LizardFS baseado em Agama está planejado para estar pronto no segundo trimestre de 2020. Ao mesmo tempo, prometem implementar ferramentas de integração do LizardFS com a plataforma Kubernetes.

Fonte: opennet.ru

Adicionar um comentário