- Настройка программного RAID1 на работающей системе (включая конфигурацию GRUB)
- Установка mdadm
- Подготовка /dev/sdb
- Создание RAID-массива
- Подготовка и перенос данных
- Настройка GRUB
- Подготовка /dev/sda
- Настройка GRUB (Часть 2)
- Тестирование
- Программный RAID в Linux
- mdadm
- Настройка программного RAID-массива
- Создание разделов
- Размонтирование
- Изменение типа разделов
- Создание RAID-массива
- Проверка правильности сборки
- Создание файловой системы поверх RAID-массива
- Создание конфигурационного файла mdadm.conf
- Создание точки монтирования для RAID-массива
- Изменение /etc/fstab
- Монтирование файловой системы нового RAID-массива
- Проверка состояния RAID-массива
- Дальнейшая работа с массивом
- Пометка диска как сбойного
- Удаление сбойного диска
- Добавление нового диска
- Сборка существующего массива
- Расширение массива
- Возобновление отложенной синхронизации
- Переименование массива
- Удаление массива
Настройка программного RAID1 на работающей системе (включая конфигурацию GRUB)
Оригинал: How To Set Up Software RAID1 On A Running System (Incl. GRUB Configuration)
Автор: Falko Timme
Дата: 26 ноября 2007
Перевод: Андрей Синицын aka boombick
Дата перевода: 15 февраля 2008
При копировании материала обязательны указание автора, переводчика и ссылки на оригинал статьи и настоящую страницу как первоисточник перевода!
В этой статье описывается настройка RAID1-массива на уже установленном и запущенном Debian Etch с конфигурацией загрузчика GRUB для корректной загрузки системы даже в том случае, если один из винчестеров поврежден.
Я не даю никаких гарантий того, что это будет работать на вашей системе.
Все действия описаны для Debian Etch, с двумя жесткими дисками одинакового размера: /dev/sda и /dev/sdb. /dev/sdb пока не используется, /dev/sda размечен следующим образом:
- /dev/sda1 — /boot, файловая система ext3
- /dev/sda2 — swap
- /dev/sda3 — /, файловая система ext3
В итоге мы хотим получить следующую конфигурацию:
- /dev/md0 (составлен из /dev/sda1 и /dev/sdb1) — /boot, ext3
- /dev/md1 (составлен из /dev/sda2 и /dev/sdb2) — swap
- /dev/md2 (составлен из /dev/sda3 и /dev/sdb3) — /, ext3
Текущая ситуация выглядит следующим образом:
Установка mdadm
mdadm — это утилита для построения программных RAID-массивов. Установите ее командой Вам будет задан следующий вопрос: (далее в тексте ответы на вопросы утилит будут выделяться красным цветом)
Затем подгрузите необходимые модули ядра (чтобы избежать перезагрузки): И выполните команду Вывод должен быть примерно следующим:
Подготовка /dev/sdb
Сначала скопируем таблицу разделов
Проверим, что оба диска имеют одинаковую таблицу:
Теперь изменим тип разделов на втором жестком диске на Linux raid autodetect
Чтобы быть уверенным, что на /dev/sdb не осталось никаких следов от возможных предыдущих установок RAID-массивов, выполните следующие команды: Если никаких остатков предыдущих установок RAID не обнаружится, то каждая из приведенных выше команд mdadm выдаст ошибку (не надо беспокоиться) примерно следующего вида: В противном случае никакого вывода не будет.
Создание RAID-массива
Пришло время для создания самих массивов: /dev/md0, /dev/md1, и /dev/md2. /dev/sdb1 будет добавлен в /dev/md0, /dev/sdb2 в /dev/md1 и /dev/sdb3 в /dev/md2. Разделы на первом диске мы пока не трогаем, так как с него загружена система. Мы будем использовать указатель missing при создании массива: Проверка состояния нашего массива должна показать, что у нас есть три поврежденных RAID-массива ([_U] или [U_] означает, что массив поврежден, а [UU] означает, что все в порядке):
Теперь создадим файловые системы на массивах и отредактируем конфигурационный файл /etc/mdadm/mdadm.conf Он должен выглядеть примерно так (в последних строках расположена информация о наших массивах):
Подготовка и перенос данных
Смонтируем массивы (swap монтировать, естественно, не надо): и отредактируем файлы /etc/fstab и /etc/mtab. Заменим /dev/sda1 на /dev/md0 , /dev/sda2 на /dev/md1 и /dev/sda3 на /dev/md2 , чтобы эти файлы приняли следующий вид:
Пришло время для настройки GRUB. Откройте файл /boot/grub/menu.lst и добавьте опцию fallback сразу после default Это значит, что если первое ядро (нумерация начинается с нуля) не сможет загрузиться, то будет загружено следующее в списке.
В конце этого файла расположены блоки, описывающие параметры ядер для загрузки. Скопируйте первый блок, замените в копии root=/dev/sda3 на root=/dev/md2 и root (hd0,0) на root (hd1,0), после чего поставьте полученный блок первым в списке. После редактирования файл должен выглядеть примерно так:
root (hd1,0) ссылается на диск /dev/sdb, который уже входит в RAID-массив. Вскоре мы будем перезагружать систему, при этом система попытается загрузиться с нашего (все еще поврежденного) массива /dev/md2. В случае неудачи загрузка продолжится со следующего по списку раздела /dev/sda (-> fallback 1).
Теперь обновим RAM-диск И скопируем данные на /dev/sdb
Настройка GRUB
Теперь необходимо установить загрузчик на второй винчестер. Все последующие команды (выделены красным) выполняются в оболочке GRUB (она запускается командой grub): После этих действий возвращаемся в оболочку, выполняем перезагрузку и надеемся, что наша система загрузится с RAID-массива 🙂
Подготовка /dev/sda
Если все прошло нормально, то вы должны увидеть /dev/md0 и /dev/md2 в выводе команды df -h Вывод cat /proc/mdstat должен быть примерно таким: Теперь изменим тип разделов на /dev/sda на Linux raid autodetect
Добавим /dev/sda1, /dev/sda2 и /dev/sda3 в RAID-массив И проверим состояние массива. Вы должны увидеть, что идет процесс синхронизации
(Вы можете запустить watch cat /proc/mdstat для наблюдения за ходом процесса. Выход из watch осуществляется нажатием CTRL+C.)
Дождитесь окончания процесса синхронизации, после чего состояние массива должно выглядеть примерно так: Затем отредактируем /etc/mdadm/mdadm.conf, чтобы он соотвествовал новой ситуации. Теперь он выглядит так:
Настройка GRUB (Часть 2)
Почти все готово. Теперь отредактируем /boot/grub/menu.lst. На данный момент GRUB настроен на загрузку с /dev/sdb (hd1,0). Конечно же, мы все еще хотим, чтобы система грузилась, если /dev/sdb содержит какие-то ошибки. Создадаим копию первого блока с описанием параметров загрузки (в котором описан hd1), вставим ее ниже и заменим в этом блоке hd1 на hd0. Остальные блоки закомментируем. Теперь конфиг загрузчика должен выглядеть примерно так: В строке, начинающейся с kopt замените /dev/sda3 на /dev/md2 (НЕ УДАЛЯЙТЕ символ # из начала строки. ) Обновляем RAM-диск и перезагружаемся: Загрузка должна пройти без проблем:
Все работает, мы только что настроили программный RAID-массив первого уровня на работающей системе Debian Etch!
Тестирование
Давайте попробуем сэмулировать сбой жесткого диска. Абсолютно неважно, как ой из дисков вы выберите для эксперимента. Я выбрал /dev/sdb
Для эмуляции сбоя необходимо либо остановить систему и физически удалить второй винчестер (/dev/sdb) из компьютера, либо сэмулировать это на программном уровне: Выключите компьютер. Если вы физически удаляли винчестер, то поместите на его место новый. Загрузка должна пройти без проблем.
Посмотрим статус нашего массива: Видно, что массив опять поврежден.
Состояние разделов должно быть примерно следующим:
Теперь скопируем таблицу разделов с /dev/sda на /dev/sdb (В случае ошибок попробуйте опцию —force)
Удаляем с /dev/sdb предыдущие установки RAID . и добавляем /dev/sdb в массив: Если посмотреть на статус массива, то мы увидим знакомый процесс синхронизации По окончании синхронизации настроим загрузчик на новом винчестере И все! Сбойный жесткий диск в RAID-массиве успешно заменен без потери данных.
Источник
Программный RAID в Linux
mdadm
Управление программным RAID-массивом в Linux выполняется с помощью программы mdadm.
У программы mdadm есть несколько режимов работы.
Assemble (сборка) Собрать компоненты ранее созданного массива в массив. Компоненты можно указывать явно, но можно и не указывать — тогда выполняется их поиск по суперблокам. Build (построение) Собрать массив из компонентов, у которых нет суперблоков. Не выполняются никакие проверки, создание и сборка массива в принципе ничем не отличаются. Create (создание) Создать новый массив на основе указанных устройств. Использовать суперблоки размещённые на каждом устройстве. Monitor (наблюдение) Следить за изменением состояния устройств. Для RAID0 этот режим не имеет смысла. Grow (расширение или уменьшение) Расширение или уменьшение массива, включаются или удаляются новые диски. Incremental Assembly (инкрементальная сборка) Добавление диска в массив. Manage (управление) Разнообразные операции по управлению массивом, такие как замена диска и пометка как сбойного. Misc (разное) Действия, которые не относятся ни к одному из перечисленных выше режимов работы. Auto-detect (автоообнаружение) Активация автоматически обнаруживаемых массивов в ядре Linux.
- -A, --assemble — режим сборки
- -B, --build — режим построения
- -C, --create — режим создания
- -F, --follow, --monitor — режим наблюдения
- -G, --grow — режим расширения
- -I, --incremental — режим инкрементальной сборки
Настройка программного RAID-массива
Рассмотрим как выполнить настройку RAID-массива 5 уровня на трёх дисковых разделах. Мы будем использовать разделы:
В том случае если разделы иные, не забудьте использовать соответствующие имена файлов.
Создание разделов
Нужно определить на каких физических разделах будет создаваться RAID-массив. Если разделы уже есть, нужно найти свободные (fdisk -l). Если разделов ещё нет, но есть неразмеченное место, их можно создать с помощью программ fdisk или cfdisk.
Просмотреть какие есть разделы:
Просмотреть, какие разделы куда смонтированы, и сколько свободного места есть на них (размеры в килобайтах):
Размонтирование
Если вы будете использовать созданные ранее разделы, обязательно размонтируйте их. RAID-массив нельзя создавать поверх разделов, на которых находятся смонтированные файловые системы.
Изменение типа разделов
Желательно (но не обязательно) изменить тип разделов, которые будут входить в RAID-массив и установить его равным FD (Linux RAID autodetect). Изменить тип раздела можно с помощью fdisk.
Рассмотрим как это делать на примере раздела /dev/hde1.
Аналогичным образом нужно изменить тип раздела для всех остальных разделов, входящих в RAID-массив.
Создание RAID-массива
Создание RAID-массива выполняется с помощью программы mdadm (ключ --create). Мы воспользуемся опцией --level, для того чтобы создать RAID-массив 5 уровня. С помощью ключа --raid-devices укажем устройства, поверх которых будет собираться RAID-массив.
Если вы хотите сразу создать массив, где диска не хватает (degraded) просто укажите слово missing вместо имени устройства. Для RAID5 это может быть только один диск; для RAID6 — не более двух; для RAID1 — сколько угодно, но должен быть как минимум один рабочий.
Проверка правильности сборки
Убедиться, что RAID-массив проинициализирован корректно можно просмотрев файл /proc/mdstat. В этом файле отражается текущее состояние RAID-массива.
Обратите внимание на то, как называется новый RAID-массив. В нашем случае он называется /dev/md0. Мы будем обращаться к массиву по этому имени.
Создание файловой системы поверх RAID-массива
Новый RAID-раздел нужно отформатировать, т.е. создать на нём файловую систему. Сделать это можно при помощи программы из семейства mkfs. Если мы будем создавать файловую систему ext3, воспользуемся программой mkfs.ext3:
Создание конфигурационного файла mdadm.conf
Система сама не запоминает какие RAID-массивы ей нужно создать и какие компоненты в них входят. Эта информация находится в файле mdadm.conf.
Строки, которые следует добавить в этот файл, можно получить при помощи команды
Вот пример её использования:
Если файла mdadm.conf ещё нет, можно его создать:
Создание точки монтирования для RAID-массива
Поскольку мы создали новую файловую систему, вероятно, нам понадобится и новая точка монтирования. Назовём её /raid.
Изменение /etc/fstab
Для того чтобы файловая система, созданная на новом RAID-массиве автоматически монтировалась при загрузке, добавим соответствующую запись в файл /etc/fstab хранящий список автоматически монтируемых при загрузке файловых систем.
Если мы объединяли в RAID-массив разделы, которые использовались раньше, нужно отключить их монтирование: удалить или закомментировать соответствующие строки в файле /etc/fstab. Закомментировать строку можно символом #.
Монтирование файловой системы нового RAID-массива
Для того чтобы получить доступ к файловой системе, расположенной на новом RAID-массиве, её нужно смонтировать. Монтирование выполняется с помощью команды mount.
Если новая файловая система добавлена в файл /etc/fstab, можно смонтировать её командой mount -a (смонтируются все файловые системы, которые должны монтироваться при загрузке, но сейчас не смонтированы).
Можно смонтировать только нужный нам раздел (при условии, что он указан в /etc/fstab).
Если раздел в /etc/fstab не указан, то при монтировании мы должны задавать как минимум два параметра — точку монтирования и монтируемое устройство:
Проверка состояния RAID-массива
Информация о состоянии RAID-массива находится в файле /proc/mdstat.
Если в файле информация постоянно изменяется, например, идёт пересборка массива, то постоянно изменяющийся файл удобно просматривать при помощи программы watch:
Как выполнить проверку целостности программного RAID-массива md0:
Как посмотреть нашлись ли какие-то ошибки в процессе проверки программного RAID-массива по команде check или repair:
Дальнейшая работа с массивом
Пометка диска как сбойного
Диск в массиве можно условно сделать сбойным, ключ --fail (-f):
Удаление сбойного диска
Сбойный диск можно удалить с помощью ключа --remove (-r):
Добавление нового диска
Добавить новый диск в массив можно с помощью ключей --add (-a) и --re-add:
Сборка существующего массива
Собрать существующий массив можно с помощью mdadm --assemble. Как дополнительный аргумент указывается, нужно ли выполнять сканирование устройств, и если нет, то какие устройства нужно собирать.
Расширение массива
Расширить массив можно с помощью ключа --grow (-G). Сначала добавляется диск, а потом массив расширяется:
Проверяем, что диск (раздел) добавился:
Если раздел действительно добавился, мы можем расширить массив:
При необходимости, можно регулировать скорость процесса расширения массива, указав нужное значение в файлах
Убедитесь, что массив расширился:
Нужно обновить конфигурационный файл с учётом сделанных изменений:
Возобновление отложенной синхронизации
P.S.: Если вы увидели « active (auto-read-only) » в файле /proc/mdstat , то возможно вы просто ничего не записывали в этот массив. К примеру, после монтирования раздела и любых изменений в примонтированном каталоге, статус автоматически меняется:
Переименование массива
Для начала отмонтируйте и остановите массив:
Затем необходимо пересобрать как md5 каждый из разделов sd[abcdefghijk]1
Удаление массива
Для начала отмонтируйте и остановите массив:
Затем необходимо затереть superblock каждого из составляющих массива:
Если действие выше не помогло, то затираем так:
Источник