Christoph Hellwig, mantenedor dos subsistemas DMA, KVM, Slab Allocator e da arquitetura PowerPC no kernel do Linux, apresentou o primeiro lançamento público do XRAID, uma implementação de RAID declusterizado com controle de paridade integrado ao sistema de arquivos XFS. O projeto foi criado com o objetivo de adicionar a capacidade de usar RAID em dispositivos de armazenamento zonificados, como discos SMR (Shingled Magnetic Recording), e fornecer uma implementação de RAID de alto desempenho para manter a integridade dos dados. Além dos dispositivos zonificados, o XRAID também funciona em discos rígidos comuns e SSDs, exibindo um ganho significativo de desempenho nos últimos em comparação ao mdraid (até 20 vezes durante gravações).
Para distribuir informações entre os dispositivos no XRAID, aplica-se um controle de paridade declusterizado, semelhante ao dRAID do OpenZFS, onde dispositivos dedicados para recuperação a quente (hot spare) não são alocados; em vez disso, os dados, informações de controle de paridade e espaço livre (spare space) são distribuídos uniformemente por todos os dispositivos. O processo de leitura, gravação e recuperação em caso de falhas abrange todos os dispositivos disponíveis, aumentando a largura de banda, reduzindo a carga em discos individuais e evitando quedas significativas de desempenho durante falhas, além de acelerar substancialmente o processo de reconstrução do array após a adição ou substituição de dispositivos.
RAID declusterizados também facilitam a criação de arrays redundantes com um número muito grande de discos. Durante a recuperação de falhas, o XRAID determina dinamicamente a ordem de reconstrução dos dispositivos, priorizando zonas com maior perda de informações redundantes e reconstruindo áreas com dados antes das zonas com informações de controle de paridade.
O XRAID foi inicialmente desenvolvido tendo em mente a possibilidade de uso com dispositivos zonificados, onde o espaço de armazenamento é dividido em zonas que constituem grupos de blocos ou setores. Em tais dispositivos, é permitida apenas a adição sequencial de dados, com a atualização de todo o grupo de blocos. Por exemplo, o zoneamento da gravação é aplicado em discos SMR (Shingled Magnetic Recording), onde a largura da trilha é menor que a largura da cabeça magnética, e a gravação é realizada com sobreposição parcial da trilha vizinha, ou seja, qualquer regravação requer a necessidade de regravar todo o grupo de trilhas.
Para suportar dispositivos zonificados, o XRAID utiliza um alocador de blocos implementado no XFS e no núcleo do Linux, que usa o subvolume RT (RealTime) para organizar o armazenamento separado de dados e metadados (nas zonas de gravação sequencial, apenas o conteúdo dos arquivos é armazenado, enquanto os metadados do sistema de arquivos são colocados em zonas normais ou em SSDs adicionais).
No XRAID, os mecanismos de controle de paridade RAID são aplicados apenas ao conteúdo dos arquivos, sendo a redundância para os metadados implementada através da utilização de drivers já existentes no núcleo do Linux, por exemplo, via espelhamento com MD RAID, o que é mais eficiente para pequenos objetos que são atualizados in-loco. A implementação do RAID é integrada no XFS até os manipuladores de entrada/saída zonificados, que representam zonas físicas dos dispositivos subjacentes na forma de zonas lógicas, semelhante a um dispositivo de bloco em camadas.
O trabalho no XRAID está em andamento há um ano e meio, e embora a implementação ainda não esteja pronta para integração no núcleo principal, já está disponível para teste por um público amplo. A implementação proposta suporta de 0 a 2 níveis de paridade (o código para suportar 3 ou mais níveis está em desenvolvimento). Para gerenciar o XRAID, uma nova ferramenta chamada 'xraid' foi adicionada ao conjunto de ferramentas xfsprogs e o suporte ao XRAID foi implementado no mkfs. Além disso, a ferramenta para inspecionar dispositivos zonificados, Zonar, recebeu capacidades para visualizar o mapeamento de zonas lógicas em zonas físicas.
Resultados do teste de desempenho do XRAID foram publicados, comparando-o ao mdraid e btrfs, realizados para o array XRAID na configuração com dois SSDs WD DC-SN650 para metadados (espelho baseado em mdraid), seis discos SATA WD DC-HC590 de 26 TB e 6-21 discos WD DC-HC690 de 30 TB (SMR).





Também foram realizados testes do XRAID em SSDs não particionados, configurados com um Samsung PM9D3a de 4 TiB para metadados e cinco Samsung PM9D3a de 4 Tib para RAID (4 + 1).




Fonte: opennet.ru
