Un punto de análisis NTFS es un tipo de objeto del sistema de archivos NTFS . Está disponible con NTFS v3.0 que se encuentra en Windows 2000 o versiones posteriores. Los puntos de análisis proporcionan una forma de ampliar el sistema de archivos NTFS. Un punto de análisis contiene una etiqueta de análisis y datos que son interpretados por un controlador de filtro del sistema de archivos identificado por la etiqueta. Microsoft incluye varias etiquetas predeterminadas, entre ellas enlaces simbólicos NTFS , puntos de unión de directorios , puntos de montaje de volumen y sockets de dominio Unix . Además, los puntos de análisis se utilizan como marcadores de posición para los archivos movidos por el Sistema de almacenamiento jerárquico de almacenamiento remoto de Windows 2000. También pueden actuar como enlaces físicos [ cita requerida ] , pero no se limitan a apuntar a archivos en el mismo volumen: pueden apuntar a directorios en cualquier volumen local. La característica [ ¿cuál? ] se hereda de ReFS . [1]
El controlador NTFS-3G de código abierto implementa soporte integrado para los puntos de análisis de tipo enlace, es decir, enlaces simbólicos y puntos de unión. Hay disponible un sistema de filtro de complementos para manejar tipos adicionales de puntos de análisis, lo que permite leer archivos deduplicados en fragmentos, archivos comprimidos por el sistema y archivos de OneDrive . [2]
Un punto de análisis tiene la siguiente estructura general, en formato de estructura C:
struct REPARSE_BUFFER { uint32_t ReparseTag ; uint32_t ReparseDataLength ; uint16_t Reservado ; uint8_t DataBuffer []; // miembro de matriz flexible }
La etiqueta de análisis [3] es exclusiva de cada tipo de punto de análisis. Define a qué controlador de punto de análisis (normalmente un controlador de filtro del sistema de archivos) el administrador de E/S delega el procesamiento. [4] Microsoft proporciona documentación sobre algunos tipos de etiquetas "públicas". [5]
Los puntos de montaje de volumen son similares a los puntos de montaje de Unix , donde la raíz de otro sistema de archivos se adjunta a un directorio. En NTFS, esto permite montar sistemas de archivos adicionales sin necesidad de una letra de unidad independiente (como o ) para cada uno.C:
D:
Una vez que se ha montado un volumen sobre un directorio existente de otro volumen, el contenido que figuraba previamente en ese directorio se vuelve invisible y se reemplaza por el contenido del directorio raíz del volumen montado. [ cita requerida ] El volumen montado aún podría tener su propia letra de unidad asignada por separado. El sistema de archivos no permite que los volúmenes se monten mutuamente. Los puntos de montaje de los volúmenes se pueden configurar para que sean persistentes (se vuelvan a montar automáticamente después de reiniciar el sistema) o no persistentes (se deben volver a montar manualmente después de reiniciar). [ cita requerida ]
Los volúmenes montados pueden utilizar otros sistemas de archivos además de NTFS, posiblemente con sus propias configuraciones de seguridad y reasignación de derechos de acceso de acuerdo con la política del sistema de archivos remoto.
Los nombres sustitutos de los puntos de montaje de volumen utilizan el formato de espacio de nombres NT \??\DeviceName\
. [6] [7] [4] Las uniones generalmente se utilizan \??\<drive>:\
para hacer referencia a un volumen con una letra de controlador existente, mientras que los puntos de montaje de volumen verdaderos se utilizan \??\Volume{<guid>}
para hacer referencia a cualquier volumen. Las rutas UNC no son válidas para las uniones. [8]
Las uniones de directorios se definen utilizando exactamente el mismo mecanismo (y etiqueta de análisis: IO_REPARSE_TAG_MOUNT_POINT
) que los puntos de montaje de volumen. La única diferencia es que sus nombres sustitutos apuntan a un subdirectorio de otro volumen que normalmente ya tiene una letra de unidad. Esta función es conceptualmente similar a los enlaces simbólicos a directorios en Unix , excepto que el destino en NTFS siempre debe ser otro directorio (los sistemas de archivos Unix típicos permiten que el destino de un enlace simbólico sea cualquier tipo de archivo). [4]
Por ejemplo, el directorio C:\exampledir
con un atributo de unión de directorio que contiene un enlace a D:\linkeddir
se referirá automáticamente al directorio D:\linkeddir
cuando una aplicación en modo usuario acceda a él. [9]
Las uniones de directorios (que se pueden crear con el comando MKLINK /J junctionName targetDirectory
y eliminar con RMDIR junctionName
desde un indicador de consola) son persistentes y se resuelven en el lado del servidor, ya que comparten el mismo ámbito de seguridad del sistema local o dominio en el que está montado el volumen principal y las mismas configuraciones de seguridad para su contenido que el contenido del directorio de destino; sin embargo, la unión en sí puede tener configuraciones de seguridad distintas. Desvincular una unión de directorios no elimina los archivos del directorio de destino.
Algunas uniones de directorios se instalan de forma predeterminada en Windows Vista, por compatibilidad con versiones anteriores de Windows, como Documents and Settings
en el directorio raíz de la unidad del sistema, que se vincula al Users
directorio físico en el directorio raíz del mismo volumen. Sin embargo, están ocultas de forma predeterminada y sus configuraciones de seguridad están configuradas de modo que el Explorador de Windows se negará a abrirlas desde dentro del Shell o en la mayoría de las aplicaciones, excepto para el usuario SYSTEM integrado local o el grupo de administradores locales (ambas cuentas de usuario son utilizadas por los instaladores de software del sistema). Esta restricción de seguridad adicional probablemente se haya realizado para evitar que los usuarios encuentren archivos duplicados aparentes en los directorios unidos y los eliminen por error, porque la semántica de las uniones de directorios no es la misma que para los vínculos físicos; el recuento de referencias no se utiliza en los contenidos de destino y ni siquiera en el contenedor referenciado en sí. [ cita requerida ]
Las uniones de directorios son enlaces suaves (persistirán incluso si se elimina el directorio de destino), que funcionan como una forma limitada de enlaces simbólicos (con una restricción adicional en la ubicación del destino), pero es una versión optimizada que permite un procesamiento más rápido del punto de análisis con el que se implementan, con menos sobrecarga que los enlaces simbólicos NTFS más nuevos, y se pueden resolver en el lado del servidor (cuando se encuentran en directorios compartidos remotos). [ cita requerida ]
Los enlaces simbólicos (o enlaces suaves) se introdujeron en Windows Vista. [10] Los enlaces simbólicos se resuelven en el lado del cliente. Por lo tanto, cuando se comparte un enlace simbólico, el destino está sujeto a las restricciones de acceso del cliente y no del servidor. [ cita requerida ]
Los enlaces simbólicos se pueden crear a archivos (creados con MKLINK symLink targetFilename
) o a directorios (creados con MKLINK /D symLinkD targetDirectory
), pero (a diferencia de los enlaces simbólicos de Unix) la semántica del enlace debe proporcionarse con el enlace creado. Sin embargo, el destino no necesita existir o estar disponible cuando se crea el enlace simbólico: cuando se accede al enlace simbólico y se verifica la disponibilidad del destino, NTFS también verifica si tiene el tipo correcto (archivo o directorio); devolverá un error de no encontrado si el destino existente tiene el tipo incorrecto. [ cita requerida ]
También pueden hacer referencia a directorios compartidos en hosts remotos o a archivos y subdirectorios dentro de directorios compartidos: su destino no se monta inmediatamente en el arranque, sino solo temporalmente a pedido mientras se abren con la API OpenFile()
o CreateFile()
. Su definición es persistente en el volumen NTFS donde se crean (todos los tipos de enlaces simbólicos se pueden eliminar como si fueran archivos, utilizando DEL symLink
un símbolo del sistema o un lote). [ cita requerida ]
Los datos de enlace simbólico son similares a los datos de punto de montaje, en el sentido de que ambos utilizan una ruta de espacio de nombres NT. La diferencia es que los enlaces simbólicos aceptan rutas UNC , pero no montajes de Volume{guid}. [8]
El seguimiento de enlaces distribuidos permite a las aplicaciones rastrear archivos, accesos directos de shell o enlaces OLE incluso si se cambiaron de nombre o se movieron a otro volumen dentro de la misma máquina, dominio o grupo de trabajo. [11] El seguimiento se implementa como un servicio del sistema, que utiliza el índice de identificador de objeto (OID) almacenado en un metarchivo . [12] Cuando la aplicación solicita un seguimiento a un archivo o directorio, el servicio de seguimiento crea la entrada OID, que apunta al archivo, y la operación de cambio de nombre, copia o movimiento de archivo a un volumen NTFS v3 también copia el ID del objeto. Esto permite que el servicio de seguimiento encuentre eventualmente el archivo de destino.
Cuando hay varios directorios que tienen archivos diferentes pero similares, algunos de estos archivos pueden tener contenido idéntico. El almacenamiento de instancia única , que se encuentra en Windows Server 2000 a Windows Storage Server 2008, permite fusionar archivos idénticos en un solo archivo y crear referencias a ese archivo fusionado. SIS consta de un filtro de sistema de archivos que administra copias, modificaciones y fusiones a archivos; y un servicio de espacio de usuario (o groveler ) que busca archivos que son idénticos y necesitan ser fusionados. SIS fue diseñado principalmente para servidores de instalación remota, ya que estos pueden tener múltiples imágenes de instalación que contienen muchos archivos idénticos; SIS permite que estos se consoliden pero, a diferencia de, por ejemplo, los vínculos duros, cada archivo permanece distinto; los cambios en una copia de un archivo dejarán los demás inalterados. Esto es similar a la copia en escritura , que es una técnica por la cual la copia de memoria no se realiza realmente hasta que se modifica una copia. [13]
Desde Windows Server 2012, existe un nuevo mecanismo de deduplicación de datos basado en fragmentos (etiqueta 0x80000013) que permite deduplicar archivos con contenido similar siempre que tengan fragmentos de datos idénticos. [2] Este mecanismo es más potente que SIS. [14] Desde Windows Server 2019, la función es totalmente compatible con ReFS. [15]
La gestión de almacenamiento jerárquico es un medio para transferir archivos que no se utilizan durante un período de tiempo a medios de almacenamiento menos costosos. Cuando se accede al archivo la próxima vez, el punto de análisis de ese archivo determina que es necesario y lo recupera del almacenamiento. [ cita requerida ]
NSS era una tecnología de almacenamiento de documentos ActiveX que Microsoft ya no utiliza. [ cita requerida ] Permitía que los documentos ActiveX se almacenaran en el mismo formato multisecuencia que ActiveX utiliza internamente. Se cargaba un filtro de sistema de archivos NSS y se utilizaba para procesar las múltiples secuencias de forma transparente para la aplicación y, cuando el archivo se transfería a un volumen de disco con formato distinto a NTFS, también transfería las múltiples secuencias a una sola secuencia. [16]
Con la versión 17063 de Windows 10 (versión de lanzamiento estable 1803), Microsoft introdujo los sockets de dominio Unix en Windows. Estos se implementan mediante el uso del controlador de kernel afunix.sys y un nuevo punto de análisis en el sistema de archivos. Los sockets de dominio Unix son comunes en los sistemas BSD y Linux y pueden considerarse el estándar para la comunicación entre procesos en estos sistemas; por lo tanto, su introducción en Windows permitirá la adopción simplificada de código y la portabilidad entre plataformas. [17]
Windows 10 introduce algoritmos de compresión CompactOS de solo lectura para el sistema de archivos NTFS, tomados de Windows Imaging Format (WIM); están diseñados para comprimir archivos del sistema de Windows y reducir el uso del espacio en disco. [18]
Internamente, el archivo comprimido se registra como un punto de análisis con la etiqueta IO_REPARSE_TAG_WOF (0x80000017), donde WoF significa Windows Overlay Filter, [19] y los datos reales se almacenan en un flujo de datos alternativo llamado "WofCompressedData", que es procesado por el filtro del sistema de archivos WOF . [20] [21] [2]
CompactOS es una variante mejorada de WIMBoot de Windows 8.1 , donde los archivos del sistema se pueden almacenar en una imagen WIM comprimida en una partición de disco oculta , [22] y el controlador de filtro WOF descomprimiría el contenido del archivo de ese archivo WIM; el uso de flujos de datos alternativos en lugar de imágenes WIM de solo lectura permite a CompactOS volver a comprimir los archivos del sistema cuando necesitan ser reescritos con una versión actualizada. [23]
OneDrive etiqueta los archivos y directorios que ha descargado en el almacenamiento local como un punto de análisis con la etiqueta 0x9000001a. Los datos reales se almacenan normalmente. [2]
Stuxnet , como parte de su serie de exploits Win32, utiliza puntos de unión NTFS como parte de su modo general de operación. [ cita requerida ]