Документация по ОС FreeBSD Воскресенье, 05.05.2024, 14:53
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Мои статьи [0]
Установка и настройка [281]
X Window [25]
Man pages [30]
Ports & Packages [26]
cvs [18]
Multimedia [20]
Нововсти в мире Unix [0]
RFC [4]
RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
Безопасность [52]
Работа с железом [58]
Книги по FreeBSD [17]
Сеть [505]
Программирование [40]
FireWall [58]
Темы экзамена BSDA [14]
Официальные темы экзамена BSDA, включая подробноые описания и советы по обучению.

Главная » Статьи » Работа с железом

Использование 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 который является средством организации файлового сервера но уже за немалые деньги. Так что Вы получаете в данном случае качество коммерческого продукта, и надо cказать что автор использует vinum уже с момента появления стабильной версии в 3.4 на многих FileServers пока без нареканий.

Автор: Michael Vlasov
Категория: Работа с железом | Добавил: oleg (01.12.2007)
Просмотров: 1328 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024