Главная
страница 1 ... страница 4страница 5страница 6страница 7

4.12 Корневая файловая система на RAID


В случае загрузки системы с RAID, корневая файловая система (/) должна монтироваться на устройство RAID. Ниже предлагается два метода для достижения этого. Так как ни один из текущих дистрибутивов (по крайней мере которые я знаю) не поддерживает инсталляцию на RAID устройство, методы предполагают, что Вы устанавливаете на обычный раздел, и затем, когда установка завершена, перемещаете содержимое Вашей не-RAID корневой файловой системы на новое RAID устройство.

Метод 1


Этот метод предполагает, что У вас есть резервный диск, который не входит в конфигурируемый RAID, и на который Вы можете инсталлировать систему.

Сначала установите обычную систему на ваш дополнительный диск.

Запустите планируемое ядро, возьмите raid-патчи и утилиты и сделайте загрузку Вашей системы с новым RAID-способным ядром. Убедитесь, что поддержка RAID в ядре, и не загружается как модуль.

Итак, сейчас Вы должны сконфигурировать и создать планируемый к использованию RAID для корневой файловой системы. Эта стандартная процедура описана в этом документе.

Просто убедитесь, что все в порядке, попробуйте перезагрузить систему, чтобы посмотреть загрузится ли новый RAID. Должен загрузиться.

Поместите файловую систему на новый массив (используя mke2fs), и смонтируйте его в /mnt/newroot

Сейчас, скопируйте содержимое Вашей текущей корневой файловой системы (с резервного диска) на новую корневую файловую систему (массив). Есть много способов это сделать, один из них


  • cd /

  • find . -xdev | cpio -pm /mnt/newroot

Вы должны модифицировать файл /mnt/newroot/etc/fstab для использования правильного устройства (корневого устройства /dev/md?) для корневой файловой системы.

Сейчас, размонтируйте текущуюt /boot файловую систему, и смонтируйте вместо нее загрузочное устройство указанное в /mnt/newroot/boot. Это требуется для LILO для успешного запуска на следующем шаге.

Обновите /mnt/newroot/etc/lilo.conf для указания на правильные устройства. Загрузочное устройство должно все еще быть обычным диском (не-RAID устройством), но root устройство должно указывать на Ваш новый RAID. Когда сделано, запустите


  • lilo -r /mnt/newroot

Этот запуск LILO дожен завершиться без ошибок.

Перезагрузите систему, и смотрите, чтобы все происходило как ожидается :)

Если Вы делаете это с IDE дисками, удостоверьтесь что установили в BIOS, что все диски ``auto-detect'' типа, таким образом BIOS позволит Вашей машине загружаться даже если диск отсутствует.

Метод 2


Этот метод требует, чтобы Вы использовали raidtools/патч, которые включают директиву failed-disk. Это должны быть утилиты/патч для всех ядер от 2.2.10 и выше.

Вы можете использовать этот метод только на RAID уровня 1 и выше. Идея состоит в использовании установки системы на диск специально отмеченный как отказавший в RAID, тогда скопировав систему на RAID, запущенный в деградированном режиме, и затем сделав доступным для RAID уже не нужный ``инсталляционный диск'', уничтожаете старую установку, но запускаете RAID в не деградированном режиме.

Сначала, установите обычную систему на один диск (который позже будет частью Вашего RAID). Важно, чтобы этот диск ( или раздел) не был наименьшим. Если это так, будет позже не возможно добавить его в массив RAID!

Теперь, возьмите ядро, патчи, утилиты и т.п. Вы уже заучили это. Сделайте Вашу систему загрузочной с Вашим новым ядром, который содержит необходимую поддержку RAID скопмилированой в ядре.

Сейчас, установите RAID с вашим текущим корневым устройством как отказавшим диском в фале raidtab. Не помещайте отказавший диск как первый диск в raidtab, это создаст проблемы с запуском. Создайте RAID, и поместите файловую систему на него.

Попробуйте перегрузиться и посмотреть, запустится ли RAID должным образом

Скопируйте системные файлы и ре-конфигурируйте систему для использования RAID в качестве корневого устройства, кaк описано в предыдущей секции.

Когда Ваша система успешно загрузиться с RAID, Вы можете модифицировать файл raidtab для включения предыдущего отказавшего диска как обычного raid-диска. Сейчас, raidhotadd диск ваш RAID.

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

4.13 Выполнение загрузки ситемы с RAID


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

Обычный способ удостовериться, что ядро может видеть RAID устройство - просто скомпилировать ядро с вкомпилированой поддержкой RAID. Убедитесь, что компилируете поддержку RAID в ядро, а не как модули. Ядро не может загружать модули (с корневой файловой системы) перед монтированием файловой системы.

Однако, с RedHat-6.0 поставляется с ядром, которое содержит поддержку RAID нового стиля в виде модулей, я здесь опишу как можно использовать стандартное ядро RedHat-6.0 и все еще загружать систему с RAID.

Загрузка с RAID в виде модуля


Для достижения этого, Вы должны указать LILO использовать RAM-диск. Используйте команду mkinitrd для создания ramdisk, содержащего все модули ядра необходимые для загрузки корневого раздела. Это можно сделать так:

mkinitrd --with=

Например:

mkinitrd --with=raid5 raid-ramdisk 2.2.5-22

Это должно гарантировать, что ядро найдет указанный RAID модуль при монтировании устройства во время загрузки.

4.14 Ловушки


Никогда, НИКОГДА, никогда не пере-размечайте разделы дисков, которые являются частью рабочего RAID. Если Вы должны изменить таблицу разделов на диске, который - часть RAID, сначала остановите массив, затем пере-размечайте.

Поместить много дисков на одну шину очень просто. Обычная шина Fast-Wide SCSI может выдерживать до 10 Мб/с, что меньше, чем могут дать многие современные диски. Размещение шести таких дисков на одной шине, конечно, не даст ожидаемого прироста производительности.

Многие SCSI контроллеры дадут Вам наивысшую производительность, если SCSI шины почти маскимально забиты дисками на них. Вы не увидите увеличения производительности от использования двух 2940s с двумя старыми SCSI дисками, вместо простого подключения двух дисков к одному контролеру.

Если Вы забудете опцию persistent-superblock, Ваш массив может сразу не запуститься после остановки. Просто пере-создайте массив с установленной опцией в raidtab.

Если RAID-5 отказывается реконструироваться после удаления и повторного добавления диска, это может быть из-за порядка устройств в raidtab. Попытайтесь переместить первую ``device ...'' и ``raid-disk ...'' пару в низ описания массива в фале raidtab.

Большинство ``сообщений об ошибках'' , которые мы видим в linux-kernel, от людей, у которых как-то не работает правильный патч RAID с правильной версией raidtools. Если Вы используете 0.90 RAID, убедитесь, что используете raidtools для этой версии.


5. Тестирование


Если Вы планируете использовать RAID для получения отказоустойчивости, Вы также должны проверить Вашу конфигурацию, чтобы увидеть, что она действительно рабочая. Итак, как кожно имитировать отказ диска ?

Коротко - Вы не можете, исключая, возможно, ``горячее'' выдергивание шнура из жесткого диска, отказ которого Вы хотите имитировать. Вы никогда знаете, что может случиться при отказе диска. Возможна электрическая блокировка шины к которой он подсоединен, что приведет к недоступности всех устройств на шине. Хотя я никогда о таком не слышал. Диск может также просто выдавать ошибки чтения/записи на уровне SCSI/IDE, что в свою очередь даст уровню RAID корректно обработать эту ситуацию. Это, к счастью, происходит чаще всего.


5.1 Имитация отказа диска


Если Вы хотите имитировать отказ диска - отсоедините устройство. Вы должны делать это при выключенном питании. Если Вы заинтересованы в тестировании выживут ли Ваши данные без одного диска, по сравнению с обычным количеством, нет иного выхода, как отключение. Завершите систему, отсоедините диск и загрузитесь снова.

Посмотрите в syslog, и загляните в /proc/mdstat, чтобы посмотреть как действует RAID. Сработало?

Запомните, что Вы должны запускать массив RAID-{1,4,5} для возможности пережить отказ диска. Линейный или RAID-0 откажут полностью при отсутствии диска.

Когда Вы подключили диск снова (при выключенном питании, конечно), Вы можете опять добавить ``новое'' устройство в RAID, командой raidhotadd.


5.2 Имитация повреждения данных


RAID (будь то программный или аппаратный), предполагает, что если запись на диск не вернула ошибку, то запись была успешной. Следовательно, если Ваш диск повреждает данные без возврата ошибки, Ваши данные будут повреждены. Это конечно очень не желательно, но возможно, и это приведет к повреждению файловой системы.

RAID не может и не должен защищать от повреждения данных на носителе. Следовательно, нет никакого смысла намеренно повреждать данные (используя dd например) на диске, чтобы посмотреть как RAID система это обработает. Наиболее вероятно (если Вы не повредите суперблок RAID), что RAID уровень никогда не догадается о повреждении, но файловая система на Вашем RAID устройстве будет повреждена.

Это путь вещей предполагаемых для работы. RAID не гарантирует целостности данных, он просто позволяет Вам сохранить данные при отказе диска (это, конечно, справедливо для RAID уровня 1 или выше).

6. Реконструкция


Если Вы читали другие части этого HOWTO, Вы должны уже хорошо представлять как вызывается реконструкция деградировавшего RAID. Я обобщаю:

Выключаем систему

Заменяем отказавший диск

Включаем систему снова.

Используем raidhotadd /dev/mdX /dev/sdX для добавления диска в массив

Пьем кофе, пока работает автоматическая реконструкция

И это так.

Итак, обычно это так, пока Вам не повезет и Ваш RAID станет нерабочим из-за отказа более одного диска. Это может фактически случиться, если у Вас несколько дисков на одной шине, и один диск захватит шину при отказе. Другие диски, в порядке, но будут недоступны для RAID уровня, так как шина блокирована, и они будут помечены как отказавшие. На RAID-5, где у Вас может быть резервный диск, потеря двух или более дисков может быть фатальной.

Следующая секция - объяснение, которое прислал мне Martin Bene, и описал возможность восстановления при жутком сценарии описанном выше. Это использует директиву failed-disk в Вашем /etc/raidtab, таким образом это будет работать с ядрами 2.2.10 и выше.

6.1 Восстановление при множественных отказах диска


Сценарий таков:

Контроллер умирает и отключает два диска одновременно,

Все диски на одной scsi шине могут быть недоступны, если отказывает диск,

Отсоединяется кабель...

Коротко: довольно часто у Вас временный отказ нескольких дисков одновременно; в последствии суперблоки RAID не синхронизированы и Вы уже не можете инициализировать Ваш RAID массив.

Остается одно: перезаписать суперблоки RAID подав mkraid --force

Чтобы это сделать, Вам нужно иметь свежий /etc/raidtab - если он НЕ ТОЧНО соответствует устройствам и исходному порядку дисков, это не сработает.

Посмотрите в sylog на результат попытки запуска массива, Вы увидите отсчет событий для каждого суперблока; обычно лучше оставить диск с наименьшим отсчетом события, т.е. с самым старым.

Если Вы делаете mkraid без failed-disk, нить восстановления немедленно выругается и начнет перестроение блоков паритета - не то, что Вам сейчас нужно.

С failed-disk, В можете точно указать какие диски Вы хотите активировать и, возможно, попробовать различные комбинации для лучшего результата. Подсказка, при этих экспериментах монтируете систему в режиме только для чтения... Это было успешно использовано, по крайней мере, двумя парнями, с которыми я контактировал.


7. Производительность


Эта секция содержит несколько бенчмарков из реальных систем, использующих программный RAID.

Бенчмарки производились программой bonnie, и всегда с файлами в два или более раза большими объема физической памяти (RAM) в машине.

В приведенных бенчмарках измерялась только пропускная способность записи и чтения одного большого файла. Это полезная информация, если интересует максимальная пропускная способность ввода/вывода для длинных блоков данных. Однако, эти цифры мало говорят нам о производительности, при использовании массива для спула новостей, web-сервера, и т.д. Всегда помните, эти цифры - результат запуска ``синтетического'' теста. Несколько реальных программ делают то же, что и bonnie, и хотя хорошо смотреть на эти цифры, они не являются основными индикаторами реальной производительности.

Сейчас, у меня есть результаты с моей собственной машины. Конфигурация такова:

Dual Pentium Pro 150 MHz

256 MB RAM (60 MHz EDO)

Три IBM UltraStar 9ES 4.5 GB, SCSI U2W

Adaptec 2940U2W

Один IBM UltraStar 9ES 4.5 GB, SCSI UW

Adaptec 2940 UW

Ядро 2.2.7 с RAID патчами

Три U2W диска повешены на U2W контроллер, и UW диск на UW контроллер.

Представляется невозможным передавать более 30 Мб/с по шинам SCSI на этой системе, используя RAID или нет. Как я думаю, это из-за слишком старой системы, скорости памяти и ограничений того, что можно послать через SCSI контроллеры.

7.1 RAID-0


Чтение это - Последовательный блочный ввод, и Запись это - Последовательный блочный вывод. Размер файла во всех тестах - 1Гб. Тести были проведены в однопользовательском режиме. Драйвер SCSI был сконфигурирован для не использования очереди помеченных комманд.

Размер куска



Размер блока

Чтение Кб/с

Запись Кб/с













4k

1k

19712

18035

4k

4k

34048

27061

8k

1k

19301

18091

8k

4k

33920

27118

16k

1k

19330

18179

16k

2k

28161

23682

16k

4k

33990

27229

32k

1k

19251

18194

32k

4k

34071

26976

Отсюда видно, что размер куска в RAID не имеет значения. Однако, размер блока ext2fs должен быть как можно более большим, как 4KB (т.е. размер страницы) на IA-32.

7.2 RAID-0 с TCQ


Тут, драйвер SCSI был сконфигурирован для использования очереди помеченных комманд (TCQ), с глубиной очереди - 8. Все остальное как и в предыдущем случае.

Размер куска



Размер блока

Чтение Кб/с

Запись Кб/с













32k

4k

33617

27215

Сдесь больше не производилось тестов. Как видно TCQ немного увеличивает производительность записи, но на самом деле здесь совсем не большая разница.

7.3 RAID-5


Массив был сконфигурирован в режим RAID-5, и были сделаны подобные тесты.

Размер куска



Размер блока

Чтение Кб/с

Запись Кб/с













8k

1k

11090

6874

8k

4k

13474

12229

32k

1k

11442

8291

32k

2k

16089

10926

32k

4k

18724

12627

Сейчас, и размер куска и размер блока действительно дают различие.

7.4 RAID-10


RAID-10 это- ``зеркало stripes'', или, массив RAID-1 двух массивов RAID-0. Размер куска - размер кусков в обоих, и в RAID-1 и в двух RAID-0 массивах. Я не проводил тестов с различающимися этими размерами кусков, хотя это должна быть вполне правильная установка.

Размер куска



Размер блока

Чтение Кб/с

Запись Кб/с













32k

1k

13753

11580

32k

4k

23432

22249

Больше тестов не производилось. Размер файла был 900Мб, так как четыре раздела заняли по 500 Мб, так что не осталось места для 1Гб файла в этой конфигурации (RAID-1 на двух 1000Мб массивах).

8. Благодарности


Следующие люди участвовали в создании этой документации:

Ingo Molnar

Jim Warren

Louis Mandelstam

Allan Noah

Yasunori Taniike

Martin Bene

Bennett Todd

The Linux-RAID mailing list people

The ones I forgot, sorry :)



Пожалуйста, присылайте автору коррективы, предложения и т.п. Это единственный путь совершенствования HOWTO.

<< предыдущая страница  
Смотрите также:
Версия 90. 7 19 Января 2000 г. Дата перевода: 11 Октября 2000 г
413.33kb.
7 стр.
Перечень вопросов к экзамену по дисциплине
38.85kb.
1 стр.
А. А. Монисов 8 июня 2000 года Дата введения 2000 год определение общей токсичности почв по интенсивности биолюминесценции бактерий методические рекомендации
275.62kb.
1 стр.
Windows 2000 server русская версия
526.44kb.
5 стр.
Закон внесены изменения, вступающие в силу с 1 января 2000 г
768.1kb.
4 стр.
Программа курса и планы семинарских занятий Петрозаводск Издательство Петрозаводского университета 2000
350.54kb.
1 стр.
Закону №1054-xiv от 16. 06. 2000 раздел IV акцизы
320.39kb.
1 стр.
Закон Республики Казахстан от 5 июля 2000 г. N 64-ii вступила в силу 24 ноября 2000 года см
436.63kb.
3 стр.
С изменениями от 25 января 1996 г., 28 мая 1997 г., 30 марта 1998 г., 21 ноября 1999 г., 2 марта 2000 г., 9 апреля, 5 октября, 23 декабря 2001 г.; Указом Президента РФ от 11 апреля 2008 г
49.28kb.
1 стр.
Летопись событий Центра по изучению военной истории и поискового отряда «Ингрия» с 2000 по 2010 год 2000 год
139.41kb.
1 стр.
Законодательным Собранием 15 февраля 2000 года в ред. Областных законов ро от 17. 08. 2000 n 101-зс
161.34kb.
1 стр.
В. Д. Шадриков " 17 " 03 2000 г
483.78kb.
2 стр.