On-Line Библиотека www.XServer.ru - учебники, книги, статьи, документация, нормативная литература.
       Главная         В избранное         Контакты        Карта сайта   
    Навигация XServer.ru


Изготовление пружин на заказ в Москве pruzhina.msk.ru.




 

ИСПОЛЬЗОВАНИЕ 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 строчку :
src="../../majordomo.ru/404.html" width=2>
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 ваших данных.
src="../../majordomo.ru/404.html" width=2>
После перезагрузки мы получим смонтированный зеркальный раздел /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 пока без нареканий.


Литература по FreeBSD


 
Компьютеры |  Кулинария |  Медицина |  Нормативная литература |  Типовые договора |  Общие темы