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

Após um ano de interrupção no desenvolvimento foi reiniciado o trabalho em um novo ramo de sistema de arquivos distribuído tolerante a falhas LizardF 3.13 e foi publicado segundo candidato para lançamento. Recentemente houve uma mudança de proprietários da empresa que desenvolve LizardFS, uma nova gestão foi implantada e houve mudanças nos desenvolvedores. Nos últimos dois anos, o projeto se afastou da comunidade e não lhe deu a devida atenção, mas a nova equipe pretende ressuscitar as antigas relações com a comunidade e estabelecer uma interação próxima. O código do projeto é escrito em C e C++ e é distribuído sob licença GPLv3.

LizardFS é é um sistema de arquivos de cluster distribuído que permite espalhar dados em diferentes servidores, mas apresentar acesso a eles na forma de uma única grande partição, cujo manuseio é feito de maneira semelhante às partições de disco tradicionais. Na partição montada com LizardFS, são suportados atributos POSIX, ACL, bloqueios, sockets, canais, arquivos de dispositivo, links simbólicos e rígidos. O sistema não possui um único ponto de falha, todos os componentes são redundantes. Suporta a paralelização de operações com dados (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 armazenadas em diferentes nós) — em caso de falha de nós ou dispositivos de armazenamento, o sistema continua a funcionar sem perda de informações e redistribui automaticamente os dados de acordo com os nós restantes. Para expandir o armazenamento, basta conectar novos nós sem interromper o serviço (o sistema replica automaticamente parte dos dados em novos servidores e equilibra o armazenamento considerando os novos servidores). Da mesma forma, pode-se proceder para reduzir o tamanho do cluster — pode-se simplesmente desconectar equipamentos obsoletos do sistema.

Os dados e metadados são armazenados separadamente. Recomenda-se instalar dois servidores de metadados operando em modo master-slave e, além disso, pelo menos dois servidores de armazenamento de dados (chunkserver). Adicionalmente, para a reserva de metadados, podem ser utilizados servidores de log que armazenam informações sobre alterações de metadados e permitem restaurar o funcionamento em caso de dano a todos os servidores de metadados existentes. Cada arquivo é dividido em blocos (chunk) de até 64 MB. Os blocos são distribuídos pelos servidores de armazenamento de acordo com o modo de replicação escolhido: padrão (definição explícita do número de cópias a serem distribuídas em diferentes nós, inclusive na alocação a diretórios específicos — para dados importantes, o número de cópias pode ser aumentado, enquanto para dados não essenciais pode ser reduzido), XOR (RAID5) e EC (RAID6).

O armazenamento pode ser escalado para tamanhos de petabytes. Entre as áreas de aplicação estão a manutenção de arquivos de archive, armazenamento de imagens de máquinas virtuais, dados multimídia, backups, utilização como DRC (Centro de Recuperação de Desastres) e como armazenamento em clusters de computação de alto desempenho. O LizardFS oferece uma velocidade de leitura muito alta de arquivos de qualquer tamanho, e ao escrever, apresenta um bom desempenho ao gravar grandes e médios arquivos de uma vez, quando não há modificação constante, trabalho intensivo com arquivos abertos e operações únicas com um grande volume de pequenos arquivos.

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

Entre as características do sistema de arquivos, também se destaca o suporte a snapshots que refletem o estado dos arquivos em um determinado momento, e a implementação interna de uma "lixeira" (os arquivos não são excluídos imediatamente e permanecem disponíveis para recuperação por um certo tempo). O acesso à seção pode ser limitado por endereço IP ou senha (semelhante ao NFS). Existem mecanismos de cota e gerenciamento de qualidade de serviço, permitindo limitar o tamanho e a largura de banda para algumas categorias de usuários. É possível criar armazenamentos geograficamente distribuídos, cujos segmentos estão alocados em diferentes data centers.

O projeto LizardFS foi fundado em 2013 como um fork MooseFS, e difere, principalmente, pela presença do modo de replicação baseado nos códigos de correção de erros de Reed-Solomon (análogo ao raidzN), suporte avançado a ACL, disponibilidade de um cliente para a plataforma Windows, otimizações adicionais (por exemplo, na combinação do cliente e servidor de armazenamento, blocos são, quando possível, entregues a partir do nó atual, enquanto 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 para diretórios e reestruturações internas.

O lançamento do LizardFS 3.13.0 está previsto para o final de dezembro. A principal novidade do LizardFS 3.13 é a utilização de um algoritmo de consenso para garantir a resistência a falhas (mudança de servidores master em caso de falha). Raft (uma implementação própria do uRaft é utilizada, que anteriormente foi aplicada em produtos comerciais). O uso do uRaft simplifica a configuração e reduz o tempo de recuperação após a falha, mas requer a presença de pelo menos três nós operacionais, sendo um deles utilizado para o quórum.

Entre outras mudanças: um novo cliente baseado no subsistema FUSE3, solução para problemas de correção de erros, e o plugin nfs-ganesha reescrito em C. Na atualização 3.13.0-rc2, vários erros críticos foram corrigidos, tornando as versões beta anteriores da branch 3.13 pouco utilizáveis (as correções para a branch 3.12 ainda não foram publicadas, e a atualização de 3.12 para 3.13 ainda resulta em perda total de dados).

Em 2020, o foco será na desenvolvimento
Agama, um novo núcleo completamente reescrito do LizardFS, que, segundo os desenvolvedores, proporcionará um aumento de três vezes no desempenho em comparação com a branch 3.12. Em Agama, a transição para uma arquitetura orientada a eventos (event driven) será realizada, com entrada/saída assíncrona baseada em asio, e a operação predominantemente no espaço do usuário (para reduzir a dependência dos mecanismos de cache do núcleo). Além disso, uma nova subsistema de depuração e um analisador de atividade de rede com suporte para autoajuste de desempenho serão oferecidos.

O cliente LizardFS terá suporte completo para versionamento de operações de gravação, o que aumentará a confiabilidade na recuperação de falhas, resolverá problemas decorrentes do acesso simultâneo de diferentes clientes aos mesmos dados e permitirá um aumento significativo de desempenho. O cliente será transferido para um subsistema de rede próprio, operando no espaço do usuário. O primeiro protótipo funcional do LizardFS baseado em Agama está previsto para ser preparado no segundo trimestre de 2020. Também se promete implementar ferramentas para integrar o LizardFS com a plataforma Kubernetes.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster