ПРЕСС-ЦЕНТР

Расширенный фильтр записи (Enhanced Write Filter)

МКА 6/2005

С.В. Золотарёв, ЗАО "РТСофт"

Это вторая заметка из новой рубрики "Встраиваем вместе", которая появилась в прошлом выпуске МКА. В ней мы продолжим рассмотрение проблем, с которыми сталкиваются разработчики встраиваемых компьютерных приложений на основе операционной системы Windows XP Embedded, и посвятим её работе с Расширенным Фильтром Записи (EWF).

Операционная система Windows XP Embedded способна загружаться с носителей, защищённых по записи (read-only), таких как CD-ROM. Эта возможность обеспечивается с помощью Расширенного Фильтра Записи (Enhanced Write Filter, EWF), который позволяет работать с носителями, предназначенными только для чтения (read-only). Благодаря EWF, содержимое целевой системы защищено путём перенаправления всех операций записи в альтернативное место хранения, называемое оверлеем. В этом контексте оверлей похож на прозрачную плёнку. Любое изменение, сделанное поверх оверлея, изменяет образ, как мы это видим на экране проектора. На рис. 1 показана общая концепция EWF.

 

Рис. 1. Концепция EWF

Для каждого защищённого тома можно выбрать один из двух типов хранения информации оверлея: оперативную память или диск. Когда используется RAM overlay, то данные оверлея хранятся в системной памяти записи на диск перенаправляются в системную память; при этом Windows XP Embedded не требует при работе долговременной памяти для чтения/записи, однако все данные оверлея теряются, когда система заканчивает работу или перезагружается. Обычно вся конфигурационная информация хранится в специальном разделе, однако существует специальный вариант использования режим EWF RAM (Reg), при котором служебная информация хранится только в реестре.

Второй вариант Disk overlay, когда информация сохраняется и после перезагрузки. Для хранения данных дисковые оверлеи используют выделенный заранее раздел диска, называемый EWF Volume. Все записи на диск перенаправляются на EWF Volume. Если вы используете режим Disk overlay, то EWF позволяет иметь более одного оверлея поверх защищаемого тома. Следовательно, вы можете разделить слои в стеке оверлеев для восстановления вида тома назад в предыдущее состояние. Кроме того, могут использоваться до 9 уровней оверлеев.

EWF Volume

Том EWF (EWF Volume) хранит конфигурационную информацию обо всех защищённых с помощью EWF томах на устройстве, включая число и размер защищаемых томов и уровнях оверлеев. На устройстве может создаваться только один том EWF это раздел с сигнатурой 0x45, который невидим или не опознаётся операционной системой.

Том EWF создаётся и форматируется при первой загрузке исполнительного образа целевой системы (First Boot Agent, FBA). Он создаётся либо из нераспределённого пространства на диске, либо в свободной области в extended partition. Если extended partition доступен на диске, то EWF будет пытаться создать том EWF внутри свободного пространства в extended partition, даже если на диске есть ещё нераспределённое пространство. При использовании режима дискового оверлея том EWF хранится в начале раздела на диске, который выделен для тома EWF, как это показано на рис. 2.

Рис. 2. Пример системы с дисковым типом оверлея EWF

Когда этап FBA завершён, все ошибки при создании или форматировании тома EWF будут записаны в файл FBALOG.txt в папке Windows\FBA. Том EWF хранит главную таблицу тома EWF, стек оверлеев и данные оверлеев. Главная таблица тома EWF хранит информацию о томе EWF. Каждый стек оверлеев соответствует защищаемому тому и делится на множество уровней, которые соответствуют контрольным точкам. В наличии может быть только один том EWF, но допустимо иметь более одного защищаемого тома (до 9).

Фильтр EWF не защищает динамических дисков (все защищаемые тома должны конфигурироваться как первичные диски) и не обрабатывает записи на диск для съёмных носителей (флоппи-диск или Zip-устройство) или внешних устройств (USB/1394 HDD или CD).

При создании тома EWF требуются следующие минимальные ресурсы:

  • 32 Мбайт для оверлея в режиме EWF Disk;
  • 64 Кбайт для оверлея в режиме EWF RAM.

Том EWF может не создаваться по различным причинам. Чаще всего потому, что:

  • на диске уже существуют 4 первичных раздела (что является максимальным числом первичных разделов);
  • нет свободного места сразу после первичного раздела;
  • нет свободного места внутри extended partition;
  •  уже существует том EWF, который не был удалён (это типичная ситуация на этапе разработки целевой системы, когда одна и та же конфигурация тестируется периодически; для устранения этой ошибки надо удалить раздел EWF с помощью команды Etprep /delete).

Файлы и компоненты EWF

Существуют три компонента, относящиеся к использованию возможностей EWF. Это EWF NTLDR, EWF Manager Console Application и компоненты EWF.

Компонент EWF NTLDR нужен только в том случае, когда EWF использует дисковый оверлей при загрузке c носителя, на который может выполняться запись. Этот компонент включает модифицированную версию загрузчика NT (NT Loader), которая понимает структуру отображения тома EWF. Компонент EWF NTLDR способен загружать большинство современных образов операционных систем и имеет доступ ко всем изменениям, которые были сделаны перед последней загрузкой системы.

Включение компонента EWF Manager Console Application позволяет использовать приложение Ewfmgr.exe. С помощью приложения Ewfmgr.exe можно отслеживать статус каждого оверлея защищаемого тома, получать формат конфигураций оверлея EWF и выдавать набор команд для драйвера EWF. Для получения списка опций в командной строке и описания их функций наберите ewfmgr.exe /?.

Компонент Enhanced Write Filter включает файлы, которые реализуют возможности этого компонента. Файл Ewf.sys драйвер фильтра, отвечающий за перенаправление пакетов запросов ввода/вывода записи на диск (I/O Request Packets IRP) на EWF оверлей, так что сам диск остаётся без изменения. Для IRP-запросов по чтению драйвер фильтра ищет соответствующий сектор диска в текущем стеке оверлея. Если сектор найден, то он возвращается из стека оверлея, в противном случае возвращается сектор из реального диска. Драйвер фильтра включает INF-файл (Ewf.inf), цель которого идентифицировать EWF в системе, так чтобы он не выглядел как неопознанное ("unknown") устройство. Файл Ewfdll.dll создаёт том EWF и конфигурирует расширенный фильтр записи на этапе первой загрузки (FBA). Файл Ewfinit.dll вызывается на этапе FBA и отвечает за форматирование тома EWF.

Параметры компонента Enhanced Write Filter

Компонент Enhanced Write Filter имеет установки, которые могут быть разделены на две группы. Одна группа установок является глобальной для EWF, так как относится ко всему исполняемому образу. Глобальные установки специфицируют число защищаемых томов, максимальное число уровней оверлеев и размер тома EWF (см. рис. 3). Фильтр EWF может защищать до 9 томов, каждый том может иметь до 9 уровней оверлеев. Как только эти два свойства установлены в Target Designer е, они уже не могут быть изменены.

При использовании дисковых оверлеев размер EWF-раздела должен быть достаточно большим, чтобы вместить суммарный размер всех томов, которые защищены дисковым оверлеем EWF. В системе может существовать только один EWF-том и должно быть доступно достаточно нераспределённого места на диске для тома EWF. Достаточное место для размещения требуемого размера задаётся в параметре EWF partition size. Если том EWF заполнен, то это проявляется как при переполнении любого диска.

 

Рис. 3. Пример конфигурирования тома EWF

Другая группа установок специфична для каждого защищаемого тома. Когда защищается более одного тома, то надо использовать кнопки Next Volume и Previous Volume для перехода к следующему или предыдущему защищаемому тому. Ниже описываются установки для каждого защищаемого тома.

Start EWF Enabled. Когда используется эта установка (в том числе по умолчанию) параметр определяет, что EWF будет запускать защиту диска сразу после первой загрузки.

Enable Lazy Write. Если используется эта опция, то отображаемые данные защищаемого тома записываются в кэш для улучшения производительности. Фильтр EWF сбрасывает кэш на диск оптимальным способом, обычно в фоновом режиме. Эта опция уменьшает число записей на EWF том, что важно при использовании флэш-памяти.

Disk Number определяет номер диска защищаемого тома (номера дисков начинаются с 0; первый диск имеет номер 0).

Partition Number определяет номер раздела защищаемого тома (номера разделов начинаются с 1; первый раздел имеет номер 1).

Disk Type определяет тип диска: IDE или SCSI.

Overlay Type определяет, будут ли данные оверлея записываться на диск или в ОЗУ (RAM).

Optimization Option. Эта опция может выбираться для определения того, как EWF управляет его собственным внутренним размещением внутри EWF-раздела с целью достижения оптимальной скорости, пространства или частоты записи на диск. Возможны следующие варианты:

  • Optimal Performance (по умолчанию) обеспечивает наиболее быстрое выполнение, но использует больше места в разделе EWF;
  • Use Less Overlay Space тратит меньше места в разделе EWF, но медленнее, чем при использовании опции Optimal Performance. Когда EWF требуется разместить новый сектор в разделе EWF, он выполняет сравнение с новыми данными и уже существующими данными на диске. Если данные совпадают, то размещение пропускается;
  • Use Less Overlay Space & Less Writes вне зависимости от того, запрашивается память или нет, выполняется сравнение новых данных с уже существующими данными на диске, когда EWF требуется записать сектор внутри раздела EWF. Из трёх вариантов оптимизации этот самый медленный, но он используют наименьшее число записей, что важно для увеличения срока жизни таких устройств, как флэш-память.

Утилита EWF Manager Application

Дополнительная утилита EWF Manager Application используется для менеджмента EWF. Включать её в конфигурацию целевой системы не обязательно. Она позволяет проверять состояние EWF с помощью команды:

Ewfmgr

EWF manager отобразит результат, похожий на следующий:

Overlay Configuration

Volume Size 2048030208

Segments 8192

Segment Size 249856

Free segments 8192

Max Levels 3

Max Protected Volumes 1

Protected Volumes 1

Overlay volume percent full 0.00

Protected volumes

Arc Path "\Device\HarddiskVolume1"

Изложенная в данном разделе информация основывается на сведениях из различных источников, в том числе с сайта компании Microsoft, а также из книги "Windows XP Embedded. Step by Step" (автор James Beau Cseri). Весьма полезной является информация о EWF под названием "Where to find EWF Information" на странице http://blogs.msdn.com/embedded/archive/2005/10/26/485389.aspx.

Знание EWF нам пригодится в следующих выпусках рубрики "Встраиваем вместе" при изучении вопросов построения загрузочных компакт-дисков в формате El Torito.