¿Qué es el algoritmo utiliza comandos de Unix DU para calcular el espacio en disco?
Pregunta
He intentado usar du
para calcular el uso del disco actual en un solo directorio. El tamaño del directorio es de 6 GB y se tomó la siguiente cantidad de tiempo para calcular:
prompt> time du -sh .
6.0G .
real 1m32.405s
user 0m2.053s
sys 0m16.552s
¿Cuál es el algoritmo utiliza comandos de Unix DU para calcular el espacio en disco? ¿Por qué es tan lento? ¿Existe alguna alternativa para el cálculo de espacio en disco de manera más eficiente? La plataforma de invocación es Sun
. El directorio para el que se calculó el tamaño es NFS montado.
Solución
creo que simplemente camina de forma recursiva el directorio, mientras que la suma de los tamaños de los archivos encontrados. Bastante simple, en realidad, pero, por supuesto, se necesita tiempo. Podría ser más rápido si el sistema de archivos hace que estas operaciones más rápido.
Otros consejos
du tiene que enumerar todos los directorios y estadísticas de todos los archivos encontrados de manera que termina con leídos por todo el disco
al obtener los tamaños de los archivos que les resume y cuando termine se imprime la suma
por ejemplo, en este directorio como uno con 2 millones de archivos en el sistema de archivos sshfs:
prompt$ time du -sh .
367G .
real 12m53.093s
user 0m3.848s
sys 0m14.265s
pero debido a la caché para la segunda pasada sólo se necesita:
prompt$ time du -sh .
367G .
real 4m56.875s
user 0m4.136s
sys 0m15.257s
Su velocidad depende de los archivos / directorios cuentan. Si usted tiene un directorio con 6 archivos de 1 GB, que tomará mucho menos tiempo para calcular. Se calcula el tamaño de los archivos en el directorio dado, y de forma recursiva para cada directorio niño.