Описание точек повторной обработки 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(?) |
via