¿Cuánto espacio necesito para crear un enlace simbólico?

¿Cuánto espacio necesito para crear un enlace simbólico?

Tengo un servidor que contiene 1 TB de espacio. Lo llené al máximo; entonces quise hacer un enlace simbólico. Eliminé un enlace simbólico diferente, pero el servidor aún no estaba contento: decía que no tenía espacio disponible. ¿No despejé suficiente espacio eliminando el último enlace simbólico...?

¿Cuánto espacio necesita un sistema de archivos para reconocer que hay suficiente espacio para crear un enlace simbólico?

Respuesta1

Eso depende. La mayoría de los sistemas de archivos asignan datos en bloques de algunos kilobytes, por lo que uno podría imaginar que cualquier enlace simbólico cabe en un solo bloque. Pero luego está la cuestión de otros metadatos del sistema de archivos, que dependen del sistema de archivos.


En ext4 (y sistemas de archivos similares) específicamente:

Un archivo pequeño requiere un inodo, un bloque de datos y espacio para la entrada del directorio en el directorio que contiene el archivo. Los enlaces simbólicos cortos pueden almacenarse completamente dentro del inodo, por lo que es posible que no necesiten ningún bloque de datos. (IIRC el límite es de alrededor de 60 bytes).

La eliminación de un enlace simbólico libera el inodo y libera el espacio utilizado por la entrada del directorio, así como el bloque de datos, si se utilizó alguno. Hay algunos casos en los que esto podría no ser suficiente para un nuevo enlace simbólico:

  • Si el nuevo enlace simbólico se creara en un directorio diferente, es posible que ese nuevo directorio no tenga espacio para la nueva entrada del directorio y, si no hay bloques de datos libres, el directorio no se puede ampliar.
  • De manera similar, si el nuevo enlace simbólico se creara en el mismo directorio pero con un nombre más largo, el directorio podría quedarse sin espacio.
  • Si el enlace simbólico antiguo era lo suficientemente corto como para almacenarse completamente en el inodo, pero el nuevo enlace sería lo suficientemente largo como para requerir un bloque de datos, el nuevo enlace simbólico no se puede crear si no hay bloques de datos libres en los sistemas de archivos.

Quedarse sin inodos no debería ser un problema, ya que el enlace simbólico eliminado necesariamente habría usado exactamente un inodo, y un nuevo enlace simbólico requerirá exactamente un inodo.

Respuesta2

El nuevo enlace era más grande que el anterior.

ls -lmostrará cuántos bytes tiene ese enlace simbólico y cuanto más larga sea la ruta, más bytes se necesitarán.

Es aproximadamente la cantidad de bytes en la ruta completa al archivo/directorio de destino. Un enlace a "/var/www/html" tiene 13 bytes usando ext4 en Debian 10. Depende del sistema de archivos.

También podrías quedarte sin inodos.

información relacionada