Последняя оставленная запись:
Установка Slackware на программный raid-1 массив
2010-03-17 06:36:00 (читать в оригинале)
Описание задачи
Условия: имеется два одинаковых по размеру, пустых диска /dev/sda и /dev/sdb соответственно.
На основе /dev/sda1 и /dev/sdb1 создать raid-массив первого уровня /dev/md0. Затем установить на /dev/md0 операционную систему Slackware и настроить ее загрузку.
Дополнительные условия:
- Используем стандартное ядро для slackware версии 2.6.xx, т.о. минимальная версия операционной для которой подходит это описание — Slackware 12.
- Все примеры приведены для последней на текущий момент версии — Slackware 13, используется ядро 2.6.29.6 и файловая система по умолчанию ext4.
- Здесь не ставится цель дать полное описание процесса установки Slackware. Внимание обращается лишь на этапы связанные с программным raid-массивом.
Решение задачи
Шаг 1. Загрузка с внешнего носителя.
Загружаемся с установочного диска slackware.
Шаг 2. Создание таблицы разделов.
Сначала, с помощью команды:
cfdisk /dev/sda
создаем следующие разделы на первом пустом диске:
- /dev/sda1 — Раздел под raid-массив. Отводим под него большую часть диска. Установить признак «загрузочный». Задать тип раздела «Linux raid autodetect» (код fd).
- /dev/sda2 — Раздел под подкачку. Отводим под него половину от необходимого размера подкачки. Задать тип раздела «Linux swap» (код 82).
Обращаю внимание, что нельзя полностью заполнять разделами все доступное пространство диска. Т.к., при замене любого из дисков в будущем, несмотря на указанный одинаковый размер дисков, фактический их размер у разных производителей может не совпадать.
Пример того, что получилось:
# fdisk -l /dev/sda
Device Boot Start End Blocks Id System
/dev/sda1 * 1 991 7960176 fd Linux raid autodetect
/dev/sda2 992 1044 425722+ 82 Linux swap
Затем копируем таблицу разделов с первого диска на второй:
sfdisk -d /dev/sda | sfdisk /dev/sdb
Убеждаемся, что таблицы разделов на дисках /dev/sda и /dev/sdb идентичны:
# fdisk -l /dev/sda /dev/sdb
Device Boot Start End Blocks Id System
/dev/sda1 * 1 991 7960176 fd Linux raid autodetect
/dev/sda2 992 1044 425722+ 82 Linux swap
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 991 7960176 fd Linux raid autodetect
/dev/sdb2 992 1044 425722+ 82 Linux swap
Шаг 3. Создание raid-массива.
Сначала, на всякий случай, очищаем из разделов возможные следы предыдущих raid-массивов:
mdadm --zero-superblock /dev/sda1
mdadm --zero-superblock /dev/sdb1
Теперь, собственно, создаем raid-массив:
mdadm --create /dev/md0 --level=1 --raid-disks=2 /dev/sda1 /dev/sdb1
Здесь запустится процесс синхронизации двух дисков, входящих в массив, который можно отслеживать с помощью команды:
# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath]
md0 : active raid1 sdb1[1] sda1[0]
7960064 blocks [2/2] [UU]
[=>...................] resync = 8.0% (639040/7960064) finish=7.8min speed=15490K/sec
unused devices: <none>
Этот процесс никак не ограничивает работу с уже созданным массивом. Т.е. блочное устройство /dev/md0 уже доступно и с ним можно работать. Можно даже перезагружать компьютер. Но в полноценную работу raid-массив встанет самостоятельно, когда синхронизация будет завершена.
Шаг 4. Установка операционной системы.
Запускаем утилиту установки slackware:
setup
На этапе добавления swap-разделов выделяем разделы /dev/sda2 и /dev/sdb2.
В качестве корнего диска выбираем /dev/md0. Далее соглашаемся его форматировать в предлагаемую по-умолчанию файловую систему ext4.
Далее процесс установки системы протекает абсолютно обычным образом. После завершения установки загружаемся в установленную систему.
Шаг 5. Настройка установленной системы.
Редактируем в файле /etc/fstab строчки монтирования раздела подкачки. Добавляем опцию pri=1 для параллельного использования разделов подкачки:
/dev/md0 / ext4 defaults 1 1
/dev/sda2 swap swap pri=1,defaults 0 0
/dev/sdb2 swap swap pri=1,defaults 0 0
Редактируем /etc/lilo.conf, добавляем строчку для установки загрузчика lilo на оба диска /dev/sda и /dev/sdb, а не только на первый диск:
raid-extra-boot=mbr
Это необходимо, чтобы чтобы система смогла загрузиться со второго диска, в случае выхода из строя первого диска. Далее запускаем установку загрузчика lilo:
# lilo
Warning: LBA32 addressing assumed
Added Linux *
The boot record of /dev/md0 has been updated.
The Master boot record of /dev/sda has been updated.
Warning: /dev/sdb is not on the first disk
The Master boot record of /dev/sdb has been updated.
2 warnings were issued.
Шаг 6. Переключение на generic ядро.
Создаем файл /etc/mkinitrd.conf, содержащий строки:
CLEAR_TREE="1"
OUTPUT_IMAGE="/boot/initrd-generic-2.6.29.6-smp-raid.gz"
KERNEL_VERSION="2.6.29.6-smp"
MODULE_LIST="ext4"
ROOTDEV="/dev/md0"
RAID="1"
Генерируем initrd-файл:
# mkinitrd -F
OK: /lib/modules/2.6.29.6-smp/kernel/lib/crc16.ko added.
OK: /lib/modules/2.6.29.6-smp/kernel/fs/jbd2/jbd2.ko added.
OK: /lib/modules/2.6.29.6-smp/kernel/fs/mbcache.ko added.
OK: /lib/modules/2.6.29.6-smp/kernel/fs/ext4/ext4.ko added.
5250 blocks
В /etc/lilo.conf добавляем строки:
image = /boot/vmlinuz-generic-smp-2.6.29.6-smp
initrd = /boot/initrd-generic-2.6.29.6-smp-raid.gz
root = /dev/md0
label = gen-raid
read-only
Запускаем установку загрузчика lilo на оба диска в raid-массиве:
lilo
Шаг 7. Проверка.
Перезагружаем компьютер и убеждаемся что загрузка операционной системы происходит нормально с любого диска из raid-массива.