An meinen Server ist ein 130 GB großes Volume angeschlossen.
Um den freien Speicherplatz zu prüfen, führe ich aus df -h -x tmpfs -x squashfs | grep -v /run/shared
und erhalte Folgendes:
Filesystem Size Used Avail Use% Mounted on
udev 965M 0 965M 0% /dev
/dev/xvda1 128G 111G 13G 90% /
Wenn ich jedoch Einzelheiten zur Datenträgernutzung abrufen möchte, indem ich ncdu
das Stammverzeichnis ausführe, erhalte ich Folgendes:
. 55,7 GiB [######### ] /home
. 24,0 GiB [#### ] /var
. 2,4 GiB [ ] /usr
1,0 GiB [ ] swapfile
598,6 MiB [ ] /lib
63,0 MiB [ ] /boot
9,4 MiB [ ] /sbin
9,1 MiB [ ] /bin
. 8,1 MiB [ ] /etc
. 4,3 MiB [ ] /tmp
. 2,7 MiB [ ] /run
! 24,0 KiB [ ] /root
! 16,0 KiB [ ] /lost+found
4,0 KiB [ ] /lib64
e 4,0 KiB [ ] /opt
e 4,0 KiB [ ] /mnt
e 4,0 KiB [ ] /media
! 4,0 KiB [ ] /gandi
. 0,0 B [ ] /proc
. 0,0 B [ ] /sys
0,0 B [ ] /dev
@ 0,0 B [ ] initrd.img.old
@ 0,0 B [ ] initrd.img
@ 0,0 B [ ] vmlinuz.old
@ 0,0 B [ ] vmlinuz
e 0,0 B [ ] /srv
Es besteht ein Unterschied von etwa 27 GB gegenüber dem vom vorherigen Befehl zurückgegebenen freien Speicherplatz (111 GB).
Woher kommt dieser Unterschied?
Danke.
Antwort1
Diese Frage wird recht häufig gestellt. Die kurze Antwort lautet: du
Verwenden df
Sie unterschiedliche Methoden, um Daten zu erhalten.
Das Dateisystem weist Plattenblöcke im Dateisystem zu, um seine Daten aufzuzeichnen. Diese Daten werden als Metadaten bezeichnet und sind für die meisten Programme auf Benutzerebene (wie du) nicht sichtbar. Beispiele für Metadaten sind Inodes, Plattenzuordnungen, indirekte Blöcke und Superblöcke.
DerduDer Befehl ist ein Programm auf Benutzerebene, das die Metadaten des Dateisystems nicht kennt, während df die Festplattenzuordnungskarten des Dateisystems betrachtet und die Metadaten des Dateisystems kennt. dferhält echte Dateisystemstatistiken, während du nur ein unvollständiges Bild sieht.