Аппаратный и программный RAID
Системы RAID (Redundant Array of Inexpensive Disks — избыточный массив недорогих дисков) реализуются одним из двух основных способов: программным или на выделенном аппаратном обеспечении. Оба метода вполне жизнеспособны и имеют свои достоинства.
В сегменте малого бизнеса, где господствуют системы на архитектуре Intel и AMD и операционные системы Windows, аппаратный RAID настолько распространён, что вокруг программного RAID возникло немало путаницы — во многом, как мы увидим, из-за обилия мошеннических программных RAID-продуктов, позиционируемых как выделенное аппаратное обеспечение и известных в народе как “Fake RAID”.
Когда RAID только появился, он использовался программным способом на высококлассных корпоративных серверах под управлением проприетарных UNIX-систем, где оборудование было очень мощным и надёжным, что делало программный RAID весьма эффективным. Ранний RAID был ориентирован преимущественно на зеркальные конфигурации или очень простые варианты с контролем чётности (например, RAID 2), требовавшие минимальных накладных расходов.
По мере того как потребность в RAID начала распространяться на серверы меньшего класса и росла популярность RAID с контролем чётности, требующего значительных вычислительных ресурсов, недостаточно мощные процессоры в x86-пространстве стали заметно страдать от нагрузки, создаваемой RAID, и особенно RAID 5. Это, в сочетании с практически полным отсутствием программных реализаций RAID в операционных системах, широко распространённых на этих платформах, привело к закономерному развитию аппаратного RAID — специализированного процессорного модуля (аналогичного GPU для графики), имеющего собственный полноценный компьютер с процессором, памятью и прошивкой.
Аппаратный RAID отлично справился с проблемой накладных расходов RAID в x86-серверном пространстве. По мере роста производительности процессоров и увеличения доступного объёма памяти популярные x86-операционные системы, такие как Windows Server, начали предлагать варианты программного RAID. В частности, программный RAID Windows был известен как слабая реализация, доступная только в серверных версиях операционной системы, что привело к недоверию к программному RAID в сообществе системных администраторов, работавших преимущественно с Windows.
Из-за исторически сложившихся реализаций в корпоративном серверном и рядовом x86-пространстве между двумя рынками образовалось естественное разграничение, поначалу обусловленное технологическими причинами, а впоследствии — исключительно идеологическими. Если спросить системного администратора в рядовом сегменте, то почти всегда услышишь, что аппаратный RAID — единственный вариант. Если же обратиться к системному администратору, работающему с мейнфреймами, RISC-серверами (Sparc, Power, ARM) или EPIC-серверами (Itanium, иногда называемыми UNIX-серверами), можно столкнуться с искренним удивлением, поскольку аппаратный RAID для этих классов систем попросту недоступен — программный RAID здесь является само собой разумеющимся. Ни одна из сторон, похоже, не имеет реального представления о ситуации в противоположном лагере, а переходы между этими двумя мирами были относительно редки вплоть до недавнего времени, когда корпоративные UNIX-платформы — Linux, Solaris и FreeBSD — приобрели широкую популярность и стали хорошо изученными на рядовых аппаратных платформах.
Чтобы ещё больше запутать ситуацию в рядовом серверном сегменте, многочисленные производители начали продавать обычные контроллерные карты вместе с «драйвером», представлявшим собой фактически программный RAID, выдавая получившийся продукт за настоящий аппаратный RAID. Это заполняло вакуум, образовавшийся из-за отсутствия программного RAID у доминирующего поставщика ОС для неserverных версий, при одновременной ориентации на менее технически грамотную аудиторию. Всё это породило огромную путаницу в лучшем случае и беспрецедентное презрение к программному RAID в худшем: практически любая система, основная функция которой — защита данных, а рынок которой построен на обмане и дезинформации, неизбежно заканчивается катастрофой. Системы Fake RAID регулярно страдают от проблем с производительностью и надёжностью. Хотя в теории стороннее программное обеспечение для RAID является разумным вариантом, в реальности практически все качественные программные реализации RAID являются родными компонентами либо самой операционной системы (Linux, Mac OSX, Solaris, Windows), либо файловой системы (ZFS, VxFS, BtrFS) и поддерживаются основными поставщиками, что практически не оставляет места или смысла для сторонних продуктов — за исключением Windows-настольного сегмента, где существует несколько небольших легитимных программных RAID-решений, нередко затеняемых игроками на рынке Fake RAID.
Сегодня необходимость в аппаратном RAID практически отпала: рядовые платформы невероятно мощны, и вычислительные ресурсы, как правило, имеются в значительном избытке. Аппаратный RAID конкурирует преимущественно на уровне функциональных возможностей, а не за счёт снижения нагрузки на ресурсы. Выбор между аппаратным и программным RAID в рядовом серверном сегменте определяется почти исключительно предпочтениями и инерцией рынка, а не конкретными показателями производительности или функциональными характеристиками — обе платформы по существу равны, и конкретные реализации гораздо важнее при сравнении продуктов, чем принципиальные различия между аппаратным и программным подходами.
Сегодня аппаратные RAID-решения, как правило, более «универсальны» со стандартными реализациями обычных уровней RAID. Аппаратный RAID традиционно оправдывает себя за счёт снижения использования ресурсов (разгрузки CPU и памяти), возможности «слепой замены» отказавших дисков, упрощённого управления хранилищем, блочного хранилища, абстрагированного от операционной системы на уровне блоков, быстрого кэша вблизи дисков и кэша с резервным питанием от батареи или флэш-памяти. Программный RAID традиционно оправдывает себя за счёт меньшего энергопотребления, меньших первоначальных затрат, интегрированного управления в рамках операционной системы, уникальных или расширенных возможностей RAID (например, RAIDZ в ZFS, не страдающий от типичной проблемы «дыры записи» RAID 5) и, как правило, более высокой общей производительности. Это действительно не вопрос «лучше или хуже», а вопрос «лучше или хуже для конкретной ситуации», где важнейшим фактором нередко являются привычка и удобство работы и/или предложение поставщика по умолчанию.
Один из наиболее часто упускаемых из виду, но важных факторов, разграничивающих аппаратный и программный RAID, — это изменение должностных обязанностей, связанных с управлением RAID-массивом. Аппаратный RAID перекладывает обслуживание массива на администратора сервера (специалиста службы поддержки, работающего с физическим сервером и находящегося в дата-центре), тогда как программный RAID переносит это обслуживание на системного администратора (специалиста, работающего на уровне операционной системы и выше, редко находящегося в дата-центре). В сегменте SMB этот фактор может быть полностью проигнорирован, однако в компании из Fortune 500 разграничение должностных ролей может иметь весьма существенное значение. Во многих случаях при использовании аппаратного RAID замена дисков и настройка системы могут выполняться без привлечения системного администратора. Администраторы серверного оборудования в дата-центре могут обнаруживать отказавшие диски — либо через уведомления, либо по «янтарным огонькам» во время обходов — и производить замену на ходу, не связываясь ни с кем и не зная даже, что именно запущено на сервере. При программном RAID системный администратор почти всегда вынужден участвовать в выводе из строя отказавшего диска, координации процесса замены с дата-центром и вводе нового диска в эксплуатацию после завершения замены.
В силу особенностей разгрузки CPU и производительности, а также ряда преимуществ в том, как нестандартные реализации RAID нередко обрабатывают восстановление RAID с контролем чётности, существует тенденция к тому, что зеркальные уровни RAID тяготеют к аппаратному RAID, а уровни с контролем чётности — к программному RAID. RAID с контролем чётности значительно более требователен к CPU, поэтому доступ к мощным ресурсам центрального процессора может стать ключевым фактором ускорения вычислений RAID. Однако при зеркальном RAID, где восстановление массива значительно безопаснее, чем при RAID с контролем чётности, и где более важны автоматизированные перестройки, аппаратный RAID обеспечивает преимущество в виде простой слепой замены дисков.
Один из аспектов дискуссии об аппаратном и программном RAID весьма парадоксален: тот самый рынок, который нередко огульно отвергает программный RAID как уступающий аппаратному, почти полностью совпадает (можно мысленно представить диаграмму Венна) с рынком, считающим файловые серверы уступающими рядовым NAS-устройствам, — тогда как эти самые NAS-устройства в сегменте SMB практически повсеместно основаны на тех же самых программных реализациях RAID, которые небрежно отвергаются. Таким образом, программный RAID нередко считается одновременно и хуже, и лучше. К NAS-устройствам и программному обеспечению для NAS в сегменте SMB, использующим программный RAID, относятся: Netgear ReadyNAS, Netgear ReadyData, Buffalo Terastation, QNAP, Synology, OpenFiler FreeNAS, Nexenta и NAS4Free.
В вопросе аппаратного и программного RAID действительно не существует принципа «всегда используйте один подход». Даже дорогостоящие корпоративные NAS- и SAN-устройства не пришли к единому решению: часть отрасли склоняется в одну сторону, часть — в другую. Реальный ответ таков: всё зависит от вашей конкретной ситуации — разграничения должностных ролей, технических требований, опыта, бюджета и т.д. Оба варианта полностью жизнеспособны в любой организации.
