Gibt es eine Möglichkeit, dass ext-Dateisysteme in Linux weniger Platz für sich beanspruchen?

4350
confetti

Ich habe eine Reihe von externen und internen Festplatten, die ich auf einem Linux-System verwende. Ich habe nur Linux-Systeme, also wäre ein Linux-Dateisystem nur sinnvoll, oder? Derzeit verwende ich jedoch überall NTFS, da mir der Festplattenspeicher am besten zur Verfügung steht.

Ich möchte jedoch jetzt zu Linux-Dateisystemen wechseln, hauptsächlich aufgrund von Berechtigungen und Kompatibilität (z. B. kann ich meine LUKS-verschlüsselte NTFS-Partition nicht unter Linux skalieren lassen, sagt mir immer zu chkdsk unter Windows).

Bei der Formatierung dieser Festplatten habe ich jedoch eine Reihe verschiedener Dateisysteme und jedes Linux-Dateisystem ausprobiert, sogar ext2, das meines Wissens kein Journaling hat, hat viel Platz für sich beansprucht. Ich kann mich nicht an genaue Werte erinnern, aber es waren mehr als 100 GB, die mir NTFS mehr auf eine 2-TB-HDD brachte, was sehr viel ist.

Meine Frage ist also: Gibt es eine Möglichkeit, dass ext-Dateisysteme weniger Platz für sich beanspruchen? Oder gibt es ein anderes Dateisystem (ich habe ext2, ext3, ext4, NTFS und vfat ausprobiert - keines davon kam sogar in die Nähe des von NTFS angebotenen verfügbaren Speicherplatzes) mit perfekter Linux-Unterstützung und großem nutzbaren Speicherplatz?

Ich würde gerne hören, wie und warum Dateisysteme (besonders ext2, die kein Journaling haben) so viel mehr Speicherplatz als NTFS benötigen, und ich weiß nicht, wo ich sonst fragen soll. Ich würde meistens eine Möglichkeit vorziehen, ext4 ohne Journaling zu verwenden, und alles andere, das so viel Speicherplatz beansprucht, wenn dies möglich ist.

48
Haben Sie [diesen Thread] gesehen (https://superuser.com/questions/176126/why-ext-filesystemss-dont-fill-entire-device?rq=1)? JakeGould vor 6 Jahren 1
Ich habe, und es wurde erklärt, was den zusätzlichen Platz verbraucht, aber der Unterschied zwischen NTFS und ext ist VIEL größer als zwischen reiserfs und ext, und ich frage mich, ob es eine Möglichkeit gibt, sie kleiner zu machen. Auf einer 1-TB-Festplatte kann ich beispielsweise 989 GB mit NTFS verwenden. Ext4 würde mich um 909 GB geben. confetti vor 6 Jahren 4
Meinetwegen. Eine anständige Frage und die Antwort ist auch aufschlussreich. JakeGould vor 6 Jahren 0
Wie messen Sie eigentlich, welcher Platz zur Verfügung steht? Dies ist wichtig, da Sie abhängig von den von Ihnen betrachteten Werten möglicherweise den Effekt der 5% -Reservierung sehen oder nicht sehen, wie in der verknüpften Frage angegeben eMBee vor 6 Jahren 3
Ich habe die Eigenschaften "Freier Speicherplatz" im Dateimanager "df" und "gnome-system-monitor" überprüft. Letztere scheint jedoch eine andere Spalte namens "free" zu haben, die tatsächlich den freien Speicherplatz einschließlich der 5% anzeigt, von denen ich gerade erfahren habe. confetti vor 6 Jahren 0
Beachten Sie, dass Journaling auf Dateisystemen wie ext3 und ext4 eine gute Sache ist. Es ist ziemlich einfach, die Stromversorgung eines externen Laufwerks zu verlieren oder das Laufwerk aus Versehen zu trennen, wenn es sich um einen USB-Anschluss handelt. Ohne dieses Sicherheitsnetz wären die Dinge viel schlimmer. Es ist nicht nur ein Fall von mehr ist besser. Joe vor 6 Jahren 2
Das gilt auch für LUKS-verschlüsselte Geräte, oder? Ich gehe davon aus, dass das Journal recovery / fsck beim Einhängen der Partition im LUKS-Container ausgeführt wird, richtig? Die Antwort von @ harrymc gibt mir bereits genug Platz, um ext4 zu verwenden und das Journaling zu behalten. confetti vor 6 Jahren 0

3 Antworten auf die Frage

94
harrymc

Standardmäßig reservieren ext2 und seine Nachfolger 5% des Dateisystems für die Verwendung durch den Root-Benutzer. Dies reduziert die Fragmentierung und macht es unwahrscheinlicher, dass der Administrator oder die Daemons, die sich im Besitz des Root-Besitzes befinden, keinen Platz mehr zur Verfügung haben.

Diese reservierten Blöcke verhindern, dass Programme, die nicht als Root ausgeführt werden, Ihre Festplatte füllen. Ob diese Überlegungen den Kapazitätsverlust rechtfertigen, hängt davon ab, wofür das Dateisystem verwendet wird.

Der Betrag von 5% wurde in den achtziger Jahren festgelegt, als die Datenträger viel kleiner waren, aber nur so belassen wurden. Heutzutage reicht 1% wahrscheinlich für die Systemstabilität.

Die Reservierung kann mit der -mOption des tune2fsBefehls geändert werden :

tune2fs -m 0 /dev/sda1 

Dadurch wird der Prozentsatz der reservierten Blöcke auf 0% (0 Blöcke) festgelegt.

Um den aktuellen Wert (unter anderem) abzurufen, verwenden Sie den Befehl:

tune2fs -l <device> 
Dies würde den immensen Unterschied im Nutzraum perfekt erklären (da 5% von 2 TB 100 GB sind). Die Festplatten werden nicht als root- oder systemdateibezogen verwendet. Ich denke, es wäre sicher, dies zu deaktivieren. Ich habe jedoch eine Frage: Woher wissen Root-Programme, dass mehr Speicherplatz zur Verfügung steht als Nicht-Root-Programme? Das Ausführen von `df` als nicht-root vs. root zeigt keinen Unterschied. confetti vor 6 Jahren 10
@confetti: Weil das VFS seine Versuche, mit einem Fehler auf die Festplatte zu schreiben, nicht ablehnt (bis das Volume * tatsächlich * voll ist). Ignacio Vazquez-Abrams vor 6 Jahren 12
Linux behandelt dies intern durch die Prozess-UID oder ihre Gruppe. Ich nehme an, dass dies bei der Zuweisung von Speicherplatz im Festplattentreiber erfolgt, und zwar auf einer viel niedrigeren Ebene als der, in dem `df` arbeitet. harrymc vor 6 Jahren 0
Es gibt also keine Möglichkeit, als Root-Benutzer festzustellen, wie viel freien Speicherplatz ich tatsächlich habe? Was passiert, wenn root diese 5% tatsächlich nutzt? Gibt es keine Möglichkeit, dies zu "verfolgen"? confetti vor 6 Jahren 0
"gnome-system-monitor" hat eine Spalte namens "free" in seinem Dateisystemmonitor. Das zeigt mir "26.5GB" für eine 59GB ext4 SSD-Partition, "Available" meldet "23.5GB". Ich gehe davon aus, dass dies die Differenz von 5% ist. confetti vor 6 Jahren 0
`tune2fs -l `sollte diesen Wert unter anderem geben. Der Betrag von 5% wurde in den achtziger Jahren festgelegt, als die Datenträger viel kleiner waren, aber nur so belassen wurden. Heutzutage reicht 1% wahrscheinlich für die Systemstabilität. harrymc vor 6 Jahren 1
XFS reserviert den kleineren von 5% oder 8192 Blöcken (32 MiB), sodass der reservierte Betrag im Vergleich zur Größe des Dateisystems im Allgemeinen gering ist. Michael Hampton vor 6 Jahren 7
@confetti: Was passiert, wenn der root-Benutzer die 5% verwendet? 5% reserviert bedeutet, dass ein Benutzer ohne Rootberechtigung nur schreiben darf, solange 5% des freien Speicherplatzes verfügbar sind. Mit anderen Worten, die 5% werden nie berührt, bis alle anderen Speicherplätze belegt sind. eMBee vor 6 Jahren 0
Vielen Dank an alle für die Erklärungen. Das hat mir sehr geholfen zu verstehen. Meine Festplatte hat sich bis zum letzten Byte vollständig gefüllt, doch mein System ist nicht vollständig ausgefallen. Jetzt verstehe ich, warum. confetti vor 6 Jahren 5
"* mein System ist noch nicht vollständig ausgefallen *". Aber das ist gut so und sollte nicht geändert werden. RonJohn vor 6 Jahren 0
Ah ja. Ich hatte ein System, das nach der Installation bei 104% lag. Nur root kann auf die Festplatte schreiben. Joshua vor 6 Jahren 0
@RonJohn Richtig, ich spreche in meiner Frage von externen USB-Laufwerken, die nur Nicht-Systemdateien speichern. confetti vor 6 Jahren 0
3
hanshenrik

Wenn die zu speichernden Daten komprimierbar sind, würde btrfs, das mit compress=zstd(oder compress-force=zstd) gemountet wird, wahrscheinlich wesentlich weniger Speicherplatz als ext * verwenden.

  • Dadurch komprimieren Btrfs Ihre Daten transparent, bevor sie auf die Festplatte geschrieben werden, und dekomprimieren Sie sie transparent, wenn Sie sie zurücklesen. Außerdem ordnet ext4 bei der Dateisystemerstellung alle Inodes vor, und btrfs erstellt sie nach Bedarf. Dies könnte auch Speicherplatz sparen.
Möchten Sie weitere Informationen zu dieser Antwort hinzufügen? (Wie es funktioniert, was es macht, vielleicht eine Referenz, ...) confetti vor 6 Jahren 1
@confetti gefällt das? https://patchwork.kernel.org/patch/9817875/ hanshenrik vor 6 Jahren 0
Diese Idee gefällt mir sehr gut, aber weitere Informationen darüber, wie sich dies auf Geschwindigkeit und Leistung auswirken würde, wären nett. confetti vor 6 Jahren 0
@confetti, da Sie eine Festplatte verwenden, verbessert dies wahrscheinlich die Leistung. CPUs sind so viel schneller als Festplatten, dass der langsame Teil des Festplattenzugriffs darin besteht, die Daten auf die Festplatte zu laden und von ihr zu entfernen. Die Zeit, die zum Komprimieren oder Dekomprimieren aufgewendet wird, ist nicht spürbar. Mark vor 6 Jahren 2
Auf der anderen Seite neigen die meisten Arten von großen Dateien (z. B. Bilder, Audio, Video und sogar die meisten Rich-Text-Dokumentformate) dazu, bereits komprimiert zu sein und profitieren im Allgemeinen nicht von zusätzlicher Komprimierung. Zumindest nicht von der einfachen universellen Art, die auf Dateisystemebene ausgeführt wird. Ilmari Karonen vor 6 Jahren 2
@IlmariKaronen true, aber btrfs erkennt diese Dateien automatisch und überspringt deren Komprimierung (sofern die btrfs-Heuristiken - die übrigens sehr einfach sind - fehlschlägt), können die Heuristiken auch deaktiviert werden, indem `compress-force` anstelle von` compress 'verwendet wird eine ungewöhnliche Konfiguration) ... es gibt auch html, javascript und css .. und die btrfs-Komprimierung funktioniert wunderbar auf meinem E-Mail-Server, der E-Mails in einem HTML-ähnlichen Format speichert hanshenrik vor 6 Jahren 0
BTRFS ist in vielen Fällen ein sinnvoller Ersatz für ext4. Beachten Sie jedoch, dass es regelmäßig gewartet werden muss und je nach Aktivität etwas langsamer ist. Natürlich können die Online-Änderungen und die Prüfsummen-RAID-Fähigkeiten zur Verhinderung von Datenverfälschungen in der Regel für den Fall ausreichen, dass die Festplatten voll sind und sich die Daten nur langsam ändern. Perkins vor 6 Jahren 0
3
glglgl

Ein weiterer Punkt, über den noch nicht gesprochen wurde, ist die Anzahl der Inodes, die Sie in Ihrem Dateisystem reservieren.

Standardmäßig erstellt mkfs eine Reihe von Inodes, die es ermöglichen sollen, eine ganze Reihe sehr kleiner Dateien in Ihrem Dateisystem abzulegen. Wenn Sie wissen, dass die Dateien sehr groß sein werden und Sie nur eine kleine Anzahl von Dateien auf dem FS ablegen, können Sie die Anzahl der Inodes reduzieren.

Sich kümmern! Diese Anzahl (bzw. das Verhältnis zwischen Speicherplatz und Anzahl der Inodes) kann nur zum Erstellungszeitpunkt des Dateisystems festgelegt werden. Auch bei der Erweiterung des FS bleibt das Verhältnis gleich.

Wenn Sie wissen, dass Sie viele wirklich winzige Dateien speichern möchten, können Sie die Anzahl der Inodes erhöhen und die Blockgröße verringern, damit Sie nicht so viel Platz verschwenden. (Jede Datei muss mindestens einen Block enthalten, auch wenn sie 1 Byte groß ist. Verwenden Sie ls -ls, um die Größe mit der auf der Festplatte verwendeten Größe zu vergleichen.) Perkins vor 6 Jahren 0
@Perkins Du hast recht, aber ich denke, das gilt nur für SEHR kleine Dateien: Die Standardblockgröße ist 4kB (IIRC), die minimale ist 1 kiB. Also nicht so sehr zu gewinnen, außer dass Ihre Festplatte wirklich voll mit diesen Dateien ist. Trotzdem könnte ich morgen in dieses Thema eintauchen. glglgl vor 6 Jahren 0
oder alternativ btrfs verwenden, das bei Bedarf Inodes erstellt. Während die Inodes von ext4 zum Zeitpunkt der Dateisystemerstellung zugewiesen werden und nach der Erstellung nicht mehr skaliert werden können (harte Grenze von 4 Milliarden), werden die Btrfs-Inodes bei Bedarf dynamisch erstellt, und die harte Grenze liegt bei 2 ^ 64, etwa 18,4 Quintilion, was rund 4,6 Milliarden entspricht mal höher als die harte Grenze eines maxed ext4: p hanshenrik vor 6 Jahren 2
Erinnert mich daran, eine Usenet-Spule einzurichten. ext4 speichert tiny (das Limit liegt zwischen 60 und 160 Bytes (abhängig von vielen Dingen)) innerhalb des Inodes. mr.spuratic vor 6 Jahren 0
@ hanshenrik Beachten Sie, dass Sie die gleiche Blockgrößenbeschränkung für btrfs haben (mit ein paar zusätzlichen Möglichkeiten, es zu umgehen). Sie müssen also immer noch wissen, welche Art von Dateien (groß oder klein oder beides) Sie speichern möchten Passen Sie Ihr Dateisystem entsprechend an, wenn Sie die maximale Speichermenge aus dem Dateisystem herausdrücken möchten. Die Verfügbarkeit der automatischen Komprimierung hilft jedoch ziemlich, wenn Sie flauschige Daten speichern. Perkins vor 6 Jahren 0