du/df und ls melden unterschiedliche Festplattennutzung

du/df und ls melden unterschiedliche Festplattennutzung

Ende letzter Woche bemerkte einer meiner Kollegen etwas Seltsames auf einem unserer gemeinsam genutzten Computerserver.

Wir haben ein Verzeichnis, das ls -leine 132 G große Datei enthält.

Allerdings df -hzeigt das Ausführen, dass der gesamte Speicherplatz auf der Festplatte 128 G beträgt. Zusätzlich du -h --max-depth=1meldet das Ausführen auf dem Stamm des Laufwerks auch 128 G für.

Anfangs habe ich mich gefragt, ob dieses Problem möglicherweise auf offene Dateihandles oder Ähnliches zurückzuführen ist, die dazu führen, dass diese Binärdateien unterschiedliche Informationen melden. Ich habe jedoch versucht, die Festplatte auszuhängen und erneut einzuhängen, und alle Binärdateien melden die gleichen Ergebnisse wie zuvor.

Um ein paar weitere Informationen zur Konfiguration des Laufwerks zu geben:

  • Das Volume wird mit EXT4 und LUKS-Verschlüsselung formatiert.
  • Die Festplatte wird nicht über NFS oder ähnliches freigegeben.
  • Ich habe die betreffende Datei überprüft und es scheint, dass keine Verknüpfung besteht.
  • Beim Unmounten und erneuten Mounten des Datenträgers habe ich durch Ausführen auf dem Datenträger eine Datenträgerprüfung erzwungen fsck -f, und es wurden keine Probleme zurückgegeben.
  • Der Server, auf dem sich die Festplatte befindet, ist kein Virtualisierungshost und führt Ubuntu 14.04 als Betriebssystem aus.

Antwort1

Ist Ihr Server ein Virtualisierungshost?

Unterschiedliche reale Datei- und Speicherplatzgrößen sind ein normales Verhalten bei dynamisch expandierenden virtuellen Festplatten. Diese Festplatten haben unterschiedliche reale Dateigrößen und Header-Dateigrößendaten

Beispiel:

Möglicherweise verwenden Sie virtuelle QEMU-Datenträger (Erweiterung qcow2 oder andere), die Sie wie folgt finden:

find / -regex '.*\.qcow.*$'

/var/lib/vz/images/105/vm-105-disk-1.qcow2
...

Überprüfen wir vm-105-disk-1.qcow2die Größe mit stat:

stat vm-105-disk-1.qcow2

  File: vm-100-disk-1.qcow2
  Size: 68745560064

79728541696 – ist ungefähr 64 GB groß

Überprüfen Sie mit wc:

wc -c <vm-105-disk-1.qcow2

68745560064

Das gleiche Ergebnis... Überprüfen Sie mit du:

du -sh vm-105-disk-1.qcow2

15G        vm-105-disk-1.qcow2

Nur 15 GB! Überprüfen wir es mit qemu-imgutil:

qemu-img info vm-105-disk-1.qcow2

image: vm-105-disk-1.qcow2
file format: qcow2
virtual size: 64G (68719476736 bytes)
disk size: 14G
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
    refcount bits: 16
    corrupt: false

Achten Sie auf diese beiden Zeilen, dann sollte alles klar sein:

virtual size: 64G (68719476736 bytes)
disk size: 14G

Wenn Ihr Server kein Virtualisierungshost ist, lesen Sie diese Themen:

verwandte Informationen