O RAID-Z em uma única unidade de disco rígido é estúpido?

18

Obviamente, se a unidade inteira morrer, o RAID-Z em um único disco não ajudará. Mas e os outros tipos de erros?

Pela minha experiência, às vezes tenho um arquivo que não consigo ler. No Mac OS X, o sistema trava por um período de tempo e depois volta com um erro. Movo o arquivo para algum lugar fora do caminho e presumo que esse arquivo tenha um setor ou um bloco defeituoso ou talvez até uma faixa inteira incorreta.

Eu datava dos dias dos disquetes em que gerenciar manualmente as falhas de disco era apenas uma atividade comum. É claro que você substituiria o disquete com defeito o mais rápido possível, mas às vezes não era possível fazê-lo imediatamente, portanto a prática era encontrar a área defeituosa, alocá-la em um arquivo e nunca excluir esse arquivo.

A primeira pergunta é como os discos rígidos falham? Minhas suposições acima são válidas? É verdade que um bloco com defeito fica ruim, mas a unidade inteira ainda é utilizável? Se for esse o caso, parece que o RAID-Z poderia reparar o bloco defeituoso ou a área defeituosa do disco usando a paridade dos outros blocos (áreas).

O caso de uso é para backup. Se eu transferir os dados para uma unidade de 8 TB uma vez por semana, faria sentido considerá-la uma unidade de dados de 7 TB mais 1 TB de paridade, na esperança de que a paridade extra me ajude a me recuperar de podridão de bit, setores defeituosos ou outras falhas localizadas na unidade?

Se a teoria não é tecnicamente falha, o ZFS pode ser configurado para fazer isso?

Editar: eu vi a outra pergunta antes de postar esta pergunta. Dividir em partições separadas onde cada partição é agrupada é uma opção. Mas, em conceito, seria possível ter o mapa de blocos para as partições N entrelaçadas entre si, de modo que uma faixa, enquanto logicamente estivesse entre as partições N, estivesse fisicamente muito próximas. Esta foi a essência da minha pergunta "o ZFS pode ser configurado para fazer isso?" ou seja, apenas ZFS ... não ZFS com truques de partições.

pedz
fonte
7
Se você deseja redundância em disco único, considere criar arquivos par2 . Com o ZFS, você pode definir copies=2, mas terá uma penalidade de armazenamento de 50% fazendo isso. Além disso, não sou especialista em ZFS, mas minha intuição (que pode estar errada) me diz que o ZFS não ficaria satisfeito com a solução proposta. PAR2 é uma tecnologia madura e flexível. O uso não apenas atenderia aos seus requisitos de paridade, mas também permitiria definir a quantidade de paridade por arquivo, se desejado.
EEAA
As faixas nos HDDs são chamadas de cilindros (pois pode haver mais de um prato).
LawrenceC
1
Quando as unidades ficam mal, tende a ser um processo acelerado - a taxa de setores com problemas aumenta até que toda a unidade fique inutilizável. Se a unidade começar a ficar ruim e o RAID-Z estiver silenciosamente compensando você, você poderá ter um backup gravado com sucesso, mas quando se recuperar dele, será passado o ponto de usabilidade. Prefiro que meu dispositivo de backup falhe alto enquanto o faço o backup, assim que começar a ficar ruim, para que eu possa substituí-lo e continuar confiando que o que foi escrito com sucesso é legível com segurança.
Anthony X
@EEAA - soa como o que vou usar. Obrigado. E obrigado a todos que comentaram.
pedz

Respostas:

23

Como a paridade RAID-Z funciona com o bloco de paridade em outro dispositivo no pool, você precisa particionar seu dispositivo em partições de tamanho igual N + 1, N + 2 ou N + 3, em que N partições contêm os dados e 1/2 conter os bits de paridade.

No topo dessas partições, você criaria um zpool, com o RAID-Z selecionado, e criaria um sistema de arquivos no zpool.

Então, em teoria, isso funciona. Na prática, isso tornaria péssimo o desempenho do sistema de arquivos, pois os blocos consequentes nos arquivos estariam localizados em diferentes dispositivos ZPool, que estão em diferentes partições. Portanto, depois de ler um bloco, o HDD deve se mover para uma área diferente dos pratos, ler o próximo bloco, etc.

A resposta é: Sim, seria estúpido.

Tero Kilkanen
fonte
2
Que tal fazer isso em um SSD?
JFL
7
@JFL: NAND flash, que é usado nos SSD's, tem exatamente o problema que essas soluções tentam resolver, a saber, blocos individuais que estão morrendo. De fato, com o NAND é um problema tão grande que todos os controladores SSD o gerenciam explicitamente para você. Como resultado, a falha visível mais comum nos SSDs é a perda total de todo o dispositivo, provavelmente seguida de falha no dispositivo somente leitura. Nenhum dos problemas se beneficia da solução evitada aqui.
MSalters
6
Além disso, os SSDs reordenam os blocos. Uma das otimizações de nível de desgaste aplicadas é agrupar gravações. As gravações consecutivas em diferentes partições terminariam no mesmo bloco de apagamento; portanto, em caso de falha de um bloco de apagamento, você perde exatamente o benefício de armazenar os mesmos dados várias vezes.
Liori 23/05