Festplatte voll

Tobias Krähling Listen at semibyte.de
Son Mar 29 19:51:15 BST 2009


Hallo Rainer,

> 1. Direkt nach dem Umzug des Homeverzeichnisses wollte ich mit einer
> Textdatei ausprobieren, ob alles inkl. Bindung ordnungsgemäß
> funktioniert. Soweit ich mich erinnere war sie 50 Bytes groß. Ich
> konnte sie nicht abspeichern. Fehlermeldung: Festplatte voll. Ich bin
> mir nicht sicher, ob der vorherige Kopiervorgang von /home vollständig
> geklappt hat. Müsste ja ein Wahnsinnszufall sein, wenn es auf das Byte
> genau gepasst hätte.

muß auch nicht, wenn kein Block mehr frei ist (Blockgröße 1k-8k), gehts auch 
nicht. Oder die Inodes waren alle belegt. Siehe unten.
>
> 2. Die Angaben unter "Eigenschaften" der Datenplatte zeigen mir immer
> noch eine unerklärliche Differenz von 2,3 GB an. Als Inhalt werden
> 126.511 Objekte mit einer Gesamtgröße von 18,0 GB angegeben, weiter
> unten aber: benutzt = 20,3 GB. Die genannten Instrumente zeigen mir
> nichts Erhellendes. Ausnahme: xdiskusage weist an einer Stelle etwas
> unter der Bezeichnung "(inodes)" aus, das immerhin über 1,8 GB groß
> ist. Keine Ahnung, worum es sich dabei handelt. Vielleicht hat auch das
> Teil ja etwas mit der Differenz zu tun.

Die Inodes haben etwas mit der Verwaltung der Partition/Dateisystem zu tun. 
Beim Anlegen eines Dateisystems (ext2/3) wird ja eine Blockgröße angegeben, in 
die die Partition aufgeteilt wird. Standardmäßig wird diese anhand der 
Partitionsgröße auf einen allgemein günstigen Wert gestellt, der für viele 
Anwendungen geeignet ist. Zusätzlich wird die Inode-Tabelle angelegt, wo 
hinterlegt wird, bei welchem Block eine Datei anfängt. Diese Inode-Tabelle 
benötigt natürlich auch etwas Platz und ist bereits bei der 
Dateisystemanlegung reserviert (die INode-Nummer einer Datei kannst Du Dir 
z.B. über ls -i anzeigen lassen).

Stellen wir uns mal vor, das Dateisystem ist mit einer Blockgröße von 4096 
(4k) angelegt worden. Speicherst Du eine Datei ab, die nur 1024 Bytes groß 
ist, sind trotzdem die restlichen 3k aus dem Block nicht mehr verfügbar (der 
sogenannte Verschnitt). Da kommt auch der Unterschied her bei der Anzeige 
belegten Speicherplatzes und bei Summation der Dateigrößen (hier wird nämlich 
die "richtige" Größe angezeigt) her. Möchte man einen kleinen Verschnitt 
haben, ist es daher günstig, eine kleine Blockgröße zu verwenden, aber hier 
werden natürlich mehr INodes benötigt (und damit mehr Speicherplatz für die 
INodes) und - vielleicht schlimmer - der Zugriff wird langsamer, da häufiger 
gesprungen werden muß. Daher wählt man die Blockgröße eigentlich nach der 
typischen Nutzung des Dateisystems (für News mit vielen kleinen Dateien z.B. 
1k, normal 4k, für Dateisysteme, wo überwiegend große Dateien abgelegt werden 
8k oder mehr).

Ein anderer Fall ist der, wenn die INodes belegt sind. Dies kann z.B. dadurch 
passieren, daß Du viele kleine Dateien anlegst und damit Deine Inodes 
aufbrauchst. Ist keiner mehr frei, der ja den Startblock einer Datei 
verwaltet, kann auch keine Datei mehr gespeichert werden - auch wenn noch 
Gigabyte von Blocks frei wären.

Es gibt also zwei Möglichkeiten, warum ein Dateisystem (unter Linux) voll sein 
kann: keine Blocks mehr frei oder keine Inodes mehr vorhanden.

Zusätzlich kommt noch hinzu, daß normalerweise für root 5% reserviert werden, 
so daß root noch Dateien speichern kann, wenn der Benutzer nicht mehr die 
Möglichkeit hat (die Prozentzahl kann man bei der Dateisystemerzeugung 
angeben). Dies hat den Vorteil bzw. den Grund, das root die Möglichkeit hat, 
das System zu ändern, um es wieder zum laufen zu bekommen.

Bei Dateisystemen mit Journal (z.B. ext3) muß man noch einrechnen, daß das 
Journal selbst natürlich auch Speicherplatz benötigt und somit nicht mehr zur 
Verfügung steht.

Ich hoffe, die Ausführung konnte Deine beiden Fragen etwas klären.

Gruß
Tobias