Назад в раздел
Использование vinum под FREEBSD.
ИСПОЛЬЗОВАНИЕ VINUM ПОД FREEBSD
ИСПОЛЬЗОВАНИЕ VINUM ПОД FREEBSD
Часто возникает необходимость
создания надежной дисковой системы на файловом сервере. Такую задачу
приходилось часто реализовывать при отсутствии особого финансового потока
и как выход пришлось делать зеркалирование двух SCSI дисков на FreeBSD 3.4
с применением vinum При наличии финансов конечно желательно покупать
аппаратную реализацию RAID 5 (По отзывам моих коллег очень неплохо
работает MegaRAID 1500). На данный момент FreeBSD поддерживает следующие
типы дисковых массивов :
CompaqSmartRAID
AMI MegaRaid
Mylex DAC960 Family В составе FreeBSD есть k-модуль для
организации отказоустойчивых дисковых массивов RAID1 (зеркальный набор) и
RAID5 (чередующий набор с проверкой четности). Естественно что для таких
задач стоит покупать Wide SCSI Controller и как минимум 2 диска. Хотя и
диски и контроллер поддерживали заявленную скорость transfeer-a в 60Mb но
удалось выжать всего лишь 40Mb, хотя и это неплохо. VINUM, как технология
заркалирования стала стабильно работающей начиная с версии FreeBSD 3.4.
Что же касается samba ver. 2.0.7 то она на 10Mb карточке давала результат
1.1Mb чтения, 900Kb записи при следующей конфигурации ПК : Pentium II
350Мгц, 128Mb ОЗУ, 2xHDD IBM Wide SCSI-3 обьемом на 8Gb, 3Com590 Etherlink
III PCI 10Mb, материнская плата ASYS (Intel82443LX).
Вкратце организация зеркальных или чередующих разделов
заключается в созданиии разделов (slice) одинакового размера на разных
дисках монтирование их в каком либо каталоге основной файловой системы
через заранее заданное в конфигурации имени устройства, например :
/dev/vinum/имя_раздела_vinumdevice
Тип файловой системы на этих разделах должен быть установлен
как "vinum", монтирование их проводится обычной командой mount при
включенной опции VINUM в startup scripts. Есть два способа запуска VINIM в
FreeBSD : через ядро и как загружаемый модуль. По умолчанию используется
второй способ. Для этого необходимо включить в /etc/defaults/rc.conf
строчку :
start_vinum="YES"
И
указать какие slice отдаются под организацию mirror-a :
vinum_drives="/dev/da0s1g /dev/da0s1a
Предположим что у нас есть два SCSI диска da0 и da1 обьемом
8Gb. Геометрия диска da0 будет выглядеть так : da0s1a ufs / 50Mb
da0s1b swap swap 250Mb
da0s1e ufs /var 100Mb
da0s1f ufs /usr 600Mb
da0s1f unused none 7000Mb
Как вы видите мы не задаем точку монтирования для свободного
пространства в 7Gb оставляя его для раздела vinum который и будет
содержать данные. Затем инсталируем FreeBSD на данный диск в составе всех
пакетов кроме games, ports, XFree86 и docs а из пакетов: sysutils,
arhives, samba, less, network utilites. После инсталяции необходимо на
втором диске содать такую же геометрию разделов как на da0 и вручную
создать UFS командой newfs /dev/da1xx где xx - это названия разделов
(учтите что swap вам создать не удастся, поэтому нужно загрузиться со
вторым диском отдельно от первого с помошью cdrom-a и указать это диск как
активным и создать swap раздел. Это необходимо для того чтобы в случае
аварии первого диска контроллер нашел загрузочную запись на втором и
передал ему управление . Далее вы по cron-y еженочно делаете копирование
разделов /, /usr, /var с da0 на da1 с применением команды cpio. После
нормальной перезагрузки с двумя дисками мы создаем разделы под vinum
командой disklabel -e da0 которая р редакторе vi (установленном по
умолчанию) позволяет нам дойти до последней строчки снизу и внести
изменения: # /dev/rda0c:
type: SCSI
disk: da0s1
label:
flags:
--- skip ---
8 partitions:
# size offset fstype
a: 102400 0 4.2BSD # (Cyl. 0 - 6*)
b: 272624 102400 swap # (Cyl. 6*- 23*)
c: 17912412 0 unused # (Cyl. 0 - 1114*)
e: 204800 375024 4.2BSD # (Cyl. 23*- 36*)
f: 1843200 579824 4.2BSD # (Cyl. 36*- 150*)
g: 15360000 2423024 vinum # (Cyl. 150*- 1106*)
^^^^^^^^^^^ где вместо слова vinum было "unused"
Далее редактируем таблицу на втором диске da1 "disklabel -e
da1" # /dev/rda1c:
type: SCSI
disk: da1s1
--- skip ---
8 partitions:
# size offset fstype
a: 15360000 2422784 vinum # (Cyl. 150*- 1106*)
^^^^^^^^
c: 17912412 0 unused # (Cyl. 0 - 1114*)
e: 102400 0 4.2BSD # (Cyl. 0 - 6*)
f: 272384 102400 4.2BSD # (Cyl. 6*- 23*)
g: 204800 374784 4.2BSD # (Cyl. 23*- 36*)
h: 1843200 579584 4.2BSD # (Cyl. 36*- 150*)
Теперь напишем файл конфигурации /etc/vinum.conf :
#
Описываем наши разделы на двух дисках которые будут зеркальными : drive d1 device /dev/da0s1g
drive d2 device /dev/da1s1a
# Называем зеркальный раздел "mirror" , название произвольное -
volume mirror.
#
Описываем тип (RAID1) и размер зеркального раздела : plex org concat
sd length 7g drive d1
plex org concat
sd length 7g drive d2
Точку монтирования для зеркального каталога определим как /data, сам
же скрипт поместим в /usr/local/etc/rc.r/data_mount.sh : #!/bin/sh
/sbin/fsck -f /dev/vinum/mirror
/sbin/mount /dev/vinum/mirror /data
Создание раздела vinum делается командами : /sbin/vinum create -f /etc/vinum.conf
/sbin/newfs -v /dev/vinum/mirror
Ошибки которые могут возникать при создании vinum раздела в 90%
случаев зависят от правильности задания раземера vinum. раздела. Например
я не смог создать зеркальный раздел до тех пор пока не исправил размер
slice в /etc/vinum.conf с 7000Mb на 7Gb. Изменения которые були внесенны в
конфигурационный файл vinum.conf должны быть ппрочитанны заново k-модулем
vinum, с помошью команды vinum resetconfig
Манипулирование с конфигом равносильно экспериментам со сменой
типа FS командой newfs - то есть прежде чем что то менять, сделайте backup
ваших данных.
После перезагрузки мы получим смонтированный зеркальный раздел
/data.
Есть
еще другой путь повышения уровня надежности хранения данных с помошью
организации RAID5 с помощью vinum. Для этого вам необходимо иметь три
одинакового размера разделы на трех дисках и описать данную конйигурацию в
/etc/vinum.conf. Предположим, мы имеем три раздела: /dev/da0s1g
/dev/da1s1h
/dev/da2s1f
Конфигурационный файл /etc/vinum.conf должен содержать следуюшие
строчки : drive d1 device /dev/da0s1g
drive d2 device /dev/da1s1h
drive d3 device /dev/da2s1f
volume mirror
## Указываем что мы организуем чередование дисков с четностью plex org raid5 32K
sd length 7g drive d1
sd length 7g drive d2
sd length 7g drive d3
Более полная информация vinum находится на сайте разработчика по
адресу http://www.lemis.com/vinum.html. Надо сказать что механизм VINUM
включен в коммерческий продукт под названием NetMax для FreeBSD который
является средством организации файлового сервера но уже за немалые деньги.
Так что Вы получаете в данном случае качество коммерческого продукта, и
надо сказать что автор использует vinum уже с момента появления стабильной
версии в 3.4 на многих FileServers пока без нареканий.
neo
|
|
|
|
|
|