Серверные технологии хранения данных в среде Windows® 2000 Windows® Server 2003
Шрифт:
Функция перечисления файлов и каталогов (например, FindFirst и FindNext) возвращает флаг FILE_ATTRIBUTE_SPARSE_FILE. Функции Win32 API BackupRead, BackupWrite, CopyFile и MoveFile обновлены для работы с разреженными файлами (например, функция CopyFile сохраняет разреженное состояние файла и не выполняет операции чтения и записи, которые преобразуют файла в неразреженное состояние).
Отслеживание и управление дисковыми квотами реализованы в NTFS, которая предоставляется
отключить эту функцию;
использовать ее для отслеживания объемов дискового пространства;
задействовать ее для отслеживания и принудительного применения политик, которые ограничивают объем дискового пространства, выделенного пользователю.
Дисковые квоты отслеживаются на основе идентификатора безопасности пользователя (SID). Этот уникальный идентификатор назначается каждому пользователю, зарегистрированному на компьютере под управлением Windows NT (в качестве пользователя может выступать другой компьютер или системная учетная запись – по сути, тот же пользователь с набором привилегий, отличных от набора привилегий для стандартного пользователя). Каждый файл и каталог содержит идентификатор безопасности своего владельца. Дисковые квоты указываются для каждого тома, а утилиты администрирования позволяют реплицировать политику квот на другие тома.
Как уже неоднократно отмечалось, Windows 2000 позволяет возвращать список файлов, принадлежащих определенному пользователю. Эта функция предоставляет собой элемент технологии отслеживания дисковых квот, так как при отслеживании квот вычисляется общий объем дискового пространства, которое выделено определенному пользователю на хранение его файлов.
В файловой системе NTFS для Windows 2000 уменьшено количество случаев, требующих запуска утилиты CHKDSK, что намного сокращает время работы данной утилиты. Будет уместным вспомнить выражение «конечный результат может отличаться от продемонстрированного», так как реальные результаты зависят от размера тома и типа повреждения. Для томов, содержащих миллионы файлов, утилита CHKDSK может работать быстрее на порядок.
В Windows 2000 предоставляется утилита дефрагментации, которая на самом деле является «облегченной» версией утилиты DiskKeeper от компании Executive Software. Как и в Windows NT 4.0, в Windows 2000 поддерживаются специальные API дефрагментации. Встроенная утилита дефрагментации обладает определенными ограничениями, которые не свойственны большинству полноценных приложений дефрагментации, например:
встроенная утилита не может дефрагментировать главную таблицу файлов NTFS (MFT) или файл подкачки;
встроенная утилита не может дефрагментировать каталоги;
встроенная утилита не поддерживает систему Microsoft Cluster Server.
Появление точек повторной обработки (reparse points) значительно усовершенствовало архитектуру файловой системы NTFS и подсистемы ввода- вывода Windows NT. Обратите внимание, что реализация точек повторной обработки потребовала изменения подсистемы ввода-вывода и NTFS. Возможности точек можно внедрить и в другие файловые системы, отличные от NTFS. Кроме того, точки повторной обработки обеспечивают работу следующих важнейших функций Windows:
символьные ссылки;
точки соединения каталогов;
точки монтирования томов;
служба SIS (Single Instance Storage);
служба удаленного хранения HSM (Hierarchical Storage Management).
Все эти возможности рассматриваются в разделах 10.2.10.1–10.2.10.4.
Точки повторной обработки – это объект каталога или файла NTFS. Точка может быть создана, удалена или изменена приложением, использующим Win32 API в целом и функции CreateFile, ReadFile, WriteFile в частности. Вспомните, что Win32 API предоставляет приложениям возможность создавать и менять определенные пользователем атрибуты файла или каталога. Поэтому точки повторной обработки можно представить в виде определенного пользователем атрибута, который обрабатывается специальным образом. Такая обработка включает в себя обеспечение уникальности элементов объекта атрибута и обработку в подсистеме ввода-вывода. Независимые разработчики программного обеспечения обычно создают следующие приложения:
утилиты пользовательского режима для создания, управления и удаления точек повторной обработки;
драйверы фильтрации файловой системы, реализующие возможности точек повторной обработки.
Рис. 10.1. Структура тега точки повторной обработки
Каждая точка повторной обработки состоит из тега и объекта данных. Тег – это уникальное 32-разрядное число, назначаемое непосредственно Microsoft. Независимые производители могут запросить назначение специального тега. На рис. 10.1 показана структура тега повторной обработки, включая следующие элементы:
бит (М), который указывает, что тег принадлежит драйверу устройства от Microsoft;
бит (L), который указывает на значительные задержки при получении драйвером первого байта данных; в качестве примера моэкно указать службу HSM, при использовании которой получение данных с неинтерактивного носителя может осуществляться достаточно долго;
бит (N), который указывает, что файл или каталог представляют собой ссылку/перенаправление на другой файл или каталог;
зарезервированные биты;
фактическое 16-разрядное значение тега.
Объект данных точки повторной обработки может иметь размер до 16 Кбайт. Файловая система NTFS обеспечивает предоставление этого объекта данных драйверу устройства, созданному производителем. Объект данных предоставляется в процессе использования тбчки повторной обработки в подсистеме ввода-вывода.
На рис. 10.2 рассматривается последовательность рабочих операций и реализация точек повторной обработки. Предполагается, что пользователь обладает необходимыми привилегиями для выполнения запрошенной операции. Кроме того, на рис. 10.2 показан только драйвер фильтрации файловой системы, что позволяет сконцентрироваться исключительно на точках повторной обработки.
Рис. 10.2. Использование точки повторной обработки
Как показано на рис. 10.2, для реализации возможностей точки повторной обработки применяется несколько этапов.
1. Средствами подсистемы Win32 приложение отправляет запрос на открытие файла.
После проверок подсистема Win32 отправляет запрос выполняемому модулю Windows NT.
Диспетчер ввода-вывода Windows NT создает пакет IRP (IRP_MJ_0PEN) и отправляет его NTFS. Пакет IRP перехватывается драйвером точки повторной обработки в файловой системе.