FreeBSD: Как узнать реальный размер файла на zfs с включенным сжатием?

18

Я использую zfs на своей FreeBSD 9.0 x64 и очень доволен этим, но мне трудно сосчитать реальный, а не сжатый каталог.

Конечно, я могу пройтись по каталогу и посчитать каждый размер файла с помощью ls, но я ожидаю, что для этой цели понадобится дополнительный ключ для du.

Итак, как я могу определить размер каталога для dir, помещенного в zfs с включенным сжатием ?

Заранее благодарю за совет, я просто не могу вспомнить, что не существует такого «простого» способа без «find ./ -type d -exec ls -l '{}' \; | awk ... '!

Александр
источник
4
Посмотрите этот ответ для некоторых решений: serverfault.com/questions/254013/file-size-with-zfs-compression
Zanchey
3
Если бы вы использовали дедупликацию, каким бы вы считали «реальный» размер?
ryandenki

Ответы:

23

Используйте 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
Шон
источник
Действительно хорошее решение! И самое лучшее, что есть «прямо из коробки»!
Александр
5
Просто обратите внимание: если ваша версия duне имеет опции -A, -A для «видимого размера», который доступен через --apparent-size. Ubuntu 16.04 / du 8.25, похоже, не имеет -A, поэтому кажется, что кто-то еще может столкнуться с этой проблемой.
Джим Рубинштейн
12

Вы можете установить версию 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  .
Zanchey
источник
4
Там нет НИКАКОЙ причины использовать порт для этого. Использование базовой ОС duс ее -Aфлагом.
Шон
10
Это полезно для ZFS на Linux. У GNU duнет -Aвыбора.
Джакар
1
ZFS на Linux duимеет --apparent-sizeот комментария о принятом решении здесь: serverfault.com/a/434655/145009
Роб Пейсли
0

попробуйте использовать команду 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
Щербак
источник