stringtranslate.com

Enlace duro

En informática , un vínculo físico es una entrada de directorio (en un sistema de archivos basado en directorios ) que asocia un nombre con un archivo . Por lo tanto, cada archivo debe tener al menos un enlace físico. La creación de enlaces duros adicionales para un archivo hace que el contenido de ese archivo sea accesible a través de rutas adicionales (es decir, a través de diferentes nombres o en diferentes directorios). [1] Esto provoca un efecto de alias : un proceso puede abrir el archivo por cualquiera de sus rutas y cambiar su contenido. Por el contrario, un enlace suave o "acceso directo" a un archivo no es un enlace directo a los datos en sí, sino más bien una referencia a un enlace físico u otro enlace suave.

Cada directorio es en sí mismo un archivo especial en muchos sistemas, que contiene una lista de nombres de archivos en lugar de otros datos. Por lo tanto, son posibles múltiples enlaces físicos a directorios, lo que podría crear una estructura de directorio circular, en lugar de una estructura ramificada como un árbol . Por ese motivo, algunos sistemas de archivos prohíben la creación de enlaces físicos a directorios.

Los sistemas operativos compatibles con POSIX , como Linux , Android , macOS y la familia Windows NT , [2] admiten múltiples enlaces físicos al mismo archivo, según el sistema de archivos. Por ejemplo, NTFS y ReFS admiten enlaces físicos, [3] mientras que FAT no.

Operación

Una ilustración del concepto de enlace duro

Deje que dos enlaces físicos, denominados "LINK A.TXT" y "LINK B.TXT", apunten a los mismos datos físicos. Un editor de texto abre "LINK A.TXT", lo modifica y lo guarda. Cuando el editor (o cualquier otra aplicación) abre "LINK B.TXT", puede ver los cambios realizados en "LINK A.TXT", ya que ambos nombres de archivo apuntan a los mismos datos. Entonces, desde el punto de vista del usuario, este es un archivo con varios nombres. Editar cualquier nombre de archivo modifica "todos" los archivos; sin embargo, eliminar "cualquier" nombre de archivo excepto el último mantiene el archivo.

Sin embargo, algunos editores, como GNU Emacs , rompen el concepto de enlace físico. Al abrir un archivo para editarlo, por ejemplo, "LINK B.TXT", emacs cambia el nombre de "LINK B.TXT" a "LINK B.TXT~", carga "LINK B.TXT~" en el editor y guarda el contenido modificado. a un "LINK B.TXT" recién creado. Ahora, "LINK A.TXT" y "LINK B.TXT" ya no comparten los mismos datos. (Este comportamiento se puede cambiar usando la variable emacs backup-by-copying).

Se puede crear cualquier número de enlaces físicos a los datos físicos. Para acceder a los datos, un usuario sólo necesita especificar el nombre de cualquier enlace existente; el sistema operativo resolverá la ubicación de los datos reales. Incluso si el usuario elimina uno de los enlaces físicos, los datos seguirán siendo accesibles a través de cualquier otro enlace que quede. Una vez que el usuario elimina todos los enlaces, si ningún proceso tiene el archivo abierto, el sistema operativo libera el espacio en disco que alguna vez ocupó el archivo.

Conteo de referencias

Ilustración simplificada de enlaces físicos en un sistema de archivos típico de Unix. Tenga en cuenta que los archivos "A" y "D" apuntan a la misma entrada de índice en la tabla de inodos del sistema de archivos , lo que hace que su referencia cuente 2.

La mayoría de los sistemas de archivos que admiten enlaces físicos utilizan el recuento de referencias . El sistema almacena un valor entero con cada sección de datos lógicos que representa el número total de enlaces físicos que se han creado para apuntar a los datos. Cuando se crea un nuevo enlace, este valor aumenta en uno. Cuando se elimina un enlace, el valor disminuye en uno. Cuando el contador llega a cero, el sistema operativo libera la sección de datos lógicos. (Es posible que el sistema operativo no lo haga de inmediato, por ejemplo, cuando hay identificadores de archivos pendientes abiertos, por razones de rendimiento o para habilitar el comando de recuperación ).

Este es un método simple para que el sistema de archivos rastree el uso de un área de almacenamiento determinada, ya que los valores cero indican espacio libre y los valores distintos de cero indican espacio utilizado. El mantenimiento de este valor garantiza que no habrá enlaces duros colgando que apunten a ninguna parte. La sección de datos y el inodo asociado se conservan siempre que un único enlace físico (referencia de directorio) apunte a ella o cualquier proceso mantenga abierto el archivo asociado.

En sistemas operativos compatibles con POSIX , el recuento de referencias de un archivo o directorio lo devuelven las llamadas al sistema stat() o fstat() en el st_nlinkcampo de struct stat.

Limitaciones

Para evitar bucles en el sistema de archivos y mantener coherente la interpretación del " .." archivo (directorio principal), los sistemas operativos generalmente no permiten enlaces físicos a directorios. UNIX System V los permitía, pero sólo el superusuario tenía permiso para realizar dichos enlaces. [4] Mac OS X v10.5 (Leopard) y versiones posteriores utilizan enlaces físicos en directorios únicamente para el mecanismo de copia de seguridad de Time Machine . [5]

Sólo se pueden crear enlaces duros a archivos en el mismo volumen, es decir, dentro del mismo sistema de archivos. (Diferentes volúmenes pueden tener diferentes sistemas de archivos. No hay garantía de que el sistema de archivos del volumen de destino sea compatible con la vinculación física).

El número máximo de enlaces físicos a un único archivo está limitado por el tamaño del contador de referencias. En sistemas tipo Unix, el contador es 4.294.967.295 (en máquinas de 32 bits) o 18.446.744.073.709.551.615 (en máquinas de 64 bits). En algunos sistemas de archivos, la cantidad de enlaces físicos está limitada más estrictamente por su formato en el disco. Por ejemplo, a partir de Linux 3.11, el sistema de archivos ext4 limita el número de enlaces físicos de un archivo a 65.000. [6] Los límites de Windows imponen un límite de 1024 enlaces físicos a un archivo en volúmenes NTFS . [7]

En Linux Weekly News , Neil Brown criticó los enlaces físicos por considerarlos de alto mantenimiento, ya que complican el diseño de programas que manejan árboles de directorios, incluidos archivadores y herramientas de uso de disco. Estas aplicaciones deben tener cuidado de eliminar los duplicados de archivos que están vinculados varias veces en una jerarquía . Brown señala que el Plan 9 de Bell Labs , el sucesor previsto de Unix, no incluye el concepto de enlace físico. [8]

Soporte de plataforma

Windows NT 3.1 y versiones posteriores admiten enlaces físicos en el sistema de archivos NTFS . [9] Windows 2000 introduce una CreateHardLink()función para crear enlaces físicos, pero sólo para archivos, no para directorios. [10] La DeleteFile()función puede eliminarlos.

Para crear un vínculo físico en Windows, los usuarios finales pueden usar:

Para interrogar a un archivo por sus enlaces físicos, los usuarios finales pueden utilizar:

La Tienda de componentes de Windows utiliza enlaces físicos para realizar un seguimiento de las diferentes versiones de los componentes almacenados en el disco duro.

En sistemas tipo Unix , la link() llamada al sistema puede crear enlaces físicos adicionales a archivos existentes. Para crear enlaces físicos, los usuarios finales pueden utilizar:

Para interrogar a un archivo por sus enlaces físicos, los usuarios finales pueden utilizar:

El software de compatibilidad o emulación similar a Unix que se ejecuta en Microsoft Windows, como Cygwin y Subsystem for UNIX-based Applications , permite el uso de interfaces POSIX.

OpenVMS admite enlaces físicos en el sistema de archivos ODS-5 . [15] A diferencia de Unix, VMS puede crear enlaces físicos a directorios.

Ver también

Referencias

  1. ^ Lanzador, Lew. "Preguntas y respuestas: la diferencia entre enlaces duros y blandos".
  2. ^ "Extensión de enlace Shell".
  3. ^ "Descripción general del sistema de archivos resistente (ReFS)". Microsoft aprende . 26 de octubre de 2022: a través de Microsoft Docs .
  4. ^ Bach, Maurice J. (1986). El diseño del sistema operativo UNIX . Prentice Hall. pag. 128.ISBN _ 9780132017992.
  5. ^ Pond, James (31 de agosto de 2013). "Cómo la máquina del tiempo hace su magia". Almacén de eventos del sistema de archivos, vínculos físicos . Consultado el 19 de mayo de 2019 .
  6. ^ "Árbol de fuentes del kernel de Linux, fs/ext4/ext4.h, línea 229".
  7. ^ "Función CreateHardLinkA (winbase.h)". Desarrollo de aplicaciones para Windows . 13 de octubre de 2021: a través de Microsoft Docs .
  8. ^ Brown, Neil (23 de noviembre de 2010). "Fantasmas del pasado de Unix, parte 4: diseños de alto mantenimiento". Noticias semanales de Linux . Consultado el 20 de abril de 2014 .
  9. ^ "Cómo funcionan los enlaces físicos". Documentos de Microsoft .
  10. ^ "Función CreateHardLink". Desarrollo de Windows . Microsoft . 10 de marzo de 2011. Archivado desde el original el 2 de julio de 2011, vía MSDN . Establece un vínculo físico entre un archivo existente y un archivo nuevo. Esta función sólo es compatible con el sistema de archivos NTFS y sólo para archivos, no para directorios.{{cite web}}: Mantenimiento CS1: URL no apta ( enlace )
  11. ^ ab "Enlace duro Fsutil". Desarrollo de aplicaciones para Windows . Microsoft . 18 de abril de 2012: a través de Microsoft Docs.
  12. ^ "Mklink". Documentos de Microsoft . Microsoft . 18 de abril de 2012.
  13. ^ ab "Nuevo elemento (PowerShell 3.0)". Documentos de Microsoft . Microsoft . 22 de junio de 2020. Si su ubicación está en una unidad FileSystem, se permiten los siguientes valores: Si su ubicación está en una unidad FileSystem, se permiten los siguientes valores: Archivo[,] Directorio[,] Unión[,] HardLink
  14. ^ ab "FileSystemProvider.cs". PowerShell/repositorio de PowerShell . Microsoft . 20 de noviembre de 2021. Líneas 8139–8234 - vía GitHub .
  15. ^ "Manual del administrador del sistema OpenVMS, Vol. I" (PDF) . VSI. Agosto de 2019 . Consultado el 23 de enero de 2021 .