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
- Zugangsdatei erstellen:
echo "ACCESS_KEY_ID:SECRET_ACCESS_KEY" | sudo tee /root/.passwd-s3fs > /dev/null
- Korrekte Berechtigungen setzen:
sudo chmod 600 /root/.passwd-s3fs
- 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
- Immer HTTPS-Endpunkte verwenden
- Zugangsdatei sichern:
sudo chmod 600 /root/.passwd-s3fs
- Regelmäßige Berechtigungsprüfungen
- Zugriffsprotokolle überwachen
- 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.