FreeBSD: Bagaimana cara mengetahui ukuran file asli pada zfs dengan kompresi aktif?

18

Saya menggunakan zfs pada FreeBSD 9.0 x64 saya dan cukup senang dengannya, tetapi saya merasa sulit untuk menghitung direktori dengan ukuran yang nyata, bukan terkompresi.

Tentunya saya bisa berjalan di direktori dan menghitung setiap ukuran file dengan ls, tapi saya berharap beberapa kunci tambahan untuk du untuk tujuan itu.

Jadi, bagaimana saya bisa tahu ukuran direktori untuk dir yang ditempatkan pada zfs dengan kompresi aktif ?

Thamk Anda sebelumnya untuk saran, saya sederhana tidak dapat mengingat tidak ada cara yang 'sederhana', tanpa 'menemukan ./ -type d -exec ls -l' {} '\; | awk ... '!

Alexander
sumber
4
Lihat jawaban ini untuk beberapa solusi: serverfault.com/questions/254013/file-size-with-zfs-compression
Zanchey
3
Jika menggunakan deduplikasi, apa yang Anda anggap ukuran "nyata"?
ryandenki

Jawaban:

23

Gunakan dudengan -Abenderanya:

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

Sangat berguna. Itu bahkan bekerja dengan -dkebaikan rekursif:

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
sumber
Solusi yang sangat bagus! Dan yang terbaik ada di sana "langsung dari kotak"!
Alexander
5
Hanya sebuah catatan, jika versi duAnda tidak memiliki opsi -A, -A adalah untuk "ukuran nyata", yang tersedia via --apparent-size. Ubuntu 16.04 / du 8.25 tampaknya tidak memiliki -A, jadi sepertinya orang lain mungkin mengalami masalah itu.
Jim Rubenstein
12

Anda dapat menginstal versi GNU dari du(1):

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

Maka Anda dapat menggunakan --apparent-sizebendera:

/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
sumber
4
Tidak ada alasan untuk menggunakan port untuk ini. Gunakan OS dasar dudengan -Abenderanya.
Sean
10
Ini berguna untuk ZFS di Linux. GNU dutidak memiliki -Aopsi.
jakar
1
ZFS di Linux dutelah --apparent-sizedari komentar pada solusi yang diterima di sini: serverfault.com/a/434655/145009
Rob Paisley
0

coba gunakan perintah 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  -

tapi df -sh menunjukkan dihasilkan (bukan ukuran deduplikasi)

df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
storage        zfs        16T   14T  1.9T  89% /storage
shcherbak
sumber