Visualización del tamaño del archivo asignado frente al tamaño del archivo informado por el sistema de archivos
Puede mostrar el tamaño de archivo asignado es decir, cuánto espacio de disco test.txt
ocupa en el sistema de archivos, con este comando:
du -h test.txt
En cambio, el tamaño del archivo reportado por el sistema de archivos puede coincidir o no con el tamaño del archivo asignado. Para mostrarlo, utilice este comando:
ls -l test.txt
(Puede utilizar ls -lh test.txt
en su lugar si prefiere que el tamaño del archivo sea más legible).
Archivos dispersos
¿Cómo es que test.txt
ocupa sólo 4KB de espacio en disco, pero el sistema de archivos informa que su tamaño es de 5GB?
Esta es una funcionalidad inteligente que ofrecen (la mayoría) de los sistemas de archivos: en lugar de gastar tiempo y espacio en disco para crear un archivo que no contiene datos, es más eficiente crear un archivo vacío, establecer sus metadatos para informar de 5BG de tamaño, y sólo asignar espacio en disco cuando se añaden datos reales al archivo.
Y eso es lo que el -n
opción de mkfile
es todo:
-
Si utiliza mkfile -n
creará un archivo disperso, que es algo similar a comprar un billete de tren sin reservar asiento . La compañía de trenes no le reservará ningún asiento (es decir, no se le asignará ningún asiento).
-
Sin embargo, si utiliza mkfile
sin el -n
opción, por ejemplo:
mkfile 5g test.txt
se creará el archivo y se asignarán 5GB, de forma similar a comprar un billete de tren y reservar un asiento El asiento está reservado para usted y nadie más que usted puede utilizarlo (es decir, el asiento está asignado).
Resumiendo, al crear un archivo, el espacio en disco puede ser cualquiera:
- ser asignado (es decir, reservado en el sistema de archivos para que ningún otro archivo pueda utilizarlo) lo que, por ejemplo, puede ayudar a evitar que el archivo se fragmente
- o, alternativamente, puede solicitar que no se asigne el espacio en disco, lo que creará un archivo disperso. Un archivo disperso es eficiente, porque sólo ocupa espacio en disco cuando contiene datos.
Como señala nohillside en su comentario, puede "llenar" el archivo disperso con datos utilizando dd
por ejemplo:
dd if=/dev/zero of=test.txt bs=1024k count=5120
para que el tamaño del archivo asignado y el tamaño del archivo informado por el sistema de archivos coincidan.
Para más información sobre los archivos dispersos, consulte: https://en.wikipedia.org/wiki/Sparse_file .