Документация по ОС FreeBSD Среда, 08.05.2024, 15: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, включая подробноые описания и советы по обучению.

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

Создание масштабируемого хранилища с использованием WD MyBook NAS + FreeBSD + ZFS
Мое знакомство с FreeBSD состоялось достаточно давно, как только по ряду
причин прошла "первая любовь" к свежему на тот момент QNX Momentics. Просто
решил взять другую OS для других задач, без всяких аргументов. Но страсть к ZFS
возникла практически мгновенно, как только прочитал первые материалы по ней в
свете включения кода в HEAD ветку FreeBSD. C тех пор мы не разлучны, а с
выходом релиза FreeBSD 8.0, эта привязанность может стать вечной :)

К сожалению, уж очень часто так случается, что место на разделе заканчивается,
и в случае небольших офисных серверов, это превращается в маленькую трагедию.
Завершив переезд на раздел большего размера, остаешься с неприятной мыслью, что этот раз был не последним, а следующий будет сложнее и дороже во всех смыслах этого слова.

Относительно недавно, в розничную продажу поступила линейка NAS устройств WD My Book. Я так же обратил на нее внимание, но в первую очередь потому, что в
голове промелькнула мысль - "Вот оно недостающее звено для бюджетного решения
проблемы серверного пространства", но на тот момент я еще не знал как именно
это можно сделать.

Общая концепция заключалась в том, чтобы использовать NAS не так как его
позиционирует производитель, а в виде блочного устройства. Другими словами ни
CIFS/SAMBA ни FTP не нужны, требуется получить блочное устройство в составе
FreeBSD но физически расположенное на NAS. И тогда на сцену выйдет ZFS и
возьмет его в свои крепкие руки.

Вариант с созданием блочного устройства посредством mdconfig поверх подключенной через CIFS точки монтирования, меня категорически не устраивал.
Моя цель где то рядом с ggate, AoE (ATA over Ethernet) или iSCSI.

Упомянутый выше NAS, является достаточно открытым и работает на базе armv5tejl
Linux 2.6.17.14. А значит к нему можно получить доступ по ssh и установить
дополнительный софт. Процедурs настройки ssh и репозитария optware можно найти
по ссылкам [1] и [2].

К великой радости optware имеет пакет для предоставления блочного устройства по
протоколу AoE, но радость была не долгой, так как все попытки получить AoE на
стороне FreeBSD, оказались не удачными. Существующий AoE порт CORAID [3] я так
и не смог заставить работать во FreeBSD 8, а мои вопросы к автору порта по
email пока остались без ответа. Возвращаться к ядрам 7.X или тем более 6.X не
имело смысла, так как терялась ZFS.

Вспомнил про гору и Мухамеда, и выяснил что FreeBSD прекрасно дружит с iSCSI и
все необходимое уже присутствует в базовой системе. Остается как то
организовать iSCSI target на стороне NAS. Перепробовав массу вариантов собрать
из исходников iSCSI target ( [4] [5] [6]), я практически отчаялся, пока не
вспомнил, что FreeBSD имеет простенький порт net/iscsi-target. На удивление все
собралось из исходников с первой попытки и у меня на руках оказался готовый
бинарник iscsi-target [8] для ARM LINUX который я положил на NAS в /opt/sbin.

Дело техники.

В качестве iSCSI носителя будем использовать целиком раздел, который ранее
выделялся для CIFS (/dev/md4) для чего нужно в /etc/init.d/network_servers.sh
отключить запуск samba.sh и закоментить в /etc/fstab

#/dev/md4 /shares/internal ext3 defaults,noatime 0 2

Узнаем полный объем md4.

[root@BACKUP]# fdisk -l /dev/md4

Disk /dev/md4: 1992.0 GB, 1992096874496 bytes
2 heads, 4 sectors/track, 486351776 cylinders
Units = cylinders of 8 * 512 = 4096 bytes


fdisk показал размер 1992096874496. Опытным путем выяснилось, что в
конфигурации iscsi-targe нужно указать на 1 меньше.

Подготовим конфигурацию для iSCSI /etc/iscsi/targets

extent0 /dev/md4 0 1992096874495
target0 rw extent0 192.168.0.0/24


а так же скрипт автоматического запуска сервиса iSCSI /etc/init.d/iscsi.sh [9]
и добавляем его запуск в список сервисов /etc/init.d/network_servers.sh.
Перезагружаем NAS.

Настройка iSCSI initiator

На стороне сервера FreeBSD (где будем организовывать ZFS пул) настраиваем инициатор.

Утилитой iscontrol выясняем какое имя у нашего target.

server# iscontrol -d targetaddress=nas.ip-or-hostname
TargetName=iqn.1994-04.org.netbsd.iscsi-target:target0
TargetAddress=192.168.0.1:3260,1


Так как в теории устройств NAS у нас должно быть много, их как то надо
идентифицировать. Для целей идентификации MAC адрес подходит как нельзя кстати,
тем более что он указан на корпусе NAS. Дополнительно можно намекнуть на объем
устройство, и тогда получим идентификаторы вида

00:90:a9:0d:f3:72-2T
00:90:a9:3d:e3:7a-512G

Cоздаем /etc/iscsi.conf

#
# Globals
#
port = 3260

#
00:90:a9:0d:f3:72-2T { # nickname
targetaddress = nas.ip-or-hostname
targetname = iqn.1994-04.org.netbsd.iscsi-target:target0
}


Я не нашел штатных настроек FreeBSD для автозапуска инициатора, по этому
добавил скрипт /usr/local/etc/rc.d/iscsiinitiator

# PROVIDE: iscsiinitiator
# REQUIRE: DAEMON
# AFTER: NETWORK

. /etc/rc.subr

name="iscsiinitiator"
rcvar=`set_rcvar`

start_cmd=iscsi_start

iscsi_start() {
echo Start iSCSI initiator
daemon -f iscontrol -c /etc/iscsi.conf -n 00:90:a9:0d:f3:72-2T
}

# read settings, set default values
load_rc_config "$name"
: ${iscsiinitiator="NO"}

run_rc_command "$1"


и соотвесвенно, требуется добавить в /etc/rc.conf строчку

iscsiinitiator_enable="YES"

Итак запускаем приемную часть iSCSI

server# /usr/local/etc/rc.d/iscsiinitiator start
Start iSCSI initiator

В dmesg долны появится строки вида

da0 at iscsi0 bus 0 target 0 lun 0
da0: Fixed Direct Access SCSI-3 device


Что означает что весь процесс пройден верно.

Подготовка блочного устройства для включенияв общий пул

Размечаем устройсво da0 средствами gpart

server# gpart create -s gpt da0
server# gpart add -t freebsd-zfs -l 00:90:a9:0d:f3:72-2T da0


Проверяем что наше устройство корректно отобразилось в /dev/gpt

server# ls /dev/gpt
00:90:a9:0d:f3:72-2T ... ... ...


Создаем zfs пул

server# zpool create -m /mnt/big-storage storage0 /dev/gpt/00:90:a9:0d:f3:72-2T

И вот, наш пул готов!

server# zpool list
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
storage0 1,80T 72K 1,80T 0% ONLINE -

Заключение

Мои поверхностные тесты показали скорость работы данного пула, близкие к
максимальным возможностям самой среды FastEthernet. Т.е. 5-6Mbyte/sec, что в
моих обстоятельствах является более чем достаточном. Дополнительно стоит
отметить, что с увеличением количества устройств в пуле, скорость так же будет
расти (если конечно серверный порт и коммутатор гигабитные).

P.S.

Данный пример, своей целью имеет демострацию именно последовательности
действий, а не рекомендуемый вариант использования.

В реальных условиях нужно создавать пул из нескольких NAS устройств и
объединять их в единый RAID-Z с одиночной или двойной точкой отказа.

Но в любом случае последующая ситуация с отказом NAS устройства, или
увеличением общего объема, будет заключаться в подготовке NAS для работы по
iSCSI и добавлением его в ZFS пул, что представляется достаточно тривиальным и
не зависящим от общего объема пула.

Не маловажным остается тот факт, что все работы проводятся без остановки
сервисов или тем белее перезагрузок. Дополнительное пространство просто
появляется и начинает работать на Вас!

[0] http://blogs.sun.com/bonwick/entry/raid_z
[1] http://mybookworld.wikidot.com/ssh-enable
[2] http://mybookworld.wikidot.com/optware


Источник: http://www.opennet.ru/tips/info/2321.shtml
Категория: Работа с железом | Добавил: oleg (18.03.2010) | Автор: Алексей Волков
Просмотров: 760 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

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

Copyright MyCorp © 2024