Schreibgeschwindigkeitsanforderung: 1.1GB / s Möglichkeiten?

29

Wir werden eine Maschine in Betrieb haben, die bei maximaler Leistung 50 ("Schreibköpfe") x 75 GB Daten pro Stunde übertragen kann. Das ist eine Spitzenleistung von ~ 1100 MB / s Schreibgeschwindigkeit. Um das von der Maschine zu bekommen, werden zwei 10GBi-Leitungen benötigt. Meine Frage ist, welche Art von Server + Technologie kann solchen Datenfluss verarbeiten / speichern?

Derzeit arbeiten wir für die Datenspeicherung mit ZFS, obwohl Schreibgeschwindigkeiten nie eine Frage waren. (wir sind diesen Geschwindigkeiten nicht einmal nahe) Wäre ZFS (zfs unter Linux) eine Option? Wir müssen auch viele Daten speichern, der "IT-Leitfaden" schlägt insgesamt zwischen 50 und 75 TB vor. Es können also wahrscheinlich nicht alle SSDs sein, es sei denn, wir möchten unserem erstgeborenen Kind etwas anbieten.

Einige Ergänzungen aufgrund der hervorragenden Antworten:

  • Das Maximum ist 50x75GB / Stunde während der Spitzenzeit, die weniger als 24 Stunden beträgt (höchstwahrscheinlich <6 Stunden).
  • Wir gehen nicht davon aus, dass dies bald passieren wird. Wahrscheinlich werden wir 5-10x75GB / Stunde ausführen
  • Es ist eine Pre-Alpha-Maschine, aber die Anforderungen sollten erfüllt sein (obwohl viele Fragezeichen im Spiel sind)
  • Wir würden NFS als Verbindung vom Computer zum Server verwenden
  • layout: maschine generieren -> speicher (dieses) -> (safe raid 6) -> cluster berechnen
  • Die Lesegeschwindigkeit ist also nicht unbedingt erforderlich , aber es wäre schön, sie aus dem Compute-Cluster zu verwenden (dies ist jedoch völlig optional).
  • höchstwahrscheinlich handelt es sich um große Datendateien (nicht viele kleine)
SvennD
quelle
8
mb wie in megaBIT oder megaByte? Bitte verwenden Sie MBi MiBi MByte oder MB, um Bytes anzuzeigen. Auch 2 10-Gbit-Leitungen geben Ihnen 2400 MByte / s
mzhaase
1
Es ist jetzt klarer, danke. Noch ein paar Fragen. Die Spitzenleistung liegt bei 1,1 GBit / s, aber was ist der Durchschnitt? Wie lange halten diese Spitzen? Und was ist der minimale kontinuierliche Durchsatz, den Sie akzeptieren möchten? Ist das Schreiben eine große Datei oder mehrere kleine? Welche Art von Protokoll wird verwendet? Welche Art von Redundanz möchten Sie? Es klingt wie eine Art medizinisches oder wissenschaftliches Gerät. Können Sie vielleicht das Datenblatt verlinken? Da Sie bereits ZFS verwenden, können Sie mit einem ZFS-spezialisierten Speicherunternehmen in Kontakt treten, von dem es einige gibt. Sie könnten ein System für Sie ausarbeiten.
mzhaase
2
Muss das wirklich mit einer einzigen Maschine gemacht werden? Der Lastenausgleich auf mehrere Computer könnte dies vereinfachen. Sie können Shared Storage verwenden oder die Daten später konsolidieren. In AWS können Sie ein ELB, eine automatische Skalierung, eine Reihe von EC2-Instanzen und EFS verwenden, aber es scheint, als wollten Sie Hardware. Ihre Frage beschreibt den Anwendungsfall nicht sehr gut.
Tim
1
Nur eine Anmerkung, Sie brauchen keine "Spitzen" -Leistung - Sie brauchen eine "anhaltende" Leistung von 1,1 GBps
jsbueno
1
@jsbueno Sie haben Recht, wir können jedoch festlegen, wie viele Schreibköpfe aktiviert werden sollen. Daher ist 1 GB / s der "schlimmste Fall", wenn man jedoch bedenkt, dass es Stunden dauern kann, bis die Leistung erhalten bleibt.
6.

Antworten:

18

Absolut ... ZFS unter Linux ist eine Möglichkeit, wenn es richtig aufgebaut ist. Es gibt viele Fälle von schlechtem ZFS-Design , aber gut gemacht, können Ihre Anforderungen erfüllt werden.

Die wichtigste Determinante ist also, wie Sie sich mit diesem Datenspeichersystem verbinden. Ist es NFS? CIFS? Wie stellen die Clients eine Verbindung zum Speicher her? Oder erfolgt die Bearbeitung etc. auf dem Speichersystem?

Geben Sie weitere Details ein und wir können sehen, ob wir helfen können.

Wenn dies beispielsweise NFS und synchrone Bereitstellungen sind, ist es definitiv möglich, ZFS unter Linux zu skalieren, um die Anforderungen an die Schreibleistung zu erfüllen und gleichzeitig die Anforderungen an die langfristige Speicherkapazität zu erfüllen. Sind die Daten komprimierbar? Wie ist jeder Client verbunden? Gigabit Ethernet?


Bearbeiten:

Okay, ich werde beißen:

Hier ist eine Spezifikation, die zwischen 17.000 und 23.000 US-Dollar liegt und in ein 2- HE-Rack passt.

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

Dieses Setup würde Ihnen mit Hardware-RAID6 oder ZFS-RAIDZ2 80 TB nutzbaren Speicherplatz zur Verfügung stellen.

Da der Schwerpunkt auf der NFS-basierten Leistung liegt (sofern synchrone Schreibvorgänge vorausgesetzt werden), können wir diese mit den P3608 NVMe-Laufwerken (Striped SLOG) problemlos absorbieren. Sie bieten Platz für 3 GB / s bei sequenziellen Schreibvorgängen und verfügen über eine ausreichende Ausdauer, um die von Ihnen beschriebene Arbeitslast kontinuierlich zu bewältigen. Die Laufwerke können leicht überlastet werden, um unter einem SLOG-Anwendungsfall einige Schutzfunktionen hinzuzufügen.

Mit der NFS-Workload werden die Schreibvorgänge zusammengeführt und auf die sich drehende Festplatte übertragen. Unter Linux würden wir dies so einstellen, dass alle 15-30 Sekunden eine Leerung erfolgt. Die sich drehenden Festplatten könnten damit umgehen und könnten sogar noch mehr davon profitieren, wenn diese Daten komprimierbar sind.

Der Server kann mit 4 weiteren offenen PCIe-Steckplätzen und einem zusätzlichen Port für 10-GbE-FLR-Adapter mit zwei Ports erweitert werden. Sie haben also Netzwerkflexibilität.

ewwhite
quelle
danke ewwwite; Wir würden NFS verwenden, und es gibt nur einen Client (den Computer). Optional würden wir ihn als Lesegerät für unseren Cluster verwenden. (aber welche Verarbeitung oder wie ist unbekannt) Wir haben den "Speicherplatz" auf RAID 6-Speicherservern zur Verfügung.
4.
@SvennD Wenn es sich um NFS handelt und synchrone Bereitstellungen verwendet werden, ist es auf jeden Fall möglich, ZFS unter Linux zu skalieren, um die Anforderungen an die Schreibleistung zu erfüllen und gleichzeitig die Anforderungen an die langfristige Speicherkapazität aufrechtzuerhalten. Sind die Daten komprimierbar? Das ist ein weiterer Faktor. Dies geht jedoch über den Rat hinaus, den ich in einem kostenlosen Online-Forum geben könnte. Meine Kontaktinformationen sind in meinem ServerFault-Profil verfügbar . Kontaktieren Sie mich, wenn Sie weitere Fragen haben.
ewwhite
5
ZFS ist mehr als fähig, was Sie verlangen. Das erste Problem wird darin bestehen, sicherzustellen, dass Ihre tatsächliche Hardware dazu in der Lage ist. Es ist ziemlich einfach, versehentlich einen Engpass von weniger als 1 GB / s auf Adapter- oder Rückwandplatinenebene zu erzeugen, wenn Sie nicht vorsichtig sind. Vergewissern Sie sich, dass Sie DIESES Teil richtig verstanden haben, und fragen Sie dann, wie Sie ZFS-Stolperfallen vermeiden können.
Jim Salter
@SvennD Bearbeitet mit einer grundlegenden Designspezifikation und groben Kosten.
ewwhite
Ich denke, ich würde ein Oracle X6-2L über einen HP-Server empfehlen . Der Oracle-Server verfügt über vier sofort einsatzbereite 10-GB-Netzwerkports. Und meiner Erfahrung nach bringt HP Sie für ILOM, die Lizenzierung von ILOM-Software usw. zu Tode, bis ein HP-Server teurer ist als eine vergleichbare Oracle-Box. Meine Erfahrung zeigt mir auch, dass die Oracle-Box die HP-Box übertreffen wird - und mit viel geringerer Wahrscheinlichkeit als die HP-Box einen dieser Hardware-Engpässe aufweist, die von @JimSalter erwähnt werden. Ja, das Kaufen bei Oracle kann schmerzhaft sein.
Andrew Henle
23

Für solch eine extreme Schreibgeschwindigkeit empfehle ich ZFS, BTRFS oder ein beliebiges CoW-Dateisystem. Ich würde XFS verwenden, was bei großen / Streaming-Übertragungen äußerst effizient ist.

Es fehlen viele Informationen (wie wollen Sie auf diese Daten zugreifen? Sind die Lesegeschwindigkeiten wichtig? Werden Sie in großen Blöcken schreiben? Usw.), um Ihnen spezifische Ratschläge zu geben. Einige allgemeine Ratschläge lauten jedoch:

  • Verwenden Sie XFS auf einer unformatierten Partition oder einem fetten LVM-Volume (verwenden Sie keine dünnen Volumes).
  • Passen Sie die ioblock-Größe an, um das Schreiben großer Datenmengen effizient zu bewältigen
  • Verwenden Sie eine Hardware-RAID-Karte mit einem durch Stromausfall geschützten Schreibcache. Wenn die Verwendung von Hardware-RAID nicht in Frage kommt, verwenden Sie ein Software-RAID-10-Schema (Vermeidung eines paritätsbasierten RAID-Modus).
  • Verwenden Sie zwei 10-Gbit / s-Netzwerkschnittstellen mit LACP (Link Aggregation)
  • Stellen Sie sicher, dass Jumbo Frames aktiviert sind
  • Wenn Sie NFS verwenden möchten, sollten Sie pNFS (v4.1) verwenden, um die Skalierbarkeit zu verbessern
  • sicherlich viele andere Dinge ...
Shodanshok
quelle
3
Wenn Sie XFS verwenden, platzieren Sie das Journal auch auf einem SSD-RAID1-Paar.
TB
2
Wenn Sie eine RAID-Karte mit einem durch Stromausfall geschützten Rückschreibcache verwenden, kann das Journal im Hauptarray belassen werden: Der Schreibcache nimmt die Journalschreibvorgänge auf und führt sie zusammen. Darüber hinaus sollte die Metadatenlast, wie im OP beschrieben, im Vergleich zu Daten-Streaming relativ gering sein.
Shodanshok
2
ZFS würde gut funktionieren und kann viel schneller als XFS sein. Sicher, Sie müssen es richtig einrichten und über RAM und SSDs für ZIL und SLOG verfügen, aber das spielt bei den erforderlichen Geschwindigkeiten wahrscheinlich keine Rolle.
John Keates
3
Ich betrachte XFS unter Linux als alte Technologie. Das OP könnte genauso einfach ZFS auf einem Hardware-RAID ausführen. Der Grund, warum ich ZFS empfehle, besteht darin, dass eingehende synchrone NFS-Schreibvorgänge mit geringer Latenz vom SLOG absorbiert werden können, ohne dass ein All-SSD-Pool erforderlich ist.
ewwhite
6
Eine Shelby Cobra ist "alte Technologie", aber sie kann die meisten Autos aus dem Tor rauchen. ZFS wurde von Anfang an nie als hochleistungsfähiges Dateisystem entwickelt, und obwohl es möglich ist, es so zu optimieren, dass es bei einer bestimmten Arbeitsauslastung unglaublich schnell ist, ist es standardmäßig nicht dafür ausgelegt. Es wird mehr Hardware, viel mehr Speicher und eine Menge Tuning benötigen, um das zu erreichen, was XFS Ihnen mit ein paar Dateimount- und Formatierungsoptionen kostenlos bietet.
TB
4

25-Gbit / s-Ethernet ist bereits Borderline-Mainstream, während PCIe-basiertes NVMe diesen Datenverkehr problemlos überbrückt.

Als Referenz habe ich kürzlich eine kleine Lösung zur Protokollaufzeichnung mit vier regulären Dual-xeon-Servern (in diesem Fall HPE DL380 Gen9) mit jeweils 6 x NVMe-Laufwerken erstellt. Ich habe IP über Infiniband verwendet, aber diese NICs mit 25/40 Gbit / s wären dieselben und wir erfassen bis zu 8 GBit / s pro Server - das ist ein Vergnügen.

Im Grunde ist es nicht billig, aber es ist heutzutage sehr machbar.

Chopper3
quelle
1
Ja, aber wie speichert man ~ 50 TB bei NVMe? Spinner sind billig, also wie können wir zusammenfassen, um die Geschwindigkeit auf dem
neuesten Stand
Guter Punkt, realistisch gesehen muss man nur 4 x 4 TB auf einem Server haben, ich benutze mehrere Server, vermutlich können Sie das nicht? ansonsten sind es nur 2,5 "10krpm's in R10
Chopper3
Nicht wollen ist eher so, wir brauchen diese Spezifikationen nur, um in die Tür zu gelangen, und ich möchte nicht den Albtraum des Overheads mehrerer Server. für nur eine Maschine. Wäre R10 schnell genug? (harware raid?)
Mittwoch,
Wir haben eine Windows 2012R2-Box, die wir aus einem nicht verwendeten Ersatzkit gebaut haben. Wir verwenden sie als NAS. Sie hat intern 6 x 400 GB SAS-SSDs, 8 x D2600-Regale mit jeweils 25 x 900 GB 10 KB SAS-Festplatten und einen D6000 Regal mit 70 x 4 TB Festplatten und das kann eine 10-GBit / s-Netzwerkkarte leicht überfluten - nicht mit einer 25-GBit / s-Netzwerkkarte noch tbh ausprobiert.
Chopper3
1
@MSalters Es gibt eine Reihe von 8/10 TB PMR-Laufwerken (Nicht-SMR) mit einer Übertragungsrate im Bereich von 200 MB / s. Ein Array mit 12 oder 16 Laufwerken in RAID10 und RAID6 sollte die erforderliche Übertragungsgeschwindigkeit von 1,1 GB / s problemlos überschreiten.
Shodanshok
2

Klingt nicht nach einer großen Sache. Unser lokaler Hardwarelieferant hat dies als Standardprodukt eingeführt - anscheinend können 1400 MB / s im CCTV-Aufzeichnungsmodus gespeichert werden, was schwieriger sein sollte als Ihre Spitzenanforderungen.

(Der Link bezieht sich auf die Standardkonfiguration mit 12 GB, es wird jedoch darauf hingewiesen, dass auch 20 x 4 TB möglich sind. Es liegen keine persönlichen Erfahrungen mit diesem speziellen Modellserver vor.)

MSalters
quelle
4
Nun, unter "Standardprodukt" versteht man eine "schwarze Software-Box" mit 20 x 600 GB sas 15k und 3 x Enterprise-ssds. Es ist ein faires Angebot, wir haben ein ähnliches Angebot von unserem Hardwarehersteller, aber die Lizenzkosten sind für mich verrückt nach etwas, das grundsätzlich kostenlos ist (ZFS). Vielen Dank, dass Sie den Build geteilt haben! (nette Verbindung)
SvennD
2

Sequentielle Schreibvorgänge mit 1100 MB / s sind mit moderner Hardware kein Problem. Anekdotisch ist, dass mein Heim-Setup mit Laptop-Laufwerken mit 8 x 5900 U / min, Laufwerken mit 2 x 15000 U / min und Laufwerken mit 2 x 7200 U / min 300 MB / s mit einer einmaligen Nutzlast von 16 GB unterstützt.

Das Netzwerk ist 10 GbE mit Glasfaserkabeln, 9000 MTU im Ethernet und die Anwendungsschicht ist Samba 3.0. Der Speicher wird in raid50 mit drei Stripes über drei RAID5-Volumes mit vier Laufwerken konfiguriert. Der Controller ist LSI MegaRAID SAS 9271-8i mit bis zu 6 Gbit / s pro Port (ich habe einen zusätzlichen, langsameren Port-Multiplikator).

Sprechen Sie mit einem erfahrenen Systemadministrator, der Ihnen genau mitteilen kann, welche Controller und Laufwerke Ihren Anforderungen entsprechen.

Ich denke, Sie können es mit jedem 12-Gbit / s-Controller versuchen und zwei gespiegelte Stripes mit jeweils acht Laufwerken mit 7200 U / min konfigurieren (fast jedes Laufwerk sollte dies tun). Starten Sie 3-4 TCP-Verbindungen, um die Verbindung zu überlasten, und verwenden Sie vier Karten, wenn ein einzelnes Paar von 10-GbE-Karten nicht damit umgehen kann.

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

Etwas wie eine Tangente, aber erwägen Sie die Verwendung von InfiniBand anstelle von dualen 10-GbE-Links. Sie können 56-Gbit / s-Infinibandkarten recht günstig oder 100-Gbit / s-Infinibandkarten für nicht allzu viel mehr erwerben. Unter Linux ist es einfach, NFS mit RDMA über IB zu verwenden, wodurch Sie eine extrem niedrige Latenz und einen nahezu theoretischen Durchsatz bei der Leitungsgeschwindigkeit erhalten (sofern dies Ihr zugrunde liegender Speicher kann) damit umgehen). Sie benötigen keinen Switch, nur zwei InfiniBand-Karten und ein Direktanschlusskabel (oder ein InfiniBand-Glasfaserkabel, wenn Sie größere Entfernungen benötigen).

Eine Mellanox-56-Gbit / s-Karte mit einem Port (8x PCIe 3.0) wie der MCB191A-FCAT kostet weniger als 700 US-Dollar, und ein 2-Meter-Kupfer-Direktanschlusskabel kostet 80 US-Dollar.

Die Leistung wird in der Regel in allen Anwendungsfällen 10 GbE aus dem Wasser blasen. Es gibt keine Nachteile, es sei denn, Sie müssen von vielen verschiedenen Clients, die nicht alle InfiniBand verwenden können, auf den Server zugreifen (und selbst dann können die Switches von Mellanox 10 GbE und 40 GbE mit IB verbinden. Dies ist jedoch eine größere Investition. Na sicher).

Joakim Ziegler
quelle
1

Dies mit ZFS zu tun ist möglich, erwägen Sie jedoch die Verwendung von FreeBSD, da FreeBSD den schnelleren Netzwerkstack hat. Dies würde möglicherweise 100 GBit auf einer einzelnen Maschine ermöglichen.

1100 MBit / s klingt viel, aber Sie können dies realistisch erreichen, indem Sie nur normale Festplatten verwenden. Sie sagen, Sie benötigen 75 TB Speicherplatz, sodass Sie 24 Festplatten mit 8 TB in Spiegeln verwenden können. Dies würde Ihnen die 12-fache Schreibgeschwindigkeit eines einzelnen Laufwerks und die 24-fache Lesegeschwindigkeit des Laufwerks ermöglichen. Da diese Laufwerke eine Schreibgeschwindigkeit von mehr als 100 MBit / s haben, sollte dies die Bandbreite problemlos bewältigen können. Achten Sie besonders darauf, keine SMR-Laufwerke zu beschaffen, da diese erheblich langsamere Schreibgeschwindigkeiten haben.

ZFS erstellt Prüfsummen für jeden Block. Dies ist Single-Threaded implementiert. Als solches sollten Sie eine CPU mit einer einigermaßen schnellen Taktrate haben, um nicht zu blockieren.

Die genauen Implementierungsdetails hängen jedoch stark von den Details ab.

mzhaase
quelle
12
"FreeBSD hat einen schnelleren Netzwerk-Stack"
Jim Salter
Genau. Linux ist durchaus fähig.
ewwhite
1

Wir haben 10G-NIC-Dump-Daten über ihren Sicherungsclient an einen Gluster-Cluster gebunden. Es dauert ein wenig, bis Sie die Leistung, die es seit 3.0 erreichen kann, nicht glauben.

pozcircuitboy
quelle