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