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

29

Teremos uma máquina em funcionamento, que, com desempenho máximo, deve poder enviar 50 ("cabeças de gravação") x 75 GB de dados por hora. Esse é o desempenho máximo da velocidade de gravação de ~ 1100MB / s. Para obter isso da máquina, são necessárias duas linhas de 10 GBi. 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-75 TB no total. Portanto, provavelmente não podem ser todos os SSDs, a menos que desejemos oferecer nosso primeiro filho.

Algumas adições baseadas nas excelentes respostas:

  • o máximo é de 50x75GB / hora durante o pico inferior a 24h (provavelmente <6h)
  • Não esperamos que isso aconteça em breve, provavelmente executaremos de 5 a 10 x 75 GB / hora
  • é uma máquina pré-alfa, no entanto, os requisitos devem ser atendidos (mesmo que muitos pontos de interrogação estejam em jogo)
  • usaríamos NFS como a conexão da máquina para o servidor
  • layout: máquina geradora -> armazenamento (este) -> (ataque seguro 6) -> cluster de computação
  • portanto, a velocidade de leitura não é essencial , mas seria bom usá-la no cluster de computação (mas isso é completamente opcional)
  • o mais provável é que sejam grandes arquivos de dados (não muitos pequenos)
SvennD
fonte
8
mb como no megaBIT ou megaByte? Por favor, use MBi MiBi MByte ou MB para denunciar bytes. Além disso, 2 linhas de 10 gbit oferecem 2400 MByte / s
mzhaase
11
Está mais claro agora, obrigado. Mais algumas perguntas. O desempenho máximo é de 1,1 GBps, mas o que é médio? Quanto tempo duram esses picos? E qual é o rendimento mínimo contínuo que você está disposto a aceitar? A gravação é um arquivo grande ou vários pequenos? Que tipo de protocolo será usado? Que tipo de redundância você deseja? Parece algum tipo de equipamento médico ou científico. Você pode talvez vincular a folha de dados? Como você já está usando o ZFS, você pode entrar em contato com uma empresa de armazenamento especializada do ZFS, das quais existem algumas. Eles poderiam especificar um sistema para você.
precisa saber é o seguinte
2
Isso realmente tem que ser feito com uma única máquina? O balanceamento de carga para várias máquinas pode facilitar isso. Você pode usar o armazenamento compartilhado ou consolidar os dados posteriormente. Na AWS, você pode usar um ELB, dimensionamento automático, várias instâncias do EC2 e EFS, mas parece que você deseja hardware. Sua pergunta não descreve muito bem o caso de uso.
Tim
11
Apenas uma nota, você não precisa de desempenho "pico" - você precisa "sustentada" desempenho de 1.1GBpS
jsbueno
11
@jsbueno Você está correto, no entanto, podemos escolher quantas cabeças de gravação serão ativadas, então 1 GB / s é o "pior caso", mas considerando que pode levar horas, o desempenho é sustentado.
SvennD

Respostas:

18

Absolutamente ... O ZFS no Linux é uma possibilidade se arquitetado corretamente. Existem muitos casos de design ruim do ZFS , mas bem feito, seus requisitos podem ser atendidos.

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

Preencha mais alguns detalhes e podemos ver se podemos ajudar.

Por exemplo, se este é NFS e com montagens síncronas, é definitivamente 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 a 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 custa aproximadamente US $ 17 mil a US $ 23 mil 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

Essa configuração forneceria 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 listrado). Eles podem acomodar 3 GB / s em gravações seqüenciais e possuem uma classificação de resistência alta o suficiente para lidar continuamente com a carga de trabalho que você descreveu. As unidades podem ser superprovisionadas facilmente para adicionar algumas proteções em um caso de uso SLOG.

Com a carga de trabalho do NFS, as gravações serão combinadas e liberadas para o disco giratório. No Linux, ajustávamos 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 de 10GbE de porta dupla. Então você tem flexibilidade de rede.

ewwhite
fonte
obrigado ewwwite; usaríamos o NFS, e há apenas um cliente (a máquina), opcionalmente, como dispositivo de leitura do nosso cluster. (mas qual processamento ou como é desconhecido) Temos o "espaço" disponível nos servidores de armazenamento RAID 6.
SvennD
@SvennD Se for NFS e com montagens síncronas, é definitivamente 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 a longo prazo. Os dados são compactáveis? Esse é outro fator. No entanto, o escopo disso está além do conselho que eu poderia dar em um fórum on-line gratuitamente. Minhas informações de contato estão disponíveis no meu perfil ServerFault . Entre em contato comigo se precisar discutir mais.
precisa saber é
5
O ZFS é mais do que capaz do que você está pedindo. A primeira questão será garantir que seu hardware real seja capaz disso. Será muito fácil criar acidentalmente um gargalo mais apertado que 1 GB / s no nível do adaptador ou do backplane, se você não tomar cuidado. Certifique-se de acertar essa parte e pergunte sobre como evitar truques no lado do ZFS.
Jim Salter
@SvennD Editado com uma especificação básica de projeto e custos aproximados.
precisa saber é
Eu acho que eu recomendaria um Oracle X6-2L sobre um servidor HP. O servidor Oracle vem com quatro portas de rede de 10 GB prontas para uso. E, na minha experiência, a HP leva você à morte pelo ILOM, licenciando o software ILOM, etc., a ponto de um servidor HP ser mais caro do que uma caixa equivalente da Oracle. Minha experiência também me diz que a caixa do Oracle superará a da HP - e será muito menos provável que a caixa da HP tenha um desses gargalos de hardware mencionados pelo @JimSalter. Sim, comprar da Oracle pode ser doloroso.
Andrew Henle
23

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

Há muitas informações ausentes (como você planeja acessar esses dados? A velocidade de leitura é importante? Você vai escrever em grandes partes? 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)
  • ajustar o tamanho do ioblock para lidar com grandes gravações de dados
  • use uma placa RAID de hardware com cache de gravação protegido por powerloss; se o uso de RAID de hardware estiver fora de questão, use um esquema RAID10 de software (evitando qualquer modo RAID baseado em paridade)
  • use duas interfaces de rede de 10 Gb / s com LACP (agregação de link)
  • certifique-se de ativar os Jumbo Frames
  • como você usará o NFS, considere usar o pNFS (v4.1) para aumentar a escalabilidade
  • certamente muitas outras coisas ...
shodanshok
fonte
3
Além disso, se estiver usando o XFS, coloque o diário em um par SSD RAID1.
TB
2
Se estiver usando uma placa RAID com um cache de write-back protegido por powerloss, o diário poderá ser deixado na matriz principal: o cache de gravação absorverá e coalescerá as gravações do diário. Além disso, pelo que o OP descreve, a carga de metadados deve ser bastante baixa em comparação com a de fluxo de dados.
shodanshok
2
O ZFS funcionaria bem e pode ser muito mais rápido que o XFS. Claro, você precisará configurá-lo corretamente e ter RAM e SSDs para o ZIL e SLOG, mas isso provavelmente não importa com as velocidades necessárias.
precisa saber é o seguinte
3
Eu vejo o XFS no Linux como tecnologia antiga. O OP poderia facilmente executar o ZFS no topo do RAID de hardware. O motivo pelo qual recomendo o ZFS é permitir que as gravações síncronas do NFS recebidas sejam absorvidas pelo SLOG com baixa latência, sem a necessidade de um pool totalmente SSD.
precisa saber é
6
Um Shelby Cobra é uma "tecnologia antiga", mas ainda pode fumar a maioria dos carros fora do portão. O ZFS nunca foi projetado como um sistema de arquivos de alto desempenho e, embora seja possível ajustá-lo de maneira que seja extremamente rápido com uma carga de trabalho específica, ele não é projetado para ele por padrão. É preciso mais hardware, muito mais memória e muito ajuste para superar o que o XFS oferece gratuitamente, com algumas opções de montagem e formatação de arquivos.
TB
4

A Ethernet de 25 Gbps já é da fronteira principal, enquanto o NVMe à base de PCIe aumenta esse tráfego facilmente.

Para referência, criei recentemente uma pequena solução de 'captura de log' usando quatro servidores xeon duplos regulares (HPE DL380 Gen9s neste caso), cada um com 6 unidades NVMe, usei IP sobre Infiniband, mas essas placas de rede de 25 / 40Gbps seriam as mesmas e estamos capturando até 8 GBps por servidor - é um prazer.

Basicamente, não é barato, mas é muito factível atualmente.

Chopper3
fonte
11
Sim, mas como você armazena ~ 50 TB nos NVMe's? Spinners são baratos, então como é que vamos unir para manter a velocidade até o par ...
SvennD
Bom ponto, realisticamente, você só precisa obter 4 x 4 TB em um servidor, eu uso vários servidores, presumivelmente você não pode? caso contrário, são apenas cargas de 2,5 "10krpm no R10
Chopper3 4/17/17
Não quero é mais parecido, não precisaremos dessas especificações, exceto para entrar na porta, e não quero o pesadelo da sobrecarga de vários servidores. por apenas uma máquina. O R10 seria rápido o suficiente? (RAID harware?)
SvennD
Temos uma caixa do Windows 2012R2 que construímos a partir de um kit sobressalente que não estava sendo usado, usamos como NAS, possui 6 SSDs SAS de 400 GB internamente, 8 prateleiras D2600 cada uma com 25 discos SAS de 10 GB de 900 GB e um D6000 prateleira com discos de 70 x 4 TB e que pode inundar uma placa de rede de 10 Gbps facilmente - não tentei com uma placa de rede de 25 Gb ainda tbh.
precisa saber é o seguinte
11
@MSalters Existem várias unidades de 8/10 TB PMR (não SMR) com taxa de transferência no intervalo de 200 MB / s. Uma matriz de 12 ou 16 unidades, tanto em RAID10 quanto em RAID6, deve facilmente exceder a velocidade de transferência necessária de 1,1 GB / s.
shodanshok
2

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

(O link é a configuração padrão de 12 GB, mas eles observam que 20x4 TB também é uma opção. Nenhuma experiência pessoal com esse servidor de modelo específico.)

MSalters
fonte
4
Bem, por "produto padrão" você se refere a uma "caixa preta de software" com 20 x 600gb sas 15k e 3 x SSDs corporativos. É uma oferta justa, recebemos uma similar do nosso fornecedor de hardware, mas o custo de licenciamento para mim é louco por algo que é basicamente gratuito (ZFS) Obrigado por compartilhar a compilação! (ligação agradável)
SvennD
2

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

A rede é de 10GbE com cabos de fibra, 9000 MTU na Ethernet, e a camada de aplicação é 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 portas adicional e mais lento).

Converse com qualquer administrador de sistema experiente e eles deverão informar exatamente quais controladores e unidades atenderiam aos seus requisitos.

Eu acho que você pode tentar com qualquer controlador de 12 Gb / se configurar duas faixas espelhadas de oito unidades de 7200 RPM cada (quase todas as unidades devem fazer). Inicie as conexões TCP 3-4 para saturar o link e, se um único par de placas de 10GbE não puder lidar com isso, use quatro placas.

Ярослав Рахматуллин
fonte
2

É algo tangente, mas considere usar o InfiniBand em vez de links duplos de 10GbE. Você pode obter placas Infiniband de 56 Gbps muito baratas, ou placas de 100 Gbps por muito pouco, e no Linux é fácil usar o NFS com RDMA sobre IB, o que lhe dará latência extremamente baixa e taxa de transferência de velocidade da linha quase teórica (se o armazenamento subjacente puder lidar com isso). Você não precisa de um switch, 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 56Gbps de porta única (8x PCIe 3.0) como o MCB191A-FCAT custa menos de 700 dólares e um cabo de conexão direta de cobre de 2 metros custa 80 dólares.

O desempenho geralmente expulsará 10 GbE 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 nem todos podem usar o InfiniBand (e mesmo assim, os switches da Mellanox podem conectar 10GbE e 40GbE ao IB, mas isso é um pouco mais de investimento, claro).

Joakim Ziegler
fonte
1

É possível fazer isso com o ZFS, no entanto, considere usar o FreeBSD, pois o FreeBSD tem a 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 realisticamente usando apenas discos rígidos comuns. Você diz que precisa de 75 TB de espaço, para poder usar 24 discos rígidos de 8 TB em espelhos. Isso daria a você velocidade de gravação de 12x de uma única unidade e velocidade de leitura de unidade de 24x. Como essas unidades têm mais velocidade de gravação do que 100 MBps, isso deve ser capaz de lidar facilmente com a largura de banda. Certifique-se de não receber 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 com thread único. Como tal, você deve ter uma CPU com uma taxa de clock razoavelmente rápida para não bloquear.

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

mzhaase
fonte
12
"O FreeBSD tem uma pilha de rede mais rápida" [precisa de citação]
Jim Salter
Exatamente. Linux é bastante capaz.
precisa saber é
1

Vinculamos os dados de despejo de 10G NIC a um cluster Gluster sobre seu cliente de fusível. Demora um pouco de ajuste que você não acreditaria no desempenho que pode alcançar desde o 3.0.

pozcircuitboy
fonte