
Neste artigo, vamos abordar diferentes formas de organizar arrays RAID e também apresentar um dos primeiros controladores de RAID de hardware com suporte para NVMe.
Toda a variedade de aplicações da tecnologia RAID encontra-se no segmento de servidores. No segmento de clientes, geralmente utiliza-se exclusivamente RAID0 ou RAID1 em dois discos.
Este artigo contará com uma breve visão geral da tecnologia RAID, um pequeno guia para criar arrays RAID utilizando três ferramentas diferentes e uma comparação de desempenho entre discos virtuais ao usar cada um dos métodos.
O que é RAID?
fornece uma definição abrangente da tecnologia RAID:
RAID (ingl. Redundant Array of Independent Disks — matriz redundante de discos independentes) — tecnologia de virtualização de dados para combinar vários dispositivos de disco físicos em um módulo lógico, aumentando a robustez contra falhas e o desempenho.
A configuração dos arrays de discos e as tecnologias utilizadas dependem do nível de RAID escolhido (nível RAID). Os níveis de RAID são padronizados na especificação . Ela descreve vários níveis de RAID, no entanto, os mais comuns são considerados RAID0, RAID1, RAID5 e RAID6.
RAID0, ou Stripes, é um nível de RAID que combina dois ou mais discos físicos em um único lógico. O volume do disco lógico é igual à soma dos volumes dos discos físicos que fazem parte do array. Neste nível de RAID, não há redundância e a falha de um disco pode levar à perda de todos os dados no disco virtual.
O nível RAID1, ou Mirror, cria cópias idênticas dos dados em dois ou mais discos. O volume do disco virtual, portanto, não excede o volume do menor dos discos físicos. Os dados no disco virtual RAID1 estarão disponíveis enquanto pelo menos um disco físico do array estiver funcionando. O uso de RAID1 adiciona redundância, mas é uma solução bastante cara, pois em arrays de dois ou mais discos, o volume acessível é apenas de um.
O nível RAID5 resolve o problema do custo. Para criar um array com o nível RAID5, são necessários pelo menos 3 discos, sendo que o array é resistente à falha de um disco. Os dados no RAID5 são armazenados em blocos com somas de verificação. Não há uma divisão estrita entre discos de dados e discos de somas de verificação. As somas de verificação no RAID5 são o resultado da operação XOR aplicada a N-1 blocos, cada um retirado do seu respectivo disco.
Embora os arrays RAID aumentem a redundância e ofereçam reserva, eles não são adequados para armazenamento de backups.
Após uma breve introdução aos tipos de arrays RAID, podemos passar para os dispositivos e programas que permitem montar e utilizar arrays de disco.
Tipos de controladores RAID
Existem duas maneiras de criar e utilizar arrays RAID: a hardware e a software. Vamos considerar as seguintes soluções:
- Linux Software RAID.
- Intel® Virtual RAID On CPU.
- LSI MegaRAID 9460-8i.
Vale destacar que a solução da Intel® opera no chipset, o que levanta a questão sobre ser uma solução de hardware ou software. Por exemplo, o hipervisor VMWare ESXi considera o VROC como software e não oferece suporte oficialmente.
Linux Software RAID
Arrays RAID de software no sistema operacional Linux são uma solução bastante comum tanto no segmento de clientes quanto no de servidores. Tudo o que é necessário para criar um array é a utilidade mdadm e alguns dispositivos de bloco. O único requisito que o Linux Software RAID impõe aos dispositivos utilizados é que eles sejam dispositivos de bloco acessíveis pelo sistema.
A ausência de custos com hardware e software é uma vantagem clara desse método. O Linux Software RAID organiza arrays de disco a custo do tempo de processamento. A lista de níveis RAID suportados e o estado dos arrays de disco atuais podem ser vistos no arquivo mdstat, que está localizado na raiz do procfs:
root@grindelwald:~# cat /proc/mdstat
Personalidades : [linear] [multipath] [raid0] [raid1] [raid10]
devices não utilizados:
O suporte a níveis RAID é adicionado carregando o módulo correspondente do kernel, por exemplo:
root@grindelwald:~# modprobe raid456
root@grindelwald:~# cat /proc/mdstat
Personalidades : [linear] [multipath] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
devices não utilizados:Todas as operações com arrays de disco são realizadas através da utilidade de linha de comando mdadm. A montagem do array de disco é realizada em um único comando:
mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/nvme1n1 /dev/nvme2n1Após executar este comando, um dispositivo em bloco /dev/md0 será criado, o que representa um disco virtual.
Intel® Virtual RAID On CPU
Intel® VROC Standard Hardware Key
Intel® Virtual RAID On CPU (VROC) é uma tecnologia híbrida de software e hardware para a criação de matrizes RAID com base em chipsets Intel®. Esta tecnologia está disponível principalmente para placas-mãe que suportam processadores Intel® Xeon® Scalable. Por padrão, o VROC não está disponível. Para ativá-lo, é necessário instalar uma chave de licença de hardware VROC.
A licença padrão do VROC permite criar matrizes de disco com níveis RAID 0, 1 e 10. A versão premium expande essa lista com suporte ao RAID5.
A tecnologia Intel® VROC em placas-mãe modernas funciona junto com o Intel® Volume Management Device (VMD), que oferece a possibilidade de substituição a quente para unidades com interface NVMe.
Intel® VROC com licença padrão A configuração das matrizes é feita através do Setup Utility ao iniciar o servidor. Na aba Avançado aparece a opção Intel® Virtual RAID on CPU, onde é possível configurar as matrizes de disco.
Criação de uma matriz RAID1 em duas unidades de armazenamento
A tecnologia Intel® VROC tem seus "trunfos na manga". As matrizes de disco criadas com o VROC são compatíveis com o Linux Software RAID. Isso significa que o estado das matrizes pode ser monitorado em /proc/mdstat, e a administração pode ser feita através do mdadm. Esta "característica" é oficialmente suportada pela Intel. Depois de montar o RAID1 no Setup Utility, é possível observar a sincronização das unidades no sistema operacional:
root@grindelwald:~# cat /proc/mdstat
Personalidades : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md126 : ativo raid1 nvme2n1[1] nvme1n1[0]
1855832064 blocos super externo:/md127/0 [2/2] [UU]
[>....................] resync = 1.3% (24207232/1855832064) finish=148.2min speed=205933K/sec
md127 : inativo nvme1n1[1](S) nvme2n1[0](S)
10402 blocos super externo:imsm
dispositivos não utilizados: <nenhum>Vale ressaltar que não é possível criar matrizes no VROC através do mdadm (as matrizes criadas serão Linux SW RAID), mas é possível trocar as unidades e desmontar as matrizes.
LSI MegaRAID 9460-8i
Aparência do controlador LSI MegaRAID 9460-8i
O controlador RAID é uma solução de hardware independente. O controlador funciona apenas com unidades conectadas diretamente a ele. Este controlador RAID suporta até 24 unidades com interface NVMe. A capacidade de suportar NVMe destaca este controlador em meio a muitos outros.
Menu principal do controlador de hardware
Ao usar o modo UEFI, as configurações do controlador são integradas na Setup Utility. Em comparação com o VROC, o menu do controlador de hardware parece significativamente mais complexo.
Criar RAID1 em dois discos
Explicar a configuração de arrays de discos em um controlador de hardware é um assunto bastante delicado e pode se tornar motivo para um artigo completo. Aqui, vamos nos limitar a criar RAID0 e RAID1 com as configurações padrão.
Os discos conectados ao controlador de hardware não são visíveis para o sistema operacional. Em vez disso, o controlador "mascara" todos os arrays RAID como dispositivos SAS. Dispositivos conectados ao controlador, mas que não fazem parte do array de discos, não estarão disponíveis para o SO.
root@grindelwald:~# smartctl -i /dev/sda
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.4.0-48-generic] (build local)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org
=== INÍCIO DA SEÇÃO DE INFORMAÇÕES ===
Fornecedor: AVAGO
Produto: MR9460-8i
Revisão: 5.14
Conformidade: SPC-3
Capacidade do Usuário: 1.999.844.147.200 bytes [1,99 TB]
Tamanho do bloco lógico: 512 bytes
Taxa de Rotação: Dispositivo de Estado Sólido
ID da Unidade Lógica: 0x000000000000000000000000000000
Número de série: 00000000000000000000000000000000
Tipo de dispositivo: disco
Hora Local: Dom Out 11 16:27:59 2020 MSK
Suporte SMART: Indisponível - o dispositivo não possui capacidade SMART.Apesar de serem mascarados como dispositivos SAS, os arrays com NVMe funcionarão na velocidade PCIe. No entanto, essa característica permite o boot com NVMe no Legacy.
Bancada de Testes
Cada um dos métodos de organização de arrays de discos possui suas próprias vantagens e desvantagens físicas. Mas existe alguma diferença de desempenho ao trabalhar com arrays de discos?
Para alcançar a máxima imparcialidade, todos os testes serão realizados no mesmo servidor. Sua configuração é:
- 2x Intel® Xeon® 6240;
- 12x DDR4-2666 16 GB;
- LSI MegaRAID 9460-8i;
- Intel® VROC Standard Hardware Key;
- 4x Intel® SSD DC P4510 U.2 2TB;
- 1x Samsung 970 EVO Plus M.2 500GB.
Os P4510 estão sendo testados, dos quais uma metade está conectada à placa-mãe e a outra ao controlador RAID. O sistema operacional Ubuntu 20.04 está instalado no M.2, e os testes serão realizados com a versão 3.16 do fio.
Testes
Primeiro, vamos verificar a latência ao trabalhar com o disco. O teste é executado em um único thread, com um tamanho de bloco de 4 KB. Cada teste dura 5 minutos. Antes do início, o agendador de E/S é configurado como none para o dispositivo de bloco correspondente. O comando fio é o seguinte:
fio --name=test --blocksize=4k --direct=1 --buffered=0 --ioengine=libaio --iodepth=1 --loops=1000 --runtime=300 --rw= --filename=Dos resultados do fio, obtemos clat 99,00%. Os resultados estão na tabela abaixo.
Leitura aleatória, µs
Gravação aleatória, µs
Disco
112
78
Linux SW RAID, RAID0
113
45
VROC, RAID0
112
46
LSI, RAID0
122
63
Linux SW RAID, RAID1
113
48
VROC, RAID1
113
45
LSI, RAID1
128
89
Além das latências no acesso aos dados, queremos ver o desempenho das unidades virtuais e comparar com o desempenho do disco físico. Comando para executar o fio:
fio --name=test --blocksize=4k --direct=1 --buffered=0 --ioengine=libaio --loops=1000 --runtime=300 --iodepth= --rw= --filename=O desempenho é medido em número de operações de entrada e saída. Os resultados estão na tabela abaixo.
Leitura aleatória 1 thread, IOPS
Gravação aleatória 1 thread, IOPS
Leitura aleatória 128 threads, IOPS
Gravação aleatória 128 threads, IOPS
Disco
11300
40700
453000
105000
Linux SW RAID, RAID0
11200
52000
429000
232000
VROC, RAID0
11200
52300
441000
162000
LSI, RAID0
10900
44200
311000
160000
Linux SW RAID, RAID1
10000
48600
395000
147000
VROC, RAID1
10000
54400
378000
244000
LSI, RAID1
11000
34300
229000
248000
É fácil notar que o uso de controladores de hardware resulta em aumento das latências e queda de desempenho em comparação com soluções de software.
Conclusão
Usar soluções de hardware para criar arranjos de discos com dois discos parece irracional. No entanto, existem tarefas em que o uso de controladores RAID é justificado. Com o surgimento de controladores que suportam a interface NVMe, os usuários têm a oportunidade de usar SSDs mais rápidos em seus projetos.
Apenas usuários registrados podem participar da pesquisa. , por favor.
Você usa soluções RAID?
29,6%Sim, soluções de hardware32
50,0%Sim, soluções de software54
16,7%Não18
3,7%RAID não é necessário4
Votaram 108 usuários. 14 usuários se abstiveram.
Fonte: habr.com
