Stockage en conteneurs : l'essentiel sur Minio
Plusieurs éditeurs proposent désormais des solutions de stockage en conteneurs conçues pour répondre aux besoins de persistance de données des environnements Docker. Aujourd'hui Le MagIT se penche sur Minio.
Afin de satisfaire les besoins spécifiques de persistance de données des architectures logicielles à base de conteneurs Docker, plusieurs éditeurs ont développé des solutions de stockage optimisées pour un déploiement dans une infrastructure conteneurisée.
LeMagIT s’est intéressé plus en détail à quatre technologies de stockage distribué, elles-mêmes déployables sous la forme de conteneurs.
La seconde de cette série est Minio, le fruit des travaux d’Abu Periasamy, l’un des pères de GlusterFS.
Minio
Co-fondée par Anand Babu Periasamy, l’un des principaux développeurs et ex-CTO de Gluster, la start-up californienne Minio a conçu une solution de stockage objet oOpen Source compatible S3, dont l’objectif est de délivrer un stockage simple, rapide et performant aux développeurs d’applications cloud.
Créée en novembre 2014, La société compte moins de 20 salariés et a levé un total de 3,35 M$ auprès des fonds AME Cloud Ventures, General Catalyst Partners, Index Ventures et Nexus Venture et auprès d’investisseurs privés dont Mark Leslie (CEO historique de Veritas), Jeff Rottschild (cofondateur de Veritas), Ben Golub (CEO de Docker) ou Marten Mickos (ex-MySQL). Minio dispose déjà d’une large communauté, avec plus de 125 contributeurs actifs au code du logiciel.
Un stockage objet simple et compact, déployable sous forme de conteneur Docker
Le logiciel de stockage objet de la firme, Minio Cloud Storage, a été développé en langage Go et est fourni avec plusieurs SDK pour les langages Go, Java, JavaScript et Python. Le code source du logiciel est accessible sur GitHub (sous licence Apache) et il a déjà été téléchargé plus de 500 000 fois.
Minio peut se déployer comme un exécutable traditionnel sous Windows, Linux, MacOS ou FreeBSD. Mais dans 90 % des cas, il est mis en œuvre sous la forme d’un conteneur Docker. Le logiciel n’a pas pour ambition de concurrencer les grands systèmes de stockage objet massifs comme Scality ou IBM Cloud Storage. Il vise plutôt à délivrer du stockage au plus près des applications. Idéalement, explique Anand Babu Periasamy, l’objectif est que les développeurs déploient programmatiquement leurs applications en même temps que Minio.
Le logiciel dispose de deux modes de fonctionnement. Le premier permet de mettre en place un stockage compatible S3 au-dessus de volumes classiques en mode bloc. Déployé sur un serveur x86 ou ARM, Minio peut consommer un volume de stockage et le faire apparaître comme un stockage S3. Dans ce mode, Minio permet à un développeur de disposer d’un stockage objet à peu près n’importe où, y compris sur sa machine de travail. L’intégrité des données est assurée par les mécanismes mêmes de protection du volume sous-jacent. S’il s’agit d’un simple disque dur et qu’il tombe en panne, les données sont perdues. En revanche, s’il s’agit d’un volume SAN, le niveau de protection dépend de la baie de stockage.
Le second mode de déploiement, bien plus sophistiqué, est baptisé Distributed Minio. Dans ce mode, Minio est capable d’agréger la capacité de multiples volumes résidant sur un ou plusieurs serveurs physiques ou virtuels en un espace objet protégé par un mécanisme de code à effacement. Distributed Minio peut agréger jusqu’à 16 disques dispersés sur un maximum de 16 nœuds différents (1 disque par serveur sur 16 machines, 2 disques par serveur sur 8 machines, etc.). Le logiciel assure l’intégrité des données tant qu’au moins la moitié des disques du cluster reste disponible. Et il est possible de créer de nouveaux objets sur le cluster tant que sur un total de n disques, n/2 +1 disques sont accessibles. Minio intègre également un mécanisme de protection contre la corruption silencieuse des données (ce que l’on appelle « bit-rot »).
L’object store est compatible avec le protocole S3 et accepte l’écriture de tout type d’objets tant que leur taille unitaire ne dépasse pas 5 To. Point intéressant, Minio supporte aussi les mécanismes de notifications Lambda d’AWS - ce qui permet à certains événements de déclencher des appels à des fonctions spécifiques. Cela peut aller de la conversion automatique d’une image ou d’une vidéo après ingestion, à la mise en œuvre de mécanisme de scoring ou de filtrage de données.
Minio Client : un ensemble de commandes shell pour gérer, répliquer ou synchroniser des données entre stockage S3
Minio est aussi fourni avec Minio Client ou « mc », un composant client indépendant qui fonctionne avec tout type de stockage S3 et délivre l’équivalent de commandes shell Unix pour le stockage objet. Minio Client inclut ainsi des commandes comme ls, cp, diff, mkdir, mirror, rm ou rsync, et permet par exemple de lister les objets d’un bucket, de répliquer de façon transparente le contenu d’un bucket d’un stockage S3 à un autre, ou de synchroniser les données d’un service de stockage local Minio vers un autre stockage compatible S3 (et vice-versa). Il est à noter que Minio Client fonctionne avec Minio, mais aussi avec toute forme de stockage compatible S3.
Les différents logiciels de Minio, 100 % open source, sont téléchargeables et utilisables gratuitement. L’éditeur, Minio génére ses revenus via des prestations de support auprès de grands clients. « Lorsque nous devenons un composant critique chez certains clients, ceux-ci sont prêts à signer un contrat avec nous pour disposer d’une offre de support », indique le CEO de Minio. La firme n’entend toutefois pas se disperser et veut privilégier les grands contrats. Elle se satisfait tout à fait de voir des partenaires assurer le support de clients plus petits. Cela lui permet de concentrer l’essentiel de ses efforts sur l’enrichissement du code de Minio.