FreeBSD: How to know real file size on zfs with compression on?
I'm using zfs on my FreeBSD 9.0 x64 and pretty happy with it, but I find it hard to count directory real, not compressed, size.
Surely I can walk over the directory and count every file size with ls, but I'd expect some extra key for du for that purpose.
So, how can I tell the directory size for dir placed on zfs with compression on?
Thamk you in advance for the advice, I simple can't rememeber there is no such a 'simple' way, without 'find ./ -type d -exec ls -l '{}' \; | awk ...'!
Solution 1:
Use the du
with its -A
flag:
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
Very handy. It even works with -d
for recursive goodness:
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
Solution 2:
You could install the GNU version of du(1)
:
cd /usr/ports/sysutils/coreutils && make install clean
Then you can use the --apparent-size
flag:
/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 .
Solution 3:
try to use zpool command :
zpool list
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
storage 8.93T 6.59T 2.34T - 60% 73% 2.13x ONLINE -
but df -sh shows resulting (not deduplicated size)
df -hT
Filesystem Type Size Used Avail Use% Mounted on
storage zfs 16T 14T 1.9T 89% /storage