Comprendre les modèles de stockage cloud

Qui aurait pensé que stocker des bits pouvait devenir si compliqué? Le stockage a toujours contenu une pléthore de protocoles, de Fibre Channel à iSCSI en passant par SMB dans toutes ses variantes, mais l'arrivée du flash et la croissance continue de la virtualisation ont transformé un sujet déjà dense en une jungle enchevêtrée d'acronymes, de protocoles et d'abstractions.

La virtualisation du centre de données a également provoqué une vague de virtualisation du stockage, éloignant progressivement le stockage des protocoles physiques pour se diriger vers des modèles de stockage logiques et abstraits tels que le stockage d'instances et le stockage en volume. En fournissant des abstractions, le centre de données a progressivement découplé les machines virtuelles des protocoles de stockage.

La montée en puissance des centres de données cloud a également engendré une nouvelle classe de stockage appelée stockage objet, qui sacrifie la forte cohérence des protocoles de stockage traditionnels afin de fournir des espaces de noms uniques à l'échelle mondiale.

Dans cet article, je vais apporter des précisions en plaçant le stockage d'instances, de volumes et d'objets dans l'évolution du centre de données, et montrer comment ces nouvelles abstractions s'intègrent au-dessus ou aux côtés des protocoles de stockage existants.

L'histoire du stockage cloud est à bien des égards une histoire de virtualisation. Je vais commencer par les environnements physiques, passer à la virtualisation, où les modèles virtuels et physiques commencent à diverger, et terminer par le cloud, où le physique est presque complètement abstrait par les modèles virtuels.

Stockage physique

À la racine de tout stockage se trouve un ensemble de protocoles de stockage physique, je vais donc commencer par un bref récapitulatif du stockage physique. Trois grandes classes de modèles de stockage physique sont utilisées aujourd'hui: le stockage en connexion directe (DAS), le réseau de stockage (SAN) et le stockage en réseau (NAS).

DAS.  Le stockage à connexion directe est le modèle de stockage le plus simple. Nous connaissons tous DAS; c'est le modèle utilisé par la plupart des ordinateurs portables, téléphones et ordinateurs de bureau. L'unité fondamentale du DAS est l'ordinateur lui-même; le stockage d'un serveur n'est pas séparable du serveur lui-même. Dans le cas d'un téléphone, il est physiquement impossible de supprimer le stockage du calcul, mais même dans le cas de serveurs, où il est théoriquement possible d'extraire des lecteurs de disque, une fois qu'un lecteur est séparé du serveur, il est généralement effacé avant réutilisation. SCSI et SATA sont des exemples de protocoles DAS.

SAN.  Finalement, l'industrie du stockage a reconnu l'utilité de séparer le stockage du calcul. Plutôt que d'attacher des disques à chaque ordinateur individuel, nous avons placé tous les disques sur un seul cluster de serveurs et avons accédé au disque via le réseau. Cela simplifie les tâches de gestion du stockage telles que la sauvegarde et la réparation des pannes. Cette division du stockage et du calcul est souvent appelée stockage partagé , car plusieurs ordinateurs utiliseront un seul pool de stockage.

Il était plus simple de communiquer entre le client et le serveur sur le réseau en utilisant les mêmes protocoles de bloc (ou très similaires) que ceux utilisés pour communiquer avec les lecteurs de disque connectés localement. Le stockage exposé de cette manière est appelé un réseau de stockage. Fibre Channel et iSCSI sont des exemples de protocoles SAN.

Dans un SAN, un administrateur regroupera un ensemble de disques (ou une partie d'un ensemble de disques) en un LUN (unité logique), qui se comportera alors comme un seul lecteur de disque pour les ordinateurs extérieurs. Le LUN est l'unité fondamentale utilisée pour gérer le stockage SAN.

NAS.  Alors que les SAN nous permettent de déplacer des LUN d'un ordinateur à un autre, les protocoles de bloc qu'ils utilisent n'ont pas été conçus pour partager simultanément des données dans le même LUN entre les ordinateurs. Pour permettre ce type de partage, nous avons besoin d'un nouveau type de stockage conçu pour un accès simultané. Dans ce nouveau type de stockage, nous communiquons avec le stockage en utilisant des protocoles de système de fichiers, qui ressemblent étroitement aux systèmes de fichiers exécutés sur des ordinateurs locaux. Ce type de stockage est appelé stockage en réseau. NFS et SMB sont des exemples de protocoles NAS.

L'abstraction du système de fichiers permet à plusieurs serveurs d'accéder aux mêmes données en même temps. Plusieurs serveurs peuvent lire le même fichier en même temps et plusieurs serveurs peuvent placer de nouveaux fichiers dans le système de fichiers en même temps. Ainsi, le NAS est un modèle très pratique pour les données partagées des utilisateurs ou des applications.

Le stockage NAS permet aux administrateurs d'allouer des portions de stockage dans des systèmes de fichiers individuels. Chaque système de fichiers est un espace de noms unique et le système de fichiers est l'unité principale utilisée pour gérer le NAS.

Stockage virtuel

La virtualisation a changé le paysage du centre de données moderne pour le stockage comme elle l'a fait pour le calcul. Tout comme les machines physiques ont été abstraites en machines virtuelles, le stockage physique a été résumé dans des disques virtuels.

Dans la virtualisation, l'hyperviseur fournit un environnement matériel émulé pour chaque machine virtuelle, y compris l'ordinateur, la mémoire et le stockage. VMware, l'hyperviseur moderne initial, a choisi d'émuler des lecteurs de disque physiques locaux afin de fournir du stockage pour chaque machine virtuelle. En d'autres termes, VMware a choisi le modèle de lecteur de disque local (DAS) comme moyen d'exposer le stockage aux machines virtuelles.

Tout comme l'unité fondamentale de stockage dans DAS est la machine physique, l'unité fondamentale du stockage sur disque virtuel est la VM. Les disques virtuels ne sont pas exposés en tant qu'objets indépendants, mais en tant que partie d'une machine virtuelle particulière, exactement comme les disques locaux font partie conceptuellement d'un ordinateur physique. Comme avec DAS, un disque virtuel vit et meurt avec la VM elle-même; si la machine virtuelle est supprimée, le disque virtuel sera également supprimé.

La plupart des plates-formes de virtualisation conventionnelles utilisent un modèle de stockage sur disque virtuel. Par exemple, le stockage dans les environnements VMware vSphere, Microsoft Hyper-V, Red Hat Enterprise Virtualization et Xen sont tous gérés et attachés de la même manière.

Implémentation de disques virtuels

Étant donné que VMware souhaitait continuer à fournir les avantages du stockage partagé aux machines virtuelles, il ne pouvait pas s'appuyer sur un protocole DAS pour implémenter des disques virtuels. Le prochain choix évident serait d'utiliser SAN, car un SAN LUN ressemble étroitement à un lecteur de disque local.

Cependant, les LUN physiques ont des limitations qui en font un ajustement difficile pour les disques virtuels. Les environnements virtualisés consolident un certain nombre d'ordinateurs logiques sur un seul serveur physique, ce qui signifie que le nombre de disques virtuels sur un hôte donné sera beaucoup plus important que le nombre de LUN physiques pour un hôte dans un environnement physique. Le nombre maximal de LUN pouvant être attachés à un serveur physique donné était trop faible pour prendre en charge le nombre nécessaire de disques virtuels.

Peut-être plus important encore, les disques virtuels, comme les processeurs virtuels, doivent être des objets logiques qui peuvent être créés, détruits et déplacés par programme, et ce ne sont pas des opérations pour lesquelles le stockage SAN a été conçu. Par exemple, VMware devait déplacer dynamiquement des machines virtuelles entre des hôtes physiques, ce qui nécessitait un accès au stockage partagé pendant la migration.

Pour ces raisons, VMware a choisi d'implémenter des disques virtuels sous forme de fichiers dans un système de fichiers (NFS) ou dans un système de fichiers distribué (VMFS) sur SAN, plutôt que sous forme de LUN bruts.

Des protocoles de stockage aux modèles de stockage

Le fait que VMware ait choisi d'implémenter des disques virtuels, un modèle de stockage par blocs de style DAS, au-dessus du NAS ou du SAN, illustre l'une des caractéristiques intéressantes du stockage de centre de données moderne. Étant donné que les E / S d'une machine virtuelle sont transférées au logiciel de l'hyperviseur, plutôt qu'au matériel sur un bus de périphérique, le protocole utilisé par la machine virtuelle pour communiquer avec l'hyperviseur n'a pas besoin de correspondre au protocole utilisé par l'hyperviseur pour communiquer avec le stockage lui-même.

Cela conduit à une séparation entre le modèle de stockage qui est exposé vers le haut à la machine virtuelle et à l'administrateur, et le protocole de stockage utilisé par l'hyperviseur pour stocker réellement les données. Dans le cas des disques virtuels, VMware les a conçus selon un modèle de stockage DAS, puis a utilisé un protocole de stockage NAS pour les implémenter.

C'est une couche puissante d'indirection; cela nous donne la flexibilité de combiner les modèles de stockage et les protocoles de stockage, et même de changer dynamiquement le protocole de stockage sans affecter les machines virtuelles. Par exemple, les disques virtuels sont implémentés à l'aide de fichiers dans NFS, de fichiers dans VMFS stockés sur des LUN Fibre Channel, ou même (dans des VVols ou des volumes virtuels) directement en tant que LUN iSCSI. Le choix de l'implémentation est totalement transparent pour l'application, car finalement tous ces protocoles auront la même apparence pour la VM et l'administrateur; ils ressembleront à des lecteurs de disque physiques locaux attachés à des machines virtuelles.

Ainsi, le développeur d'applications dans la plupart des infrastructures de cloud public ne peut pas savoir quel protocole de stockage est utilisé; en fait, le protocole peut même changer dynamiquement. Nous ne savons pas quel protocole de stockage Amazon utilise pour Elastic Block Storage, et il n'est pas important pour nous de le savoir.

En raison de la séparation entre le modèle de stockage et le protocole de stockage, le protocole de stockage devient un problème lié à l'infrastructure, principalement important pour le coût et les performances, plutôt qu'une décision face à l'application qui dicte la fonctionnalité.

Stockage en ligne

Le paysage du centre de données évolue à nouveau à mesure que les environnements virtualisés se transforment en environnements cloud. Les environnements cloud adoptent le modèle de disque virtuel pionnier dans la virtualisation et fournissent des modèles supplémentaires pour permettre une pile de stockage entièrement virtualisée. Les environnements cloud tentent de virtualiser l'intégralité de la pile de stockage afin de pouvoir fournir un libre-service et une séparation nette entre l'infrastructure et l'application.

Les environnements cloud se présentent sous de nombreuses formes. Ils peuvent être mis en œuvre par les entreprises en tant que clouds privés à l'aide d'environnements tels que OpenStack, CloudStack et la suite VMware vRealize. Ils peuvent également être mis en œuvre par des fournisseurs de services sous forme de clouds publics tels qu'Amazon Web Services, Microsoft Azure et Rackspace.

Fait intéressant, les modèles de stockage utilisés dans les environnements cloud reflètent ceux utilisés dans les environnements physiques. Cependant, comme pour les disques virtuels, ce sont des modèles de stockage abstraits des multiples protocoles de stockage qui peuvent être utilisés pour les implémenter.

Stockage d'instance: disques virtuels dans le cloud

Le modèle de stockage sur disque virtuel est le modèle principal (ou unique) de stockage dans les environnements virtualisés conventionnels. Dans les environnements cloud, cependant, ce modèle est l'un des trois. Par conséquent, le modèle reçoit un nom spécifique dans les environnements cloud: stockage d'instance, c'est-à-dire stockage consommé comme des disques virtuels conventionnels.

Il est important de noter que le stockage d'instance est un modèle de stockage, pas un protocole de stockage, et peut être implémenté de plusieurs manières. Par exemple, le stockage d'instance est parfois implémenté à l'aide de DAS sur les nœuds de calcul eux-mêmes. Implémenté de cette manière, il est souvent appelé stockage éphémère car le stockage n'est généralement pas très fiable.

Le stockage d'instance peut également être implémenté en tant que stockage fiable à l'aide d'un NAS ou d'un stockage en volume, un deuxième modèle de stockage décrit ci-après. Par exemple, OpenStack permet aux utilisateurs d'implémenter le stockage d'instance en tant que stockage éphémère sur les hôtes, en tant que fichiers sur des points de montage NFS ou en tant que volumes Cinder à l'aide du volume de démarrage.

Stockage de volume: SAN sans le physique

Le stockage d'instance a cependant ses limites. Les développeurs d'applications cloud natives différencient souvent explicitement les données de configuration, telles que les données du système d'exploitation et des applications, des données utilisateur, telles que les tables de base de données ou les fichiers de données. En divisant les deux, les développeurs sont alors en mesure de rendre la configuration transitoire et reconstructible tout en maintenant une forte fiabilité des données utilisateur.

Cette distinction conduit à son tour à un autre type de stockage: le stockage en volume, un hybride de stockage d'instance et de SAN. Un volume est l'unité principale de stockage de volume plutôt qu'une machine virtuelle. Un volume peut être détaché d'une machine virtuelle et attaché à une autre. Cependant, comme un disque virtuel, un volume ressemble plus à un fichier qu'à un LUN en termes d'échelle et d'abstraction. Contrairement au stockage d'instance, le stockage en volume est généralement supposé être très fiable et est souvent utilisé pour les données utilisateur.

OpenStack's Cinder est un exemple de magasin de volumes, tout comme l'abstraction de volume indépendante de Docker. Notez à nouveau que le stockage en volume est un modèle de stockage et non un protocole de stockage. Le stockage de volume peut être implémenté en plus des protocoles de fichiers tels que NFS ou des protocoles de blocs tels que iSCSI de manière transparente pour l'application.

Stockage d'objets: NAS à l'échelle du Web

Les applications cloud natives ont également besoin d'un foyer pour les données partagées entre les VM, mais elles ont souvent besoin d'espaces de noms pouvant évoluer vers plusieurs centres de données dans des régions géographiques. Le stockage d'objets fournit exactement ce type de stockage. Par exemple, le S3 d'Amazon fournit un espace de noms logique unique dans toute une région et, sans doute, dans le monde entier. Pour atteindre cette échelle, S3 devait sacrifier la forte cohérence et les mises à jour précises des NAS conventionnels.

Le stockage d'objets fournit une abstraction semblable à un fichier appelée objet, mais il fournit une cohérence éventuelle. Cela signifie que même si tous les clients obtiendront éventuellement les mêmes réponses à leurs demandes, ils peuvent temporairement recevoir des réponses différentes. Cette cohérence est similaire à la cohérence fournie par Dropbox entre deux ordinateurs; les clients peuvent temporairement se désynchroniser, mais finalement tout convergera.

Les magasins d'objets traditionnels fournissent également un ensemble simplifié d'opérations de données optimisées pour une utilisation sur des connexions WAN à latence élevée: répertorier les objets dans un «compartiment», lire un objet dans son intégralité et remplacer les données d'un objet par des données entièrement nouvelles. Ce modèle fournit un ensemble d'opérations plus basique que le NAS, qui permet aux applications de lire et d'écrire de petits blocs dans un fichier, de tronquer les fichiers à de nouvelles tailles, de déplacer des fichiers entre des répertoires, etc.