Armazenamento distribuído russo. Como funciona



Nesta primavera, a equipe da Reydiks preparou e lançou a primeira versão do software para criar sistemas de armazenamento em bloco distribuído em execução nas plataformas de servidor Elbrus-4.4, baseadas nos microprocessadores Elbrus-4C.

A utilidade dessa simbiose é visível a olho nu - a montagem de sistemas de armazenamento baseados em ferro doméstico e no sistema operacional doméstico está se tornando um produto atraente do mercado doméstico, principalmente para clientes com foco na substituição de importações.

No entanto, o potencial do sistema operacional desenvolvido não se limita às plataformas de servidor russas. No momento, a compatibilidade com servidores x86-64 padrão, amplamente distribuídos no mercado, está sendo testada e testada. Além disso, o produto é "finalizado" com a funcionalidade desejada, o que permitirá sua implementação fora do mercado russo.

A seguir, apresentaremos uma pequena discussão sobre como a solução de software (chamada RAIDIX RAIN) é organizada, o que permite combinar a mídia do servidor local em um único cluster de armazenamento tolerante a falhas com gerenciamento centralizado e recursos de dimensionamento horizontal e vertical.

Recursos de armazenamento distribuído


Os sistemas de armazenamento tradicionais, feitos na forma de um único complexo de hardware e software, têm um problema comum relacionado ao dimensionamento: o desempenho do sistema depende dos controladores, seu número é limitado, a expansão da capacidade adicionando prateleiras de expansão às operadoras não aumenta a produtividade.

Com essa abordagem, o desempenho geral do sistema de armazenamento cairá, pois com o aumento da capacidade, o número anterior de controladores precisa processar mais operações de acesso ao aumento do volume de dados.

O RAIDIX RAIN suporta a escala horizontal de blocos, em contraste com as soluções tradicionais, aumentando os nós (blocos de servidor) do sistema leva a um aumento linear não apenas na capacidade, mas também no desempenho do sistema. Isso é possível porque cada nó RAIDIX RAIN inclui não apenas mídia, mas também recursos de computação para E / S e processamento de dados.

Cenários de aplicativos


RAIDIX RAIN envolve a implementação de todos os principais cenários de aplicativos para armazenamento em bloco distribuído: infraestrutura de armazenamento em nuvem, bancos de dados altamente carregados e armazenamento de análise de Big Data. RAIDIX RAIN também pode competir com sistemas de armazenamento tradicionais com volumes de dados suficientemente altos e recursos financeiros correspondentes do cliente.

Nuvens públicas e privadas


A solução fornece a escalabilidade flexível necessária para implantar uma infraestrutura de nuvem: desempenho, taxa de transferência e capacidade de armazenamento aumentam com cada nó adicionado ao sistema.

Bases de dados


O cluster RAIDIX RAIN em uma configuração totalmente em flash é uma solução eficiente para atender bancos de dados altamente carregados. A solução será uma alternativa acessível aos produtos Oracle Exadata para Oracle RAC.

Análise de Big Data


Juntamente com o software adicional, é possível usar uma solução para executar análises de big data. RAIDIX RAIN fornece níveis significativamente mais altos de desempenho e facilidade de manutenção em comparação com um cluster HDFS.

Arquitetura da solução


RAIDIX RAIN suporta 2 opções de implantação: dedicada (externa ou convergente) e hiperconvergente (HCI, infraestrutura hiperconvergente).

Opção de implantação dedicada


Na versão selecionada, o cluster RAIDIX RAIN é um armazenamento de software clássico. A solução é implantada no número necessário de nós de servidor dedicados (pelo menos 3, o número é praticamente ilimitado acima), cujos recursos são completamente utilizados para tarefas de armazenamento.

Fig. 1. Opção de implantação dedicada

O software RAIDIX RAIN é instalado diretamente no bare metal. Aplicativos, serviços, recursos de computação que usam o RAIN para armazenar informações são hospedados em hosts externos e conectados a ele por meio de uma rede de armazenamento (arquitetura clássica de data center).

Opção de implantação hiperconvergente


A opção hiperconvergente envolve a colocação conjunta de poder de computação (VMs de hipervisor e produção) e recursos de armazenamento (armazenamento de software) do datacenter em um conjunto de nós, principalmente para infraestruturas virtuais. Com essa abordagem, o software RAIN é instalado em cada host (nó) da infraestrutura (HCI) na forma de uma máquina virtual.

Fig. 2. Opção de implantação hiperconvergente

A interação dos nós do cluster RAIN entre si e com os usuários finais dos recursos de armazenamento (servidores, aplicativos) é realizada por meio dos protocolos iSCSI (IP, IPoIB), iSER (RoCE, RDMA) ou NVMeOF.

A opção de implantação hiperconvergente oferece os seguintes benefícios:

  • Consolidação de recursos de computação e armazenamento (não é necessário implementar e manter um armazenamento externo dedicado).
  • Escala conjunta de bloco horizontal de recursos de computação e recursos de armazenamento.
  • Facilidade de implementação e manutenção.
  • Gerenciamento centralizado.
  • Economize capacidade de montagem em rack e consumo de energia.

Em termos de mídia usada, o RAIDIX RAIN suporta 3 configurações:

  • Todos os flash - os nós do cluster são fornecidos apenas com mídia flash (NVMe, SSD);
  • HDD - os nós do cluster são fornecidos apenas com portadores de HDD;
  • Híbrido - dois níveis de armazenamento independentes no HDD e SSD.


Resiliência Produtiva


O principal valor do RAIDIX RAIN é o equilíbrio ideal de desempenho, tolerância a falhas e uso eficiente da capacidade de armazenamento.

Como parte da infraestrutura de TI do cliente, o RAIDIX RAIN também é atraente, pois temos acesso de bloco "honesto" na saída, o que distingue a solução da maioria dos análogos do mercado.

Atualmente, a maioria dos produtos competitivos mostra alto desempenho, apenas ao usar espelhamento. Ao mesmo tempo, a capacidade útil de armazenamento é reduzida em 2 vezes ou mais: replicação de dados única (espelhamento) - redundância de 50%, replicação de dados dupla (espelhamento duplo) - redundância de 66,6%.

O uso de tecnologias de otimização de armazenamento, como EC (Erasure Coding - noiseless coding), desduplicação e compactação implementadas em sistemas de armazenamento distribuído leva a uma degradação significativa do desempenho do armazenamento, o que é inaceitável para aplicativos sensíveis a atrasos.

Portanto, na prática, essas soluções geralmente são forçadas a operar sem o uso dessas tecnologias ou a incluí-las apenas para dados "frios".

Requisitos de failover


Inicialmente, o RAIDIX RAIN foi projetado com um conjunto claro de requisitos iniciais para resiliência e disponibilidade do sistema:

  • O cluster deve sobreviver a uma falha de pelo menos dois nós, com o número de nós estritamente maior que 4. Para três e quatro, é garantida uma falha de um nó.
  • Um nó deve sobreviver a uma falha de pelo menos dois discos em cada nó se houver pelo menos 5 discos em um nó.
  • O nível de redundância de unidades em um cluster típico (de 16 nós) não deve exceder 30%
  • O nível de disponibilidade de dados deve ser de pelo menos 99,999%

Isso influenciou bastante a arquitetura do produto existente.

Recursos de eliminação de codificação no armazenamento distribuído


A principal abordagem de tolerância a falhas RAIDIX RAIN é o uso de tecnologias exclusivas de Erasure Coding. As empresas da CE conhecidas por seu principal produto também são usadas em armazenamento distribuído, o que permite um desempenho comparável às configurações espelhadas. Isso se aplica a cargas aleatórias e seqüenciais. Ao mesmo tempo, é garantido um nível predeterminado de tolerância a falhas e a capacidade útil é significativamente aumentada, e as despesas gerais representam não mais que 30% da capacidade bruta de armazenamento.

É necessária uma menção separada do EC RAIDIX de alto desempenho em operações seqüenciais, principalmente ao usar discos SATA de grande capacidade.

Em geral, o RAIDIX RAIN oferece três opções de codificação para correção de erros:

  • para 3 nós, o uso do RAID 1 é ideal;
  • para 4 nós, uso ideal do RAID 5;
  • para um sub-cluster de armazenamento de 5 a 20 nós, a abordagem ideal é usar o RAID 6 da rede.


Fig. 3. Opções para codificação de correção de erros

Todas as opções assumem uma distribuição uniforme de dados entre todos os nós do cluster, com a adição de redundância na forma de somas de verificação (ou códigos de correção). Isso nos permite traçar paralelos com os códigos Reed-Solomon usados ​​em matrizes RAID padrão (RAID-6) e permitir o failover de até 2 operadoras. O Network RAID-6 funciona de maneira semelhante a um baseado em disco; no entanto, ele distribui dados entre os nós do cluster e permite o failover de 2 nós.

No RAID 6, quando 1-2 operadoras falham em um nó, elas são restauradas localmente sem usar somas de verificação distribuídas, minimizando a quantidade de dados que estão sendo recuperados, a carga da rede e a degradação geral do sistema.

Domínios de falha


O RAIN suporta o conceito de domínios de falha ou domínios de disponibilidade. Isso permite que você calcule a falha não apenas de nós individuais, mas também de racks ou cestos de servidores inteiros, cujos nós são agrupados logicamente em domínios de falha. Essa possibilidade é alcançada através da distribuição de dados para garantir sua tolerância a falhas não no nível de nós individuais, mas no nível do domínio, o que permitirá sobreviver à falha de todos os nós agrupados nele (por exemplo, um rack de servidor inteiro). Nesta abordagem, o cluster é dividido em subgrupos independentes (subclusters). O número de nós em um subgrupo não é superior a 20, o que fornece o requisito para tolerância a falhas e disponibilidade. Além disso, o número de subgrupos não é limitado.

Fig. 4. Domínios de falha

A falha de qualquer falha (discos, nós ou rede) é realizada automaticamente, sem parar o sistema.

Além disso, todos os dispositivos de cluster RAIDIX RAIN são protegidos contra falhas de energia, conectando-se a fontes de alimentação ininterrupta (UPS). Os dispositivos conectados ao mesmo no-break são chamados de grupo de falha de energia.

Recursos e funcionalidade


Considere os principais recursos funcionais do RAIDIX RAIN.
Tabela 1. Recursos básicos do RAIDIX RAIN
Características operacionaisValor
Tipos de nós suportadosPlataformas de servidor domésticas baseadas nos processadores Elbrus-4C
Servidores x86-64 padrão (perspectiva)
Tipos de mídia suportadosHDD SATA e SAS, SSD SATA e SAS, NVMe
Capacidade máxima de armazenamento16 EB
Tamanho máximo do cluster1.024 nós
Funcionalidade básicaExpansão de Volume Quente
Inclusão de nós quentes no cluster
Rebalanceamento de cluster
Failover sem tempo de inatividade
Tecnologias de resiliênciaFalha de nós, mídia, rede.
Codificação de apagamento, distribuída pelos nós do cluster: RAID da rede 0/1/5/6.
Códigos de correção no nível das operadoras de host local (RAID 6 local)
Domínios de falha

Como um recurso funcional importante do RAIDIX RAIN, é importante notar que serviços como inicialização, reconstrução e redistribuição (redimensionamento) ficam em segundo plano e podem ser definidos como um parâmetro de prioridade .

A configuração de prioridade permite que o usuário ajuste independentemente a carga no sistema, acelerando ou diminuindo o trabalho desses serviços. Por exemplo, a prioridade 0 significa que os serviços funcionam apenas quando não há carga nos aplicativos clientes.

Opções de dimensionamento


O processo de expansão de um cluster RAIDIX RAIN é o mais simples e automatizado possível, o sistema redistribui os dados independentemente no processo em segundo plano, levando em consideração a capacidade de novos nós, a carga se torna equilibrada e uniforme, o desempenho geral e a capacidade de armazenamento aumentam proporcionalmente. O processo de dimensionamento horizontal passa "quente" sem tempo de inatividade, não requer a interrupção de aplicativos e serviços.

Fig. 5. Esquema do processo de dimensionamento

Flexibilidade de arquitetura


RAIDIX RAIN é um produto de software e não se limita a uma plataforma de hardware específica - seu conceito sugere a capacidade de instalação em qualquer hardware de servidor compatível.

Com base nas especificidades de sua infraestrutura e aplicativos, cada cliente escolhe a melhor opção de implantação: dedicada ou hiperconvergente.

O suporte para vários tipos de mídia permite criar com base no RAIDIX RAIN com base no orçamento e nas tarefas a serem resolvidas:
1. armazenamento all-flash distribuído com alto desempenho sem precedentes e baixa latência garantida;
2. sistemas híbridos econômicos que satisfazem os tipos mais básicos de carga.

Indicadores de desempenho


Como conclusão, mostraremos algumas figuras obtidas como resultado do teste do RAIDIX RAIN na configuração de um cluster NVMe de 6 nós. Mais uma vez, observamos que em uma montagem (com servidores x86-64) o produto ainda está sendo finalizado e esses números não são finais.

Ambiente de teste


  • 6 nós em 2 discos NVMe HGST SN100
  • Cartão IB Família Mellanox MT27700 [ConnectX-4]
  • Kernel Linux 4.11.6-1.el7.elrepo.x86_64
  • MLNX_OFED_LINUX-4.3-1.0.1.0-rhel7.4-x86_64
  • Invasão local - invasão 0
  • Invasão externa - invasão 6
  • Referência para testar a FIO 3.1


UPD: a carga foi executada em blocos 4K, sequencial - 1M, profundidade da fila 32. A carga foi iniciada em todos os nós do cluster ao mesmo tempo e a tabela mostra o resultado total. Atrasos não excedem 1 ms (percentil 99,9).

Tabela 2. Resultados do Teste
Tipo de cargaValor
Leitura aleatória 100%4.098.000 IOps
Gravação aleatória 100%517.000 IOps
Leitura sequencial 100%33,8 GB / s
Gravação sequencial 100%12 GB / s
Leitura aleatória 70% / gravação aleatória 30%1.000.000 IOps / 530.000 IOps
Leitura aleatória 50% / gravação aleatória 50%530.000 IOps / 530.000 IOps
Leitura aleatória 30% / gravação aleatória 70%187.000 IOps / 438.000 IOps

Source: https://habr.com/ru/post/pt415961/


All Articles