Para todos vocês ... O ZFS sobre qualquer Raid é uma DOR total e é feito apenas por pessoas MAD! ... como usar o ZFS com memória não ECC.
Com amostras, você entenderá melhor:
- ZFS sobre Raid1, um disco mudou um pouco quando não foi desligado ... forçar tudo o que você sabe, o ZFS sofrerá algum dano ou não dependendo do disco lido (o controlador Raid não viu esse bit alterado e acha que os dois discos estão OK ) ... se a falha estiver na parte VDEV ... todo o ZPOOL perde todos os seus dados para sempre.
- No ZFS sobre Raid0, um disco mudou um pouco quando não foi desligado ... remova tudo o que você sabe (o controlador Raid não viu esse bit alterado e acha que os dois discos estão OK) ... O ZFS verá esse dano, mas se o fail está na parte VDEV ... o ZPOOL inteiro perde todos os seus dados para sempre.
Onde o ZFS é bom, é na detecção de bits que mudaram quando o disco estava sem energia (os controladores RAID não podem fazer isso), também quando algo muda sem ser solicitado, etc.
É o mesmo problema que quando um bit em um módulo RAM muda espontaneamente sem ser solicitado a ... se a memória é ECC, a memória se corrige; caso contrário, esses dados foram alterados, para que os dados sejam enviados para os discos modificados; forçar que a mudança não esteja na parte UDEV, se a falha estiver na parte VDEV ... todo o ZPOOL perde todos os seus dados para sempre.
Essa é uma fraqueza no ZFS ... VDEVs falha implica que todos os dados sejam perdidos para sempre.
A incursão por hardware e a incursão por software não podem detectar alterações espontâneas de bits, elas não possuem somas de verificação, o pior nos níveis Raid1 (mirros), lêem nem todas as partes e as comparam, supõem que todas as partes terão sempre os mesmos dados, SEMPRE (sempre digo) em voz alta) O Raid supõe que os dados não foram alterados por nenhuma outra coisa / maneira ... mas os discos (como memória) são propensos a alterações espontâneas de bits.
Nunca use um ZFS em uma RAM que não seja ECC e nunca use ZFS em discos invadidos, deixe o ZFS ver todos os discos, não adicione uma camada que possa arruinar seu VDEV e POOL.
Como simular tal falha ... desligue o PC, retire um disco desse Raid1 e altere apenas um bit ... reconecte e veja como o controlador Raid não pode saber que mudou ... ZFS pode porque todas as leituras são testadas contra a soma de verificação e, se não corresponder, leia de outra parte ... O Raid nunca lê novamente porque uma falha (exceto a leitura impossível do hardware falha) ... se o Raid puder ler, ele acha que os dados estão OK (mas não é nesses casos ) ... O Raid apenas tenta ler de outro disco se, onde estiver escrito, disser "ei, não consigo ler a partir daí, falha de hardware" ... O ZFS lerá de outro disco, se a soma de verificação não corresponder, como também onde está. diz "ei, eu não consigo ler a partir daí, falha de hardware".
Espero deixar bem claro ... O ZFS em qualquer nível do Raid é uma dor de cabeça e um risco total para os seus dados! bem como o ZFS em memórias não-ECC.
Mas o que ninguém diz (exceto eu) é:
- Não use discos com cache interno (não apenas os SHDD, também alguns que possuem cache de 8 Mb a 32 Mb, etc.) ... alguns deles usam memória não ECC para esse cache
- Não use o SATA NCQ (uma maneira de gravar na fila), pois isso pode arruinar o ZFS se houver falta de energia
Então, quais discos usar?
- Qualquer disco com bateria interna que garanta que toda a fila seja gravada no disco em casos de falha de energia e use memória ECC dentro dele (desculpe, existem muito poucos com tudo isso e são caros).
Mas, ei, a maioria das pessoas não sabe tudo isso e nunca teve um problema ... eu lhes digo: nossa, que sorte você tem, compre alguns bilhetes de loteria antes que a sorte desapareça.
Os riscos existem ... podem ocorrer conincidências com essas falhas ... então a melhor resposta é:
- Tente não colocar nenhuma camada entre o ZFS e onde os dados estão realmente armazenados (RAM, Raid, NCQ, cache interno do disco, etc.) ... o máximo que puder.
O que eu pessoalmente faço?
- Coloque mais camadas ... eu uso cada disco de 2,5 "SATA III 7200 rpm em um gabinete USB 3.1 Gen2 tipo C, conecto alguns gabinetes a um hub USB 3.1 Gen 2 tipo A que eu conecto ao PC; outro a outro hub que eu conecto a outra porta raiz no PC, etc.
- Para o sistema, eu uso conectores sata internos em um ZFS (nível Raid0) porque eu uso um sistema Linux imutável (como um LiveCD), cada um inicializa conteúdo idêntico em discos internos ... e eu tenho uma imagem Clone do sistema que posso restaurar (sistema inferior a 1GiB) ... também eu uso o truque para ter o sistema contido em um arquivo e uso a unidade mapeada de RAM onde eu o clono na inicialização, portanto, após a inicialização, todo o sistema roda na RAM ... colocando esse arquivo em um DVD eu também posso inicializar da mesma maneira, então, em caso de falha de discos internos, eu apenas inicializo com o DVD e o sistema está on-line novamente ... truque semelhante ao SystemRescueCD, mas um arquivo ISO um pouco mais complexo porque pode estar no ZFS interno ou apenas seja o DVD real e eu não quero duas versões diferentes.
Espero poder dar uma pequena luz sobre o ZFS contra o Raid, é realmente uma dor quando as coisas dão errado!