Requisito de velocidade de gravação: 1.1GB / s possibilidades?

28

Teremos uma máquina em funcionamento, que, no desempenho máximo, deverá ser capaz de empurrar 50 ("cabeças de gravação") x 75 GB de dados por hora. Esse é o desempenho máximo de aproximadamente 1100MB / s de velocidade de gravação. Para obter isso da máquina, são necessárias duas linhas de 10GBi. Minha pergunta é que tipo de servidor + tecnologia pode manipular / armazenar esse fluxo de dados?

Atualmente, para armazenamento de dados, trabalhamos com o ZFS, embora a velocidade de gravação nunca tenha sido uma questão. (não estamos nem perto dessas velocidades) O ZFS (zfs no linux) seria uma opção? Também precisamos armazenar muitos dados, o "Guia de TI" sugere algo entre 50 e 75 TB no total. Então provavelmente não pode ser todos os SSDs a menos que queiramos oferecer nosso filho primogênito.

Algumas adições baseadas nas excelentes respostas:

  • o máximo é 50x75 GB / hora durante o pico, que é inferior a 24h (a maioria provável < 6h)
  • Não esperamos que isso aconteça em breve. executar 5-10x75 GB / hora
  • é uma máquina pré-alfa, mas os requisitos devem ser atendidos (mesmo que muitos pontos de interrogação estejam em jogo)
  • usaríamos NFS como conexão da máquina para o servidor
  • layout: gerando máquina - > armazenamento (este) - > (raid seguro 6) - > cluster de computação
  • então a velocidade de leitura não é essencial , mas seria bom usá-la no cluster de computação (mas isso é completamente opcional)
  • provavelmente serão arquivos de dados grandes (não muitos pequenos)
por SvennD 04.01.2017 / 15:06

8 respostas

18

Absolutamente ... O ZFS no Linux é uma possibilidade se arquitetado corretamente. Existem muitos casos de design de ZFS deficiente , mas bem feito, suas necessidades podem ser atendidas.

Assim, o principal determinante será como você está se conectando a este sistema de armazenamento de dados. É o NFS? CIFS? Como os clientes estão se conectando ao armazenamento? Ou o processamento, etc. foi feito no sistema de armazenamento?

Preencha mais alguns detalhes e podemos ver se podemos ajudar.

Por exemplo, se isso é NFS e com montagens síncronas, é possível escalar o ZFS no Linux para atender às necessidades de desempenho de gravação e ainda manter o requisito de capacidade de armazenamento de longo prazo. Os dados são compactáveis? Como cada cliente está conectado? Gigabit Ethernet?

Editar:

Ok, eu vou morder:

Aqui está uma especificação que tem aproximadamente $ 17k- $ 23k e cabe em um espaço de rack de 2U.

HP ProLiant DL380 Gen9 2U Rackmount
2 x Intel E5-2620v3 or v4 CPUs (or better)
128GB RAM
2 x 900GB Enterprise SAS OS drives 
12 x 8TB Nearline SAS drives
1 or 2 x Intel P3608 1.6TB NVMe drives

Esta configuração fornecerá um espaço útil de 80 TB usando o hardware RAID6 ou o ZFS RAIDZ2.

Como o foco é o desempenho baseado em NFS (assumindo gravações síncronas), podemos absorver tudo isso facilmente com as unidades P3608 NVMe (SLOG distribuído). Eles podem acomodar 3 GB / s em gravações sequenciais e têm uma classificação de resistência suficientemente alta para lidar continuamente com a carga de trabalho que você descreveu. As unidades podem ser facilmente aprovisionadas para adicionar algumas proteções em um caso de uso do SLOG.

Com a carga de trabalho do NFS, as gravações serão reunidas e liberadas para girar o disco. No Linux, nós ajustamos isso para liberar a cada 15 a 30 segundos. Os discos giratórios podem lidar com isso e podem se beneficiar ainda mais se esses dados forem compactáveis.

O servidor pode ser expandido com mais 4 slots PCIe abertos e uma porta adicional para adaptadores FLR 10GbE de porta dupla. Então você tem flexibilidade de rede.

    
por 04.01.2017 / 15:39
23

Para uma velocidade de gravação tão extrema, sugiro que seja contra o ZFS, BTRFS ou qualquer sistema de arquivos CoW. Eu usaria o XFS, que é extremamente eficiente em transferências grandes / de fluxo contínuo.

Há muitas informações ausentes (como você planeja acessar esses dados? A velocidade de leitura é importante? Você vai escrever em grandes blocos? etc.) para fornecer conselhos específicos, no entanto, alguns conselhos gerais são:

  • use o XFS sobre uma partição bruta ou um volume LVM gordo (não use volumes finos)
  • ajuste o tamanho do bloco para lidar eficientemente com grandes gravações de dados
  • use uma placa RAID de hardware com cache de gravação protegido por perda de energia; Se o uso de hardware RAID estiver fora de questão, use um esquema RAID10 de software (evitando qualquer modo RAID baseado em paridade)
  • use duas interfaces de rede de 10Gb / s com o LACP (agregação de links)
  • certifique-se de ativar os frames grandes
  • Como você vai usar o NFS, considere usar pNFS (v4.1) para maior escalabilidade
  • certamente muitas outras coisas ...
por 04.01.2017 / 15:52
4

A Ethernet de 25 Gbps já está no limite, enquanto a NVMe com base no PCIe absorverá facilmente esse tráfego.

Para referência, recentemente construí uma pequena solução de 'captura de log' usando quatro servidores dual-xeon regulares (HPE DL380 Gen9s neste caso), cada um com 6 x unidades NVMe, usei IP sobre Infiniband, mas essas NICs de 25/40 Gbps ser o mesmo e estamos capturando até 8GBps por servidor - funciona bem.

Basicamente não é barato, mas é muito possível hoje em dia.

    
por 04.01.2017 / 15:58
3

Gravações sequenciais a 1100MB / s não são um problema com o hardware moderno. Curiosamente, minha configuração inicial com unidades de laptop de 8x5900 RPM, unidades de 2x15000 RPM e unidades de 2x7200 RPM sustenta 300 MB / s com carga útil única de 16 GB.

A rede é de 10 GbE com cabos de fibra, 9000 MTU em ethernet e a camada de aplicação é Samba 3.0. O armazenamento é configurado no raid50 com três faixas em três volumes raid5 de 4 unidades. O controlador é o LSI MegaRAID SAS 9271-8i com até 6 Gb / s por porta (eu tenho um multiplicador de porta adicional e mais lento).

Converse com qualquer administrador de sistema experiente e eles devem ser capazes de lhe dizer exatamente qual (is) controlador (es) e inversores atenderiam às suas necessidades.

Acho que você pode experimentar qualquer controlador de 12Gb / s e configurar duas faixas espelhadas de oito unidades de 7200 RPM cada (quase todas as unidades devem funcionar). Inicie 3-4 conexões TCP para saturar o link e, se um único par de placas de 10 GbE não puder manipulá-lo, use quatro cartões.

    
por 04.01.2017 / 23:52
2

Não parece grande coisa. Nosso fornecedor de hardware local tem isso como um produto padrão - aparentemente ele pode empurrar 1400MB / s sustentado no modo de gravação de CCTV, que deve ser mais difícil do que seus requisitos de pico.

(Link é para a configuração padrão de 12GB, mas eles notam que o 20x4TB também é uma opção. Nenhuma experiência pessoal com esse servidor de modelo específico.)

    
por 04.01.2017 / 20:05
2

Algo de tangente, mas considere o uso do InfiniBand em vez de links duplos de 10 GbE. Você pode obter cartões Infiniband de 56Gbps bem baratos, ou 100Gbps por não muito mais, e no Linux é fácil usar NFS com RDMA sobre IB, o que lhe dará uma latência extremamente baixa e taxa de transferência de velocidade próxima da linha teórica lidar com isso). Você não precisa de um interruptor, apenas duas placas InfiniBand e um cabo de conexão direta (ou um cabo de fibra InfiniBand se você precisar de distâncias maiores).

Uma placa Mellanox de 56 Gbps de porta única (8x PCIe 3.0) como o MCB191A-FCAT tem menos de 700 dólares e um cabo de conexão direta de cobre de 2 metros é como 80 dólares.

O desempenho geralmente sopra 10GbE fora da água em todos os casos de uso. Não há desvantagens, a menos que você precise acessar o servidor de vários clientes diferentes que não podem usar o InfiniBand (e, mesmo assim, os switches da Mellanox podem unir 10GbE e 40GbE ao IB, mas isso é um pouco mais de um investimento, claro).

    
por 17.03.2017 / 07:39
1

Fazer isso com o ZFS é possível, no entanto, considere o uso do FreeBSD, já que o FreeBSD possui uma pilha de rede mais rápida. Isso permitiria possivelmente 100 GBit em uma única máquina.

1100 MBps parece muito, mas você pode conseguir isso de forma realista usando somente discos rígidos comuns. Você diz que precisa de 75 TB de espaço, então você pode usar 24 discos rígidos de 8 TB em espelhos. Isso lhe daria 12x velocidade de gravação de uma única unidade e velocidade de leitura da unidade de 24x. Como essas unidades têm mais velocidade de gravação que 100 MBps, isso deve ser capaz de lidar facilmente com a largura de banda. Certifique-se de não obter unidades SMR, pois elas têm velocidades de gravação extremamente mais lentas.

O ZFS cria somas de verificação para cada bloco. Isso é implementado em single-threaded. Como tal, você deve ter uma CPU com um clock razoavelmente rápido para não bloquear.

No entanto, os detalhes exatos da implementação dependem muito dos detalhes.

    
por 04.01.2017 / 16:15
1

Registramos dados de despejo de 10G NIC em um cluster Gluster sobre o cliente de fusíveis. É preciso um pouco de sintonia que você não acreditaria no desempenho que pode alcançar desde 3.0.

    
por 06.01.2017 / 00:31