Серверные технологии хранения данных в среде Windows® 2000 Windows® Server 2003
Шрифт:
На рис. 2.1 демонстрируется сервер с платой контроллера ввода-вывода и несколькими устройствами, подключенными к контроллеру по шине SCSI. Хранилище данных, подключенное к серверу, – это неплохой вариант для небольших изолированных локальных сетей (например, для локальных сетей определенного отдела компании), однако подобные решения крайне плохо масштабируются. К одной из очевидных проблем относится количество единиц хранения, которые могут быть использованы при таком подключении.
Рис. 2.1. Хранилище SCSI, подключенное к серверу
Рис. 2.2.
Еще одна проблема – наличие лишь одной шины SCSI для выполнения всех операций ввода-вывода.
Следующим этапом в развитии индустрии хранения данных была разработка подсистем хранения с собственными контроллерами ввода-вывода (рис. 2.2).
Представленная на рис. 2.2 подсистема хранения данных обладает дополнительными функциональными возможностями, что привело к переосмыслению некоторых терминов. Система на рис. 2.1 имеет только один контроллер ввода-вывода, который подключен к серверу. Система на рис. 2.2 содержит два контроллера, что потенциально может привести к путанице при указании
контроллера. Если существуют также дополнительные подсистемы хранения данных с собственными контроллерами, все может стать еще более запутанным. В связи с этим и была принята терминология, в которой контроллер, подключенный к серверу, называется адаптером шины. Адаптер шины может обеспечивать подключение к шине SCSI, IDE или интерфейсу Fibre Channel.
2.5 Логические единицы хранения (LUN)
Единицы хранения, которые расположены в схеме, приведенной рис. 2.2, за контроллером подсистемы хранения, должны поддерживать определенный метод адресации. Эти единицы называются LUN (logical unit number). В контексте приложений хранения данных или Windows NT три отдельных идентификатора взаимодействуют друг с другом для уникального определения каждой LUN. Обратите внимание, что в литературе, посвященной стандарту SCSI, используется выражение «определение LUN для целевого устройства SCSI», однако я предпочитаю выражение «для идентификатора SCSI», поскольку устройство SCSI может быть как целевым, так и инициатором. Это различие станет еще более очевидным при распространении интерфейса iSCSI, где устройство SCSI может быть инициатором в одном случае и целевым устройством – в другом.
Команда SCSI отправляется устройству, которое уникально идентифицируется тремя параметрами.
Шина SCSI (адаптер шины может поддерживать несколько шин или на сервере Windows NT может быть установлено несколько адаптеров шин). Операционная система Windows NT поддерживает до восьми шин для одного адаптера шины.
Идентификатор устройства SCSI на шине. Операционная система Windows NT поддерживает до 128 идентификаторов SCSI для одной шины.
Идентификатор SCSI LUN. Операционная система Windows NT SP4 и более поздние версии Windows NT поддерживают до 254 идентификаторов LUN на один идентификатор SCSI. Иногда возможность поддержки такого большого количества идентификаторов LUN обозначается термином Large LUN support (расширенная поддержка LUN). Предыдущие версии Windows NT поддерживали до восьми идентификаторов LUN на один идентификатор SCSI. Стандарт SCSI-2 поддерживает до восьми LUN на идентификатор SCSI. В свою очередь, в стандарте SCSI-3 описана поддержка 64-разрядного значения, указывающего количество LUN на идентификатор SCSI, но конкретное количество зависит от типа устройства.
Поддержка такого большого количества единиц LUN (более восьми) зависит от драйвера адаптера шины, а также от устройств SCSI, которые должны обработать команду Report LUNs (SCSI). Более новые драйверы поддерживают по умолчанию более восьми LUN. Более старые драйверы могут вообще не поддерживать такой идентификатор,
2.6 Драйвер Storport
В главе 1 рассматривается стек ввода-вывода Windows NT, в том числе один из важных его компонентов – драйвер SCSIPort (разработанный в Microsoft). Этот драйвер взаимодействует с драйвером мини-порта, создаваемым поставщиком конкретного устройства и предназначенным для обслуживания последнего. До выхода Windows Server 2003 устройства хранения данных различного типа, например более старые жесткие диски SCSI, новые устройства SCSI-3 и Fibre Channel, использовали специфичный для устройства драйвер мини-порта, который подключался к драйверу SCSIPort. Этот сценарий имел несколько недостатков.
В описываемой модели подразумевается, что устройства Fibre Channel имеют возможности, сопоставимые с аналогичными функциями устройств SCSI, что не имеет под собой реальной основы.
Драйвер SCSIPort использовал однопоточную модель, не поддерживая полнодуплексный режим. Это означает, что одни запросы не могли выполняться, пока в очереди находились другие запросы, и наоборот. При обслуживании прерывания драйвер мини-порта не мог принимать новые запросы и сообщать о завершении уже выполненного запроса. Использование Windows на многопроцессорных компьютерах делало эту проблему еще более актуальной.
Драйвер порта содержал информацию, которая не отправлялась драйверу мини-порта, что требовало от последнего самостоятельного сбора необходимых сведений с помощью нескольких запросов. В частности, это было характерно для работы со списками разборки/сборки [4] .
Рис. 2.3. Драйвер Storport в иерархии драйверов Windows Server 2003
Не удовлетворенные таким положением вещей, поставщики устройств Fibre Channel решили проигнорировать драйвер SCSIPort (созданный компанией Microsoft) и реализовали комплексные драйверы (обеспечивающие возможности как драйвера порта, так и драйвера мини-порта) или собственные драйверы портов и мини-портов. Поскольку этот процесс был основан на инженерном анализе функций драйвера порта, полученные драйверы в лучшем случае работали с минимальным количеством проблем. Зачастую возникали ситуации, при которых два устройства от разных поставщиков не могли одновременно работать на компьютере под управлением Windows NT.
4
Список разборки/сборки — это термин, обозначающий одновременную инициализацию ввода-вывода в несколько буферов приема.
В Windows Server 2003 компания Microsoft представила новую модель драйвера с поддержкой драйвера порта Storport (рис. 2.3). Драйвер Storport предназначен для использования поставщиками более новых устройств SCSI-3 и Fibre Channel. Таким образом, Microsoft намерена постепенно прекратить поддержку драйвера SCSIPort, который, хотя и не удален из Windows, предназначен для использования только вместе с более старыми устройствами хранения данных.
На данном этапе поставщикам адаптеров шины предлагается создавать драйверы мини-портов, которые должны подключаться к драйверу Storport, а не к SCSIPort. Чтобы упростить процесс перехода, Microsoft сделала драйвер Storport обратно совместимым с моделью SCSIPort. Это значит, что поставщики, не желающие затрачивать время и силы, могут воспользоваться