NTFS: Reparse points. Точки повторной обработки

Описание точек повторной обработки NTFS (reparse points)




В файловой системе NTFS файл или каталог может содержать в себе reparse point, что переводится на русский язык как «точка повторной обработки». В файл или каталог добавляются специальные данные, файл перестаёт быть обычным файлом и обработать его может только та программа, которая знает как воспринимать такие данные. Есть возможность создавать reparse point своего собственного формата, но для их обработки придётся писать и устанавливать фильтр файловой системы. Существуют готовые типы reparse point, заданные Microsoft. Например, через точки повторной обработки в Windows реализуются символьные ссылки (symlink) и символьные связи (junction point).

У технологии reparse point есть следующие ограничения:

  • Данные reparse point могут быть присоединены к директории. Но каталог при этом обязан быть пустым, иначе reparse-данные невозможно присоединить. После присоединения становится невозможно создавать внутри файлы или папки, ведь до тех пор, пока к папке присоединены reparse-данные, каталог перестаёт быть каталогом и становится совершенно другой сущностью файловой системы.
  • Данные reparse point нельзя использовать одновременно с расширенными атрибутами. Невозможно сделать из файла точку повторной обработки, если он содержит расширенные атрибуты, и наоборот, невозможно задать у файла расширенные атрибуты, если он уже содержит данные reparse point.
  • И последнее ограничение касается размера reparse-данных. Общее количество reparse-данных у одного файла не может превышать 16 килобайт. Попытка задать файлу reparse-данные большего размера потерпит неудачу.

Наглядно увидеть технологию в работе легче всего, используя её для создания двух видов символьных ссылок в Windows. Первый вид ссылок называется junction point, он доступен для использования начиная с Windows 2000. Второй вид ссылок называется symlink, и появился он только в Windows Vista.

Есть небольшое затруднение с тем, как называть по-русски технологию junction point. Можно называть её символьной ссылкой, но начиная с Windows Vista имеется поддержка настоящих символьных ссылок (symlink). Утилита mklink из Windows 7 называет junction «соединением», а symlink – «символической ссылкой». Я называю junction points символьными связями, чтобы не путать с настоящими символьными ссылками.

Позже на сайте появятся страницы, описывающие поведение и программирование всех видов ссылок Windows, а также тексты о других возможностях файловой системы NTFS.

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

Тип данных Значение тега Назначение
IO_REPARSE_TAG_MOUNT_POINT 0xA0000003L Точки подключения дисковых томов и символьные связи каталогов. Технология доступна, начиная с Windows 2000.
IO_REPARSE_TAG_HSM 0xC0000004L Hierarchical Storage Management - технология хранения данных, автоматически распределяющая данные между дорогими и дешёвыми накопителями.
IO_REPARSE_TAG_HSM2 0x80000006L
IO_REPARSE_TAG_SIS 0x80000007L Single Instance Storage (SIS) - в Windows Storage Server 2008 R2 технология, увеличивающая размер дискового пространства за счёт размещения дублирующих файлов в общем хранилище.
IO_REPARSE_TAG_WIM 0x80000008L Метаданные формата образа диска Windows Imaging Format, используемого в последних релизах ОС Windows.
IO_REPARSE_TAG_CSV                        0x80000009L Cluster Shared Volumes – в Windows Server 2008 R2 технология, позволяющая иметь диск, доступный на чтение и запись всем нодам, входящим в кластер системы виртуализации Hyper-V.
IO_REPARSE_TAG_DFS                        0x8000000AL Distributed File System (DFS) — компонент Microsoft Windows, использующийся для упрощения доступа и управления файлами, физически распределёнными по сети.
IO_REPARSE_TAG_DFSR                       0x80000012L
IO_REPARSE_TAG_SYMLINK                    0xA000000CL Символьные ссылки. Технология доступна, начиная с Windows Vista.
IO_REPARSE_TAG_DRIVER_EXTENDER 0x80000005 Метаданные технологии Windows Home Server Drive Extender, используются для создания ссылок на файлы, продублированные на нескольких физических носителях.
IO_REPARSE_TAG_IIS_CACHE 0xA0000010L Точки повторной обработки, использующиеся в Internet Information Services(?)

По теме точек повторной обработки также есть следующее:


При копировании материалов хорошим тоном будет указание авторства и ссылка на сайт.