Avec XTremIO, EMC entre dans l'arène du stockage Flash
EMC a annoncé cette semaine le lancement officiel de ses baies 100% Flash XtremIO. LeMagIT revient en détail sur la technologie de ces baies et sur leurs concurrentes chez SolidFire ou Whiptail (désormais chez Cisco).
EMC a officiellement dévoilé hier ses baies de stockage 100 % Flash après près de 6 mois de disponibilité limitée chez certains clients (environ une centaine dans le monde dont quelques clients français). Ce lancement marque l’arrivée officielle du numéro un mondial du stockage sur le segment des baies de stockage 100 % Flash, un segment où se sont lancées de nombreuses start-up innovantes comme Violin, Pure Storage, SolidFire ou Whiptail (récemment acquis par Cisco).
Les baies de stockage XtremIO sont le fruit d’une acquisition réalisée en 2011 par EMC. Elles s’appuient sur une architecture de type scale-out qui permet d’agréger plusieurs systèmes en un pool de stockage unique. Chaque système (ou X-Brick) intègre deux nœuds contrôleurs en mode actif/actif protégés par un onduleur et raccordés à un châssis externe contenant 25 disques SSD eMLC de 400 Go. Il est possible d’agréger plusieurs X-Brick en un système unique en les reliant via une fabric Infiniband. Pour l’instant, la limite officielle est fixée à 4 X-Brick mais elle devrait être relevée à 8 X-Brick en 2014. EMC évoque aussi la possibilité de 16 X-Brick dans le futur. Côté front-end, la baie dispose de connexions Fibre Channel et Ethernet (iSCSI).
Une gestion optimisée des chemins de données
Les flux de données entrants sont répartis entre les contrôleurs d’un « cluster » via MPIO ou Powerpath afin d’assurer une distribution homogène des IO entre les nœuds du cluster. La préconisation d’EMC est d’avoir un maximum de chemins disponibles vers la baie (idéalement un chemin vers chaque X-Brick). Les données entrantes sont découpées par les contrôleurs en blocs de 4 K. Automatiquement, une empreinte du bloc est effectuée via un algorithme de hash. Cette empreinte est utilisée pour placer la donnée sur la table de données dynamiques qui répartit le stockage sur le cluster.
En fait, chaque nœud XtremIO tire parti des capacités RDMA (Remote Direct Memory Access) de la fabric Infiniband qui interconnecte les nœuds pour disposer d’un accès transparent aux métadonnées des autres nœuds. Cette capacité permet au système de distribuer de façon équilibrée les données afin qu’elles soient traitées par le contrôleur le plus adapté, par le bon CPU et le bon cœur de ce CPU.
La déduplication intégrée pour maximiser la capacité et réduire l’usure des cellules Flash
L’une des fonctions intéressantes des baies XtremIO est que les empreintes calculées pour chaque bloc sont comparées à la table globale des empreintes existantes dans la baie. Si l’empreinte est déjà présente (ce qui veut dire qu’un bloc de données similaire a déjà été écrit), le bloc de données entrant n’est pas écrit à nouveau. La baie incrémente automatiquement un compteur et crée un pointeur pour référencer le bloc existant. Comme l’explique Alexandre Hermier, un ingénieur avant-vente spécialisé sur la ligne XtremIO chez EMC France, cela permet de dédupliquer les blocs et au passage de décharger le back-end de la baie d’une partie des écritures. « L’avantage est que l’on a de la déduplication à la volée, ce qui permet d’optimiser la capacité. Un bénéfice secondaire est que si le back-end de la baie a moins d’IO à écrire, les performances du front-end augmentent. En écrivant moins, on augmente aussi la durée de vie des cellules Flash ». Un choix similaire a d’ailleurs déjà été fait par Pure Storage pour ses baies avec des bénéfices similaires.
Parmi les autres services intégrés dans la baie figurent aussi le Thin Provisionning et un mécanisme de clonage avancé s’appuyant sur les métadonnées en mémoire (un clone n’est ainsi qu’un nouveau jeu de pointeurs vers le volume parent).
Des performances qui évoluent linéairement avec le nombre de noeuds
Selon EMC, la capacité et les performances augmentent de façon linéaire avec le nombre de nœuds. Une des raisons de cette « scalabilité » est que les échanges entre nœuds ne s’effectuent pas sur le même réseau que celui qui sert les IO en provenance des serveurs, mais via une fabric dédiée, la fameuse fabric Infiniband. Cela permet, toujours selon le constructeur, de garantir des niveaux d’IOPS élevés. EMC indique ainsi qu’une baie XtremIO peut délivrer environ 250 000 IOPS en lecture aléatoire de blocs de 4K. En écriture, le constructeur revendique 100 000 IOPS par X-Brick en écriture de données non déduplicables et 150 000 IOPS avec un taux de déduplication de 2 : 1 en lecture par X-Brick). Typiquement, ce niveau de performance est suffisant pour supporter environ 7 000 postes de travail virtualisés sur un seul système ou jusqu’à 3 500 clones liés.
Selon EMC, la baie n’a aucun point de faille unique. La protection des données est assurée via un mécanisme de parité qui peut supporter jusqu’à la perte de 6 disques sur les 25 disques SSD d’un X-Brick, mais il n’y a pas de mécanisme de parité distribué entre les nœuds. Chaque X-Brick est de facto responsable de la protection des données qu’il contient. Cette approche est à l’opposé d’un système en cluster, comme celui de Solidfire, où le cluster peut supporter la perte de SSD, mais aussi la perte d’un nœud – EMC est d’ailleurs familier de ces concepts puisqu’ils sont implémentés par ses baies NAS en cluster Isilon.
Dans le cas d’XtremIO, la perte d’un nœud aurait des conséquences catastrophiques sur le cluster (c’est la raison pour laquelle EMC a opté pour des systèmes bi-contrôleurs et a intégré des onduleurs pour protéger chaque X-Brick). La seule faiblesse que LeMagIT voit à cette approche est qu’une défaillance catastrophique d’alimentation - ce qui suppose la chute de deux onduleurs alimentant un même X-Brick - pourrait mettre à bas un cluster XtremIO. La probabilité est extrêmement faible mais les informaticiens ont appris à se méfier des caprices de Murphy…
Une approche architecturale différente d’un système comme SolidFire
En fait, si l’on compare les approches des deux constructeurs, les choix de SolidFire se traduisent par une efficacité moindre du système (il faut plus de SSD pour offrir la même capacité utile) et par une consommation supérieure (chaque nœud est aussi un serveur avec son propre processeur). Mais les nœuds de SolidFire sont des nœuds 1U et le système ne requiert ni la connectique Infiniband ni les onduleurs requis par un système XtremIO. Sur 5U, SolidFire est ainsi capable de positionner 5 nœuds de milieu de gamme (SF6010) pour une capacité maximale de 22 To (environ 108 To utiles théoriques avec la déduplication). Cette pile offre des performances supérieures à 250 000 IOPS – en lecture aléatoire de blocs de 4K - et consomme environ 1,5 kW.
En face, EMC, avec XtremIO, offre une capacité de 10 To (37,5 To utiles avec une réduction de données de 5:1) pour une consommation de 750 W dans 6U. Un rack plein de nœuds SolidFire SF6010 offre quant à lui une capacité utile théorique de 864 To et 2 M d’IOPS pour une consommation de 12 kW. EMC, avec un rack XtremIO de 8 X-Brick, annonce quant à lui 300 To de stockage théorique, 2 M d’IOPS et une consommation de 6,2 kW.
Des services de données encore pauvres
Les deux constructeurs ont toutefois en commun certaines caractéristiques et notamment la pauvreté des services de données associés à la baie. Ainsi, les deux constructeurs ne proposent pour l’instant ni snapshots ni réplication. Dans le cas d’XtremIO, la disponibilité des snapshots est prévue dans une version future du firmware de la baie en 2014 (mais sans engagement ferme sur une date). Les deux baies supportent les API VAAI de VMware, mais pas l’ODX de Microsoft. SolidFire a l’avantage dans les environnements cloud open source avec le support d’un plug-in Cinder pour OpenStack et une intégration poussée avec CloudStack. Pour la réplication, EMC peut proposer une combinaison de XtremIO avec sa technologie de virtualisation VPlex (en mode local et métro). Une telle configuration permettrait de fédérer deux systèmes XtremIO pour faire de l’écriture synchrone. Mais une telle configuration a des impacts en termes de performance et de latence (environ 1 ms de latence ajoutée aux transactions).
Notons qu’EMC devra aussi compter avec d’autres concurrents comme Pure Storage ou comme son allié Cisco. Ce dernier propose ainsi avec ses systèmes Whiptail Invicta une solution 100 % Flash, dont la configuration haut de gamme peut délivrer 720 To de capacité (non dédupliquée – Whiptail ne supporte pas la déduplication) et 4 millions d’IOPS dans deux racks complets (soit 30 nœuds de stockage et 6 routeurs de stockage), avec une latence de 200 microsecondes et une consommation de 6,4 kW - ce qui est tout à fait compétitif avec ce que propose EMC. Il est à noter que l’architecture de Whiptail inclut des fonctions de réplication asynchrone.
Pour en terminer, notons qu’il est impossible de comparer les prix des différentes architectures faute d’informations précises des constructeurs. Jusqu’alors, EMC s’est refusé à fournir une indication de prix pour XtremIO, sans que l’on comprenne réellement pourquoi. Chez Whiptail, le prix d’une baie Invicta Infinity oscillerait entre 15 et 18 $ par Go (pas de déduplication). Selon SolidFire, EMC proposerait XtremIO aux environs de 8 $ par Go. Solidfire, de son côté, revendique un coût au Go de l’ordre de 3 $. EMC se borne de son côté à indiquer que son architecture est proposée à des prix compétitifs avec ceux de la concurrence.