FreeBSD: Jak poznać rzeczywisty rozmiar pliku na ZFS z włączoną kompresją?

18

Używam ZFS na moim FreeBSD 9.0 x64 i jestem z tego całkiem zadowolony, ale trudno mi policzyć rozmiar katalogu rzeczywistego, nieskompresowanego.

Z pewnością mogę przejść do katalogu i policzyć każdy rozmiar pliku za pomocą ls, ale spodziewałbym się dodatkowego klucza do du do tego celu.

Jak więc określić rozmiar katalogu dla katalogu umieszczonego na ZFS z włączoną kompresją ?

Z góry dziękuję za radę, po prostu nie mogę sobie przypomnieć, że nie ma takiego „prostego” sposobu bez „find ./ -type d -exec ls -l '{}” \; | awk ... '!

Alexander
źródło
4
Zobacz odpowiedź dla niektórych rozwiązań: serverfault.com/questions/254013/file-size-with-zfs-compression
Zanchey
3
Jeśli używasz deduplikacji, jaki byłby rozmiar „rzeczywisty”?
ryandenki

Odpowiedzi:

23

Użyj duz -Aflagą:

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

Bardzo przydatny. Działa nawet z -drekurencyjną dobrocią:

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
źródło
Naprawdę dobre rozwiązanie! A najlepsze jest to „od razu po wyjęciu z pudełka”!
Alexander
5
Tylko uwaga, jeśli twoja wersja dunie ma opcji -A, -A jest dla „pozornego rozmiaru”, który jest dostępny przez --apparent-size. Ubuntu 16.04 / du 8.25 nie wydaje się mieć -A, więc wygląda na to, że ktoś inny może napotkać ten problem.
Jim Rubenstein
12

Możesz zainstalować wersję GNU du(1):

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

Następnie możesz użyć --apparent-sizeflagi:

/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
źródło
4
Jest NO powód, aby użyć do tego portu. Użyj podstawowego systemu operacyjnego duz jego -Aflagą.
Sean
10
Jest to przydatne dla ZFS w systemie Linux. GNU dunie ma -Aopcji.
jakar
1
ZFS w Linuksie duma --apparent-sizez komentarza na temat przyjętego rozwiązania tutaj: serverfault.com/a/434655/145009
Rob Paisley
0

spróbuj użyć polecenia 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  -

ale df -sh pokazuje wynik (nie deduplikowany rozmiar)

df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
storage        zfs        16T   14T  1.9T  89% /storage
shcherbak
źródło