S3 Fuse unter Ubuntu installieren

S3 Buckets auf einem Ubuntu-Server installieren

Der Object Storage von gridscale baut auf der S3 API von Amazon auf und bietet die Möglichkeit mit einer Vielzahl von Clients zu arbeiten. Über die API lassen sich Dateien nicht nur hoch- und runterladen, es lassen sich auch vorsignierte Links mit einer festgelegten Haltbarkeit zum Teilen von Content erstellen.

Unter Ubuntu, gerade ohne GUI, kann der Umgang mit S3 Buckets aber schnell zu langen komplexen Befehlen führen, bei denen der Überblick verloren gehen kann. Daher bietet es sich an den S3 Bucket als Laufwerk zu mounten.
Dadurch wird es möglich die gewohnten Befehle wie mv (move), cp (copy) oder rm (remove) zu benutzen ohne eine neue Syntax erlernen zu müssen.

Um die S3 Buckets von gridscale auf einem Ubuntu Server zu mounten, kann aus einer Vielzahl an Tools gewählt werden. Eines soll in diesem Artikel vorgestellt werden: S3 Fuse. Mit S3 Fuse können schnell beliebig viele Buckets gemountet werden. Wie das funktioniert, wird hier gezeigt.

Server vorbereiten

Wie vor jeder Installation sollte mit folgendem Befehl der Server auf den neuesten Stand gebracht werden:

apt -y update && apt -y upgrade && apt -y dist-upgrade

Nach dem der Server auf dem aktuellsten Stand ist, kann mit der eigentlichen Installation begonnen werden.

S3 Fuse installieren

Seit Version 16.04 LTS ist S3 Fuse im Standard-Repository von Ubuntu enthalten. Das heißt S3 Fuse kann direkt mit APT installiert werden.

apt -y install s3fs

S3 Fuse ist jetzt installiert, doch bevor es genutzt werden kann, fehlen nötige Einstellungen.
S3 Fuse konfigurieren
Als erstes muss die Pass-Datei erstellt werden. Diese enthält die Zugangsdaten für die Buckets. Die Syntax ist dabei einfach aufgebaut. Pro Zeile ein Bucket, der wiederum wie folgt aufgebaut wird:

BucketName:Key:Secret

In einem Test Bucket sähe das Ergebnis also so aus:

TestBucket:5EYABMI0YI654321T6:A3FxCWPRBgpF9VHabcdeYOvLMRLlqmc7wafj7fL

Die Datei muss unter ~/.s3.pass gespeichert werden. Anschließend müssen die Zugriffsrechte für die Datei noch angepasst werden:

chmod 600 ~/.s3.pass

Im nächsten Schritt muss noch der Ordner erstellt werden in den der Bucket gemountet werden soll. Der Name des Ordners ist frei wählbar. In diesem Beispiel heißt der Ordner einfach s3:

mkdir -p /mnt/s3

Jetzt ist der Server vorkonfiguriert und der Bucket kann gemountet werden.

Bist du bereit zu starten?

Oder hast du noch Fragen? Lasse dir jetzt dein Konto erstellen oder dich in einem persönlichen Gespräch beraten.

S3 Bucket mounten

Um den Bucket mit dem Namen TestBucket jetzt in den Ordner /mnt/s3 zu mounten, dient folgender Befehl:

s3fs TestBucket /mnt/s3 -o sigv2 -o use_path_request_style -o passwd_file=/root/.s3.pass -o url=https://gos3.io

Falls der Pfad des Zielordners und der passwd_file an abweichen, sind sie anzupassen.

Jetzt den Ordner Inhalt des Buckets mit folgendem Befehl anzeigen lassen:

ls /mnt/s3/

Wenn alles funktioniert hat, ist jetzt eine Auflistung des Inhalts des Buckets zu sehen.

S3 Bucket permanent mounten

Wird jetzt der Server neu gestartet, ist der Bucket nicht mehr gemountet. Um das Mounten permanent zu machen, gibt es zwei Möglichkeiten:

Bucket über FSTAB mounten

FSTAB kann mit einem beliebigen Programm geöffnet werden, um folgende Datei ans Ende anzufügen. Hierbei muss auf die exakte Schreibweise des Bucketnames, des Zielordners und der passwd_file geachtet werden.

ACHTUNG! Änderungen an der FSTAB können dazu führen, dass der Server nicht mehr hochfährt. Wenn Unsicherheit besteht, sollte auf jeden Fall der Bucket über die rc.local gemountet werden (siehe nächster Punkt).

TestBucket /mnt/s3 fuse.s3fs rw,nosuid,nodev,allow_other,sigv2,use_path_request_style,passwd_file=/root/.s3.pass,url=https://gos3.io 0 0

Anschließend ist der Bucket auch nach einem reboot gemountet.

Noch ein Hinweis: Wenn mehrere Buckets gemountet werden sollen, ist dies nicht via fstab möglich. Es ist aber möglich, s3fs über die rc.local auszuführen.

Bucket über rc.local mounten

Ist der Ubuntu Server vollständig und fehlerfrei hochgefahren wird automatisch das Script “/etc/rc.local” ausgeführt. Das erlaubt es, eigene Befehle auch automatisch beim booten auszuführen, so wie in diesem Fall das Mounten des Buckets.
Die Datei kann mit einem beliebigen Texteditor geöffnet werden. Der Einfachheit halber wird hier nano verwendet:

nano /etc/rc.local

Ans Ende der Datei, jedoch vor das exit 0, muss folgende Zeile eingefügt werden:

s3fs TestBucket /mnt/s3 -o sigv2 -o use_path_request_style -o passwd_file=/root/.s3.pass -o url=https://gos3.io

Der Name des Buckets sowie der Pfad zu der passwd_file und zum Zielordner ist anzupassen.

Anschließend wird der Befehl automatisch nach jedem Neustart ausgeführt.

Fazit

In diesen wenigen Schritten kann Bucket direkt in deinen Ubuntu Server eingebunden werden. Es ist zu beachten, dass S3 kein Posix-Dateisystem bietet. Das heißt, Aktionen wie bearbeiten, umbenennen oder ausführen führen dazu, dass die Datei erst heruntergeladen wird, die entsprechende Funktion ausgeführt wird und anschließend die Datei wieder hochgeladen wird. Dateizugriffe sind daher langsamer als gewohnt.