O RAIDZ1 é pior do que nenhuma tolerância a falhas para uma matriz de unidades de 4 TB?

1

Em esta pergunta , Michael Kjörling e user121391 parecem argumentar que o RAIDZ1 (equivalente a ZFS RAID5) não é confiável e eu deveria usar o RAIDZ2 (equivalente a RAID6 do ZFS). user121391 comenta lá:

While rebuilding a failed drive, all data from all drives must be read. This increases the stress on the disks (especially if they are mostly idle normally) and therefore the chance of another drive failing. Additionally, while reading all data you may get an URE from one of the disks with no second disk to compensate, which means files can be damaged/lost. Third, the bigger your disks are, the longer your window of vulnerability becomes, not just for those problems, but any problems that may occur on the disks or system (power outage etc.).

Para meu caso de uso específico (um servidor de mídia doméstico), estou procurando obter alguma tolerância a falhas com gasto mínimo em termos de armazenamento redundante. Será feito backup de todos os dados irrecuperáveis, mas será muito inconveniente se uma unidade falhar, pois eu teria que copiar um grande número de DVDs e livros novamente, baixar grandes quantidades de músicas de vários serviços para reconstrua o servidor de mídia.

A minha pergunta é - é um RAIDZ1 uma melhoria incremental na ausência de tolerância a falhas, dado que não estou disposto a sacrificar mais do que 25-33% do tamanho total do conjunto a serviço da tolerância a falhas, ou aumentará dramaticamente o É provável que, se um disco falhar, o conjunto inteiro falhe completamente, causando perda total de dados.

Se isso ajudar, a maioria desses dados não será alterada (eles são arquivos de mídia), e tudo que não for teoricamente recuperável será armazenado em backup.

    
por Paul 29.11.2016 / 16:11

2 respostas

1

Acho que foi um mal-entendido no antigo segmento. Eu estava comparando a chance de falha de dois discos seguidos ao usar raid de paridade Z1 ou sem RAID (como você declarou nos comentários do outro thread). Aos meus olhos, nunca foi sobre Z1 vs. pool listrado de vdevs básicos, porque esse jogo está essencialmente acabado após a primeira falha, então Z1 é melhor.

Mas se você apenas comparar vários pools independentes contra um único pool com um único Z1 vdev, o problema de aumento de carga enquanto recalcula as informações de paridade persiste.

Na comparação de Z1 vs Z2, sobre a qual a resposta de Michael era principalmente, os outros dois pontos se aplicam. Eu deveria ter sido mais claramente nos comentários, mas eles são limitados no espaço, infelizmente. Espero que esta resposta limpe um pouco disso.

I thought the same thing, but I didn't realize that a URE isn't just a bit flip, it spoils the entire pool.

Se simplificarmos tudo, você terá seu disco com o chip controlador na parte inferior e seu hardware (controlador RAID) ou software (por exemplo, ZFS) na parte superior.

Se algum erro ocorrer no hardware e um setor não puder ser lido, o chip primeiro tentará corrigi-lo sozinho, se possível (por exemplo, lendo o setor do problema várias vezes). Se ainda assim não conseguir fazer nada, desistirá (em discos normais, isso pode levar minutos e parar o sistema completo que aguarda a mensagem "bem-sucedida" ou "falha" em relação à operação de E / S que está pendente).

Alguns discos têm um recurso chamado TLER (time-limit-error recovery), que é um tempo limite que limita esse tempo de correção de erros a 6-9 segundos, porque tradicionalmente, a maioria dos controladores RAID de hardware deixavam o disco inteiro após 9 segundos. um único setor defeituoso não deve deixar todo o disco indisponível, mas ser corrigido por um setor "bom" nos outros discos (um recurso em que um único disco em um sistema de desktop não poderia depender, portanto, um tempo limite seria preferível).

Agora, vamos ver o lado do software: se você configurar seu controlador RAID ou sistema de arquivos ZFS com redundância, por exemplo, usando discos espelhados ou um espelho vdev como base para seu pool, seu URE poderá ser corrigido. Se você não usar redundância, os dados nesse setor desaparecerão, o que pode ser um dado de seu interesse ou apenas dados temporais antigos aleatórios ou nada, dependendo da sua sorte. O mesmo se aplica ao bit flips, embora a chance de eles acontecerem pareça ser mais dependente de efeitos externos (como a radiação cósmica).

Since RAID0 is not subject to UREs, the question is "what is more likely, a URE in RAIDZ or a disk failure in RAID0?"

Eu não aceitei esta resposta porque eu não acho que ela explica adequadamente os pontos relevantes, mas eu estava planejando criar minha própria resposta assim que eu entendi porque os UREs destroem toda a piscina, se ninguém mais chegar a ela primeiro .

Sugiro que você leia uma explicação básica do layout do pool do ZFS. Para resumir os bits mais importantes:

  • Você pode criar dispositivos virtuais (vdevs) a partir de discos, partições ou arquivos. Cada vdev pode ser criado com redundância diferente: básico (sem redundância), espelhado (1 a N discos podem falhar), paridade RAID Z1 / Z2 / Z3 (1/2/3 discos podem falhar). Toda a redundância funciona no nível vdev.
  • Você cria pools de armazenamento a partir de um ou mais vdevs. Eles são sempre distribuídos, portanto, a perda de um único vdev significa a perda de todo o conjunto.
  • Você pode ter qualquer número de pools, que são independentes. Se um pool for perdido, os outros pools continuarão funcionando.

Portanto, você pode raciocinar o seguinte:

  • Se possível, prefira Z2 em vez de Z1 devido ao aumento de carga e à grande janela de oportunidade (negativa) ao recriar unidades grandes (sendo que a grande é mais de 1 TB aproximadamente)
  • Se tiver que escolher entre Z1 e vários vdevs básicos, prefira Z1 devido à correção de erro de bit que não é possível com vdevs básicos
  • Se você puder aceitar a perda parcial do pool, segmente seu pool em vários pools menores respaldados por um único vdev cada, para obter informações de soma de verificação e tempos de reconstrução mais rápidos em falhas fatais

Em qualquer um dos casos acima, você precisa ter um backup. Se você não pode ou não quer ter nenhum backup, é sobre o que você está mais confortável para perder - algumas partes do pool com maior probabilidade ou tudo com menor probabilidade. Eu pessoalmente escolheria a primeira opção, mas você pode decidir o contrário.

    
por 01.12.2016 / 09:45
1

O que está implícito na resposta citada é que, com o aumento da capacidade de armazenamento, a chance de falha aumenta de acordo, não apenas para a operação de reconstrução, mas também para a atividade normal. Então, estatisticamente falando, o RAIDZ1 não é mais tolerante a falhas do que o Raid 0 ao falar sobre os drives modernos de 4TB, embora o case seja feito prima facie como é.

Assim, alguns argumentam que o RAIDZ1 não é, na verdade, um aumento na proteção contra perda de dados para discos rígidos de grande capacidade. Isso tem menos a ver com falha mecânica do (s) drive (s), ou pelo menos não com falha crítica. URE é, para simplificar (simplesmente simplificando) a falta de leitura. Seja devido à leitura prolongada do setor defeituoso da unidade, do esgotamento do disco de setores sobressalentes - ou de qualquer outra causa - não é realmente um problema. Isso vai acontecer, gostemos ou não. Vamos então pegar o exemplo do setor defeituoso - Normalmente isso é tratado internamente pela unidade, mas se houver o suficiente deles ou a unidade levará um tempo para corrigir que o controlador RAIDZ pode interpretar o atraso como falha da unidade e ejetar a unidade. Agora, vamos imaginar que é o segundo disco rígido da piscina, e aconteceu durante a reconstrução ... A única solução viável é eliminar o array desses erros - se detectado cedo, o erro será apenas um arroto - o pool recuperará os dados facilmente. Mas isso significa colocar uma carga bastante grande nos drives, o que aumenta drasticamente a chance estatística de URE (lembre-se: age, grava, volume de dados, todos aumentam bastante, sem aumentar as leituras por ordem de magnitude das operações normais; para cada unidade separadamente).

Assim, a resposta à sua pergunta ( is a RAIDZ1 an incremental improvement on no fault tolerance ) é: não realmente. Se usarmos a lógica da cotação, você terá 50% de chance (eu acho) de falhas de disco suficientes para que os dados fiquem irrecuperáveis nos primeiros dois anos da operação desses discos.

É por isso que quando em nossa empresa nos deparamos com o dilema de disponibilidade de servidor ou capacidade de armazenamento, conseguimos reduzir o uso de RAID6 em SSDs. Deve ser o suficiente por alguns anos e, provavelmente, atualizar, se necessário.

    
por 29.11.2016 / 16:45

Tags