FreeBSD: Wie erkenne ich die tatsächliche Dateigröße unter zfs mit eingeschalteter Komprimierung?

17

Ich verwende zfs auf meinem FreeBSD 9.0 x64 und bin ziemlich zufrieden damit, aber es fällt mir schwer, die tatsächliche, nicht komprimierte Größe des Verzeichnisses zu ermitteln.

Sicher kann ich über das Verzeichnis gehen und jede Dateigröße mit ls zählen, aber ich würde zu diesem Zweck einen zusätzlichen Schlüssel für du erwarten.

Also, wie kann ich die Verzeichnisgröße für dich auf zfs mit Kompression gesetzt verpetzen ?

Vielen Dank im Voraus für den Rat, ich kann mich einfach nicht erinnern, dass es keinen solchen 'einfachen' Weg gibt, ohne 'find ./ -type d -exec ls -l' {} '\; | awk ... '!

Alexander
quelle
4
In dieser Antwort finden Sie einige Lösungen: serverfault.com/questions/254013/file-size-with-zfs-compression
Zanchey
3
Wenn Sie die Deduplizierung verwenden, wie hoch ist die "tatsächliche" Größe?
Ryandenki

Antworten:

22

Verwenden Sie die dumit seiner -AFlagge:

root@pg78:/usr/local/pgsql/data/base/218204 # du -A -h 221350.219
1.0G    221350.219
root@pg78:/usr/local/pgsql/data/base/218204 # du -h 221350.219
501M    221350.219

Sehr praktisch. Es funktioniert sogar mit -dfür rekursive Güte:

root@pg78:/usr/local/pgsql/data/base # du -h -c -d0 .
387G    .
387G    total
root@pg78:/usr/local/pgsql/data/base # du  -A -h -c -d0 .
518G    .
518G    total
Sean
quelle
Wirklich gute Lösung! Und das Beste, es ist da "von der Stange"!
Alexander
5
Nur eine Anmerkung, wenn Ihre Version von dudie Option -A nicht hat, steht -A für "scheinbare Größe", die über verfügbar ist --apparent-size. Ubuntu 16.04 / du 8.25 scheint kein -A zu haben, so dass es den Anschein hat, als würde jemand anderes auf dieses Problem stoßen.
Jim Rubenstein
11

Sie könnten die GNU-Version von du(1):

cd /usr/ports/sysutils/coreutils && make install clean

Dann können Sie die --apparent-sizeFlagge verwenden:

/space# zfs create space/comptest
/space# zfs set compression=on space/comptest
/space# dd if=/dev/zero of=/space/comptest/zerofile bs=1M count=40
/space/comptest# gdu
2K      .
/space/comptest# gdu --apparent-size
40961K  .
Zanchey
quelle
4
Es gibt KEINEN Grund, dafür einen Port zu verwenden. Verwenden Sie das Basisbetriebssystem dumit seinem -AFlag.
Sean
10
Dies ist nützlich für ZFS unter Linux. GNU duhat keine -AOption.
Jakar
1
ZFS unter Linux duhat --apparent-sizeaus dem Kommentar zur akzeptierten Lösung hier: serverfault.com/a/434655/145009
Rob Paisley
0

Versuchen Sie, den Befehl zpool zu verwenden:

zpool list
NAME      SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
storage  8.93T  6.59T  2.34T         -    60%    73%  2.13x  ONLINE  -

aber df -sh zeigt das Ergebnis (nicht deduplizierte Größe)

df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
storage        zfs        16T   14T  1.9T  89% /storage
shcherbak
quelle