RAID-системы для серверов начального уровня

     В настоящее время технология RAID нашла самое широкое применение в серверах любого уровня, даже самых младших моделей. В первую очередь, конечно, это связано с требованием отказоустойчивости серверов. Более того, RAID обеспечивают очень высокую степень сохранности информации. Отказоустойчивость сервера и сохранность информации — это разные вещи. Первая зависит от надежности всех элементов сервера и во многих случаях не является определяющим фактором. Однако потеря информации недопустима для любого, в том числе и для сервера начального уровня. На сохранность же информации существенное влияние оказывает только надежность дисковой системы.
     

     Будем полагать, что читатель знаком с общими принципами построения RAID-систем. Данному вопросу было посвящено много публикаций. В частности, развернутое обсуждение архитектуры RAID приведено в "Компьютерном Обозрении", # 25, 1999. В этом же номере содержится краткое описание современных RAID-контроллеров, а именно: Mylex (модели AcceleRAID 150, 200 и 250), AMI (MegaRAID Express 762 и 466) и DPT (Decade и Century). В предлагаемом материале изложены результаты испытаний нескольких систем на базе вышеупомянутых контроллеров, выполненных в фирме "ЕПОС". Основное внимание было уделено вопросам производительности в серверах начального уровня.
     

     Особенности реализации
     RAID в серверах начального уровня

     Наиболее привлекательной чертой серверов начального уровня является их стоимость. В конструкции таких моделей применяются самые массовые и, соответственно, дешевые элементы. Поэтому сервер начального уровня базируется на платформе Intel. В таких серверах устанавливается, как правило, от двух до четырех жестких SCSI-дисков. Из них программно или аппаратно формируется RAID-массив уровня 1, 5 или, в отдельных случаях, комбинированного уровня 0+1.

     Программно RAID реализуется средствами операционной системы. Это RAID уровня 1 ("зеркалирование") в ОС Novell, Windows NT или уровня 5 в Windows NT. Подобная реализация RAID обладает меньшей, по сравнению с аппаратной, производительностью, и, что самое основное, при этом всеми вопросами организации записи или считывания занимается центральный процессор. И вопрос состоит даже не в том, сколько процессорного времени тратится на дисковые операции. Главное, центральный процессор оптимизирован для выполнения работы с памятью, а не с периферийным оборудованием. Более того, прерывания от периферийных устройств мешают работе конвейера команд центрального процессора, что значительно ухудшает общую производительность системы. И, наконец, даже если устройство работает в режиме с прямым доступом к памяти, все равно на это тратится часть циклов процессора. Понятно, что программная реализация RAID допустима только в самых младших моделях.

     В хороших серверах RAID всегда поддерживается аппаратно. Как правило, используются RAID-контроллеры типа "PCI-to-SCSI". Несмотря на относительно низкую стоимость, в них применяются последние достижения технологии RAID и построения систем ввода/вывода.

     Основные особенности архитектуры современных контроллеров — это поддержка технологии I2O и кэш-памяти большого объема с использованием различных, в том числе и адаптивных, алгоритмов кэширования.
     

     Технология I2O в RAID-контроллерах

     I2O (Intelligent Input/Output) — это спецификация, определяющая стандартную архитектуру интеллектуального ввода/вывода, не зависящую от конкретных устройств и операционной системы. Идея технологии I2O заключается в том, чтобы за счет применения отдельного процессора ввода/вывода разгрузить центральный процессор. Все низкоуровневые прерывания, поступающие от периферийных устройств, обрабатываются не центральным, а специализированным процессором ввода/вывода (IOP). Конечно, IOP применяются уже давно в больших ЭВМ. Но наличие отдельного процессора, даже занятого операциями ввода/вывода, еще не означает наличия I2O. В конце концов, микропроцессоры встроены сейчас в каждый жесткий диск. Речь идет о новом подходе к реализации известного решения. Спецификация I2O предполагает разбиение драйвера устройства на две части: зависимый от ОС модуль OSM (Operation System Services Module) и аппаратно-зависимый модуль HDM (Hardware Device Module). Благодаря этому в значительной мере решается задача устранения зависимости от конкретной операционной системы. Под конкретную ОС разрабатывается только драйвер OSM. В соответствии с концепцией любое I2O-совместимое устройство (в нашем случае контроллер) не требует установки каких-либо драйверов.

     В контексте же повышения производительности системы технология I2O предусматривает еще два нюанса, может быть, на первый взгляд и не очевидных. Во-первых, это наличие так называемых промежуточных служебных модулей ISM (Intermediate Service Module). Они могут решать задачи, связанные с обработкой данных, но не имеющие к вводу/выводу непосредственного отношения. В рассматриваемом случае это, например, алгоритмы вычисления избыточной информации. Кроме того, промежуточные служебные модули обеспечивают непосредственный обмен данными между периферийными устройствами. Во-вторых, все операции выполняются специализированным процессором i960, который несмотря на свой весьма почтенный возраст идеально приспособлен для задач такого класса.
     

     Буферизация и кэширование
     в RAID-контроллерах

     Современные контроллеры для серверов начального уровня обычно используют кэш-память объемом от 4 до 128 МВ. Поскольку контроллер предназначен для выполнения конкретных задач, это позволяет применять очень эффективные алгоритмы кэширования. Собственную кэш-память имеет к тому же и каждый жесткий диск. Более того, SCSI-диски в состоянии запомнить десятки запросов и выполнять их в порядке, оптимизирующем производительность дисковой подсистемы.
     

     В каких "попугаях" измеряется
     производительность сервера?

     Традиционно в качестве характеристики производительности жестких дисков выступала скорость передачи при чтении или записи файлов. Однако в последнее время произошел довольно резкий поворот от файл-серверов к серверам приложений. Internet/intranet и клиент-серверные приложения генерируют многочисленные запросы к дисковой системе, однако каждый запрос незначителен по объему. Для оценки производительности при интенсивной передаче небольших по объему порций данных скорость обмена, в принципе, не подходит. Время передачи данных, которое определяется скоростью передачи, становится соизмеримым со временем доступа к данным или даже меньше него. В этих условиях более адекватной характеристикой производительности будет время ожидания обслуживания, т. е. отрезок времени между моментом поступления запроса на запись или чтение и моментом получения данных. Более того, сервер — это не индивидуальный компьютер. Он предназначен для обслуживания группы пользователей. Каждый из них независимо от других генерирует свою серию запросов к дисковой системе, а современные ОС позволяют формировать одновременно несколько запросов. В этих случаях при поступлении очередного запроса система (RAID) может быть занята обслуживанием предыдущих. Новый запрос становится в очередь, и продолжительность ожидания обслуживания для него увеличивается. Поэтому производительность дисковой системы сервера корректно оценивается по времени ожидания обслуживания при большом потоке запросов на чтение/запись. Но и этого мало. Для RAID любого уровня, и особенно для популярного уровня 5, характерна существенная разница в производительности при выполнении операций записи и чтения. В реальных условиях пользователи работают независимо друг от друга, и когда некоторые из них занимаются чтением данных, другие могут производить их запись. Поэтому для оценки производительности RAID-систем принято применять среднее время ожидания обслуживания для смеси различных потоков запросов, в которой запросы на запись составляют 25—30% от общего количества.

     RAID-системы в картинках

     В свете вышесказанного, в первую очередь, естественно, нас должно заинтересовать, а насколько же технология I2O разгружает центральный процессор. Ответ на этот вопрос дает измерение степени загрузки центрального процессора при различных режимах работы. Усредненные данные приведены на рис. 1.

     В данном тесте подключался только один диск, вначале к интегрированному на материнской плате SCSI-контроллеру, а затем — к RAID-контроллеру. Проводилась серия измерений по обработке множества (до 100) потоков запросов на запись/чтение с последующим усреднением результатов. Никакие особенности RAID в этом случае, конечно, не влияют на результат. Даже при установке только одного жесткого диска (рис. 1) технология I2O, применяемая в современных RAID-контроллерах, уменьшает загрузку центрального процессора примерно в 3,5 раза.

     Сокращение времени загрузки процессора, наверное, не является самоцелью. Гораздо важнее сопутствующее этому повышение производительности дисковой системы, результаты измерения которой приведены на рис. 2.

     Современный контроллер повышает производительность даже в случае одного диска. Так, в частности, среднее время ожидания обслуживания при потоке 100 заявок уменьшается более чем в 2 раза.

     А как же влияет на производительность объединение дисков в массив? Для этого проведена серия измерений производительности RAID различных уровней при разном количестве дисков. Так, на рис. 3 показаны результаты для RAID уровня 5 с контроллером AMI. Внутренняя кэш-память контроллера была выключена.

     Как и следовало ожидать, производительность RAID-массива тем больше, чем больше в нем дисков.

     Посмотрим теперь, как же помогает общей задаче повышения быстродействия кэш-память контроллера. Для начала обратим внимание на некоторые нюансы работы кэш-памяти с дисковыми накопителями и, в особенности, с RAID. На рис. 4 приведены результаты измерения производительности одного диска, подключенного к контроллеру AMI, полученные с помощью утилиты HD Tаch (по оси абсцисс — скорость обмена (KBps), по оси ординат — объем диска, проходимый головками в процессе выполнения теста (GB)).

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

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

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

     Все рассмотренные выше технологические возможности, примененные в комплексе, позволяют даже в серверах начального уровня сформировать дисковую систему с весьма высокой производительностью. Так, на рис. 6 приведены результаты измерения производительности RAID-массивов различного уровня, сформированных на четырех жестких дисках с использованием контроллера Mylex AcceleRAID 250.

     Обратите внимание на значительное увеличение времени ожидания обслуживания для RAID уровня 3 и 5 по сравнению с RAID уровня 0+1, начинающееся при числе потоков более 50. Это связано с недостаточной производительностью собственно дисковой системы. Кэш-память заполняется очень быстро, и последующие запросы вынуждены ждать, когда данные из кэш-памяти перепишутся на относительно медленные диски. RAID уровня 0+1 является самым быстрым из всех уровней. К тому же он позволяет эффективнее использовать кэш-память контроллера.

     RAID уровня 5 и 3 практически не отличаются друг от друга. Это связано отчасти с тем, что в контроллерах Mylex и AMI реализация RAID уровня 3 выполнена несколько иначе, чем рекомендовано RAB. Расслоение данных по дискам осуществляется поблочно, а не побитово. Кроме того, диски, естественно, не были синхронизированы. В контроллерах DPT уровень 3 вообще не реализован, поскольку в серверах практически не применяется.

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