Reservierter Speicherplatz für root auf einem Dateisystem - warum?

105

Ich verstehe, dass neu erstellte Dateisysteme standardmäßig mit 5% des für root zugewiesenen Speicherplatzes erstellt werden. Ich weiß auch, dass Sie den definierten Raum ändern können mit:

tune2fs -m 1 /dev/sdXY

Was mich jedoch interessiert, ist der eigentliche Zweck dieses reservierten Raums. Hat es einen praktischen Zweck, der unter bestimmten Umständen mehr als 5% Platz verdient?

Der Grund, warum ich über diese Frage gestolpert bin, ist, dass wir kürzlich einen 1-TB-Dateispeicher erstellt haben und nicht genau herausfinden konnten, warum ein df-h uns 5% unserer Kapazität entzogen hat.

Suitedupgeek
quelle
1
Okay, das ist eine massive Verschwendung von "nicht verfügbarem" Speicherplatz. Möglicherweise sollten die 5% auf Laufwerksgrößen unter X beschränkt sein (z. B. 5% des Festplattenspeichers auf maximal 100 MB).
Tshepang
3
Auf meinem 8 TB Dateisystem sind gerade 400 GB weg - das ist die wahre Platzverschwendung !! :)
Ilia Rostovtsev

Antworten:

101

Das Einsparen von Speicherplatz für wichtige Stammprozesse (und mögliche Rettungsaktionen) ist ein Grund.

Aber da ist noch eine andere. Ext3 ist ziemlich gut darin, eine Fragmentierung des Dateisystems zu vermeiden. Wenn Sie jedoch über 95% erreicht haben, fällt dieses Verhalten von der Klippe und die Leistung des Dateisystems wird plötzlich zu einem Chaos. Wenn Sie also 5% reserviert lassen, erhalten Sie einen Puffer dagegen.

Ext4 sollte dies besser können, wie der Linux-Dateisystem-Entwickler / Guru Theodore Ts'o erklärt :

Wenn Sie die Anzahl der reservierten Blöcke auf Null setzen, wirkt sich dies nur dann auf die Leistung aus, wenn Sie über einen längeren Zeitraum (mit vielen Dateien, die erstellt und gelöscht werden) ausgeführt werden, während das Dateisystem fast voll ist (z. B. über 95%). An diesem Punkt treten Fragmentierungsprobleme auf. Der Multiblock-Allokator von Ext4 ist wesentlich fragmentierungsresistenter, da es sehr viel schwieriger ist, zusammenhängende Blöcke zu finden. Selbst wenn Sie die anderen ext4-Funktionen nicht aktivieren, erzielen Sie bessere Ergebnisse, wenn Sie ein ext3-Dateisystem mit ext4 vor dem Dateisystem mounten wird komplett voll.

Wenn Sie das Dateisystem nur für die Langzeitarchivierung verwenden, bei der sich die Dateien nicht sehr oft ändern (z. B. ein riesiger MP3- oder Videospeicher), spielt dies offensichtlich keine Rolle.

mattdm
quelle
3
Wie unter superuser.com/a/1257550/38062 angegeben , sind diese Werte für "90%" und "95%" auf Messungen gegen Berkeley FFS zurückzuführen, die in den 1980er Jahren durchgeführt wurden. In den Jahrzehnten seitdem haben andere Menschen diese oft wiederholte empfangene Weisheit in Frage gestellt.
JdeBP
1
Für normale Benutzer mit diesem reservierten Speicherplatz gibt es keine Leistungsminderung. Sie erhalten einfach keinen Speicherplatz auf dem Gerät früher als erwartet. Die Wurzel wird jedoch genug Platz haben, um das Problem zu beheben, das beim Befüllen der Festplatte auftrat.
Crististm
44

Wenn Sie anderen Benutzern erlauben, sich über ssh bei Ihrem System anzumelden, z. B. wenn diese 5% -Blöcke reserviert sind, stellen Sie sicher, dass externe Benutzer den Datenträger nicht füllen können. Selbst wenn Sie anderen nicht erlauben, sich bei Ihrem System anzumelden, verhindern die reservierten Blöcke, dass Programme, die nicht als root ausgeführt werden, Ihre Festplatte füllen.

LawrenceC
quelle
Vielen Dank, ich hatte echt Probleme damit, die Antwort als richtig zu markieren. Die Antwort wurde als richtig eingestuft, da sie aufgrund des zusätzlichen Hintergrunds und der zusätzlichen Details, die mir das "Warum" näher gebracht haben, als richtig eingestuft wurde.
Suitedupgeek
22

Mit den reservierten Blöcken können Ihre Benutzer und Dienste, die als bestimmte Benutzer und nicht als Root ausgeführt werden, ein Dateisystem nicht füllen und möglicherweise andere Dinge beschädigen, die in das Dateisystem geschrieben werden müssen - obwohl Dienste, die als Root ausgeführt werden, es immer noch vollständig machen können natürlich voll.

Es gibt Ihnen auch etwas Platz zum Arbeiten, wenn Benutzer sich beschweren, dass der Datenträger voll ist oder die Dienste aufgrund eines vollen Dateisystems nicht mehr funktionieren. Beispielsweise können Sie einige Dateien vor dem Entfernen in zip / gz / 7zip-Archiven archivieren (wenn das Dateisystem jedoch vollständig voll ist, steht möglicherweise ein anderes Dateisystem zur Verfügung, in dem Sie stattdessen die Archivdatei erstellen können).

5% waren lange Zeit die Standardeinstellung. Damals waren Festplatten viel kleiner (Zehn Megabyte statt Hunderte von Gigabyte), so dass 5% nicht so viel waren. Zum Glück kann es leicht zu einem kleineren Prozentsatz heruntergestimmt wird , wie Sie sagen, oder auf eine bestimmte Anzahl von Blöcken festgelegt , wenn Sie verwenden tune2fs‚s -rstatt Option -m. In beiden Fällen können Sie einen Parameter von 0 geben die Reservierung ganz auszuschalten - ich würde dies nicht für /, /tmp, /varund so weiter, aber man könnte für ein Dateisystem möchten , die nur als Benutzerspeicher fungiert (sagen wir eine globale File- freigeben) oder eine, die nur Dateien mit fester Größe enthält (wie VMs mit fester Größe), die nur wachsen, wenn Sie eine neue erstellen.

David Spillett
quelle
22

Der Standardwert von 5% ist für Systempartitionen gedacht. Wenn beispielsweise der Festplattenspeicher voll ist, können die Systemprotokolle ( /var/log) und das Postfach des Stamms ( /var/mail/root) weiterhin wichtige Informationen erhalten. Für eine /homeoder eine allgemeine Datenspeicherpartition muss kein Platz für root gelassen werden. Für spezielle Bedürfnisse können Sie den Benutzer ändern, der den Notfallraum erhält ( tune2fs -u 1234).

Es gibt einen weiteren Grund, ein ext [234] -Dateisystem nicht voll werden zu lassen, nämlich Fragmentierung .

Gilles
quelle