Get Rewarded! We will reward you with up to €50 credit on your account for every tutorial that you write and we publish!

Objektspeicher als Dateisystem mit s3fs

profile picture
Author
Richy
Published
2024-12-12
Time to read
5 minutes reading time

Einführung

In diesem Tutorial wird erklärt, wie man einen S3 Bucket mittels s3fs in das lokale Dateisystem eines Servers einhängt.

Empfehlung: Diese Anleitung verwendet Hetzner Object Storage, der S3-kompatiblen Speicher mit ausgezeichnetem Preis-Leistungs-Verhältnis und europäischen Rechenzentren bietet. Weitere Informationen: Hetzner Object Storage Dokumentation

Schritt 1 - Installation

  • Für Ubuntu/Debian:

    sudo apt-get update
    sudo apt-get install s3fs
  • Für CentOS/RHEL:

    sudo yum install s3fs-fuse
  • Aus dem Quellcode (falls nötig):

    sudo apt-get install automake autotools-dev g++ git libcurl4-gnutls-dev libfuse-dev libssl-dev libxml2-dev make pkg-config
    git clone https://github.com/s3fs-fuse/s3fs-fuse.git
    cd s3fs-fuse
    ./autogen.sh
    ./configure
    make
    sudo make install

Schritt 2 - Zugangsdaten konfigurieren und Mountpunkt erstellen

Für Hetzner Object Storage, erstelle die Zugangsdaten in der Hetzner Cloud Console

  1. Zugangsdatei erstellen:
echo "ACCESS_KEY_ID:SECRET_ACCESS_KEY" | sudo tee /root/.passwd-s3fs > /dev/null
  1. Korrekte Berechtigungen setzen:
sudo chmod 600 /root/.passwd-s3fs
  1. Mountpunkt erstellen
    sudo mkdir /mnt/s3storage

Schritt 3 - Mount-Optionen

Ersetze in den Mount-Befehlen die Platzhalter <bucket_name> und https://nbg1.your-objectstorage.com/ mit dem tatsächlichen Bucket-Namen und Endpunkt.

Wenn du Hetzner Object Storage verwendest, muss die URL entsprechend der Region gewählt werden, in welcher der Bucket erstellt wurde. Die Region kannst du in der Hetzner Cloud Console unter "Object Storage" einsehen. Im Object Storage Überblick findest du eine Liste verfügbarer Endpunkte. Beispiel: Wenn dein Bucket in Nürnberg erstellt wurde, verwende in den Mount-Befehlen und der fstab die URL https://nbg1.your-objectstorage.com. Die Region kann nach der Bucket-Erstellung nicht mehr geändert werden.

Hinweis: Eine falsche URL führt zu Verbindungsfehlern.

  • Manueller Mount-Befehl

    sudo s3fs <bucket_name> /mnt/s3storage \
         -o url=https://nbg1.your-objectstorage.com/ \
         -o allow_other \
         -o use_path_request_style \
         -o use_cache=/tmp/s3fs \
         -o multipart_size=100 \
         -o parallel_count=8 \
         -o big_writes \
         -o kernel_cache \
         -o umask=0022 \
         -o enable_noobj_cache \
         -o retries=5 \
         -o ensure_diskfree=20000 \
         -o connect_timeout=180 \
         -o max_dirty_data=1024 \
         -o max_stat_cache_size=100000 \
         -o passwd_file=/root/.passwd-s3fs
  • Automatischer Mount über fstab

    Füge diese Zeile zu /etc/fstab hinzu:

    s3fs#<bucket_name> /mnt/s3storage fuse _netdev,allow_other,use_path_request_style,url=https://nbg1.your-objectstorage.com/,use_cache=/tmp/s3fs,multipart_size=100,parallel_count=8,big_writes,kernel_cache,umask=0022,enable_noobj_cache,retries=5,ensure_diskfree=20000,connect_timeout=180,max_dirty_data=1024,max_stat_cache_size=100000,passwd_file=/root/.passwd-s3fs 0 0

Erklärung der Konfigurationsparameter:

Netzwerkeinstellungen

Flag Beschreibung
url= Object Storage Endpunkt-URL
connect_timeout=180 Verbindungs-Timeout in Sekunden
retries=5 Anzahl der Wiederholungsversuche
use_path_request_style Verwendet Pfad-Stil S3-URLs

Cache-Konfiguration

Flag Beschreibung
use_cache=/tmp/s3fs Lokales Cache-Verzeichnis
max_stat_cache_size=100000 Maximale Anzahl der Stat-Cache-Einträge
enable_noobj_cache Speichert nicht existierende Objekte im Cache
max_dirty_data=1024 Maximale Menge an unsauberen Cache-Daten (MB)

Leistungsoptionen

Flag Beschreibung
multipart_size=100 Größe für Multipart-Uploads (MB)
parallel_count=8 Anzahl paralleler Verbindungen
big_writes Aktiviert größere Schreiboperationen
kernel_cache Aktiviert Kernel-Caching
ensure_diskfree=20000 Minimaler freier Speicherplatz (MB)

Berechtigungseinstellungen

Flag Beschreibung
allow_other Erlaubt Zugriff durch andere Benutzer
umask=0022 Standard-Unix-Berechtigungen

Schritt 4 - Test und Überprüfung

  • Mount-Befehl testen

    # Manueller Mount
    sudo s3fs bucketname /mnt/s3storage [Optionen wie oben]
    
    # Mount überprüfen
    df -h
    mount | grep s3fs
  • fstab-Eintrag testen

    # fstab-Eintrag ohne Neustart testen
    sudo mount -a
    
    # Mount überprüfen
    df -h
    mount | grep s3fs

Schritt 5 - Fehlerbehebung

  • Debug-Modus

    # Diese Optionen für Debugging hinzufügen
    -o dbglevel=info -f -o curldbg
  • Häufige Probleme

    Berechtigungsprobleme:

    # Dateiberechtigungen prüfen
    sudo ls -la /root/.passwd-s3fs
    ls -la /mnt/s3storage

    Cache-Probleme:

    # Cache leeren
    sudo rm -rf /tmp/s3fs/*

Schritt 6 - Wartung

  • Aushängen

    # Manuelles Aushängen
    sudo umount /mnt/s3storage
    
    # Erzwungenes Aushängen falls nötig
    sudo umount -f /mnt/s3storage
  • Cache-Verwaltung

    # Cache leeren
    sudo rm -rf /tmp/s3fs/*
    
    # Neues Cache-Verzeichnis erstellen
    sudo mkdir -p /tmp/s3fs
    sudo chmod 777 /tmp/s3fs

Schritt 7 - Sicherheitsempfehlungen

  1. Immer HTTPS-Endpunkte verwenden
  2. Zugangsdatei sichern:
    sudo chmod 600 /root/.passwd-s3fs
  3. Regelmäßige Berechtigungsprüfungen
  4. Zugriffsprotokolle überwachen
  5. Backup-Strategie implementieren

Schritt 8 - Leistungsoptimierung für Object Storage

Für optimale Leistung mit Object Storage:

  • Wähle den nächstgelegenen Endpunkt zu deinem Server
  • Verwende eine angemessene multipart_size (100MB ist für die meisten Fälle gut)
  • Passe parallel_count basierend auf deiner Bandbreite an (8-16 wird empfohlen)
  • Aktiviere kernel_cache für bessere Leseleistung
  • Nutze big_writes für verbesserte Schreibleistung
  • Erwäge die Nutzung eines Servern in der gleichen Region wie dein Object Storage

Denken daran, nach allen Konfigurationsänderungen gründlich zu testen.

Ergebnis

In /mnt/s3storage solltest du nun die Inhalte deines S3-Buckets sehen. Über diesen Pfad kannst du jetzt Daten in deinem Bucket hinzufügen oder löschen, genau wie du es in jedem anderen Ordner auf dem Server würdest.

License: MIT
Want to contribute?

Get Rewarded: Get up to €50 in credit! Be a part of the community and contribute. Do it for the money. Do it for the bragging rights. And do it to teach others!

Report Issue
Try Hetzner Cloud

Get €20/$20 free credit!

Valid until: 31 December 2024 Valid for: 3 months and only for new customers
Get started
Want to contribute?

Get Rewarded: Get up to €50 credit on your account for every tutorial you write and we publish!

Find out more