¡Las NTFS Junctions existen! A pesar de que Garmin diga lo contrario

Muchos usuarios siguen pensando que C: es su primer disco duro y D: su segundo o su unidad de CD/DVD/BluRay. Alguno hay que dice que eso no es del todo así, que en realidad son particiones y no necesariamente unidades físicas. ¿Estáis pensando eso? Pues casi… pero no.

La fuerza de lo cotidiano

En la mayoría de los entornos domésticos los ordenadores tenían un único disco duro y ese disco duro sólo tenía solamente una partición, que por convención obtiene el nombre de C:. Observad que todo esto es simplemente por costumbre y convención, no hay nada que impida que la gente tenga múltiples discos con múltiples particiones y que la primera partición se llame J:. Sin embargo, esto se hizo tan cotidiano que muchos usuarios y desarrolladores se han olvidado de que puede haber otros entornos.

Lo que ocurre ahora

Muchos sistemas de escritorio actuales disponen de dos o más discos físicos. Uno SSD de capacidad reducida en el que se suele incluir el SSOO y uno, o varios, discos tradicionales para el resto de los datos. Con una instalación tradicional esto significaría que el disco SSD es C: y el otro disco duro tradicional D:

He escuchado a muchos desarrolladores quejarse de esto hablando de “limitaciones del SSOO” ya que si instalan Windows en su SSD para que todo vaya más rápido, se llena muy rápidamente ya que %WinDir%, %ProgramData% y otros tantos directorios están siempre en C:. Una queja común es que Visual Studio instala un montón de ficheros en C: independientemente de dónde le digamos que se instale.

Estas supuestas limitaciones no son tales y tenemos varias herramientas para solucionarlo.

NTFS Junctions

Supongamos que tenemos un disco SSD, C: y un disco tradicional de mayor capacidad D:. %ProgramFiles% está en C: pero queremos que el programa A que usamos pocas veces esté en D:. Podríamos instalarlo directamente en D:, pero se nos empezaría a complicar la forma de hacer copias de seguridad.

Gracias a las NTFS Junctions podemos hacer que un directorio apunte a otro, que puede estar en la misma partición o en otra, local o remota. En este caso podemos hacer que el directorio del programa A dentro de %ProgramFiles% apunte a otro directorio de la partición D:

Podríamos hacer lo mismo para los directorios que crea Visual Studio en C: o cualquier otro programa.

NTFS Mount Points

En algunas ocasiones no necesitamos tener tanta flexibilidad sobre que directorios mapean a que otras unidades, sino que necesitamos más espacio en un directorio en concreto. Un caso frecuente es que tengamos demasiados programas instalados en nuestro SSD y queremos que todo %ProgramFiles% mapee a un segundo disco duro con más espacio.

NTFS Mount Points nos permite hacer que una partición, en vez de mapear a una nueva unidad, por ejemplo D:, lo haga a un directorio de una partición existente.

¿Esto realmente se usa?

La semana pasada intenté actualizar los mapas de mi Garmin. Ocupan bastante y no quería llenar mi disco SSD, así que cree un NTFS Junction desde la carpeta que crea Garmin en %ProgramData%, que normalmente estaría en mi SSD a mi tercer disco duro E:, donde tengo mucho espacio libre.

Sin embargo, Garmin me mostró esto al intentar descargar los mapas:

garmin fail

El instalador ha asumido que dado que la ruta incluye C:, el espacio en esa ruta es igual al de la unidad, cuando en realidad sería el de la unidad E:.

Estas cosas se usan… menos de lo que sería deseable porque quizá estas opciones no sean conocidas como nos gustaría, pero sí se usan. La próxima vez que estés calculando el espacio disponible ¡no asumas que es igual al de la unidad!

¿Y cómo creo un NTFS Junction?

Puedes crearlas con Junction, una utilidad que se encuentra dentro del paquete Sysinternals de Russinovich.

Por Carballude

Me llamo Pablo Carballude González, soy graduado en computación con master en HCI y Seguridad Informática. Actualmente trabajo para Amazon en Seattle como Software Developer Engineer. Soy de esas personas que no saben si los textos autobiográficos deben ser en primera o tercera persona. Lo intenté en segunda, pero no le entendí nada :P

1 comentario

  1. Pingback: Bitacoras.com

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *