FreeBSD: Як дізнатися реальний розмір файлу на zfs із стисненням?


18

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

Звичайно, я можу пройти по каталозі і порахувати кожен розмір файлу з ls, але для цієї мети я очікую додатковий ключ.

Отже, як я можу визначити розмір каталогу для dir, розміщеного на zfs із стисненням ?

Заздалегідь скажіть вам за пораду, я просто не можу запам'ятати, немає такого "простого" способу без "знайти ./ -тип 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  .

4
Для цього немає жодної причини використовувати порт. Використовуйте базову ОС duз її -Aпрапором.
Шон

10
Це корисно для ZFS в Linux. У GNU duнемає -Aможливості.
jakar

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.