четверг, 1 марта 2012 г.

настройка raid1 масива на citrix xen server 6


Понадобилось мне поднять программный RAID на XenServer 6. icon smile Создание и перенос загрузочного раздела XenServer 6.0 на программный RAID1

Идея такова:
- создать на втором диске файловую систему, аналогичную свежеустановленному XenServer
- запустить на нем softraid
- перенести сам XenServer на второй диск
- загрузиться со второго диска, т.е. уже с программного RAID
- подключить к новоиспеченному RAID массиву первый диск
 

Для начала нам потребуется свежеустановленный XenServer 6.0. Желательно без каких-либо настроек и данных, поскольку в случае нарушения порядка действий вы легко можете получить мертвую систему. Итак, в сервере должны находиться 2, желательно идентичных диска. На первый мы ставим обычной установкой XenServer, а второй я настоятельно рекомендую перед началом настройки полностью затереть нулями (к примеру с помощью MHDD). Итак приступим к настройке.

Данные:
sda – диск с XenServer
sdb – пустой диск


Смотрим и сохраняем где-нибудь таблицу разделов sda.
gdisk -l /dev/sda---

Проверяем, что таблица разделов sdb пуста:
gdisk -l /dev/sdb

С помощью gdisk вручную создаем на sdb таблицу разделов:

 gdisk /dev/sdb

Таблица должна быть идентична диску sda (номер раздела, стартовые и конечные сектора должны полностью совпадать). Тип раздела при этом необходимо указывать fd00 (Linux RAID).


Создадим устройства MD на втором диске:
1
2
3
# 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

Создадим и перенесем Local Storage в RAID:
1
2
3
# pvcreate /dev/md2
# vgextend VG_[tab] /dev/md2
# pvmove /dev/sda3 /dev/md2

Удалим старый storage с первого диска:
1
2
# vgreduce VG_[tab] /dev/sda3
# pvremove /dev/sda3

Создадим файловую систему на RAID:
1
# mkfs.ext3 /dev/md0

И смонтируем ее:
1
# mount /dev/md0 /mnt

Скопируем сам XenServer в RAID:
1
2
# cd /
# cp -axv . /mnt

Редактируем fstab для монтирования root раздела с RAID:
1
# nano /mnt/etc/fstab
Вместо строки:
1
LABEL=root-xxx / ext3 defaults 1 1
Должна получиться строка:
1
/dev/md0 / ext3 defaults 1 1

Создаем загрузочный образ для RAID:
1
2
3
4
# mkdir /mnt/root/initrd-raid
# mkinitrd -v --fstab=/mnt/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:
1
nano init
и добавляем после
1
raidautorun /dev/md0
две строки:
1
2
raidautorun /dev/md1
raidautorun /dev/md2

Копируем новый диск в каталог /mnt/boot :
1
2
3
4
# find . -print | cpio -o -Hnewc | gzip -c > /mnt/boot/initrd-`uname -r`-raid.img
# rm /mnt/boot/initrd-2.6-xen.img
rm: remove symbolic link `/mnt/boot/initrd-2.6-xen.img’? y
# ln -s initrd-`uname -r`-raid.img /mnt/boot/initrd-2.6-xen.img

Редактируем загрузочное меню:
1
nano /mnt/boot/extlinux.conf
Требуется заменить все упоминания:
1
root=LABEL=root-xxx
на:
1
root=/dev/md0

Устанавливаем MBR для GPT на втором диске:
1
2
3
# cat /mnt/usr/share/syslinux/gptmbr.bin > /dev/sdb
# cd /mnt
# extlinux --raid -i boot/

Корректно размонтируем второй диск:
1
2
3
# cd
# umount /dev/md0
# sync

Проверяем, что флаг загрузочного диска корректно установлен на обоих дисках:
1
2
# sgdisk /dev/sda --attributes=1:set:2
# sgdisk /dev/sdb --attributes=1:set:2

Перезагружаем сервер. И ЗАГРУЖАЕМСЯ СО ВТОРОГО ДИСКА, то есть уже с RAID. Во избежание путаницы, возможность загрузки с первого диска лучше вообще отключить в BIOS.

reboot

После загрузки с RAID нам требуется настроить файловую систему первого диска для работы в RAID:
1
# gdisk /dev/sda

Для этого с помощью клавиши t меняем типы для всех трех разделов на fd00 (Linux RAID). После завершения нажимаем w для записи изменений и выходим из gdisk.

Теперь можно включать первый диск в RAID:
1
2
3
4
5
6
# 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
 cat /proc/mdstat

После завершения ребилда вносим последние изменения в настройки:
1
# mdadm --detail --scan >> /etc/mdadm.conf

И перезагружаемся. Для корректной загрузки в случае отказа одного из дисков, требуется настроить в BIOS загрузку системы с обоих жестких дисков по-очереди.
Вот и все icon smile Создание и перенос загрузочного раздела XenServer 6.0 на программный RAID1 на этом настройка software RAID1 для xenserver 6.0 завершена. Все необходимые команды для работы с RAID можно найти здесь.
Основа для данной статьи взята отсюда.

6 комментариев:

  1. А для чего используется раздел sda2?
    Как понимаю sda1 / sda3 loca storage а sda2 swap? почему тогда идентификатор раздела 0700?

    ОтветитьУдалить
    Ответы
    1. Here’s a quick explanation of your partitions:

      /dev/sda1: the XenServer root partition
      /dev/sda2: XenServer uses this partition for temporary space during upgrades
      /dev/sda3: your storage repository should be in this logical volume

      Удалить
  2. Антон, добрый день

    Можете помочь с настройкой RAID за благодарность?

    ОтветитьУдалить