Создание RAID Level 1 для / (root).

В примере root-раздел находится на c0t0d0s0, зеркало для него – идентичный по размеру slice, находящийся на c0t1d0s0, и для хранения State Database созданы два выделенных раздела размером около 16 мбайт c0t0d0s7 и c0t1d0s7.

В документации рекомендуется для увеличения производительности хранить State Database на физических дисках, отличных от тех, на которых находятся разделы, объединяемые в RAID, но здесь рассмотрен простейший случай с двумя физическими дисками в системе.


    Создание State Database


Перед созданием любых RAID-массивов в системе Solaris необходимо иметь State Database (далее – SD), в которой хранится конфигурация и состояние всех RAID в системе.

Для корректной работы Solstice DiskSuite необходимо иметь как минимум две копии SD на каждый дисковый массив.

Для хранения SD в случае создания RAID для root-раздела используются отдельные небольшие разделы, в каждом из которых может храниться несколько копий SD (копии называются State Replica). Одна State Replica занимает около 4 Мбайт.


Пример: создание SD на двух выделенных для этого разделах (по три State Replica на каждом):


#metadb -f -c 3 -a c0t0d0s7

#metadb -c 3 -a c0t1d0s7

#metadb

flags first blk block count

...

a u 16 1034 /dev/dsk/c0t0d0s7

a u 1050 1034 /dev/dsk/c0t0d0s7

a u 2084 1034 /dev/dsk/c0t0d0s7

a u 16 1034 /dev/dsk/c0t1d0s7

a u 1050 1034 /dev/dsk/c0t1d0s7

a u 2084 1034 /dev/dsk/c0t1d0s7


    Создание RAID


Создаём два метаустройства d11 и d12, один из них будет содержать уже существующий root-раздел, второй – ещё неинициализированный раздел, обьединяемый в RAID.


#metainit -f d11 1 1 c0t0d0s0

d11: Concat/Stripe is setup

#metainit d12 1 1 c0t1d0s0

d12: Concat/Stripe is setup


Создаём зеркало d10 (Mirror, он же RAID1), который пока будет содержать только одно метаустройсто d11, т.е. реально зеркало пока существовать не будет.


#metainit d10 -m d11

d10: Mirror is setup


Для того, чтобы система была перестроена на правильную загрузку с метаустройства, необходимо использовать metaroot, которая надлежащим образом поправит конфигурационные файлы /etc/vfstab и /etc/system:


#metaroot d10


Далее в документации для обеспечения целостности данных рекомендовано использование lockfs, механизм действия и причины применения которого не описан (в Solaris 9 при аналогичных действиях он не требуется):


#lockfs -fa


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


#init 6


После загрузки системы подключаем к зеркалу второе метаустройство:


#metattach d10 d12

d10: Submirror d12 is attached


Автоматически запустится процесс зеркалирования, за ходом которого можно следить с помощью metastat. Необходимо дождаться его завершения, после чего система готова к работе.



    Подготовка системы к загрузке с резервного устройства


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


Для загрузки с резервного устройства (в нашем случае, c0t1d0) необходимо знать полный путь к нему. Выясняем:


#ls -l /dev/rdsk/c0t1d0s0

lrwxrwxrwx 1 root root 55 Mar 5 12:54 /dev/rdsk/c0t1d0s0 ->

../../devices/sbus@0,f8000000/esp@1,200000/sd@1,0:a,raw


подчёркнутая часть – и есть то, что нам необходимо.


При ближайшей же возможности попасть в OpenBoot (например, при перезагрузке на этапе создания массива), создаём имя для этого устройства, и настраиваем автоматическую загрузку с него в случае отказа основного:


ok nvalias second_root /sbus@0,f8000000/esp@1,200000/sd@1,0:a

ok printenv boot-device

boot-device = disk net

ok setenv boot-device disk second_root net

boot-device = disk second_root net

ok nvstore


Теперь в случае отказа устройства c0t0d0 система начнёт загружаться с c0t1d0.


Можно проверить загрузку системы с резервного устройства (только после того, как массив будет создан полностью (!), уже после выполнения metattach и полного завершения зеркалирования):


ok boot second_root


Если всё сделано правильно, система загрузится со резевного устройства точно также, как и с основного. Следующая перезагрузка будет произведена с основного.




18.11.2003

1.0.1