web-dev-qa-db-fra.com

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

Nous aurons une machine au travail, qui, sur des performances de pointe, 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-75 TB au total. Il ne peut donc pas s'agir de tous les SSD à moins que nous ne voulions offrir notre premier -enfant 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)
29
SvennD

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é on 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?


Éditer:

D'accord, je vais mordre:

Voici une spécification qui est à peu près 17k $ - 23k $ et 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 à bandes). 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.

18
ewwhite

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 les pertes de courant; 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, pensez à utiliser pNFS (v4.1) pour une évolutivité accrue
  • sûrement beaucoup d'autres choses ...
23
shodanshok

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 journaux '' 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.

4
Chopper3

Cela ne ressemble pas à un gros problème. Notre fournisseur de matériel local a ceci comme produit standard - apparemment, il peut pousser 1400 Mo/s en mode d'enregistrement CCTV, ce qui devrait être plus difficile que vos besoins 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.)

2
MSalters

Quelque chose de tangent, mais envisagez d'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 à un port (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).

2
Joakim Ziegler

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 disques durs portables 8x5900 RPM, des disques 2x15000 RPM et des disques 2x7200 RPM 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 disques 7200 RPM chacun (presque n'importe quel disque devrait le faire). Démarrez 3-4 TCP pour saturer le lien et si une seule paire de cartes 10 GbE ne peut pas le gérer, utilisez quatre cartes.

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 TB d'espace, donc vous pouvez utiliser 24 8 TB disques durs dans les miroirs. Cela vous donnerait une vitesse d'écriture 12x d'un seul lecteur, et une vitesse de lecture de 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 plus 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 fortement des détails.

1
mzhaase

Nous avons indexé un 10G NIC dumping de données vers un cluster Gluster sur leur client Fuse. Il faut un peu de réglage que vous ne croiriez pas aux performances qu'il peut atteindre depuis 3.0.

1
pozcircuitboy