Warum gibt BTRFS die Größe kleiner Dateien in meinem Dateisystem so falsch an?
[pi@rpi scipy]% cat __init__.py | wc -c # literal byte count
4729
[pi@rpi scipy]% du --apparent-size -h __init__.py # size on filesystem (same)
4.7K __init__.py
[pi@rpi scipy]% du -h __init__.py # reported size to ls
1.0M __init__.py
- Komplett Aktienoptionen (
defaults
, schlichtmkfs.btrfs
) - Linux Kernel 3.18
- RAID-1-Konfiguration
Okay, es scheint also, dass BTRFS Dateien ab einem bestimmten Schwellenwert auf 1 MB aufrundet. Dieses 1 MB istgenau1048576 (oder 2²⁰) Bytes.
Noch überraschender ist, cat __init__.py > __init__2.py
dass eine neue Datei mit der richtigen Größe erstellt wird. Hat das etwas damit zu tun, dass ich diese Dateien über Samba erstellt habe?
Auch neu erstellte Dateien haben die richtige Größe.
Antwort1
Es stellt sich heraus, dass es ausreicht, alle Dateien direkt vor Ort neu zu schreiben:
find . -type f -exec /usr/bin/echo {} \; -exec sed -i '' {} \;
Die Dateien wurden korrekt verkleinert. Ich habe nicht gesehen, dass es noch einmal passiert ist.