Les mécanismes d’allocation granulaire de capacité (Thin Provisioning en anglais) sont apparus pour la première fois dans des solutions de virtualisation de stockage, telles que celles de Datacore au début des années 2000, et ont progressivement été intégrés à leurs baies de stockage par la plupart des constructeurs, parfois sous des noms différents, par exemple Virtual Provisioning chez EMC, …

Ces mécanismes reposent sur un concept simple : plutôt que d’attribuer ou de réserver dès le départ la capacité physique nécessaire à une application, au risque de se retrouver avec une capacité réservée mais inutilisée, la capacité physique n’est réellement allouée par la baie qu’au fur et à mesure des besoins réels (mécanisme dit « Allocate on write », littéralement, allocation à la première écriture). Cette astuce permet une meilleure utilisation de la capacité disponible dans la baie, en évitant les gaspillages liés aux mécanismes d’allocation de capacité traditionnels (les administrateurs, par prudence, ont en effet tendance à provisionner des LUNs plus gros que nécessaires). Elle permet aussi de démarrer en production avec un minimum de disques et de n’ajouter de nouvelles capacités qu’au fur et à mesure des besoins réels, ce qui est en phase avec les objectifs de réduction de la consommation électrique dans les datacenters. Enfin le Thin Provisioning a des bénéfices annexes comme l’accélération des réplications initiales (seule la capacité allouée est répliquée et non pas la totalité de la capacité provisionnée). Autant dire qu’avec de tels avantages, la technologie est, en quelques années, devenue incontournable dans la plupart des baies.

Optimiser l’utilisation de la capacité de stockage
Traditionnellement pour allouer une ressource de stockage SAN à un serveur, on crée un LUN sur la baie et on le met à la disposition de son système de gestion de fichiers. Dans la plupart des cas, les administrateurs prennent une marge de sécurité et allouent donc plus de capacité que nécessaire, ce qui fait que les LUN ne sont utilisés que pour une fraction de leur capacité, disons dans le meilleur des cas 40 à 50%. Dans un modèle d’allocation classique du stockage (désormais dit «Thick Provisioning»), 50 à 60% de l’espace physique est donc immobilisé pour rien.

Le Thin Provisioning s’appuie sur la notion de pools de stockage, des pools qui peuvent être homogènes (uniquement des disques SAS, ou uniquement des disques SATA) ou hybrides (un mix entre SSD, disques SAS et SATA). La capacité de ces pools est mutualisée entre des LUN «Thin Provisionnés», auxquels la baie alloue de la capacité au fur et à mesure des besoins.

L’un des grands avantages du Thin Provisioning est qu’il permet d’allouer plus de capacités aux LUNs qu’il n’y en a de physiquement disponible dans le pool. Typiquement, on peut avoir un pool de 20 To, et 40 LUNs auxquels on a alloué chacun 1 To. Certains finiront par consommer réellement cette calcite allouée, alors que la plupart n’en consommeront à terme que 40%. En mettant en oeuvre le Thin Provisioning, on donne donc à l’administrateur une grande souplesse dans la gestion de l’allocation de capacité.

Figure 1 : fonctionnement comparé du Thin Provisioning et du Provisioning traditionnel

 

Une technologie qui requiert un peu de vigilance
La contrepartie est que le Thin Provisioning doit être manié avec précaution. Car si une application venait à se mettre à consommer les ressources disponibles de façon imprévue, elle pourrait littéralement cannibaliser l’espace requis par d’autres applications, avec des conséquences catastrophiques.

Certains passagers des compagnies aériennes ont pu expérimenter les affres de la surréservation dans les avions. Ce mécanisme permet aux compagnies de s’assurer d’un remplissage optimal de leurs appareils en vendant plus de sièges que n’en dispose l’avion et en pariant sur le fait que certains passagers ne se présenteront pas. Cette stratégie fonctionne dans la plupart des cas, mais il arrive que des passagers ne puissent embarquer car l’avion est effectivement trop plein. Dans la réalité, ces passagers se voient contraints de prendre un autre avion. Dans le cas du stockage, les conséquences sont plus catastrophiques, l’absence de capacité disponible se traduisant par un plantage des applications. L’usage agressif des mécanismes de surallocation mis à disposition par les baies contraint donc l’administrateur à une plus grande vigilance. Il lui faut ainsi veiller à ce que la capacité physique disponible sur les baies soit toujours supérieure à celle requise par le système d’allocation dynamique.

Un autre point à surveiller est l’impact sur les performances, notamment pour les applications exigeantes en entrées/sorties : en concentrant plus d’accès sur un nombre réduit de disques, le Thin Provisioning peut avoir un impact sur les performances délivrées. C’est en général pourquoi le Thin Provisioning est associé à l’aptitude de la baie à distribuer les blocs sur un grand nombre de disques. Certains constructeurs n’ont ainsi implémenté le Thin Provisioning qu’en parallèle du stripping à grande échelle de données (Wide Striping). D’autres permettent le Thin Provisioning sur des pools de stockage hybrides composés partiellement de disques SSD et combinent le Thin Provisioning avec des technologies de Tiering, ce qui permet de contrer les effets de l’agrégation d’un grand nombre d’I/O sur un nombre limité de disques.

Une technologie plus ou moins bien mise en oeuvre
Au final, le Thin Provisioning peut être considéré comme une forme de virtualisation du stockage, puisque l’objectif de la technologie est de masquer au système de gestion de fichier le fait qu’il ne dispose pas, à un instant donné, des ressources physiques dont il croit pourtant disposer. Et comme toute couche de virtualisation de stockage, le Thin Provisioning peut être plus ou moins bien implémenté. Techniquement, plus la capacité de la baie à gérer les données au niveau du bloc est élevée et plus le mécanisme de Thin Provisioning est efficace.

De même, l’aptitude à réclamer des blocs alloués mais qui ne sont plus utilisés est importante. Au début de cet article nous mentionnions que les baies allouent les blocs Thin Provisionnés lors de la première écriture. Le problème est que par défaut, rares sont les constructeurs qui ont prévu un mécanisme pour réclamer les blocs effacés (mécanisme dit Zero Page Reclaim, qui permet de restituer les blocs non utilisés). EMC propose ce mécanisme dans les environnements VMware (via le support de l’API VAAI) pour les baies Symmetrix VMAX et VNX, et a aussi développé des utilitaires pour d’autres environnements comme Windows (l’utilitaire StorReclaim pour Windows sur les VMAX, par exemple).

En savoir plus
Un livre blanc sur le Virtual Provisioning dans les baies EMC VNX