RAID-контроллеры для FOSS: аппаратные и не очень

Алексей Федорчук

В прежние времена, когда речь заходила о RAID на аппаратных контроллерах, имелись ввиду «настоящие железные» решения, реализованные на отдельных платах, оснащённых собственными чипами, кэш-памятью, BIOS’ом и прочими атрибутами. В результате чего даже простые карты с интерфейсом PATA/SATA по стоимости превосходили материнские платы. А о SCSI- или SAS-картах, требовавших к тому же и много более дорогостоящих винчестеров, даже и упоминать не хочется.

Однако уже достаточно давно получили распространение более дешёвые варианты — дополнительные PATA-, а затем и SATA-контроллеры, “размазанные по маме”. Одно время ими оснащалась чуть ли не каждая вторая плата среднего и вышесреднего ценового диапазона. Встречаются они и ныне, обеспечивая заодно поддержку PATA-интерфейса, уже довольно давно изъятую из чипсетов Intel.

Такие контроллеры основывались и основываются обычно на чипах производства нескольких фирм: Promise, HighPoint, Silicon Image, Marvell, и на цену материнской платы влияют или очень мало, или (для навороченных моделей) никак. Казалось бы — идеальное решение? Но всё оказывается не так просто.

Теоретически все контроллеры от указанных производителей поддерживаются каноническим ядром Linux. Для чего при его конфигурировании следует включить общую поддержку ATA RAID и поддержку наличествующего чипа.

Поддержка ATA RAID может быть модульной или, если предполагается загрузка с массива, встроенной в ядро. Последний случай потребует и ещё одной опции — загрузки с устройств на внешнем контроллере. А также некоторых ухищрений с системным загрузчиком.

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

В некоторых из таких случаев помогали драйверы от производителя чипа. Однако тут следует помнить: драйверы эти (в сущности, подключаемые модули ядра) доступны исключительно в бинарном виде и скомпилированы не только под определённую версию ядра, но часто и под конкретный дистрибутив (во времена, когда я много возился с таким «железом», обычно попадались под Red Hat и Suse) конкретной (как правило, не самой юной) версии. Так что гарантировать их работоспособность в произвольной Linux-системе трудно.

Казалось бы, с встраиванием в чипсеты от Intel штатной поддержки RAID-функций (если не изменяет память, это случилось при появлении южных мостов ICH5) положение должно было бы измениться. Во-первых, сами устройства фактически становились стандартным компонентом почти любой материнской платы. А во-вторых, Intel всгда отличалась либеральным подходом к спецификациям на своё «вспомогательное железо».

«Мамедка как думал? А как вышло?» А вышло так, что сменилось уже пять поколений Intel’овских чипсетов, их модификации без поддержки RAID фактически исчезли с материнских плат — а воз и ныне там: беспроблемной работы «чипсетных» массивов в Linux или, скажем, FreeBSD, как не было, так и нет. Почему?

Тут пора открыть страшную тайну: «чипсетный» RAID, хотя и реализован в «железе», не является по настоящему аппаратным. Это программная прошивка, причём рассчитанная на работу в совершенно определённой операционной системе. Я думаю, вдумчивому читателю не надо подсказывать её название. И даже в этой ОС «чипсетные» массивы работают с определёнными версиями её. Что, как говорят, подчас заставляет пользователей версий более старых вспоминать о таком затянутом паутиной устройстве, как трёхдюймовый дисковод и дискета с драйверами, подсовываемая туда в момент загрузки.

Так что и нынче дело с «чипсетными» RAID обстоит не лучшим образом. С чем я столкнулся при общении с накопителем OCZ Revo Drive, построенным по тому же принципу. Так что, буде возникает желание или необходимость в мультидисковых конфигурациях, я по возможности обращаюсь к чисто программным решениям.

Правда, возникает вопрос — а нужны ли RAID народу? Но это — тема другой заметки.