En esta práctica del módulo de Sistemas Operativos Monopuesto, profundizaremos en el funcionamiento de los enlaces en entornos GNU/Linux y su equivalente en Windows. Aprenderemos a crear, gestionar y diferenciar empíricamente los enlaces duros (Hard Links) frente a los enlaces simbólicos (Soft/Symbolic Links), comprobando el comportamiento del sistema operativo al eliminar el fichero original en ambos escenarios.
Objetivo:
Crear enlaces duros y simbólicos mediante comandos de consola, analizar sus inodos y metadatos asociados, y comprobar cómo reacciona el sistema ante la eliminación del archivo origen en cada caso.
Escenario:
- Un equipo con sistema operativo GNU/Linux o terminal de comandos en Windows.
- Acceso a la consola con privilegios de usuario estándar.
Instrucciones:
Opción A: Entorno GNU/Linux (Uso de ln y ln -s)
- Creación del fichero original y consulta de inodos:
- Abre una terminal y crea un directorio de prácticas:
mkdir practica_enlaces && cd practica_enlaces - Crea un archivo de texto original con contenido:
echo "Contenido del archivo original" > original.txt - Consulta el número de inodo y el contador de enlaces duros del archivo ejecutando:
ls -li original.txt
- Abre una terminal y crea un directorio de prácticas:
- Creación de enlaces duros y simbólicos:
- Enlace Duro: Crea un enlace duro apuntando al fichero original (sin parámetros adicionales):
ln original.txt enlace_duro.txt - Enlace Simbólico: Crea un enlace simbólico (suave) utilizando el parámetro
-s:ln -s original.txt enlace_simbolico.txt - Vuelve a listar los inodos y comprueba los cambios en el contador de enlaces duros ejecutando:
ls -li *.txt
- Enlace Duro: Crea un enlace duro apuntando al fichero original (sin parámetros adicionales):
- Borrado del archivo original y comprobación:
- Elimina el archivo original:
rm original.txt - Prueba a leer el contenido del enlace duro:
cat enlace_duro.txt(¿Sigue mostrando el texto original?). - Prueba a leer el contenido del enlace simbólico:
cat enlace_simbolico.txt(¿Qué mensaje de error devuelve el sistema?).
- Elimina el archivo original:
Opción B: Entorno Windows (Uso de mklink)
- Creación de enlaces en la consola de Windows:
- Abre el Símbolo del sistema (CMD) o PowerShell como administrador.
- Crea un archivo de texto original:
echo Datos originales Windows > original.txt - Creación de Enlace Duro (Hard Link): Utiliza el comando
mklink /H:mklink /H duro.txt original.txt - Creación de Enlace Simbólico (Symbolic Link): Utiliza el comando
mklink:mklink simbolico.txt original.txt - Borra el archivo original (
del original.txt) y comprueba el acceso en ambos enlaces al igual que en Linux.
Verificación
- Comprueba que has creado con éxito ambos tipos de enlaces mediante los comandos correspondientes (
ln/mklink). - Verifica que el enlace duro comparte exactamente el mismo número de inodo que el archivo original.
- Confirma que tras borrar el fichero origen, el enlace duro mantiene intacto el acceso a los datos, mientras que el enlace simbólico se rompe (puntero huérfano).
Preguntas de reflexión:
- ¿Por qué un enlace duro (Hard Link) permite acceder al contenido del archivo incluso después de borrar el fichero original, y qué relación guarda esto con la tabla de inodos y el contador de enlaces?
- ¿Qué es un enlace simbólico roto (broken symbolic link) y por qué ocurre este fenómeno cuando se elimina o se cambia de ruta el archivo o directorio de origen?
- ¿Qué limitaciones técnicas importantes tienen los enlaces duros en comparación con los enlaces simbólicos (por ejemplo, restricciones entre particiones distintas o sistemas de archivos diferentes)?
Haz clic aquí para ver la solución orientativa
1. ¿Por qué un enlace duro permite acceder al contenido del archivo incluso después de borrar el fichero original?
Un enlace duro no es un acceso directo ni un archivo independiente, sino una nueva entrada de directorio que apunta exactamente al mismo número de inodo que el archivo original.
El inodo almacena los punteros físicos a los bloques de datos en el disco. Cuando borramos el archivo original, el sistema operativo simplemente decrementa el contador de referencias (hard link count) del inodo en uno; como el enlace duro sigue apuntando a ese mismo inodo, los datos físicos no se eliminan y siguen siendo totalmente accesibles hasta que se borren todas las referencias existentes.
2. ¿Qué es un enlace simbólico roto y por qué ocurre cuando se elimina el archivo o directorio de origen?
Un enlace simbólico (Soft Link) actúa como un acceso directo lógico: es un archivo especial que contiene exclusivamente la ruta de texto que apunta al nombre del archivo de origen.
Si se borra el archivo original, la ruta de destino deja de existir en el sistema de archivos. Por tanto, el enlace simbólico se convierte en un enlace roto (broken link) porque sigue apuntando a una ruta que ya no contiene datos válidos, devolviendo un error de archivo no encontrado al intentar leerlo.
3. ¿Qué limitaciones técnicas importantes tienen los enlaces duros en comparación con los enlaces simbólicos?
Los enlaces duros presentan dos restricciones fundamentales por diseño:
- No pueden cruzar particiones o sistemas de archivos diferentes: Como los inodos son únicos y pertenecen exclusivamente a la tabla de una partición específica (ej. ext4 o NTFS), un enlace duro no puede apuntar a un inodo situado en otro disco o volumen lógico.
- No pueden apuntar a directorios: Está prohibido crear enlaces duros de carpetas para evitar bucles infinitos en los árboles de búsqueda del sistema de archivos. Los enlaces simbólicos, en cambio, superan ambas limitaciones sin problemas.