FreeBSD с корнем на CDROM и разделами на программном RAID-1.
Copyleft Polina Soloviova
Запуск RAID-1 под управлением vinum(8)
перегрузите систему с CDROM в однопользовательский режим
# reboot
поменяйте настройки BIOS - поставьте первым загрузочным устройством CDROM. Когда вы увидите надпись
Hit [Enter] to boot immediately, or any other key for command prompt
Booting [kernel] in 9 seconds...
Type '?' for a list of commands, 'help' for more detailed help
нажмите любую клавишу и в появившейся командной строке наберите
ok boot -s
перейдите в каталог /root/vinum и запишите новые таблицы партиций, созданные в процессе подготовки , на соответствующие диски
# cd /root/vinum
# disklabel -R ad0s1 ad0s1.vinum
# disklabel -R ad2s1 ad2s1.vinum
смонтируйте /dev . При старте vinum(8) создаст там новые собственные файлы устройств
# mount_mfs -s 12000 -o union,noatime,rw swap /dev
создайте тома vinum(8)
# vinum create raid.create
вы увидите примерно следующее:
2 drives:
D first
State: up
Device
/dev/ad0s1e
Avail: 0/21248 MB (0%)
D second
State: up
Device
/dev/ad2s1e
Avail: 0/21248 MB (0%)
3 volumes:
V var
State: up
Plexes:
2 Size:
512 MB
V tmp
State: up
Plexes:
2 Size:
256 MB
V local
State: up
Plexes:
2 Size:
20 GB
6 plexes:
P var.p0
C State: up
Subdisks:
1 Size:
512 MB
P var.p1
C State: faulty
Subdisks:
1 Size:
512 MB
P tmp.p0
C State: up
Subdisks:
1 Size:
256 MB
P tmp.p1
C State: faulty
Subdisks:
1 Size:
256 MB
P local.p0
C State: up
Subdisks:
1 Size:
20 GB
P local.p1
C State: faulty
Subdisks:
1 Size:
20 GB
6 subdisks:
S var.p0.s0
State: up
PO:
0 B Size:
512 MB
S var.p1.s0
State: empty
PO:
0 B Size:
512 MB
S tmp.p0.s0
State: up
PO:
0 B Size:
256 MB
S tmp.p1.s0
State: empty
PO:
0 B Size:
256 MB
S local.p0.s0
State: up
PO:
0 B Size:
20 GB
S local.p1.s0
State: empty
PO:
0 B Size:
20 GB
запустите vinum(8)
# vinum start var.p1.s0
в результате выполнения этой команды vinum(8) продублирует данные тома var с первого жесткого
диска на второй.
вы увидите сообщение:
reviving var.p1.s0
через некоторое время появится другое сообщение
var.p1.s0 is up by force var.p1 is up
var.p1.s0 is up
проверить состояние ваших томов можно следующей командой:
# vinum list
2 drives:
D first
State: up
Device
/dev/ad0s1e
Avail: 0/21248 MB (0%)
D second
State: up
Device
/dev/ad2s1e
Avail: 0/21248 MB (0%)
3 volumes:
V var
State: up
Plexes:
2 Size:
512 MB
V tmp
State: up
Plexes:
2 Size:
256 MB
V local
State: up
Plexes:
2 Size:
20 GB
6 plexes:
P var.p0
C State: up
Subdisks:
1 Size:
512 MB
P var.p1
C State: up
Subdisks:
1 Size:
512 MB
P tmp.p0
C State: up
Subdisks:
1 Size:
256 MB
P tmp.p1
C State: faulty
Subdisks:
1 Size:
256 MB
P local.p0
C State: up
Subdisks:
1 Size:
20 GB
P local.p1
C State: faulty
Subdisks:
1 Size:
20 GB
6 subdisks:
S var.p0.s0
State: up
PO:
0 B Size:
512 MB
S var.p1.s0
State: up
PO:
0 B Size:
512 MB
S tmp.p0.s0
State: up
PO:
0 B Size:
256 MB
S tmp.p1.s0
State: empty
PO:
0 B Size:
256 MB
S local.p0.s0
State: up
PO:
0 B Size:
20 GB
S local.p1.s0
State: empty
PO:
0 B Size:
20 GB
теперь можно перегрузить систему в многопользовательский режим и продублировать остальные тома.
# reboot
войдите пользователем root и выполните следующие команды:
# vinum start tmp.p1.s0
после сообщения о том, что tmp.p1.s0 is up ,
# vinum start local.p1.s0
состояние всех томов должно выглядеть так
2 drives:
D first
State: up
Device
/dev/ad0s1e
Avail: 0/21248 MB (0%)
D second
State: up
Device
/dev/ad2s1e
Avail: 0/21248 MB (0%)
3 volumes:
V var
State: up
Plexes:
2 Size:
512 MB
V tmp
State: up
Plexes:
2 Size:
256 MB
V local
State: up
Plexes:
2 Size:
20 GB
6 plexes:
P var.p0
C State: up
Subdisks:
1 Size:
512 MB
P var.p1
C State: up
Subdisks:
1 Size:
512 MB
P tmp.p0
C State: up
Subdisks:
1 Size:
256 MB
P tmp.p1
C State: up
Subdisks:
1 Size:
256 MB
P local.p0
C State: up
Subdisks:
1 Size:
20 GB
P local.p1
C State: up
Subdisks:
1 Size:
20 GB
6 subdisks:
S var.p0.s0
State: up
PO:
0 B Size:
512 MB
S var.p1.s0
State: up
PO:
0 B Size:
512 MB
S tmp.p0.s0
State: up
PO:
0 B Size:
256 MB
S local.p0.s0
State: up
PO:
0 B Size:
20 GB
S tmp.p1.s0
State: up
PO:
0 B Size:
256 MB
S local.p0.s0
State: up
PO:
0 B Size:
20 GB
S local.p1.s0
State: up
PO:
0 B Size:
20 GB
теперь вывод команды df(1) покажет состояние файловой системы:
# df -H
Filesystem
Size
Used
Avail
Capacity
Mounted on
/dev/acd0a
339M
339M
0B
100%
/
mfs:10
5.9M
16K
5.4M
0%
/dev
/dev/vinum/var
528M
14M
472M
3%
/var
/dev/vinum/tmp
264M
2.0K
243M
0%
/tmp
/dev/vinum/local
21G
160M
19G
1%
/usr/local
procfs
4.1K
4.1K
0B
100%
/proc
а команда kldstat(8) перечислит загруженные в память модули, обычно располагающиеся в директории /modules . Среди них вы увидите и модуль vinum.ko , ответственный за поддержку программного RAID:
# kldstat
Id Refs Address Size Name
1 11 0xc0100000 394090 kernel
2 1 0xc1022000 c3000 vinum.ko
В выводе этой команды в случае вашей системы могут быть и другие модули, в зависимости от конфигурации ядра или системы вашей машины. Однако перечисленные выше должны быть всегда.
Для повышения надежности и отказоустойчивости вашего сервера, вы можете добавить возможность загрузки его с жестких дисков. Как это сделать, описано в разделе Добавим немного гибкости.
Copyleft Polina Soloviova