Тестирование производительности дискового массива SATA RAID
Не секрет, что одним из самых узких мест в современном компьютере является дисковая подсистема. Зачастую она играет решающую роль в наших томительных ожиданиях загрузки Windows или очередной навороченной игры. Вас страшит проверка компьютера на вирусы, которая может затянуться на несколько часов? Или любимое многими занятие – дефрагментация диска?
Решение всех упомянутых проблем одно – установка более быстрого жесткого диска. А если у вас и так современный жесткий диск, или вы работаете с большими потоками видео или аудиоданных, и скорости работы жесткого диска хватает с трудом? Решение придумали очень давно. Суть его состоит в создании массивов дисков, которые работают одновременно и параллельно. Решение это дорогостоящее, особенно там, где требуется экстремальная производительность – в случае серверов. На потребительский настольный уровень массивы RAID (Redundant Array of Independent Disks) пришли сравнительно недавно. Активно их начали обсуждать всего года четыре назад. Подробнее про RAID-массивы можно прочитать в этой cтатье. Это существенно упрощенные решения относительно тех, что присутствуют в современных серверах. Контроллеры «настольных» RAID-систем обладают низкой вычислительной способностью и не готовы поддерживать большие массивы дисков или их более сложные комбинации, такие, как RAID 5-го уровня. Преимущество же у них одно – более чем доступная цена.
Популяризация протокола SATA потянула за собой производителей контроллеров, которые сразу были готовы предложить массовому рынку свои решения. На сегодняшний момент ситуация такова, что практически все современные материнские платы обладают интегрированным контроллером SATA с функцией создания RAID-массивов.
Подобные контроллеры способны создавать массивы RAID двух типов: Stripe и Mirror (RAID 0 и RAID 1). Для тех, кто поленился заглянуть по вышеуказанной ссылке, поясню, что в массиве RAID 0 работают два или более жестких дисков, и информация, записываемая на них, разбивается на части, которые записываются на диски параллельно и одновременно. Таким образом, получается значительный выигрыш в скорости, а суммарный объем дискового пространства равняется двукратной емкости наименьшего диска в массиве (если используются только 2 диска). Теоретически все просто: два диска – двукратная прибавка к скорости, четыре диска - четырехкратная и т.д. Но практика всегда отличается от теории. Необходима достаточная пропускная способность шин данных и быстрая работа контроллера. В этом случае мы будем близки к теоретической оценке.
Массивы уровня RAID 1 еще называют «зеркалированием». Они существуют для повышения надежности системы. На два и более дисков пишется одновременно одна и та же информация. Емкость массива будет равняться емкости наименьшего диска. При отказе одного из дисков вы продолжаете работать с другими. Выигрыш в скорости тут тоже можно получить. Серьезные контроллеры умеют производить чтение данных с нескольких дисков одновременно, читая разные участки данных, но «настольные» контроллеры этого не умеют, им бы существующую производительность удержать. В теории мы не должны получить никакого падения производительности, но все же подождем практического испытания.
Наиболее любимый мною и многими производителями контроллеров и серверов – RAID 5 уровня. Он совмещает в себе скорость работы RAID 1 и надежность RAID 0. Для создания такого массива требуется не менее трех жестких дисков и серьезная вычислительная мощь контроллера. При использовании трех дисков итоговая емкость массива будет равняться двойной емкости наименьшего диска. На третий диск пишется контрольная сумма, по которой в момент отказа любого диска можно на лету восстанавливать все данные.
В некоторых «настольных» контроллерах существует еще один режим – JBOD. В этом случае два или более дисков просто «складываются». Запись на них осуществляется по мере очередности заполнения дисков в массиве. Выигрыша в скорости тут нет, а вот надежность ухудшается по аналогии с RAID 0. Так что зачем он нужен пользователям – непонятно.
Практика
Практика, как всегда, более интересна, чем теория. Начнем с установки. Идеальный вариант – взять два диска одинаковой марки и емкости. В этом случае массив будет работать слаженно. В противном случае, теоретическая емкость и скорость массива будут ограничиваться удвоенной величиной наименьшего и самого медленного диска в массиве.
В нашем случае мы использовали два жестких диска Maxtor Diamond Plus 9 80 Гбайт, которые являются одними из самых быстрых SATA дисков на сегодняшний день. Доказательством тому служит наш недавний тест SATA дисков.
Для создания массива достаточно войти при загрузке в меню BIOS контроллера и выбрать опцию «Create Array».
Далее требуется выбрать тип массива (Stripe или Mirror) и подтвердить его автоматическую конфигурацию. В режиме ручной конфигурации BIOS позволяет выбрать очередность дисков в массиве и размер блока данных, который по умолчанию равняется 16 Кбайт.
Все, массив создан. Теперь для всех ОС то, что получилось - один диск. Далее выполняется процедура активизации диска и его форматирование. Для этого удобнее всего воспользоваться «управлением дисками» в Windows 2000/XP.
Тестирование
В нашем тесте мы использовали интегрированный двухканальный контроллер платы ASUS A7N8X Deluxe производства Silicon Image (Sil 3112ACT). Конфигурация тестового стенда была такова:
Плата – ASUS A7N8X Deluxe (nForce2 400 Ultra)
Процессор – AMD Athlon XP 3200+
Память – OCZ Platinum PC3200 @ DDR400
Видеоадаптер – ASUS A9600XT TVD
Жесткий диск – WD 400 BB
Диски в массиве – Maxtor 6Y080M0
Контроллер SATA RAID - Sil 3112ACT
Для теста использовались пакеты ZD WinBench 99 2.0 и AIDA32 3.88. Массивы в тесте имели размер блока данных 16 Кбайт. Теперь к цифрам.
AIDA32
**
**
То, что в режиме Stripe время доступа оказалось выше, вполне справедливо, а вот Mirror показал лучший результат. Вполне возможно, что контроллеру в этом режиме проще раскидывать данные на два диска, чем передавать одному.
На диаграмме видно, что чем сложнее режим, тем большую задержку вносит контроллер в передачу данных. Однако разница в результатах ничтожно мала, чтобы говорить о том, что контроллер тормозит тот или иной процесс передачи.
Очень хороший результат в режиме Stripe. Увеличение скорости последовательной записи на 52% относительно результатов, показанных одним диском. Режим Mirror показал 5% падение. Контроллер неидеален и вносит задержки, но все же, это очень хороший результат. Обратите также внимание на разницу между скоростями последовательной записи и записи данных, размещаемых случайным образом (Random Write). Соотношения этих скоростей полностью согласуются с полученными данными времен доступа.
Еще один великолепный результат – увеличение скорости чтения в режиме Stripe на 70%! Этой цифрой мы уже приближаемся к теоретическому барьеру. Также приятно видеть, что Mirror не дает падения в скорости и держится молодцом.
WinBench 99
На «Hi-End» режим Mirror дает падение в 3-4%, Stripe выходит вперед с отрывом в 20% от одиночного диска. В этом тесте мы прогнали еще один вариант Stripe, но изменили объем блока данных, сделав его 64-килобайтным. Как видно из диаграммы, данное значение блока данных дает лучшие результаты. Итоговая разница в скорости составила почти 37%.
Надежность хранения
В случае режима Stripe надежность системы снижается, т.к. при отказе одного диска массив уже не функционирует. В режиме Mirror отказ одного диска не нарушает работоспособности системы. При загрузке компьютера BIOS контроллера выведет тревожное сообщение о нарушении целостности массива и спустя некоторое время загрузка будет продолжена, равно как и нормальная работа. При замене отказавшего диска на аналогичный или больший по емкости в BIOS контроллера нужно выбрать пункт «Rebuild Mirrored set». После этого произойдет полное копирование старого диска на новый. Этот процесс займет много времени т.к. копируются не файлы, а все физическое содержимое диска. После завершения копирования массив вновь готов к работе.
Итоги
Мы не ставили задачу детального изучения производительности RAID массива. В наши планы входила более общая оценка работы. Результатом можно считать 20% прирост производительности на смешанных операциях с диском и ее рост до 70% при линейном чтении. Произведенная оценка надежности режима Mirror доказала простоту в эксплуатации и минимальное падение производительности – до 5% в режиме последовательной записи данных. В дальнейшие наши планы входит более детальное изучение производительности и зависимость скорости работы от размера блока данных.
В заключение хочется предупредить тех, кого впечатлили полученные нами результаты, и кто уже собрался в магазин за вторым жестким диском.
1. Создание любого массива ведет к полной потери данных на дисках.
2. Наши результаты были получены на контроллере Sil 3112ACT. Использование другого контроллера может сильно повлиять на результат.
3. Для создания массива, особенно Stripe, желательно использовать одни из самых быстрых жестких дисков одинаковой емкости. В противном случае теряется смысл всей затеи.