¿Cómo saco cuánto tamaño nominal del archivo está realmente lleno de datos? Como vmtouch
muestra la cantidad de archivo que hay actualmente en la memoria ...
Espero que el flujo de trabajo sea así:
$ fallocate -l 1000000 data
$ measure_sparseness data
100%
$ fallocate -p -o 250000 -l 500000 data
$ measure_sparseness
50%
Solución: el uso du -bsh
y el du -sh
y los comparan.
files
sparse-files
Vi.
fuente
fuente
filefrag
para cualquier sistema de archivos yxfs_bmap -vpl
para XFS son herramientas clave para mostrar dónde están los datos (y dónde están las extensiones no escritas preasignadas) cuando se juega con archivos dispersos y perforaciones.filefrag data
-> múltipleFIBMAP: Invalid argument
->data: 1 extent found
...filefrag -e
funciona perfectamente en XFS y ext4 al menos. No he probado en otros. Utiliza FIEMAP (extensión-mapa), con un respaldo a FIBMAP. Si esosioctl
s no funcionan, entonces no será útil.filefrag
no tiene-e
opción.e2fsprogs
? Estoy bastante seguro de que no es una característica reciente. También hay una-v
opción que imprime la misma información detallada (más algunas líneas de encabezado adicionales). Quizás tufilefrag
tengas eso. Sinxfs_bmap
embargo, a diferencia de esto, no indica explícitamente agujeros con líneas separadas, solo tiene discontinuidades en la posición del archivo. De todos modos, no me sorprende quetmpfs
no sea compatible con FIEMAP, porque no hay un dispositivo de bloque como almacén de respaldo, por lo que no hay un valor razonable para la ubicación de las extensiones.Respuestas:
find
tiene un%S
especificador de formato que incluso se llama "escasez"fuente
ln -s foo link
"escasez" delink
: 0. Los zócalos y FIFO tienen longitud cero, por lo quefind
muestra la escasez 1.Si
find
no tiene esa opción, un método que funciona en UNIX desde los años 70 es:Que imprimirá el número real de bloques utilizados y el byte más alto jamás escrito. A partir de eso, puede calcular fácilmente cuántos bloques realmente no se han asignado.
fuente
Mientras que
find
's%S
imprimirá una breve salida, para más detalles puede que desee versparsetest
lo que escribí - código abierto, y en github aquí . Siéntase libre de modificarlo si desea imprimir (por ejemplo) cada hoyo.Artículo de blog mostrando problemas con las asignaciones dispersas aquí utilizando
sparsetest
para depurar el problema.fuente
vmtouch -v
imprime el mapa de las áreas en caché en el archivo?lseek
conSEEK_HOLE
ySEEK_DATA
. Fácil de hacer.