• Accueil
  • Vidéo DediGames
  • Forum VeryGames
  • VeryGames.net
  • Commander votre Dedigames

ARTICLE 1 : Le serveur de jeux et le disque dur

Bonjour,

Pour ce premier article, j'ai décidé d'aborder le chapitre du stockage.
Le stockage est en effet un maillon essentiel de l'infrastructure qui héberge un serveur de jeux.
Je ferais d'abord quelques rappels, ensuite nous verrons quelles sont les interactions entre un serveur de jeu et le disque dur, et pour finir je présenterai la solution retenue pour DediGames.

1) Un disque dur finalement, c'est quoi ?

Pour être certain de bien comprendre la suite, je fais ici quelques petits rappels et mises au point.

Vous le savez, le disque dur est le composant d'un ordinateur qui permet de faire du stockage de masse.
Voici quelques caractéristiques d'un disque dur:

  • Il a une capacité de stockage qui va de 120Go à 1000Go (ou 1To), ce qui est énorme par rapport à la mémoire RAM (1Go à 8Go), ou à la mémoire du processeur (mémoire cache, 512K à 4Mo).
  • Il a un débit très faible de 60Mo/s, comparé à la RAM (3 à 6 Go/s) ou au cache processeur qui est encore plus rapide.
  • Il a un temps d'accès aux données très élevé (quelques millisecondes) du fait que les données se trouvent sur des plateaux tournants, et que par conséquent il faut attendre un tour pour que les données recherchées se trouvent sous la tête de lecture mécanique. Le cache processeur et la RAM ont un temps d'accès qui ne dépasse pas quelques dizaines de nanosecondes, soit dix mille fois plus rapides.
  • Il est le seul à conserver les données lorsqu'il n'est plus alimenté électriquement.

En plus de son faible débit et de son temps d'accès très long, le disque dur a un autre point faible: il est fragile.
Il est l'un des éléments composant un ordinateur qui tombe le plus rapidement en panne, avec les ventilateurs et les blocs d'alimentation. Cela vient du fait qu'il est composé d'une partie mécanique, technologiquement très pointue, avec une tête de lecture, de plateaux tournants et des moteurs. Et comme tout élément mécanique, il s'use et se dérègle avec le temps.
Un disque endommagé va générer des perturbations sur le bon fonctionnement de l'ordinateur, allant de quelques messages d'erreur à la perte totale des données du disque... Aïe!

Tant que j'y suis, encore un point faible, et pas des moindres, qui découle des précédents: je l'ai dit, un disque dur est très lent, on peut même dire que c'est un véritable boulet que traîne l'ordinateur. Ses performances n'ont pas évolué depuis des années, comparées aux autres composants.
Quand votre PC est lent et que la diode du boitier se met à clignoter comme une dégénérée, c'est que votre disque dur est en action pour lire et écrire des données... Et que tous les autres composants attendent après lui (y compris le processeur).
C'est un énorme problème, car cela signifie que le disque dur, en plus d'être lent, monopolise toutes les ressources systèmes lorsqu'il travaille et donc ralenti toutes les applications.


2) L'incidence du disque dur sur le serveur de jeux

Dans l'architecture actuelle de VeryGames, toutes les données d'un client (jeux, site web... sauf la base de données SQL qui est à part) sont enregistrées sur le disque dur de la machine qui héberge le serveur de jeu. C'est le cas pour la grande majorité (totalité?) des hébergeurs de serveurs de jeux.

Un serveur de jeux utilise le disque dur lorsqu'il a besoin de lire ou d'écrire des données. Cela se produit dans les cas suivants:

  • 1: Lors du lancement (lors d'un reboot du serveur). Plusieurs dizaines de Mo peuvent être lus sur le disque dur par le serveur, et mis en mémoire RAM.
  • 2: Lors d'un changement de map: Une map requiert 1 à 50Mo de lecture, sans oublier les textures externes et autres modèles qui y sont attachés.
  • 3: A tout moment, pour l'écriture des fichiers de logs.
  • 4: A tout moment, pour diverses opérations minimes (lectures de sprites...)

En plus de cela, il faut ajouter les opérations externes:

  • 5: Installation d'un jeu: Selon le jeu, 10Mo à 5Go sont écrits sur le disque!
  • 6: Lors de la lecture des fichiers pour le site Internet
  • 7: Pour le fonctionnement du système d'exploitation (Linux en l'occurrence)

L'incidence des points N° 3, 4, 6 et 7 sur les performances du système est négligeable, car ce sont de très petites quantités de données qui sont lues ou écrites.
Pour le point N° 5, les installations de jeux, il y a énormément de données à copier. Pour perturber le moins possible le système et éviter les coups de lags, nous effectuons la copie des fichiers via le réseau, à vitesse réduite. Et nous faisons en sorte qu'il n'y ai pas plus d'une seule copie à la fois par machine. Ce problème est donc maîtrisé.

Par contre, pour les points N° 1 et 2, c'est plus compliqué. Beaucoup de données sont lues, et nous ne pouvons pas limiter la vitesse à laquelle les serveurs de jeux lisent les données.
Heureusement, le reboot d'un serveur sur une machine n'entraîne que très rarement un lag pour les autres serveurs de la machine. Mais cela peut arriver, notamment si plusieurs serveurs rebootent ou changent de map en même temps...

Voilà pourquoi le disque dur est si important dans l'hébergement de serveur de jeux!


3) La solution utilisée pour DediGames

Nous venons de le voir, un disque dur est lent, fragile, et perturbateur sur une machine.
Il existe des solutions alternatives:

  • Le SCSI: c'est une solution intéressante au niveau des performances: disques un peu plus rapides, et surtout les perturbations sur le système sont très limitées lors des accès disques. Mais il y a aussi de nombreux inconvénients: les disques restent fragiles, les contrôleurs et les disques SCSI sont très coûteux. C'est une technologie qui a atteint ses limites et qui est en perte de vitesse.
  • Le SSD: c'est l'avenir du disque dur! Ce qui veut dire que ce n'est pas encore pour aujourd'hui... Ce sont des disques dont la mémoire est de type FLASH, un peu comme une grosse clé USB, il n'y a donc plus d'éléments mécaniques.
    Le disque a donc une durée de vie supérieure, et une fiabilité accrue. Les débits en pointe sont similaires à un disque dur classique (mais ils vont certainement augmenter dans les prochaines versions), la grosse amélioration vient du temps d'accès.
    Cela signifie que lorsque beaucoup de petits fichiers sont lus ou écrits, le débit va rester proche du maximum théorique, alors que sur un disque dur classique il s'écroulerait.
    Il existe des disques SSD en vente depuis quelques mois, mais ils sont de faible capacité, et surtout ils sont très, très chers. Mais c'est clairement la technologie de demain concernant le stockage.
  • Le stockage réseau: cette solution consiste à lire et écrire les données par le réseau, sur une autre machine qui joue le rôle de "disque dur à distance".
    La pertinence de ce choix dépend de beaucoup de paramètres, dont notamment le système de stockage utilisé, et sa maîtrise matérielle et logicielle.

C'est cette dernière solution que nous avons retenue: le stockage réseau. Nous l'utilisons depuis plusieurs mois dans notre datacenter allemand, et plusieurs centaines de clients sont actuellement gérés ainsi.
Nous avons donc une expérience significative sur cette méthode de stockage, et nous avons beaucoup appris pour qu'elle fonctionne parfaitement avec des serveurs de jeux.

Je vais vous présenter en détail cette solution:

  • Le matériel: la "machine disque dur" s'appelle un "serveur de fichiers". Nous avons choisi un serveur qui contient 16 disques durs SATA 2 de 750 Go chacun, gérés par une carte contrôleur spéciale (RAID).
  • Le RAID: le RAID est le nom de la méthode utilisée par le contrôleur disque pour gérer l'ensemble des disques durs. Il y a plusieurs types de mode RAID. En l'occurrence nous utilisons la toute dernière, sortie il y a à peine quelques mois: Le RAID 6 (qui est une évolution du RAID 5).
    Ce mode permet de faire en sorte que l'ensemble des disques ne soit vu que comme un seul gros disque par le système.
    Mais son principal atout est qu'il est le meilleur compromis entre performance, espace de stockage, et fiabilité: sur les 16 disques, deux peuvent tomber en panne simultanément (n'importe lesquels), sans que cela ne pose aucun problème de fonctionnement.
    Aucune donnée n'est perdue, et surtout le système continue à fonctionner comme si de rien n'était!
  • Les performances: les temps d'accès bruts sont les mêmes que pour un disque dur normal, puisque ce sont les mêmes disques. Par contre, il y a 16 disques, donc il peut y avoir beaucoup plus d'accès par seconde sans déperdition sur la vitesse de transfert.
    Le débit est multiplié par 6, soit 360Mo/s ce qui est énorme. De plus, chaque disque dur possède un cache disque de 32 Mo, à additionner aux 256 Mo de cache que possède la carte contrôleur. Beaucoup de données peuvent donc être lues ou écrite en cache disque, ce qui améliore grandement les performances.

Voici une photo du serveur de fichier:



Ce serveur de fichiers est donc une sorte de "super disque dur", dont les données sont accessibles par le réseau.
Il nous a fallu plusieurs mois pour parvenir à dompter ce type de matériel et à l'adapter à nos besoins.

J'aimerais maintenant vous parler des autres avantages qui découlent directement de l'utilisation de ce serveur:

  • Fiabilité accrue: Les données seront centralisées sur le serveur de fichiers, au lieu d'être éparpillées sur chaque machine.
    Cela signifie qu'en cas de panne d'une machine qui héberge des serveurs de jeux, d'une part les sites Internet et les FTP des clients resteront accessibles, et d'autre part il sera possible de relancer en quelques secondes les serveurs sur une nouvelle machine qui sera là en secours!
    Plus besoin donc d'attendre qu'un technicien se rende au datacenter pour réparer la machine... C'est un grand pas en avant dans l'amélioration de la qualité de service.
  • Espace de stockage optimisé et installations ultra rapides: les installations de jeux seront beaucoup plus rapides, et ne prendront presque plus de place dans le quota des clients.
    Par exemple, un serveur COD 4 prend plus de 5 Go d'espace disque, et il faut près de 20 minutes pour copier toutes ces données sur le disque dur de la machine sur laquelle le client est hébergé.
    Avec notre nouveau système, COD 4 s'installe en 3 secondes et prend 1 Mo d'espace disque. Comment est-ce possible ?
    Nous utilisons le principe les "raccourcis de Windows". Au lieu de copier un fichier, nous créons un "fichier raccourci" qui pointe vers le fichier original.
    Ainsi, le vrai fichier n'est stocké qu'une seule fois dans un répertoire de référence sur le serveur de fichiers, et tous les autres fichiers sont des raccourcis qui pointent vers les fichiers correspondants du dossier référence.
    Ce système a d'autres vertus que d'accélérer l'installation des jeux et de réduire l'espace disque utilisé: il permet de réduire fortement la charge du serveur de fichiers vu qu'il y a beaucoup moins de données écrites, et il procure un avantage ENORME sur les performances globales du serveur de fichiers. Comment?
  • Performances décuplées: pour comprendre pourquoi les performances sont améliorées en utilisant ce système de raccourcis, il faut savoir comment fonctionne la mémoire RAM sous Linux.
    Quand il y a de la RAM disponible, le système y met tout ce qu'il peut: chaque fichier lu ou écrit est stocké en RAM. Cela ne coûte rien en ressources, et si jamais le fichier est réutilisé, par la suite, le système le lira dans la RAM au lieu de le lire sur le disque! Et nous l'avons vu au tout début de cet article, la RAM est BEAUCOUP plus rapide (débit x 100, temps d'accès / 10 000).

    Quel rapport avec le système de raccourcis ?

    C'est simple: si deux fichiers sont identiques et qu'ils sont utilisés par deux applications différentes (les processus des serveurs de jeux en l'occurrence), les deux fichiers iront en RAM.
    Par contre, si le fichier n'est qu'à un seul endroit et que les applications utilisent chacun des raccourcis qui pointent vers ce fichier, alors le fichier ne sera qu'une fois en RAM!
    Sachant qu'il y a des milliers de serveurs et donc d'applications, on peut prendre toute la mesure de l'intérêt de ce système.
    La plupart des fichiers lus sur le réseau par les machines DediGames sont en RAM sur le serveur de fichiers. Pour cette raison, notre serveur de fichiers est doté de 8 Go de RAM.
    Le système est tellement performant que le temps de lancement d'un serveur de jeux ou même d'un changement de map est amélioré!
    J'ajoute que le système est totalement transparent pour les utilisateurs.



Voilà, vous savez tout sur la méthode de stockage qui sera utilisée pour DediGames !
J'espère que ce premier article vous a intéressé, malgré sa longueur :)
Je vous invite à venir en débattre sur le forum DediGames ICI .

A très bientôt pour d'autres news sur le blog DediGames :)

Le 09/02/2008, Johann Thiesson (DjoDjo)


© 2008 VERYGAMES Tous droits réservés. "DediGames" est une marque déposée.