Wie gebe ich aus, wie viel von der nominalen Dateigröße tatsächlich mit Daten gefüllt ist? Wie vmtouch
zeigt, wie viel Datei derzeit im Speicher ist ...
Ich erwarte, dass der Workflow so aussieht:
$ fallocate -l 1000000 data
$ measure_sparseness data
100%
$ fallocate -p -o 250000 -l 500000 data
$ measure_sparseness
50%
Umgehung: Verwenden Sie du -bsh
und du -sh
und vergleichen sie.
files
sparse-files
Vi.
quelle
quelle
filefrag
für jedes Dateisystem undxfs_bmap -vpl
für XFS sind sie wichtige Tools, um zu zeigen, wo sich die Daten befinden (und wo sich die vorab zugewiesenen ungeschriebenen Speicherbereiche befinden), wenn Sie mit spärlichen Dateien und Lochen herumspielen.filefrag data
-> mehrereFIBMAP: Invalid argument
->data: 1 extent found
...filefrag -e
funktioniert perfekt auf XFS und ext4 mindestens. Ich habe nicht an anderen getestet. Es verwendet FIEMAP (Extent-Map) mit einem Fallback auf FIBMAP. Wenn dieseioctl
nicht funktionieren, wird es nicht nützlich sein.filefrag
hat keine-e
Option.e2fsprogs
? Ich bin mir ziemlich sicher, dass es keine neue Funktion ist. Es gibt auch eine-v
Option, die die gleichen ausführlichen Informationen ausgibt (plus einige zusätzliche Kopfzeilen). Vielleicht wirstfilefrag
du das haben. Im Gegensatz dazuxfs_bmap
weist es keine expliziten Löcher mit getrennten Linien auf, sondern weist nur Diskontinuitäten in der Dateiposition auf. Wie auch immer, ich bin nicht überrascht, dasstmpfs
FIEMAP nicht unterstützt wird, da es kein Block-Gerät als Backup-Speicher gibt, sodass es keinen sinnvollen Wert für die Position der Extents gibt.Antworten:
find
hat einen%S
Formatbezeichner, der sogar "Spärlichkeit" genannt wirdquelle
ln -s foo link
"Spärlichkeit" vonlink
: 0. Sockets und FIFOs haben die Länge Null,find
zeigt also Spärlichkeit 1.Wenn Sie
find
diese Option nicht haben, ist eine Methode, die seit den 70er Jahren unter UNIX funktioniert:Damit wird die tatsächliche Anzahl der verwendeten Blöcke und das höchste jemals geschriebene Byte ausgegeben. Daraus können Sie leicht berechnen, wie viele Blöcke tatsächlich nicht zugeordnet wurden.
quelle
Während
find
's%S
eine kurze Ausgabe drucken wird, möchten Sie vielleicht genauer sehen,sparsetest
was ich geschrieben habe - Open Source und auf Github hier . Sie können es jederzeit ändern, wenn Sie beispielsweise jedes Loch ausdrucken möchten.Blog - Artikel Probleme mit spärlichen Zuteilungen zeigt hier mit
sparsetest
dem Problem zu debuggen.quelle
vmtouch -v
Bereiche in einer Datei drucken, wie z. B. eine Karte der zwischengespeicherten Bereiche in der Datei?lseek
mitSEEK_HOLE
undSEEK_DATA
. Leicht zu schaffen.