Por que o ZFS RAIDZ2 usa apenas 2 GB de dados quando eu crio um arquivo de 1 GB?

Por que o ZFS RAIDZ2 usa apenas 2 GB de dados quando eu crio um arquivo de 1 GB?

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

informação relacionada