Библиотека сайта rus-linux.net
2. Понимание RAID
- В:
Что такое RAID? Почему я всегда его использую?
О: RAID - путь комбинирования нескольких дисков в одно целое для увеличения скорости и/или надежности. Существует несколько различных типов и реализаций RAID, каждый со своими преимуществами и недостатками. Например, помещая копию одинаковых данных на два диска (называется зеркализация дисков, или RAID уровня 1), скорость чтения может быть повышена поочередным считыванием с каждого диска зеркала. В среднем, каждый диск менее занят, т.к. он обрабатывает только половину операций чтения (для двух дисков), или 1/3 (для трех дисков), и т.д. В дополнение, зеркало может повышать надежность: если один диск выходит из строя, другой диск содержит копию данных. Различные пути комбинирования дисков в один, обозначаются уровнями RAID, могут обеспечить большую эффективность хранения, чем просто зеркализация, или могут изменить производительность по задержкам (времени доступа), или производительность пропускной способности (скорости передачи), для чтения или записи, в то же время поддерживается избыточность - это полезно для противодействия отказам.
Хотя RAID может защитить от отказа, он не защищает от ошибок оператора и администратора (человека), или потерь вызванных ошибками программ (возможно и ошибками собственно программной реализации RAID). Сеть изобилует трагическими историями о системных администраторах, которые неправильно устанавливали RAID, и потеряли все свои данные. RAID - не заменяет необходимость частого, регулярного планового резервного копирования.
RAID может быть реализован аппаратно, в виде специальных дисковых контроллеров, или программно, как модуль ядра который связывает низкоуровневый драйвер диска, и файловую систему, которая находится на нем. Аппаратный RAID - всегда "дисковый контроллер", - это устройство к которому могут подсоединяться диски. Обычно он представляет собой плату, которая вставляется в слот ISA/EISA/PCI/S-Bus/MicroChannel. Однако, некоторые RAID контроллеры - в виде ящика, который соединяется кабелями с используемым дисковым контроллером, и дисками. Меньшие из них помещаются в дисковой стойке; большие могут быть встроены в дисковый шкаф со своими собственными стойками и источником питания. Последние аппаратные RAID используют с последними и быстрейшими процессорами, что обеспечивает обычно лучшую общую производительность, несмотря на значительную цену. Это потому, что большинство RAID контроллеров поставляются с встроенными процессорами на борту и кеш-памятью, которые могут значительно разгрузить суммарную обработку главного процессора, насколько позволяет скорость поступления данных в большой кеш контроллера. Старые аппаратные RAID могут работать как "тормоз" когда используются с новейшими процессорами: вчерашние модные встроенные процессоры и кеш могут быть бутылочным горлышком, и их производительность часто превосходится чисто-программными RAID и новыми, но простыми в других отношениях, дисковыми контроллерами. Аппаратные RAID могут иметь преимущество над чисто-программными RAID, если используют синхронизацию шпинделей дисков и знают позицию дисковых пластин относительно головок диска и желаемого дискового блока. Однако, большинство современных (дешевых) дисков не предоставляют эту информацию, во всяком случае, средства управления этим и т.о., большинство аппаратных RAID не имеет этих преимуществ. Аппаратные RAID различных производителей, версий и моделей обычно не совместимы: если RAID контроллер отказывает, он должен быть заменен на другой контроллер того-же самого типа. На момент написания (Июнь 1998), широкое разнообразие аппаратных контроллеров используется под Linux; однако, никакой из них, на текущий момент, не поставляется с утилитами конфигурации и управления, которые запускаются под Linux.
Software-RAID - набор модулей ядра, вместе с утилитами управления, которые реализуют чисто программный RAID, и не требуют необычной аппаратуры. Подсистема Linux RAID реализована в ядре, как уровень над низкоуровневыми драйверами дисков (для IDE, SCSI и Paraport устройств), и интерфейсом блочных устройств. Файловая система, будь то ext2fs, DOS-FAT, или другая, работает поверх блочного интерфейса. Программный RAID, по своей программной природе, склонен быть более гибким, чем аппаратная реализация. Обратная сторона этого - требуется больше процессорного времени, по сравнению с аппаратной реализацией. Конечно, цена не превзойденная. Кроме того программный RAID имеет одну важную отличительную особенность: он оперирует базируясь на разделах, где несколько отдельных дисковых разделов собираются вместе для создания разделов RAID. В этом отличие от большинства аппаратных решений RAID, которые объединяют вместе целые диски в массив. В аппаратных RAID, факт, что массив RAID - прозрачен для операционной системы, упрощает управление. В программном, гораздо больше конфигурационных опций и вариантов, что запутывает дело.
На момент написания (Июнь 1998), администрирование RAID под Linux далеко от простоты, и это лучше пробовать опытным системным администраторам. Теория функционирования сложна. Системные инструменты требуют модификации загрузочных скриптов. И восстановление дискового отказа непростая задача, и способствует ошибкам человека. RAID не для новичков, и полученный прирост в надежности и производительности, может запросто перевеситься излишней сложностью. Действительно, современные диски - невероятно надежны и современные процессоры и контроллеры вполне мощные. Вы можете более просто получить желаемую надежность и производительность купив диск высшего качества и/или быструю аппаратуру.
- В:
Что такое уровни RAID? Почему так много? Чем различаются?
О: Различные уровни RAID имеют различную производительность, избыточность, емкость, надежность и ценовые характеристики. Большинство, но не все, из уровней RAID предоставляют повышенную защиту от отказов диска. Из тех, которые предоставляют избыточность, RAID-1 и RAID-5 более популярны. RAID-1 предлагает лучшую производительность, в то же время RAID-5 применяется для более продуктивного использования имеющихся емкостей накопителей. Однако, настройка производительности - совсем иное дело, так как производительность зависит от множества различных факторов, от типа приложения, до размеров stripe-ов, блоков, и файлов. Более трудные аспекты настройки производительности откладываются до более поздних разделов этого HOWTO.
Далее описывается разница между уровнями RAID в контексте реализации программного RAID в Linux.
- RAID-linear
простое объединение разделов для создания большого виртуального раздела.
Это применяется если у Вас несколько маленьких дисков,
и Вы хотите создать один большой раздел.
Это объединение не предлагает избыточности, и фактически уменьшает общую
надежность: если один из дисков выходит из строя, весь раздел выходит из строя.
- RAID-1 так же называемый "зеркализацией"("mirroring").
Два (или более) раздела, все одинакового размера, каждый содержит
точную копию всех данных, блок в блок.
Зеркализация дает сильную защиту от отказов диска:
если один диск отказывает, есть другой с точной копией данных.
Зеркализация также может помочь увеличить производительность
подсистемы ввода-вывода, так как запросы на чтение могут
быть разделены между несколькими дисками. К несчастью,
зеркализация также менее эффективна в смысле емкости:
два зеркальных раздела могут вместить не больше данных, чем один раздел.
- Striping - базовая концепция всех других уровней RAID.
stripe - непрерывная последовательность дисковых блоков.
stripe может быть размером с один дисковый блок,
или может состоять из тысяч. Устройства RAID разделяют содержащие их разделы дисков на stripe-ы;
различные уровни RAID различаются в том, как они организуют stripe-ы, и как данные размещаются на них.
Взаимодействие между размером stripe-ов, типичными размерами файлов
в системе, и их положением на диске - определяет общую производительность подсистемы RAID.
- RAID-0 подобна RAID-linear, исключая то, что
компоненты разделов делятся на strip-ы и затем
чередуются. Подобно RAID-linear, результат - один
большой виртуальный раздел. Так же как и в RAID-linear, это не
предполагает избыточности, и тоже уменьшает общую надежность:
отказ одного диска ударит по всему.
RAID-0 часто претендует на увеличение производительности по сравнению
RAID-linear. Однако, это может быть или не быть справедливо,
в зависимости от характеристик файловой системы, типичного размера
файла по сравнению с размером stripe, и типа рабочей нагрузки.
Файловая система
ext2fs
уже рассеивает файлы по разделу, стараясь минимально фрагментировать. Итак, на простейшем уровне, любой доступ может быть выполнен к одному из нескольких дисков, и таким образом, чередование stripe-ов по многим дискам предоставляет реальные преимущество. Однако, существует разница в производительности, она зависит от данных, рабочей загрузки, и размера stripe. - RAID-4 чередует stripe-ы подобно RAID-0, но
требуется дополнительный раздел для размещения информации о четности.
Четность используется для получения избыточности:
если один из дисков отказывает, данные на оставшихся дисках
могут быть использованы для воссоздания данных на отказавшем диске.
Получаем N дисков с данными, и один диск с четностью,
stripe четности вычисляется так - берется один stripe из каждого
диска с данными, и XOR-ятся вместе. Итак,
емкость (N+1)-дисков массива RAID-4 равна N, что намного лучше чем зеркализация (N+1) дисков,
и почти так же хорошо, как RAID-0 на N.
Заметьте, что для N=1, где один диск с данными, и один паритетный,
RAID-4 эквивалентен зеркализации, при этом каждый из двух дисков
копирует друг друга. Однако,
RAID-4 НЕ дает производительности чтения зеркализации,
и имеет пониженную производительность записи. По просту, это потому, что обновление
паритета требует чтения старого паритета, перед тем, ка новый паритет
может быть вычислен и записан. При большом количестве операций записи,
паритетный диск может стать "бутылочным горлышком", т.к. каждая операция записи
должна обращаться к паритетному диску.
- RAID-5 освободжден от "бутылочного горлышка" при записи на RAID-4
размещением паритетных stripe вперемешку на каждом диске. Однако,
производительность записи все еще не столь хороша, как при зеркализации,
так как паритетный stripe все же должен быть считан и XOR-ен перед записью.
Производительность чтения тоже не так хороша, как при зеркализации, так как, после этого,
есть только одна копия данных, не две или более.
Принципиальное преимущество RAID-5 над зеркализацией то, что он предоставляет
избыточность и защиту от отказа одного диска, в то же время предоставляет
намного больше емкости, когда используется с тремя или более дисками.
- RAID-2 и RAID-3 редко используются, и
в некоторой степени стали устаревшими для современных дисковых технологий.
RAID-2 подобен RAID-4, но размещает ECC информацию вместо паритетной.
С тех пор как все современные диски реализуют ECC в себе, это предоставляет
маленькую дополнительную защиту. RAID-2 может дать большую
целостность данных, если пропало питание в процессе записи; однако,
резервные аккумуляторы и чистое завершение работы могут дать ту же выгоду.
RAID-3 подобен RAID-4, исключая то, что он использует
наименьший возможный размер stripe. Как результат, любая операция чтения
будет включать в себя все диски, делая перекрытие
запросов ввода-вывода трудным/невозможным. Для избежания
задержек при ожидания вращения, RAID-3 требует синхронизации всех
шпинделей дисков. Большинство современных дисков
не имеют способности синхронизировать шпиндели, или,
если и имеют, не имеют нужных соединителей, кабелей,
и документации производителей. Ни RAID-2 ни RAID-3
не поддерживаются драйверами программного RAID в Linux.
- Прочие уровни RAID определены различными
исследователями и поставщиками. Многие из них представляют
наложение одного типа raid поверх другого. Некоторые требуют
специального оборудования, а другие защищены патентами.
Нет единой схемы именования этих уровней. Иногда преимущества этих
систем небольшие, или по крайне мере не проявляются
пока система не слишком нагружена. Исключая
размещение RAID-1 поверх RAID-0/linear, Программный RAID Linux
не поддерживает никакие друге варианты.
- RAID-linear
простое объединение разделов для создания большого виртуального раздела.
Это применяется если у Вас несколько маленьких дисков,
и Вы хотите создать один большой раздел.
Это объединение не предлагает избыточности, и фактически уменьшает общую
надежность: если один из дисков выходит из строя, весь раздел выходит из строя.
Next Previous Contents