Эффективный драйвер ввода-вывода для устройств памяти

За десять лет, прошедшие со времени выхода Windows NT 3.1, система ввода-вывода Windows заметно устарела. Версии драйверов ввода-вывода системы хранения Windows (минипорт SCSI, иначе называемый SCSIport) уже давно нуждались в модернизации. Необходимые изменения были сделаны в Windows Server 2003, и обновленная подсистема ввода-вывода обеспечивает более высокую производительность и функциональность приложений Windows при работе с системами хранения.

Такие ограничения как совместимость только с SCSI и неприспособленность NT для работы с IDE, RAID и сложными структурами, например Fibre Channel или Internet SCSI (iSCSI), всегда вызывали недовольство пользователей. Основной причиной ограничений был традиционный драйвер SCSIport. Когда-то руководство Microsoft сделало ставку на SCSI, считая его самым перспективным дисковым интерфейсом. Расчет был удачным, но с тех пор многое изменилось, и напрямую подключаемые накопители SCSI – уже далеко не единственные устройства хранения для систем Windows. Драйвер SCSIport не обеспечивает производительности, гибкости конфигурирования и управляемости, необходимых для современных RAID-совместимых SAN (Storage Area Network - сеть устройств хранения) и NAS (Network Attached Storage - дисковая память, подключаемая к сети) на базе Fibre Channel.

Драйверу SCSIport свойственны определенные архитектурные ограничения: число запросов ввода-вывода не может превышать 254 на один SCSI-адаптер, последовательный (полудуплексный) режим ввода-вывода (иными словами, запрос ввода-вывода может быть выдан или завершен, но нельзя выполнить обе операции одновременно), чрезмерная нагрузка при большом числе IRQ, значительные затраты при обслуживании буферов и неэффективное управление очередью ввода-вывода. Поставщики запоминающих устройств могут обойти эти проблемы, разрабатывая собственные драйверы (многие компании предлагали собственные драйверы фильтров системы хранения), но фирменные драйверы поддерживать сложно. Эти недостатки послужили для Microsoft сигналом, и компания разработала совершенно новое решение, отвечающее требованиям современных приложений и технологий хранения данных. Специалисты Microsoft подготовили драйвер Storport с учетом современных требований к вводу-выводу системы хранения и недостатков SCSIport. В Storport решены все перечисленные выше проблемы, и при этом обеспечен достаточный уровень обратной совместимости, чтобы облегчить переход от SCSIport к Storport для поставщиков и потребителей.

Синхронный режим ввода-вывода (то есть полнодуплексный) устраняет дуплексное ограничение SCSIport. Таким образом, Storport может одновременно выдавать и завершать запросы ввода-вывода. Чтобы снизить нагрузку при большом числе IRQ, Storport дополнен новой параллельной подпрограммой, на которую возложены основные задачи по обработке прерываний (например, подготовка списков рассылки/сбора -- scatter/gather list - для запросов ввода-вывода) перед посылкой команд аппаратным устройствам. Storport также сокращает затраты при обслуживании буферов, предоставляя разработчикам драйверов гибкие функции управления буферами.

Устраняется и ограничение на 254 запроса для одного адаптера. Вместо этого Storport сокращает до 254 число одновременных запросов ввода-вывода для одного LUN (логический номер устройства). В результате повышается гибкость и создаются условия для повышения производительности таких систем памяти, как Fibre Channel SAN. Конечно, разработка контроллеров и инфраструктуры ввода-вывода ложится в основном на поставщиков систем хранения.

Storport располагает более развитыми функциями управления очередью ввода-вывода, чем SCSIport (который, в сущности, вообще не управляет очередью ввода-вывода). Команды управления очередью (пауза, возобновление, занят, готов) применяются на уровне устройства, адаптера и LUN. Устраняя конкретные ограничения SCSIport, Storport обеспечивает архитектуру, отвечающую требованиям технологий хранения данных следующего поколения.

Разработчики Storport не ограничились решением проблем SCSIport и заглянули в будущее технологий хранения данных. В результате в Storport появились дополнительные функции. Среди новшеств - усовершенствованный обработчик ошибок, функции управления каналом и обслуживания соединений Fibre Channel, более эффективные возможности кластеризации Windows и отложенный вызов процедур (deferred procedure call - DPC).

Представители Microsoft надеются, что Storport облегчит задачу разработчиков, а также упростит обслуживание и управление хранилищами данных Windows. С помощью инструментов из комплекта разработки драйверов Windows Driver Development Kit (DDK) поставщики могут перенести свои драйверы SCSIport в Storport. Предварительные тесты Microsoft показывают, что Storport повышает быстродействие.

Разработчики Microsoft утверждают, что Storport на 30-50 % эффективнее SCSIport и обслуживает больше запросов ввода-вывода в секунду при меньшем коэффициенте использования ресурсов процессора.

Выбирая запоминающие устройства для систем Windows, следует узнать у поставщика, совместим ли продукт с Storport. Преимущества Storport принесут очевидную выгоду и Microsoft, и производителям запоминающих устройств и, конечно, потребителям.

Джерри Кохран, storageadmin@winnetmag.com