Requisiti di velocità di scrittura: 1.1GB / s possibilità?


29

Avremo una macchina al lavoro, che al massimo delle prestazioni, dovrebbe essere in grado di inviare 50 ("testine di scrittura") x 75 GB di dati all'ora. Sono le massime prestazioni di ~ 1100 MB / s di velocità di scrittura. Per ottenerlo dalla macchina, sono necessarie due linee da 10 GBi. La mia domanda è: che tipo di tecnologia server + può gestire / archiviare tale flusso di dati?

Attualmente per l'archiviazione dei dati lavoriamo con ZFS, sebbene la velocità di scrittura non sia mai stata una domanda. (non siamo nemmeno vicini a queste velocità) ZFS (zfs su linux) sarebbe un'opzione? Dobbiamo anche archiviare molti dati, la "guida IT" suggerisce tra 50 e 75 TB in totale. Quindi probabilmente non può essere tutto SSD a meno che non vogliamo offrire al nostro primogenito.

Alcune aggiunte basate sulle risposte eccellenti:

  • il massimo è 50x75 GB / ora durante il picco, che è inferiore a 24 ore (molto probabilmente <6 ore)
  • Non prevediamo che ciò accada presto, molto probabilmente avremo 5-10x75 GB / ora
  • è una macchina pre-alfa, tuttavia i requisiti devono essere soddisfatti (anche se sono in gioco molti punti interrogativi)
  • useremmo NFS come il collegamento dalla macchina al server
  • layout: macchina generatrice -> memoria (questa) -> (raid sicuro 6) -> cluster di calcolo
  • quindi la velocità di lettura non è essenziale , ma sarebbe bello usarla dal cluster di calcolo (ma questo è completamente opzionale)
  • molto probabilmente saranno file di dati di grandi dimensioni (non molti piccoli)

8
mb come in megaBIT o megaByte? Utilizzare MBi MiBi MByte o MB per denunciare i byte. Anche 2 linee da 10 gbit ti daranno 2400 MByte / s
mzhaase il

1
Ora è più chiaro, grazie. Qualche altra domanda. Le massime prestazioni sono 1,1 GBps, ma qual è la media? Quanto durano questi picchi? E qual è il rendimento minimo continou che sei disposto ad accettare? La scrittura è un file grande o più piccoli? Che tipo di protocollo verrà utilizzato? Che tipo di ridondanza vuoi? Sembra una specie di attrezzatura medica o scientifica, puoi forse collegare la scheda tecnica? Dato che stai già utilizzando ZFS, potresti entrare in contatto con una società di archiviazione specializzata ZFS, di cui ce ne sono un paio. Potrebbero specificare un sistema per te.
mzhaase,

2
Questo deve davvero essere fatto con una sola macchina? Il bilanciamento del carico su più macchine potrebbe semplificarlo. È possibile utilizzare l'archiviazione condivisa o consolidare i dati in un secondo momento. Su AWS potresti usare un ELB, il ridimensionamento automatico, un numero di istanze EC2 ed EFS, ma sembra che tu voglia l'hardware. La tua domanda non descrive molto bene il caso d'uso.
Tim

1
Solo una nota, non hai bisogno di prestazioni "di punta" - hai bisogno di prestazioni "sostenute" di 1,1 GBpS
jsbueno

1
@jsbueno Hai ragione, tuttavia possiamo scegliere quante testine di scrittura attivare, quindi 1 GB / s è il "caso peggiore", ma considerando che potrebbero volerci ore sono prestazioni sostenute.
SvennD,

Risposte:


18

Assolutamente ... ZFS su Linux è una possibilità se progettato correttamente. Esistono molti casi di progettazione ZFS scadente , ma ben fatti, i tuoi requisiti possono essere soddisfatti.

Quindi il determinante principale sarà il modo in cui ti connetti a questo sistema di archiviazione dei dati. È NFS? CIFS? Come si connettono i client allo storage? Oppure l'elaborazione, ecc. Viene eseguita sul sistema di archiviazione?

Inserisci alcuni dettagli in più e possiamo vedere se possiamo aiutarti.

Ad esempio, se si tratta di NFS e con montaggi sincroni, è sicuramente possibile ridimensionare ZFS su Linux per soddisfare le esigenze di prestazioni di scrittura e mantenere comunque i requisiti di capacità di archiviazione a lungo termine. I dati sono comprimibili? Come è collegato ciascun client? Ethernet Gigabit?


Modificare:

Ok, ti ​​mordo:

Ecco una specifica che costa circa $ 17k - $ 23k e si adatta a uno spazio rack 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

Questa configurazione ti fornirebbe 80 TB di spazio utilizzabile tramite hardware RAID6 o ZFS RAIDZ2.

Poiché l'attenzione è rivolta alle prestazioni basate su NFS (presupponendo scritture sincrone), possiamo assorbire facilmente tutte quelle con le unità NVMe P3608 (SLOG a strisce). Possono contenere 3 GB / s nelle scritture sequenziali e hanno un livello di resistenza sufficientemente alto da gestire continuamente il carico di lavoro descritto. Le unità possono essere facilmente sovrascritte per aggiungere alcune protezioni in un caso d'uso SLOG.

Con il carico di lavoro NFS, le scritture verranno coalizzate e scaricate sul disco rotante. Sotto Linux, vorremmo sintonizzarlo per scaricare ogni 15-30 secondi. I dischi rotanti potrebbero gestirlo e potrebbero trarne ancora di più benefici se questi dati sono comprimibili.

Il server può essere espanso con altri 4 slot PCIe aperti e una porta aggiuntiva per adattatori FLR 10GbE a doppia porta. Quindi hai flessibilità di rete.


grazie ewwwite; useremmo NFS, e c'è solo un client (la macchina) facoltativamente lo useremmo come dispositivo di lettura dal nostro cluster. (ma quale elaborazione o come è sconosciuta) Abbiamo lo "spazio" disponibile sui server di archiviazione raid 6.
SvennD

@SvennD Se si tratta di NFS e con montaggi sincroni, è sicuramente possibile ridimensionare ZFS su Linux per soddisfare le esigenze di prestazioni di scrittura e mantenere comunque i requisiti di capacità di archiviazione a lungo termine. I dati sono comprimibili? Questo è un altro fattore. Tuttavia, la portata di questo va oltre il consiglio che potrei dare gratuitamente su un forum online. Le mie informazioni di contatto sono disponibili nel mio profilo ServerFault . Contattami se hai bisogno di discutere ulteriormente.
ewwhite,

5
ZFS è più che capace di quello che stai chiedendo. Il primo problema sarà assicurarsi che l' hardware effettivo sia in grado di farlo. Sarà abbastanza facile creare accidentalmente un collo di bottiglia più stretto di 1 GB / sec a livello di adattatore o backplane, se non stai attento. Assicurati di ottenere QUELLA parte giusta, quindi chiedi come evitare i gotchas sul lato ZFS.
Jim Salter,

@SvennD Modificato con una specifica di progettazione di base e costi approssimativi.
ewwhite,

Penso che consiglierei un Oracle X6-2L su un server HP. Il server Oracle viene fornito con quattro porte di rete da 10 GB pronte all'uso. E secondo la mia esperienza, HP ti fa morire e morire per ILOM, concedere in licenza software ILOM, ecc. Al punto che un server HP è più costoso di una scatola Oracle equivalente. La mia esperienza mi dice anche che la scatola Oracle supererà la scatola HP ed è molto meno probabile che la scatola HP abbia uno di quei colli di bottiglia hardware menzionati da @JimSalter. Sì, acquistare da Oracle può essere doloroso.
Andrew Henle,

23

Per una tale estrema velocità di scrittura, suggerisco contro ZFS, BTRFS o qualsiasi file system CoW. Vorrei usare XFS, che è estremamente efficiente su trasferimenti di grandi dimensioni / streaming.

Ci sono molte informazioni mancanti (come pensi di accedere a questi dati? La velocità di lettura è importante? Hai intenzione di scrivere in grossi blocchi? Ecc.) Per darti consigli specifici, tuttavia alcuni consigli generali sono:

  • usa XFS sopra una partizione non elaborata o un volume LVM grasso (non usare volumi sottili)
  • ottimizza le dimensioni dello ioblock per far fronte in modo efficiente a grandi scritture di dati
  • utilizzare una scheda RAID hardware con cache di scrittura protetta da perdita di potenza; se l'utilizzo del RAID hardware è fuori discussione, utilizzare uno schema RAID10 software (evitando qualsiasi modalità RAID basata sulla parità)
  • utilizzare due interfacce di rete da 10 Gb / s con LACP (aggregazione dei collegamenti)
  • assicurati di abilitare Jumbo Frames
  • mentre utilizzerai NFS, considera di usare pNFS (v4.1) per una maggiore scalabilità
  • sicuramente molte altre cose ...

3
Inoltre, se si utilizza XFS, inserire il journal su una coppia SSD RAID1.
TB

2
Se si utilizza una scheda RAID con una cache di writeback protetta da powerloss, il journal può essere lasciato sull'array principale: la cache di write assorbirà e fonderà le scritture del journal. Inoltre, da quanto descritto dall'OP, il carico di metadati dovrebbe essere piuttosto basso rispetto a quello di streaming dei dati.
shodanshok,

2
ZFS funzionerebbe bene e può andare molto più veloce di XFS. Certo, dovrai configurarlo correttamente e avere RAM e SSD per ZIL e SLOG, ma probabilmente non importa con le velocità richieste.
John Keates,

3
Vedo XFS su Linux come una vecchia tecnologia. L'OP potrebbe altrettanto facilmente eseguire ZFS su RAID hardware. Il motivo per cui consiglio ZFS è di consentire alle scritture sincrone NFS in arrivo di essere assorbite dallo SLOG a bassa latenza senza bisogno di un pool all-SSD.
ewwhite,

6
Una Shelby Cobra è una "vecchia tecnologia", ma può comunque fumare la maggior parte delle macchine fuori dal cancello. ZFS non è mai stato progettato come un filesystem ad alte prestazioni per cominciare, e sebbene sia possibile ottimizzarlo in modo tale che sia velocissimo con un carico di lavoro particolare, non è progettato per impostazione predefinita. Ci vorrà più hardware, molta più memoria e molta ottimizzazione per farlo battere ciò che XFS ti offre gratuitamente con alcune opzioni di montaggio e formattazione dei file.
TB

4

Ethernet a 25 Gbps è già borderline-mainstream, mentre NVMe basato su PCIe farà passare facilmente quel traffico.

Per riferimento ho recentemente creato una piccola soluzione di "acquisizione dei log" utilizzando quattro normali server dual-xeon (in questo caso HPE DL380 Gen9), ognuno con 6 unità NVMe, ho usato IP su Infiniband ma quelle schede NIC a 25/40 Gbps sarebbero state le stesse e stiamo acquisendo fino a 8 GBps per server - funziona a meraviglia.

Fondamentalmente non è economico ma è molto fattibile in questi giorni.


1
Sì, ma come si memorizzano ~ 50 TB su NVMe? I filatori sono economici, quindi come possiamo unirci per mantenere la velocità alla pari ...
SvennD

Bene, realisticamente devi ottenere solo 4 x 4 TB in un server, io uso più server, presumibilmente non puoi? altrimenti è solo un sacco di 2,5 "10krpm in R10
Chopper3

Non voglio è più simile, non avremo bisogno di quelle specifiche se non per entrare nella porta e non voglio l'incubo del sovraccarico di più server. per una sola macchina. R10 sarebbe abbastanza veloce? (raid harware?)
SvennD

Abbiamo una scatola Windows 2012R2 che abbiamo costruito da un kit di riserva che non era in uso, lo usiamo come NAS, ha 6 SSD SAS da 400 GB internamente, 8 ripiani D2600 ciascuno con 25 dischi SAS da 10k da 900 GB e un D6000 ripiano con dischi da 70 x 4 TB e che può inondare facilmente una scheda NIC da 10 Gbps - non provato con una scheda NIC da 25 Gb ma tbh
Chopper3

1
@MSalters Esistono diverse unità PMR (non SMR) da 8/10 TB con velocità di trasferimento nell'intervallo di 200 MB / s. Un array di 12 o 16 unità, sia in RAID10 che RAID6, dovrebbe facilmente superare la velocità di trasferimento richiesta di 1,1 GB / s.
shodanshok,

2

Non sembra un grosso problema. Il nostro fornitore di hardware locale ha questo come prodotto standard - apparentemente può spingere 1400 MB / s in modalità di registrazione TVCC, che dovrebbe essere più difficile dei tuoi requisiti di picco.

(Il collegamento è alla configurazione predefinita di 12 GB, ma notano anche che l'opzione 20x4 TB è un'opzione. Nessuna esperienza personale con questo particolare server modello.)


4
Bene, per "prodotto standard" ti riferisci a una "scatola di software nera" con 20 x 600 g sas 15k e 3 x ssd aziendali. È una buona offerta, ne abbiamo acquistato uno simile del nostro fornitore di hardware, ma il costo della licenza per me è pazzesco per qualcosa che è sostanzialmente gratuito (ZFS) Grazie per aver condiviso la build! (bel collegamento)
SvennD

2

Le scritture sequenziali a 1100 MB / s non sono un problema con l'hardware moderno. Aneddoticamente, la mia configurazione domestica con unità laptop 8x5900 RPM, unità 2x15000 RPM e unità 2x7200 RPM supporta 300 MB / s con un payload una tantum di 16 GB.

La rete è un 10GbE con cavi in ​​fibra, 9000 MTU su Ethernet e il livello dell'applicazione è Samba 3.0. La memoria è configurata in raid50 con tre strisce su tre volumi raid5 a 4 unità. Il controller è LSI MegaRAID SAS 9271-8i con un massimo di 6 Gb / s per porta (ho un moltiplicatore di porte aggiuntivo e più lento).

Parla con qualsiasi amministratore di sistema esperto e dovrebbero essere in grado di dirti esattamente quali controller e unità soddisferebbero le tue esigenze.

Penso che puoi provare con qualsiasi controller da 12 Gb / s e configurare due strisce speculari di otto unità da 7200 RPM ciascuna (quasi ogni unità dovrebbe fare). Avvia 3-4 connessioni TCP per saturare il collegamento e se una singola coppia di schede 10GbE non è in grado di gestirlo, utilizza quattro schede.


2

Qualcosa di tangente, ma considera l'utilizzo di InfiniBand invece di doppi collegamenti 10GbE. Puoi ottenere schede Infiniband a 56 Gbps abbastanza economiche, o 100 Gbps per non troppo, e su Linux è facile usare NFS con RDMA su IB, che ti darà latenza estremamente bassa e velocità di trasmissione quasi teorica (se la tua memoria sottostante può occupatene). Non è necessario un interruttore, solo due schede InfiniBand e un cavo di collegamento diretto (o un cavo in fibra InfiniBand se sono necessarie distanze più lunghe).

Una scheda Mellanox a 56 Gbps a porta singola (8x PCIe 3.0) come l'MCB191A-FCAT costa meno di 700 dollari e un cavo di collegamento diretto in rame da 2 metri è come 80 dollari.

Le prestazioni generano generalmente 10 GbE fuori dall'acqua in tutti i casi d'uso. Non ci sono aspetti negativi, a meno che non sia necessario accedere al server da molti client diversi che non possono utilizzare InfiniBand (e anche in questo caso, gli switch di Mellanox possono collegare 10GbE e 40GbE a IB, ma è un po 'più un investimento, ovviamente).


1

In questo modo con ZFS è possibile, tuttavia, considera l'utilizzo di FreeBSD poiché FreeBSD ha lo stack di rete più veloce. Ciò consentirebbe probabilmente 100 GBit su una singola macchina.

1100 MBps suona molto, ma puoi realisticamente raggiungere questo obiettivo utilizzando solo hard disk regolari. Dici che hai bisogno di 75 TB di spazio, quindi potresti usare 24 dischi rigidi da 8 TB nei mirror. Ciò ti darebbe una velocità di scrittura 12x di una singola unità e una velocità di lettura di 24x unità. Poiché queste unità hanno una velocità di scrittura superiore a 100 MBps, questo dovrebbe essere facilmente in grado di gestire la larghezza di banda. Assicurati di non avere unità SMR, poiché hanno velocità di scrittura enormemente più lente.

ZFS crea checksum per ogni blocco. Questo è implementato a thread singolo. Come tale, dovresti avere una CPU con una frequenza di clock ragionevolmente veloce da non bloccare.

Tuttavia, i dettagli esatti dell'implementazione dipendono fortemente dai dettagli.


12
"FreeBSD ha uno stack di rete più veloce" [necessita di citazione]
Jim Salter il

Esattamente. Linux è abbastanza capace.
ewwhite,

1

Abbiamo collegato i dati di dumping di una scheda NIC 10G a un cluster Gluster tramite il loro client di fusione. Ci vuole un po 'di ottimizzazione che non crederesti in termini di prestazioni dalla 3.0.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.