NT File System ( NTFS ) (comúnmente llamado New Technology File System ) es un sistema de archivos de registro propietario desarrollado por Microsoft en la década de 1990. [11] [12] [2]
Fue desarrollado para superar la escalabilidad, seguridad y otras limitaciones con FAT . [13] NTFS agrega varias características de las que carecen FAT y HPFS , incluyendo: listas de control de acceso (ACL); cifrado del sistema de archivos; compresión transparente; archivos dispersos ; registro del sistema de archivos y copia de sombra de volumen , una característica que permite realizar copias de seguridad de un sistema mientras está en uso.
A partir de Windows NT 3.1 , es el sistema de archivos predeterminado de la familia Windows NT , reemplazando al sistema de archivos de la Tabla de asignación de archivos (FAT). [14] La compatibilidad de lectura/escritura de NTFS está disponible en Linux y BSD utilizando NTFS3 en Linux y NTFS-3G en BSD . [15] [16]
NTFS utiliza varios archivos ocultos para el usuario para almacenar metadatos sobre otros archivos almacenados en la unidad, lo que puede ayudar a mejorar la velocidad y el rendimiento al leer datos. [1]
A mediados de los años 1980, Microsoft e IBM formaron un proyecto conjunto para crear la próxima generación de sistemas operativos gráficos ; el resultado fue OS/2 y HPFS . Debido a que Microsoft no estaba de acuerdo con IBM en muchos temas importantes, finalmente se separaron; OS/2 siguió siendo un proyecto de IBM y Microsoft trabajó para desarrollar Windows NT y NTFS.
El sistema de archivos HPFS para OS/2 contenía varias características nuevas importantes. Cuando Microsoft creó su nuevo sistema operativo, tomó prestados muchos de estos conceptos para NTFS. [17] Los desarrolladores originales de NTFS fueron Tom Miller , Gary Kimura, Brian Andrew y David Goebel. [18]
Probablemente como resultado de esta ascendencia común, HPFS y NTFS utilizan el mismo código de tipo de identificación de partición de disco (07). El uso del mismo Número de registro de identificación de partición es muy inusual, ya que había docenas de números de código sin usar disponibles y otros sistemas de archivos importantes tienen sus propios códigos. Por ejemplo, FAT tiene más de nueve (uno para FAT12 , FAT16 , FAT32 , etc.). Los algoritmos que identifican el sistema de archivos en una partición de tipo 07 deben realizar comprobaciones adicionales para distinguir entre HPFS y NTFS.
Microsoft ha lanzado cinco versiones de NTFS:
El NTFS.sys
número de versión (por ejemplo, v5.0 en Windows 2000) se basa en la versión del sistema operativo; no debe confundirse con el número de versión NTFS (v3.1 desde Windows XP). [22] [23]
Aunque las versiones posteriores de Windows añadieron nuevas características relacionadas con el sistema de archivos, no cambiaron el NTFS en sí. Por ejemplo, Windows Vista implementó los enlaces simbólicos NTFS , el NTFS transaccional , la reducción de particiones y la autorreparación. [24] Los enlaces simbólicos NTFS son una característica nueva en el sistema de archivos; todas las demás son nuevas características del sistema operativo que hacen uso de las características NTFS ya existentes.
NTFS está optimizado para clústeres de 4 KB [a] , pero admite un tamaño máximo de clúster de 2 MB [a] . (Las implementaciones anteriores admiten hasta 64 KB) [6] El tamaño máximo de volumen NTFS que la especificación puede admitir es de 2 64 − 1 clústeres, pero no todas las implementaciones alcanzan este máximo teórico, como se analiza a continuación.
El tamaño máximo de volumen NTFS implementado en Windows XP Professional es de 2 clústeres de 32 − 1 , en parte debido a las limitaciones de la tabla de particiones. Por ejemplo, al usar clústeres de 64 KB, el tamaño máximo de volumen NTFS de Windows XP es de 256 TB menos 64 KB . Al usar el tamaño de clúster predeterminado de 4 KB, el tamaño máximo de volumen NTFS es de 16 TB menos 4 KB. Ambos son mucho más altos que el límite de 128 GB [a] en Windows XP SP1 . El tamaño de una partición en el Registro de arranque maestro (MBR) está limitado a 2 TiB con un disco duro con sectores físicos de 512 bytes, [25] [26] aunque para un sector físico de 4 KiB el límite de tamaño de partición MBR es de 16 TiB. Una alternativa es usar múltiples volúmenes de tabla de particiones GUID (GPT o "dinámicos") para combinarlos para crear un solo volumen NTFS mayor a 2 TiB. Para arrancar desde un volumen GPT a un entorno Windows de una manera compatible con Microsoft, se necesita un sistema con Interfaz de firmware extensible unificada (UEFI) y compatibilidad con 64 bits [b] . [27] Los discos de datos GPT son compatibles con sistemas con BIOS.
El límite teórico máximo de NTFS para el tamaño de los archivos individuales es de 16 EB [a] [28] ( 16 × 1024 6 o 2 64 bytes ) menos 1 KB, lo que suma un total de 18 446 744 073 709 550 592 bytes. Con Windows 10 versión 1709 y Windows Server 2019 , el tamaño máximo de archivo implementado es de 8 PB [a] menos 2 MB o 9 007 199 252 643 840 bytes. [6]
Aunque las distintas versiones de NTFS son en su mayor parte totalmente compatibles con versiones anteriores y posteriores , existen consideraciones técnicas para montar volúmenes NTFS más nuevos en versiones anteriores de Microsoft Windows. Esto afecta al arranque dual y a los discos duros portátiles externos. Por ejemplo, intentar utilizar una partición NTFS con "versiones anteriores" ( Volume Shadow Copy ) en un sistema operativo que no la admita provocará la pérdida del contenido de esas versiones anteriores. [29] Una utilidad de línea de comandos de Windows llamada convert.exe puede convertir sistemas de archivos compatibles a NTFS, incluidos HPFS (solo en Windows NT 3.1, 3.5 y 3.51), FAT16 y FAT32 (en Windows 2000 y posteriores). [30] [31]
FreeBSD 3.2, publicado en mayo de 1999, incluía soporte para NTFS de sólo lectura escrito por Semen Ustimenko. [32] [33] Esta implementación fue trasladada a NetBSD por Christos Zoulas y Jaromir Dolecek y publicada con NetBSD 1.5 en diciembre de 2000. [34] La implementación de NTFS de FreeBSD también fue trasladada a OpenBSD por Julien Bordet y ofrece soporte nativo para NTFS de sólo lectura de forma predeterminada en las plataformas i386 y amd64 a partir de la versión 4.9 publicada el 1 de mayo de 2011. [35] [33][actualizar]
Las versiones del kernel de Linux 2.1.74 y posteriores incluyen un controlador escrito por Martin von Löwis que tiene la capacidad de leer particiones NTFS; [36] las versiones del kernel 2.5.11 y posteriores contienen un nuevo controlador escrito por Anton Altaparmakov ( Universidad de Cambridge ) y Richard Russon que admite la lectura de archivos. [37] [38] [36] La capacidad de escribir en archivos se introdujo con la versión del kernel 2.6.15 en 2006, que permite a los usuarios escribir en archivos existentes pero no permite la creación de nuevos. [39] El controlador NTFS de Paragon (ver más abajo) se ha fusionado con la versión del kernel 5.15, y admite lectura/escritura en archivos normales, comprimidos y dispersos, así como reproducción de diario. [40]
NTFS-3G es una implementación de NTFS de FUSE con licencia GPL gratuita que fue desarrollada inicialmente como un controlador de kernel de Linux por Szabolcs Szakacsits. Fue reescrita como un programa de FUSE para funcionar en otros sistemas que FUSE admite, como macOS , FreeBSD, NetBSD, OpenBSD , [41] Solaris, QNX y Haiku [42] y permite leer y escribir en particiones NTFS. Los desarrolladores de NTFS-3G también tienen disponible una versión comercial de rendimiento mejorado de NTFS-3G, llamada " Tuxera NTFS for Mac". [43]
Captive NTFS , un controlador "encapsulado" que utiliza el controlador propio de Windows ntfs.sys , existe para Linux. Fue creado como un programa de sistema de archivos en el espacio de usuario (FUSE) y publicado bajo la licencia GPL, pero el trabajo en Captive NTFS cesó en 2006. [44]
Las versiones del kernel de Linux 5.15 en adelante incorporan NTFS3, un controlador de lectura y escritura NTFS totalmente funcional que funciona en versiones NTFS hasta 3.1 y es mantenido principalmente por Paragon Software Group .
Mac OS X 10.3 incluía la implementación de NTFS de solo lectura de Ustimenko de FreeBSD. Luego, en 2006, Apple contrató a Anton Altaparmakov para escribir una nueva implementación de NTFS para Mac OS X 10.6 . [45] El soporte nativo de escritura NTFS está incluido en 10.6 y posteriores, pero no está activado de forma predeterminada, aunque existen soluciones alternativas para habilitar la funcionalidad. Sin embargo, los informes de los usuarios indican que la funcionalidad es inestable y tiende a causar pánicos del kernel . [46]
Paragon Software Group vende un controlador de lectura y escritura llamado NTFS para Mac , [47] que también está incluido en algunos modelos de discos duros Seagate . [48]
El paquete NetDrive para OS/2 (y derivados como eComStation y ArcaOS ) admite un complemento que permite el acceso de lectura y escritura a volúmenes NTFS. [49] [50]
Existe un controlador de lectura/escritura gratuito para uso personal de MS-DOS creado por Avira llamado "NTFS4DOS". [51] [52]
Ahead Software desarrolló un controlador "NTFSREAD" (versión 1.200) para DR-DOS 7.0x entre 2002 y 2004. Fue parte de su software Nero Burning ROM .
NTFS utiliza listas de control de acceso y cifrado a nivel de usuario para ayudar a proteger los datos del usuario.
En NTFS, a cada archivo o carpeta se le asigna un descriptor de seguridad que define su propietario y contiene dos listas de control de acceso (ACL). La primera ACL, llamada lista de control de acceso discrecional (DACL), define exactamente qué tipo de interacciones (por ejemplo, lectura, escritura, ejecución o eliminación) están permitidas o prohibidas por qué usuario o grupo de usuarios. Por ejemplo, los archivos de la C:\Program Files
carpeta pueden ser leídos y ejecutados por todos los usuarios, pero modificados solo por un usuario que tenga privilegios administrativos. [53] Windows Vista agrega información de control de acceso obligatoria a las DACL. Las DACL son el foco principal del Control de cuentas de usuario en Windows Vista y versiones posteriores.
La segunda ACL, llamada lista de control de acceso al sistema (SACL), define qué interacciones con el archivo o carpeta se deben auditar y si deben registrarse cuando la actividad es exitosa, fallida o ambas. Por ejemplo, se puede habilitar la auditoría en archivos sensibles de una empresa, de modo que sus administradores sepan cuándo alguien intenta eliminarlos o hacer una copia de ellos, y si lo logra. [53]
El sistema de cifrado de archivos (EFS) proporciona un cifrado transparente para el usuario de cualquier archivo o carpeta en un volumen NTFS. [54] EFS funciona junto con el servicio EFS, CryptoAPI de Microsoft y la biblioteca de tiempo de ejecución del sistema de archivos EFS (FSRTL). EFS funciona cifrando un archivo con una clave simétrica masiva (también conocida como clave de cifrado de archivos o FEK), que se utiliza porque lleva una cantidad de tiempo relativamente pequeña cifrar y descifrar grandes cantidades de datos que si se utiliza un cifrado de clave asimétrica . La clave simétrica que se utiliza para cifrar el archivo se cifra a continuación con una clave pública que está asociada con el usuario que cifró el archivo, y estos datos cifrados se almacenan en un flujo de datos alternativo del archivo cifrado. Para descifrar el archivo, el sistema de archivos utiliza la clave privada del usuario para descifrar la clave simétrica que está almacenada en el flujo de datos. A continuación, utiliza la clave simétrica para descifrar el archivo. Como esto se hace a nivel del sistema de archivos, es transparente para el usuario. [55] Además, en caso de que un usuario pierda el acceso a su clave, se ha incorporado en el sistema EFS soporte para claves de descifrado adicionales, de modo que un agente de recuperación aún pueda acceder a los archivos si es necesario. El cifrado proporcionado por NTFS y la compresión proporcionada por NTFS son mutuamente excluyentes; sin embargo, se puede utilizar NTFS para uno y una herramienta de terceros para el otro.
El soporte de EFS no está disponible en las versiones Basic, Home y MediaCenter de Windows, y debe activarse después de la instalación de las versiones Professional, Ultimate y Server de Windows o mediante herramientas de implementación empresarial dentro de los dominios de Windows.
NTFS es un sistema de archivos con registro y utiliza el registro NTFS ( $LogFile ) para registrar los cambios de metadatos en el volumen. Es una característica que FAT no proporciona y es fundamental para que NTFS garantice que sus complejas estructuras de datos internas se mantendrán consistentes en caso de fallos del sistema o movimientos de datos realizados por la API de desfragmentación , y permita una fácil reversión de los cambios no confirmados en estas estructuras de datos críticas cuando se vuelva a montar el volumen. Las estructuras afectadas de forma notable son el mapa de bits de asignación de volumen, las modificaciones de los registros MFT como los movimientos de algunos atributos de longitud variable almacenados en los registros MFT y las listas de atributos, y los índices de directorios y descriptores de seguridad .
El formato ( $LogFile ) ha evolucionado a través de varias versiones:
La incompatibilidad de las versiones de $LogFile implementadas por Windows 8 , Windows 10 y Windows 11 impide que Windows 7 (y versiones anteriores de Windows) reconozcan la versión 2.0 de $LogFile . La compatibilidad con versiones anteriores se proporciona degradando $LogFile a la versión 1.1 cuando se desmonta correctamente un volumen NTFS. Se actualiza nuevamente a la versión 2.0 cuando se monta en una versión compatible de Windows. Sin embargo, cuando se hiberna en el disco en el estado de cierre de sesión (también conocido como Arranque híbrido o Arranque rápido, que está habilitado de forma predeterminada), los sistemas de archivos montados no se desmontan y, por lo tanto, los $LogFile de cualquier sistema de archivos activo no se degradan a la versión 1.1. La incapacidad de procesar la versión 2.0 de $LogFile por versiones de Windows anteriores a 8.0 da como resultado una invocación innecesaria de la utilidad de reparación de disco CHKDSK . Esto es particularmente preocupante en un escenario de arranque múltiple que involucra versiones anteriores y posteriores a la 8.0 de Windows, o cuando se mueve con frecuencia un dispositivo de almacenamiento entre versiones anteriores y nuevas. Existe una configuración del Registro de Windows para evitar la actualización automática de $LogFile a la versión más nueva. El problema también se puede solucionar deshabilitando el Arranque híbrido. [56]
El diario USN (Update Sequence Number Journal) es una función de administración del sistema que registra (en $Extend\$UsnJrnl ) los cambios en los archivos, flujos y directorios del volumen, así como sus diversos atributos y configuraciones de seguridad. El diario está disponible para que las aplicaciones realicen un seguimiento de los cambios en el volumen. [57] Este diario se puede habilitar o deshabilitar en volúmenes que no son del sistema. [58]
La función de enlace duro permite que distintos nombres de archivo hagan referencia directa al mismo contenido de archivo. Los enlaces duros pueden vincular únicamente a archivos del mismo volumen, porque cada volumen tiene su propia MFT. Los enlaces duros se incluyeron originalmente para dar soporte al subsistema POSIX en Windows NT. [59]
Aunque los enlaces duros utilizan el mismo registro MFT ( inode ) que registra los metadatos del archivo, como el tamaño del archivo, la fecha de modificación y los atributos, NTFS también almacena en caché estos datos en la entrada del directorio como una mejora del rendimiento. Esto significa que al enumerar el contenido de un directorio utilizando la familia de API FindFirstFile/FindNextFile (equivalentes a las API POSIX opendir/readdir), también recibirá esta información almacenada en caché, además del nombre y el inodo. Sin embargo, es posible que no vea información actualizada, ya que solo se garantiza que esta información se actualice cuando se cierra un archivo, y solo para el directorio desde el que se abrió el archivo. [60] Esto significa que cuando un archivo tiene varios nombres a través de enlaces duros, actualizar un archivo a través de un nombre no actualiza los datos almacenados en caché asociados con el otro nombre. Siempre puede obtener datos actualizados utilizando GetFileInformationByHandle (que es el verdadero equivalente de la función stat de POSIX). Esto se puede hacer usando un controlador que no tenga acceso al archivo en sí (pasando cero a CreateFile para dwDesiredAccess), y cerrar este controlador tiene el efecto incidental de actualizar la información almacenada en caché.
Windows utiliza vínculos físicos para admitir nombres de archivo cortos (8.3) en NTFS. La compatibilidad del sistema operativo es necesaria porque hay aplicaciones antiguas que solo pueden funcionar con nombres de archivo 8.3, pero la compatibilidad se puede deshabilitar. En este caso, se agrega un registro de nombre de archivo y una entrada de directorio adicionales, pero tanto el nombre de archivo 8.3 como el nombre de archivo largo se vinculan y actualizan juntos, a diferencia de un vínculo físico normal.
El sistema de archivos NTFS tiene un límite de 1024 enlaces duros en un archivo. [61]
Los flujos de datos alternativos permiten asociar más de un flujo de datos con un nombre de archivo (una bifurcación ), utilizando el formato "nombre de archivo:nombre de flujo" (por ejemplo, "text.txt:extrastream"). Estos flujos no se muestran a los usuarios ni se pueden editar a través de ninguna aplicación GUI típica integrada en Windows de forma predeterminada, lo que oculta su existencia a la mayoría de los usuarios. Aunque están destinados a metadatos útiles , su naturaleza arcana los convierte en un posible escondite para malware, spyware, historial de navegación invisible y otra información potencialmente no deseada.
Los flujos alternativos no se enumeran en el Explorador de Windows y su tamaño no se incluye en el tamaño del archivo. Cuando el archivo se copia o se mueve a otro sistema de archivos sin compatibilidad con ADS, se advierte al usuario que no se pueden conservar los flujos de datos alternativos. Normalmente, no se proporciona dicha advertencia si el archivo se adjunta a un correo electrónico o se carga en un sitio web. Por lo tanto, el uso de flujos alternativos para datos críticos puede causar problemas. Microsoft proporciona una herramienta descargable llamada Streams [62] para ver los flujos en un volumen seleccionado. A partir de Windows PowerShell 3.0, es posible administrar ADS de forma nativa con seis cmdlets: Add-Content, Clear-Content, Get-Content, Get-Item, Remove-Item, Set-Content. [63]
Internet ExplorerZone.Identifier
y la mayoría de los navegadores añaden un pequeño ADS llamado para marcar los archivos descargados de sitios externos como posiblemente no seguros para ejecutar; el shell local requeriría entonces la confirmación del usuario antes de abrirlos. [64] Cuando el usuario indica que ya no quiere este diálogo de confirmación, este ADS se elimina. Esta funcionalidad también se conoce como " Marca de la Web ". [65] [66] Sin modificaciones profundas en el código fuente, todos los navegadores web basados en Chromium (por ejemplo, Google Chrome ) y Firefox también escriben el flujo en los archivos descargados. A partir de Windows 10, el contenido del flujo se estructura como un archivo INI (es decir, un almacén de clave-valor ) que incluye las claves , , y . Hasta cierto punto, estos son campos definidos por la implementación, pero normalmente contienen el nombre de dominio y la URL exacta de la ubicación de descarga en línea original, lo que potencialmente ofrece un método profundamente esotérico de seguimiento del historial de navegación con los riesgos de privacidad concomitantes. [67] Si el archivo descargado es ejecutable (por ejemplo, un instalador), el ADS se puede utilizar para la reflexión , lo que permite al programa identificar de dónde se descargó, lo que ocasionalmente se puede utilizar para fines de telemetría y/o seguridad, mediante los cuales un programa puede intentar verificar que se descargó de una fuente oficial (asumiendo que la transmisión no se ha eliminado o falsificado ) y puede transmitir la información a través de Internet (un ejemplo de esto en acción es el instalador de BiglyBT ).Zone.Identifier
Zone.Identifer
HostIpAddress
HostUrl
ReferrerUrl
Zone
El malware ha utilizado flujos de datos alternativos para ocultar código. [68] Desde finales de la década de 2000, algunos escáneres de malware y otras herramientas especiales buscan flujos de datos alternativos. Debido a los riesgos asociados con ADS, en particular los relacionados con la privacidad y el Zone.Identifier
flujo, existe un software diseñado específicamente para eliminar los flujos de los archivos (ciertos flujos con riesgo percibido o todos ellos) de una manera fácil de usar. [69]
Los flujos NTFS se introdujeron en Windows NT 3.1 para permitir que los Servicios para Macintosh (SFM) almacenen bifurcaciones de recursos . Aunque las versiones actuales de Windows Server ya no incluyen SFM, los productos Apple Filing Protocol (AFP) de terceros (como ExtremeZ-IP de GroupLogic ) aún utilizan esta característica del sistema de archivos.
La compresión se habilita por carpeta o por archivo configurando el atributo 'comprimido'. Cuando se habilita la compresión en una carpeta, cualquier archivo movido o guardado en esa carpeta se comprimirá automáticamente utilizando el algoritmo LZNT1 (una variante de LZ77 ). [70] El algoritmo de compresión está diseñado para admitir tamaños de clúster de hasta 4 KB; cuando el tamaño del clúster es mayor a 4 KB en un volumen NTFS, la compresión NTFS no está disponible. [71] Los datos se comprimen en fragmentos de 16 clústeres (hasta 64 KB de tamaño); si la compresión reduce 64 KB de datos a 60 KB o menos, NTFS trata las páginas innecesarias de 4 KB como clústeres de archivos dispersos vacíos : no se escriben. Esto permite tiempos de acceso aleatorio razonables ya que el sistema operativo simplemente tiene que seguir la cadena de fragmentos.
La compresión funciona mejor con archivos que tienen contenido repetitivo, rara vez se escriben, se accede a ellos de forma secuencial y no están comprimidos. Los sistemas de un solo usuario con espacio limitado en el disco duro pueden beneficiarse de la compresión NTFS para archivos pequeños, de 4 KB a 64 KB o más, según la compresibilidad. Los archivos de menos de aproximadamente 900 bytes se almacenan dentro de la entrada de directorio de la MFT. [72]
Los usuarios de procesadores multinúcleo rápidos notarán mejoras en la velocidad de las aplicaciones al comprimir sus aplicaciones y datos, así como una reducción en el espacio utilizado. Incluso cuando los controladores SSD ya comprimen datos, todavía hay una reducción en las E/S, ya que se transfieren menos datos. [73]
Según una investigación del equipo de desarrollo NTFS de Microsoft, un tamaño máximo razonable para un archivo comprimido en un volumen NTFS con un tamaño de clúster (bloque) de 4 KB (predeterminado) es de entre 50 y 60 GB . Este tamaño máximo razonable disminuye drásticamente para volúmenes con tamaños de clúster más pequeños. [74]
Los archivos comprimibles de gran tamaño se fragmentan en gran medida ya que cada fragmento menor a 64 KB se convierte en un fragmento. [74] [75] La memoria flash, como las unidades SSD , no tienen los retrasos en el movimiento del cabezal ni el alto tiempo de acceso de las unidades de disco duro mecánicas , por lo que la fragmentación solo tiene una penalización menor.
Si los archivos del sistema que se necesitan en el momento del arranque (como controladores, NTLDR, winload.exe o BOOTMGR) están comprimidos, el sistema puede no arrancar correctamente, porque los filtros de descompresión aún no están cargados. [76] [ verificación fallida ] Las ediciones posteriores de Windows [ which? ] no permiten comprimir archivos importantes del sistema.
Desde Windows 10 , Microsoft ha introducido un nuevo esquema de compresión de archivos basado en el algoritmo XPRESS con tamaño de bloque 4K/8K/16K [77] y el algoritmo LZX ; [78] ambos son variantes de LZ77 actualizadas con codificación de entropía Huffman y codificación de rango , de las que carecía LZNT1. Estos algoritmos de compresión se tomaron del formato de imágenes de Windows (archivo WIM).
El nuevo esquema de compresión es utilizado por la característica CompactOS, que reduce el uso del disco al comprimir los archivos del sistema de Windows. [79] CompactOS no es una extensión de la compresión de archivos NTFS y no utiliza el atributo 'comprimido'; en su lugar, establece un punto de análisis en cada archivo comprimido con una etiqueta WOF (filtro de superposición de Windows), [80] pero los datos reales se almacenan en un flujo de datos alternativo llamado "WofCompressedData", que se descomprime sobre la marcha mediante un controlador de filtro del sistema de archivos WOF , y el archivo principal es un archivo disperso vacío . [80] Este diseño está pensado puramente para acceso de sólo lectura, por lo que cualquier escritura en archivos comprimidos da como resultado una descompresión automática. [80] [81] [82]
La compresión CompactOS está destinada a los OEM que preparan imágenes de SO con la /compact
bandera de la DISM
herramienta en Windows ADK , [83] pero también se puede activar manualmente por archivo con la /exe
bandera del compact
comando. [84] El algoritmo CompactOS evita la fragmentación de archivos al escribir datos comprimidos en fragmentos asignados de forma contigua, a diferencia de la compresión NTFS principal. [ cita requerida ]
La compresión de archivos de CompactOS es una versión mejorada de la función WIMBoot introducida en Windows 8.1 . WIMBoot reduce el uso del disco de Windows al mantener los archivos del sistema en una imagen WIM comprimida en una partición de disco oculta separada . [85] De manera similar a CompactOS, los directorios del sistema de Windows solo contienen archivos dispersos marcados por un punto de análisis con una etiqueta WOF, y el controlador de filtro de superposición de Windows descomprime el contenido de los archivos sobre la marcha desde la imagen WIM. Sin embargo, WIMBoot es menos efectivo que CompactOS, ya que las nuevas versiones actualizadas de los archivos del sistema deben escribirse en la partición del sistema, lo que consume espacio en el disco. [80]
Los archivos dispersos son archivos intercalados con segmentos vacíos para los cuales no se utiliza espacio de almacenamiento real. Para las aplicaciones, el archivo parece un archivo normal con regiones vacías vistas como regiones llenas de ceros; el sistema de archivos mantiene una lista interna de dichas regiones para cada archivo disperso. [86] Un archivo disperso no necesariamente incluye áreas de ceros dispersos; el atributo "archivo disperso" simplemente significa que el archivo puede tenerlos.
Las aplicaciones de bases de datos, por ejemplo, pueden utilizar archivos dispersos. [87] Al igual que con los archivos comprimidos, los tamaños reales de los archivos dispersos no se tienen en cuenta al determinar los límites de cuota. [88]
El Servicio de instantáneas de volumen (VSS) conserva versiones históricas de archivos y carpetas en volúmenes NTFS copiando datos antiguos y recientemente sobrescritos en instantáneas mediante la técnica de copia en escritura . El usuario puede solicitar posteriormente que se recupere una versión anterior. Esto también permite que los programas de copia de seguridad de datos archiven los archivos que el sistema de archivos esté utilizando actualmente.
Windows Vista también introdujo instantáneas persistentes para usar con las funciones Restaurar sistema y Versiones anteriores . Sin embargo, las instantáneas persistentes se eliminan cuando un sistema operativo más antiguo monta ese volumen NTFS. Esto sucede porque el sistema operativo más antiguo no entiende el formato más nuevo de las instantáneas persistentes. [29]
A partir de Windows Vista, las aplicaciones pueden utilizar NTFS transaccional (TxF) para agrupar varios cambios en archivos en una sola transacción. La transacción garantizará que se realicen todos los cambios o que no se realice ninguno, y que ninguna aplicación ajena a la transacción verá los cambios hasta que se confirmen. [89]
Utiliza técnicas similares a las utilizadas para las instantáneas de volumen (es decir, copia en escritura) para garantizar que los datos sobrescritos se puedan revertir de forma segura, y un registro CLFS para marcar las transacciones que aún no se han confirmado, o aquellas que se han confirmado pero aún no se han aplicado por completo (en caso de falla del sistema durante una confirmación por parte de uno de los participantes).
El NTFS transaccional no restringe las transacciones únicamente al volumen NTFS local, sino que también incluye otros datos transaccionales u operaciones en otras ubicaciones, como datos almacenados en volúmenes separados, el registro local o bases de datos SQL, o los estados actuales de los servicios del sistema o servicios remotos. Estas transacciones se coordinan en toda la red con todos los participantes mediante un servicio específico, el DTC , para garantizar que todos los participantes recibirán el mismo estado de confirmación y para transportar los cambios que hayan sido validados por cualquier participante (de modo que los demás puedan invalidar sus cachés locales para datos antiguos o revertir sus cambios en curso no confirmados). El NTFS transaccional permite, por ejemplo, la creación de sistemas de archivos distribuidos y consistentes en toda la red, incluso con sus cachés locales en vivo o fuera de línea.
Microsoft ahora recomienda no usar TxF: "Microsoft recomienda encarecidamente que los desarrolladores utilicen medios alternativos" ya que "TxF puede no estar disponible en futuras versiones de Microsoft Windows". [90]
Las cuotas de disco se introdujeron en NTFS v3. Permiten al administrador de un equipo que ejecuta una versión de Windows compatible con NTFS establecer un umbral de espacio en disco que los usuarios pueden utilizar. También permite a los administradores realizar un seguimiento de la cantidad de espacio en disco que utiliza cada usuario. Un administrador puede especificar un cierto nivel de espacio en disco que un usuario puede utilizar antes de recibir una advertencia y, a continuación, denegar el acceso al usuario una vez que alcanza el límite superior de espacio. Las cuotas de disco no tienen en cuenta la compresión de archivos transparente de NTFS , en caso de que esté habilitada. Las aplicaciones que consultan la cantidad de espacio libre también verán la cantidad de espacio libre que le queda al usuario al que se le ha aplicado una cuota.
Los puntos de análisis de NTFS, introducidos en NTFS v3, se utilizan asociando una etiqueta de análisis en el atributo de espacio de usuario de un archivo o directorio. Microsoft incluye varias etiquetas predeterminadas, entre las que se incluyen enlaces simbólicos , puntos de unión de directorios y puntos de montaje de volumen . Cuando el Administrador de objetos analiza una búsqueda de nombre de sistema de archivos y encuentra un atributo de análisis, analizará nuevamente la búsqueda de nombre y pasará los datos de análisis controlados por el usuario a cada controlador de filtro del sistema de archivos que se cargue en Windows. Cada controlador de filtro examina los datos de análisis para ver si están asociados con ese punto de análisis y, si ese controlador de filtro determina una coincidencia, intercepta la solicitud del sistema de archivos y realiza su función especial.
A partir de Windows Vista, Microsoft agregó la capacidad integrada de reducir o expandir una partición. Sin embargo, esta capacidad no reubica fragmentos de archivos de paginación o archivos que se han marcado como inamovibles, por lo que reducir un volumen a menudo requerirá reubicar o deshabilitar cualquier archivo de paginación , el índice de Windows Search y cualquier instantánea utilizada por Restaurar sistema . Varias herramientas de terceros son capaces de cambiar el tamaño de las particiones NTFS.
Desde 2017, Microsoft requiere que la estructura de archivos de OneDrive resida en un disco NTFS. [91] Esto se debe a que la función Archivos a pedido de OneDrive utiliza puntos de análisis NTFS para vincular archivos y carpetas almacenados en OneDrive al sistema de archivos local, lo que hace que el archivo o la carpeta no se puedan usar con ninguna versión anterior de Windows, con ningún otro controlador de sistema de archivos NTFS o cualquier sistema de archivos y utilidades de respaldo que no estén actualizados para admitirlo. [92]
NTFS se compone de varios componentes, entre ellos: un sector de arranque de partición (PBS) que contiene información de arranque; la tabla maestra de archivos que almacena un registro de todos los archivos y carpetas del sistema de archivos; una serie de metaarchivos que ayudan a estructurar los metadatos de manera más eficiente; flujos de datos y mecanismos de bloqueo.
Internamente, NTFS utiliza árboles B para indexar los datos del sistema de archivos. Se utiliza un diario del sistema de archivos para garantizar la integridad de los metadatos del sistema de archivos, pero no el contenido de los archivos individuales. Se sabe que los sistemas que utilizan NTFS tienen una confiabilidad mejorada en comparación con los sistemas de archivos FAT. [93]
NTFS permite cualquier secuencia de valores de 16 bits para la codificación de nombres (por ejemplo, nombres de archivos, nombres de flujo o nombres de índice) excepto 0x0000. Esto significa que se admiten unidades de código UTF-16 , pero el sistema de archivos no verifica si una secuencia es UTF-16 válida (permite cualquier secuencia de valores cortos , no restringida a las del estándar Unicode). En el espacio de nombres Win32, cualquier unidad de código UTF-16 no distingue entre mayúsculas y minúsculas, mientras que en el espacio de nombres POSIX sí lo hace. Los nombres de archivo están limitados a 255 unidades de código UTF-16. Ciertos nombres están reservados en el directorio raíz del volumen y no se pueden usar para archivos. Estos son $MFT
, $MFTMirr
, $LogFile
, $Volume
, $AttrDef
, .
(punto), $Bitmap
, $Boot
, $BadClus
, $Secure
, $UpCase
y $Extend
. [5] .
(punto) y $Extend
son ambos directorios; los demás son archivos. El núcleo NT limita las rutas completas a 32.767 unidades de código UTF-16. Hay algunas restricciones adicionales sobre los puntos de código y los nombres de archivo. [94]
Este formato de partición de arranque se basa aproximadamente en el sistema de archivos FAT anterior , pero los campos están en ubicaciones diferentes. Algunos de estos campos, especialmente los campos "sectores por pista", "número de cabezales" y "sectores ocultos", pueden contener valores ficticios en unidades donde no tienen sentido o no se pueden determinar.
El sistema operativo primero analiza los 8 bytes en 0x30 para encontrar el número de clúster de $MFT y luego multiplica ese número por la cantidad de sectores por clúster (1 byte encontrado en 0x0D). Este valor es el desplazamiento del sector ( LBA ) a $MFT, que se describe a continuación.
En NTFS, todos los datos de archivos, directorios y metarchivos (nombre de archivo, fecha de creación, permisos de acceso (mediante el uso de listas de control de acceso ) y tamaño) se almacenan como metadatos en la tabla maestra de archivos ( MFT ). Este enfoque abstracto permitió la fácil incorporación de características del sistema de archivos durante el desarrollo de Windows NT; un ejemplo es la incorporación de campos para la indexación utilizados por Active Directory y Windows Search . Esto también permite que el software de búsqueda rápida de archivos localice archivos y carpetas locales con nombre incluidos en la MFT muy rápidamente, sin necesidad de ningún otro índice.
La estructura MFT admite algoritmos que minimizan la fragmentación del disco . [97] Una entrada de directorio consta de un nombre de archivo y un "ID de archivo" (análogo al número de inodo ), que es el número de registro que representa el archivo en la Tabla maestra de archivos. El ID de archivo también contiene un recuento de reutilización para detectar referencias obsoletas. Si bien esto se parece mucho al W_FID de Files-11 , otras estructuras NTFS difieren radicalmente.
Se almacena una copia parcial de la MFT, llamada espejo de la MFT, para utilizarla en caso de corrupción. [98] Si el primer registro de la MFT está dañado, NTFS lee el segundo registro para encontrar el archivo espejo de la MFT. Las ubicaciones de ambos archivos se almacenan en el sector de arranque. [99]
NTFS contiene varios archivos que definen y organizan el sistema de archivos. En todos los aspectos, la mayoría de estos archivos están estructurados como cualquier otro archivo de usuario (el más peculiar es $Volume), pero no son de interés directo para los clientes del sistema de archivos. [100] Estos metarchivos definen archivos, realizan copias de seguridad de datos críticos del sistema de archivos, almacenan en búfer los cambios en el sistema de archivos, administran la asignación de espacio libre, satisfacen las expectativas del BIOS , rastrean las unidades de asignación incorrectas y almacenan información de seguridad y uso del espacio en disco. Todo el contenido se encuentra en un flujo de datos sin nombre, a menos que se indique lo contrario.
Estos metarchivos son tratados especialmente por Windows, manejados directamente por el NTFS.SYS
controlador y son difíciles de ver directamente: se necesitan herramientas especiales diseñadas para ese propósito. [c] A partir de Windows 7, el controlador NTFS prohíbe completamente el acceso del usuario, lo que resulta en una pantalla azul de la muerte cada vez que se intenta ejecutar un archivo de metadatos. Una de esas herramientas es nfi.exe ("NTFS File Sector Information Utility") que se distribuye libremente como parte de las "Herramientas de soporte OEM" de Microsoft. Por ejemplo, para obtener información sobre el segmento de tabla maestra de archivos "$MFT" se utiliza el siguiente comando: nfi.exe c:\$MFT
[101] Otra forma de evitar la restricción es utilizar el administrador de archivos de 7-Zip e ir a la ruta NTFS de bajo nivel \\.\X:\
(donde X:\
se asemeja a cualquier unidad/partición). Aquí, aparecerán 3 nuevas carpetas: $EXTEND
, [DELETED]
(una pseudocarpeta que 7-Zip utiliza para adjuntar archivos eliminados del sistema de archivos para verlos), y [SYSTEM]
(otra pseudocarpeta que contiene todos los archivos de metadatos NTFS). Este truco se puede utilizar desde dispositivos extraíbles ( unidades flash USB , discos duros externos , tarjetas SD , etc.) dentro de Windows, pero hacerlo en la partición activa requiere acceso sin conexión (es decir, WinRE ).
Para cada archivo (o directorio) descrito en el registro MFT, hay un repositorio lineal de descriptores de flujo (también llamados atributos ), empaquetados juntos en uno o más registros MFT (que contienen la llamada lista de atributos ), con relleno adicional para completar el tamaño fijo de 1 KB de cada registro MFT, y que describe completamente los flujos efectivos asociados con ese archivo.
Cada atributo tiene un tipo de atributo (un entero de tamaño fijo que se asigna a una definición de atributo en el archivo $AttrDef ), un nombre de atributo opcional (por ejemplo, utilizado como nombre para un flujo de datos alternativo) y un valor, representado en una secuencia de bytes. Para NTFS, los datos estándar de los archivos, los flujos de datos alternativos o los datos de índice de los directorios se almacenan como atributos.
Según $AttrDef , algunos atributos pueden ser residentes o no residentes. El atributo $DATA , que contiene datos de archivo, es un ejemplo de ello. Cuando el atributo es residente (lo que se representa mediante un indicador), su valor se almacena directamente en el registro MFT. De lo contrario, se asignan clústeres para los datos y la información de ubicación del clúster se almacena a medida que los datos se ejecutan en el atributo.
Todos los atributos de un archivo determinado se pueden visualizar utilizando el programa nfi.exe ("Utilidad de información del sector de archivos NTFS") que se distribuye gratuitamente como parte de las "Herramientas de soporte OEM" de Microsoft. [101]
Las llamadas del sistema de Windows pueden manejar flujos de datos alternativos. [5] Dependiendo del sistema operativo, la utilidad y el sistema de archivos remoto, una transferencia de archivos puede eliminar flujos de datos de manera silenciosa. [5] Una forma segura de copiar o mover archivos es usar las llamadas del sistema BackupRead y BackupWrite, que permiten a los programas enumerar flujos, verificar si cada flujo debe escribirse en el volumen de destino y omitir a sabiendas los flujos no deseados. [5]
Para optimizar el almacenamiento y reducir la sobrecarga de E/S para el caso muy común de atributos con un valor asociado muy pequeño, NTFS prefiere colocar el valor dentro del atributo mismo (si el tamaño del atributo no excede el tamaño máximo de un registro MFT), en lugar de usar el espacio del registro MFT para enumerar los clústeres que contienen los datos; en ese caso, el atributo no almacenará los datos directamente sino que simplemente almacenará un mapa de asignación (en forma de ejecuciones de datos ) que apunta a los datos reales almacenados en otra parte del volumen. [102] Cuando se puede acceder al valor directamente desde dentro del atributo, se lo llama "datos residentes" (por los trabajadores forenses informáticos ). La cantidad de datos que caben depende en gran medida de las características del archivo, pero de 700 a 800 bytes es común en archivos de flujo único con nombres de archivo no largos y sin ACL.
El mapa de asignación se almacena en forma de ejecuciones de datos con codificación comprimida. Cada ejecución de datos representa un grupo contiguo de clústeres que almacenan el valor del atributo. Para los archivos en un volumen de varios GB, cada entrada se puede codificar como de 5 a 7 bytes, lo que significa queUn registro MFT de 1 KB puede almacenar alrededor de 100 ejecuciones de datos de este tipo. Sin embargo, como $ATTRIBUTE_LIST también tiene un límite de tamaño, es peligroso tener más de 1 millón de fragmentos de un solo archivo en un volumen NTFS, lo que también implica que, en general, no es una buena idea usar la compresión NTFS en un archivo de más de10 GB . [103]
El controlador del sistema de archivos NTFS a veces intentará reubicar los datos de algunos de los atributos que pueden hacerse no residentes en los clústeres, y también intentará reubicar los datos almacenados en los clústeres nuevamente en el atributo dentro del registro MFT, según las reglas de prioridad y orden preferido y las restricciones de tamaño.
Dado que los archivos residentes no ocupan directamente los clústeres ("unidades de asignación"), es posible que un volumen NTFS contenga más archivos que clústeres. Por ejemplo, unFormatos NTFS de partición de 74,5 GB con 19 543 064 clústeres de4 KB . Restando archivos del sistema (aUn archivo de registro de 64 MB , un archivo de mapa de bits de 2.442.888 bytes y unos 25 clústeres de sobrecarga fija dejan 19.526.158 clústeres libres para archivos e índices. Dado que hay cuatro registros MFT por clúster, este volumen teóricamente podría contener casi 4 × 19.526.158 = 78.104.632 archivos residentes.
Los bloqueos de archivos oportunistas (oplocks) permiten a los clientes alterar su estrategia de almacenamiento en búfer para un archivo o flujo determinado con el fin de aumentar el rendimiento y reducir el uso de la red. [104] Los oplocks se aplican al flujo abierto dado de un archivo y no afectan a los oplocks en un flujo diferente.
Los bloqueos operacionales se pueden utilizar para acceder de forma transparente a archivos en segundo plano. Un cliente de red puede evitar escribir información en un archivo de un servidor remoto si ningún otro proceso está accediendo a los datos, o puede almacenar en búfer datos de lectura anticipada si ningún otro proceso está escribiendo datos.
Windows admite cuatro tipos diferentes de bloqueos operativos:
Los bloqueos oportunistas se han mejorado en Windows 7 y Windows Server 2008 R2 con claves de bloqueo oportunista por cliente. [105]
Windows NT y sus descendientes mantienen las marcas de tiempo internas como UTC y realizan las conversiones apropiadas para fines de visualización; todas las marcas de tiempo de NTFS están en UTC. [ cita requerida ]
Por razones históricas, las versiones de Windows que no son compatibles con NTFS mantienen la hora internamente como hora de zona local y, por lo tanto, también lo hacen todos los sistemas de archivos (excepto NTFS) que son compatibles con las versiones actuales de Windows. Esto significa que cuando se copian o mueven archivos entre particiones NTFS y no NTFS, el sistema operativo necesita convertir las marcas de tiempo sobre la marcha. Pero si algunos archivos se mueven cuando está en vigor el horario de verano (DST) y otros archivos se mueven cuando está en vigor el horario estándar , puede haber algunas ambigüedades en las conversiones. Como resultado, especialmente poco después de uno de los días en que cambia la hora de zona local, los usuarios pueden observar que algunos archivos tienen marcas de tiempo que son incorrectas por una hora. Debido a las diferencias en la implementación del DST en diferentes jurisdicciones, esto puede resultar en un error de marca de tiempo potencial de hasta 4 horas en un período de 12 meses determinado. [106]
dir
comando de línea de comandos listaba los metarchivos en el directorio raíz si /a
se especificaban. En Windows 2000, dir /a
dejó de funcionar, pero dir /a \$MFT
funcionó.NTFS utiliza un tamaño de clúster predeterminado de 4 KB, un tamaño de clúster máximo de 64 KB en el sistema operativo Windows 10 v1703 y Windows Server 2016 y anteriores, y 2 MB en el sistema operativo Windows 10 v1709 y Windows Server 2019 y posteriores, y un tamaño de clúster mínimo de 512 bytes.
que utiliza múltiples flujos de datos es el Servicio de ejecución de archivos adjuntos [...] dependiendo de la zona desde la que se descargó el archivo [...] El Explorador de Windows puede advertir al usuario
Utilidad de información del sector de archivos del sistema de archivos de Windows NT (NTFS) ... Una herramienta que se utiliza para volcar información sobre un volumen NTFS