• Tecnologia
  • Equipamento elétrico
  • Indústria de Materiais
  • Vida digital
  • política de Privacidade
  • Ó nome
Localização: Casa / Tecnologia / Fãs do ZFS, alegrem-se - a expansão RAIDz será uma coisa muito em breve

Fãs do ZFS, alegrem-se - a expansão RAIDz será uma coisa muito em breve

techserving |
3476

Prolongar

/

O OpenZFS suporta muitas topologias de disco complexas, mas "pilha em espiral sobre uma mesa" ainda não é uma delas.

Jim Salter

comentários do leitor

102

com 48 pôsteres participantes, incluindo o autor da história

Compartilhe esta história

Compartilhar no Facebook

Compartilhar no Twitter

Compartilhe no Reddit

O desenvolvedor fundador do OpenZFS, Matthew Ahrens, abriu um PR para um dos recursos mais procurados da história do ZFS - a expansão RAIDz - na semana passada. O novo recurso permite que um usuário ZFS expanda o tamanho de um único RAIDz vdev. Por exemplo, você pode usar o novo recurso para transformar um RAIDz1 de três discos em um RAIDz1 de quatro, cinco ou seis.

Leitura Adicional

ZFS 101 - Compreendendo o armazenamento e o desempenho do ZFS

O OpenZFS é um sistema de arquivos complexo, e as coisas necessariamente ficarão um pouco complicadas ao explicar como o recurso funciona. Portanto, se você é um novato no ZFS, pode consultar nosso abrangente ZFS 101

introdução

.

Expandindo o armazenamento no ZFS

Além de ser um sistema de arquivos, o ZFS é uma matriz de armazenamento e gerenciador de volume, o que significa que você pode alimentá-lo com uma pilha inteira de dispositivos de disco, não apenas um. O coração de um sistema de armazenamento ZFS é o

zpool

—Este é o nível mais fundamental de armazenamento ZFS. o

zpool

por sua vez contém

vdevs

, e

vdevs

contêm discos reais dentro deles. As gravações são divididas em unidades chamadas

registros

ou

blocos

, que são então distribuídos de maneira semi-uniforme entre os

vdevs

.

Um armazenamento

vdev

pode ser um dos cinco tipos - um único disco, espelho,

RAIDz1

,

RAIDz2

, ou

RAIDz3

. Você pode adicionar mais

vdevs

para um

zpool

, e você pode

anexar

mais discos para um único ou espelho

vdev

. Mas gerenciar o armazenamento dessa forma requer algum planejamento prévio e orçamento - o que os entusiastas e caseiros frequentemente não estão muito entusiasmados.

Convencional

INCURSÃO

, que não compartilha o conceito de "pool" com o ZFS, geralmente oferece a capacidade de expandir e / ou remodelar um array no local. Por exemplo, você pode adicionar um único disco a um disco de seis

RAID6

array, transformando-o em um disco de sete

RAID6

variedade. Passar por uma remodelagem ao vivo pode ser muito doloroso, especialmente em matrizes quase completas; é inteiramente possível que tal tarefa exija uma semana ou mais, com o desempenho do array limitado a um quarto ou menos do normal o tempo todo.

Historicamente, o ZFS evitou esse tipo de expansão. O ZFS foi originalmente desenvolvido para uso comercial, e a remodelagem de array em tempo real é geralmente um não-iniciante no mundo dos negócios. Reduzir o desempenho do armazenamento a níveis inutilizáveis ​​por dias a fio geralmente custa mais em folha de pagamento e despesas gerais do que comprar um conjunto inteiramente novo de hardware. A expansão ao vivo também é potencialmente muito perigosa, pois envolve a leitura e reescrita de todos os dados e coloca o array em uma condição temporária e muito menos testada "metade disso, metade daquilo" até que seja concluído.

Para usuários com muitos discos, o novo

RAIDz

é improvável que a expansão mude materialmente a forma como eles usam o ZFS. Ainda será mais fácil e prático de gerenciar

vdevs

como unidades completas, em vez de tentar sujar dentro delas. Mas amadores, caseiros e pequenos usuários que executam o ZFS com um único

vdev

provavelmente obterá muito uso do novo recurso.

Como funciona?

Prolongar

/

Neste slide, vemos um RAIDz1 de quatro discos (à esquerda) expandido para um RAIDz1 de cinco discos (à direita). Observe que os dados ainda são gravados em quatro faixas de largura!

Matthew Ahrens

De uma perspectiva prática, o novo

vdev

recurso de expansão apenas adiciona novos recursos a um comando existente, a saber,

zpool attach

, que normalmente é usado para adicionar um disco a um único disco

vdev

(transformando-o em um

espelho vdev

) ou adicione um disco extra a um

espelho

(por exemplo, girando um disco de dois

espelho

em três discos

espelho

)

Propaganda

Com o novo código, você será capaz de

anexar

novos discos para um existente

RAIDz

vdev também. Isso expande o vdev em largura, mas não altera o

vdev

tipo, então você pode virar um disco de seis

RAIDz2

vdev em um disco de sete

RAIDz2

vdev, mas você

não pode

transformá-lo em um disco de sete

RAIDz3

.

Ao emitir o seu

zpool attach

comando, a expansão começa. Durante a expansão, cada

bloquear

ou

registro

é lido do

vdev

sendo expandido e então reescrito. Os setores da reescrita

bloquear

são distribuídos entre todos os discos no

vdev

, incluindo o (s) novo (s) disco (s), mas a largura da faixa em si não é alterada. Então um

RAIDz2 vdev

expandido de seis para dez discos ainda estará cheio de seis faixas de largura após a conclusão da expansão.

Portanto, embora o usuário veja o espaço extra disponibilizado pelos novos discos, a eficiência de armazenamento dos dados expandidos não terá melhorado devido aos novos discos. No exemplo acima, partimos de um disco de seis

RAIDz2

com uma eficiência de armazenamento nominal de 67 por cento (quatro de cada seis setores são dados) para um disco de dez

RAIDz2

. Dados

recentemente

gravado no RAIDz2 de dez discos tem uma eficiência de armazenamento nominal de 80 por cento - oito em cada dez setores são dados - mas os dados expandidos antigos ainda são gravados em seis faixas de largura, portanto, ainda tem os antigos 67 por cento de eficiência de armazenamento.

É importante notar que este não é um estado inesperado ou bizarro para um vdev estar -

RAIDz

já usa uma largura de faixa dinâmica e variável para contabilizar

blocos

ou

registros

muito pequeno para distribuir em todos os discos em um único

vdev

.

Por exemplo, se você escrever um único bloco de metadados - os dados que contêm o nome de um arquivo, permissões e localização no disco - ele caberá em um único

setor

no disco. Se você gravar esse bloco de metadados em um

RAIDz2

, você não escreve uma faixa dez de largura completa - em vez disso, você

escreve uma faixa subdimensionada

bloquear

apenas três discos de largura; um único dado

setor

mais duas paridade

setores

. Portanto, o "subdimensionado"

blocos

em um recém-expandido

RAIDz

vdev não é algo para o ZFS se confundir. Eles são apenas mais um dia no escritório.

Existe algum impacto duradouro no desempenho?

Como discutimos acima, um recém-expandido

RAIDz vdev

não se parecerá exatamente com um projetado assim desde o "nascimento" - pelo menos, não no início. Embora haja mais discos na combinação, a estrutura interna dos dados não é alterada.

Adicionando um ou mais novos discos ao

vdev

significa que deve ser capaz de um rendimento um pouco mais alto. Mesmo que o legado

blocos

não abranja toda a largura do

vdev

, os discos adicionados significam mais eixos para distribuir o trabalho ao redor. Isso provavelmente não aumentará a velocidade de cair o queixo, no entanto - seis faixas de largura em um disco de sete

vdev

significa que você ainda não consegue ler ou escrever dois

blocos

simultaneamente, portanto, quaisquer melhorias de velocidade provavelmente serão mínimas.

O impacto líquido no desempenho pode ser difícil de prever. Se você estiver expandindo de um disco de seis

RAIDz2

para um de sete discos

RAIDz2

, por exemplo, sua configuração original de seis discos não precisava de nenhum preenchimento. A 128 KiB

bloquear

pode ser cortado uniformemente em quatro partes de dados de 32 KiB, com duas partes de paridade de 32 KiB. O mesmo registro dividido entre

Sete

os discos requerem preenchimento porque 128KiB / cinco partes de dados não chegam a um número par de setores.

Propaganda

Da mesma forma, em alguns casos, especialmente com um pequeno

tamanho do registro

ou

volblocksize

conjunto - a carga de trabalho por disco individual pode ser significativamente menos desafiadora no layout mais antigo e estreito do que no mais novo e mais amplo. A 128 KiB

bloquear

dividido em peças de 32 KiB para um

RAIDz2

pode ser lido ou escrito com mais eficiência

por disco

do que um dividido em peças de 16 KiB para um dez de largura

RAIDz2

, por exemplo - então é um pouco complicado saber se mais discos, mas peças menores, fornecerão mais rendimento do que menos discos, mas peças maiores forneceram.

A única coisa de que você pode ter certeza é que a configuração recém-expandida deve normalmente funcionar tão bem quanto a versão não expandida original - e que, uma vez que a maioria dos dados é (re) escrita na nova largura, o

vdev

não terá um desempenho diferente ou será menos confiável do que um que foi projetado dessa forma desde o início.

Por que não remodelar registros / blocos durante a expansão?

Pode parecer estranho que o processo de expansão inicial não reescreva todos os

blocos

para a nova largura enquanto está em execução - afinal, ele está lendo e reescrevendo os dados de qualquer maneira, certo? Perguntamos a Ahrens por que a largura original foi deixada como está, e a resposta se resume a "é mais fácil e seguro assim".

Um fator importante a reconhecer é que, tecnicamente, a expansão

não é

em movimento

blocos

; está apenas se movendo

setores

. Da forma como está escrito, o código de expansão não precisa saber onde a lógica do ZFS

bloquear

limites são - a rotina de expansão não tem ideia se um indivíduo

setor

é paridade ou dados, quanto mais qual

bloquear

isso pertence a.

A expansão pode atravessar todos os

bloquear

ponteiros para localizar

bloquear

limites, e

então

saberia qual

setor

pertence ao que

bloquear

e como remodelar o

bloquear

, mas de acordo com Ahrens, fazer as coisas dessa maneira seria extremamente invasivo para o formato em disco do ZFS. A expansão precisaria ser atualizada continuamente

mapas espaciais

sobre

metaslabs

para levar em conta as mudanças no tamanho do disco de cada

bloquear

—E se o

bloquear

faz parte de um

conjunto de dados

ao invés de um

zvol

, atualize a contabilidade por conjunto de dados e por espaço de arquivo também.

Se realmente faz seus dentes coçarem sabendo que você tem quatro faixas de largura em um vdev de cinco de largura recentemente, você pode simplesmente ler e reescrever seus dados após a conclusão da expansão. A maneira mais simples de fazer isso é usar

snapshot zfs

,

zfs enviar

, e

zfs recebem

para replicar todo

conjuntos de dados

e

zvols

. Se você não está preocupado com as propriedades do ZFS, um simples

mv

operação fará o truque.

No entanto, recomendamos, na maioria dos casos, apenas relaxar e deixar o ZFS fazer seu trabalho. Seu tamanho menor

blocos

de dados mais antigos não estão prejudicando nada, e como você naturalmente exclui e / ou altera os dados ao longo da vida do

vdev

, a maioria deles será reescrita naturalmente conforme necessário, sem a necessidade de intervenção do administrador ou longos períodos de alta carga de armazenamento devido à obsessiva leitura e reescrita de tudo de uma vez.

Quando a expansão do RAIDz chegará à produção?

O novo código de Ahrens ainda não faz parte de nenhuma versão do OpenZFS, muito menos adicionado aos repositórios de outra pessoa. Perguntamos a Ahrens quando poderíamos ver o código em produção e, infelizmente, demorará um pouco.

É muito tarde para a expansão RAIDz ser incluída no próximo lançamento do OpenZFS 2.1, esperado para muito em breve (o candidato a lançamento 2.1 7 já está disponível). Deve ser incluído na próxima versão principal do OpenZFS; é muito cedo para datas concretas, mas os principais lançamentos geralmente acontecem uma vez por ano.

Em termos gerais, esperamos que a expansão do RAIDz chegue à produção de produtos como Ubuntu e FreeBSD por volta de agosto de 2022, mas isso é apenas um palpite. TrueNAS pode muito bem colocá-lo em produção antes disso, uma vez que ixSystems tende a puxar recursos do ZFS do master antes de atingirem oficialmente o status de lançamento.

Matt Ahrens apresentou a expansão RAIDz no FreeBSD Developer Summit - sua palestra começa em 1 hora e 41 minutos neste vídeo.