Есть много преимуществ в использовании RAID. Некоторые из них: возможность
комбинировать несколько физических дисков в один большой ``виртуальный'' диск,
увеличение производительности и надежности.
Linux RAID может работать на большинстве устройств. Не имеет значения
используете Вы IDE или SCSI диски, или и те и другие. Некоторые люди также
более или менее успешно использовали Сетевое блочное Устройство (Network Block Device (NBD)).
Удостоверьтесь, что шины к дискам достаточно быстры. Вы не должны
вешать 14 UW-SCSI дисков на одну UW шину, если каждое устройство может дать
10 Мб/с, а шина может только 40 Мб/с.
Также, вы должны держать только одно устройство на IDE шине. Работа дисков
master/slave ужасна по производительности. IDE очень плох при подключении
более одного диска на шину. Конечно, все новые материнские платы
содержат две IDE шины, так что Вы можете установить два диска в
RAID без покупки дополнительных контроллеров.
Уровень RAID не имеет абсолютно ничего общего с уровнем файловой системы.
Вы можете держать любую файловую систему на устройстве RAID, как и на любом
другом блочном устройстве.
Слово ``RAID'' означает ``Программный Linux RAID''. Этот HOWTO не рассматривает
аспекты аппаратных RAID.
При описании установки, полезно сверить число дисков и их размеры.
Каждый раз буква N используется для указания количества активных
дисков в массиве (не считая резервных дисков). Буква S, если не
указано обратное, - размер наименьшего устройства в массиве. Буква P
используется как производительность одного диска в массиве в Мб/с.
Мы предполагаем, что диски одинаково быстрые, что может быть не всегда
справедливо.
Заметьте, что слова ``устройство'' и ``диск'' означают одно и то же.
Обычно устройства, используемые для построения RAID, являются разделами диска,
не обязательно целыми дисками. Но объединение нескольких разделов на одном
диске обычно бессмысленно, таким образом устройства и диски обозначают просто
``разделы на различных дисках''.
Здесь приводится короткое описание того, что поддерживается патчами Linux
RAID. Часть из этой информации - чисто базовая информация о RAID, но
я добавил несколько замечаний о особенностях реализации уровней в Linux.
Если Вы знакомы с RAID, просто пропустите эту секцию. Позже, если возникнут
проблемы, можете вернуться к ней :)
Текущие RAID патчи для Linux поддерживают следующие уровни:
Линейный режим
Два или более диска объединяются в одно устройство. Диски
``добавляются'' один к другому, таким образом, запись на устройство RAID
будет заполнять сначала диск 0, затем диск 1 и так далее. Диски не обязательно
должны быть одного размера. Фактически, размер здесь вообще не имеет значения :)
На этом уровне нет избыточности. Если один диск отказывает, Вы, скорее
всего, потеряете все Ваши данные. Однако, Вы, возможно, сможете удачно
восстановить часть данных, так как в файловой системе будет просто
отсутствовать один большой последовательный кусок данных.
Производительность чтения и записи не увеличивается для одиночных
операциях считывания/записи. Но если несколько пользователей используют
устройство, Вам может повезти, и один один пользователь может фактически
использовать первый диск, а другой пользователь обращаться к файлам
на втором диске. Если это произойдет, вы получите прирост производительности.
RAID-0
Также называемый режим ``stripe''. Подобен линейному режиму, исключая то,
что чтение и запись производятся параллельно с двух устройств. Устройства
должны иметь приблизительно один размер. Так как весь доступ производится
параллельно, устройства заполняются одинаково. Если одно устройство больше, чем
другие, это дополнительное пространство все еще используется в RAID устройстве,
но при записи в самом конце вашего RAID устройства, Вы получаете доступ только
к этому одному диску, что, конечно, снижает производительность.
Как и в линейном режиме, на этом уровне нет никакой избыточности.
В отличии от линейного режима, Вы не сможете восстановить никаких данных при
отказе диска. Если Вы удаляете диск из RAID-0 набора, в RAID устройстве
будет не просто отсутствовать последовательный кусок данных, оно будет
заполнено маленькими дырочками по всему устройству. e2fsck будет не в
состоянии восстановить большую данных на этом устройстве.
Производительность чтения и записи увеличится, так как чтение и запись
будут выполняться параллельно на дисках. Обычно, это главная причина
использования этого уровня RAID. Если шины к дискам достаточно быстрые,
Вы сможете получить почти N*P Мб/сек.
RAID-1
Это первый режим, который реализует избыточность. RAID-1 может
использоваться на двух или более дисках с нулем или более резервными дисками.
Этот режим поддерживает точную копию информации одного диска на всех
дисках. Конечно, диски должны быть одного размера. Если один из дисков больше
другого, Ваш RAID будет размером с наименьший.
Если N-1 диск удален (или отказал), все данные все еще целы. Если
имеются резервные диски, и если система (SCSI драйвера
или IDE чипсет и т.п.) пережили отказ, после обнаружения отказа, начинается
немедленная реконструкция зеркала на резервные диски.
Производительность записи немного хуже, чем у одного диска, так как
на каждый диск массива должны быть посланы идентичные копии записанных данных.
Производительность чтения обычно достаточно плохая
из-за чрезмерного упрощения стратегии балансировки чтения в коде RAID.
Однако, реализована более улучшеная стратегия балансировки чтения, которая
может быть доступна для патчей RAID для Linux-2.2 (спросите в linux-kernel
списке рассылки), и которая будет, по всей вероятности, в стандартной
поддержке RAID в 2.4 ядре.
RAID-4
Этот уровень RAID не часто используется. Он может быть использован с
тремя или более дисками. Вместо полной зеркализации информации, он
сохраняет информацию о четности на отдельном диске, и записывает данные на
другой диск подобным используемому в RAID-0 образом. Так как один диск
зарезервирован для информации четности, размер массива будет (N-1)*S, где
S - размер наименьшего устройства в массиве. Как и в RAID-1, диски должны
быть либо одного размера, либо S, в формуле (N-1)*S, должно быть размером
наименьшего диска в массиве.
Если один диск откажет, информация о четности может быть использована
для восстановления всех данных. Если два диска откажет - все данные
будут потеряны.
Причина нечастого использования этого уровня - информация о паритете
хранится на одном диске. Эта информация должна быть обновлена каждый
раз когда ведется запись на один из других дисков. Таким образом, диск с
паритетом становится бутылочным горлышком, если он не намного быстрее остальных
дисков. Однако, если так случилось, что у Вас много медленных дисков
и один очнь быстрый - этот уровень RAID может быть очень полезен.
RAID-5
Это, пожалуй, самый полезный режим RAID для тех, кто хочет
соединить несколько физических дисков, и к тому же сохранить избыточность.
RAID-5 может быть использован на трех или более дисках, с нулем или более
резервных дисков. Размер результирующего RAID-5 устройства будет (N-1)*S,
как и в RAID-4. Главное отличие между RAID -5 и -4 в том, что
распределением информации о паритете по всем устройствам, избегается проблема
бутылочного горлышка в RAID-4.
Если один из этих дисков отказывает, все данные все еще не повреждены,
благодаря информации о паритете. Если имеются резервные диски, при отказе
диска немедленно начинается реконструкция. Если отказывает два диска
одновременно - все данные потеряны. RAID-5 может пережить отказ одного диска,
но не двух или более.
Обычно увеличивается производительность как чтения, так и записи, но
тяжело предсказать насколько.
Резервные диски
Резервные диски - диски, которые не являются частью RAID тома, пока один
из активных дисков откажет. Когда обнаруживается отказ диска, он
маркируется как ``плохой'' и, если имеются резервные диски, немедлено начинается реконструкция.
Таким образом, резервные диски добавляют дополнительную безопасность,
особенно к RAID-5 системам, где, возможно, тяжело достичь этого (физически).
Это позволяет работать системе некоторое время, с отказавшим диском, так как
вся избыточность полагается на наличие резервных дисков.
Вы не можете быть уверены, что Ваша система переживет отказ диска. Драйвер
RAID уровня должен обрабатывать дисковые отказы очень хорошо, но SCSI драйвера
могут не правильно обрабатывать ошибки, или IDE чипсет может заблокироваться,
или может случиться много всякого другого.
Нет причин использовать RAID для увеличения производительности виртуальной
памяти. Ядро само может распределять подкачку на несколько дисков, если Вы
укажете одинаковый приоритет им в fstab файле.
Такая конфигурация позволяет делать подкачку параллельно на несколько SCSI
дисков. RAID не нужен, так как это было свойством ядра уже давно.
Другая причина использовать RAID для подкачки - высокая готовность.
Если Вы установили загрузку системы и т.д. с RAID-1 устройства, система
должна пережить отказ диска. Но если система выполняет подкачку с
уже отказавшего устройства, будьте уверены - она рухнет. Подкачка на
RAID-1 устройстве решит эту проблему.
Было много дискуссий о стабильности подкачки на RAID устройстве. Дебаты
продолжаются, так как это сильно зависит от других
аспектов ядра. Что касается этого документа, кажется
подкачка на RAID должна быть вполне стабильна, исключая время
реконструкции массива (т.е. поле того, как вставлен новый диск в
деградировавший массив). Когда выйдет 2.4 это решение будет
одним из наиболее более быстрых, но тогда, Вы должны
жестко протестировать систему, пока сами не будете удовлетворены
стабильностью или решите, что Вы не будете использовать подкачку на RAID.
В можете установить подкачку в файл на файловой системе RAID
устройства, или Вы можете установить RAID устройство как swap раздел,
на Ваше усмотрение. Как обычно, RAID устройство - просто блочное устройство.