Conjunto ZFS com diferentes tamanhos de unidade

9

Estou planejando configurar um pool do FreeNAS ZFS usando duas unidades de 2 TB e duas unidades de 1 TB. Eu gostaria de ter redundância de dados de alguma forma. Li este post que parece sugerir que minhas duas opções são perder 1 TB por unidade de 2 TB usando RAIDZ ou usar este comando (que dobra o espaço necessário para redundância de dados):

zfs set copies=2 poolname

Existe uma maneira melhor de lidar com isso e obter algo mais como o Beyond RAID da Drobo ou o XRAID da Netgear? Como alternativa, eu poderia particionar cada unidade de 2 TB em partições de 1 TB e colocar as duas partições no pool?

Timothy R. Butler
fonte

Respostas:

13

Existe uma maneira melhor de criar um único pool de 3 TB composto por dois espelhos.

zpool create test mirror disk1 disk2 mirror disk3 disk4

sendo disk1 e disk2 os discos de 1 TB e disk3 e disk4 os de 2 TB.

Editar:

Se você deseja maximizar o tamanho e não se importa muito com desempenho ou práticas recomendadas, é possível particionar todas as unidades com partições (ou fatias) de tamanho igual e criar um pool híbrido de 4 TB com um RAIDZ de 4 vdev e um espelho de 2 vdev.

zpool create -f test raidz d0p1 d1p1 d2p1 d3p1 mirror d0p2 d1p2

Observe a opção "-f" necessária para forçar o comando a aceitar a incompatibilidade no nível de replicação.

jlliagre
fonte
1
Obrigado pela informação. Então, isso seria como o espelhamento normal, onde a redundância "custa" 100% a mais, parece? Existe uma maneira de obter um "custo" de 50% semelhante ao RAID5 para paridade? Como é o desempenho dessa configuração versus o desempenho de uma instalação do ZRAID / RAID5 com 4 unidades de tamanho igual?
Timothy R. Butler
@ TimothyR.Butler Você não pode criar um espelho de 1 TB e aplicar o RAIDZ sobre os dois 2 TB e o espelho de 2 TB, mas simplesmente não funciona dessa maneira. Para usar o RAIDZ, é necessário ter unidades de tamanho igual (ou você abrirá espaço extra nas unidades maiores ou precisará começar a entrar em configurações não recomendadas). As duas configurações de espelho recomendadas por essas respostas são as melhores configurações recomendadas.
Chris S
Obrigado jilliagre e @chriss pelos comentários. Acho que posso comprar mais duas unidades e encerrar o dia. Esse segundo comando que o jilliagre acabou de adicionar é intrigante ... Eu estaria correto ao supor que o desempenho seria tão bom ou melhor do que qualquer coisa mencionada acima se eu fizesse um RAIDZ de 4x2TB?
Timothy R. Butler
@ TimothyR.Butler Um RAIDZ de 4x2 TB teria um pequeno impacto no desempenho em comparação com os espelhos duplos de 2x2 TB (RAID10 basicamente). Esses dois teriam o melhor desempenho de tudo o que discutimos aqui.
Chris S
4

Isso depende da quantidade de armazenamento de dados que você precisa. Você pode criar dois conjuntos de 1 TB e 2 TB cada, usando o RAID 1. Caso contrário, verifique se você pode adquirir discos do mesmo tamanho e tente o RAID 1 + 0 ou o RAIDZ.

ewwhite
fonte
Obrigado. Duas piscinas seriam melhores que uma com dois RAIDZs?
Timothy R. Butler
@ TimothyR.Butler Cada espelho de discos é um vdev no ZFS. Você não pode remover o vdevs de um pool do zfs; portanto, uma vez que o pool possui dois espelhos, ele deve sempre ter pelo menos esses dois (você pode adicionar mais, mas não remover). Se você sempre quis mudar para algo com menos vdevs, teria que destruir a piscina e começar do zero. Portanto, iniciando com dois zpools, você tem a flexibilidade de separá-los mais tarde, se quiser, mas perde a flexibilidade de compartilhar o espaço de armazenamento automaticamente (você precisaria colocar arquivos em um pool ou no outro conforme eles forem preenchidos).
Chris S
@whwhite, eu sei o que você quer dizer com "RAID 1 + 0", mas não há como explicitamente fazer isso no ZFS ... alguns podem ficar confusos com a diferença.
Chris S
2

No guia de administração do ZFS:

"Os dispositivos podem ser fatias individuais em um disco pré-formatado ou podem ser discos inteiros que o ZFS formata como uma única fatia grande".

Portanto, sim, você pode criar duas partições de 1 TB nessas unidades de 2 TB, usá-las para o RAID-Z vdev e o espaço restante para armazenamento não redundante.

No entanto, de acordo com o Guia de práticas recomendadas do ZFS, você pode enfrentar um desempenho degradado:

Para sistemas de produção, use discos inteiros em vez de fatias para conjuntos de armazenamentos pelos seguintes motivos:

  • Permite que o ZFS habilite o cache de gravação do disco para os discos que possuem caches de gravação. Se você estiver usando uma matriz RAID com um cache de gravação não volátil, isso é um problema e fatias menores, pois o vdevs ainda deve obter o benefício do cache de gravação da matriz.

  • Para o armazenamento conectado ao JBOD, com um cache de disco ativado, permite que algumas gravações síncronas sejam emitidas como várias gravações de disco seguidas por uma única liberação de cache, permitindo que o controlador de disco otimize o agendamento de E / S. Separadamente, para sistemas que não possuem suporte adequado para SATA NCQ ou SCSI TCQ, ter um cache de gravação ativado permite ao host emitir uma única operação de E / S de forma assíncrona a partir da E / S física.

  • O processo de recuperação da substituição de um disco com falha é mais complexo quando os discos contêm sistemas de arquivos ZFS e UFS em fatias.

Terlisimo
fonte
Trabalho maravilhoso de cortar e colar, mas tudo o que foi abordado nas outras duas respostas já.
Chris S