Como o RAID é implementado no nível * disk *?

5

Se os discos tiverem setores físicos de 512 bytes e você tiver 10 discos usando RAID 50 com um tamanho de faixa de 1 MB, como isso funciona no nível do disco ?

Corrija-me se estiver errado, mas, conceitualmente, haveria dois trechos cada, consistindo em uma matriz RAID-5 de 5 discos, um espelhado para o outro. Portanto, uma "faixa" consistiria em blocos de dados de 4x256 KB, além de um único 256 KB de dados de paridade por faixa? ou uma "faixa" inclui a paridade?

E se você considerar um array RAID 10 de 12 discos? Haveria 6 pares de discos espelhados, com faixas sobre esses espelhos. Portanto, para um tamanho de faixa de 1 MB, a faixa seria dividida por 6, para 174.762,666 bytes por disco, o que resulta em 341.333 setores físicos por faixa. Isso é realmente 342 setores físicos por faixa?

Para aqueles que se perguntam por que estou perguntando; Eu estou tentando determinar o número mais eficiente de discos em relação ao tipo de RAID, com o melhor tamanho de faixa.

Além disso, eu vi o link antes de fazer esta pergunta. De fato, trabalhei muito para encontrar detalhes de design de baixo nível em uma grande variedade de sites de fornecedores SCSI / SAS / RAID / SAN, e não vi nada que falasse sobre o formato real de faixas em disco. Stripes são apenas discutidos em um nível altamente conceitual, o que é bom, mas não responde realmente à pergunta.

    
por Max Vernon 17.05.2016 / 22:10

2 respostas

6

Você encontrará todos os detalhes relevantes aqui .

Basicamente, todas as suposições estão corretas: o RAID 50 é um striping (RAID 0) de arrays RAID 5, enquanto o RAID 10 é um striping de arrays RAID 1.

Como isso é fisicamente implementado, no entanto, depende strongmente do controlador de disco; às vezes, o espaço adicional é usado para informações internas, então você não pode saber exatamente como, quando e onde cada byte é usado, a menos que você pergunte ao fornecedor do controlador.

Sobre o tamanho da faixa: isso quase nunca é relevante, a menos que você esteja no ajuste de desempenho pesado ; neste caso, pode ter impacto, mas depende (novamente) do controlador e dos discos que você está usando, e também do sistema operacional, do sistema de arquivos e da carga real de E / S.

Como regra geral, é recomendável que o tamanho da faixa da matriz RAID corresponda ao tamanho do cluster do sistema de arquivos com o qual o volume que reside nessa matriz será formatado; e esse tamanho deve ser escolhido dependendo da carga de E / S que o volume deve suportar (muitos arquivos pequenos ou muitos arquivos grandes?); mas esta é apenas uma sugestão geral; e, novamente, muitos outros parâmetros podem influenciar o desempenho de E / S.

Além disso, lembre-se de que você pode ter vários volumes na mesma matriz RAID (ainda mais se estiver trabalhando com uma SAN em vez de local), cada um deles potencialmente usando um tamanho de cluster diferente e lidando com um diferente I / O load.

Se você realmente deseja ajustar seu armazenamento a esse nível, não apenas você precisará controlar completamente todos os elementos, desde os discos físicos até os aplicativo real armazenando dados neles, mas você também terá que analisá-los cuidadosamente e personalizar muitos parâmetros, dos quais o tamanho da distribuição é apenas um entre muitos.

Um estudo de caso simples: o Exchange grava os logs de transações do banco de dados como arquivos de 1 MB, sequencialmente; eles são principalmente escritos e raramente lidos sob operação normal; eles podem ocupar algum espaço, mas nunca muito se forem feitos backups regulares, porque eles ficam truncados (isto é, os mais antigos são excluídos) toda vez que um backup completo do banco de dados é concluído.

A melhor abordagem possível para armazenar esse tipo de dado seria usar um array RAID 1 de dois discos, com um tamanho de faixa de 1 MB, cache de gravação com backup de bateria, um único volume formatado com o sistema de arquivos NTFS e Tamanho de cluster de 1 MB; Ah, e é claro que você terá que armazenar somente os logs de transação para um único banco de dados neste volume; Se você tiver mais bancos de dados, precisará usar volumes e matrizes de disco diferentes ou perderá todos os benefícios da E / S sequencial. (BTW, os dados reais do banco de dados devem ir para um lugar totalmente diferente, não apenas para desempenho, mas principalmente para segurança de dados; consulte a documentação do Exchange se quiser mais detalhes; mas os pontos básicos são: / O e você absolutamente não quer perder ambos o banco de dados e os logs de transações ao mesmo tempo.)

Como você pode ver, esse tipo de avaliação é muito dependente da carga de E / S esperada e não seria adequado para nada além de armazenar transações do Exchange registra em uma configuração muito específica; provavelmente irá dificultar qualquer outra carga de trabalho.

O ajuste fino de armazenamento é uma arte e requer muita análise e experiência para que seja correto.

    
por 20.05.2016 / 22:12
1

Massimo fez um resumo muito bom e, como ele diz, depende muito do tipo de carga de trabalho que você está executando.

Além disso, os controladores e seu firmware desempenham um papel importante. Por exemplo, em casa eu tenho um HBA SAS / SATA de porta LSI 8 que pode ser executado para ser executado como um controlador RAID. O mesmo hardware é identificado pela Dell, mas o firmware configura uma profundidade de fila diferente para suportar discos Dell específicos. Meu firmware OEM supera o firmware da Dell em cerca de 30% ao usar discos de consumo 5 x 4 TB na minha máquina doméstica. Se eu piscar a placa Dell com firmware OEM, o desempenho é idêntico.

ConcernedOfTunbridgeWells observa que você está girando o disco ...

Se você conseguir executar essa carga de trabalho no Linux / Unix, considere um dos sistemas de arquivos que permite o armazenamento em cache SSD dos discos magnéticos.

Em casa, executo o ZFS no Linux e é extremamente confiável devido à sua paridade flexível e à verificação contínua de consistência baseada em hash. Ele suporta nativamente cache SSD e é muito rápido com apenas uma modesta unidade de cache SSD. O array ZFS com LSI no modo HBA é mais rápido do que usar o LSI como um array de hardware. A carga de trabalho é a virtualização Openstack (sua máquina de laboratório).

Melhor ainda é apenas usar um SAN adequado ou mesmo um NAS que saiba como adaptar os controladores, o cache, o striping, etc. para cargas de trabalho específicas.

    
por 25.05.2016 / 17:19

Tags