Warum ist die Festplattennutzung größer als die Größe aller darauf befindlichen Dateien?

8

Ich habe eine 3 TB Festplatte. Auf dem Eigenschaftenbildschirm der Festplatte wird angezeigt, dass ich 471,4 GB verwendet habe. Wenn ich jedoch alle Dateien in Nautilus auswähle, wird 321,0 GB ausgewählt. Wenn ich nur 321,0 GB Dateien auf der Festplatte habe, warum werden 471,4 GB verwendet?

Die Partitionierung der Festplatte verwendet die in EXT4 verwendete GUID und das Dateisystem. Wenn ich die Festplatte mit der Disk Utility-App auswähle, wird eine Warnung angezeigt:

WARNING: The partition is misaligned by 3072 bytes.
This may result in very poor performance.  Repartitioning is suggested.

Hat das etwas mit den fehlenden 150,4 GB zu tun?

oshirowanen
quelle
2
Sie benutzen das Gerät Tb, wenn Sie es mit ziemlicher Sicherheit meinen TBoder vielleicht TiB. In dieser Frage finden Sie den Unterschied zwischen diesen Einheiten.
Flimm

Antworten:

15

Dateien auf der Festplatte haben zwei Größen: die "scheinbare Größe" und die "Größe auf der Festplatte". Mehrere Gründe können eine große Diskrepanz verursachen:

  • Eine große Anzahl von Dateien führt aufgrund der internen Fragmentierung zu einem hohen Overhead. Beispiel: Ext4 hat eine Standardblockgröße von 4 KB. Dateien, die kleiner als diese sind, verbrauchen immer 4 KB, und die oben genannten Größen werden auf diese Blockausrichtung "gerundet".
  • Verzeichnisse sind auch Dateien und die gleiche Regel gilt auch für sie. Wenn Sie eine große Anzahl von Dateien in einem Verzeichnis erstellen und später wieder entfernen würden, kann die Verwendung der Verzeichnisdatei nicht zurückgefordert werden (das Neuerstellen des Verzeichnisses hilft).
  • Sparse-Dateien sind spezielle Dateien, die groß erscheinen, aber nicht den Speicherplatz beanspruchen. Dies ist bei der Virtualisierung von Images virtueller Festplatten üblich. Sie werden groß erscheinen, aber die "echte" Größe kann viel kleiner sein. Viele Dienstprogramme (und Dateimanager) können die tatsächliche Festplattennutzung nicht anzeigen.
  • Die Verwendung von Hardlinks. Der Inhalt einer Datei kann auf der Festplatte vorhanden sein, während mehrere Verweise darauf verweisen. Einige Dateimanager berücksichtigen möglicherweise die Größe für jede Referenz.

Ich würde vorschlagen, ein Tool zur Datenträgernutzung zu verwenden, das bekanntermaßen beide Größen auflisten kann, um festzustellen, ob dies das Problem ist. Versuchen Sie es ncduin einem Terminal und verwenden Sie adiese Option, um zwischen der tatsächlichen und der Festplattennutzung umzuschalten.


Eine kurze Demo zur internen Fragmentierung aufgrund eines 4KiB-Dateisystems mit Blockgröße mit du:

$ sudo tune2fs -l /dev/path-to-device | grep "Block size"
Block size:               4096

$ echo blaataaap > myfile                      # creates a 10-byte file

$ du --block-size=1 myfile                     # prints the usage on disk (filesystem)
4096   myfile

$ du --apparent-size --block-size=1 myfile     # prints the apparent size, i.e.
10     myfile                                  # content length when seeking

$ ls -al
-rw-rw-r-- 1 gert gert 10 Jan 1 23:24 myfile   # ls uses apparent sizes

Dies bedeutet, dass diese 10-Byte-Datei auf der Festplatte 4086 Byte größer ist als in einer Liste und unter interner Fragmentierung leidet.


Eine kurze Demo zu Hardlinks und Festplattennutzung wird beim Auflisten von Dateien ( lsin diesem Fall) falsch angezeigt :

$ dd if=/dev/zero of=1MBfile bs=1M count=1 # create a 1MB file
$ ln 1MBfile a_hard_link                   # create a hard link to it

$ ls -alht                                 # ls will report 2MB
total 2.1M
drwxrwxr-x  2 gert gert 4.0K Jan  2 11:21 .
-rw-rw-r--  2 gert gert 1.0M Jan  2 11:21 1MBfile
-rw-rw-r--  2 gert gert 1.0M Jan  2 11:21 a_hard_link

$ du -B 1024 .                             # du reports 1028K total for directory
1028    .

$ du -B 1024 a_hard_link                   # and 1024K for each file individually
1024    a_hard_link
$ du -B 1024 1MBfile
1024    1MBfile
gertvdijk
quelle
2

Dies geschieht, weil die gesamte Festplattennutzung niemals der Summe aller dortigen Dateien entspricht (was Nautilius anzeigt, wenn Sie alle Dateien auswählen).

Der Grund dafür ist, dass die Dateisysteme selbst dazu neigen, etwas Platz auf der Partition zu belegen. Wenn Sie alle auf dieser Festplatte gespeicherten Daten löschen würden, würde die Festplattenauslastung höchstwahrscheinlich etwa 150 GB betragen. Dieser Speicherplatz ist für das Dateisystem reserviert - er ist erforderlich, da das Dateisystem die Daten zu Dateien irgendwo speichern muss. ext4 weist diesen Overhead-Speicherplatz vorab zu, bevor Dateien erstellt werden, im Gegensatz zu beispielsweise ext3, bei dem dieser Speicherplatz wächst, wenn der Partition mehr Dateien hinzugefügt werden.

Wenn Sie diese 150 GB als Problem betrachten, beachten Sie bitte, dass dies nur 5% Ihrer gesamten Festplattengröße sind . Wenn Sie mehr als 95% auf Ihrer Festplatte benötigen, müssen Sie wahrscheinlich eine größere kaufen, anstatt sich über diese 150 GB Gedanken zu machen, die außerhalb Ihrer Reichweite liegen.

Denken Sie auch daran, dass im Falle von ext4 dieser Speicherplatz nicht verschwendet wird. Die Datenfragmentierung ist hier kein Problem, aber die Kosten für diesen Vorteil sind der zusätzliche belegte Speicherplatz. Es gibt Möglichkeiten, dies zu verringern und ext4 zu zwingen, viel weniger Speicherplatz zu nutzen. Dies wird jedoch nicht empfohlen, da dies aufgrund von Fragmentierungschancen und anderen Optimierungen, die nicht möglich sind, sehr wahrscheinlich dazu führt, dass Ihre Maschine funktioniert viel langsamer, da der Datenzugriff nicht so reibungslos verläuft.

Rafał Cieślak
quelle