it-swarm.dev

Quantas unidades eu preciso para o ZFS RAID-Z2?

De quanto armazenamento eu precisaria se quisesse usar o RAID-Z2? Estou construindo um servidor doméstico que executará o FreeNAS com um sistema de arquivos ZFS e atualmente planejo instalar 3 discos rígidos de 3 TB.

  • O RAID-Z2 funciona nisso?
  • Preciso fazer o downgrade para RAID-Z1?
  • Quantas unidades são necessárias para o RAID-Z2?
6
user424484

O RAID-Z2 funciona utilizando as unidades fornecidas no vdev e usando duas delas para armazenar dados redundantes para fins de recuperação, caso algo dê errado.

Portanto, o número mínimo absoluto de unidades em um RAID-Z2 vdev são as duas redundantes mais uma, que funciona em três unidades.

No entanto, fazendo dessa maneira, você:

  • estão obtendo a capacidade efetiva de armazenamento de apenas uma das unidades
  • pode perder duas das três unidades envolvidas sem perda de dados (no caso geral, você pode sobreviver à perda de duas unidades em uma unidade N RAID-Z2 vdev)
  • estão forçando o sistema a calcular dados de paridade para RAID-Z2

Se você deseja que um vdev consite três unidades, ou se você tem três e deseja redundância em duas unidades, provavelmente é melhor configurá-las como um espelho. Dessa forma, você:

  • estão obtendo a capacidade efetiva de armazenamento de apenas uma das unidades (independentemente do número de dispositivos espelho)
  • pode sobreviver à perda de qualquer uma das três unidades envolvidas sem perda de dados (no caso geral, você pode sobreviver à perda de qualquer unidade N-1 em um espelho de unidade N vdev)
  • estão evitando cálculos de dados de paridade, porque os espelhos são cópias com bits idênticos; gravar os mesmos dados em vários discos é muito mais barato do que calcular dados de paridade separados e gravá-los em disco

O número mínimo de unidades em que o RAID-Z2 faz sentido é quatro, o que fornece a capacidade efetiva de armazenamento de duas unidades e permite a perda de qualquer duas das unidades. Isso é vantajoso ao usar as mesmas quatro unidades em uma configuração de espelho 2x2, porque se você tiver dois vdevs espelhados de duas unidades cada e perder algumas combinações de duas unidades, esse vdev estará morto e levará o pool com ele em sua morte ardente. Em um pool de vdev de espelho 2x2, pelo menos uma das unidades em cada par de espelhos deve permanecer funcional para que o pool permaneça disponível. No entanto, o espelho pode muito bem ter um melhor desempenho. Como sempre, é um trade-off entre diferentes opções, e uma parte da descrição do trabalho do administrador do sistema é fazer esses trade-offs adequadamente para cada situação específica.

Portanto, embora o RAID-Z2 possa tecnicamente funcionar com a configuração que você descreve, ele não oferece vantagens e possui algumas desvantagens em comparação com uma configuração simples de espelho de três vias.

Seria diferente se o ZFS nos permitisse alterar dinamicamente o nível de redundância ou aumentar o número de dispositivos em um RAID-Zn vdev , mas isso não acontece. A única maneira de aumentar um pool é adicionar mais vdevs ou aumentar o tamanho dos dispositivos existentes, não adicionando dispositivos a um vdev existente. (Você pode adicionar e remover dispositivos em um vdev espelho, mas isso altera apenas a quantidade de redundância, não a capacidade de armazenamento utilizável.)

Você também pode configurar as três unidades como um RAID-Z (1) vdev, que lhe permitirá sobreviver à perda de qualquer uma das unidades antes que seus dados sejam em risco, se algo der errado, reduza a carga de trabalho da CPU em comparação com o RAID-Z2 (porque os cálculos de paridade RAID-Z1 são menos intensivos em computação) e ofereça a capacidade de armazenamento efetiva de duas das unidades combinadas.

Sempre lembre-se de que, se algo der errado, um resilver completo do ZFS é um processo árduo para os discos restantes e não é inédito em outro disco para desenvolver problemas ou até morrer sob o estresse. Por esse motivo, especialmente com unidades de rotação dos tamanhos comuns hoje em dia, redundância dupla deve ser a opção padrão com redundância tripla, se você for realmente paranóico. Redundância única deve ser considerada apenas para dados menos importantes, nos quais o tempo de inatividade pode ser tolerado . Redundância única pode ser aceitável com um pool suportado por SSD, no entanto.

Daí a minha recomendação: Se você deseja três unidades ZFS e deseja redundância, configure-as como um espelho de três vias vdev. Se você deseja RAID-Z2 , use no mínimo quatro unidades, mas lembre-se de que você bloqueia o número de unidades no vdev no momento da criação do vdev. Atualmente, a única maneira de aumentar uma O pool do ZFS é adicionando vdevs adicionais ou aumentando o tamanho dos dispositivos que compõem um vdev ou criando um novo pool e transferindo os dados. Você não pode aumentar a capacidade de armazenamento do pool adicionando dispositivos a um vdev existente.

Você também precisa certifique-se de manter os backups . Isso é duplamente importante com o ZFS, porque a recuperação do ZFS após uma falha real que trazer o pool abaixo do limite de redundância é muito difícil . O ZFS possui um formato em disco muito complexo que eu não conheço nenhum entendimento comum de software de recuperação de dados disponível no mercado, portanto, mesmo que você possa ler a maioria dos dados dos discos, se o ZFS não conseguir descobrir isso, você pode estar sem sorte a menos que esteja disposto a gastar dezenas de milhares de dólares com o problema. Os backups são mais baratos.

Como alternativa ao espelho de três vias, você também pode executar um espelho de duas vias com um sobressalente, mas na maioria das vezes e certamente na situação que você descreve, não há vantagem e alguma desvantagem nisso). .

Como um aparte, relacionado ao problema de recuperação, você deve considerar muito usando ECC RAM em qualquer sistema que execute um sistema de arquivos auto-reparável de soma de verificação, incluindo o ZFS. Outros concordam.

Mostrando que o RAID-Z2 com três dispositivos é possível (esse é o ZFS On Linux 0.6.4). Observe que, após a remoção forçada de dois dos três arquivos de backup, "existem réplicas suficientes para o pool continuar funcionando em um estado degradado". e o vdev é DEGRADED, não FAULTED.

# truncate -s 1G /root/d1 /root/d2 /root/d3
# zpool create tank raidz2 /root/d1 /root/d2 /root/d3
# zpool status tank
  pool: tank
 state: ONLINE
  scan: none requested
config:

        NAME          STATE     READ WRITE CKSUM
        tank          ONLINE       0     0     0
          raidz2-0    ONLINE       0     0     0
            /root/d1  ONLINE       0     0     0
            /root/d2  ONLINE       0     0     0
            /root/d3  ONLINE       0     0     0

errors: No known data errors
# zpool export tank
# rm /root/d1 /root/d2
# zpool import tank -d /root
# zpool scrub tank
# zpool status tank
  pool: tank
 state: DEGRADED
status: One or more devices could not be opened.  Sufficient replicas exist for
        the pool to continue functioning in a degraded state.
action: Attach the missing device and online it using 'zpool online'.
   see: http://zfsonlinux.org/msg/ZFS-8000-2Q
  scan: scrub repaired 0 in 0h0m with 0 errors on Tue Mar 29 11:00:23 2016
config:

        NAME                      STATE     READ WRITE CKSUM
        tank                      DEGRADED     0     0     0
          raidz2-0                DEGRADED     0     0     0
            18130982121682915530  UNAVAIL      0     0     0  was /root/d1
            18289483070703159278  UNAVAIL      0     0     0  was /root/d2
            /root/d3              ONLINE       0     0     0

errors: No known data errors
# 
10
a CVn