MinIO läuft auf allem – Bare Metal, Kubernetes, Docker, Linux und mehr. Unternehmen entscheiden sich für die Ausführung von MinIO, um ihre Daten auf einer dieser Plattformen zu hosten, und verlassen sich zunehmend auf mehrere Plattformen, um mehreren Anforderungen gerecht zu werden. Die Wahl der zugrunde liegenden Hardware und des Betriebssystems basiert auf einer Reihe von Faktoren, vor allem auf der Menge der in MinIO zu speichernden Daten sowie den Anforderungen für die Integration mit anderer Cloud-nativer Software, Leistung und Sicherheit.
Viele unserer Kunden betreiben MinIO auf Bare-Metal, während die Mehrheit auf Kubernetes läuft. Das Ausführen mehrerer MinIO-Instanzen in einer von Kubernetes orchestrierten Containerarchitektur ist äußerst effizient. MinIO-Kunden führen ohne Unterbrechung neue Regionen ein und aktualisieren Dienste, wobei in jeder Region separate Kubernetes-Cluster ausgeführt werden und das Betriebsziel „Shared-Nothing“ für höchste Ausfallsicherheit und Skalierbarkeit gilt.
Kunden wechseln aus verschiedenen Gründen zu MinIO, darunter:
Aufgrund dieser unterschiedlichen Gründe und Umgebungen, in denen MinIO verwendet und installiert werden kann, ist es realistisch anzunehmen, dass es eine Reihe von Datenquellen gibt, in denen bereits Daten gespeichert sind, die Sie in MinIO übernehmen möchten.
In diesem Beitrag werfen wir einen Blick auf einige der verfügbaren Tools, um Daten aus S3, lokalen Dateisystemen, NFS, Azure, GCP, Hitachi Content Platform, Ceph und anderen in MinIO-Cluster zu übertragen, wo sie cloudnativer KI zugänglich gemacht werden können /ML- und Analysepakete.
Zunächst verwenden wir im Laufe dieses Beitrags für einige dieser Optionen den MinIO-Client (mc). Bitte installieren Sie es unbedingt und stellen Sie den Alias auf Ihren laufenden MinIO-Server ein.
mc alias set destminio https://myminio.example.net minioadminuser minioadminpassword
Wir werden einige weitere „Quellen“-Aliase hinzufügen, während wir die verschiedenen Methoden durchgehen.
Die meisten Anwendungsfälle für die Migration von Daten in MinIO beginnen mit einem gemounteten Dateisystem oder NFS-Volume. In dieser einfachen Konfiguration können Sie MC Mirror verwenden, um die Daten von der Quelle zum Ziel zu synchronisieren. Stellen Sie sich mc mirror
als ein Schweizer Taschenmesser für die Datensynchronisierung vor. Dadurch wird der Benutzer entlastet, die beste Art der Interaktion mit der Quelle zu bestimmen, von der Sie die Objekte abrufen. Es unterstützt eine Reihe von Quellen und je nach Quelle, aus der Sie ziehen, werden die richtigen Funktionen verwendet, um diese zu aktivieren.
Beginnen wir beispielsweise mit einem einfachen Dateisystem, das von einer physischen Festplatte, einer virtuellen Festplatte oder sogar einem GlusterFS-Mount bereitgestellt wird. Solange es sich um ein vom Betriebssystem lesbares Dateisystem handelt, kann MinIO es auch lesen:
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
Nehmen wir an, Ihre Objekte befinden sich in /home/mydata
, dann würden Sie den folgenden Befehl ausführen, um die Objekte zu spiegeln (wenn der mydata
Bucket noch nicht vorhanden ist, müssten Sie ihn zuerst erstellen):
mc mirror /home/mydata destminio/mydata
Dieser Befehl stellt sicher, dass Objekte, die sich nicht mehr am Quellspeicherort befinden, vom Ziel entfernt werden oder dass, wenn neue Objekte zur Quelle hinzugefügt werden, diese zum Ziel kopiert werden. Wenn Sie jedoch vorhandene, in der Quelle geänderte Objekte überschreiben möchten, übergeben Sie das Flag --overwrite
.
Network File Share (NFS) wird im Allgemeinen zum Speichern von Objekten oder Daten verwendet, auf die nicht oft zugegriffen wird, da das Protokoll zwar allgegenwärtig ist, im gesamten Netzwerk jedoch häufig sehr langsam ist. Dennoch verwenden viele ETL- und einige Legacy-Systeme NFS als Repository für Daten, die für Vorgänge, Analysen, KI/ML und weitere Anwendungsfälle verwendet werden. Aufgrund der Skalierbarkeit, Sicherheit und hohen Leistung eines MinIO-Clusters sowie der Fähigkeit von MinIO, mithilfe der S3-API Dienste für Cloud-native Anwendungen bereitzustellen, wäre es sinnvoller, diese Daten auf MinIO zu speichern.
Installieren Sie die erforderlichen Pakete, um das NFS-Volume bereitzustellen
apt install nfs-common
Stellen Sie sicher, dass Sie das Verzeichnis /home
zu /etc/exports
hinzufügen
/home client_ip(rw,sync,no_root_squash,no_subtree_check)
Hinweis: Stellen Sie sicher, dass Sie Ihren NFS-Server neu starten, beispielsweise auf Ubuntu-Servern
systemctl restart nfs-kernel-server
Erstellen Sie ein Verzeichnis zum Mounten des NFS-Mounts
mkdir -p /nfs/home
Mounten Sie das NFS-Volume
mount <nfs_host>:/home /nfs/home
Kopieren Sie die Daten von NFS nach MinIO
mc mirror /nfs/home destminio/nfsdata
Jetzt können Sie Ihre großen Objekte von NFS nach MinIO verschieben.
Wie bereits erwähnt, ist mc mirror
ein Schweizer Taschenmesser für die Datensynchronisierung. Neben Dateisystemen werden auch Objekte aus S3- oder S3-API-kompatiblen Speichern kopiert und auf MinIO gespiegelt. Einer der beliebtesten Anwendungsfälle hierfür ist die Spiegelung eines Amazon S3-Buckets.
Befolgen Sie diese Schritte , um einen AWS S3-Bucket in Ihrem Konto zu erstellen. Wenn Sie bereits über ein bestehendes Konto mit Daten verfügen, können wir dieses auch nutzen.
Sobald ein Bucket erstellt oder Daten zu einem vorhandenen Bucket hinzugefügt wurden, erstellen Sie eine neue IAM-Richtlinie mit Zugriffsschlüssel und geheimem Schlüssel, die nur den Zugriff auf unseren Bucket ermöglicht. Speichern Sie die generierten Anmeldeinformationen für den nächsten Schritt.
Mit dem MinIO-Client können wir mit jedem S3-kompatiblen Speicher arbeiten. Als Nächstes fügen wir einen Alias hinzu, der den von uns erstellten S3-Bucket-Namen und die heruntergeladenen Anmeldeinformationen verwendet
mc alias set s3 https://s3.amazonaws.com BKIKJAA5BMMU2RHO6IBB V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12 --api S3v4
Verwenden Sie MC Mirror , um die Daten von S3 nach MinIO zu kopieren
mc mirror s3/mybucket destminio/mydata
Abhängig von der Datenmenge, der Netzwerkgeschwindigkeit und der physischen Entfernung von der Region, in der die Bucket-Daten gespeichert sind, kann es einige Minuten oder länger dauern, bis Sie alle Daten gespiegelt haben. Sie sehen eine Meldung, wenn mc mit dem Kopieren aller Objekte fertig ist.
Für die nächste Reihe von Tools schreiben wir spezielle Skripte, um einige der nicht standardmäßigen Edge-Case-Datenmigrationsanforderungen zu erfüllen, die wir erfüllen müssen. Eine davon ist die Migration von HDFS und Hadoop. Viele Unternehmen haben so viele Daten in Hadoop gespeichert, dass es unmöglich ist, sie zu ignorieren und mit einer Cloud-nativen Plattform neu anzufangen. Es ist praktikabler, diese Daten auf etwas Moderneres (und Cloud-natives) wie MinIO zu übertragen und Ihr ETL und andere Prozesse auf diese Weise auszuführen. Die Einrichtung ist recht einfach.
Erstellen Sie eine Datei namens core-site.xml
mit dem folgenden Inhalt
<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>
Legen Sie die folgenden Umgebungsvariablen fest
export HDFS_SOURCE_PATH=hdfs://namenode:8080/user/minio/testdir export S3_DEST_PATH=s3a://mybucket/testdir
Laden Sie die folgende Datei herunter, chmod +x, und führen Sie sie aus
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
Wenn Sie Daten seit mehreren Jahren in Hadoop speichern, kann dieser Vorgang mehrere Stunden dauern. Wenn es sich um einen Produktionscluster handelt, empfehlen wir die Datenmigration außerhalb der Geschäftszeiten während der Wartungsfenster, um die Auswirkungen von Leistungseinbußen auf Ihren Hadoop-Cluster während der Datenspiegelung zu minimieren.
Weitere Details zur Migration von HDFS zu MinIO finden Sie in diesem GitHub-Repo , und wir haben auch einen Blog-Beitrag, Migration von HDFS zu Object Storage .
Wir haben zuvor einen tollen Blogbeitrag über die Hitachi Content Platform und die Migration Ihrer Daten in einen MinIO-Cluster geschrieben. Ich würde empfehlen, den Blog-Beitrag zu lesen, um alle Einzelheiten zu erfahren, aber der Kernpunkt ist wie folgt.
Sobald Sie den erforderlichen HCP-Cluster und die Eingabedatei konfiguriert haben, laden Sie das Migrationstool herunter und führen Sie den folgenden Befehl aus, um den Migrationsprozess zu starten
$ 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
Zu guter Letzt haben wir den Elefanten bis zum Schluss im Raum gelassen. Obwohl Ceph in die Jahre gekommen ist, ist es ein beliebter Datenspeicher und verfügt über eine S3-kompatible API. Es wird von anderen Kubernetes-Projekten als Backend für die Objektspeicherung verwendet, beispielsweise von Rook. Allerdings ist Ceph beim Einrichten und Betreiben ein unhandlicher Gigant. Daher ist es nur natürlich, dass die Leute ihre Daten auf etwas übertragen möchten, das einfacher, leichter zu warten und leistungsfähiger ist.
Es gibt zwei Möglichkeiten, Daten von Ceph zu kopieren:
Bucket-Replikation: Erstellt das Objekt, aber wenn das Objekt aus der Quelle gelöscht wird, wird es nicht am Ziel gelöscht. https://min.io/docs/minio/linux/administration/bucket-replication.html
Mc Mirror: Synchronisiert Objekte und Versionen und löscht sogar nicht vorhandene Objekte https://min.io/docs/minio/linux/reference/minio-mc/mc-mirror.html
Ähnlich wie bei S3 können Sie, da Ceph über eine S3-kompatible API verfügt, dem MinIO-Client einen Alias hinzufügen
mc alias set ceph http://ceph_host:port cephuser cephpass
Anschließend können Sie mc mirror
verwenden, um die Daten in Ihren MinIO-Cluster zu kopieren
mc mirror ceph/mydata destminio/mydata
Wir empfehlen Ihnen, den Befehl mc mirror
mit dem Flag --watch
auszuführen, um kontinuierlich nach Objekten zu suchen und diese mit MinIO zu synchronisieren.
Anhand einiger Beispiele soll Ihnen gezeigt werden, wie einfach die Migration Ihrer Daten nach MinIO ist. Es spielt keine Rolle, ob Sie ältere Legacy-Protokolle wie NFS oder die neuesten und besten wie S3 verwenden, MinIO ist hier, um Sie zu unterstützen.
In diesem Beitrag gingen wir ausführlich auf die Migration von Dateisystemen und anderen Datenspeichern wie NFS, Dateisystem, GlusterFS, HDFS, HCP und nicht zuletzt Ceph ein. Unabhängig vom zugrunde liegenden Tech-Stack bietet Backend-MinIO eine leistungsstarke, langlebige, sichere und skalierbare, aber dennoch einfache softwaredefinierte Objektspeicherlösung.
Wenn Sie Fragen haben, können Sie uns gerne über Slack kontaktieren!
Auch hier veröffentlicht.