stringtranslate.com

Точка повторной обработки NTFS

Точка повторной обработки NTFS — это тип объекта файловой системы NTFS . Она доступна с NTFS v3.0, обнаруженной в Windows 2000 или более поздних версиях. Точки повторной обработки предоставляют способ расширения файловой системы NTFS. Точка повторной обработки содержит тег повторной обработки и данные, которые интерпретируются драйвером фильтра файловой системы, идентифицированным тегом. Microsoft включает несколько тегов по умолчанию, включая символические ссылки NTFS , точки соединения каталогов , точки монтирования томов и сокеты домена Unix . Кроме того, точки повторной обработки используются в качестве заполнителей для файлов, перемещенных системой удаленного хранения данных Windows 2000. Они также могут действовать как жесткие ссылки [ требуется ссылка ] , но не ограничиваются указанием на файлы на том же томе: они могут указывать на каталоги на любом локальном томе. Функция [ which? ] унаследована от ReFS . [1]

Драйвер NTFS-3G с открытым исходным кодом реализует встроенную поддержку точек повторной обработки типа ссылок, а именно символических ссылок и точек соединения. Система фильтров плагинов доступна для обработки дополнительных типов точек повторной обработки, что позволяет читать файлы с дедупликацией фрагментов, файлы, сжатые системой, и файлы OneDrive . [2]

Структура

Точка повторной обработки имеет следующую общую структуру в форме структуры C:

struct REPARSE_BUFFER { uint32_t ReparseTag ; uint32_t ReparseDataLength ; uint16_t Reserved ; uint8_t DataBuffer []; // гибкий член массива }           

Тег повторной обработки [3] уникален для каждого типа точки повторной обработки. Он определяет, какому обработчику точки повторной обработки (обычно драйверу фильтра файловой системы) менеджер ввода-вывода делегирует обработку. [4] Microsoft предоставляет документацию по некоторым «публичным» типам тегов. [5]

Типы

Точки монтирования тома

Точки монтирования томов похожи на точки монтирования Unix , где корень другой файловой системы прикрепляется к каталогу. В NTFS это позволяет монтировать дополнительные файловые системы без необходимости отдельной буквы диска (например, или ) для каждой.C:D:

После того, как том был смонтирован поверх существующего каталога другого тома, содержимое, ранее указанное в этом каталоге, становится невидимым и заменяется содержимым корневого каталога смонтированного тома. [ необходима цитата ] Смонтированный том может по-прежнему иметь свою собственную букву диска, назначенную отдельно. Файловая система не позволяет томам быть взаимно смонтированными друг на друга. Точки монтирования тома могут быть сделаны либо постоянными (автоматически перемонтированными после перезагрузки системы), либо не постоянными (должны быть вручную перемонтированы после перезагрузки). [ необходима цитата ]

Смонтированные тома могут использовать другие файловые системы, а не только NTFS, возможно, со своими собственными настройками безопасности и перераспределением прав доступа в соответствии с политикой удаленной файловой системы.

Заменяющие имена точек монтирования томов используют форму пространства имен NT \??\DeviceName\. [6] [7] [4] Соединения обычно используют \??\<drive>:\для ссылки на том с существующей буквой драйвера, в то время как истинные точки монтирования томов используют \??\Volume{<guid>}для ссылки на любой том. Пути UNC недопустимы для соединений. [8]

Справочник переходов

Соединения каталогов определяются с использованием того же самого механизма (и reparse tag: IO_REPARSE_TAG_MOUNT_POINT), что и точки монтирования томов. Единственное отличие состоит в том, что их заменяющие имена указывают на подкаталог другого тома, который обычно уже имеет букву диска. Эта функция концептуально похожа на символические ссылки на каталоги в Unix , за исключением того, что целью в NTFS всегда должен быть другой каталог (типичные файловые системы Unix позволяют цели символической ссылки быть любым типом файла). [4]

Например, каталог C:\exampledirс атрибутом соединения каталогов, содержащим ссылку на, D:\linkeddirбудет автоматически ссылаться на каталог, D:\linkeddirкогда к нему будет обращаться приложение пользовательского режима. [9]

Соединения каталогов (которые можно создать с помощью команды MKLINK /J junctionName targetDirectoryи удалить с помощью RMDIR junctionNameиз командной строки) являются постоянными и разрешаются на стороне сервера, поскольку они совместно используют ту же область безопасности локальной системы или домена, на которой смонтирован родительский том, и те же настройки безопасности для его содержимого, что и для содержимого целевого каталога; однако само соединение может иметь различные настройки безопасности. Отмена связи соединения каталогов не удаляет файлы в целевом каталоге.

Некоторые соединения каталогов устанавливаются по умолчанию в Windows Vista для совместимости с предыдущими версиями Windows, например, Documents and Settingsв корневом каталоге системного диска, который ссылается на Usersфизический каталог в корневом каталоге того же тома. Однако они скрыты по умолчанию, и их параметры безопасности настроены так, что Windows Explorer откажется открывать их из Shell или в большинстве приложений, за исключением локального встроенного пользователя SYSTEM или локальной группы Administrators (обе учетные записи пользователей используются установщиками системного программного обеспечения). Это дополнительное ограничение безопасности, вероятно, было сделано для того, чтобы пользователи не находили явные дубликаты файлов в присоединенных каталогах и не удаляли их по ошибке, поскольку семантика соединений каталогов не такая же, как для жестких ссылок; подсчет ссылок не используется для целевого содержимого и даже для самого контейнера, на который указывает ссылка. [ необходима цитата ]

Соединения каталогов представляют собой мягкие ссылки (они сохранятся даже при удалении целевого каталога), работающие как ограниченная форма символических ссылок (с дополнительным ограничением на местоположение цели), но это оптимизированная версия, позволяющая быстрее обрабатывать точку повторной обработки, с которой они реализованы, с меньшими накладными расходами, чем более новые символические ссылки NTFS, и могут быть разрешены на стороне сервера (когда они находятся в удаленных общих каталогах). [ необходима цитата ]

Символические ссылки

Символические ссылки (или мягкие ссылки) были введены в Windows Vista. [10] Символические ссылки разрешаются на стороне клиента. Поэтому, когда символическая ссылка является общей, цель подчиняется ограничениям доступа на стороне клиента, а не сервера. [ необходима цитата ]

Символические ссылки могут быть созданы либо для файлов (созданных с помощью MKLINK symLink targetFilename), либо для каталогов (созданных с помощью MKLINK /D symLinkD targetDirectory), но (в отличие от символических ссылок Unix) семантика ссылки должна быть предоставлена ​​вместе с созданной ссылкой. Однако цель не обязательно должна существовать или быть доступной при создании символической ссылки: когда символическая ссылка будет доступна и цель будет проверена на доступность, NTFS также проверит, имеет ли она правильный тип (файл или каталог); она вернет ошибку «не найдено», если существующая цель имеет неправильный тип. [ необходима цитата ]

Они также могут ссылаться на общие каталоги на удаленных хостах или файлы и подкаталоги в общих каталогах: их цель не монтируется немедленно при загрузке, а только временно по требованию при открытии их с помощью API OpenFile()или CreateFile(). Их определение постоянно на томе NTFS, где они созданы (все типы символических ссылок могут быть удалены, как если бы они были файлами, с помощью DEL symLinkкомандной строки или пакета). [ необходима цитата ]

Данные символической ссылки похожи на данные точки монтирования, в том, что оба используют путь пространства имен NT. Разница в том, что символические ссылки принимают пути UNC , но не монтирования Volume{guid}. [8]

Распределенное отслеживание ссылок (DLT)

Отслеживание распределенных ссылок позволяет приложениям отслеживать файлы, ярлыки оболочек или ссылки OLE, даже если они были переименованы или перемещены на другой том в пределах той же машины, домена или рабочей группы. [11] Отслеживание реализовано как системная служба, которая использует индекс идентификатора объекта (OID), сохраненный в метафайле . [12] Когда приложение запрашивает отслеживание файла или каталога, служба отслеживания создает запись OID, которая указывает на файл, а операция переименования, копирования или перемещения файла на том NTFS v3 также копирует идентификатор объекта. Это позволяет службе отслеживания в конечном итоге найти целевой файл.

Дедупликация данных

Когда есть несколько каталогов с разными, но похожими файлами, некоторые из этих файлов могут иметь одинаковое содержимое. Хранилище отдельных экземпляров , встречающееся в Windows Server 2000 — Windows Storage Server 2008, позволяет объединять идентичные файлы в один файл и создавать ссылки на этот объединенный файл. SIS состоит из фильтра файловой системы, который управляет копиями, изменениями и объединениями с файлами; и службы пользовательского пространства (или groveler ), которая ищет файлы, которые идентичны и нуждаются в объединении. SIS в основном была разработана для удаленных установочных серверов, поскольку они могут иметь несколько установочных образов, содержащих много одинаковых файлов; SIS позволяет объединять их, но, в отличие, например, от жестких ссылок, каждый файл остается отдельным; изменения в одной копии файла оставят другие неизменными. Это похоже на копирование при записи , которое представляет собой метод, при котором копирование памяти на самом деле не выполняется, пока одна копия не будет изменена. [13]

Начиная с Windows Server 2012, появился новый механизм дедупликации данных на основе фрагментов (тег 0x80000013), который позволяет дедуплицировать файлы с похожим содержимым, если они содержат фрагменты идентичных данных. [2] Этот механизм более мощный, чем SIS. [14] Начиная с Windows Server 2019, эта функция полностью поддерживается в ReFS. [15]

Иерархическое управление хранилищем (HSM)

Hierarchical Storage Management — это способ переноса файлов, которые не используются в течение некоторого периода времени, на менее дорогие носители. При следующем доступе к файлу точка повторной обработки этого файла определяет, что он нужен, и извлекает его из хранилища. [ необходима цитата ]

Собственное структурированное хранилище (NSS)

NSS была технологией хранения документов ActiveX , которая с тех пор была прекращена Microsoft. [ требуется цитата ] Она позволяла хранить документы ActiveX в том же многопоточном формате, который ActiveX использует внутри. Фильтр файловой системы NSS загружался и использовался для обработки нескольких потоков прозрачно для приложения, и когда файл переносился на дисковый том, не отформатированный в NTFS, он также переносил несколько потоков в один поток. [16]

Сокет домена Unix (сокет)

В Windows 10 build 17063 (для стабильной версии 1803) Microsoft представила доменные сокеты Unix в Windows. Они реализованы с помощью драйвера ядра afunix.sys и новой точки повторной обработки в файловой системе. Доменные сокеты Unix распространены в системах BSD и Linux и могут рассматриваться как стандарт для межпроцессного взаимодействия в этих системах; поэтому их введение в Windows позволит упростить принятие кода и кроссплатформенную переносимость. [17]

Сжатие системы

В Windows 10 представлены алгоритмы сжатия CompactOS только для чтения для файловой системы NTFS, взятые из формата Windows Imaging Format (WIM); они предназначены для сжатия системных файлов Windows и сокращения использования дискового пространства. [18]

Внутри сжатый файл записывается как точка повторной обработки с тегом IO_REPARSE_TAG_WOF (0x80000017), где WoF означает Windows Overlay Filter, [19] а фактические данные сохраняются в альтернативном потоке данных с именем «WofCompressedData», который обрабатывается фильтром файловой системы WOF . [20] [21] [2]

CompactOS — это улучшенный вариант WIMBoot из Windows 8.1 , в котором системные файлы могут храниться в сжатом образе WIM на скрытом разделе диска , [22] а драйвер фильтра WOF распаковывает содержимое файла из этого файла WIM; использование альтернативных потоков данных вместо образов WIM только для чтения позволяет CompactOS повторно сжимать системные файлы, когда их необходимо перезаписать обновленной версией. [23]

OneDrive

OneDrive помечает файлы и каталоги, которые он загрузил в локальное хранилище, как точку повторной обработки с тегом 0x9000001a. Фактические данные сохраняются в обычном режиме. [2]

Известные риски

Stuxnet , как часть своей серии эксплойтов Win32, использует точки соединения NTFS как часть своего общего режима работы. [ необходима цитата ]

Смотрите также

Ссылки

  1. ^ " Руководство по изучению конфигурации клиента Microsoft Windows Vista " Wiley Publishing, Inc. 2007 стр. 285
  2. ^ abcd Андре, Жан-Пьер (1 марта 2019 г.). «NTFS-3G: точки соединения, символические ссылки и точки повторной обработки». jp-andre.pagesperso-orange.fr .
  3. ^ "Теги точек повторной обработки" . Получено 12 декабря 2019 г.
  4. ^ abc "Ссылки NTFS, соединения каталогов и ярлыки Windows". www.flexhex.com .
  5. ^ "[MS-FSCC] Повторная обработка тегов" . Получено 12 декабря 2019 г.
  6. ^ "Именование файлов, путей и пространств имен/пространств имен NT". Центр разработчиков Microsoft Windows . Получено 12 декабря 2019 г.
  7. ^ "winapi - Всегда ли строка "SubstituteName" в PathBuffer структуры REPARSE_DATA_BUFFER начинается с префикса "\??\", и если да, то почему?". Stack Overflow . Получено 4 октября 2019 г. .
  8. ^ Марк Руссинович . "Внутри Win2K NTFS, часть 1". Microsoft Developer Network . Получено 2008-04-18 .
  9. ^ «Символические ссылки (Windows)». MSDN.
  10. ^ «Распределенное отслеживание ссылок и идентификаторы объектов».
  11. ^ "Distributed Link Tracking Client (System Services for the Windows Server 2003 Family and Windows XP Operating Systems)". Архивировано из оригинала 2016-03-07 . Получено 2017-08-26 .
  12. ^ Болоски, Билл; Корбин, Скотт; Гебель, Дэвид; Дусер, Джон (январь 2000 г.). Хранилище единичных экземпляров в Windows 2000 (PDF) . Труды 4-го симпозиума USENIX по системам Windows. Сиэтл, Вашингтон: Microsoft Research и Balder Technology Group.
  13. ^ FileCAB-Team (10 апреля 2019 г.). «Введение в дедупликацию данных в Windows Server 2012». Сообщество Microsoft Tech .
  14. ^ "Взаимодействие с дедупликацией данных". docs.microsoft.com .
  15. ^ Сэвилл, Джон (дата неизвестна). Что такое Native Structured Storage? Windows IT Pro. Получено из "What is Native Structured Storage?". Архивировано из оригинала 2007-09-27 . Получено 2007-12-03 ..
  16. ^ "AF_UNIX приходит в Windows". Инструменты командной строки Windows для разработчиков . Получено 2024-07-25 .
  17. ^ "Compact OS, single-instancing, and image optimization". Microsoft . Получено 1 октября 2019 .
  18. ^ «Что такое WofCompressedData? Означает ли WOF, что Windows — собака?». 18 июня 2019 г.
  19. ^ "Re: [ntfs-3g-devel] Экспериментальная поддержка файлов Windows 10 "System Compressed"". sourceforge.net . Получено 1 октября 2019 г. .
  20. ^ Биггерс, Эрик (29 апреля 2019 г.). "ntfs-3g-system-compression: плагин NTFS-3G для чтения файлов, "сжатых системой". GitHub . Получено 1 октября 2019 г. .
  21. ^ Обзор загрузки файла образа Windows (WIMBoot)
  22. ^ Рэймонд Чен. Что такое WofCompressedData? Означает ли WOF, что Windows — собака? Microsoft DevBlogs.

Внешние ссылки