Все упомянутые методы RAID поддерживаются программно в операционных системах Windows NT/2000/2003 Server. Но с точки зрения надежности и производительности, предпочтительнее аппаратная реализация.
Следующей по мере увеличения надежности и производительности стоит поддержка Serial ATA RAID 0, 1 и 0+1(10) на ряде материнских плат среднего и верхнего ценового диапазона. Данный RAID иногда называют аппаратным, но это не более, чем недоразумение. В популярных решениях от Intel, Promise, RAIDCore/Broadcom, SIS и VIA функциональность RAID реализована в драйверах, при этом аппаратура выполняет функции контроллера Serial ATA и плюс к этому имеет регистры для взаимодействия с драйвером RAID. Т.е. речь идет о преимущественно программном RAID-е, при котором специфичные операции выполняются на центральном процессоре. Судя по тому, что загрузка процессора бывает невысокой - по разным тестам от 0.5% до 25%, такой подход можно считать оправданным. Аппаратное ускорение RAID явным образом заявлено только в чипсете NVidia nForce 250 для Athlon 64, причем без уточнения деталей ("The combination of hardware acceleration and optimized software architectures adds up to superior performance").
Программный RAID на контроллере отличается от программного RAID для Windows тем, что массив строится из физических дисков, а не из их логических разделов. Как следствие, появляются определенные преимущества:
Производительность контроллера зависит главным образом от эффективного управления дисками (в этом плане упоминались поддержка очереди команд и чередование запросов в RAID 1), а также от скорости обмена данными с оперативной памятью. Скорость обмена зависит от того, где находится контроллер - в чипсете или в отдельном чипе. В последнем случае чип обычно подключается к шине PCI, которая обладает ограниченной пропускной способностью (133 MB/s). Впрочем, пропускной способности PCI вполне хватает для обслуживания двух не слишком быстрых дисков в массиве RAID уровня 0 или 1. Есть только одно но - это гигабитный сетевой контроллер, который обычно тоже сидит на шине PCI и может откусить от нее до 125 MB/s. Если он будет работать при предельной нагрузке, то на долю дискового массива останется всего ничего.
Производительность увеличится, если хотя бы один контроллер (RAID или гигабитный сетевой) будет подключен в обход PCI на более скоростную шину. На эту тему есть гигабитные сетевые чипы Intel 82547EI для CSA (266 MB/s) и Marvel Yukon 88E8050 для PCI Express X1 (512 MB/s). С дискретными чипами Serial ATA RAID дело обстоит сложнее - они задействуют cкоростные расширения шины PCI, которые имеются только на серверных платах.
Пропускная способность PCI становится недостаточной при создании массивов из большого числа дисков, например, по технологии RAID 0+1. Походящий для них уровень производительности могут обеспечить контроллеры, встроенные в чипсет - если они подключаются к скоростным внутренним шинам. Но и здесь можно встретить контроллеры, полученные простым встраиванием в чипсет дискретных решений с интерфейсом PCI. Вот хороший обзор на эту тему: Chipset Serial ATA and RAID performance comparison.
Более продвинутые технологии, такие как RAID 5, реализуются внешними контроллерами, в их числе - Promise FastTrak S150 SX4 и различные платы с применением оптимизированных под RAID 0 чипов Silicon Image Sil3112, Sil3114 и аппаратного XOR-процессора. Здесь речь идет об аппаратно-программном решении, т.к. XOR-процессор берет на себя вычисление контрольных сумм RAID 5. Для ускорения работы на плату устанавливается буферная память и скоростные расширения шины PCI. Многие контроллеры допускают установку и на десктоповую шину PCI, но их производительность в этом режиме будет не особенно высокой.
Десктоповая шина PCI (32 bit, 33 MHz, 133 MB/s) не подходит для скоростных контроллеров, т.к. при объединении диcков в массив RAID скорость передачи данных суммируется. К примеру, теоретическая скорость передачи данных с пяти дисков Serial ATA в массиве RAID 5 будет равна 600 (4*150) MB/s, реальная скорость доходит до 220 MB/s: см. Тесты масштабирования RAID 5: от трёх до восьми жёстких дисков.
Полностью аппаратный RAID встречается в дорогих контроллерах с микропроцессорами, применение которых оправдано при наличии большого числа дисков, повышенных требований к готовности и т.п. Что же касается массива RAID 1, то здесь можно ограничиться материнской платой со встроенным контроллером - именно это решение будет оптимальным по стоимости для платформ Pentium 4 и Athlon 64. Вот известные мне чипы Serial ATA RAID, которые применяются (или могут применяться) на материнских платах: В колонке Чередование RAID 1 помечены чипы, которые хотя бы в одном тесте работают с массивом RAID 1 быстрее, чем с одиночным диском. Эффективной реализацией RAID 1 и 0+1 обладают чипсеты NVidia: благодаря оптимизации последовательного чтения RAID 0+1 показывает невероятную скорость чтения в Burst Mode - до 320 MB/s по ATTO, а общая производительность RAID 1 и 0+1 в тестах IOMeter аналогична производительности соответствующих по числу дисков массивов RAID 0. В драйверах RAID от Promise оптимизирован только случайный доступ, в то время как последовательное чтение идет на одинарной скорости. В колонке Внешняя шина для дискретных решений указан интерфейс обмена данными, а для встроенных контроллеров - верхняя граница скорости обмена при максимальном размере дискового массива. Верхняя граница посчитана по формуле: min (s*150, b), где s - число независимых каналов Serial ATA, b - пропускная способность внешней шины. Понятно, что речь идет о теоретической скорости обмена; реальная максимальная скорость обмена определяется по результатам испытаний и бывает на 10-50% ниже. Значком * помечены позиции, для которых соответствующие функции RAID реализованы программно, т.е. выполняются драйвером, а не контроллером. Значком # помечены позиции, для которых применяется аппаратное ускорение. Отсутствие значка говорит о том, что способ реализации не выяснен. В качестве примера остановимся более подробно на поддержке RAID в чипсетах Intel. Чтобы включить RAID для южных мостов ICH5R и ICH6R(RW), требуется Intel Application Accelerator - поэтому дисковый массив будет работать только под Windows 2000/XP/2003 (имеется также патч для ядра Linux 2.4 с ограниченными возможностями). Это наводит на мысль о том, что RAID от Intel является программным, т.е. все специфичные операции выполняются на центральном процессоре - насколько можно судить по BIOS, для этого используется технология HostRAID от Adaptec. Программный характер RAID подтверждается изучением спецификаций южных мостов, в которых упомянут только один регистр конфигурации RAID, причем его значение не зависит от типа массива RAID (0 или 1). Надо отметить, что многие производители распаивают на топовых платах с чипсетами Intel сторонние контролеры Serial ATA RAID вместо того, чтобы полагаться на южный мост - и это несмотря на то, что тот показывает отличную производительность в массивах RAID 0 и 1. Вот статья, в которой производительность RAID на ICH5R сравнивается с производительностью контроллера Promise PDC20319. Аналогичным образом поддерживается RAID в южном мосте 6300ESB. К примеру, для платы Intel SE7210TP1-E ("Torrey Pines") применяются драйверы HostRAID от Adaptec с теми же ограничениями на операционные системы - поддерживается Windows NT и выше, а для Linux есть патчи, которые надо вшивать в ядро системы.
Чип Число дисков Serial ATA в массиве Чередование в RAID 1 Очередь команд Внешняя шина RAID 0 RAID 1 RAID 0+1 RAID 5 ATI SB800 (южный мост чипсетов на ядрах RX480/RS480/RS400) 2-4 2 4 - н/д н/д н/д Broadcom BCM 5770R (RAIDCore BCM4452-H) 2-4* 2-4* 2-4* 3-4* н/д - PCI-X Broadcom BCM 5770 (RAIDCore BCM4852-H) 2-8* 2-8* 2-8* 3-8* н/д - PCI-X Intel ICH5R (южный мост Intel E7525/E7520/E7320/875/865/848) 2* 2* - - + - 266 MB/s Intel 6300ESB (южный мост Intel E7525/E7520/E7320/E7210) 2* 2* - - н/д - 266 MB/s Intel ICH6R(RW) (южный мост Intel 925/915) 2-4* 2* 2(MST)* - + NCQ 600 MB/s NVidia nForce3 Ultra, 250Gb, 250 (северный мост) 2*# 2*# - - + - 300 MB/s NVidia nForce3 Ultra, 250Gb, 250 + PHY-контроллер 2-4*# 2*# 4*# - 600 MB/s Marvel 88SX5041 (4 порта Serial ATA) Зависит от драйвера RAID TCQ PCI-X Marvel 88SX5081 (8 портов Serial ATA) Зависит от драйвера RAID TCQ PCI-X Marvel 88SX6041 (4 порта Serial ATA II) Зависит от драйвера RAID TCQ/NCQ PCI-X Marvel 88SX6081 (8 портов Serial ATA II) Зависит от драйвера RAID TCQ/NCQ PCI-X Promise PDC20371 (FastTrak S150 TX2plus), PDC20376, PDC20378 2* 2* - - + - PCI/33/66 Promise PDC20319 (FastTrak S150 TX4) 2-4* 2* 4* - + - PCI/33/66 SIS 180 2* 2* - - - - PCI/33 SIS 964 (южный мост SIS 760/755/741/GX/661/655FX/TX), 965L 2* 2* - - 300 MB/s SIS 965 (южный мост SIS 756/656/649) 2-4* 2* 4* - н/д - 600 MB/s Silicon Image Sil3112 2* 2* - - - - PCI/33/66 Silicon Image Sil3512 2* 2* - - - NCQ* PCI/33/66 Silicon Image Sil3114 2-4* 2* 4* - - NCQ* PCI/33/66 Silicon Image Sil3124 2-4* 2* 4* 3-4* н/д TCQ/NCQ PCI-X VIA VT6240, VT6221 2* 2* - - - - PCI/33/66 VIA VT6240, VT6221 + PHY-контроллер (SATA Lite) 2-4* 2* 4* - VIA VT8237 (южный мост VIA 880/800/600/533/400A) 2* 2* - - 133 MB/s VIA VT8237 + PHY-контроллер (SATA Lite) 2-4* 2* 4* - VIA VT8251 (перспективный южный мост) 2-4 2 4 - н/д NCQ н/д Легенда н/д = нет данных