MinIO fonctionne sur tout : bare metal, Kubernetes, Docker, Linux et plus encore. Les organisations choisissent d'exécuter MinIO pour héberger leurs données sur l'une de ces plates-formes et s'appuient de plus en plus sur plusieurs plates-formes pour répondre à plusieurs exigences. Le choix du matériel et du système d'exploitation sous-jacents repose sur un certain nombre de facteurs, principalement la quantité de données à stocker dans MinIO ainsi que les exigences d'intégration avec d'autres logiciels cloud natifs, de performances et de sécurité.
Beaucoup de nos clients exécutent MinIO sur du bare metal, tandis que la majorité fonctionne sur Kubernetes. L'exécution de plusieurs instances de MinIO dans une architecture conteneurisée orchestrée par Kubernetes est extrêmement efficace. Les clients MinIO déploient de nouvelles régions et mettent à jour les services sans interruption, avec des clusters Kubernetes distincts exécutés dans chaque région et l'objectif opérationnel de ne rien partager pour une résilience et une évolutivité maximales.
Les clients passent à MinIO pour diverses raisons, notamment :
En raison de ces diverses raisons et environnements dans lesquels MinIO peut être utilisé et installé, il est réaliste de supposer qu'il existe un certain nombre de sources de données où les données sont déjà stockées et que vous souhaiteriez accéder à MinIO.
Dans cet article, passons en revue certains des outils disponibles pour extraire des données de S3, FileSystem local, NFS, Azure, GCP, Hitachi Content Platform, Ceph et autres, et dans des clusters MinIO où elles peuvent être exposées à l'IA native du cloud. /ML et packages d'analyse.
Pour commencer, nous utiliserons le client MinIO (mc) au cours de cet article pour quelques-unes de ces options. Assurez-vous de l'installer et de définir l'alias sur votre serveur MinIO en cours d'exécution.
mc alias set destminio https://myminio.example.net minioadminuser minioadminpassword
Nous ajouterons d'autres alias « source » au fur et à mesure que nous passerons en revue les différentes méthodes.
La majorité des cas d'utilisation de migration de données vers MinIO commencent par un système de fichiers monté ou un volume NFS. Dans cette configuration simple, vous pouvez utiliser mc Mirror pour synchroniser les données de la source vers la destination. Considérez mc mirror
comme un couteau suisse pour la synchronisation des données. Cela soulage l'utilisateur du fardeau de déterminer la meilleure façon d'interagir avec la source à partir de laquelle vous récupérez les objets. Il prend en charge un certain nombre de sources et, en fonction de la source à partir de laquelle vous extrayez, les bonnes fonctions sont utilisées pour les activer.
Par exemple, commençons par un simple système de fichiers monté à partir d'un disque dur physique, d'un disque virtuel ou même de quelque chose comme un montage GlusterFS. Tant qu'il s'agit d'un système de fichiers lisible par le système d'exploitation, MinIO peut également le lire :
filesystem kbytes used avail capacity mounted on /dev/root 6474195 2649052 3825143 41% / /dev/stand 24097 5757 18340 24% /stand /proc 0 0 0 0% /proc /dev/fd 0 0 0 0% /dev/fd /dev/_tcp 0 0 0 0% /dev/_tcp /dev/dsk/c0b0t0d0s4 10241437 4888422 5353015 48% /home /dev/dsk/c0b0t1d0sc 17422492 12267268 5155224 71% /home2
Supposons que vos objets se trouvent dans /home/mydata
, vous exécuterez alors la commande suivante pour mettre en miroir les objets (si le bucket mydata
n'existe pas déjà, vous devrez d'abord le créer) :
mc mirror /home/mydata destminio/mydata
Cette commande garantira que les objets qui ne se trouvent plus à l'emplacement source sont supprimés de la destination ou lorsque de nouveaux objets sont ajoutés à la source, ils seront copiés vers la destination. Mais si vous souhaitez écraser les objets existants modifiés dans la source, passez l'indicateur --overwrite
.
Le partage de fichiers réseau (NFS) est généralement utilisé pour stocker des objets ou des données qui ne sont pas souvent consultés car, bien qu'omniprésent, le protocole est souvent très lent sur le réseau. Néanmoins, de nombreux ETL et certains systèmes existants utilisent NFS comme référentiel de données à utiliser pour les opérations, l'analyse, l'IA/ML et des cas d'utilisation supplémentaires. Il serait plus logique que ces données résident sur MinIO en raison de l'évolutivité, de la sécurité et des hautes performances d'un cluster MinIO, associées à la capacité de MinIO à fournir des services aux applications cloud natives à l'aide de l'API S3.
Installez les packages requis pour monter le volume NFS
apt install nfs-common
Assurez-vous d'ajouter le répertoire /home
à /etc/exports
/home client_ip(rw,sync,no_root_squash,no_subtree_check)
Remarque : veillez à redémarrer votre serveur NFS, par exemple sur les serveurs Ubuntu
systemctl restart nfs-kernel-server
Créez un répertoire pour monter le montage NFS
mkdir -p /nfs/home
Monter le volume NFS
mount <nfs_host>:/home /nfs/home
Copiez les données de NFS vers MinIO
mc mirror /nfs/home destminio/nfsdata
Et voilà, vous pouvez désormais déplacer vos gros objets de NFS vers MinIO.
Comme nous l'avons mentionné précédemment, mc mirror
est un couteau suisse de la synchronisation des données. En plus des systèmes de fichiers, il copie également les objets des magasins compatibles S3 ou API S3 et les met en miroir sur MinIO. L'un des cas d'utilisation les plus populaires consiste à mettre en miroir un compartiment Amazon S3.
Suivez ces étapes pour créer un compartiment AWS S3 dans votre compte. Si vous disposez déjà d’un compte avec des données, nous pourrions également l’utiliser.
Une fois qu'un bucket a été créé ou que des données ont été ajoutées à un bucket existant, créez une nouvelle politique IAM avec une clé d'accès et une clé secrète permettant l'accès uniquement à notre bucket. Enregistrez les informations d'identification générées pour l'étape suivante.
Nous pouvons travailler avec n'importe quel stockage compatible S3 à l'aide du client MinIO. Ajoutons ensuite un alias en utilisant le nom du compartiment S3 que nous avons créé ainsi que les informations d'identification que nous avons téléchargées.
mc alias set s3 https://s3.amazonaws.com BKIKJAA5BMMU2RHO6IBB V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12 --api S3v4
Utilisez mc Mirror pour copier les données de S3 vers MinIO
mc mirror s3/mybucket destminio/mydata
En fonction de la quantité de données, des vitesses du réseau et de la distance physique par rapport à la région où les données du compartiment sont stockées, la mise en miroir de toutes les données peut prendre quelques minutes ou plus. Vous verrez un message lorsque mc aura fini de copier tous les objets.
Pour le prochain ensemble d'outils, nous écrivons des scripts dédiés pour satisfaire certaines des exigences non standard de migration de données de cas extrêmes que nous devons remplir. L'un d'entre eux consiste à migrer depuis HDFS et Hadoop. De nombreuses entreprises ont tellement de données stockées dans Hadoop qu'il est impossible de les ignorer et de repartir à zéro avec une plateforme cloud native. Il est plus faisable de transférer ces données vers quelque chose de plus moderne (et natif du cloud) comme MinIO et d'exécuter votre ETL et d'autres processus de cette façon. C'est plutôt simple à mettre en place.
Créez un fichier appelé core-site.xml
avec le contenu suivant
<configuration> <property> <name>fs.s3a.path.style.access</name> <value>true</value> </property> <property> <name>fs.s3a.endpoint</name> <value>https://minio:9000</value> </property> <property> <name>fs.s3a.access.key</name> <value>minio-sample</value> </property> <property> <name>fs.s3a.secret.key</name> <value>minio-sample123</value> </property> </configuration>
Définissez les variables d'environnement suivantes
export HDFS_SOURCE_PATH=hdfs://namenode:8080/user/minio/testdir export S3_DEST_PATH=s3a://mybucket/testdir
Téléchargez le fichier suivant, chmod +x et exécutez-le
curl -LSs -o https://github.com/minio/hdfs-to-minio/blob/master/hdfs-to-minio.sh chmod +x hdfs-to-minio.sh ./hdfs-to-minio.sh
Si vous stockez des données dans Hadoop depuis plusieurs années, ce processus peut prendre plusieurs heures. S'il s'agit d'un cluster de production, nous vous recommandons de migrer les données en dehors des heures d'ouverture pendant les fenêtres de maintenance afin de minimiser l'impact de toute dégradation des performances sur votre cluster Hadoop pendant la mise en miroir des données.
Plus de détails sur la migration de HDFS vers MinIO sont disponibles dans ce GitHub Repo , et nous avons également un article de blog, Migrating from HDFS to Object Storage .
Nous avons déjà écrit un article de blog étonnant sur Hitachi Content Platform et comment migrer vos données vers un cluster MinIO. Je recommanderais de lire l'article de blog pour plus de détails, mais le point crucial est le suivant.
Une fois que vous avez configuré le cluster HCP et le fichier d'entrée nécessaires, téléchargez l'outil de migration et exécutez la commande suivante pour démarrer le processus de migration.
$ hcp-to-minio migrate --namespace-url https://finance.europe.hcp.example.com --auth-token "HCP bXl1c2Vy:3f3c6784e97531774380db177774ac8d" --host-header "s3testbucket.sandbox.hcp.example.com" --data-dir /mnt/data --bucket s3testbucket --input-file /tmp/data/to-migrate.txt
Enfin et surtout, nous avons gardé l'éléphant dans la pièce jusqu'à la fin. Bien que vieillissant, Ceph est un magasin de données populaire et dispose d’une API compatible S3. Il est utilisé par d'autres projets Kubernetes comme backend pour le stockage d'objets, tels que Rook. Ceph, cependant, est un monstre difficile à configurer et à gérer. Il est donc naturel que les gens souhaitent déplacer leurs données vers quelque chose de plus simple, plus facile à maintenir et offrant de meilleures performances.
Il existe deux manières de copier des données depuis Ceph :
Réplication de compartiment : crée l'objet, mais si l'objet est supprimé de la source, il ne le supprimera pas sur la destination. https://min.io/docs/minio/linux/administration/bucket-replication.html
Mc Mirror : synchronise les objets et les versions, il supprimera même les objets qui n'existent pas https://min.io/docs/minio/linux/reference/minio-mc/mc-mirror.html
Semblable à S3, puisque Ceph dispose d'une API compatible S3, vous pouvez ajouter un alias au client MinIO.
mc alias set ceph http://ceph_host:port cephuser cephpass
Vous pouvez ensuite utiliser mc mirror
pour copier les données sur votre cluster MinIO
mc mirror ceph/mydata destminio/mydata
Nous vous suggérons d'exécuter la commande mc mirror
avec l'indicateur --watch
pour surveiller en permanence les objets et les synchroniser avec MinIO.
Voici quelques exemples pour vous montrer à quel point il est facile de migrer vos données vers MinIO. Peu importe que vous utilisiez des protocoles plus anciens tels que NFS ou les plus récents et les plus performants tels que S3, MinIO est là pour vous aider.
Dans cet article, nous avons expliqué en détail comment migrer à partir de systèmes de fichiers et d'autres magasins de données tels que NFS, système de fichiers, GlusterFS, HDFS, HCP et enfin Ceph. Quelle que soit la pile technologique utilisée, le backend MinIO fournit une solution de stockage d'objets définie par logiciel performante, durable, sécurisée et évolutive, mais simple.
Si vous avez des questions, n'hésitez pas à nous contacter sur Slack !
Également publié ici .