[Solaris] soft ware RAID 1
Добавлено: 24 авг 2010, 12:51
Имеется сервер Sun V120 c установленной на ней по default ОС Solaris 10.
Для хранения State Database мы будем использовать отдельный раздел c1t0d0s3 и c1t1d0s3 объёмом 18мб. При установки системы был размечен весь диск, создать новый раздел не представляет возможности. По этому, мы будем “кастрировать” swap раздел для создания дополнительного раздела под SD.
Одна State Replica занимает около 4мб.
Установка.
1) Командой format смотрим имеющиеся диски в системе.
2) Допустим что коренной раздел на первом диске (c1t0d0) у нас находится на слайсе s0, swap на s1, backup на s2, слайсы начиная с 3 по 6 не используются, а диск 2(c1t1d0) у нас не размеченный.
3) Отключаем Swap для “кастрации” и выделением из него места для хранений SD
В файле /etc/vfstab комментируем строчку со swap
4) Заходим в format выбираем диск 0 (основной диск) в меню выбираем пункт partition потом выбираем print и списываем геометрию диска, объём разделов, число блоков, цилиндры, флаги и тагеты, это необходимо для того что бы создать такую же копию на диске 1(c1t1d0)
Выглядит она примерно так:
Мы видим, что swap раздел имеет объём 512.06мб, его мы и уменьшим до 493.73мб вследствие, чего свободного не использованного места у нас будет 18.33мб этого вполне хватает для хранений наших SD
5) Заходим снова в format на 1диск (c1t1d0)в меню выбираем пункт partition и размечаем так как размечен диск 0(c1t0d0) но с указанием нового раздела s3 весом 18мб для хранения SD
6) Сохраняем результат и выходим.
В итоге должно получиться что то похожее:
Тем самым мы видим что swap раздел стал меньше и на слайсе 3 появился новый раздел весом 18.34мб для наших SD
7) Теперь нужно перенести разметку диска с c1t1d0 на c1t0d0 это нужно для совпадения геометрии диска
Создаём SD на двух выделенных разделах (c1t0d0s3 и c1t1d0s3) по 2е State Replica на каждом
-f опция для создания и инициализации state database.
-a опция прикрепляет новую базу данных дивайса. Файл /kernel/drv/md.conf автоматически обновляется с учётом новой информации. Так же файл /etc/lvm/mddb.cf тоже обновляется.
-с Определяет количество реплик на каждое устройство. По умолчанию 1 реплика.
Создание RAID для home раздела
Для того чтобы не угробить систему сначала создаём RAID для home раздела (с1t0d0s7)
9) Создаём метаустройство d17 и d27 соответственно.
Первый диск
Второй диск
10) Создаём зеркало (Mirror, он же RAID1)
-m создаёт имя metadevice зеркала.
11) Подключаем к зеркалу второе метаустройство
За ходом процесса зеркалирования можно наблюдать при помощи команды metastat
В итоге после завершения зеркалирования должно получиться что-то подобное:
Mirrot у нас d7, а Submirror d17 и d27
Создание RAID для root раздела
12) Создаём метайстройство d10 и d20 соответственно.
Первый диск
Второй диск
-f этот параметр требуется для настройки зеркала на коренной раздел.
13) Создаём зеркало (Mirror, он же RAID1).
-m создаёт имя metadevice зеркала.
14) Для того чтобы система была перестроена на правильную загрузку с метаустройства, необходимо использовать metaroot, который надлежащим образом правит конфиг файла /etc/vfstab и /etc/system
15) Подключаем swap
16) Для проверки смотрим файл /etc/vfstab он должен быть выглядеть примерно так:
Подключены swap разделы (если строчка закоментарина то нужно её раскоментировать)
/dev/dsk/c1t0d0s1 - - swap - no -
/dev/dsk/c1t1d0s1 - - swap - no -
Строчка /dev/md/dsk/d0 /dev/md/rdsk/d0 означает, что коренной раздел будет грузиться с метаустройства, так же нужно переправить в графе mount at boot с no на yes иначе система не загрузится.
Так же строчка /dev/md/dsk/d7 /dev/md/rdsk/d7 показывает, что раздел home будет работать через метаустройства.
Проверяем /etc/system в конце должно быть что-то похожее:
17) Записываем всё грязную информацию в swap
18) Для обеспечения целостности данных рекомендуется использовать lockfs
19) Уходим в перезагрузку
20) После перезагрузки подключаем к зеркалу второе метаустройство
За ходом процесса зеркалирования можно наблюдать при помощи команды metastat
В итоге после завершения зеркалирования должно получиться что-то подобное:
Если всё собралось успешно, уводим систему в init 0 и попадаем OpenBoot, создаём имена для этих устройств, и настраиваем автоматическую загрузку с него в случае отказа основного:
Ищем наши диски.
Полезные ссылки:
format
http://www.opennet.ru/man.shtml?topic=f ... &russian=4
metadb
http://www.opennet.ru/man.shtml?topic=m ... &russian=4
metainit
http://www.opennet.ru/man.shtml?topic=m ... &russian=4
metattach
http://www.opennet.ru/man.shtml?topic=m ... &russian=4
metaroot
http://www.opennet.ru/man.shtml?topic=m ... &russian=4
lockfs
http://www.opennet.ru/man.shtml?topic=l ... &russian=4
OpenBoot
http://adminschoice.com/sun-openboot-pa ... d-commands
PS: Полезно знать что строчка /pci@1f,0/pci@1/scsi@8/disk@0,0:b означает
disk@ - это контроллер (c1)
0 - это таргет (t0)
0 - это диск (d0)
b - это слайс (s1)
Код: Выделить всё
Так же имеется 2а SCSI диска по 36Gb.
1 HDD - c1t0d0 (основной)
2 HDD - c1t1d0
Одна State Replica занимает около 4мб.
Установка.
1) Командой format смотрим имеющиеся диски в системе.
Код: Выделить всё
bash-3.00# format
Searching for disks...done
AVAILABLE DISK SELECTIONS:
0. c1t0d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107> /pci@1f,0/pci@1/scsi@8/sd@0,0
1. c1t1d0 <SUN36G cyl 24620 alt 2 hd 27 sec 107> /pci@1f,0/pci@1/scsi@8/sd@1,0
3) Отключаем Swap для “кастрации” и выделением из него места для хранений SD
Код: Выделить всё
swap –d /dev/dsk/c1t0d0s1
4) Заходим в format выбираем диск 0 (основной диск) в меню выбираем пункт partition потом выбираем print и списываем геометрию диска, объём разделов, число блоков, цилиндры, флаги и тагеты, это необходимо для того что бы создать такую же копию на диске 1(c1t1d0)
Выглядит она примерно так:
Код: Выделить всё
Part Tag Flag Cylinders Size Blocks
0 root wm 363 - 5087 7.20GB (5230/0/0) 15109470
1 swap wm 0 - 363 512.06MB (364/0/0) 1048707
2 backup wm 0 - 24619 33.92GB (24620/0/0) 71127180
3 unassigned wm 0 0 (0/0/0) 0
4 unassigned wm 0 0 (0/0/0) 0
5 unassigned wm 0 0 (0/0/0) 0
6 unassigned wm 0 0 (0/0/0) 0
7 home wm 5593 - 24619 26.91GB (19027/0/0) 54969003
5) Заходим снова в format на 1диск (c1t1d0)в меню выбираем пункт partition и размечаем так как размечен диск 0(c1t0d0) но с указанием нового раздела s3 весом 18мб для хранения SD
6) Сохраняем результат и выходим.
Код: Выделить всё
partition> select
format>save
format>q
Код: Выделить всё
Part Tag Flag Cylinders Size Blocks
0 root wm 363 - 5592 7.20GB (5230/0/0) 15109470
1 swap wu 0 - 349 493.73MB (350/0/0) 1011150
2 backup wm 0 - 24619 33.92GB (24620/0/0) 71127180
3 unassigned wm 350 - 362 18.34MB (13/0/0) 37557
4 unassigned wm 0 0 (0/0/0) 0
5 unassigned wm 0 0 (0/0/0) 0
6 unassigned wm 0 0 (0/0/0) 0
7 home wm 5593 - 24619 26.21GB (19027/0/0) 54969003
7) Теперь нужно перенести разметку диска с c1t1d0 на c1t0d0 это нужно для совпадения геометрии диска
Код: Выделить всё
prtvtoc /dev/rdsk/c1t1d0s2 | fmthard -s - /dev/rdsk/c1t0d0s2

Код: Выделить всё
metadb –f –a –c 2 c1t0d0s3
metadb –f –a –c 2 c1t1d0s3
-a опция прикрепляет новую базу данных дивайса. Файл /kernel/drv/md.conf автоматически обновляется с учётом новой информации. Так же файл /etc/lvm/mddb.cf тоже обновляется.
-с Определяет количество реплик на каждое устройство. По умолчанию 1 реплика.
Создание RAID для home раздела
Для того чтобы не угробить систему сначала создаём RAID для home раздела (с1t0d0s7)
9) Создаём метаустройство d17 и d27 соответственно.
Первый диск
Код: Выделить всё
metainit –f d17 1 1 c1t0d0s7
Код: Выделить всё
metainit –f d27 1 1 c1t1d0s7
10) Создаём зеркало (Mirror, он же RAID1)
Код: Выделить всё
metainit d7 –m d17
11) Подключаем к зеркалу второе метаустройство
Код: Выделить всё
metattach d7 d27
Код: Выделить всё
metastat | grep “%”
В итоге после завершения зеркалирования должно получиться что-то подобное:
Код: Выделить всё
d7: Mirror
Submirror 0: d17
State: Okay
Submirror 1: d27
State: Okay
Pass: 1
Read option: roundrobin (default)
Write option: parallel (default)
Size: 54969003 blocks (26 GB)
d17: Submirror of d7
State: Okay
Size: 54969003 blocks (26 GB)
Stripe 0:
Device Start Block Dbase State Reloc Hot Spare
c1t0d0s7 0 No Okay Yes
d27: Submirror of d7
State: Okay
Size: 54969003 blocks (26 GB)
Stripe 0:
Device Start Block Dbase State Reloc Hot Spare
c1t1d0s7 0 No Okay Yes
Создание RAID для root раздела
12) Создаём метайстройство d10 и d20 соответственно.
Первый диск
Код: Выделить всё
metainit –f d10 1 1 c1t0d0s0
Код: Выделить всё
metainit –f d20 1 1 c1t1d0s0
13) Создаём зеркало (Mirror, он же RAID1).
Код: Выделить всё
metainit d0 –m d10
14) Для того чтобы система была перестроена на правильную загрузку с метаустройства, необходимо использовать metaroot, который надлежащим образом правит конфиг файла /etc/vfstab и /etc/system
Код: Выделить всё
metaroot d0
Код: Выделить всё
swap –a /dev/dsk/c1t0d0s1
swap –a /dev/dsk/c1t1d0s1
Код: Выделить всё
bash-3.00$ cat /etc/vfstab
#device device mount FS fsck mount mount
#to mount to fsck point type pass at boot options
#
fd - /dev/fd fd - no -
/proc - /proc proc - no -
/dev/dsk/c1t0d0s1 - - swap - no -
/dev/dsk/c1t1d0s1 - - swap - no -
/dev/md/dsk/d0 /dev/md/rdsk/d0 / ufs 1 yes -
/dev/md/dsk/d7 /dev/md/rdsk/d7 /export/home ufs 2 yes -
/devices - /devices devfs - no -
sharefs - /etc/dfs/sharetab sharefs - no -
ctfs - /system/contract ctfs - no -
objfs - /system/object objfs - no -
swap - /tmp tmpfs - yes -
/dev/dsk/c1t0d0s1 - - swap - no -
/dev/dsk/c1t1d0s1 - - swap - no -
Строчка /dev/md/dsk/d0 /dev/md/rdsk/d0 означает, что коренной раздел будет грузиться с метаустройства, так же нужно переправить в графе mount at boot с no на yes иначе система не загрузится.
Так же строчка /dev/md/dsk/d7 /dev/md/rdsk/d7 показывает, что раздел home будет работать через метаустройства.
Проверяем /etc/system в конце должно быть что-то похожее:
Код: Выделить всё
rootdev:/pseudo/md@0:0,0,blk
17) Записываем всё грязную информацию в swap
Код: Выделить всё
sync;sync
Код: Выделить всё
lockfs –fa
Код: Выделить всё
init 6
Код: Выделить всё
metattach d0 d20
Код: Выделить всё
metastat | grep “%”
Код: Выделить всё
d0: Mirror
Submirror 0: d10
State: Okay
Submirror 1: d20
State: Okay
Pass: 1
Read option: roundrobin (default)
Write option: parallel (default)
Size: 15109470 blocks (7.2 GB)
d10: Submirror of d0
State: Okay
Size: 15109470 blocks (7.2 GB)
Stripe 0:
Device Start Block Dbase State Reloc Hot Spare
c1t0d0s0 0 No Okay Yes
d20: Submirror of d0
State: Okay
Size: 15109470 blocks (7.2 GB)
Stripe 0:
Device Start Block Dbase State Reloc Hot Spare
c1t1d0s0 0 No Okay Yes
Ищем наши диски.
Код: Выделить всё
ok devalias (смотрим имеющиеся дивайсы)
ok nvalias root путь к диску (создаём имя для первого диска)
ok nvalias second_root путь к диску (создаём имя для второго диска)
ok setenv boot-device root second_root net (ставим приоритет на загрузку)
boot-device = root second_root net
ok nvstore (сохраняем)
format
http://www.opennet.ru/man.shtml?topic=f ... &russian=4
metadb
http://www.opennet.ru/man.shtml?topic=m ... &russian=4
metainit
http://www.opennet.ru/man.shtml?topic=m ... &russian=4
metattach
http://www.opennet.ru/man.shtml?topic=m ... &russian=4
metaroot
http://www.opennet.ru/man.shtml?topic=m ... &russian=4
lockfs
http://www.opennet.ru/man.shtml?topic=l ... &russian=4
OpenBoot
http://adminschoice.com/sun-openboot-pa ... d-commands
PS: Полезно знать что строчка /pci@1f,0/pci@1/scsi@8/disk@0,0:b означает
Код: Выделить всё
c1 t0 d0 s1
disk@ 0, 0 :b
0 - это таргет (t0)
0 - это диск (d0)
b - это слайс (s1)