
Eu criei um sistema de arquivos ZFS RAIDZ2/Raid 6, que pelo que acredito armazenará paridade em 2 discos.
root@zfs-demo:/data# zpool status
pool: data
state: ONLINE
config:
NAME STATE READ WRITE CKSUM
data ONLINE 0 0 0
raidz2-0 ONLINE 0 0 0
sdb ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
errors: No known data errors
Eu tenho um arquivo de 1GB
root@zfs-demo:/data# ls -alh
total 1023M
drwxr-xr-x 2 root root 3 Dec 17 18:22 .
drwxr-xr-x 19 root root 4.0K Dec 17 18:10 ..
-rw-r--r-- 1 root root 1.0G Dec 17 18:22 1GB.bin
Achei que os dois discos de paridade significariam que eu estava armazenando o arquivo em si + dois lotes de paridade = 3 GB de armazenamento no total para um arquivo de 1 GB, mas apenas 2 GB são alocados.
root@zfs-demo:/data# zpool list
NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
data 39.5G 2.01G 37.5G - - 0% 5% 1.00x ONLINE -
Responder1
Com dois dos quatro discos para redundância, você pode simplesmente duplicar os dados do usuário: dois discos armazenam os dados originais e o mesmo espaço é usado para dados de redundância nos outros dois discos. Na verdade, a paridade é distribuída em todos os discos usando distribuição, mas isso não altera o espaço ocupado.
Com a quantidade de discos você poderia usar RAID 1/espelhamento com a mesma eficiência de espaço, mas melhor eficiência de rendimento (e menos resiliência, como comentou Romeo Ninov). RAID-Z2 ou RAID 6 tornam-se mais eficientes com mais discos: com um total de dez discos, oito podem ser efetivamente usados para dados e ainda apenas dois são para redundância.
Responder2
A situação é (explicada para se ter uma ideia, muito simplificada) esta:
Suponhamos que o ZFS use blocos de 512 MB. Então você armazena no disco 1 512 MB (parte um do arquivo), no disco 2 você armazena os próximos 512 MB, na paridade 1 você armazena o próximo bloco de 512 MB (para que você possa restaurar o arquivo apenas com o disco 1 e a paridade 1 por exemplo), na paridade 2 você armazena outros 512 MB para poder restaurar o arquivo com disco 1 e paridade2.
Aqui está o que você precisa estar instalado e funcionando para obter o arquivo inteiro:
- d1+d2
- d1+p1
- d1+p2
- d2+p1
- d2+p2
- p1+p2
Se você tem, por exemplo, 5 discos (RAIDZ2) e tem bloco de 333 MB, você terá esses blocos no disco 1, 2, 3, paridade 1 e 2. No total, 1666 MB