paint-brush
Die Datenmigrationstools, die Ihnen den Einstieg in MinIO erleichternvon@minio
7,028 Lesungen
7,028 Lesungen

Die Datenmigrationstools, die Ihnen den Einstieg in MinIO erleichtern

von MinIO8m2023/11/01
Read on Terminal Reader
Read this story w/o Javascript

Zu lang; Lesen

Sehen wir uns einige der verfügbaren Tools an, um Daten aus S3, lokalen Dateisystemen, NFS, Azure, GCP, Hitachi Content Platform, Ceph und anderen in MinIO-Cluster zu übertragen.
featured image - Die Datenmigrationstools, die Ihnen den Einstieg in MinIO erleichtern
MinIO HackerNoon profile picture
0-item
1-item


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:


  • S3-kompatible API
  • Multi-Cloud-Cloud-agnostische Bereitstellungen
  • ACL-Verwaltung im IAM-Stil im S3-Stil
  • Verteilter und fehlertoleranter Speicher mit Erasure Coding
  • Tiering und Versionierung von Objekten über mehrere Cluster hinweg
  • Bucket- und Site-to-Site-Replikation
  • Batch-Replikation über Batch Framework
  • Serverseitige Objekt- und Clientdatenverschlüsselung
  • Transportschicht-Netzwerkverschlüsselung von Daten


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.

MinIO-Client

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.

Dateisysteme

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 .

NFS

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.

S3

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.

HDFS

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 .

HCP

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

Ceph

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:


Ä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.

Migrieren Sie Ihre Daten noch heute zu MinIO!

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.