Достался рабочий сервер Oracle.
Стоит задача поднять рэйд.
Аппаратного нет, поэтому создаем программный.
Все работы производятся прямо на боевой системе, база данных остановлена.
Смотрим имеющиеся разделы (/dev/sda), создаем на втором диске (/dev/sdb) разделы для программного raid:
VBNKSB->/home/it3# fdisk -l
Диск /dev/sda: 1000.2 ГБ, 1000204886016 байт
255 heads, 63 sectors/track, 121601 cylinders
Единицы = цилиндры по 16065 * 512 = 8225280 байт
Устр-во Загр Начало Конец Блоки Id Система
/dev/sda1 * 1 13 104394+ 83 Linux
/dev/sda2 14 121600 976647577+ 8e Linux LVM
Диск /dev/sdb: 1000.2 ГБ, 1000204886016 байт
255 heads, 63 sectors/track, 121601 cylinders
Единицы = цилиндры по 16065 * 512 = 8225280 байт
Устр-во Загр Начало Конец Блоки Id Система
/dev/sdb1 * 1 62 497983+ fd Автоопределение Linux raid
/dev/sdb2 63 1036 7823655 fd Автоопределение Linux raid
/dev/sdb3 1037 121601 968438362+ fd Автоопределение Linux raid
Стоит задача поднять рэйд.
Аппаратного нет, поэтому создаем программный.
Все работы производятся прямо на боевой системе, база данных остановлена.
Смотрим имеющиеся разделы (/dev/sda), создаем на втором диске (/dev/sdb) разделы для программного raid:
VBNKSB->/home/it3# fdisk -l
Диск /dev/sda: 1000.2 ГБ, 1000204886016 байт
255 heads, 63 sectors/track, 121601 cylinders
Единицы = цилиндры по 16065 * 512 = 8225280 байт
Устр-во Загр Начало Конец Блоки Id Система
/dev/sda1 * 1 13 104394+ 83 Linux
/dev/sda2 14 121600 976647577+ 8e Linux LVM
Диск /dev/sdb: 1000.2 ГБ, 1000204886016 байт
255 heads, 63 sectors/track, 121601 cylinders
Единицы = цилиндры по 16065 * 512 = 8225280 байт
Устр-во Загр Начало Конец Блоки Id Система
/dev/sdb1 * 1 62 497983+ fd Автоопределение Linux raid
/dev/sdb2 63 1036 7823655 fd Автоопределение Linux raid
/dev/sdb3 1037 121601 968438362+ fd Автоопределение Linux raid
После создания меняем тип разделов на fd (Linux raid), устанавливаем загрузочный флаг на /dev/sdb1.
К стати, точки монтирования спланированы следующим образом:
/dev/sdb1 - /boot
/dev/sdb2 - /swap
/dev/sdb3 - /
(в последствии /dev/sdb1 станет /dev/md0, /dev/sdb2 -> /dev/md1 и т.д.)
Сохраняем изменения, перезагружаем систему.
Создадим устройства MD на втором диске, но перед созданием желательно затереть нулями разделы:
dd if=/dev/zero of=/dev/sdb1 bs=4096 && dd if=/dev/zero of=/dev/sdb2 bs=4096 && dd if=/dev/zero of=/dev/sdb3 bs=4096
Причем, /dev/sdb3 достаточно большой и его затирание протекает долго, поэтому можно ограничиться несколькими секундами после запуска последней команды.
Создаем устройства md:
# mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 missing
# mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdb2 missing
# mdadm --create /dev/md2 --level=1 --raid-devices=2 /dev/sdb3 missing
Создадем файловые системы на RAID:
# mkfs.ext3 /dev/md0 && mkfs.ext3 /dev/md2 && mkswap /dev/md1
Клонируем загрузочный раздел боевого винта на загрузочный раздел raid:
# dd if=/dev/sda1 of=/dev/md0 bs=4096
Монтируем корневой раздел raid:
# mkdir /mnt/root
# mount /dev/md2 /mnt/root
Копируем систему на новый раздел:
# cp -axvp / /mnt/root
Редактируем fstab для монтирования root раздела с RAID:
# nano /mnt/root/etc/fstab
вместо строки
/dev/VolGroup00/LogVol00 / ext3 defaults 1 1
пишем
/dev/md2 / ext3 defaults 1 1
вместо строки
LABEL=/boot /boot ext3 defaults 1 2
пишем
/dev/md0 /boot ext3 defaults 1 2
вместо
/dev/VolGroup00/LogVol01 swap swap defaults 0 0
пишем
/dev/md1 /swap swap defaults 0 0
Создаем загрузочный образ для RAID:
# mkdir /mnt/root/initrd-raid
# cd /mnt/root/initrd-raid
# mkinitrd -v --fstab=/mnt/root/etc/fstab /mnt/root/initrd-raid/initrd-`uname -r`-raid.img `uname -r`
# cd /mnt/root/initrd-raid
# zcat initrd-`uname -r`-raid.img | cpio -i
Редактируем файл init:
# nano init
добавляем после
raidautorun /dev/md2
две строки:
raidautorun /dev/md0
raidautorun /dev/md1
Монтируем новый загрузочный раздел в /mnt/root/boot
mount /dev/md0 /mnt/root/boot
Копируем новый диск в каталог /mnt/boot
# find . -print | cpio -o -Hnewc | gzip -c > /mnt/root/boot/initrd-`uname -r`-raid.img
# rm /mnt/boot/initrd-2.6.18-92.el5.img
# ln -s initrd-`uname -r`-raid.img /mnt//root/boot/initrd-2.6.18-92.el5.img
Редактируем загрузочное меню:
nano /mnt/root/boot/grub/grub.conf
изменяем строку kernel /vmlinuz-2.6.18-92.el5 ro root=/dev/xxx
на
kernel /vmlinuz-2.6.18-92.el5 ro root=/dev/md2 rhgb quiet
Устанавливаем grub на RAID
# for i in dev proc sys; do mount -o bind /$i /mnt/root/$i; done
# chroot /mnt/root
# grub-install --recheck --no-floppy /dev/md0
Выходим из chroot
Выходим из chroot
# Ctrl+d
Размонтируем файловые системы!!!
# for i in dev proc sys; do umount /mnt/root/$i; done
# umount /mnt/root/boot
# umount /mnt/root
Перезагружаем сервер и в BIOS выбираем загрузку с нужного нам диска.
Убеждаемся, что загрузились с диска, являющегося членом RAID-массива
# df -h
Файловая система Разм Исп Дост Исп% смонтирована на
/dev/md2 910G 721G 143G 84% /
/dev/md0 99M 14M 80M 15% /boot
tmpfs 5,9G 0 5,9G 0% /dev/shm
Убеждаемся, что загрузились с диска, являющегося членом RAID-массива
# df -h
Файловая система Разм Исп Дост Исп% смонтирована на
/dev/md2 910G 721G 143G 84% /
/dev/md0 99M 14M 80M 15% /boot
tmpfs 5,9G 0 5,9G 0% /dev/shm
Копируем куда-нибудь таблицу разделов диска, являющегося членом RAID-массива:
# fdisk -l /dev/sdb
Диск /dev/sdb: 1000.2 ГБ, 1000204886016 байт
255 heads, 63 sectors/track, 121601 cylinders
Единицы = цилиндры по 16065 * 512 = 8225280 байт
Устр-во Загр Начало Конец Блоки Id Система
/dev/sdb1 * 1 62 497983+ fd Автоопределение Linux raid
/dev/sdb2 63 1036 7823655 fd Автоопределение Linux raid
/dev/sdb3 1037 121601 968438362+ fd Автоопределение Linux raid
# fdisk -l /dev/sdb
Диск /dev/sdb: 1000.2 ГБ, 1000204886016 байт
255 heads, 63 sectors/track, 121601 cylinders
Единицы = цилиндры по 16065 * 512 = 8225280 байт
Устр-во Загр Начало Конец Блоки Id Система
/dev/sdb1 * 1 62 497983+ fd Автоопределение Linux raid
/dev/sdb2 63 1036 7823655 fd Автоопределение Linux raid
/dev/sdb3 1037 121601 968438362+ fd Автоопределение Linux raid
Создаем точно такие же разделы на /dev/sda:
# fdisk /dev/sda
Команда (m для справки): p
Диск /dev/sda: 1000.2 ГБ, 1000204886016 байт
255 heads, 63 sectors/track, 121601 cylinders
Единицы = цилиндры по 16065 * 512 = 8225280 байт
Устр-во Загр Начало Конец Блоки Id Система
/dev/sda1 * 1 13 104394+ 83 Linux
/dev/sda2 14 121600 976647577+ 8e Linux LVM
Команда (m для справки): d
Номер раздела (1-4): 2
Команда (m для справки): d
Выбранный раздел 1
Команда (m для справки): n
Действие команды
e расширенный
p основной раздел (1-4)
p
Номер раздела (1-4): 1
Первый цилиндр (1-121601, по умолчанию 1):
Используется значение по умолчанию 1
Последний цилиндр или +size или +sizeM или +sizeK (1-121601, по умолчанию 121601): 62
Команда (m для справки): p
Диск /dev/sda: 1000.2 ГБ, 1000204886016 байт
255 heads, 63 sectors/track, 121601 cylinders
Единицы = цилиндры по 16065 * 512 = 8225280 байт
Устр-во Загр Начало Конец Блоки Id Система
/dev/sda1 1 62 497983+ 83 Linux
Команда (m для справки): t
Выбранный раздел 1
Шестнадцатеричный код (введите L для получения списка кодов): fd
Системный тип раздела 1 изменен на fd (Автоопределение Linux raid)
Команда (m для справки): p
Диск /dev/sda: 1000.2 ГБ, 1000204886016 байт
255 heads, 63 sectors/track, 121601 cylinders
Единицы = цилиндры по 16065 * 512 = 8225280 байт
Устр-во Загр Начало Конец Блоки Id Система
/dev/sda1 1 62 497983+ fd Автоопределение Linux raid
Команда (m для справки): a
Номер раздела (1-4): 1
Команда (m для справки): p
Диск /dev/sda: 1000.2 ГБ, 1000204886016 байт
255 heads, 63 sectors/track, 121601 cylinders
Единицы = цилиндры по 16065 * 512 = 8225280 байт
Устр-во Загр Начало Конец Блоки Id Система
/dev/sda1 * 1 62 497983+ fd Автоопределение Linux raid
Команда (m для справки): n
Действие команды
e расширенный
p основной раздел (1-4)
p
Номер раздела (1-4): 2
Первый цилиндр (63-121601, по умолчанию 63):
Используется значение по умолчанию 63
Последний цилиндр или +size или +sizeM или +sizeK (63-121601, по умолчанию 121601): 1036
Команда (m для справки): t
Номер раздела (1-4): 2
Шестнадцатеричный код (введите L для получения списка кодов): 82
Системный тип раздела 2 изменен на 82 (Linux своп / Solaris)
Команда (m для справки): p
Диск /dev/sda: 1000.2 ГБ, 1000204886016 байт
255 heads, 63 sectors/track, 121601 cylinders
Единицы = цилиндры по 16065 * 512 = 8225280 байт
Устр-во Загр Начало Конец Блоки Id Система
/dev/sda1 * 1 62 497983+ fd Автоопределение Linux raid
/dev/sda2 63 1036 7823655 82 Linux своп / Solaris
Команда (m для справки): t
Номер раздела (1-4): 2
Шестнадцатеричный код (введите L для получения списка кодов): fd
Системный тип раздела 2 изменен на fd (Автоопределение Linux raid)
Команда (m для справки): p
Диск /dev/sda: 1000.2 ГБ, 1000204886016 байт
255 heads, 63 sectors/track, 121601 cylinders
Единицы = цилиндры по 16065 * 512 = 8225280 байт
Устр-во Загр Начало Конец Блоки Id Система
/dev/sda1 * 1 62 497983+ fd Автоопределение Linux raid
/dev/sda2 63 1036 7823655 fd Автоопределение Linux raid
Команда (m для справки): n
Действие команды
e расширенный
p основной раздел (1-4)
p
Номер раздела (1-4): 3
Первый цилиндр (1037-121601, по умолчанию 1037):
Используется значение по умолчанию 1037
Последний цилиндр или +size или +sizeM или +sizeK (1037-121601, по умолчанию 121601):
Используется значение по умолчанию 121601
Команда (m для справки): t
Номер раздела (1-4): 3
Шестнадцатеричный код (введите L для получения списка кодов): fd
Системный тип раздела 3 изменен на fd (Автоопределение Linux raid)
Команда (m для справки): p
Диск /dev/sda: 1000.2 ГБ, 1000204886016 байт
255 heads, 63 sectors/track, 121601 cylinders
Единицы = цилиндры по 16065 * 512 = 8225280 байт
Устр-во Загр Начало Конец Блоки Id Система
/dev/sda1 * 1 62 497983+ fd Автоопределение Linux raid
/dev/sda2 63 1036 7823655 fd Автоопределение Linux raid
/dev/sda3 1037 121601 968438362+ fd Автоопределение Linux raid
Команда (m для справки): w
Таблица разделов была изменена!
Вызывается ioctl() для перечитывания таблицы разделов.
ПРЕДУПРЕЖДЕНИЕ: Перечитывание таблицы разделов завершилось неудачей с ошибкой 16: Устройство или ресурс занято.
Ядро все еще использует старую таблицу.
Новая таблица будет использована при следующей перезагрузке.
Синхронизируются диски.
Действие команды
e расширенный
p основной раздел (1-4)
p
Номер раздела (1-4): 1
Первый цилиндр (1-121601, по умолчанию 1):
Используется значение по умолчанию 1
Последний цилиндр или +size или +sizeM или +sizeK (1-121601, по умолчанию 121601): 62
Команда (m для справки): p
Диск /dev/sda: 1000.2 ГБ, 1000204886016 байт
255 heads, 63 sectors/track, 121601 cylinders
Единицы = цилиндры по 16065 * 512 = 8225280 байт
Устр-во Загр Начало Конец Блоки Id Система
/dev/sda1 1 62 497983+ 83 Linux
Команда (m для справки): t
Выбранный раздел 1
Шестнадцатеричный код (введите L для получения списка кодов): fd
Системный тип раздела 1 изменен на fd (Автоопределение Linux raid)
Команда (m для справки): p
Диск /dev/sda: 1000.2 ГБ, 1000204886016 байт
255 heads, 63 sectors/track, 121601 cylinders
Единицы = цилиндры по 16065 * 512 = 8225280 байт
Устр-во Загр Начало Конец Блоки Id Система
/dev/sda1 1 62 497983+ fd Автоопределение Linux raid
Команда (m для справки): a
Номер раздела (1-4): 1
Команда (m для справки): p
Диск /dev/sda: 1000.2 ГБ, 1000204886016 байт
255 heads, 63 sectors/track, 121601 cylinders
Единицы = цилиндры по 16065 * 512 = 8225280 байт
Устр-во Загр Начало Конец Блоки Id Система
/dev/sda1 * 1 62 497983+ fd Автоопределение Linux raid
Команда (m для справки): n
Действие команды
e расширенный
p основной раздел (1-4)
p
Номер раздела (1-4): 2
Первый цилиндр (63-121601, по умолчанию 63):
Используется значение по умолчанию 63
Последний цилиндр или +size или +sizeM или +sizeK (63-121601, по умолчанию 121601): 1036
Команда (m для справки): t
Номер раздела (1-4): 2
Шестнадцатеричный код (введите L для получения списка кодов): 82
Системный тип раздела 2 изменен на 82 (Linux своп / Solaris)
Команда (m для справки): p
Диск /dev/sda: 1000.2 ГБ, 1000204886016 байт
255 heads, 63 sectors/track, 121601 cylinders
Единицы = цилиндры по 16065 * 512 = 8225280 байт
Устр-во Загр Начало Конец Блоки Id Система
/dev/sda1 * 1 62 497983+ fd Автоопределение Linux raid
/dev/sda2 63 1036 7823655 82 Linux своп / Solaris
Команда (m для справки): t
Номер раздела (1-4): 2
Шестнадцатеричный код (введите L для получения списка кодов): fd
Системный тип раздела 2 изменен на fd (Автоопределение Linux raid)
Команда (m для справки): p
Диск /dev/sda: 1000.2 ГБ, 1000204886016 байт
255 heads, 63 sectors/track, 121601 cylinders
Единицы = цилиндры по 16065 * 512 = 8225280 байт
Устр-во Загр Начало Конец Блоки Id Система
/dev/sda1 * 1 62 497983+ fd Автоопределение Linux raid
/dev/sda2 63 1036 7823655 fd Автоопределение Linux raid
Команда (m для справки): n
Действие команды
e расширенный
p основной раздел (1-4)
p
Номер раздела (1-4): 3
Первый цилиндр (1037-121601, по умолчанию 1037):
Используется значение по умолчанию 1037
Последний цилиндр или +size или +sizeM или +sizeK (1037-121601, по умолчанию 121601):
Используется значение по умолчанию 121601
Команда (m для справки): t
Номер раздела (1-4): 3
Шестнадцатеричный код (введите L для получения списка кодов): fd
Системный тип раздела 3 изменен на fd (Автоопределение Linux raid)
Команда (m для справки): p
Диск /dev/sda: 1000.2 ГБ, 1000204886016 байт
255 heads, 63 sectors/track, 121601 cylinders
Единицы = цилиндры по 16065 * 512 = 8225280 байт
Устр-во Загр Начало Конец Блоки Id Система
/dev/sda1 * 1 62 497983+ fd Автоопределение Linux raid
/dev/sda2 63 1036 7823655 fd Автоопределение Linux raid
/dev/sda3 1037 121601 968438362+ fd Автоопределение Linux raid
Команда (m для справки): w
Таблица разделов была изменена!
Вызывается ioctl() для перечитывания таблицы разделов.
ПРЕДУПРЕЖДЕНИЕ: Перечитывание таблицы разделов завершилось неудачей с ошибкой 16: Устройство или ресурс занято.
Ядро все еще использует старую таблицу.
Новая таблица будет использована при следующей перезагрузке.
Синхронизируются диски.
Перезагружаем сервер...
# shutdown -r now
Теперь можно включать первый диск в RAID:
# mdadm -a /dev/md0 /dev/sda1
mdadm: added /dev/sda1
# mdadm -a /dev/md1 /dev/sda2
mdadm: added /dev/sda2
# mdadm -a /dev/md2 /dev/sda3
mdadm: added /dev/sda3
Процесс синхронизации (ребилда) массива можно смотреть с помощью команды:
# watch -n 1 cat /proc/mdstat
После завершения ребилда вносим последние изменения в настройки:
# mdadm --detail --scan >> /etc/mdadm/mdadm.conf
И перезагружаемся. Для корректной загрузки в случае отказа одного из дисков, требуется настроить в BIOS загрузку системы с обоих жестких дисков по-очереди.
Вот и все на этом настройка software RAID1 завершена. Все необходимые команды для работы с RAID можно найти здесь http://xgu.ru/wiki/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D1%8B%D0%B9_RAID_%D0%B2_Linux#.D0.94.D0.BE.D0.B1.D0.B0.D0.B2.D0.BB.D0.B5.D0.BD.D0.B8.D0.B5_.D0.BD.D0.BE.D0.B2.D0.BE.D0.B3.D0.BE_.D0.B4.D0.B8.D1.81.D0.BA.D0.B0
Основа для данной статьи взята отсюда >> http://www.mahno.su/jexr/http://pastebin.com/psaWg7QK
Как выполнить проверку целостности программного RAID-массива md0:
echo 'check' >/sys/block/md0/md/sync_action
Как посмотреть нашлись ли какие-то ошибки в процессе проверки программного RAID-массива по команде check или repair:
cat /sys/block/md0/md/mismatch_cnt
Для наблюдение за md-массивами добавляем в /etc/rc.d/rc.local следующую строку:
mdadm --monitor --scan --delay=120 -m admin@example.com --daemonise > /var/run/mdadm/mdadm.pid
Для наблюдение за md-массивами добавляем в /etc/rc.d/rc.local следующую строку:
mdadm --monitor --scan --delay=120 -m admin@example.com --daemonise > /var/run/mdadm/mdadm.pid
Комментариев нет:
Отправить комментарий