In Foren fallen mir immer wieder Fragen von Linux-Anwendern zur Kapazität Ihrer Festplatten auf. Man wundert sich oft, warum nach dem Formatieren einer etwa 500 GByte großen Festplatte deutlich weniger freier Plattenplatz angezeigt wird, als eigentlich erwartet. Dies liegt zum Einen an der unterschiedlichen Rechnungsweise der Festplattenhersteller, zum Anderen am Dateisystem Ext2, Ext3 und Ext4 das üblicherweise einen Teil der Festplatte für das System reserviert. Ich versuche das Thema kurz zusammenzufassen.
Das Einheiten-Chaos
Der primäre Unterschied liegt in der unterschiedlichen rechenweise von Festplattenherstellern und Informatikern. In der „normalen“ Welt sind wir die 10 als Vorsatz für Maßeinheiten gewohnt. Bei den Gewichtseinheiten wird immer mit 10 hoch irgendwas gerecht, also beispielsweise…
- 1 Kilogramm sind 10^3 Gramm
- 1 Tonne sind 10^3 Kilogramm oder 10^6 Gramm
- usw…
Informatiker rechnen nun meist Binär. Daher verwenden sie die 2 als Präfix für Potenzen.
- 1 Byte entspricht 8 Bit
- 1 Kilobyte sind 2^10 Byte, also 1024 Byte
- 1 Megabyte sind 2^20 Byte, also 1.048.576 Byte
- usw…
Bei auf der 2 basierenden Einheiten sollte man daher eigentlich von Kibibyte, Mebibyte und Co. reden, doch im allgemeinen Sprachgebrauch macht das praktisch niemand. Die Folge dieser unterschiedlichen Rechenweise: Eine vom Hersteller mit 1000 GByte Speicherkapazität angegebene Festplatte wird vom Betriebssystem mit nur rund 932 GByte ausgewiesen.
Dem Marketing- und Kaufleuten der Festplattenherstellern kommt die größer aussehende Auszeichnung natürlich besser, als die „kleinere“ Rechenweise der Informatiker. Viel mehr will ich gar nicht auf diesen Unterschied eingehen. In der Wikipedia und selbst auf Spiegel Online finden sich wirklich gute Artikel, die das Thema auch dem Laien und nicht-Mathematiker erklären…
Ext2, Ext3 und Ext4 reservieren Speicher
Das eigentliche Thema ist die Tatsache, dass bei der Formatierung einer Festplatte mit Ext2 oder Ext3 (Ext4 scheint auch noch zu machen, allerdings scheitert tune2fs bei Ext4) als Dateisystem ein Teil der Festplatte für das System reserviert wird. Zum Warum und Weshalb komme ich gleich, erst einmal kurz ein paar Zahlen… Ich demonstriere das an einer alten Festplatte mit vom Hersteller angegebenen 4,32 GByte. Schaut man sich die Ausgabe von df -h
an, so sieht man dass von den real freien 4GB Speicherplatz nur 3,7 GByte verfügbar sind
$ df -h Dateisystem Größe Benut Verf Ben% Eingehängt auf [...] /dev/sdh1 4,0G 137M 3,7G 4% /media/disk-1
Der Grund dafür liegt darin, dass bei Ext{2,3,4} als Dateisystem von Haus aus 5% Speicherplatzes einer Partition für das System reserviert werden. Dies soll Fragmentierung verhindern und garantieren, dass wichtige Dienste IMMER Schreiben können, selbst wenn ein User des Systems die Platte zugemüllt hat. Die man-Page von tune2fs beschreibt die Funktion so…
$ man tune2fs [...] -m reserved-blocks-percentage Set the percentage of the filesystem which may only be allocated by privileged processes. Reserving some number of filesystem blocks for use by privileged processes is done to avoid filesystem fragmentation, and to allow system daemons, such as syslogd(8), to continue to function correctly after non-privileged processes are prevented from writing to the filesystem. Normally, the default percentage of reserved blocks is 5%.
Bei modernen Platten ist dieser reservierte Speicherbereich mit 5% natürlich recht groß, bei einer Platte mit 1000 GB werden zum Beispiel 50GB reserviert. Gerade wenn man eine Festplatte nur als Datenspeicher benutzt, kann man diesen Wert ruhig runtersetzen. Über den Befehl…
$ sudo tune2fs -m [Prozentsatz] /dev/sd[xy]
kann man dies über ein Terminal machen. Die Partition kann währenddessen eingehängt (aka gemountet) bleiben. Den Prozentsatz kann Ihr dabei frei wählen. Die Partition muss man natürlich korrekt angegeben, Ihr findet die Partition etwa über fdisk heraus…
$ sudo fdisk -l [...] Platte /dev/sdh: 4327 MByte, 4327464960 Byte 255 Köpfe, 63 Sektoren/Spuren, 526 Zylinder Einheiten = Zylinder von 16065 × 512 = 8225280 Bytes Disk identifier: 0x16b6ac7b Gerät boot. Anfang Ende Blöcke Id System /dev/sdh1 1 526 4225094+ 83 Linux
Habt Ihr eine Partition nur mit Daten, so könnt Ihr den reservierten Speicherplatz komplett deaktivieren. Nach einem…
$ sudo tune2fs -m 0 /dev/sdh1 Setze den Prozentsatz reservierter Böcke auf 0% (0 Blöcke)
…steht auf der vorhin gezeigte Festplatte nun (fast) der komplette Speicherplatz auch zur Verfügung.
$ df -h [...] /dev/sdh1 4,0G 137M 3,9G 4% /media/disk-1
Die bereits nach der Formatierung belegten MB dienen dem Journal des Ext4-Dateisystem. „Ganz leer“ bekommt Ihr die Platte mit Ext4 also nie.
Besten Dank für diesen lehrreichen Artikel! Bei meinem 4.5 TB-Daten-RAID werde ich dadurch immerhin 225 GB (!) zurückgewinnen. Gehe ich recht in der Annahme, dass das Dateisystem nicht ausgehängt werden muss, wenn man den tune2fs-Befehl verwenden möchte?
> Gehe ich recht in der Annahme, dass das Dateisystem nicht ausgehängt werden muss, wenn man den tune2fs-Befehl verwenden möchte?
Ist anscheinend der Fall, zumindest beschwert sich tune2fs bei mir nicht, auch wenn die Partition eingehängt ist. Neben der erfreulichen Tatsache das keine neu-Formatierung notwendig ist hätte Chris das gerne erwähnen können 😉
Auch wenn ich das Thema schon gut kannte ist der Artikel wie immer in gewohnt guter Qualität, braver Chris!
Hallo Severin, die Antwort hat dir Mike ja schon gegeben. Die Partition kann währenddessen eingehängt bleiben, ich hab das im Artikel noch eingebaut. Danke für das Lob Mike 🙂
Danke für die rasche Antwort. Werde das wohl gleich mal ausprobieren. 🙂
Schöner verlinkenswerter Arikel. Eines ist allerdings falsch: Du schreibst das ext4 nicht betroffen ist. Allerdings reserviert auch ext4 Böcke für UID=0 aka „root“
Grüße
Thomas
primus pilus, du hast Recht, ich hatte das im Ursprünglichen Text so stehen, doch dann hatte vorhin nochmal kurz ReiserFS ausgetestet und dort dann den Text falsch formuliert. Ich bessere das nachher noch aus… Eine leere mit Ext4 formatierte Partition sieht so aus:
Auch hier sind die besagten 5% reserviert. Allerdings gibt es unter Jaunty noch keine Möglichkeit das zu beeinflussen. tune2fs scheitert…
Geht das bei Karmic besser? Muss ich heute abend mal in einer VM austesten.
Naja, was die Mega/Mibi-Byte betrifft:
Microsoft kennzeichnet alle Daten mit Binärangaben (den „kleinen“), bezeichnet sie aber mit den Dezimalen (100GB sind also eigentlich 100 GiB). Unter Linux lässt es sich meistens im jeweiligen Programm einstellen, aber in man kann es meistens schon an der Beschriftung sehen. Bei Binärangaben findet man meist auch KiB, MiB und GiB statt KB, MB und GB.
@Christoph: Du hast dich anscheinend im Befehl vertippt. Da fehlt ein Leerzeichen. Bei mir klappt es prima.
Wenn du den Artikel verbesserst, kannst du das mit Durchstreichen zeigen? Sonst suche ich mir im Reader den Wolf.
Danke für den Artikel! 🙂
bas89
War ich tatsächlich vorhin so blind? Oder habe ich das Leerzeichen nur beim Schreiben des Kommentars vergessen. Grrrr, ich teste das nacher nochmal in einer VM.
Ja, hab tatsächlich vorhin das fehlende Leerzeichen übersehen…
Falls jemand abstimmen möchte, es gibt einen Vereinheitlichungsvorschlag dazu:
http://brainstorm.ubuntu.com/idea/21184
//Edit von Christoph: Politische Werbung entfernt.
Interessant (und evtl. verwirrend) ist auch, dass sich der reservierte Bereich in der Ausgabe von „df“ nur in den Spalten „Verfügbar“ und „Ben%“. Die Werte „Größe“ und „Benutzt“ bleiben von der Reservierung unberührt. Im Gegensatz zur „Größe“ ist dies bei „Benutzt“ nicht unbedingt einleuchtend.
Daher findet man im Netz oft – bezüglich eben dieser ersten beiden Werte – die Meinung, ein unerklärlicher Größenschwund/Verbrauch würde von dieser Reservierung kommen. Tut er nicht. Wie gesagt, der reservierte Bereich ist nur in den letzten beiden Werten enthalten.
Danke, dies war sehr aufschlussreich. Ich war schon etwas baff, dass bei der 2 TB-Platte 100 GB bereits weg waren!
Empfiehlt sich ext4 für ein Datenfestplatte für Musik, Filme, etc. oder soll man bei ext3 bleiben?
Hallo Daniel, das ist eigentlich ziemlich egal. Ich würde das Dateisystem so wählen, dass du von jedem deiner Rechner (oder den Rechnern deiner Bekannten) auf die Daten zugreifen kannst. Um von Windows aus auf Ext3 zuzugreifen gibt es ein paar Tools. Für Ext4 gibts afaik noch gar nichts. Solltest du öfters die Platte an Win-Rechner anschließen, dann würde ich NTFS nehmen.
Von mir auch vielen Dank für den Artikel! Gefunden habe ich ihn übrigens über tuxsucht 😉
Kann man die Prozente auch mit Nachkommastellen angeben? Zwischen 0 und einem Prozent sind halt gleich mehrere GB Unterschied…
Hallo Olli, laut
gibt es keine Option über die du die Prozentangabe beinflussen könntest.
Super Ding,
hat mir auch grade nochmal geholfen. Danke.
Moin Christoph,
habe die Tage mein DNS-320L in Betrieb genommen die HDDs wurden mit ext4 formatiert. Hatte bis dato keine Berührungspunkte mit extX und wusste nicht das Speicher reserviert wird. Innerhalb der Kommentare steht ja das dieser Speicher auf null gesetzt werden kann, allerdings bisher nur bei ext3.
Ist das immer noch der aktuelle Stand. Greife mit Mac OS auf das NAS zu, ergo keine Probleme beim kopeiren der Daten.
Gruß
Oliver
Hallo
gibt es diesen tune2fs Befehl in ähnlicher Form für das HFS+ Dateisystem von Mac OS X?
[…] http://linuxundich.de/gnu-linux/festplatte-kleiner-als-angegeben-ext4/ […]