Verificação de integridade na configuração do servidor de 40 TB

21

Eu tenho 40 anos em computação, mas nunca tive que construir um servidor como este, então essa pode ser uma pergunta n00b.

Eu tenho um cliente que oferecerá arquivos de música com altíssima definição para download. Nesse caso, significa 24 / 192Khz compactado em FLAC = ~ 10GB / álbum. (Não, não quero discutir a conveniência do produto, apenas a configuração do servidor.) O catálogo terá cerca de 3.000 álbuns, com versões de altíssima e baixa definição (para os iPods, eu acho), dando 35-40 TB ou mais de dados primários.

Como esse é um produto muito especializado, o tamanho do mercado é relativamente pequeno (pense: pessoas que gastam mais de US $ 20.000 em seus sistemas de áudio), o que significa que na maioria das vezes o servidor ficará 100% ocioso (ou próximo a ele). Eu tenho o que parece ser uma boa oferta de colocação da ColocationAmerica com uma conexão de 1 Gbps e largura de banda de cerca de US $ 20 / TB, então agora só preciso construir uma caixa para entregar as mercadorias.

O caso de uso de acesso a dados é de gravação única / leitura múltipla, portanto, estou pensando em usar o software RAID 1 para pares de unidades. Isso me permitiria ( acho ) reconfigurar unidades sobressalentes para unidades com falha on-the-fly, assim, sendo capaz de iniciar a reconstrução da segunda unidade antes que algum administrador do sistema perceba a luz vermelha no sistema (eles trocam gratuitamente). Seria ótimo se eu conseguisse que a maioria das unidades dormisse / diminuísse se elas não fossem necessárias, o que será a maior parte do tempo na maioria das unidades.

Eu não preciso de muito em termos de energia de computação - isso só está empurrando objetos gordos pelo cano - e assim a CPU / placa-mãe pode ser bastante modesta, desde que possa suportar esse número de unidades.

Atualmente, estou considerando a seguinte configuração:

Chasis: Supermicro CSE-847E26-RJBOD1
Drives: 30 4TB SAS drives (Seagate ST4000NM0023 ?)
MB: SUPERMICRO MBD-X10SAE-O w/ 8GB
CPU: Xeon E3-1220V3 3.1GHz LGA 1150 80W Quad-Core Server

Então, estou indo na direção certa, ou essa é uma maneira completamente n00b / dinossauro de abordar o problema?

Atualize para esclarecer alguns pontos:

  1. Não tenho experiência com o ZFS, pois o último produto da Sun que possuía estava no final dos anos 80. Vou fazer um pouco de RTFMing para ver se parece certo.
  2. Eu realmente não preciso que o sistema de arquivos faça algo espetacular, pois os nomes dos arquivos serão UUIDs simples e os objetos serão equilibrados nas unidades (como um grande sistema de cache). Então, eu realmente estava pensando neles como 40 sistemas de arquivos separados, e isso fez o RAID 1 parecer certo (mas admito aqui a ignorância).
  3. Como nossas expectativas atuais são de que é improvável que baixemos mais de uma dúzia de arquivos a qualquer momento e, na maioria dos casos, haverá exatamente uma pessoa baixando um determinado arquivo, não sei se precisamos de muita memória para buffers. Talvez 8 GB seja um pouco leve, mas acho que 128 GB não fará nada além de consumir energia.
  4. Existem duas máquinas separadas não mencionadas aqui: sua loja virtual atual e um Download Master quase completamente dissociado que lida com toda autenticação, gerenciamento de ingestão de novos produtos, aplicação de políticas (afinal, esse é o playground da RIAA), criação efêmera de URL (e possivelmente entregar downloads para mais de uma dessas bestas se o tráfego exceder nossas expectativas), rastreamento de uso e geração de relatórios. Isso significa que essa máquina quase pode ser construída usando gerbils no Quaaludes.

ZFS? Onde está o benefício?

OK, estou me arrastando por vários guias, perguntas frequentes, etc. do ZFS, perdoe-me por parecer estúpido, mas estou realmente tentando entender o benefício do uso do ZFS sobre minha noção antediluviana de pares N RAID1. Nesta página de Boas Práticas (de 2006), eles até sugerem não fazer um ZFS de 48 dispositivos, mas 24 espelhos de 2 dispositivos - soa como o que eu estava falando sobre fazer. Outras páginas mencionam o número de dispositivos que precisam ser acessados ​​para entregar 1 (um) bloco ZFS. Além disso, lembre-se, com 10 GB por objeto e com 80% de utilização de disco, estou armazenando um total geral de 320 arquivos por unidade de 4 TB . Meu tempo de reconstrução com N RAID 1s, para qualquer falha de unidade, é uma gravação de 4 TB de um dispositivo para outro.Como o ZFS melhora isso?

Eu admito ser um dinossauro, mas o disco é barato, RAID 1 eu entendo, minhas necessidades de gerenciamento de arquivos são triviais e o ZFS no Linux (meu sistema operacional preferido) ainda é meio jovem. Talvez eu seja muito conservador, mas quando estou olhando para um sistema de produção, é assim que eu rolo.

Agradeço a todos por seus comentários que me fizeram pensar sobre isso. Ainda não estou completamente decidido e talvez precise voltar e fazer mais algumas perguntas sobre o n00b.

Peter Rowell
fonte
6
Para essa quantidade de armazenamento, eu nem consideraria usar menos de 128 GB de RAM. Além disso, considere fortemente usar o sistema de arquivos zfs.
EEAA
3
Pares de discos em RAID1 parecem ... terríveis. Pessoalmente, eu especificaria um servidor / prateleira de armazenamento, o enfiaria em unidades SAS próximas da linha, colocaria tudo no RAID 10 ou 6, acrescentaria uma ou duas peças sobressalentes e a chamaria de dia.
21714 HopelessN00b
3
@etherfish - a RAM não é necessária para fins computacionais, mas é definitivamente necessária para o cache do sistema de arquivos. O desempenho com apenas 8 GB seria horrível. Ainda mais se estiver usando o ZFS, que é realmente o único fs que eu consideraria seriamente nesse tamanho. O ZFS precisa de muita RAM para funcionar bem. Felizmente, a RAM é relativamente barata.
EEAA
1
O desempenho seria excessivamente suficiente para saturar 1 Gbps. O desempenho só seria prejudicado no sistema de arquivos que tivesse que reler blocos do disco que haviam sido eliminados do cache de buffer e com pouca ou nenhuma expectativa de localidade temporal, o ponto de retornos decrescentes para RAM extra é alcançado bem antes de 128 GB. Dado o sistema de arquivos com base na extensão e os arquivos grandes, até os metadados do sistema de arquivos ocupam uma quantidade insignificante de RAM. Ele até espera que o uso seja escasso o suficiente para que as unidades possam diminuir. Anos 73.
etherfish
5
Apenas uma nota sobre girar os discos - NÃO FAÇA! (Clique em mim para descobrir o porquê) Spin-Up / Spin-Down é muito desgastante nas partes móveis de um disco rígido tradicional e causará falhas prematuras. O dinheiro que você economiza em energia será perdido substituindo os discos com falha.
voretaq7

Respostas:

12

Com base na descrição do seu problema, seu problema não é tanto o servidor, mas também o armazenamento.
Você deseja um sistema de arquivos robusto e confiável como o ZFS , projetado para lidar bem com grande capacidade de armazenamento e com recursos de gerenciamento integrados para facilitar o gerenciamento do final do sistema.

Como foi mencionado nos comentários, eu usaria o ZFS para o pool de armazenamento (provavelmente no FreeBSD porque eu estou mais familiarizado com esse sistema operacional e porque ele tem um histórico longo e comprovado de sólido desempenho com o ZFS - Minha segunda opção O SO seria Illumos , novamente por causa do suporte bem testado ao ZFS).


No que diz respeito à entrega dos arquivos, eu concordo - você não precisa de muito em termos de hardware para enviar dados pela porta de rede. Seu driver principal para CPU / RAM será as necessidades do sistema de arquivos (ZFS).
A regra geral é que o ZFS precisa de 1 GB de RAM, mais 1 GB para cada 10 TB de espaço em disco que gerencia (portanto, para 40 TB, você precisaria de 5 GB de RAM para ZFS) - a relação ainda não é linear (há bastante bons livros / tutoriais / documentos sobre o ZFS que podem ajudá-lo a apresentar uma estimativa para seu ambiente).
Observe que adicionar campainhas e assobios do ZFS, como a desduplicação, exigirá mais RAM.

Obviamente, arredonde os requisitos de RAM para cima e não para baixo e não seja mesquinho: se sua matemática diz que você precisa de 5 GB de RAM, não carregue o servidor com 8 GB - vá até 16 GB.

Você pode executar o servidor diretamente na caixa de armazenamento (o que significa que precisará de mais RAM nessa caixa para dar suporte aos processos do servidor) ou montar remotamente o armazenamento em servidores "front-end" para realmente atender solicitações de clientes.
(O primeiro é mais barato inicialmente, o segundo dimensiona melhor a longo prazo.)


Além deste conselho, as melhores sugestões que eu posso dar a você já estão bem abordadas em nossa série de perguntas de Planejamento de capacidade - basicamente "Teste de carga , Teste de carga , Teste de carga ".

voretaq7
fonte
Acho que sua matemática está errada. Pela sua fórmula, ele precisaria de 41G.
EEAA
@EAEAA De fato, caí zero :-) E observe que é uma quantidade mínima de RAM. ZFS seria muito feliz de usar 41G e absorver tudo com o cache :-)
voretaq7
@ voretaq7: Obrigado pelo link para o planejamento de capacidade; é o próximo na minha lista depois de ler sobre o ZFS.
Peter Rowell
Se você usa o
sciurus
1
@PeterRowell As principais vantagens do ZFS são que ele foi projetado para lidar com sistemas de arquivos em escala de vários terabytes - foi forjado no cadinho da Sun Microsystems e foi construído como um sistema de arquivos do século XXI para tamanhos de dados do século XXI (do tipo que você está falando) . Uma pergunta sobre os benefícios / desvantagens do ZFS em relação a <algum outro sistema de arquivos> seria um bom assunto para outra pergunta em separado, mas deixarei de lado este detalhe: não existe o que esperar fsckse você estiver usando o ZFS e a máquina trava. Eu tenho fscksistemas de arquivos terabytes. É bem terrível.
voretaq7
2

Eu uso o ZFS para um servidor multi-TB e ele tem sido sólido. Eu usei o OpenIndiana para começar e agora mudei para o FreeNAS, pois ele faz o que eu preciso fazer.

Eu recomendaria o uso de uma placa LSI HBA (9211-8i é uma boa placa base) com expansores SAS (os casos SuperMicro podem ser solicitados com expansores SAS integrais baseados em chipsets LSI). O firmware LSI é suportado no FreeNAS e no FreeBSD. Verifique as versões apropriadas (a V16 é boa no FreeBSD V9.x).

Dada a gravação, uma vez lida a natureza do seu sistema, eu usaria uma topologia ZFS Z2 (evite RAID-5 e Z1 com unidades desse tamanho). Como você está usando discos de 4 TB, o tempo de reconstrução (resilver) de uma matriz vDev grande e individual seria muito tempo se o pool estiver cheio. Para evitar longos tempos de reconstrução, organize os vDevs em grupos de 6 ou 10 para criar o pool (recomendações da documentação do FreeNAS). Um pool composto por três vDevs de 6 unidades (unidades de 4 TB assumidas) teria uma capacidade útil de ~ 48 TB e oferece um bom nível de tolerância a falhas (lembre-se de que você ainda precisa fazer backup, pois o RAID não substitui os backups :)).

Para acelerar as coisas para arquivos acessados ​​com frequência, você pode instalar alguns SSDs para L2ARC (provavelmente não necessários para o seu aplicativo, mas são muito baratos para SSDs de 120 GB).

E, como afirmado, use muita RAM. 64 GB não é muito caro, dado o outro hardware do sistema. Infelizmente, o XEON menor não pode usar mais de 32 GB. Você poderia experimentá-lo, mas mais memória RAM seria melhor, de acordo com a literatura do ZFS (eu uso o XEON mencionado com 32 GB de RAM e uma matriz Z2 de 24 TB e funciona bem).

Outra vantagem do ZFS é que você pode configurar instantâneos periódicos. Dessa forma, você pode restaurar as versões anteriores facilmente e os instantâneos são muito eficientes em termos de espaço. Além disso, você pode replicar qualquer instantâneo para outro conjunto de dados (local ou remoto) e isso pode ser feito no SSH por segurança.

Eu realmente gosto da confiabilidade do sistema ZFS. Eu também gosto do fato de que é hardware INDEPENDENTE !! Qualquer sistema que possa ver as unidades pode importar o pool. Não há dependências de firmware, etc., que possam ocorrer com invasões de hardware (não é um problema com placas melhores, mas são mais caras que placas HBA e precisam de drivers etc. - foram pouco exploradas no passado).

Dado que esta postagem é mais antiga, você provavelmente tem uma solução. Se sim, lembre-se de nos dizer o que você construiu?

Felicidades,

Scharbag
fonte