Faixa ZFS na parte superior do RAID 6. O que poderia dar errado?


9

Eu tenho 36 * 4 TB HDD SAN Rack. O controlador RAID não suporta RAID60 e não mais que 16 HDDs em um grupo RAID. Então, decidi criar 2 grupos RAID6 de 16HDD ou 4 de 8 HDDs. Quero obter todo o armazenamento como uma partição.

Então, o que poderia dar errado se eu usasse o pool zfs em cima do RAID6 de hardware? Sim, eu sei que é altamente recomendável usar HDDs nativos ou modo de passagem. Mas eu não tenho essa opção.

Ou devo ficar longe do ZFS e dos ataques de software nessa situação? (Estou interessado principalmente em compactação e instantâneos)


2
Se você usar o ZFS, por que não apenas expor todos os discos individualmente (às vezes chamado de modo HBA) e deixar o ZFS lidar com isso - é o que ele faz melhor. Temos um número de verdadeiros especialistas nisso (ewwhite para começar) que o ajudarão com isso - que controlador de disco exato você está usando?
precisa saber é o seguinte

1
Você estará subvertendo muitos recursos do ZFS usando esse método, mas no geral não vai prejudicar nada fazer isso dessa maneira. A soma de verificação é um pouco mais inútil nessa configuração, pois o controlador RAID estará abstraindo todos os detalhes do disco. Estou mais interessado em saber por que você diz que não pode usar o JBOD. assuredsan 3530 são unidades compatíveis com JBOD.
Spooler

2
Eu esperaria para ewwhite - ele está no centro de US assim está dormindo, mas ele sabe ZFS melhor do que ninguém que eu conheço
Chopper3

1
@Severgun Também 4 HDDs permanecem inúteis porque não há necessidade de hotspare Você realmente acha que é melhor para uma matriz RAID com uma unidade com falha mancar no modo degradado do que pegar automaticamente um hot spare, reconstruir e retornar ao Status funcional?
Andrew Henle

1
@ Chopper3 eu vou responder ... com relutância.
ewwhite

Respostas:


5

Então, decidi criar 2 grupos RAID6 de 16HDD ou 4 de 8 HDDs.

Essa não é a melhor maneira de fazer as coisas. Pode funcionar bem o suficiente, mas, dependendo dos requisitos de desempenho, pode não funcionar.

O tamanho ideal para uma matriz RAID5 / 6 será tal que um múltiplo exato da quantidade de dados que "abrange" a matriz corresponda ao tamanho do bloco do sistema de arquivos construído sobre ela.

As matrizes RAID5 / 6 funcionam como dispositivos de bloco - um único bloco de dados abrange os discos na matriz e esse bloco também contém dados de paridade. A maioria dos controladores RAID gravará uma grande quantidade de dados de tamanho dois em cada disco da matriz - cujo valor exato é configurável em melhores sistemas RAID - e sua unidade Dot Hill é um desses "melhores sistemas RAID". Isso é importante.

Portanto, é necessário N x (quantidade de dados armazenados por parte do disco) para estender a matriz, onde N é o número de discos de dados. Uma matriz RAID5 de 5 discos possui 4 discos de "dados" e uma matriz RAID6 de 10 unidades possui 8 discos de dados.

Como quando os dados são gravados em uma matriz RAID5 / 6, se o bloco de dados é grande o suficiente para abranger toda a matriz, a paridade é calculada para esses dados - geralmente na memória do controlador -, então a faixa inteira é gravada em disco. Simples e rápido.

Mas se o pedaço de dados gravados não é grande o suficiente para abranger toda a matriz, o que o controlador RAID precisa fazer para calcular os novos dados de paridade? Pense nisso - ele precisa de todos os dados em toda a faixa para recalcular os novos dados de paridade.

Portanto, se você criar uma matriz RAID6 de 16 unidades com o pedaço por disco padrão de 512kb, isso significa que são necessários 7 MB para "expandir" a matriz.

O ZFS funciona em blocos de 128kb, geralmente.

Portanto, o ZFS grava um bloco de 128kB - em um array RAID6 de 16 unidades. Na configuração que você está propondo, isso significa que o controlador RAID precisa ler quase 7 MB da matriz e recalcular a paridade nesses 7 MB. Em seguida, reescreva os 7 MB inteiros novamente no disco.

Se você tiver sorte, tudo está em cache e você não sofre muito com o desempenho. (Esse é um dos principais motivos pelos quais a posição "não use RAID5 / 6" tem os seguintes itens - o RAID1 [0] não sofre com isso.)

Se você tiver azar e não alinhar corretamente as partições do sistema de arquivos, esse bloco de 128kB abrange duas faixas RAID que não estão no cache e o controlador precisa ler 14 MB, refazer a paridade e escrever 14 MB. Tudo para escrever um bloco de 128kB.

Agora, é isso que precisa acontecer logicamente . Existem muitas otimizações que os bons controladores RAID podem realizar para reduzir a carga e a carga computacional desses padrões de E / S, portanto, pode não ser tão ruim.

Mas, sob uma carga pesada de gravação de blocos de 128kB em locais aleatórios, há uma chance muito boa de que o desempenho de um array RAID6 de 16 unidades com um tamanho de faixa de 7 MB seja absolutamente terrível.

Para o ZFS, os LUNs RAID5 / 6 subjacentes "ideais" para um sistema de arquivos de uso geral em que a maioria dos acessos são efetivamente aleatórios teriam um tamanho de faixa que é um divisor uniforme de 128kB, como 32kB, 64kB ou 128kB. Nesse caso, isso limita o número de discos de dados em uma matriz RAID5 / 6 a 1 (o que não faz sentido - mesmo que seja possível configurar, é melhor usar apenas RAID1 [0]), 2, 4 ou 8. Melhor desempenho no melhor cenário, seria usar um tamanho de faixa de 128kB para as matrizes RAID5 / 6, mas o melhor caso não ocorre frequentemente em sistemas de arquivos de uso geral - geralmente porque os sistemas de arquivos não armazenam metadados da mesma forma que armazenar dados do arquivo.

Eu recomendo a configuração de matrizes RAID5 de 5 discos ou matrizes RAID6 de 10 discos, com o tamanho do bloco por disco definido pequeno o suficiente para que a quantidade de dados para abranger uma faixa inteira da matriz seja de 64kB (sim, eu fiz isso antes para o ZFS - muitas vezes). Isso significa que, para uma matriz RAID com 4 discos de dados, o tamanho do pedaço por disco deve ser 16kB, enquanto que para uma matriz RAID com 8 dados, o tamanho do pedaço por disco deve ser 8kB.

Em seguida, permita que o ZFS use toda a matriz - não a particione. O ZFS se alinhará corretamente a uma unidade inteira, independentemente de ser um disco único simples ou uma matriz RAID apresentada por um controlador RAID.

Nesse caso, e sem conhecer seus requisitos exatos de espaço e desempenho, eu recomendo configurar três matrizes RAID6 de 10 unidades ou seis matrizes RAID5 de 5 unidades com tamanho de faixa de 64 kB, configurar alguns hot spares e salvar quatro dos seus discos para o que vier no futuro. Porque algo vai.

Certamente, eu não usaria esse sistema de disco no modo JBOD - é um dispositivo totalmente compatível com NEBS Nível 3 que fornece proteções significativas de confiabilidade e disponibilidade integradas diretamente no hardware. Não jogue isso fora só porque "ZFS !!!!". Se é uma peça barata de hardware comum que você junta a partir de peças? Sim, o modo JBOD com o ZFS manipulando o RAID é melhor - mas esse NÃO é o hardware que você possui. USE os recursos que o hardware fornece.


Isso significa que, para uma matriz RAID com 4 discos de dados, o tamanho do pedaço por disco deve ser 16kB, enquanto que para uma matriz RAID com 8 dados, o tamanho do pedaço por disco deve ser 32kB. Estou um pouco confuso com essa matemática. Por que 8 discos - 32kB chunk? Corrija-me se estiver errado: 128kB (bloco ZFS) / 3 (matrizes RAID) = 43 kB por matriz RAID. RAID6 de 10 discos 43kB / 8 = 5kB (tamanho de bloco não disponível) o tamanho de bloco de 8kB mais próximo também não está disponível por hardware. Então, o melhor desempenho não está acessível?
Severgun

@ Evergun Coloquei os tamanhos dos pedaços para trás. O problema de buscar o melhor desempenho absoluto no RAID5 / 6 é que isso só acontecerá quando quase todas as operações de E / S corresponderem perfeitamente ao tamanho da faixa da matriz RAID. Números significativos de operações de E / S menores que o tamanho da faixa podem prejudicar seriamente o desempenho. Adotar um tamanho de bloco menor ajuda a limitar o impacto de gravações aleatórias em blocos pequenos. Na minha experiência, é melhor desistir de 1-2% do desempenho máximo possível em troca da limitação do pior caso. Os sistemas de arquivos de uso geral tendem a ter um bom número de gravações pequenas.
Andrew Henle 23/11

(cont.) 8 discos de dados em uma matriz RAID5 / 6 com um tamanho de chunk de 16kB por disco cria um tamanho de faixa de 128kB em toda a matriz. Da mesma forma, pedaços de 32 kB para uma matriz de 4 dados em disco. O ZFS grava um bloco de dados de arquivo de 128kB em um único dispositivo - ele não é dividido em todos os zdevs. Mais uma vez, no entanto, para um sistema de arquivos de uso geral, haverá muitas gravações abaixo de 128kB; portanto, um tamanho de faixa menor (64kB) evitará melhor a degradação do desempenho sob uma carga pesada de gravação, mas a um custo pequeno nas melhores desempenho do caso.
Andrew Henle 23/11

4

Ok, eu vou morder ...

Este é o hardware errado para o aplicativo. A configuração do DotHill tem as mesmas limitações que um HP StorageWorks MSA2000 / P2000, pois apenas 16 unidades podem ser usadas em um único agrupamento de matrizes.

O ZFS no topo do RAID de hardware ou um SAN LUN exportado não é necessariamente um problema.

No entanto, a distribuição de LUNs do ZFS por interconexões desconhecidas, através do chassi de expansão, pode apresentar alguns riscos.

  • Por exemplo, você está executando o SAS de caminhos múltiplos em uma topologia em anel com controladores duplos?
  • Você tem cabeamento redundante de volta ao servidor?
  • Você distribuiu as unidades verticalmente pelos gabinetes de maneira a minimizar a falha de um único chassi / cabo / controlador e impedir que ela destrua parte de sua faixa RAID0?

Sério, pode valer a pena avaliar se você precisa de todo esse armazenamento em um único espaço para nome ...

Se você precisar desse tipo de capacidade em uma única montagem, deverá usar um gabinete JBOD dedicado conectado ao HBA e possivelmente várias unidades principais com cabeamento resiliente e um layout mais inteligente.


1

Você deve anexar DIRETAMENTE todas as unidades a uma caixa executando o ZFS. Obtenha um HBA SAS e conecte as unidades à caixa compatível com ZFS (por exemplo, executando o OmniOS ou SmartOS). Você pode compartilhar o espaço via NFS, SMB, iScsi ...


Você deve anexar DIRETAMENTE todas as unidades a uma caixa executando o ZFS. Não necessariamente - a substituição de unidades com falha em uma matriz de hardware em alguns controladores é fácil : retire o disco rígido com a luz de falha acesa e insira uma nova. Nenhum administrador do sistema precisou executar os comandos do ZFS para substituir a unidade. Em uma configuração corporativa com centenas ou milhares de servidores e talvez dezenas de milhares de discos rígidos espalhados por vários data centers, isso é uma preocupação. As unidades falham muito mais do que a podridão por bits.
Andrew Henle

@Tobi Oetiker me dizer como colocar 36 3.5" HDDs em caso 2U
Severgun

apenas as colocamos em uma caixa extra ... use um extensor sas ... quanto às grandes implantações, talvez pergunte o quão alegre é lidar com isso.
Tobi Oetiker

@AndrewHenle Para ser justo, é possível obter o mesmo procedimento de substituição fácil e LEDs de status com o ZFS e os HBAs corretos (pode envolver scripts menores, se não estiver usando uma solução pré-empacotada).
user121391

0

A razão pela qual o ZFS sobre os volumes lógicos HW RAID é uma idéia MUITO RUIM , é porque o ZFS requer acesso no nível do bloco para realmente funcionar corretamente. Sim, será utilizável, mas a funcionalidade não estará completa até você conectar unidades diretamente ao sistema operacional por meio de conexões HBA ou SATA diretas. Um exemplo é que, na configuração que você está propondo, o ZFS não pode proteger razoavelmente seus dados contra alterações nos dados abaixo (do outro lado do controlador HW RAID) e, como tal, não garante a segurança de seus dados . Esse é um dos motivos pelos quais o ZFS é usado, além de ser super rápido.

O ZFS é uma tecnologia incrível, e eu recomendo. Mas você precisará revisar sua estrutura aqui para poder usá-la corretamente. Ou seja, fazer com que o ZFS crie os volumes lógicos (vdevs) diretamente dos discos.

Parece que há muito mais a ler sobre como o ZFS opera antes de entender com precisão o que o propôs, em contraste com o que realmente deve ser feito.


Sim sim e sim. Entendo como o ZFS funciona o máximo que posso. Mas existem algumas complicações: 1) Eu já tenho gabinete SAN e preciso usá-lo. Não estou construindo armazenamento a partir do zero. 2) Este não é o meu NAS doméstico, onde posso comprar e jogar coisas fora. 3) O orçamento para a reconstrução da configuração de armazenamento é igual a zero . Do armazenamento, preciso da velocidade máxima de gravação disponível, com espaço em torno de 100 TB. Eu estou olhando para o ZFS principalmente devido à compactação e snapshots. Eu posso tentar btrfs, mas é experimental. Hmm pode ser ZoL instável também? Eu não sei.
23716 Severgun #

@ Evergun Contanto que você saiba quais são as desvantagens, você ficará bem em minha opinião. O ZFS possui muitos recursos interessantes (como instantâneos) que funcionam independentemente dos outros. A maioria dos conselhos na Internet enfatiza a importância das melhores práticas em todas as áreas, mas são recomendações, não requisitos estritos. Esse ponto se tornará menos importante no futuro, à medida que mais e mais distribuições do LInux mudarem para o ZFS e a maioria dos sistemas Linux for virtualizada, para que eles tenham a sua situação exata.
user121391

1
A razão pela qual o ZFS sobre os volumes lógicos HW RAID é uma idéia MUITO RUIM, é porque o ZFS requer acesso no nível do bloco para realmente funcionar corretamente. Isso é tão ruim que nem é bom o suficiente para ser chamado de errado. Aparentemente, você não tem idéia do que significa uma peça de hardware compatível com NEBS 3, não é? além de ser super rápido. O ZFS é muitas coisas boas. "super duper fast" NÃO é um deles. Este é um sistema de arquivos rápido . Então é isso . À medida que os sistemas de arquivos avançam, o ZFS não é rápido.
Andrew Henle
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.