Vitesse d'écriture requise: 1,1 Go / s de possibilités?

29

Nous aurons une machine au travail qui, sur des performances optimales, devrait être capable de pousser 50 ("têtes d'écriture") x 75 Go de données par heure. Il s'agit de performances de pointe d'une vitesse d'écriture d'environ 1100 Mo / s. Pour obtenir cela de la machine, il faut deux lignes de 10 Go. Ma question est quel type de serveur + technologie peut gérer / stocker un tel flux de données?

Actuellement, pour le stockage de données, nous travaillons avec ZFS, bien que les vitesses d'écriture n'aient jamais été un problème. (nous ne sommes même pas proches de ces vitesses) Est-ce que ZFS (zfs sur linux) serait une option? Nous devons également stocker beaucoup de données, le "guide informatique" suggère quelque part entre 50 et 75 To au total. Il ne peut donc pas s'agir de tous les SSD, sauf si nous voulons offrir à notre premier-né.

Quelques ajouts basés sur les excellentes réponses:

  • le maximum est de 50x75 Go / heure en période de pointe qui est inférieure à 24h (très probablement <6h)
  • Nous ne nous attendons pas à ce que cela se produise bientôt, très probablement, nous allons exécuter 5-10x75 Go / heure
  • c'est une machine pré-alpha, mais les exigences doivent être remplies (même si beaucoup de points d'interrogation sont en jeu)
  • nous utiliserions NFS comme connexion de la machine au serveur
  • mise en page: machine à générer -> stockage (celui-ci) -> (raid sécurisé 6) -> cluster de calcul
  • donc la vitesse de lecture n'est pas essentielle , mais ce serait bien de l'utiliser à partir du cluster de calcul (mais c'est complètement facultatif)
  • ce sera probablement de gros fichiers de données (pas beaucoup de petits)
SvennD
la source
8
mb comme en mégabit ou mégaoctet? Veuillez utiliser MBi MiBi MByte ou MB pour dénoncer les octets. De plus, 2 lignes de 10 gbit vous donneront 2400 Mo / s
mzhaase
1
C'est plus clair maintenant, merci. Encore quelques questions. Les performances maximales sont de 1,1 Go / s, mais quelle est la moyenne? Combien de temps durent ces pointes? Et quel est le débit continu minimum que vous êtes prêt à accepter? L'écriture est-elle un gros fichier ou plusieurs petits? Quel type de protocole sera utilisé? Quel type de redondance souhaitez-vous? Cela ressemble à une sorte d'équipement médical ou scientifique, pouvez-vous peut-être lier la fiche technique? Étant donné que vous utilisez déjà ZFS, vous pouvez entrer en contact avec une société de stockage spécialisée ZFS, dont il existe quelques-uns. Ils pourraient spécifier un système pour vous.
mzhaase
2
Doit-on vraiment le faire avec une seule machine? L'équilibrage de charge sur plusieurs machines pourrait faciliter cela. Vous pouvez utiliser le stockage partagé ou consolider les données ultérieurement. Sur AWS, vous pouvez utiliser un ELB, une mise à l'échelle automatique, un certain nombre d'instances EC2 et EFS, mais il semble que vous souhaitiez du matériel. Votre question ne décrit pas très bien le cas d'utilisation.
Tim
1
Juste une note, vous n'avez pas besoin de performances "maximales" - vous avez besoin de performances "soutenues" de 1,1 Go
s
1
@jsbueno Vous avez raison, mais nous pouvons choisir le nombre de têtes d'écriture à activer, donc 1 Go / s est le "pire des cas", mais étant donné que cela peut prendre des heures, il s'agit de performances soutenues.
SvennD

Réponses:

18

Absolument ... ZFS sous Linux est une possibilité s'il est correctement architecturé. Il existe de nombreux cas de mauvaise conception ZFS , mais bien fait, vos exigences peuvent être satisfaites.

Le principal déterminant sera donc la façon dont vous vous connecterez à ce système de stockage de données. Est-ce NFS? CIFS? Comment les clients se connectent-ils au stockage? Ou le traitement, etc. est-il effectué sur le système de stockage?

Remplissez plus de détails et nous pouvons voir si nous pouvons vous aider.

Par exemple, s'il s'agit de NFS et de montages synchrones, il est certainement possible de faire évoluer ZFS sous Linux pour répondre aux besoins de performances d'écriture tout en conservant l'exigence de capacité de stockage à long terme. Les données sont-elles compressibles? Comment chaque client est-il connecté? Gigabit Ethernet?


Modifier:

D'accord, je vais mordre:

Voici une spécification d'environ 17 000 $ à 23 000 $ et qui tient dans un espace 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

Cette configuration vous fournirait un espace utilisable de 80 To en utilisant soit le RAID6 matériel soit le RAIDZ2 ZFS.

Étant donné que l'accent est mis sur les performances basées sur NFS (en supposant des écritures synchrones), nous pouvons absorber tout cela facilement avec les lecteurs P3608 NVMe (SLOG rayé). Ils peuvent accueillir 3 Go / s en écriture séquentielle et ont une cote d'endurance suffisamment élevée pour gérer en continu la charge de travail que vous avez décrite. Les disques peuvent facilement être sur-provisionnés pour ajouter des protections dans un cas d'utilisation SLOG.

Avec la charge de travail NFS, les écritures seront fusionnées et vidées sur le disque en rotation. Sous Linux, nous réglerions ceci pour vider toutes les 15-30 secondes. Les disques en rotation pourraient gérer cela et bénéficier encore plus si ces données sont compressibles.

Le serveur peut être étendu avec 4 emplacements PCIe plus ouverts et un port supplémentaire pour les adaptateurs FLR 10 GbE à double port. Vous disposez donc d'une flexibilité de mise en réseau.

ewwhite
la source
merci ewwwite; nous utiliserions NFS, et il n'y a qu'un seul client (la machine) en option, nous l'utiliserions comme périphérique de lecture de notre cluster. (mais quel traitement ou comment est inconnu) Nous avons "l'espace" disponible sur les serveurs de stockage du raid 6.
SvennD
@SvennD S'il s'agit de NFS et de montages synchrones, il est certainement possible de faire évoluer ZFS sous Linux pour répondre aux besoins de performances d'écriture tout en conservant l'exigence de capacité de stockage à long terme. Les données sont-elles compressibles? Voilà un autre facteur. Cependant, la portée de cela dépasse les conseils que je pourrais donner gratuitement sur un forum en ligne. Mes coordonnées sont disponibles dans mon profil ServerFault . Contactez-moi si vous avez besoin de discuter plus avant.
ewwhite
5
ZFS est plus que capable de ce que vous demandez. Le premier problème sera de s'assurer que votre matériel réel en est capable. Il sera assez facile de créer accidentellement un goulot d'étranglement plus serré que 1 Go / s au niveau de l'adaptateur ou du fond de panier, si vous ne faites pas attention. Assurez-vous d'avoir cette partie correcte, puis demandez comment éviter les accrochages du côté ZFS.
Jim Salter
@SvennD Modifié avec une spécification de conception de base et des coûts approximatifs.
ewwhite
Je pense que je recommanderais un Oracle X6-2L sur un serveur HP. Le serveur Oracle est livré avec quatre ports réseau de 10 Go prêts à l'emploi. Et d'après mon expérience, HP vous met à mort pour ILOM, la licence du logiciel ILOM, etc. au point qu'un serveur HP coûte plus cher qu'une boîte Oracle équivalente. Mon expérience me dit également que la boîte Oracle surpassera la boîte HP - et sera beaucoup moins susceptible que la boîte HP d'avoir l'un des goulots d'étranglement matériels mentionnés par @JimSalter. Oui, acheter chez Oracle peut être pénible.
Andrew Henle
23

Pour une vitesse d'écriture aussi extrême, je suggère contre ZFS, BTRFS ou tout système de fichiers CoW. J'utiliserais XFS, qui est extrêmement efficace sur les transferts volumineux / en streaming.

Il y a beaucoup d'informations manquantes (comment prévoyez-vous d'accéder à ces données? La vitesse de lecture est-elle importante? Allez-vous écrire en gros morceaux? Etc.) pour vous donner des conseils spécifiques, cependant quelques conseils généraux sont:

  • utiliser XFS sur une partition brute ou un gros volume LVM (ne pas utiliser de volumes légers)
  • régler la taille des ioblocs pour gérer efficacement les écritures de données volumineuses
  • utiliser une carte RAID matérielle avec cache d'écriture protégé contre la perte d'alimentation; si l'utilisation du RAID matériel est hors de question, utilisez un schéma RAID10 logiciel (en évitant tout mode RAID basé sur la parité)
  • utiliser deux interfaces réseau 10 Gb / s avec LACP (agrégation de liens)
  • assurez-vous d'activer les trames Jumbo
  • lorsque vous allez utiliser NFS, envisagez d'utiliser pNFS (v4.1) pour une évolutivité accrue
  • sûrement beaucoup d'autres choses ...
shodanshok
la source
3
De plus, si vous utilisez XFS, placez le journal sur une paire SSD RAID1.
TB
2
Si vous utilisez une carte RAID avec un cache d'écriture différée protégé contre la perte de puissance, le journal peut être laissé sur la baie principale: le cache d'écriture absorbera et fusionnera les écritures du journal. De plus, d'après ce que décrit l'OP, la charge des métadonnées devrait être assez faible par rapport à celle en streaming.
shodanshok
2
ZFS fonctionnerait très bien et peut aller beaucoup plus vite que XFS. Bien sûr, vous devrez le configurer correctement et disposer de RAM et SSD pour le ZIL et le SLOG, mais cela n'a probablement pas d'importance avec les vitesses requises.
John Keates
3
Je considère XFS sur Linux comme une ancienne technologie. L'OP pourrait tout aussi facilement exécuter ZFS au-dessus du RAID matériel. La raison pour laquelle je recommande ZFS est de permettre aux écritures synchrones NFS entrantes d'être absorbées par le SLOG à faible latence sans avoir besoin d'un pool entièrement SSD.
ewwhite
6
Un Shelby Cobra est une «ancienne technologie», mais il peut encore fumer la plupart des voitures par la porte. ZFS n'a jamais été conçu comme un système de fichiers très performant pour commencer, et bien qu'il soit possible de le régler de manière à ce qu'il soit extrêmement rapide avec une charge de travail particulière, il n'est pas conçu pour lui par défaut. Il faudra plus de matériel, beaucoup plus de mémoire et beaucoup de réglages pour le faire battre ce que XFS vous offre gratuitement avec quelques options de montage de fichiers et de formatage.
TB
4

Ethernet 25 Gbit / s est déjà à la limite du courant dominant tandis que NVMe basé sur PCIe absorbera facilement ce trafic.

Pour référence, j'ai récemment construit une petite solution de `` capture de journal '' en utilisant quatre serveurs dual-xeon standard (HPE DL380 Gen9 dans ce cas), chacun avec 6 disques NVMe, j'ai utilisé IP sur Infiniband mais ces cartes réseau 25 / 40Gbps seraient les mêmes et nous capturons jusqu'à 8 Go / s par serveur - ça fait plaisir.

Fondamentalement, ce n'est pas bon marché mais c'est très faisable de nos jours.

Chopper3
la source
1
Oui, mais comment stockez-vous ~ 50 To sur NVMe? Les filateurs sont bon marché, alors comment fusionner pour maintenir la vitesse à la hauteur ...
SvennD
Bon point, de façon réaliste, vous ne devez obtenir que 4 x 4 To sur un seul serveur, j'utilise plusieurs serveurs, probablement pas? sinon c'est juste des charges de 2.5 "10krpm dans R10
Chopper3
Ne pas vouloir est plus comme ça, nous n'aurons pas besoin de ces spécifications sauf pour entrer dans la porte, et je ne veux pas le cauchemar des frais généraux de plusieurs serveurs. pour une seule machine. Le R10 serait-il assez rapide? (harware raid?)
SvennD
Nous avons un boîtier Windows 2012R2 que nous avons construit à partir d'un kit de rechange qui n'était pas utilisé, nous l'utilisons comme NAS, il dispose de 6 x SSD SAS de 400 Go en interne, de 8 étagères D2600 chacune avec 25 disques SAS 10k de 900 Go et d'un D6000 étagère avec des disques de 70 x 4 To et qui peuvent inonder facilement une carte réseau 10 Gbit / s - pas encore essayé avec une carte réseau 25 Go encore tbh.
Chopper3
1
@MSalters Il existe un certain nombre de disques 8/10 To PMR (non SMR) avec un taux de transfert de l'ordre de 200 Mo / s. Une matrice de 12 ou 16 disques, à la fois en RAID10 et RAID6, devrait facilement dépasser la vitesse de transfert requise de 1,1 Go / s.
shodanshok
2

Cela ne ressemble pas à un gros problème. Notre fournisseur de matériel local a cela comme un produit standard - apparemment, il peut pousser 1400 Mo / s en mode d'enregistrement CCTV, ce qui devrait être plus difficile que vos exigences de pointe.

(Le lien est vers la configuration par défaut de 12 Go, mais ils notent que 20x4 To est également une option. Aucune expérience personnelle avec ce modèle de serveur particulier.)

MSalters
la source
4
Eh bien, par «produit standard», vous vous référez à une «boîte de logiciel noire» avec 20 x sas 15k de 600 Go et 3 x ssd d'entreprise. C'est une offre équitable, nous avons obtenu un fournisseur similaire de notre fournisseur de matériel, mais le coût de la licence est fou pour quelque chose qui est fondamentalement gratuit (ZFS) Merci de partager la version! (lien sympa)
SvennD
2

Les écritures séquentielles à 1100 Mo / s ne sont pas un problème avec le matériel moderne. Pour l'anecdote, ma configuration à domicile avec des lecteurs d'ordinateur portable 8x5900 tr / min, des disques 2x15000 tr / min et des disques 2x7200 tr / min supporte 300 Mo / s avec une charge utile unique de 16 Go.

Le réseau est un 10 GbE avec des câbles en fibre, 9 000 MTU sur Ethernet et la couche d'application est Samba 3.0. Le stockage est configuré dans raid50 avec trois bandes sur trois volumes raid5 à 4 disques. Le contrôleur est LSI MegaRAID SAS 9271-8i avec jusqu'à 6 Gb / s par port (j'ai un multiplicateur de ports supplémentaire et plus lent).

Parlez à n'importe quel administrateur système chevronné et il devrait être en mesure de vous dire exactement quel (s) contrôleur (s) et lecteurs répondraient à vos besoins.

Je pense que vous pouvez essayer avec n'importe quel contrôleur 12 Gb / s et configurer deux bandes en miroir de huit lecteurs 7200 tr / min chacun (presque n'importe quel lecteur devrait le faire). Démarrez 3-4 connexions TCP pour saturer le lien et si une seule paire de cartes 10 GbE ne peut pas le gérer, utilisez quatre cartes.

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

Quelque chose de tangent, mais pensez à utiliser InfiniBand au lieu de doubles liaisons 10GbE. Vous pouvez obtenir des cartes Infiniband 56 Gbit / s assez bon marché, ou 100 Gbit / s pour pas beaucoup plus, et sur Linux, il est facile d'utiliser NFS avec RDMA sur IB, ce qui vous donnera une latence extrêmement faible et un débit de vitesse de ligne presque théorique (si votre stockage sous-jacent peut gérer). Vous n'avez pas besoin d'un commutateur, seulement de deux cartes InfiniBand et d'un câble à connexion directe (ou d'un câble fibre InfiniBand si vous avez besoin de plus longues distances).

Une carte Mellanox 56 Gbps à port unique (8x PCIe 3.0) comme le MCB191A-FCAT coûte moins de 700 dollars, et un câble de connexion directe en cuivre de 2 mètres coûte 80 dollars.

Les performances feront généralement sauter 10 GbE hors de l'eau dans tous les cas d'utilisation. Il n'y a pas d'inconvénients, sauf si vous devez accéder au serveur à partir de nombreux clients différents qui ne peuvent pas tous utiliser InfiniBand (et même dans ce cas, les commutateurs Mellanox peuvent relier 10GbE et 40GbE à IB, mais c'est un peu plus un investissement, bien sûr).

Joakim Ziegler
la source
1

Faire cela avec ZFS est possible, cependant, envisagez d'utiliser FreeBSD car FreeBSD a la pile réseau la plus rapide. Cela permettrait éventuellement 100 Goit sur une seule machine.

1100 Mbps semblent beaucoup, mais vous pouvez raisonnablement y parvenir en utilisant uniquement des disques durs standard. Vous dites que vous avez besoin de 75 To d'espace, vous pouvez donc utiliser 24 disques durs de 8 To dans des miroirs. Cela vous donnerait une vitesse d'écriture 12x sur un seul lecteur et une vitesse de lecture 24x. Étant donné que ces lecteurs ont une vitesse d'écriture supérieure à 100 Mbps, cela devrait facilement être capable de gérer la bande passante. Assurez-vous de ne pas obtenir de lecteurs SMR, car ceux-ci ont des vitesses d'écriture extrêmement lentes.

ZFS crée des sommes de contrôle pour chaque bloc. Ceci est implémenté à un seul thread. En tant que tel, vous devriez avoir un processeur avec une fréquence d'horloge assez rapide pour ne pas bloquer.

Cependant, les détails d'implémentation exacts dépendent énormément des détails.

mzhaase
la source
12
"FreeBSD a une pile réseau plus rapide" [nécessite une citation]
Jim Salter
Exactement. Linux est tout à fait capable.
ewwhite
1

Nous avons rattaché une donnée de vidage de carte réseau 10G à un cluster Gluster sur leur client de fusible. Il faut un peu de réglage que vous ne croiriez pas aux performances qu'il peut atteindre depuis 3.0.

pozcircuitboy
la source