Ключевые слова:solaris, raid, disk, (найти похожие документы)
From: Eugeny Nemo <n at mo.pp.ru>
Newsgroups: http://mo.pp.ru/
Date: Mon, 20 Sep 2004 18:21:07 +0000 (UTC)
Subject: Создание RAID Level 1 для корневого раздела в Solaris
Оригинал: http://mo.pp.ru/texts/raid1_on_root_solaris8_sparc.html
Создание 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
Если всё сделано правильно, система загрузится со резевного устройства
точно также, как и с основного. Следующая перезагрузка будет
произведена с основного.
1.0.1
18.11.2003
1.0.1