Точка повторной обработки NTFS
Точка повторной обработки 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 Reserved;
uint8_t DataBuffer[]; // flexible array member
}
Тег повторной обработки [ 3 ] уникален для каждого типа точки повторной обработки. Он определяет, какому обработчику точки повторной обработки (обычно драйверу фильтра файловой системы) диспетчер ввода-вывода делегирует обработку. [ 4 ] Microsoft предоставляет документацию по некоторым «общедоступным» типам тегов. [ 5 ]
Типы
[ редактировать ]Точки подключения тома
[ редактировать ]Точки монтирования тома аналогичны Unix точкам монтирования , где к каталогу прикрепляется корень другой файловой системы. В NTFS это позволяет монтировать дополнительные файловые системы, не требуя отдельной буквы диска (например, C:
или D:
) для каждого.
После того как том смонтирован поверх существующего каталога другого тома, содержимое, ранее указанное в этом каталоге, становится невидимым и заменяется содержимым корневого каталога смонтированного тома. [ нужна ссылка ] Подключенному тому по-прежнему может быть присвоена отдельная буква диска. Файловая система не позволяет взаимно монтировать тома друг на друга. Точки монтирования тома можно сделать либо постоянными (перемонтируются автоматически после перезагрузки системы), либо непостоянными (необходимо перемонтировать вручную после перезагрузки). [ нужна ссылка ]
Подключенные тома могут использовать другие файловые системы, а не только NTFS, возможно, со своими собственными настройками безопасности и переназначением прав доступа в соответствии с политикой удаленной файловой системы.
Замещающие имена точек подключения тома используют форму пространства имен NT. \??\DeviceName\
. [ 6 ] [ 7 ] [ 4 ] В соединениях обычно используются \??\<drive>:\
для ссылки на том с существующей буквой драйвера, в то время как истинные точки монтирования тома используют \??\Volume{<guid>}
для ссылки на любой том. 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 отказывается открывать их из оболочки или из большинства приложений, за исключением локального встроенного пользователя СИСТЕМА или локальной группы администраторов (оба пользователя учетные записи используются установщиками системного программного обеспечения). Это дополнительное ограничение безопасности, вероятно, было сделано для того, чтобы пользователи не находили очевидные дубликаты файлов в объединенных каталогах и не удаляли их по ошибке, поскольку семантика соединений каталогов не такая же, как для жестких ссылок; подсчет ссылок не используется для целевого содержимого и даже для самого контейнера, на который ссылаются. [ нужна ссылка ]
Соединения каталогов представляют собой программные ссылки (они сохранятся, даже если целевой каталог будет удален), работающие как ограниченная форма символических ссылок (с дополнительным ограничением на местоположение цели), но это оптимизированная версия, позволяющая ускорить обработку точка повторной обработки, с помощью которой они реализованы, с меньшими издержками, чем новые символические ссылки NTFS, и могут быть разрешены на стороне сервера (когда они находятся в удаленных общих каталогах). [ нужна ссылка ]
Символические ссылки
[ редактировать ]Символические ссылки (или программные ссылки) были представлены в Windows Vista. [ 10 ] Символические ссылки разрешаются на стороне клиента. Таким образом, при совместном использовании символической ссылки на цель распространяются ограничения доступа на клиенте, а не на сервере. [ нужна ссылка ]
Символические ссылки могут быть созданы либо на файлы (созданные с помощью MKLINK symLink targetFilename
) или в каталоги (созданные с помощью MKLINK /D symLinkD targetDirectory
), но (в отличие от символических ссылок Unix) семантика ссылки должна быть передана вместе с созданной ссылкой. Однако цель не обязательно должна существовать или быть доступной при создании символической ссылки: когда будет осуществлен доступ к символической ссылке и цель будет проверена на доступность, NTFS также проверит, имеет ли она правильный тип (файл или каталог); он вернет ошибку «не найдено», если существующая цель имеет неправильный тип. [ нужна ссылка ]
Они также могут ссылаться на общие каталоги на удаленных хостах или на файлы и подкаталоги в общих каталогах: их цель монтируется не сразу при загрузке, а только временно по требованию при открытии их с помощью OpenFile()
или CreateFile()
API. Их определение сохраняется на томе 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)
[ редактировать ]Иерархическое управление хранилищем — это средство переноса файлов, которые не используются в течение определенного периода времени, на менее дорогие носители. При следующем обращении к файлу точка повторной обработки этого файла определяет, что он необходим, и извлекает его из хранилища. [ нужна ссылка ]
Собственное структурированное хранилище (NSS)
[ редактировать ]NSS — это технология хранения документов ActiveX , выпуск которой с тех пор был прекращен Microsoft. [ нужна ссылка ] Это позволило хранить документы ActiveX в том же многопотоковом формате, который ActiveX использует внутри себя. Фильтр файловой системы NSS был загружен и использовался для прозрачной для приложения обработки нескольких потоков, а когда файл переносился на дисковый том, не отформатированный в NTFS, он также переносил несколько потоков в один поток. [ 16 ]
Доменный сокет Unix (сокет)
[ редактировать ]В Windows 10, сборка 17063 (для стабильной версии 1803), Microsoft представила в Windows доменные сокеты Unix. Это реализуется с помощью драйвера ядра afunix.sys и новой точки повторной обработки в файловой системе. Сокеты домена Unix распространены в системах BSD и Linux и могут рассматриваться как стандарт межпроцессного взаимодействия в этих системах; поэтому их внедрение в Windows позволит упростить внедрение кода и обеспечить межплатформенную переносимость. [ 17 ]
Сжатие системы
[ редактировать ]В Windows 10 только для чтения представлены алгоритмы сжатия CompactOS для файловой системы NTFS, взятые из формата Windows Imaging Format (WIM); они предназначены для сжатия системных файлов Windows и уменьшения использования дискового пространства. [ 18 ]
Внутри сжатый файл записывается как точка повторной обработки с тегом IO_REPARSE_TAG_WOF (0x80000017), где WoF означает фильтр наложения Windows, [ 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 как часть своего общего режима работы. [ нужна ссылка ]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ " Руководство по настройке клиента Microsoft Windows Vista " Wiley Publishing, Inc. 2007 стр.285
- ^ Перейти обратно: а б с д Андре, Жан-Пьер (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" . Гитхаб . Проверено 12 декабря 2019 г.
- ^ Марк Руссинович . «Внутри Win2K NTFS, часть 1» . Сеть разработчиков Microsoft . Проверено 18 апреля 2008 г.
- ^ «Символические ссылки (Windows)» . MSDN.
- ^ «Отслеживание распределенных ссылок и идентификаторы объектов» .
- ^ «Клиент отслеживания распределенных ссылок (системные службы для семейства Windows Server 2003 и операционных систем Windows XP)» . Архивировано из оригинала 07 марта 2016 г. Проверено 26 августа 2017 г.
- ^ Болоски, Билл; Корбин, Скотт; Гебель, Дэвид; Дусер, Джон (январь 2000 г.). Единое хранилище экземпляров в Windows 2000 (PDF) . Материалы 4-го симпозиума USENIX по Windows-системам. Сиэтл, Вашингтон: Microsoft Research и Balder Technology Group.
- ^ FileCAB-Team (10 апреля 2019 г.). «Введение в дедупликацию данных в Windows Server 2012» . Техническое сообщество Microsoft .
- ^ «Взаимодействие с дедупликацией данных» . docs.microsoft.com .
- ^ Сэвилл, Джон (дата неизвестна). Что такое собственное структурированное хранилище? Windows ИТ-специалист. Получено из «Что такое собственное структурированное хранилище?» . Архивировано из оригинала 27 сентября 2007 г. Проверено 3 декабря 2007 г. .
- ^ «AF_UNIX приходит в Windows» . Инструменты командной строки Windows для разработчиков . Проверено 25 июля 2024 г.
- ^ «Компактная ОС, одноэкземплярное копирование и оптимизация образов» . Майкрософт . Проверено 1 октября 2019 г.
- ^ «Что такое WofCompressedData? Означает ли WOF, что Windows — собака?» . 18 июня 2019 г.
- ^ «Re: [ntfs-3g-devel] Экспериментальная поддержка файлов Windows 10, сжатых системой» . sourceforge.net . Проверено 1 октября 2019 г.
- ^ Биггерс, Эрик (29 апреля 2019 г.). «ntfs-3g-system-compression: плагин NTFS-3G для чтения файлов, сжатых системой» . Гитхаб . Проверено 1 октября 2019 г.
- ^ Обзор загрузки файла образа Windows (WIMBoot)
- ^ Раймонд Чен. Что такое WofCompressedData? Означает ли WOF, что Windows — собака? Блоги разработчиков Microsoft.
Внешние ссылки
[ редактировать ]- Запись в базе знаний Microsoft 262797: «Поддержка точки повторной обработки в кластерах на базе Windows 2000» на Wayback Machine (архивировано 21 октября 2012 г.)
- Поддержка точки повторной обработки в кластерах под управлением Windows 2000
- Официальная документация по точкам повторной обработки в Microsoft Docs
- Ссылки NTFS, соединения каталогов и ярлыки Windows