Wiki & Dokumentation


S3 Storage unter Linux mit S3FS als Filesystem einbinden

Amazon bietet mit mit seinem Webservices (AWS) S3 Speicher zur kostengünstigen Speicherung großer Datenmengen an. Gerade bei Daten, die unveränderlich geschrieben werden sollen, wie z.B. in DMS- und Archivsystemen wie docuvita, bietet sich ein solches Speicherverfahren an, da die Daten nur einmalig geschrieben, nie verändert und selten gelesen werden. Gleichzeitig ist eine zuverlässige und sichere Speicherung absolut erforderlich.  

Dieser Artikel beschreibt, wie unter Linux (Ubuntu) ein S3-Bucket gemounted werden kann. Hierfür wird ein AWS Account oder der Zugang zu einem anderen S3 Speicherdienst benötigt. 

Vorgehen

S3FS installieren 

Unter Ubuntu 18.04 wird s3fs mit folgendem Kommando installiert:

$ sudo apt-get install s3fs


Manuelle Installation

Abhängig von der Distribution sollte ggf. die manuelle Installation gewählt werden. Versionen < V1.84 haben bei Tests immer wieder Verbindungsabbrüche bei hoher Last gezeigt.

Die manuelle Installation wird im S3FS-Wiki beschrieben. Siehe auch https://github.com/s3fs-fuse/s3fs-fuse/wiki/Installation-Notes

Zugangsdaten konfigurieren

Die Zugangsdaten liegen um Home-Verzeichnis in der versteckten Datei .passwd-s3fs. Folgendes Kommando erstellt diese Datei mit Ihren Zugangsdaten (ersetzen Sie S3_ACCESS_KEY und S3_SECRET_KEY mit ihren Zugangsdaten):

$ echo S3_ACCESS_KEY:S3_SECRET_KEY >~/.passwd-s3fs

Die Zugangsdaten lassen sich auch global im Verzeichnis /etc hinterlegen, alternativ kann das Passwortfile über eine Option beim Aufruf angegeben werden.

echo S3_ACCESS_KEY:S3_SECRET_KEY >/etc/passwd-s3fs

Zugriffsrechte einstellen

$ chmod 600 ~/.passwd-s3fs

$ chmod 600 /etc/passwd-s3fs

Bucket mounten

$ mkdir ~/s3-drive

$ s3fs BUCKET_NAME ~/s3-drive

Test

$ echo "Two beer or not two beer (Shakesbeer)" >~/s3-drive/beer.txt

In Amazon S3 sieht das dann so aus:

Öffnen der Datei in S3:

Verwendung andere Speicherdienste als Amazon S3

Falls ein anderer S3 Speicher verwendet werden soll (z.B. bietet gridscale auch günstigen S3-Speicher an), kann S3FS auch mit diesen zusammenarbeiten.

Hierfür kann die Option url verwendet werden (default="https://s3.amazonaws.com")

S3FS und Google

Siehe auch https://github.com/s3fs-fuse/s3fs-fuse/wiki/Google-Cloud-Storage

Für google müssen folgende Optionen verwendet werden:

s3fs ${YOUR_BUCKET_NAME} ${YOUR_MOUNT_POINT} \
    -o nomultipart \
    -o passwd_file=${YOUR_PASSWORD_FILE} \
    -o sigv2 \
    -o url=https://storage.googleapis.com

Cache

Mittels der Option use_cache kann S3FS Dateien lokal zwischenspeichern, um so die Zugriffe auf das S3 Bucket zu reduzieren.

Beispiel:

root@ubuntu:~# s3fs mybucket /mnt/s3-bucket/ -ouse_cache=/tmp

use_cache

Die Option use_cache schreibt in das angegebene Verzeichnis, bis der Platz erschöpft ist. Es empfiehlt sich daher mit Quotas zu arbeiten oder das Cache-Verzeichnis regelmäßig zu leeren. 

Bucket bei Systemstart mounten

Das folgende Beispiel zeigt, wie die Mounts bei Systemstart durch Eintrag in die Datei /etc/fstab automatisch durchgeführt werden können:

$ mkdir /mnt/s3bucket
$ chmod 777 /tmp /path/to/mountpoint
$ nano /etc/fstab

s3fs#<mybucket> /path/to/mountpoint fuse allow_other,use_cache=/tmp,uid=userid,gid=groupid 0 0

$ mount -a

Die Zugangsdaten müssen dann in der Datei /etc/passwd-s3fs gespeichert werden (Beispiel):

$ echo AKIAJUA42LUGRREWSSQ:X+854Rtv7865656rrffZTRy9LZinun1TMgd >/etc/passwd-s3fs
$ chmod 600 /etc/passwd-s3fs


Die Folgenden Punkte sollten beim Einsatz von S3 Buckets als Filesystem beachtet werden:

  • Die maximale Objektgröße beträgt 5GB
  • S3 wird bei Amazon nach IO-Zugriffen abgerechnet. Das Speichern einzelner Objekte ist günstig, aber bei vielen Zugriffen können auch hier erhebliche Kosten entstehen.
  • Da alle Daten per HTTPS übertragen werden, kann es zu spürbaren Verzögerungen beim ersten Zugriff kommen
  • Speichern Sie keine sich häufig verändernden Daten in einem S3 Bucket.

Verwandte Artikel




Copyright 2013-2020 docuvita solutions GmbH