Montage von einigen zehntausend FS

Montage von einigen zehntausend FS

Ich muss einer großen Anzahl von Benutzern eines Webdienstes die Möglichkeit bieten, Dateien zu erstellen, zu lesen, zu schreiben und zu löschen und Kontingente festzulegen. Diese Benutzer existieren nicht als Linux-Benutzer, daher kann ich keine Kontingente anwenden. Die Erstellung echter Benutzer nur zum Erfüllen von Kontingenten scheint keine gute Idee zu sein. Daher habe ich beschlossen, eine Datei pro Benutzer zu erstellen und sie als Dateisystem zu mounten.

  1. Welche Konsequenzen hat die Montage von mehreren zehntausend FS?
  2. Gibt es eine Begrenzung für die Gesamtzahl gemounteter FS?

Antwort1

Zunächst einmal scheint das Mounten so vieler Dateisysteme keine so gute Idee zu sein. Es muss doch für Ihr Problem, egal, welche Lösung es gibt, eine bessere Lösung geben?

Um Ihre zweite Frage zu beantworten: Eine Antwort auf einevorherige Serverfehlerfragescheint darauf hinzudeuten, dass die Grenze bei etwa 1 Million Einhängepunkten (2^20) pro Dateisystemtyp für aktuelle Kernel liegt und Sie höchstens 256 verschiedene Dateisystemtypen einhängen können.

Bei älteren Kerneln (vor 2.6) liegt die Grenze bei 256 Einhängepunkten pro Dateisystem.


BearbeitenAls Reaktion auf die Kommentare schlage ich folgende alternative Lösung vor:

Verwenden Sie XFS, das Ihnen die Nutzung vonProjektkontingent, eine Form von Verzeichniskontingent.

Erstellen Sie ein separates XFS-Dateisystem, das alle Webservice-Benutzerdaten enthält. Hängen Sie es beispielsweise an /mnt/myWebService. Erstellen Sie dann für jeden Webservice-Benutzer ein Projektverzeichnis (z. /mnt/myWebService/username1B. usw.) und legen Sie das Kontingent entsprechend fest.

Anweisungen zum Einrichten von Projektverzeichnissen und Kontingenten finden Sie beispielsweise unterdieser Blogeintragoder derRHEL XFS-Kontingentverwaltungsseite

Antwort2

Beachten Sie, dass Sie keine Benutzer erstellen müssen (also diese zu /etc/passwd oder einer beliebigen Benutzerdatenbank hinzufügen). Sie können den Besitz einer Datei auch ohne Benutzerkennung auf eine beliebige UID setzen. Stellen Sie nur sicher, dass sich diese UIDs nicht mit lokalen (oder Remote-)Benutzern überschneiden, die möglicherweise Prozesse auf diesem Server ausführen.

Um den Besitzer einer Datei ändern zu können, benötigen Sie jedoch Superuser-Berechtigungen, was für Ihre Webanwendung problematisch sein kann.

Beachten Sie, dass Sie bei Verwendung von ZFS für jeden Snapshot einen Einhängepunkt erhalten. Es ist nicht ungewöhnlich, dass Tausende davon vorhanden sind, was aber kein allzu großes Problem darstellt.

Antwort3

Es ist nicht nötig, hierfür zig Dateisysteme zu erstellen.

Der einfachste Weg, dies zu tun, besteht darin, für jeden Benutzer ein Verzeichnis zu erstellen (was Sie bereits tun müssten) und dann jedes Mal zu prüfen, wie viel Speicherplatz die Dateien im Verzeichnis belegen, wenn ein Benutzer versucht, etwas hochzuladen. Wenn der Upload dazu führen würde, dass sie ihr Limit überschreiten, lehnen Sie den Upload ab. So macht es jede andere Webanwendung im bekannten Universum.

PS: Sie haben die Einzelheiten Ihres Vorgehens über mehrere Kommentare verstreut. Sie sollten sie stattdessen der Frage hinzufügen, damit die Leute sie finden können (und vielleicht Ihre Downvotes rückgängig machen können).

verwandte Informationen