FreeBSD: ¿Cómo saber el tamaño real del archivo en zfs con compresión activada?

18

Estoy usando zfs en mi FreeBSD 9.0 x64 y estoy bastante contento con él, pero me resulta difícil contar el tamaño real del directorio, no comprimido.

Seguramente puedo recorrer el directorio y contar cada tamaño de archivo con ls, pero esperaría alguna clave adicional para du para ese propósito.

Entonces, ¿cómo puedo saber el tamaño del directorio para el directorio colocado en zfs con compresión activada ?

Gracias de antemano por el consejo, simplemente no puedo recordar que no existe una forma 'simple', sin 'find ./ -type d -exec ls -l' {} '\; El | awk ... '!

Alejandro
fuente
44
Vea esta respuesta para algunas soluciones: serverfault.com/questions/254013/file-size-with-zfs-compression
Zanchey
3
Si utiliza la deduplicación, ¿cuál consideraría que es el tamaño "real"?
ryandenki

Respuestas:

23

Use el ducon su -Abandera:

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

Muy útil. Incluso funciona con la -dbondad recursiva:

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
fuente
Muy buena solución! ¡Y lo mejor es "desde el primer momento"!
Alexander
55
Solo una nota, si su versión de duno tiene la opción -A, -A es para "tamaño aparente", que está disponible a través de --apparent-size. Ubuntu 16.04 / du 8.25 no parece tener -A, por lo que parece que alguien más podría encontrarse con ese problema.
Jim Rubenstein
12

Puede instalar la versión GNU de du(1):

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

Entonces puedes usar la --apparent-sizebandera:

/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
fuente
44
Hay NO razón para utilizar un puerto para esto. Utilice el sistema operativo base ducon su -Abandera.
Sean
10
Esto es útil para ZFS en Linux. GNU duno tiene una -Aopción.
jakar
1
ZFS en Linux dutiene --apparent-sizedel comentario sobre la solución aceptada aquí: serverfault.com/a/434655/145009
Rob Paisley
0

intenta usar el comando 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  -

pero df -sh muestra el resultado (tamaño no deduplicado)

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