Minio
Übung 1: Minio-Server verwenden
Der Minio-Server (minio) und -Client (mc) sind vorinstalliert.
Datenverzeichnis erstellen
Erstelle ein Verzeichnis in deinem $HOME-Verzeichnis namens minio-data:
mkdir ~/minio-dataBenutzername und Passwort konfigurieren
Editiere anschliessend die Datei ~/.bashrc mit einem Texteditor deiner Wahl, z.B. mit nano:
nano ~/.bashrcDefiniere ganz unten an der Datei zwei neue Umgebungsvariablen mit dem export-Befehl:
export MINIO_ROOT_USER=minio
export MINIO_ROOT_PASSWORD=topsecretSpeichere die Datei ab. Lade die Datei anschliessend mit dem source-Befehl nach:
source ~/.bashrcAls Kurzschreibweise kann auch der .-Befehl verwendet werden:
. ~/.bashrcGib nun testhalber beide Variablen aus:
echo $MINIO_ROOT_USER
echo $MINIO_ROOT_PASSWORDEs sollte der konfigurierte Benutzername und das konfigurierte Passwort ausgegeben werden.
Minio starten
Starte nun den Minio-Server mit dem folgenden Befehl:
minio server --console-address ':9090' ~/minio-dataEs ist wichtig, dass der Server auf Port 9090 läuft, da dieser Port (und 9000) in der Firewall spezifisch freigegeben worden ist.
Lasse den Server nun in diesem Terminal laufen.
Auf Web-Interface einloggen
Besuche im Browser die Seite http://[IP-ADRESSE]:9090, wobei du [IP-Adresse] durch die jeweiligen IP-Adresse deiner virtuellen Maschine ersetzen musst. Du wirst zu einem Login-Bildschirm weitergeleitet.
Logge dich mit dem zuvor definierten Benutzernamen und Passwort ein.
Du solltest nun die leere Bucket-Übersicht sehen.
Bucket erstellen
Erstelle nun einen neuen Bucket per Klick auf den entsprechenden Link (“Create Bucket”). Nenne diesen “hello”. Klicke anschliessend auf die Schaltfläche “Create Bucket”, um den neuen Bucket definitiv zu erstellen.
Datei hochladen
Klicke in der Navigation links unter dem Abschnitt “Buckets” auf den zuvor neu erstellten Bucket “hello”.
Betätige als nächstes die “Upload”-Schaltfläche oben rechts. Klicke dann auf “Upload File”. Lade nun drei Dateien unterschiedlichen Typs von deinem lokalen Dateisystem (BYOD-Laptop) hoch:
- eine Bilddatei (Endung .png,.jpegusw.)
- eine Textdatei (Endung .txt)
- eine Binärdatei (Endung .exe)
Kontrollfragen
Beantworte die folgende Fragen für deine 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? Verwende den Befehldu -hsum die Grösse zu ermitteln!
- Betrachte die Dateien und Ordner im Verzeichnis ~/minio-data/hellomithilfe 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ühre den folgenden Befehl aus, um einen neuen Alias namens local zu erstellen:
mc alias set local http://localhost:9000 minio topsecretUnter dem Namen local kann man nun auf die lokale Minio-Instanz zugreifen. Teste den Zugriff mit dem folgenden Befehl:
mc admin info localEs sollten nun Zustandsinformationen zum lokalen Minio-Server angezeigt werden.
Die Konnektivität kann mithilfe des ping-Befehls überprüft werden:
mc ping localMit [Ctrl]-[C] stoppst du die ping-Endlosschleife.
Client-Befehle kennenlernen
Der Minio-Client mc bietet zahlreiche Befehle, die man von Unix/Linux her kennt:
- ls: Dateien auflisten
- mv: Dateien umbenennen (verschieben)
- rm: Dateien entfernen (löschen)
- cat: Dateien aneinanderhängen/ausgeben
- cp: Dateien kopieren
- head: Anfang einer Datei ausgeben
- find: Dateien suchen
- diff: Dateien vergleichen
- du: Dateigrösse ermitteln
- stat: 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/helloMö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.jpegWeiter 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 erstellen
- rb: Bucket entfernen
- tag: Tags verwalten
- pipe: Standardausgabe in Objekt umleiten
- mirror: Daten mit anderem S3-Server synchronisieren
- retention: Speicherdauer von Objekten festlegen
- share: Objekte per URL teilen
- version: Versionierung von Buckets verwalten
Bucket via mc erstellen
Erstelle 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.) Kopiere dann wieder drei unterschiedliche Dateien mit dem mc cp-Befehl in den neuen Bucket.
Kontrolliere anschliessend im Browser, ob der Bucket erstellt worden ist und alle Dateien enthält.
Führe nun den Befehl mc ls local/backup aus und kopiere dessen Ausgabe in deine persönliche Dokumentation.
Buckets taggen
Verwende 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 erhältst du Hilfestellungen dazu.
Liste nun die Tags mit mc tag list im JSON-Format auf, und speichere die Ausgaben in deiner 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. Installiere ihn andernfalls mit dem folgenden Befehl:
sudo apt install -y s3cmdErstelle die Datei ~/.s3cfg und speichere darin die folgende Konfiguration ab:
host_base = localhost:9000
host_bucket = localhost:9000
use_https = False
access_key = minio
secret_key = topsecretListe nun die Dateien im hello-MinIO-Bucket auf:
s3cmd ls s3://helloMit s3cmd musst du anstelle des Alias local/ bloss das Protokoll s3:// als Präfix angeben.
Erstelle mit s3cmd mb nun einen neuen Bucket namens backup-copy:
s3cmd mb s3://backup-copyKopiere die drei Dateien aus dem backup-Bucket in den backup-copy-Bucket. Verwende dazu den s3cmd cp-Befehl.
Dokumentiere die Befehle in deiner persönlichen Dokumentation.
Kontrolliere 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 s3fsErstelle eine Konfigurationsdatei ~/.passwd-s3fs mit dem folgenden Inhalt:
minio:topsecretÄndere die Berechtigungen für diese Datei folgendermassen:
chmod 600 ~/.passwd-s3fsDadurch stellst du sicher, dass nur dein Benutzer diese Datei lesen und schreiben kann (s3fs verweigert sonst den Dienst).
Erstelle 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-copyMithilfe 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:9000Die Unterverzeichnisse von ~/minio-mount/ können nun weitgehend wie lokale Ordner verwendet werden.
Kopieren 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üfe nun im MinIO-GUI im Browser, ob du die Datei in jedem Bucket sehen kannst.
Führe nun den folgenden Befehl aus:
mount | grep minioLege die Ausgabe in deiner 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 kannst du nun überprüfen, dass keine Dateien mehr “da” sind, sondern nur noch die Verzeichnisse:
find ~/minio-mountAusgabe:
minio-mount/
minio-mount/backup-copy
minio-mount/hello
minio-mount/backupDie Dateien existieren aber weiterhin in MinIO, was du gerne über den Browser, per mc ls oder per s3cmd ls überprüfen kannst.
Übung 5: Einsatzgebiete
Du hast mit MinIO und den Hilfsprogrammen mc, s3cmd und s3fs nun einige Werkzeuge zum Umgang mit dem S3-Storage kennengelernt.
Überlege dir je einen Anwendungsfall für den privaten und den professionellen Bereich (z.B. für Ihren Lehrbetrieb), und beschreibe diese beiden in deiner persönlichen Dokumentation.
Gehe dabei davon aus, dass nicht bloss ein lokaler Storage, sondern derjenige von einem Public-Cloud-Anbieter verwendet wird, und dass du die Region dafür frei wählen kannst.