Minio
Übung 1: Minio-Server verwenden
Der Minio-Server (minio
) und -Client (mc
) sind vorinstalliert.
Datenverzeichnis erstellen
Erstellen Sie ein Verzeichnis in Ihrem $HOME
-Verzeichnis namens minio-data
:
mkdir ~/minio-data
Benutzername und Passwort konfigurieren
Editieren Sie anschliessend die Datei ~/.bashrc
mit einem Texteditor Ihrer
Wahl, z.B. mit nano
:
nano ~/.bashrc
Definieren Sie ganz unten an der Datei zwei neue Umgebungsvariablen mit dem
export
-Befehl:
export MINIO_ROOT_USER=minio
export MINIO_ROOT_PASSWORD=topsecret
Speichern Sie die Datei ab. Laden Sie die Datei anschliessend mit dem
source
-Befehl nach:
source ~/.bashrc
Als Kurzschreibweise kann auch der .
-Befehl verwendet werden:
. ~/.bashrc
Geben Sie nun testhalber beide Variablen aus:
echo $MINIO_ROOT_USER
echo $MINIO_ROOT_PASSWORD
Es sollte der konfigurierte Benutzername und das konfigurierte Passwort ausgegeben werden.
Minio starten
Starten Sie nun den Minio-Server mit dem folgenden Befehl:
minio server --console-address ':9090' ~/minio-data
Es ist wichtig, dass der Server auf Port 9090
läuft, da dieser Port (und
9000
) in der Firewall spezifisch freigegeben worden ist.
Lassen Sie den Server nun in diesem Terminal laufen.
Auf Web-Interface einloggen
Besuchen Sie im Browser die Seite http://[IP-ADRESSE]:9090
, wobei Sie
[IP-Adresse]
durch die jeweiligen IP-Adresse ihrer virtuellen Maschine
ersetzen müssen. Sie werden zu einem Login-Bildschirm weitergeleitet.
Loggen Sie sich mit dem zuvor definierten Benutzernamen und Passwort ein.
Sie sollten nun die leere Bucket-Übersicht sehen.
Bucket erstellen
Erstellen Sie nun einen neuen Bucket per Klick auf den entsprechenden Link (“Create Bucket”). Nennen Sie diesen “hello”. Sie brauchen keine anderen Optionen anzuwählen. Klicken Sie anschliessend auf die Schaltfläche “Create Bucket”, um den neuen Bucket definitiv zu erstellen.
Datei hochladen
Klicken Sie in der Navigation links unter dem Abschnitt “User” auf den Link “Object Browser”. Wählen Sie nun den zuvor neu erstellten Bucket “hello” aus.
Betätigen Sie als nächstes die “Upload”-Schaltfläche oben rechts. Klicken Sie dann auf “Upload File”. Laden Sie nun drei Dateien unterschiedlichen Typs von Ihrem lokalen Dateisystem (BYOD-Laptop) hoch:
- eine Bilddatei (Endung
.png
,.jpeg
usw.) - eine Textdatei (Endung
.txt
) - eine Binärdatei (Endung
.exe
)
Kontrollfragen
Beantworten Sie folgende Fragen für Ihre persönliche Dokumentation:
- Wie gross sind die drei Dateien gemäss Anzeige im Web-Interface (grob zusammengerechnet)?
- Wie gross ist der
hello
-Bucket auf dem Dateisystem unter~/minio-data
? Verwenden Sie den Befehldu -hs
um die Grösse zu ermitteln! - Betrachten Sie die Dateien und Ordner im Verzeichnis
~/minio-data/hello
mithilfe desls
-Befehls. Wie sind die Daten organisiert, und warum ist das wohl so gelöst?
Übung 2: Minio-Client verwenden
Minio stellt einen Kommandozeilen-Client zur Verfügung, mit dem die Daten auf dem Minio-Server komfortabel verwendet werden können.
Client-Alias erstellen
Der Minio-Client mc
kann so konfiguriert werden, dass er unter einem
Alias-Namen mit einem bestimmten Minio-Server zusammenarbeitet. Führen Sie den
folgenden Befehl aus, um einen neuen Alias namens local
zu erstellen:
mc alias set local http://localhost:9000 minio topsecret
Unter dem Namen local
kann man nun auf die lokale Minio-Instanz zugreifen.
Testen Sie den Zugriff mit dem folgenden Befehl:
mc admin info local
Es sollten nun Zustandsinformationen zum lokalen Minio-Server angezeigt werden.
Die Konnektivität kann mithilfe des ping
-Befehls überprüft werden:
mc ping local
Mit [Ctrl]-[C]
stoppen Sie die ping
-Endlosschleife.
Client-Befehle kennenlernen
Der Minio-Client mc
bietet zahlreiche Befehle, die man von Unix/Linux her kennt:
ls
: Dateien auflistenmv
: Dateien umbenennen (verschieben)rm
: Dateien entfernen (löschen)cat
: Dateien aneinanderhängen/ausgebencp
: Dateien kopierenhead
: Anfang einer Datei ausgebenfind
: Dateien suchendiff
: Dateien vergleichendu
: Dateigrösse ermittelnstat
: Metadaten zu Dateien und Verzeichnissen ausgeben
Diese Befehle können zwar für normale Dateien im Dateisystem verwendet werden.
Die mc
-Versionen dieser Befehle bieten aber dadurch keinen Vorteil gegenüber
den herkömmlichen Befehlen.
Die mc
-Befehle können jedoch auf S3-Daten angewendet werden, indem man Alias
und Bucket ([Alias]/[Bucket]
) angibt:
mc ls local/hello
Mögliche Ausgabe (Beispiel):
[2024-10-26 15:05:56 UTC] 103MiB STANDARD deno.exe
[2024-10-26 15:05:27 UTC] 29B STANDARD key-win-10-edu.txt
[2024-10-26 15:05:09 UTC] 56KiB STANDARD rpoplpush.jpeg
Weiter bietet mc
einige Befehle, die nur im Zusammenhang mit einem S3-Storage
sinnvoll sind. Die folgenden Befehle dienen dem Umgang mit Buckets und
S3-Datenobjekten:
mb
: Bucket erstellenrb
: Bucket entfernentag
: Tags verwaltenpipe
: Standardausgabe in Objekt umleitenmirror
: Daten mit anderem S3-Server synchronisierenretention
: Speicherdauer von Objekten festlegenshare
: Objekte per URL teilenversion
: Versionierung von Buckets verwalten
Bucket via mc
erstellen
Erstellen Sie einen neuen Bucket namens backup
mithilfe des mc mb
-Befehls.
(Tipp: Eine Hilfeseite erhält man mit mc mb --help
. Mit q
kann man die Hilfe
schliessen.) Kopieren Sie dann wieder drei unterschiedliche Dateien mit dem mc cp
-Befehl in den neuen Bucket.
Kontrollieren Sie anschliessend im Browser, ob der Bucket erstellt worden ist und alle Dateien enthält.
Führen Sie nun den Befehl mc ls local/backup
aus und kopieren Sie dessen
Ausgabe in Ihre persönliche Dokumentation.
Buckets taggen
Verwenden Sie den mc tag
-Befehl (genauer: den Unterbefehl mc tag set
), um
den Buckets die folgenden Tags zu vergeben:
Bucket | Tag (Key) | Tag (Value) |
---|---|---|
hello | purpose | upload |
hello | module | 346 |
backup | purpose | archive |
backup | module | 346 |
Mit mc tag --help
bzw. mc tag set --help
erhalten Sie Hilfestellungen dazu.
Listen Sie nun die Tags mit mc tag list
im JSON-Format auf, und speichern
Sie die Ausgaben in Ihrer persönlichen Dokumentation ab.
Übung 3: s3cmd
Im Gegensatz zu mc
ist der Befehl s3cmd
nicht nur für die Zusammenarbeit mit
MinIO ausgelegt, sondern sollte auch mit anderen S3-Implementierungen und
-Angeboten zusammenspielen.
Der Befehl s3cmd
sollte bereits installiert sein. (Installieren Sie ihn
andernfalls mit dem folgenden Befehl):
sudo apt install -y s3cmd
Erstellen Sie die Datei ~/.s3cfg
und speichern Sie darin die folgende Konfiguration ab:
host_base = localhost:9000
host_bucket = localhost:9000
use_https = False
access_key = minio
secret_key = topsecret
Listen Sie nun die Dateien im hello
-MinIO-Bucket auf:
s3cmd ls s3://hello
Mit s3cmd
müssen Sie anstelle des Alias local/
bloss das Protokoll s3://
als Präfix angeben.
Erstellen Sie mit s3cmd mb
nun einen neuen Bucket namens backup-copy
:
s3cmd mb s3://backup-copy
Kopieren Sie die drei Dateien aus dem backup
-Bucket in den
backup-copy
-Bucket. Verwenden Sie dazu den s3cmd cp
-Befehl.
Dokumentieren Sie die Befehle in Ihrer persönlichen Dokumentation.
Kontrollieren Sie nun im MinIO-GUI im Browser sowie mit den Befehlen mc ls
und
s3cmd ls
, ob alle Dateien erfolgreich kopiert worden sind.
Übung 4: s3fs
FUSE (Filesystem in Userspace) bietet die Möglichkeit, Dateisysteme ohne Administratoren-Berechtigungen als Ordner einzubinden.
Mithilfe von s3fs
können S3-Buckets als normale Ordner eingebunden werden.
Der Befehl s3fs
sollte bereits installiert sein. (Installieren Sie ihn
andernfalls mit dem folgenden Befehl):
sudo apt install -y s3fs
Erstellen Sie eine Konfigurationsdatei ~/.passwd-s3fs
mit dem folgenden
Inhalt:
minio:topsecret
Ändern Sie die Berechtigungen für diese Datei folgendermassen:
chmod 600 ~/.passwd-s3fs
Dadurch stellen Sie sicher, dass nur Ihr Benutzer diese Datei lesen und
schreiben kann (s3fs
verweigert sonst den Dienst).
Erstellen Sie nun mit dem mkdir
-Befehl ein Verzeichnis ~/minio-mount
mit
Unterverzeichnissen für die verschiedenen Buckets:
mkdir -p ~/minio-mount/hello
mkdir -p ~/minio-mount/backup
mkdir -p ~/minio-mount/backup-copy
Mithilfe des s3fs
-Befehls können die einzelnen Buckets nun “gemounted”, d.h.
eingehängt werden:
s3fs hello ~/minio-mount/hello -o use_path_request_style,url=http://localhost:9000
s3fs backup ~/minio-mount/backup -o use_path_request_style,url=http://localhost:9000
s3fs backup-copy ~/minio-mount/backup-copy -o use_path_request_style,url=http://localhost:9000
Die Unterverzeichnisse von ~/minio-mount/
können nun weitgehend wie lokale
Ordner verwendet werden.
Kopieren Sie nun eine beliebige Datei (z.B. /usr/share/pixmaps/htop.png
), die
noch nicht in MinIO vorhanden ist, mit dem cp
-Befehl in alle drei Buckets über
das ~/minio-mount/
-Verzeichnis.
Überprüfen Sie nun im MinIO-GUI im Browser, ob Sie die Datei in jedem Bucket sehen können.
Führen Sie nun den folgenden Befehl aus:
mount | grep minio
Legen Sie die Ausgabe in ihrer persönlichen Dokumentation ab.
Damit wird demonstriert, dass s3fs
die S3-Buckets über das Betriebssystem
(d.h. über eine Kernel-Funktion) einhängt.
Mit dem umount
-Befehl können die Buckets wieder vom Dateisystem gelöst werden:
umount ~/minio-mount/hello/
umount ~/minio-mount/backup
umount ~/minio-mount/backup-copy/
(Zwar gibt es hierfür auch den s3fs unmount
-Befehl, es ist aber bemerkenswert,
dass dies auch mit dem gewöhnlichen umount
-Befehl funktioniert.)
Mit find
können Sie nun überprüfen, dass keine Dateien mehr “da” sind, sondern
nur noch die Verzeichnisse:
find ~/minio-mount
Ausgabe:
minio-mount/
minio-mount/backup-copy
minio-mount/hello
minio-mount/backup
Die Dateien existieren aber weiterhin in MinIO, was Sie gerne über den Browser,
per mc ls
oder per s3cmd ls
überprüfen können.
Übung 5: Einsatzgebiete
Sie haben mit MinIO und den Hilfsprogrammen mc
, s3cmd
und s3fs
nun einige
Werkzeuge zum Umgang mit dem S3-Storage kennengelernt.
Überlegen Sie sich je einen Anwendungsfall für den privaten und den professionellen Bereich (z.B. für Ihren Lehrbetrieb), und beschreiben Sie diese beiden in ihrer persönlichen Dokumentation.
Gehen Sie dabei davon aus, dass nicht bloss ein lokaler Storage, sondern derjenige von einem Public-Cloud-Anbieter verwendet wird, und dass Sie die Region dafür frei wählen können.