Я использую zfs на своем FreeBSD 9.0 x64 и очень доволен этим, но мне трудно подсчитать реальный, а не сжатый размер каталога.
Конечно, я могу пройтись по каталогу и подсчитать размер каждого файла с помощью ls, но я бы ожидал, что для этой цели будет нужен дополнительный ключ для du.
Так, как я могу определить размер каталога для dir, размещенного на zfs со сжатием на?
Заранее прошу вас за совет, я просто не могу вспомнить, что нет такого "простого" способа без 'find ./ -type d -exec ls -l' {} '\; | awk ... '!
Использовать du
с этими -A
флаг:
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
Очень кстати. Он даже работает с -d
для рекурсивного добра:
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
Вы можете установить версию GNU du(1)
:
cd /usr/ports/sysutils/coreutils && make install clean
Затем вы можете использовать --apparent-size
флаг:
/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 .
попробуйте использовать команду zpool:
zpool list
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
storage 8.93T 6.59T 2.34T - 60% 73% 2.13x ONLINE -
но df -sh показывает результат (не дедуплицированный размер)
df -hT
Filesystem Type Size Used Avail Use% Mounted on
storage zfs 16T 14T 1.9T 89% /storage