RAID

RAID (англ. redundant array of independent/inexpensive disks — избыточный массив независимых/недорогих жёстких дисков) — массив из нескольких дисков, управляемых контроллером, взаимосвязанных скоростными каналами и воспринимаемых внешней системой как единое целое. В зависимости от типа используемого массива может обеспечивать различные степени отказоустойчивости и быстродействия. Служит для повышения надёжности хранения данных и/или для повышения скорости чтения/записи информации (RAID 0).

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

Виды RAID -массивов

  • аппаратные (hardware): полностью аппаратный RAID-контроллер проводит все операции самостоятельно (независимо от процессора), и представляет весь RAID-массив в виде одного диска. Такие устройства оснащаются сложными вычислительными процессорами и собственной памятью. Очень часто аппаратные контроллеры выполняются в виде плат расширения для PCIe ×4 или PCIe ×16. Цена такого устройства вполне сопоставима со стоимостью неплохого системного блока. Adaptec RAID: Adaptec SATA RAID 2410SA; Adaptec ASR-6405; 3ware/LSI Logic: 3ware 9650SE-4LPML SATA, 3ware 3W-9690SA-4I SAS - Serial Attached SCSI.
  • программно-аппаратно: часть функций контроллера возлагается на плечи центрального процессора и оперативной памяти посредством драйверов. Как правило, по такому принципу работают все недорогие RAID-контроллеры, включая те, что встраиваются сегодня в материнские платы. Управление данными происходит не на уровне самого «железа», а на уровне микрокода BIOS через драйвер ОС. От сюда и такие понятия как «драйвера» на SATA-RAID (без которых RAID видится как отдельные диски), от сюда и проблемы. Во-первых это несовместимость – сгорела материнская плата, и ищи такую же плату целиком (не контроллер), нужна идентичная плата чтобы добыть свои ценные данные.
    • FakeRAID при помощи утилиты dmraid - обнаруживает, активирует, деактивирует и показывает свойства программных RAID-массивов (интегрированных в материнскую плату).
  • программные(software):
  • внешние:
    • Функции RAID выполняет микропроцессор внешнего, независимого от хоста RAID-контроллера. Внешние RAID-контроллеры размещаются в отдельном корпусе (обычно вместе с самим RAID-массивом), имеющем свой независимый блок питания и управляются через внешний канал SCSI-контроллера, подключенного к системной плате. Внешние RAID-контроллеры обеспечивают самый высокий уровень производительности и надежности из всех типов RAID-контроллеров и их рекомендуют для серверов среднего и верхнего уровней. Наличие же каналов Fibre Channel позволяет разнести сервер и raid массив на значительное расстояние для защиты данных. Единственный недостаток - относительно высокая цена.
К сожалению, каждая разновидность RAID (имеется ввиду производитель решения) контролируется разными программами - нет единообразия решений.

Выбор RAID - контроллера

  • Аппаратный или программный RAID? Разница между двумя видами RAID заключается не только в цене. Аппаратный RAID-контроллер производит все необходимые вычисления самостоятельно; программный RAID нагружает центральный процессор сервера. Поэтому, если уровень RAID сравнительно простой (RAID 0 или 10), а сервер достаточно производительный, вы можете воспользоваться программной реализацией. Более сложные вычисления, которые выполняются, например, в рамках уровней RAID 5EE или 6, должны желательно выполняться аппаратным RAID-контроллером, поскольку его работа не снизит производительность сервера в целом. Аппаратный RAID также независим от операционной системы, а простые драйверы хост-адаптера, как правило, являются частью ее дистрибутива. Аппаратный RAID-контроллер, при наличии батареи, может работать в режиме обратной записи, добавляя еще один уровень защиты данных.
  • Зависимость от операционной системы. Операционные системы постоянно совершенствуются и причины, по которым вы выбираете операционную систему сегодня, могут стать несущественными уже через год. В дополнение к этому, на разных серверах и рабочих станциях могут быть установлены разные операционные системы. RAID-контроллер не должен ограничивать вас ни в выборе ОС, ни в стоимости модернизации ОС.
  • Огромный минус аппаратного RAID: HDD отформатированы контроллером и могут работать и читаться только контроллером того же производителя (т.е. каждый производитель 3ware, Adaptec, Intel по политическим соображениям делают свои не совместимые друг с другом контроллеры). Вывод сломался контроллер или нужно найти полностью аналогичный (+ идентичная прошивка) или прощай данные. Бекап может никто и не отменял, но он не всегда целесообразен ведь зачастую информация не важна и важна бесперебойная работа сервера.

Software vs FakeRaid

  • при выходе из строя материнки можно использовать любую другую в случае mdadm
  • mdadm качественней любого Fakeraid-софта (!!????)
  • mdadm нагружает дополнительно ЦП
  • в Fakeraid для операций записи-чтения на диски (разбивка на страйпы) используется чип с собственной логикой, в Software эти операции решаются силами процессора. встроенный в мат. плату RAID лучше вообще не использовать, потому что он представлен на самом деле в виде firmware и к нему нужны драйвера, которых может и не быть под Linux.
  • если для fakeraid надо использовать линуксовый драйвер dmraid, а для softraid юзается mdadm, то лучше не забивать себе голову лишними вещами и юзать сразу mdadm, к тому же при принесении дисков на любой комп вы сможете сделать mdamd –asseble и заюзать raid
  • В разных форумах активно не рекомендует пользоваться встроенной поддержкой fake-raid'а, приводя кучу аргументов, а только soft-raid'ом…потому что fake-raid — это фактически софтовый raid, только у каждого производителя свой собственный формат хранения (а то и несколько). и требуется, чтобы либо dm-raid его понимал, либо вкорячивать в систему малооттестированный блоб от производителя (чаще всего он жёстко привязан к конкретной версии ядра, а если и не жёстко, то совсем не факт, что пересобираемая прослойка соберётся под современными ядрами). не хотите — используйте свободную реализацию soft-raid-а. гораздо более надёжную ввиду лучшей оттестированности.
  • Скорость чтения записи raid1 будет одинаково работать на софтварном и аппаратном рейде, ну очень минимальные отличия, так как не надо вычислять контрольные суммы.

В реальном аппаратном рейде контрольные суммы вычисляются на контроллере + там есть проверка на отложенную запись.

Повторяю для особо одарённых: настоящий RAID абсолютно прозрачен для операционных систем (любых), не требует установки драйверов, не даёт увидеть отдельных дисков вместо массива целиком. Всё остальное - software/fake raid.

Поддержка RAID в Linux

Многие контроллеры RAID для своей работы требует драйвера на уровне ядра операционной системы. Для того чтобы выяснить поддерживает ли ядро ваше устройство нужно установить файлы документации.

Для Debian:

# aptitude install linux-doc-2.6.26 user-mode-linux-doc

Для Ubuntu:

# aptitude install linux-doc user-mode-linux-doc

После установки, например поддержка RAID контроллеров Adaptec будет описана в файле aacraid.txt.gz

# mcedit /usr/share/doc/linux-doc/scsi/aacraid.txt.gz

Мониторинг состояния HDD, RAID

Уровни спецификации RAID и таблица сравнения быстродействия RAID

Калифорнийский университет в Беркли представил следующие уровни спецификации RAID, которые были приняты как стандарт де-факто:

  • RAID 0 представлен как не отказоустойчивый дисковый массив.
  • RAID 1 определён как зеркальный дисковый массив.
  • RAID 2 зарезервирован для массивов, которые применяют код Хемминга.
  • RAID 3, 4, 5 используют чётность для защиты данных от одиночных неисправностей.
  • RAID 6 используют чётность для защиты данных от двойных неисправностей
  • Комбинированные уровни
  • RAID 0 («Striping») — дисковый массив из двух или более жёстких дисков с отсутствием избыточности. Информация разбивается на блоки данных (Ai) и записывается на оба/несколько дисков одновременно.

(+): За счёт этого существенно повышается производительность (от количества дисков зависит кратность увеличения производительности).

(+): RAID 0 может быть реализован как программно, так и аппаратно.

(−): Страдает надёжность всего массива (при выходе из строя любого из входящих в RAID 0 винчестеров полностью и безвозвратно пропадает вся информация). Надёжность массива RAID 0 заведомо ниже надёжности любого из дисков в отдельности.

  • RAID 1 (Mirroring — «зеркалирование»).

(+): Обеспечивает приемлемую скорость записи и выигрыш по скорости чтения при распараллеливании запросов.

(+): Имеет высокую надёжность — работает до тех пор, пока функционирует хотя бы один диск в массиве.

(-): Недостаток заключается в том, что приходится выплачивать стоимость двух жёстких дисков, получая полезный объем одного жёсткого диска (классический случай, когда массив состоит из двух дисков).

Изначально предполагается, что жёсткий диск — вещь надёжная. Соответственно, вероятность выхода из строя сразу двух дисков равна (по формуле) произведению вероятностей отказа каждого диска, то есть ниже на порядок. К сожалению, данная теоретическая модель недостаточно полно отражает процессы, протекающие в реальной жизни. Так, обычно два винчестера берутся из одной партии и работают в одинаковых условиях, а при выходе из строя одного из дисков нагрузка на оставшийся увеличивается, поэтому на практике при выходе из строя одного из дисков следует срочно принимать меры — вновь восстанавливать избыточность. Для этого с любым уровнем RAID (кроме нулевого) рекомендуют использовать диски горячего резерва. Достоинство такого подхода — поддержание постоянной надёжности. Недостаток — ещё большие издержки (то есть стоимость трёх винчестеров для хранения объёма одного диска).

Зеркало на многих дисках — RAID 1+0. При использовании такого уровня зеркальные пары дисков выстраиваются в «цепочку», поэтому объём полученного тома может превосходить ёмкость одного жёсткого диска. Достоинства и недостатки такие же, как и у уровня RAID 0. Как и в других случаях, рекомендуется включать в массив диски горячего резерва из расчёта один резервный на пять рабочих.

Помимо базовых уровней RAID 0 — RAID 5, описанных в стандарте, существуют комбинированные уровни RAID 1+0, RAID 3+0, RAID 5+0, RAID 1+5, которые различные производители интерпретируют каждый по-своему.

- RAID 1+0 — это сочетание зеркалирования и чередования.

Нынешние контроллеры используют этот режим по умолчанию для RAID 1. То есть, 1 диск основной, 2-й диск — зеркало, причем чтение производится с них поочередно, как для RAID 0. Собственно, сейчас можно считать что RAID 1 и RAID 1+0 — это просто разное название одного и того же метода аппаратного зеркалирования дисков. Но не стоит забывать, что полноценный RAID 1+0 должен содержать как минимум 4 диска.

- RAID 5+0 — это чередование томов 5-го уровня. RAID 1+5 — RAID 5 из зеркалированных пар. И так далее.

Комбинированные уровни наследуют как преимущества, так и недостатки своих «родителей»: появление чередования в уровне RAID 5+0 нисколько не добавляет ему надёжности, но зато положительно отражается на производительности. Уровень RAID 1+5, наверное, очень надёжный, но не самый быстрый и, к тому же, крайне неэкономичный: полезная ёмкость тома меньше половины суммарной ёмкости дисков…

Стоит отметить, что количество жестких дисков в комбинированных массивах также изменится. Например для RAID 5+0 используют 6 или 8 жестких дисков, для RAID 1+0 — 4, 6 или 8.

PQ VPS сервера в 28+ странах.