GNU/Linux >> Tutoriales Linux >  >> Linux

¿Qué son los archivos dispersos en Linux?

¿Alguna vez ha observado una diferencia en el uso del disco de algún archivo al usar los comandos du y ls? Por ejemplo:

$ du -sh /u02/ticoprd/redo/*
515M redo1a.rdo
524M redo3b.rdo
518M redo4a.rdo
$ ls -ltrh /u02/ticoprd/redo/*
-rw-r----- 1 oticoprd dba 1.1G Aug 4 01:09 redo1a.rdo
-rw-r----- 1 oticoprd dba 1.1G Aug 4 02:32 redo3b.rdo
-rw-r----- 1 oticoprd dba 1.1G Aug 4 03:51 redo4a.rdo

Podemos ver que el comando "ls" muestra que el tamaño del archivo es de 1,1 GB, mientras que el tamaño del archivo del comando "du" es de solo 515 MB. Estos archivos son archivos dispersos. "ls" muestra el tamaño aparente del archivo y "du" muestra el tamaño real del archivo que reside en el disco.

Un archivo disperso es un tipo de archivo de computadora que intenta usar el espacio del sistema de archivos de manera más eficiente cuando los bloques asignados al archivo están en su mayoría vacíos. Esto se logra escribiendo información breve (metadatos) que representan los bloques vacíos en el disco en lugar del espacio "vacío" real que constituye el bloque, utilizando menos espacio en el disco (es decir, los archivos dispersos contienen bloques de ceros cuya existencia se registra, pero no tienen espacio asignado en el disco). El tamaño de bloque completo se escribe en el disco como el tamaño real solo cuando el bloque contiene datos "reales" (no vacíos).

Al leer archivos dispersos, el sistema de archivos convierte de forma transparente los metadatos que representan bloques vacíos en bloques "reales" llenos de cero bytes en tiempo de ejecución. La aplicación no es consciente de esta conversión. Los archivos dispersos se usan comúnmente para imágenes de disco, instantáneas de bases de datos, archivos de registro, etc.

La ventaja de los archivos dispersos es que el almacenamiento solo se asigna cuando realmente se necesita:se ahorra espacio en disco y se pueden crear archivos grandes incluso si no hay suficiente espacio libre en el sistema de archivos.

Las desventajas son que los archivos dispersos pueden fragmentarse. Los informes de espacio libre del sistema de archivos pueden ser engañosos y copiar un archivo disperso con un programa que no los admita explícitamente puede copiar todo el tamaño del archivo sin comprimir, incluidas las secciones dispersas, en su mayoría cero, que no están en el disco, lo que hace que se pierdan los beneficios. de la propiedad dispersa en el archivo.

Podemos ver este comportamiento con el archivo /var/log/lastlog.

# ls -lh /var/log/lastlog
-rw-r--r--. 1 root root 144K Sep 8 22:45 /var/log/lastlog
# du -sh /var/log/lastlog
40K /var/log/lastlog 

Creación de un archivo disperso

Podemos crear un archivo disperso usando el comando dd:

# dd if=/dev/zero of=sparse_file bs=1 count=0 seek=512M
0+0 records in
0+0 records out
0 bytes (0 B) copied, 0.000381714 s, 0.0 kB/s
# ls -hl sparse_file
-rw-r--r--. 1 root root 512M Sep 9 00:13 sparse_file
# du -sh sparse_file
0 sparse_file

Para ver el uso del disco del archivo con el comando "ls", podemos usar la opción "-s":

# ls -lhs sparse_file
0 -rw-r--r--. 1 root root 512M Sep 9 00:13 sparse_file

Para ver el tamaño aparente del archivo usando "du" podemos usar la opción de tamaño aparente:

# du -h --apparent-size sparse_file
512M sparse_file 

Copiar archivo disperso con el comando "cp"

El 'cp' admite archivos dispersos y es bueno para detectarlo, por lo que basta con ejecutar "cp". Pero cp tiene una opción –sparse=WHEN.

# cp --sparse=always sparse_file sparse_file.2


Linux
  1. Copiar archivos en la terminal de Linux

  2. Mover archivos en la terminal de Linux

  3. Cómo crear archivos dispersos en Linux usando el comando 'dd'

  4. ¿Qué son los archivos /dev/zero y /dev/null en Linux?

  5. ¿Cuál es una buena solución para el etiquetado de archivos en Linux?

Comando Cp en Linux (Copiar archivos)

¿Qué es umask en Linux?

Cómo cambiar el nombre de un archivo (s) en Linux

¿Qué son los inodos en Linux?

¿Qué es el archivo .bashrc en Linux?

Cómo comprimir un archivo en Linux