URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 3335
[ Назад ]

Исходное сообщение
"OpenNews: Настройка IDE RAID5 в FreeBSD с использованием vinum"

Отправлено opennews , 25-Фев-04 12:30 
Статья является обобщением полученного опыта на протяжении нескольких дней в связи с необходимостью настроить вышеупомянутую функциональность. Ниже приводится текст статьи:

Цель:
настроить RAID5 как хранилище даных на сервере.
Сервер: TYAN SERVER-WORKS 8025GN dual PIII 800MHz. Диски - в ожидании двух Western Digital 120GB. А тем временем имеем QUANTUM FIREBALL 12GB. OS - FreeBSD4.7

Присупаем к работе:


Для Vinum-а подходят разделы a,e,f,g,h.... Не подходит с, который обозначает весь диск и b,
который используется для свопа. Имеем 4 винчестера, при чём на одном из них стоит системма. Заметим, что на разделах, на которых нет раздела a (то есть нет / ), раздел е можно создать двумя способами: сначала выделить место под е раздел,
а потом под своп, или же сначала под своп а потом под е-раздкл. Так вот, второй вариант не
проходит (во всяком случае у меня). Разделы на дисках можно создавать как при начальной
установке, так и после неё через /stand/sysinstall.

Установили системму, разбили на разделы. При чем, если веники большие, то раздел под корень
можно сжелать даже гигабайт (в зависимости от полноты установки), а потом /usr, /var и всё,
чё надо, перенести на RAID.

Я под корень выделил 1 гиг, под RAID 10 гиг(/raid0), под своп 128М. Подключаю остальные 3 диска. Запускаю /stand/sysinstall, выбираю Configure->Fdisk. Под раздел UFS беру весь объём каждого диска, на вопрос о BOOT Manager выбираю Standart. Когда это проделал со всеми дисками, захожу в Configure->Label. На каждом диске сначала делаю раздел на 10G(точно такого размера, как и на первом диске), с точкой монтирования (/raidx, где х - номер диска), поптом 128М под своп.

В результате имеем конфигурацию:


ad0s1a /
ad0s1b swap
ad0s1e /raid0
ad1s1e /raid1
ad1s1b swap
ad1s1e /raid2
ad2s1b swap
ad3s1e /raid3
ad3s1b swap

Создаём дирректорию /bootvinum
cd /bootvinum
disklabel ad0s1 > ad0s1


и так для всех дисков, (соответственно ad1s1 в  ad1s1 и т.д.).


Теперь редактируем эти файлы, изменяя fstype с ufs на vinum и adxs1e на adxs1h( если бы мы не включали наш первый, системный диск, то менять имена разделов трёх дисков не надо (во всяком случае, как я не пытался объединить в RAID разделы е несистемных и е раздел системного, ничего не получилось)).

Теперь немного теории и терминологии. В vinum принято любую законченную структуру называть volume(том). Том состоит из сплетений даных (plex-ов). Считайте, что сплетение - это одно устройство, которое видится как один диск и в нём находится точно такая же информация, как и на всех остальных дисках(plex-ах) и они одинакового размера. Например, зеркализации,(RAID1), вам нужно хранилище (volume), которое по своей сути - 2 носителя(plex). Фактически, создание 2-х plex-ов автоматически означает их зеркализацию. Томы, которые содержат более двух сплетений увидеть не приходилось (возможно, пока). Plex состоит из subdisk-ов - фактически, собственно, носителей информации.

При создании RAID5 нам к нас будет 1 том, в котором будет одно сплетение, состоящее из 4 носителей. При чём, информация будет разбиваться на блоки, и записываться следующим образом. Берётся обьём информации, равный (n-1)*размер блока, где n - число дисков, из которых состоит RAID5. Первый блок даных записывается на первый диск, второй - на второй и т.д. На последний диск записывается блок контрольной суммы, который формируется следующим образом: по методу дополнения до 0, то есть, первый бит первого блока на первом диске складывается по модулю 2 с такими же первыми битами первых блоков остальных n-1 дисков. Если в результате получилась 1, то первым битом первого блока контрольной суммы будет 1, если 0 - то 0. После заполнения первого ряда блоков, блок контрольной суммы запишется на 1-й диск, на следующем круге - на 2-й, и т.д. Наличие блока контрольной суммы даёт возможность при выходе одного из дисков восстановить информацию какого-то ряда блоков.

Ну, довольно теории, пора заняться практикой.

Оптимальный размер блока в RAID5 в районе 256-512kb. В /bootvinum создаём файл raid


drive vinumdrive0 devive /dev/ad0s1h
drive vinumdrive1 device /dev/ad1s1h
drive vinumdrive2 device /dev/ad2s1h
drive vinumdrive3 device /dev/ad3s1h
volume raid
  plex name raid.p0 org raid5 512k
    sd name raid.p0.s0 length 10g drive vinumdrive0
    sd name raid.p0.s1 length 10g drive vinumdrive1
    sd name raid.p0.s2 length 10g drive vinumdrive2
    sd name raid.p0.s3 length 10g drive vinumdrive3

Следует заметить, что для RAID5 нужно минимум 3 диска, разделы на которых одинакового размера.

/sbin/shutdown -r now
Когда появится приглашение
Hit [ENTER] .. , нажмите любую клавишу, не ENTER.
boot -s
cd /bootvinum
disklabel -R ad0s1 ad0s1
Для остальных то же самое.
fsck /
mount /
vi /etc/fstab
Удалить все записи относительно тех разделов, на которых меняли
файловую систему и которые сейчас в томе.
Ctrl+D
/sbin/shutdown -r now
boot -s
cd /bootvinum
mount /
vinum create -v raid
vinum init raid.p0 (записывае нули в разделы RAID-а)
newfs -v /dev/vinum/raid
fsck -n /dev/vinum/raid
Ctrl+D
/sbin/mount /dev/vinum/raid (точка монтирования)
vi /etc/rc.conf
добавить строчку
start_vinum="YES"
vi /etc/fstab
добавить строчку
/dev/vinum/raid (точка монтирования)  ufs rw 2 2
/sbin/shutdown -r now

Убедиться, что всё работает

URL: http://users.univ.kiev.ua/~adolf/Raid/index.htm
Новость: http://www.opennet.me/opennews/art.shtml?num=2343


Содержание

Сообщения в этом обсуждении
"Настройка IDE RAID5 в FreeBSD с использованием vinum"
Отправлено alex , 25-Фев-04 12:30 
народ, есть проблема:
сервер freebsd 3.4, 5 винтов
один WD древний 2Г
остальные cheetah 36Г
все скази.

пытаюсь сделать raid5 на трех винтах:
drive da2 device /dev/da2s1a
drive da3 device /dev/da3s1a
drive da4 device /dev/da4s1a
volume raid5_60g
  plex name raid5_60g.p0 org raid5 256k
    sd name raid5_60g.p0.s0 drive da2 length 30g
    sd name raid5_60g.p0.s1 drive da3 length 30g
    sd name raid5_60g.p0.s2 drive da4 length 30g

вроде все нормально, делаю как описано и... при подходе newsf к концу система падает в панику....
после этого:
Configuration summary

Drives: 2 (4 configured)
Volumes: 1 (4 configured)
Plexes: 1 (8 configured)
Subdisks: 3 (16 configured)

Drive da3: Device /dev/da3s1a
Created on rub-gus.altai.su at Wed Feb 25 11:40:47 2004
Config last updated Wed Feb 25 21:08:50 2004
Size:      36700672000 bytes (35000 MB)
Used:      32212390400 bytes (30720 MB)
Available:  4488281600 bytes (4280 MB)
State: up
Last error: none
Drive da4: Device /dev/da4s1a
Created on rub-gus.altai.su at Wed Feb 25 11:40:47 2004
Config last updated Wed Feb 25 21:08:50 2004
Size:      36700672000 bytes (35000 MB)
Used:      32212390400 bytes (30720 MB)
Available:  4488281600 bytes (4280 MB)
State: up
Last error: none
Drive da2: Device
Created on  at Thu Jan  1 07:00:00 1970
Config last updated Thu Jan  1 07:00:00 1970
Size:                0 bytes (0 MB)
Used:                0 bytes (0 MB)
Available:           0 bytes (0 MB)
State: referenced
Last error: none

Volume raid5_60g: Size: 64424509440 bytes (61440 MB)
State: up
Flags:
1 plexes
Read policy: round robin

Plex raid5_60g.p0: Size: 64424509440 bytes (61440 MB)
Subdisks:        3
State: degraded
Organization: raid5 Stripe size: 256 kB
Part of volume raid5_60g

Subdisk raid5_60g.p0.s0:
Size:      32212254720 bytes (30720 MB)
State: crashed
Plex raid5_60g.p0 at offset 0 (0  B)
Drive da2 () at offset 135680 (132 kB)

Subdisk raid5_60g.p0.s1:
Size:      32212254720 bytes (30720 MB)
State: up
Plex raid5_60g.p0 at offset 262144 (256 kB)
Drive da3 (/dev/da3s1a) at offset 135680 (132 kB)

Subdisk raid5_60g.p0.s2:
Size:      32212254720 bytes (30720 MB)
State: up
Plex raid5_60g.p0 at offset 524288 (512 kB)
Drive da4 (/dev/da4s1a) at offset 135680 (132 kB)

если пробую создавать раздел в пару гигов - все нормально... подскажите где чего смотреть ???
уже все испробовал. и винты форматил и разделы разные делал - результат один :(


"Настройка IDE RAID5 в FreeBSD с использованием vinum"
Отправлено alex , 25-Фев-04 12:32 
причем вылетает не обязадельно первый из трех - любой... вылетает так, что и разделов не остаёться... только бить заново fdisk ом...

плиз помогите !!!


"Настройка IDE RAID5 в FreeBSD с использованием vinum"
Отправлено knsi , 26-Мрт-05 17:32 
>народ, есть проблема:
>сервер freebsd 3.4, 5 винтов
>один WD древний 2Г
>остальные cheetah 36Г
>все скази.
>
>пытаюсь сделать raid5 на трех винтах:
>drive da2 device /dev/da2s1a
>drive da3 device /dev/da3s1a
>drive da4 device /dev/da4s1a
>volume raid5_60g
>  plex name raid5_60g.p0 org raid5 256k
>    sd name raid5_60g.p0.s0 drive da2 length 30g
>    sd name raid5_60g.p0.s1 drive da3 length 30g
>    sd name raid5_60g.p0.s2 drive da4 length 30g
>
>вроде все нормально, делаю как описано и... при подходе newsf к концу
>система падает в панику....
>после этого:
>Configuration summary
>
>Drives: 2 (4 configured)
>Volumes: 1 (4 configured)
>Plexes: 1 (8 configured)
>Subdisks: 3 (16 configured)
>
>Drive da3: Device /dev/da3s1a
>Created on rub-gus.altai.su at Wed Feb 25 11:40:47 2004
>Config last updated Wed Feb 25 21:08:50 2004
>Size:      36700672000 bytes (35000 MB)
>Used:      32212390400 bytes (30720 MB)
>Available:  4488281600 bytes (4280 MB)
>State: up
>Last error: none
>Drive da4: Device /dev/da4s1a
>Created on rub-gus.altai.su at Wed Feb 25 11:40:47 2004
>Config last updated Wed Feb 25 21:08:50 2004
>Size:      36700672000 bytes (35000 MB)
>Used:      32212390400 bytes (30720 MB)
>Available:  4488281600 bytes (4280 MB)
>State: up
>Last error: none
>Drive da2: Device
>Created on  at Thu Jan  1 07:00:00 1970
>Config last updated Thu Jan  1 07:00:00 1970
>Size:            
>    0 bytes (0 MB)
>Used:            
>    0 bytes (0 MB)
>Available:           0
>bytes (0 MB)
>State: referenced
>Last error: none
>
>Volume raid5_60g: Size: 64424509440 bytes (61440 MB)
>State: up
>Flags:
>1 plexes
>Read policy: round robin
>
>Plex raid5_60g.p0: Size: 64424509440 bytes (61440 MB)
>Subdisks:        3
>State: degraded
>Organization: raid5 Stripe size: 256 kB
>Part of volume raid5_60g
>
>Subdisk raid5_60g.p0.s0:
>Size:      32212254720 bytes (30720 MB)
>State: crashed
>Plex raid5_60g.p0 at offset 0 (0  B)
>Drive da2 () at offset 135680 (132 kB)
>
>Subdisk raid5_60g.p0.s1:
>Size:      32212254720 bytes (30720 MB)
>State: up
>Plex raid5_60g.p0 at offset 262144 (256 kB)
>Drive da3 (/dev/da3s1a) at offset 135680 (132 kB)
>
>Subdisk raid5_60g.p0.s2:
>Size:      32212254720 bytes (30720 MB)
>State: up
>Plex raid5_60g.p0 at offset 524288 (512 kB)
>Drive da4 (/dev/da4s1a) at offset 135680 (132 kB)
>
>если пробую создавать раздел в пару гигов - все нормально... подскажите где
>чего смотреть ???
>уже все испробовал. и винты форматил и разделы разные делал - результат
>один :(

vinum init  raid5_60g.p0