
Percebi que os guias sobre zfs+redundância+desempenho tendem a enfatizar o espelhamento como uma boa opção, mas as informações de administração do zfs tendem a fornecer relativamente poucas informações sobre o gerenciamento de uma configuração espelhada em comparação com uma baseada em raidz.
Estou planejando a migração do meu pool zfs de discos espelhados no Windows. Minha configuração preferida sempre foi puramente espelhada e, depois de analisar o zfs, gostaria de manter isso e usar espelhamento puro para redundância em vez de RAIDZ. Idealmente, cada unidade permanece logicamente legível isoladamente, ou seja, para 6 discos, os dados são efetivamente armazenados como (1+2+3 mirror) + (4+5+6 mirror)
em vez de arquivos ((1+2 stripe) x 3 mirror)
. Compreendo que isso não seria muito eficiente e envolveria vários pools/conjuntos de dados menores, mas, tendo perdido dados antes, tem vantagens que valorizo em relação à eficiência. Provavelmente também é muito mais rápido na leitura e na resilver, e muito mais flexível fisicamente.
Se eu quiser executar esse tipo de configuração, quais são as implicações do espelhamento dentro de um vdev versus espelhamento de vdevs, e se o armazenamento for estendido no futuro adicionando um conjunto de 3 novos discos, é melhor adicioná-los como um pool separado ou um vdev separado (ou 3 vdevs separados)?
Responder1
No ZFS vocêsempre tem redundância de qualquer tipo no nível vdev, você não pode tê-la no nível do pool.
Um vdev pode consistir em um único disco (1 disco), discos espelhados (2+ discos), faixa Z1 (2+ discos), faixa Z2 (3+ discos) ou faixa Z3 (4+ discos). Você pode então construir seus pools, onde cada pool é apoiado por mais de 1 vdevs, e você pode ter quantos pools desejar. Cada pool usa todos os vdevs de apoio sem qualquer redundância (que é gerenciada no nível do vdev) e perder um único vdev (não o disco) significa que todo o seu pool será perdido.
Portanto, se você dividir seus pools, basicamente terá vários arrays RAID1 próximos uns dos outros que são completamente separados - a perda de um pool não afeta os outros, mas você obtém desempenho inferior porque todos são RAID1 em vez de RAID10.
A expansão também tem essa desvantagem: se você aumentar seu pool único, ele ficará mais rápido (pelo menos para dados recém-gravados, não há reequilíbrio automático em vigor), mas sua chance de falha também aumenta.
Além disso, há a questão se você deseja ter espelhos de 2 ou 3 vias para seus vdevs - 3 vias é muito mais seguro (a tal ponto que 4 vias é quase inútil), mas mais caro (precisando de mais discos ou ter menos espaço). O 3-way também é um pouco mais rápido para leituras, mas a velocidade de gravação não muda.
Portanto, é um compromisso entre custo, desempenho, segurança e facilidade de uso.