Серверные технологии хранения данных в среде Windows® 2000 Windows® Server 2003

Дайлип Наик

Глава 9 Построение отказоустойчивых систем

 

Увеличение объема хранилищ данных требует усиления мер по защите информации и уменьшения периодов ее недоступности. Это означает, что данные необходимо защищать от повреждения, одновременно стремясь избежать значительных потерь производительности. Массивы RAID представляют собой один из методов достижения баланса между надежностью и производительностью и подробно описываются в первой части главы.

Для обеспечения надежности и восстановления после сбоев данные хранятся в различных местах и постоянно обновляются, благодаря чему изменение в одной реплике данных отражается и на других репликах. Именно эта идея лежит в основе схем зеркального отражения и репликации, разработанных, в частности, для платформы Windows Server.

На пути передачи данных от сервера к устройству хранения не должно быть единственной точки отказа, для чего понадобится технология группового ввода-вывода. Методы группового ввода-вывода для семейства Windows Server рассматриваются в разделе 9.3.

 

9.1 Массивы RAID

Аббревиатура RAID расшифровывается как. Redundant Лггау of independent Disks – избыточный массив независимых дисков. Массивы RAID были разработаны в Калифорнийском университете и описаны в знаменитом документе The Berkeley Paper в 1988 году. Сейчас системы RAID предлагаются многими производителями. В 1993 году организация RAID Advisory Group сформировала программу RAID Conformance, которая позволяла производителям тестировать аппаратное обеспечение для прохождения сертификации RAID Advisory Board. После успешной сертификации производитель получал возможность использовать официальный логотип RAID. Разные версии RAID предоставляют различные уровни производительности и защиты данных, поэтому реализация выбирается в зависимости от конкретных требований.

Практически для всех реализаций массивов RAID общей является идея чередования (striping). Чередование состоит из определения базовой единицы ввода-вывода (обычно она имеет размер от 512 байт до 4 или 8 Мбайт)и метода физического размещения этих единиц на различных дисках. Таким образом, формируются логические блоки для кластеров более высокого уровня. Первая единица может находиться на диске 1, вторая – на диске 2 и т.д.

Массив RAID может быть реализован аппаратно или программно:

в программном обеспечении узла (сервера);

в адаптере шины, подключенном к узлу (серверу);

в устройстве хранения.

В некоторых случаях используется сразу несколько методов, например реализация массива RAID как для узла, так и для устройств хранения.

Диспетчер логических дисков (LDM) в Windows NT служит одним из примеров программной реализации массива RAID. Массив RAID, реализованный на узле (host-based RAID), иногда называетсяпрограммным RAID и обладает преимуществами, описанными ниже.

Стоимость аппаратного обеспечения ниже, так как устройствам хранения не требуется высокоэффективная аппаратная логика.

Существует возможность использования дисков от различных поставщиков.

При реализации системы, аналогичной диспетчеру томов, предоставленные службы виртуализации используются для преодоления ограничений аппаратного обеспечения; например, несколько небольших дисков могут комбинироваться для формирования большого логического тома.

Программный массив RAID обладает гибкой конфигурацией; например, может обеспечивать зеркальное отражение с помощью двух независимых систем RAID, объединять несколько номеров LUN в один более крупный номер LUN или разделить один LUN на несколько меньших логических томов.

В то же время программному массиву RAID присущи определенные недостатки.

Вычисление четности и других данных, необходимых для работы массива, требует значительных затрат времени центрального процессора. Для некоторых приложений Microsoft не рекомендуется использование

программного массива RAID, который чрезмерно нагружает ресурсы процессора.

Для каждой операции записи по шине ввода-вывода передается две операции записи, одна для данных, вторая для четности.

При использовании программных массивов RAID два уровня абстракции могут значительно повысить сложность и накладные расходы.

Файловая система добавляет уровень абстракции, осуществляя преобразование данных файлового ввода-вывода в данные блочного ввод-вывода на уровне тома.

Диспетчер тома (внедряющий программный массив RAID) добавляет, еще один уровень абстракции, выполняя преобразование блоков тома в дисковые блоки. В контексте распределенной файловой системы (DFS) это означает необходимость получения двухуровневых блокировок – физических или виртуальных (т.е. файл, открытый в эксклюзивном режиме, может обрабатываться как виртуально заблокированный).

Существует несколько типов реализаций массива RAID, которые рассматриваются в разделах 9.1.1–9.1.7.

9.1.1 Массив RAID 0

В массиве RAID 0 данные расслаиваются на несколько жестких дисков. Таким образом, массив RAID 0 выигрывает в производительности, но не предоставляет избыточности или защиты данных.

Как показано на рис. 9.1, при использовании массива RAID 0 данные по очереди записываются на разные диски. Приложение выдает несколько запросов на запись. В данном случае предполагается, что приложение всегда выдает запрос на запись с фиксированным буфером и размер буфера совпадает с размером единицы записи в массиве RAID. Данные на рис. 9.1 распределены по нескольким дискам поочередно (каждое число в прямоугольнике представляет собой запрос на запись).

Массив RAID 0 особенно эффективен в аспекте производительности операций ввода-вывода, так как чтение и запись на разные диски может выполняться параллельно. Однако самый большой недостаток RAID 0 – это отсутствие устойчивости к ошибкам. Если окажется неисправным один диск в массиве RAID 0, данные будут утрачены и на других дисках, следуя правилу «потерял один – потеряли все».

Более того, чередование может повысить быстродействие, но при чрезмерном использовании или в неподходящий момент ситуация фактически

Рис. 9.1. Массив RAID 0

становится прямо противоположной и быстродействие снижается. Приложения, ориентированные на транзакции, обычно выполняют ввод-вывод небольшими блоками размером 1 Кбайт и меньше. Приложения, обрабатывающие поточные данные, обычно осуществляют ввод-вывод гораздо большими блоками. Несмотря на это, устройства хранения достигают наивысшей пропускной способности, когда ввод-вывод выполняется блоками намного большего размера, например до 512 Кбайт. Если в такой ситуации воспользоваться восьмикратным чередованием, то размер блока данных для каждого диска составит 64 Кбайт, что приведет к снижению общей производительности.

9.1.2 Массив RAID 1

В массиве RAID 1 операция записи зеркально отражается на первичный и вторичный накопители. На рис. 9.2 показана конфигурация массива RAID 1. Приложение выдает запрос на запись буфера, обозначенного как буфер 1. Данные буфера 1 записываются на два отдельных физических диска. Точно так же приложение выдает запрос на запись буфера 2. Эти данные также записываются не на один, а на два жестких диска.

В идеальных условиях основной и вторичный диски могут быть идентичными. Это означает эффективное выполнение операций чтения в том случае, если они распределены между первичным и вторичным диском. Массив RAID 1 обеспечивает наилучшую скорость чтения среди всех массивов RAID. К его недостаткам относится требование к свободному дисковому простран-

Рис. 9.2. Массив RAID 1

ству: для RAID 1 требуется, как минимум, вдвое больший объем дискового пространства, чем для других массивов. Снижение стоимости жестких дисков несколько уменьшает значимость этого недостатка. Существенное преимущество RAID 1 состоит в мгновенной доступности данных на вторичном диске в случае неисправности первичного диска. Массив RAID 1 – идеальный выбор при использовании в массиве только двух дисков.

9.1.3 Массив RAID 2

Массив RAID 2 больше не используется. В массиве вычисляется код коррекции ошибок (error correction code – ЕСС) для чередующихся записей, однако современные жесткие диски и без того содержат подобную информацию.

9.1.4 Массив RAID 3

Массив RAID 3 обеспечивает чередование с выделенной четностью. При этом информация о четности всегда хранится на определенном выделенном диске, а данные распределены по нескольким дискам.

На рис. 9.3 показана конфигурация массива RAID 3. Приложение выдает один запрос записи, который содержит буфера 1, 2 и 3. Эти данные размещаются на разных дисках. Кроме того, массив RAID 3 вычисляет информацию о четности (Pi), охватывающую все три буфера. Информация о четности записывается на отдельный диск, отличный от дисков, на которые были записаны данные буферов 1, 2 и 3. Точно так же буфера данных 4, 5 и б записываются на различнее диски, а информация о четности для этих буферов

Рис. 9.3. Массив RAID 3

называется Р2; буфера 7, 8 и 9 аналогичным образом записываются на разные диски, данные о четности этих буферов называются РЗ и т.д. Обратите внимание, что информация о четности записывается на один и тот же диск.

Массив RAID 3 обычно требует участия всех дисков массива в операции чтения или записи. Если диск оказывается неисправным, в массив добавляется новый диск и данные с потерянного диска восстанавливаются на основе данных других дисков и информации о четности. Хотя массив RAID 3 имеет слабую поддержку в мире персональных компьютеров (например, не поддерживается контроллерами Adaptec), подобные ему часто применяются в высокопроизводительных суперкомпьютерах.

9.1.5 Массив RAID 4

Массив RAID 4 напоминает массив RAID 3, но при чередовании используются ббльшие единицы записи. Операции чтения распределяются между несколькими дисками, а операции записи выполняются последовательно. Массив RAID 4 также практически не поддерживается производителями, например контроллерами Adaptec.

9.1.6 Массив RAID 5

Массив RAID 5 обеспечивает чередование с распределенной четностью и представляет собой наиболее эффективную реализацию концепции чередо-

вания данных в массивах RAID. Единственное техническое отличие от массива RAID 3 состоит в хранении информации о четности на всех дисках массива.

На рис. 9.4 показана конфигурация массива RAID 5. Приложение выдает единственный запрос на запись данных из буферов 1, 2 и 3. Эти данные размещаются на разных дисках. Кроме того, массив RAID 5 вычисляет четность для всех трех буферов, и эта информация о четности (Р1) записывается на диск, отличный от дисков, на которые были записаны данные из буферов 1, 2 и 3. Точно так же буфера 4. 5 и 6 записываются на разные диски, а информация о четности для этих буферов называется Р2; буфера 7, 8 и 9 аналогичным образом записываются на разные диски, и данные о четности для этих буферов называются РЗ. Обратите внимание: в отличие от массива RAID 3, информация о четности распределена по всем дискам, а не хранится только на одном из них.

Массив RAID 5 обеспечивает баланс между производительностью и защитой данных. В массиве операции чтения могут обрабатываться параллельно несколькими дисками. Операции записи обычно требуют использования, как минимум, двух дисков: одного для данных и одного для четности. RAID 5 – наиболее популярный массив, требующий применения, как минимум, трех дисков. Кроме того, операция восстановления массива при отказе одного из дисков остается весьма трудоемкой.

9.1.7 Двухуровневый массив RAID

Двухуровневый массив RAID (Dual-level RAID) иногда называютгибридным массивом RAID. В двухуровневых схемах RAID различным образом комбинируются базовые реализации массива RAID с сохранением их преимуществ и сокращением влияния некоторых недостатков. В этом разделе вкратце рассматриваются массивы RAID 10, RAID 30 и RAID 50.

Как показано на рис. 9.5, массив RAID 10 комбинирует возможности массивов RAID 0 и RAID 1. Данные записываются на два различных диска, каждый из которых зеркально отражается. Массив RAID 10 обеспечивает чередование зеркальных массивов на базе, как минимум, четырех дисков; при этом даже отказ в работе двух дисков не приведет к нарушению доступа к данным. Массив RAID 10 довольно популярен, так как позволяет реализовать избыточность данных и повышенное быстродействие при относительно несложной реализации.

Массив RAID 30 – это комбинация возможностей массивов RAID 0 и RAID 3 (рис. 9.6). При использовании массива RAID 30 данные записываются на несколько дисков (RAID 0) и выделенный диск четности. Этот массив обеспечиваетчередование с выделенной четност. ью. Для реализации массива RAID 30 требуется, как минимум, шесть дисков, причем допускается отказ в работе до двух дисков (по одному диску на массив). Массив RAID 30

Рис. 9.5. Массив RAID 10

Рис. 9.6. Массив RAID 30

обычно используется в том случае, когда данные включают в себя большие файлы с последовательным доступом, например поточное видео.

Как показано на рис. 9.7, в массиве RAID 50 комбинируются возможности массивов RAID 0 и RAID 5. При использовании массива RAID 50 данные записываются на несколько дисков, как в массиве RAID 0, и на все диски поочередно записывается информация о четности, как в массиве RAID 5. Этот массив основан на чередовании с невыделенной или распределенной четностью. Для реализации RAID 50 требуется, как минимум, шесть дисков и возможен отказ в работе до двух дисков (по одному на каждый массив). В отличие от RAID 30, массив RAID 50 эффективен при работе с относительно небольшими файлами.

Некоторые контроллеры RAID поддерживают несколько идентификаторов SCSI. Кроме того, контроллеры RAID допускают использование нескольких LUN на одно устройство SCSI (так называемаяподдержка множественных номеров LUN).

Рис. 9.7. Массив RAID 50

 

9.2 Реализация массива ftAID на платформе Windows NT

Один из очевидных методов реализации массива RAID на платформе Windows NT состоит в поддержке массива на уровне аппаратного обеспечения, например в адаптере шины или контроллере устройства хранения.

В семействе Windows Server массив RAID поддерживают несколько драйверов, включая устойчивый к отказам драйвер FtDisk, драйвер LDM, который поставляется в Windows 2000, и драйвер LVM VERITAS, доступный для платформы Windows 2000. Все эти драйверы рассматривались в главах 1 и б. Поддержка массивов RAID, обеспечиваемая этими драйверами, рассматривается в табл. 9.1.

Таблица 9.1. Массивы RAID, поддерживаемые различными диспетчерами томов Windows

 

9.3 Обеспечение избыточной отказоустойчивости

Одним из методов достижения отказоустойчивости является буквальное дублирование каждого компонента. Вместо одного сервера можно установить кластер, что позволит не потерять доступ к данным при отказе в работе одного из серверов.

На рис. 9.8 показан сервер с несколькими адаптерами шины. Каждый адаптер подключен к коммутатору, а каждый коммутатор снабжен двойным подключением к устройствам хранения с двумя портами. Единственной точкой отказа на рис. 9.8 является сервер. Как уже отмечалось, создание кластера позволит избавиться от этой точки отказа. Тем не менее в этой главе рассматривается конфигурация с единственным сервером. Основное внимание стоит обратить на два адаптера шины, установленные на сервере, – подобную архитектуру можно использовать и для кластеров. Простой установки двух адаптеров шины на компьютере под управлением Windows NT недостаточно. Необходимо использовать специальное программное обеспечение, которое рассматривается более подробно в разделах 9.3.1 и 9.3.2.

Рис. 9.8. Отказоустойчивая конфигурация

9.3.1 Поддержка группового ввода-вывода в Windows 2000 и Windows Server 2003

Компания Microsoft сообщила о поддержке технологий группового ввода-вывода, защиты целостности данных и балансировки нагрузки в Windows 2000 и Windows. Server 2003. При этом предоставляется универсальная система, которую производители компьютеров и независимые поставщики аппаратного обеспечения должны настроить под конкретные особенности различных устройств. Производителю следует получить инструментарий разработки, который доступен при условии подписания договора о неразглашении. Конечный пользователь может получить готовую систему только от производителя, а не от Microsoft..5

Еще раз обратите внимание на рис. 9.8, демонстрирующий схему сервера под управлением Windows NT с установленными двухпортовыми адаптерами шины. Не усложняя ситуации, предположим, что каждый диск отформатирован как единый том. Основная идея такой конфигурации – наличие нескольких путей ввода-вывода между жесткими дисками и сервером, что позволяет добиться устойчивости к отказам. Для конфигурации, приведенной на рис. 9.8, можно рассмотреть иерархию объектов устройств, которые создаются в стеке драйверов подсистемы хранения Windows.

На рис. 9.9 представлено дерево объектов для конфигурации рис. 9.8. Обратите внимание на пары PDO-FDO (объект физического устройства-объект функционального устройства), которые позволяют использовать возможности определенного устройства (см. главу 1). Вспомните, что объекты физического устройства, кром)е всего прочего, предоставляют информацию, необходимую для использования устройства. Для устройств хранения эта информация может содержать идентификатор шины SCSI, идентификатор целевого устройства и LUN. Объект функционального устройства предоставляет сведения, необходимые для получения доступа к устройству. Для устройств хранения примером такой информации служат данные о системной организации диска.

В нижней части на рис. 9.9 показано, что подсистема РпР находит шину PCI, создает для нее объект физического устройства и загружает драйвер шины PCI, который создает объект функционального устройства для шины и подключает его к объекту физического устройства. Далее перечисляются устройства, подключенные к шине PCI. В результате обнаруживаются два адаптера шины. Драйвер шины PCI создает два объекта физического устройства, по одному для каждого адаптера шины. Подсистема РпР обнаруживает драйвер и загружает SCSIPort или Storport вместе с драйвером мини-порта, предоставленным производителем. Драйвер SCSIPort или Storport создает объект функционального устройства для каждого адаптера и подключает его к соответствующим объектам физического устройства.

Рис. 9.9. Дерево объектов устройств без группового ввода-вывода

После этого драйвер SCSIPort или Storport начинает работать как драйве]) шины и перечисляет устройства, подключенные к шине SCSI. Поскольку к шине подключено два устройства, сообщается о двух (дисковых) устройствах. Кроме того, так как к системе подключено два адаптера шины SCSI и перечисление выполняется для каждого из них. каждый адаптер сообщит о двух устройствах. Таким образом, драйвер SCSIPort или Storport в этом случае «увидит» четыре дисковых устройства. Создаются объекты физического устройства для четырех дисков и загружается драйвер класса диска, который создает четыре объекта функционального устройства и подключает каждый объект к соответствующему объекту физического устройства. Без группового ввода-вывода перечисляются разделы объектов функционального устройства диска и для управления томами, существующими на этих разделах, загружается драйвер FtDisk или LDM. (Чтобы не усложнять обсуждение. предположим, что каждый диск состоит из одного раздела и каждый раздел содержит один том.)

Программные системы более высокого уровня получат сведения о четырех томах устройств хранения, тогда как в действительности существует только два тома. Предположим, что эти два тома отформатированы для NTFS.

Файловая система также получит данные о четырех томах, для которых будет произведена попытка запуска NTFS. Очевидно, что NTFS, работающая на томах H1L1 и H2L1 (см. рис. 9.9), окажется несинхронизированной. При этом обязательно будут перезаписываться данные каждой файловой системы, например данные в журнале изменений, и в результате том окажется поврежденным.

Несколько производителей разработали метод, который не только решает описанную проблему, но и предоставляет богатый набор дополнительных возможностей, например сохранение и восстановление целостности данных, а также балансировка нагрузки. Функция сохранения целостности (failover) автоматически перенаправляет ввод-вывод с неисправного пути на другой путь ввода-вывода. В свою очередь, функция восстановления целостности (failback) исправляет неисправный путь ввода-вывода и снова вводит его в строй. Балансировка нагрузки позволяет распределить ввод-вывод на все доступные пути по определенному алгоритму. В качестве алгоритма может применяться поочередное распределение ввода-вывода, распределение на основе загрузки пути, простое распределение по всем путям или другой способ. Технология компании Microsoft рассматривается далее, после чего приводится описание продуктов от других производителей.

Компания Microsoft, создавая архитектуру группового ввода-вывода, преследовала несколько целей.

Совместная работа с другими внедренными драйверами и архитектурами, включая РпР и управление питанием. На самом деле суть не просто в совместной работе, а в использовании уже существующей архитектуры, например когда уведомления устройств передаются с помощью базового механизма РпР.

Динамическое обнаружение устройств и путей без применения статической конфигурации.

Обеспечение совместного применения различных методов группового ввода-вывода от нескольких производителей. На данный момент это исключительно сложно (практически невозможно) реализовать.

Предоставление универсальной технологии, которая позволяет производителям компьютеров и независимым производителям программного и аппаратного обеспечения добавлять такие возможности, как балансировка нагрузки или сохранение целостности данных. Тестовый модуль от Microsoft, связанный с определенным устройством (device- specific module – DSM), обеспечивает балансировку нагрузки, которая, впрочем, будет максимально эффективна при статическом использовании; например, для всего ввода-вывода на LUN 1 будет применяться первый путь, а для всего ввода-вывода на LUN 2 – второй путь.

Рис. 9.10. Дерево объектов устройств для предоставления группового ввода- вывода

■ Предоставление метода, который позволит использовать до 32 маршрутов на один номер LUX и поддерживает технологии Fibre Channel/SCSI.

На рис. 9.10 показано подробное дерево устройств Windows NT с поддержкой группового ввода-вывода для конфигурации, представленной на рис. 9.9. Дерево драйверов устройств включает в себя различные драйверы фильтрации и связанные с ними объекты устройств, которые вместе формируют архитектуру группового ввода-вывода Microsoft.

Архитектура включает в себя четыре различных компонента.

Драйвер фильтрации верхнего уровня, который называется MPSPFLTR и предоставляется Microsoft.

Драйвер класса MPDEV , предоставляемый Microsoft.

Драйвер псевдошины МРЮ, предоставляемый Microsoft.

Модуль DSM, который должен предоставляться производителем, создающим и продающим систему. Этот производитель лицензирует инстру-

ментарий разработки МРЮ у компании Microsoft. Инструментарий разработки уже содержит перечисленные три драйвера и предоставляет всю необходимую информацию (включая заголовочные файлы и пример кода) для создания DSM.

Первое, что бросается в глаза на рис. 9.10, это два различных стека устройств: логический (слева) и физический (справа). Программное обеспечение МРЮ формирует мост между этими стеками устройств.

Любопытно отметить схожесть дерева устройств при использовании томов как базовых, так и динамических дисков (базовые и динамические диски рассматриваются в главе 6). Это неудивительно, так как тома являются логическими элементами, содержащими несколько LUN или фрагмент отдельного LUN, а инфраструктура МРЮ стремится связывать видимые LUN через несколько путей с одним LUN. Возможности диспетчера разделов при обработке разделов весьма напоминают функции драйвера МР- SPFLTR. Как первый, так и второй драйвер особое внимание уделяют пакету IRP_MN_QUERY_DEVICE_RELATIONSHIPS и передают подробную информацию об объектах соответствующим партнерам – диспетчеру томов в одном случае и драйверу псевдошины группового ввода-вывода МРЮ – в другом. Диспетчер разделов и драйвер MPSPFLTR принимают ответственность за информирование партнеров (диспетчера томов и драйвера псевдошины МРЮ) о событиях подсистем РпР и управления питанием.

Сравнивая рис. 9.9 и рис. 9.10, можно заметить, что МРЮ являет собой драйвер фильтрации верхнего уровня, размещенный над объектом функционального устройства адаптера. Еще одно различие состоит в паре PDO- FDO, создаваемой для драйвера псевдошины МРЮ подсистемой РпР и самим драйвером МРЮ. Обратите внимание на закрытый канал взаимодействия между драйвером MPSPFLTR и драйвером псевдошины МРЮ. Далее, в верхнем левом углу рис. 9.10, представлены два объекта физического устройства для псевдодисков, созданных драйвером шины МРЮ. Таким образом, драйвер шины МРЮ получает возможность обрабатывать ввод-вывод и, в свою очередь, вызывать DSM.

К каждому объекту физического устройства, созданному драйвером МРЮ, подключены два объекта DSM. Один активно используется, а второй показан в другом прямоугольнике, чтобы подчеркнуть факт сосуществования объектов DSM от разных производителей. Обратившись к правой части рис. 9.10, можно заметить, что четыре объекта физического устройства создаются обычным образом драйвером порта (SCSIPort или Storport). Но подключаемые к ним объекты функционального устройства создаются драйвером класса MPDEV, а не драйвером класса диска.

Файл Mpdev. sys представляет собой замену драйвера класса диска с некоторыми изменениями. Драйвер класса диска MPDEV может обрабатывать только запросы SCSI и не поддерживает функции пакетов IRP. Другими словами, драйвер MPDEV обрабатывает только ограниченное подмножество функций пакетов IRP, самой важной из которых является запрос IRP_MJ_ SCSI. Драйвер MPDEV не поддерживает базовые функции пакетов IRP, например пакеты чтения и записи (IRP_MJ_READ и IRP_MJ_WRITE). Это означает, что приложения пользовательского режима не могут получить доступ непосредственно к стеку физических устройств, так как имеют возможность отправлять только запросы управления вводом-выводом (IOCTL). Конечно, драйверы режима ядра могут отправлять драйверу MPDEV блоки команд SCSI (CDB), чем и занимается драйвер класса диска.

Таким образом, драйвер MPDEV может обрабатывать запросы из стека МРЮ (показанные штрих-пунктирной линией на рис. 9.10), так как эти запросы приходят от драйвера класса диска (расположенного над объектом физического устройства, созданного драйвером МРЮ), преобразующего пакеты IRP (пакеты чтения/записи) в блоки команд SCSI. Более того, компания Microsoft создала строгие списки управления доступом для обеспечения безопасности объектов устройств, Принадлежащих драйверу класса MPDEV.

9.3.1.1 Модуль DSM

Модуль DSM (Device-Specific Module) проектировался для предоставления важных функций, описанных далее.

Обработка инициализации, относящейся к конкретному устройству.

Предоставление функций, позволяющих выяснить, не являются ли на самом деле два LUN, к которым осуществляется доступ по разным путям, одним LUN. Для этого рекомендуется использовать встроенный идентификатор устройства хранения, а не программную метку носителя. Универсальный модуль DSM, предоставленный Microsoft, выполняет проверку с помощью страницы серийного номера (80h) или страницы идентификации устройства (83h), определенных в наборе команд SCSI. Поставщики устройств не ограничены использованием только этих двух механизмов.

Обработка специальных команд SCSI, в основном связанных с управлением устройствами и опросом их возможностей, например Read_ Capacity, Reserve, Release и Start_Stop_Unit, а также принятием решения об отправке этих команд по всем путям или только по одному.

Принятие решений о маршрутизации запросов ввода-вывода.

ш Обработка ошибок.

Обработка запросов подсистемы РпР и подсистемы управления питанием с помощью библиотечных функций, реализованных Microsoft в драйвере исевдошины группового ввода-вывода.

■ Обработка запросов управления, которые поступают к драйверу в виде пакетов IRP через интерфейс WMI, который рассматривался в главе 7. При получении такого запроса драйвер псевдошины группового ввода- вывода вызывает соответствующие процедуры DSM. Драйвер псевдошины группового ввода-вывода может самостоятельно находить и вызывать эти процедуры.

Модуль DSM внедряется с помощью инструментария МРЮ, который можно лицензировать у компании Microsoft. Модуль DSM используется в качестве устаревшего (legacy) драйвера, который экспортирует интерфейс для драйвера псевдошины МРIO.

9.3.1.2 Драйвер псевдошины группового ввода-вывода

Драйвер псевдошины группового ввода-вывода загружается обычным образом, в качестве элемента Windows NT, как только будет установлен соответствующий программный пакет поставщика устройства.

При инициализации драйвер псевдонимы группового ввода-вывода начинает взаимодействие с драйвером фильтрации MPSPFLTR, который размещен над объектом функционального устройства SCSIPort (см. рис. 9.10), что позволяет создать псевдоустройство для каждого логического устройства, которое подключено к нескольким путям. Для каждого такого псевдоустройства драйвер псевдошины группового ввода-вывода предлагает модулям DSM принять или отвергнуть право владения этим устройством.

Для каждого запроса ввода-вывода драйвер псевдошины группового ввода-вывода обращается к модулю DSM через определенную процедуру. Модуль DSM имеет доступ к каждому пакету IRP и может инициировать в случае необходимости процедуру завершения пакета IRP. Для запросов управления устройством, например Reserve или Release, модуль DSM может перенаправлять ввод-вывод по всем, маршрутам к устройству. Обычные запросы ввода- вывода модуль DSM перенаправляет по любому из маршрутов ввода-вывода в зависимости от того, какая балансировка нагрузки проводится – динамическая или статическая. Если запрос ввода-вывода завершается ошибкой, драйвер псевдошины группового ввода-вывода в определенной точке входа вызывает модуль DSM, который может попытаться перенаправить ввод-вы- вод по другому маршруту, обеспечивая сохранение целостности данных.

9.3.2 Существующие системы группового ввода-вывода

Несколько компаний предоставляют системы группового ввода-вывода, которые, как минимум, обеспечивают сохранение, а некоторые даже восстановление целостности данных, а также балансировку нагрузки.

Эти системы довольно успешно работают, однако со временем стали очевидными некоторые их недостатки.

Конфигурация может быть сложной и запутанной, так как системы не полностью интегрированы с подсистемой РпР, поэтому динамический поиск не обеспечивается.

Системы не поддерживают взаимодействия с системами других производителей. Иными словами, если определенный сервер Windows работает с системой от одного првизводителя, на тот же сервер Windows невозможно установить систему других производителей.

9.3.2.1 Технология PowerPath от компании ЕМС

Компания ЕМС разработала технологию сохранения целостности данных и балансировки нагрузки для Windows NT. На рис. 9.11 показана соответствующая архитектура.

В отличие от других архитектур, в архитектуре ЕМС драйвер фильтрации размещается между диспетчером томов и драйвером класса порта SCSI- Port или RAID. Для каждого существующего логического тома перечисляется N логических томов, где N – число независимых маршрутов доступа к устройству.

Для каждого устройства, имеющего N независимых маршрутов доступа, Windows NT обнаружит N логических устройств. Если ввод-вывод будет осуществляться через все маршруты одновременно, данные могут быть повреждены. Таким образом, система PowerPath отключает N-1 таких устройств, доступ и управление вводом-выводом для которых будут невозможны. Утилита администрирования с графическим интерфейсом отображает одно активное устройство и N-1 устройств выделены серым цветом, которым отмечаются неактивные устройства. От администратора требуется серьезно продумать конфигурацию, особенно, если необходимо обеспечить безопасность путем ограничениячадаптеров шины, имеющих доступ к устройству. Подобную схему безопасности можно внедрить с помощью системы ЕМС Symmetrix, посредством которой администратор укажет имя WWN адаптеров шины, имеющих доступ к определенным LUN на компьютере с установленной ЕМС Symmetrix.

Администратор имеет возможность указать политику балансировки нагрузки. Ниже приводится описание возможных политик.

Запросы на ввод-вывод распределяются по всем маршрутам по очереди.

Следующий запрос ввода-вывода отправляется по тому маршруту, на котором в очереди размещено меньшее количество запросов.

Следующий запрос ввода-вывода отправляется по тому маршруту, на котором в очереди находится меньше блоков.

Рис. 9.11. Архитектура EMC PowerPath

■ Используется режим оптимизации EMC Symmetrix, при котором следующий запрос ввода-вывода отправляется по маршруту с наименьшим ожидаемым временем завершения.

9.3.2.2 Технология SecurePath от компании HP (Compaq)

Компания HP (Compaq) предлагает систему группового ввода-вывода SecurePath для Windows NT, которая поддерживает сохранение целостности данных и балансировку нагрузки. Реализации этой системы-для Windows NT 4.0 и Windows 2000 несколько различаются.

На рис. 9.12 показана архитектура HP (Compaq) SecurePath для Windows 2000. Архитектура включает в себя драйвер фильтрации блочного устройства хранения, который расположен над драйвером порта (SCSIPort или Storport) и под драйвером класса диска. Служба пользовательского режима и приложения пользовательского режима формируют оставшиеся фрагменты головоломки, которые принимают участие в администрировании и отправке уведомлений.

Рис. 9.12. Архитектура HP (Compaq) SecurePath для Windows 2000

В Windows NT 4.0 технология HP (Compaq) SecurePath требует использования драйвера класса диска, который создан компанией HP и называется HSZDisk (рис. 9.13). Кроме того, предоставляется и драйвер фильтрации.

В Windows 2000 сохранение целостности и балансировка нагрузки обеспечиваются драйвером фильтрации Raidisk от компании HP. В Windows 2000 драйвер класса диска, предоставленный компанией Microsoft, не заменяется другими драйверами. Драйвер Raidisk обеспечивает:

сохранение целостности данных;

балансировку нагрузки (для некластерного системного окружения);

восстановление целостности после исправления отказавшей системы;

проверку маршрута к томам хранилищ.

Служба пользовательского режима SecurePath для Windows NT предоставляет возможности по администрированию и взаимодействует с драйвером фильтрации SecurePath с помощью закрытых кодов управления вводом- выводом (IOCTL).

Рис. 9.13. Архитектура HP (Compaq) SecurePath для Windows NT 4.0

9.3.2.3 Технология AutoPath от компании HP

Эта технология обеспечивает динамическую балансировку нагрузки и автоматическое сохранение целостности данных ввода-вывода для Windows NT. Как показано на рис. 9.14, компания HP реализовала систему AutoPath с помощью драйвера фильтрации, размещенного между драйвером класса диска и драйвером порта.

Балансировка нагрузки AutoPath выполняется в соответствии с политикой, установленной администратором. Возможные политики перечислены ниже.

Круговой доступ (round-robin), в котором данные ввода-вывода распределяются по всем маршрутам.

Отсутствие балансировки нагрузки; при этом данные ввода-вывода для определенного устройства хранения статически отправляются по выбранному администратором маршруту.

Данные ввода-вывода отправляются на маршрут, который имеет самую короткую очередь ожидающих запросов.

Рис. 9.14. Архитектура AutoPath

Данные ввода-вывода отправляются на маршрут, который имеет наименьший объем данных, ожидающих ввода-вывода.

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

 

9.4 Локальное и удаленное зеркальное отражение

Зеркальное отражение уже упоминалось в разделе 9.1, но подробно не рассматривалось. Зеркальное отражение представляет собой процесс создания дубликата доступных данных, что позволяет обеспечить доступность данных при отказе в работе основного хранилища.

К популярным причинам использования зеркального отражения относятся следующие:

предоставление метода восстановления данных после различных неисправностей;

распределение нагрузки или самих данных;

обеспечение отказоустойчивости;

Рис. 9.15. Зеркальное отражение на уровне приложения

использование вторичного тома для создания хранилища данных, резервного копирования или тестирования с помощью реальных данных.

Зеркальное отражение может быть локальным или удаленным. Локальное отражение выполняется на нескольких уровнях.

На уровне приложения серверного узла. Приложение выдает два идентичных запроса на запись, предназначенные различным дискам (рис. 9.15).

На уровне программного массива RAID. Приложение выдает единственный запрос на запись. Программный массив RAID, реализованный в драйвере диспетчера тома, преобразует единственный запрос в две идентичные операции записи (рис. 9.16).

На уровне адаптера шины. Приложение выдает единственный запрос на запись, который преобразуется в два идентичных запроса на запись на уровне адаптера шины, установленного на сервере (рис. 9.17).

ш На уровне контроллера хранилища. Такой тип зеркального отражения выполняется внутри подсистемы хранения (рис. 9.18).

Все эти методы относятся только к локальному отражению, имеющему ряд недостатков. Шина имеет ограничение на длину; например, устройства SCSI могут находиться друг от друга на расстоянии не далее нескольких десятков футов. Конечно, для разнесения устройств на большее расстояние можно воспользоваться SAN на базе Fibre Channel. С другой стороны, репликацию можно провести с помощью средств как источника, так и точки назначения данных (рис. 9.19).

Рис. 9.17. Зеркальное отражение на уровне адаптера шины

Такой подход предоставляет весьма интересные возможности, например:

выполнение синхронной или асинхронной репликации;

ш выполнение двунаправленной репликации, повышающей эффективность и позволяющей серверам дублировать друг друга;

восстановление после ошибок и тестирование контрольных точек.

Рис. 9.19. Удаленное зеркальное отражение с помощью средств обеих точек репликации

Репликация может выполняться на уровне блоков дисков (другими словами, уровнем ниже файловой системы) или средствами драйвера фильтрации файловой системы, который может реплицировать файлы и каталоги.

Существует синхронная и асинхронная репликация. При синхронной репликации операция записи выполняется на обоих узлах (на источнике и вторичном узле, на который выполняется репликация), при этом от обоих серве-

ров получается подтверждение об успешной записи. Таким образом, страдает производительность приложений. При асинхронной репликации запрос записи на удаленный узел размещается в очереди, а запрос записи на локальный узел выдается сразу после возврата управления приложению, благодаря чему операции записи проводятся асинхронно.

Синхронная репликация выполняет синхронизацию данных за счет производительности приложения. Асинхронная репликация позволяет повысить производительность приложения за счет временной рассинхронизации данных на двух дисках. Как только данные поступают и записываются на удаленный диск, зеркальные диски вновь становятся синхронизированными. И синхронный и асинхронный метод репликации сохраняет порядок операций записи на устройство хранения.

Независимые производители программного обеспечения разработали несколько систем, обеспечивающих отказоустойчивость в среде Windows NT средствами репликации. Обратите внимание, что некоторые из этих систем автоматически выбирают синхронную или асинхронную репликацию. Работа начинается с синхронной репликации, но если на удаленной системе возникает ошибка, том отмечается как несинхронизированный и система переключается на асинхронную модель репликации.

В разделах 9.4.1–9.4.3 рассматриваются популярные программы репликации, доступные в продаже. Следует отметить, что представленные сведения не являются рекомендацией. В данном случае программы выбирались на основе двух характеристик.

Доступность сведений о программе.

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

9.4.1 Программы Volume Replicator и Storage Replicator от компании VERITAS

Один из независимых производителей программного обеспечения – компания VERITAS – специализируется на хранилищах данных, их управлении и технологиях по восстановлению данных для разных платформ, включая Windows NT.

Программа Volume Replicator выполняет репликацию томов и работает с данными из блоков дисков. При этом между драйвером файловой системы и драйвером класса диска уже помещен драйвер фильтрации – VERITAS Volume Manager. Новый драйвер фильтрации подключается к этому драйверу диспетчера томов и перенаправляет запросы на удаленный том.

Программа Storage Replicator выполняет репликацию данных из файлов, а не из блоков дисков. Как показано на рис. 9.20, драйвер фильтрации файловой системы расположен над файловой системой. Программа Storage Repli-

Рис. 9.20. Архитектура программ Volume Replicator и Storage Replicator компании VERITAS

cator сохраняет порядок записываемых данных. Операционная система Windows NT может находиться как на первичном, так и на вторичном узле, т.е. Windows может выступать в роли как источника (генерирующего данные для репликации), так и точки назначения (получающей данные репликации от другой системы, поддерживающей работу Storage Replicator). При внесении в конфигурацию определенных изменений для обеспечения корректной работы программы Storage Replicator необходимо перезапустить соответствующие системы службы. Для Volume Replicator перезагрузка не требуется. На рис. 9.20 показана архитектура продуктов Volume Replicator и Storage Replicator.

Как Volume Replicator, так и Storage Replicator используют интерфейсную библиотеку TDI (Transport Driver Interface) для отправки и приема данных. Программа Storage Replicator представляет собой драйвер фильтрации файловой системы, расположенный над самой файловой системой. В то же время Volume Replicator – это драйвер фильтрации диска (а не файловой системы). На рис. 9.20 демонстрируется, что TDI – подключаемая библиотека, а не отдельный драйвер.

9.4.2 Программа RepliStor от компании LEGATO

Программа RepliStor, разработанная компанией LEGATO (после приобретения компании Octopus), предназначена для синхронной репликации данных на уровне файлов и каталогов. Программа пытается копировать файлы (и синхронизировать их) для сохранения производительности и обеспечения отказоустойчивости. Кроме того, предоставляется возможность репликации разделов системного реестра.

Программа RepliStor поддерживает указание списков файлов, каталогов или общих ресурсов, а также исключений из этих списков, которые не будут подвергаться репликации. Кроме того, RepliStor поддерживает репликацию открытых файлов, если они были указаны до открытия другими приложениями. Также поддерживается репликация общих ресурсов распределенной файловой системы Windows NT 4.0, однако репликация общих ресурсов распределенной файловой системы Windows 2000 не обеспечивается. Версия RepliStor для Windows 2000 поддерживает интеграцию в Active Directory. После репликации файла RepliStor копирует только изменения, внесенные в файл.

Программа RepliStor может быть настроена на использование выделенного сетевого адаптера, что дает возможность изолировать сетевые данные RepliStor. Более того, передаваемые по сети данные шифруются, а каждый сетевой пакет поддерживает цифровую подпись.

Описываемая программа поддерживает репликацию «точка-точка» или «точка-множество». Точкой назначения может быть другой сервер под управлением Windows NT (работающий с другим аппаратным обеспечением) или член кластера. Источником репликации также может быть член кластера. Программа RepliStor проводит репликацию асинхронно, т.е. запросы записи на удаленный узел размещаются в очереди, а запросы записи на локальный узел выполняются без подтверждения с удаленного узла.

Программа RepliStor дополняет другие системы компании LEGATO, например Co-StandbyServer, которая не в состоянии зеркально отражать системные диски (диски, с которых загружается Windows NT). Поскольку RepliStor обеспечивает репликацию на уровне файлов и каталогов, поддерживается копирование и системных дисков.

Кроме все прочего, предоставляется настраиваемый таймер, по которому вторичная система отправляет тестовые эхо-пакеты системе-источнику. Если доставка тестового пакета завершится неудачно, вторичная система сначала отправляет тестовый эхо-пакет по протоколу ICMP; это позволяет убедиться, что основная система действительно неисправна.

Если обращение к основной системе завершилось неудачно, RepliStor предоставляет следующие настраиваемые варианты действий:

■ на вторичной системе запускаются необходимые службы;

Рис. 9.21. Архитектура программы Co-StandbyServer

параметры IP-адреса и маски подсети перенаправляются вторичной системе;

на вторичной системе выполняются определенные команды, в том числе с помощью командных файлов.

9.4.3 Программа Co-StandbyServer

Программа Co-StandbyServer от LEGATO представляет собой кластерную систему для платформы Windows NT. Каждый сервер в кластере может быть активным, и изменения каждого диска реплицируются в обе стороны. Если один из серверов в кластере откажет в работе, Co-StandbyServer перенаправляет такие параметры, как IP-адреса, общие ресурсы, имена серверов и другие ресурсы, работающему серверу.

Как показано на рис. 9.21, Co-StandbyServer обеспечивает двунаправленную синхронную репликацию на уровне блоков между двумя серверами Windows NT, которые могут находиться на расстоянии до 10 км друг от друга. Обратите внимание, что оба сервера могут быть активными и взаимозаменяемыми. Таким образом, на рис. 9.21 показано, что во время репликации одного диска слева направо, второй диск реплицируется справа налево.

Два сервера, между которыми выполняется зеркальное отражение на уровне блоков, не должны быть идентичными. Единственное требование заключается в работе серверов под управлением Windows NT и использовании аппаратного обеспечения, входящего в список совместимого с Windows NT. Функция зеркального отражения не может быть реализована для загрузочного диска.

Существуют определенные проблемы при использовании Co-StandbyServer совместно с конфигурациями чередования на базе Windows 2000 LDM. Программа Co-StandbyServer предоставляет возможности двух типов.

Зеркальное отражение, при котором записи на один сервер дублируются на другой сервер.

Режим совместного хранилища, при котором отказ в работе хранилища одного сервера приводит к предоставлению хранилища второго сервера первому серверу, что позволяет ему продолжать работу.

В числе преимуществ Co-StandbyServer можно выделить следующие:

не требуется специального аппаратного обеспечения, и оба сервера могут работать на разном аппаратном обеспечении; например, один сервер может быть многопроцессорным, а второй – однопроцессорным;

программа Co-StandbyServer поддерживает различные серверы под управлением Windows 2000, включая контроллеры домена, рядовые серверы и т.д.;

обеспечивается поддержка сценариев для реализации режима защиты целостности для популярных приложений Windows NT, включая IIS, SQL и Exchange.

 

9.5 Сложности практической реализации

Использование массивов RAID является весьма привлекательным решением, поскольку позволяет избежать значительных потерь производительности и обеспечить отказоустойчивость. Было создано несколько схем массивов RAID, которые предназначены для реализации различных задач. На базе платформы Windows NT возможно создание программных массивов RAID. В частности, Windows 2000 и Windows Server 2003 поставляются вместе с драйвером LDM, который обеспечивает работу программных RAID. Программные массивы RAID могут задействовать немало ресурсов центрального процессора, так как каждая операция ввода-вывода должна транслироваться дважды. Первая трансляция выполняется на уровне файловой системы, когда смещение в пределах файла преобразуется в смещение в пределах тома. Следующее преобразование осуществляется на уровне массива RAID (если необходимый ввод-вывод выполняется на этом массиве), где смещение в пределах тома транслируется в смещение в пределах диска.

Компания Microsoft предоставила производителям инструментарий разработки МРIO, который предназначен для создания отказоустойчивых высокопроизводительных систем для группового ввода-вывода. Готовые системы предоставляются клиентам только производителями, а не самой Microsoft. Инструментарий МРIO позволяет системам нескольких производителей совместно работать на одном сервере под управлением Windows, что ранее было невозможно. В настоящий момент существует тенденция к снижению цен в этом секторе рынка. Более того, системы на основе инструментария МРIO позволяют потребителям не зависеть от одного производителя, так как возможно совместное применение систем нескольких поставщиков. Стоит проследить, не введет ли Microsoft аналог сертификации на соответствие логотипу, а также обратить внимание на строгость требований для такой сертификации.

Несколько производителей также создали схемы программного зеркального отражения и репликации. Рассматривая возможности этого программного обеспечения, не стоит забывать о новой архитектуре теневого копирования томов, которая рассматривается в главе 5. Иногда теневое копирование томов более подходит для решения задач зеркального отражения данных.

Кроме того, этот сегмент рынка внимательно наблюдает за развитием технологии IP Storage, так как весьма вероятно, что несколько производителей создадут соответствующие системы на базе протокола iSCSI.

 

9.6 Резюме

В главе описано несколько схем программных массивов RAID, отличающихся по стоимости, производительности и доступности. В Windows NT 4.0 для реализации программных массивов RAID использовался драйвер FtDisk. В свою очередь, в Windows 2000 для реализации программных массивов RAID применяется драйвер LDM, поставляемый в составе самой операционной системы.

Архитектура группового ввода-вывода от Microsoft предоставляет стандартизированный подход для реализации отказоустойчивых и высокопроизводительных систем для платформ Windows 2000 и Windows Server 2003. Эта архитектура поддерживает баланс между нагрузкой и сохранением целостности маршрутов ввода-вывода. Компания Microsoft предоставляет инструментарий для разработки законченных систем, лицензии на который передаются другим производителям. Конечные пользователи могут получить готовые системы только от независимых производителей, а не от самой Microsoft.

Разработкой программ зеркального отражения и репликации для платформы Windows NT занимается сразу несколько известных производителей.