NTFS точки повторной обработки является тип NTFS файловой системы объекта. Он доступен с NTFS v3.0 в Windows 2000 или более поздних версиях. Точки повторной обработки позволяют расширить файловую систему NTFS. Точка повторной обработки содержит тег повторной обработки и данные, которые интерпретируются фильтром файловой системы, идентифицированным этим тегом. Microsoft включает в себя несколько тегов по умолчанию , включая NTFS символические ссылки , каталог точек соединения , точки монтирования томов и сокеты домена Unix . Кроме того, точки повторной обработки используются в качестве заполнителей для файлов, перемещаемых иерархической системой хранения удаленного хранилища Windows 2000 . Они также могут действовать как жесткие ссылки[ необходима цитата ] , но не ограничиваются указанием файлов на том же томе: они могут указывать на каталоги на любом локальном томе. Особенность [ какая? ] унаследован от ReFS . [1]
Драйвер NTFS-3G с открытым исходным кодом реализует встроенную поддержку точек повторной обработки типа ссылок, а именно символических ссылок и точек соединения. Доступна система фильтрации плагинов для обработки дополнительных типов точек повторной обработки, что позволяет читать файлы с дедуплицированными фрагментами, файлы, сжатые системой, и файлы OneDrive . [2]
Состав
Точка повторной обработки имеет следующую общую структуру в виде структуры C:
struct REPARSE_BUFFER { uint32_t ReparseTag ; uint32_t ReparseDataLength ; uint16_t Зарезервировано ; uint8_t DataBuffer []; // гибкий член массива }
Тег повторной обработки [3] уникален для каждого типа точки повторной обработки. Он определяет, какому обработчику точки повторной обработки (обычно это драйвер фильтра файловой системы) диспетчер ввода-вывода делегирует обработку. [4] Microsoft предоставляет документацию по некоторым «общедоступным» типам тегов. [5]
Типы
Точки монтирования тома
Точки монтирования тома аналогичны точкам монтирования Unix , где корень другой файловой системы присоединяется к каталогу. В NTFS это позволяет монтировать дополнительные файловые системы, не требуя для каждой отдельной буквы диска (например, или ).C:
D:
После того, как том был смонтирован поверх существующего каталога другого тома, содержимое, ранее перечисленное в этом каталоге, становится невидимым и заменяется содержимым корневого каталога смонтированного тома. [ необходима цитата ] У смонтированного тома может быть своя собственная буква диска, назначенная отдельно. Файловая система не позволяет подключать тома друг к другу. Точки монтирования тома могут быть либо постоянными (перемонтировать автоматически после перезагрузки системы), либо непостоянными (должны быть перемонтированы вручную после перезагрузки). [ необходима цитата ]
Смонтированные тома могут использовать другие файловые системы, кроме NTFS, возможно, со своими собственными настройками безопасности и переназначением прав доступа в соответствии с политикой удаленной файловой системы.
Замещающие имена точек монтирования тома используют форму пространства имен NT \??\DeviceName\
. [6] [7] [4] Переходы обычно используются \??\
для обозначения тома с существующей буквой драйвера, в то время как настоящие точки монтирования тома используются \??\Volume{
для обозначения любого тома. Пути UNC недопустимы для соединений. [8]
Справочник перекрестков
Соединения каталогов определяются с использованием того же механизма (и тега повторной обработки:), 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 откажется открывать их из оболочки или в большинстве приложений, за исключением локального встроенного пользователя SYSTEM или локальной группы администраторов (оба пользователя учетные записи используются установщиками системного программного обеспечения). Это дополнительное ограничение безопасности, вероятно, было сделано для того, чтобы пользователи не находили очевидные дубликаты файлов в объединенных каталогах и не удаляли их по ошибке, потому что семантика соединений каталогов отличается от семантики жестких ссылок; подсчет ссылок не используется ни в целевом содержимом, ни даже в самом указанном контейнере. [ необходима цитата ]
Соединения каталогов - это мягкие ссылки (они будут сохраняться, даже если целевой каталог будет удален), работающие как ограниченная форма символических ссылок (с дополнительным ограничением на местоположение цели), но это оптимизированная версия, позволяющая ускорить обработку точка повторной обработки, с которой они реализованы, с меньшими накладными расходами, чем новые символические ссылки NTFS, и может быть разрешена на стороне сервера (когда они находятся в удаленных общих каталогах). [ необходима цитата ]
Символические ссылки
Символические ссылки (или программные ссылки) были введены в Windows Vista. [10] Символические ссылки разрешаются на стороне клиента. Таким образом, когда символическая ссылка является общей, цель подчиняется ограничениям доступа на клиенте, а не на сервере. [ необходима цитата ]
Символические ссылки могут быть созданы либо в файлы (созданные с помощью MKLINK symLink targetFilename
), либо в каталоги (созданные с помощью MKLINK /D symLinkD targetDirectory
), но (в отличие от символических ссылок Unix) семантика ссылки должна быть обеспечена созданной ссылкой. Однако цель не обязательно должна существовать или быть доступной при создании символической ссылки: когда будет осуществлен доступ к символической ссылке и цель будет проверена на доступность, NTFS также проверит, имеет ли она правильный тип (файл или каталог); он вернет ошибку «не найден», если существующая цель имеет неправильный тип. [ необходима цитата ]
Они также могут ссылаться на общие каталоги на удаленных хостах или файлы и подкаталоги в общих каталогах: их цель не монтируется сразу при загрузке, а только временно по запросу при открытии их с помощью OpenFile()
или CreateFile()
API. Их определение сохраняется на томе NTFS, на котором они созданы (все типы символических ссылок могут быть удалены, как если бы они были файлами, DEL symLink
с помощью командной строки или пакета). [ необходима цитата ]
Данные символической ссылки аналогичны данным точки монтирования, поскольку оба используют путь пространства имен NT. Разница в том, что символические ссылки принимают пути UNC , но не монтируют тома {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)
Иерархическое управление хранилищем - это средство передачи файлов, которые не используются в течение некоторого периода времени, на менее дорогие носители. При следующем доступе к файлу точка повторной обработки этого файла определяет, что он необходим, и извлекает его из хранилища. [ необходима цитата ]
Собственное структурированное хранилище (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 представляет несколько алгоритмов сжатия только для чтения для NTFS, взятых из Windows Imaging Format . Это XPRESS4K / 8K / 16K и LZX . Оба основаны на LZ77 с энтропийным кодированием Хаффмана , которого не хватало LZNT1. Они в основном используются для новой функции CompactOS, которая сжимает весь системный раздел с использованием одного из этих алгоритмов. [18] Их также можно вручную включить для каждого файла с помощью /exe
флага compact
команды. Алгоритмы разделяют файлы на куски с поведением фрагментации, аналогичным стандартному сжатию NTFS.
Внутри файл записывается как точка повторной обработки с тегом 0x80000017 для записи того факта, что файл был специально сжат, а фактические данные сохраняются в альтернативном потоке данных с именем «WofCompressedData» (для файловой системы оверлея Windows). Новый дизайн предназначен исключительно для доступа только для чтения, поэтому любая запись в сжатые файлы приводит к полной распаковке файла в Windows. [19] [20] [2]
Один диск
OneDrive помечает файлы и каталоги, которые он загрузил в локальное хранилище, как точку повторной обработки тегом 0x9000001a. Фактические данные хранятся нормально. [2]
Известные риски
Stuxnet как часть своей серии Win32 использует использует NTFS точку соединения в качестве части своего общего режима работы. [ необходима цитата ]
Смотрите также
- Символьная ссылка NTFS
- Точка соединения NTFS
- Точка монтирования тома NTFS
- Символическая ссылка
Рекомендации
- ^ " Учебное пособие по настройке клиента Microsoft Windows Vista " Wiley Publishing, Inc. 2007, стр.285
- ^ a b c d Андре, Жан-Пьер (1 марта 2019 г.). «NTFS-3G: точки соединения, символические ссылки и точки повторной обработки» . jp-andre.pagesperso-orange.fr .
- ^ «Теги точки повторной обработки» . Проверено 12 декабря 2019 .
- ^ а б в «Ссылки NTFS, соединения каталогов и ярлыки Windows» . www.flexhex.com .
- ^ «[MS-FSCC] Теги повторной обработки» . Проверено 12 декабря 2019 .
- ^ «Именование файлов, путей и пространств имен / пространств имен NT» . Центр разработки Microsoft Windows . Проверено 12 декабря 2019 .
- ^ "winapi - Всегда ли строка" SubstituteName "в PathBuffer структуры REPARSE_DATA_BUFFER начинается с префикса" \ ?? \ ", и если да, то почему?" . Переполнение стека . Проверено 4 октября 2019 года .
- ^ а б "libuv / src / win / fs.c: fs__readlink_handle" . GitHub . Проверено 12 декабря 2019 .
- ^ Марк Руссинович . «Внутри Windows 2000 NTFS, часть 1» . Сеть разработчиков Microsoft . Проверено 18 апреля 2008 .
- ^ «Символические ссылки (Windows)» . MSDN.
- ^ http://msdn.microsoft.com/en-us/library/windows/desktop/aa363997.aspx
- ^ https://technet.microsoft.com/en-us/library/cc736811(WS.10).aspx
- ^ «Одноэкземплярное хранилище в Windows 2000» (PDF) . Microsoft Research и Balder Technology Group.
- ^ FileCAB-Team (10 апреля 2019). «Введение в дедупликацию данных в Windows Server 2012» . Техническое сообщество Microsoft .
- ^ «Совместимость дедупликации данных» . docs.microsoft.com .
- ^ Сэвилл, Джон (дата неизвестна). Что такое собственное структурированное хранилище? Windows для ИТ-специалистов. Извлекаются из «Архивная копия» . Архивировано из оригинала на 2007-09-27 . Проверено 3 декабря 2007 .CS1 maint: заархивированная копия как заголовок ( ссылка ).
- ^ «AF_UNIX приходит в Windows» . Инструменты командной строки Windows для разработчиков . Проверено 3 июля 2018 .
- ^ «Компактная ОС, создание единого экземпляра и оптимизация изображений» . Microsoft . Дата обращения 1 октября 2019 .
- ^ "Re: [ntfs-3g-devel] Экспериментальная поддержка файлов, сжатых системой Windows 10" . sourceforge.net . Дата обращения 1 октября 2019 .
- ^ Биггерс, Эрик (29 апреля 2019 г.). "ntfs-3g-system-compress: Плагин NTFS-3G для чтения" файлов, сжатых системой " . GitHub . Дата обращения 1 октября 2019 .
Внешние ссылки
- Запись в базе знаний Microsoft 262797: «Поддержка точек повторной обработки в кластерах на базе Windows 2000» на Wayback Machine (архивировано 21 октября 2012 г.)
- Поддержка точки повторной обработки в кластерах на базе Windows 2000
- Официальная документация по точкам повторной обработки в Microsoft Docs
- Ссылки NTFS, соединения каталогов и ярлыки Windows