¿Cómo saco cuánto tamaño nominal del archivo está realmente lleno de datos? Como vmtouchmuestra 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 -bshy el du -shy los comparan.
files
sparse-files
Vi.
fuente
fuente

filefragpara cualquier sistema de archivos yxfs_bmap -vplpara 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 -efunciona perfectamente en XFS y ext4 al menos. No he probado en otros. Utiliza FIEMAP (extensión-mapa), con un respaldo a FIBMAP. Si esosioctls no funcionan, entonces no será útil.filefragno tiene-eopción.e2fsprogs? Estoy bastante seguro de que no es una característica reciente. También hay una-vopción que imprime la misma información detallada (más algunas líneas de encabezado adicionales). Quizás tufilefragtengas eso. Sinxfs_bmapembargo, 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 quetmpfsno 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:
findtiene un%Sespecificador 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 quefindmuestra la escasez 1.Si
findno 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%Simprimirá una breve salida, para más detalles puede que desee versparsetestlo 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
sparsetestpara depurar el problema.fuente
vmtouch -vimprime el mapa de las áreas en caché en el archivo?lseekconSEEK_HOLEySEEK_DATA. Fácil de hacer.