ZFS: Espelho vs. RAID-Z

14

Estou pensando em criar um servidor de arquivos usando o OpenSolaris e o ZFS que fornecerão dois serviços principais - seja um destino iSCSI para máquinas virtuais XenServer e seja um servidor de arquivos doméstico geral. O hardware que eu estou vendo inclui 2x controladores SATA de 4 portas, 2x pequenas unidades de inicialização (uma em cada controladora) e 4x grandes unidades para armazenamento. Isso permite uma porta livre por controlador para atualizar o array no futuro.

Onde estou um pouco confuso é como configurar as unidades de armazenamento. Para desempenho, o espelhamento parece ser rei. Estou tendo dificuldades para ver qual seria o benefício de usar o RAIDZ sobre o espelhamento. Com essa configuração, vejo duas opções - dois pools espelhados em uma faixa ou RAIDZ2. Ambos devem proteger contra duas falhas de unidade e / ou uma falha de controlador ... o único benefício do RAIDZ2 seria que qualquer uma das duas unidades poderia falhar. O armazenamento deve ter 50% da capacidade nos dois casos, mas o primeiro deve ter um desempenho muito melhor, certo?

A outra coisa que estou tentando entender é o benefício de matrizes espelhadas com mais de dois dispositivos. Para a integridade dos dados, qual seria o benefício de um RAIDZ em relação a um espelho de três vias? Como o ZFS mantém a integridade do arquivo, o que o RAIDZ traz para a mesa ... as verificações de integridade do ZFS não negam o valor da paridade do RAIDZ?

John Clayton
fonte

Respostas:

14

A resposta simples é que espelhar algo quase não requer poder de processamento - apenas grava no disco uma segunda vez. Para o RAID-Z2, é necessário calcular um bloco de paridade totalmente novo, que, apesar de pequeno, pode atolar a CPU quando você precisa gravar grandes quantidades de dados rapidamente.

O espelhamento é sempre a solução preferida para dados em alta velocidade, se é apenas em massa de armazenamento sem velocidades rápidas de gravação, RAID-Z2 é uma boa alternativa que não permite quaisquer duas unidades de morrer como você fazem alusão a.

A outra vantagem é que os pools espelhados podem ser expandidos com mais dispositivos espelhados - enquanto um RAID-Z2 não pode ser expandido - embora mais armazenamento RAID-Z2 possa ser adicionado ao pool, haverá dois pools de armazenamento RAID-Z2 concatenados (em efeito) ao invés de dividir igualmente entre todo o armazenamento e distribuído.

dotwaffle
fonte
Mas no ZFS, o que o bloco de paridade do RAIDZ oferece? Ele fornece integridade de dados adicional além do que o ZFS já fornece? Ou é simplesmente necessário que duas unidades morram? Se esse é o único benefício do que no cenário de três vias, não há benefício do RAIDZ sobre um espelho, certo?
9139 John Clayton
1
O RAID-Z permite que uma unidade morra - se você tem 10 unidades, obtém 9 unidades no valor de dados. Com o RAID-Z2, você pode deixar duas unidades morrerem e ter 8 unidades no valor de dados. Com o espelho, você pode ter metade das unidades que morrem, mas apenas uma de cada conjunto de duas. Suspeito que você já saiba disso, mas é esse caso adicional de 4 unidades que oferece duas soluções de falha de duas unidades - RAID-Z2 e modo Espelho. Não há permissões adicionais de integridade de dados que sejam "úteis" em um cenário normal.
dotwaffle
Então, para ficar claro, o benefício do RAIDZ sobre os espelhos é um pouco mais de proteção contra falhas de hardware? RAIDZ1 e um espelho com drives X são essencialmente equivalentes?
John Clayton
5
A paridade do RAID-Z é um superconjunto da soma de verificação incorporada do ZFS. Tudo o que a soma de verificação faz é garantir que os dados que estão sendo lidos nos discos estejam corretos. Ele foi projetado para ser uma verificação rápida com pouca sobrecarga. O que a paridade do RAID-Z oferece é a capacidade de reconstruir dados danificados em caso de perda de uma unidade (ou 2 para o RAID-Z2). Mas os cálculos para gerar esses dados de paridade são muito mais intensivos em CPU que uma simples soma de verificação de bloco e devem ser calculados em uma faixa inteira, mesmo se você estiver escrevendo apenas um bloco de 4KB.
afrazier
4
@ John Clayton: o nível de redundância depende de como você configura seu armazenamento. Você pode criar um espelho N-way, o que significa que sua capacidade de dados é do tamanho de uma unidade, mas você pode perder unidades N-1 sem perder nenhum dado. Por exemplo, se você possui um espelho de três vias, todas as três unidades contêm os mesmos dados e você pode perder duas unidades sem perder nenhum dado. A diferença é que adicionar unidades a um espelho N-way aumenta a redundância (mas sua capacidade é sempre do tamanho de 1 unidade), enquanto adicionar unidades ao raidz2 aumenta a capacidade (mas sua redundância é sempre 2 unidades).
rob
18

O RAID-Z elimina a maior parte da penalidade de gravação e dos problemas de integridade de dados dos quais os volumes RAID 5/6 sofrem, ao custo de algum tempo de CPU. Normalmente, os sistemas têm ciclos de CPU de sobra, portanto, gastar tempo na CPU para melhorar o desempenho de E / S e a integridade dos dados é um bom compromisso em relação ao espelhamento.

Aqui está uma explicação detalhada do RAID-Z que pode responder a outras perguntas.

Além disso, lembre-se de que o RAID é uma solução de tolerância a falhas . Você não implementa o RAID-Z2 para se proteger contra a perda de dados - executa backups ou replica para fazer isso. Você escolhe implementar RAID-Z2 vs. RAID-Z ou RAID-10 vs RAID-6 vs. RAID-5 para manter seus sistemas operacionais em caso de falha de hardware.

duffbeer703
fonte
1
Tenho que dar a resposta ao dotwaffle, pois ele me ajudou a entender a diferença técnica. Um ótimo conselho sobre o uso pretendido ... que realmente me fez parar e pensar.
22613 John Clayton
1
Uma coisa importante a se notar é que enquanto raidz eleminates os write questões penalidade, introduz leitura questões de penalização devido ao aumento da concorrência para cada operação de leitura
o wabbit