The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Раздел полезных советов: Создание масштабируемого хранилища ..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Создание масштабируемого хранилища ..."  +/
Сообщение от auto_tips on 16-Мрт-10, 23:06 
++ Вместо предисловия.

RAID-Z doesn't require any special hardware. It doesn't need NVRAM for correctness, and it doesn't need write buffering for good performance. With RAID-Z, ZFS makes good on the original RAID promise: it provides fast, reliable storage using cheap, commodity disks.
                                                                      Jeff Bonwick  [0]

Мое знакомство с 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: <NetBSD NetBSD iSCSI 0> 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
[3] http://support.coraid.com/support/freebsd/
[4] http://www.open-iscsi.org/
[5] http://linux-iscsi.sourceforge.net/
[6] http://iscsitarget.sourceforge.net/
[7] http://www.freshports.org/net/iscsi-target/
[8] http://softlynx.ru/pub/WD-MyBook-NAS/iscsi-target
[9] http://softlynx.ru/pub/WD-MyBook-NAS/iscsi.sh


URL:
Обсуждается: http://www.opennet.me/tips/info/2321.shtml

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по ответам | RSS]

1. "Создание масштабируемого хранилища с использованием WD MyBoo..."  +/
Сообщение от Kliffoth on 16-Мрт-10, 23:06 
Есть NAS устройства с поддержкой iSCSI за приемлемую цену. Например Thecus N5200 Pro.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Создание масштабируемого хранилища с использованием WD MyBoo..."  +/
Сообщение от Alexei Volkov email on 16-Мрт-10, 23:25 
Спасибо за железку.

Не трудно посчитать. Получается ~ 30 тыс только за шасси, в то время как тот же My Book 1TB стоит 6 тыс, что в сумме 6*5 как раз дает те же 30 тыс, но уже сами HDD в комплекте.

Далее при необходимости увеличить емкость еще на 1TB в варианте с WD + 6 тыс, а с Thesus снова начинаем с шасси.

Но тут немного неправильно сравнивать, устройства под разные цели. И скорости которые будет выдавать WD не стоит сравнивать сравнивать с тем же Thesus. Собстенно этим уже и объясняется разница в цене.

Тем не менее, основной упор статьи именно на малобюджетный вариант с реальной отказоустойчивостью за счет RAID-Z ZFS.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Создание масштабируемого хранилища с использованием WD MyBoo..."  +/
Сообщение от SubGun (ok) on 17-Мрт-10, 11:30 
А как вы обошли проблему с тем, что MyBook периодически впадает в сон?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "Создание масштабируемого хранилища с использованием WD MyBoo..."  +/
Сообщение от Ruslan email(??) on 17-Мрт-10, 11:35 
Не понимаю, как 5-6MB/s может быть достаточно.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

6. "Создание масштабируемого хранилища с использованием WD MyBoo..."  +/
Сообщение от anonimus on 17-Мрт-10, 13:15 
... от каждого NAS в пуле... разве не достаточно?
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "Создание масштабируемого хранилища с использованием WD MyBoo..."  +/
Сообщение от Alexei Volkov email on 17-Мрт-10, 16:17 
Как то так получилось что с этой проблемой я не столкнулся. Может дело в прошивке?
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

8. "Создание масштабируемого хранилища с использованием WD MyBoo..."  +/
Сообщение от Alexei Volkov email on 17-Мрт-10, 16:20 
Если хранилище используется под бакап на который по ночам сливаются данные через не шибко шустрые каналы связи, то да, более чем достаточно.
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

9. "Создание масштабируемого хранилища с использованием WD MyBoo..."  +/
Сообщение от Аноним (??) on 18-Мрт-10, 16:05 
тот же упомянутый текус у меня выдавал 50МБ в сек по nfs, 25-30 - samba. гигабитный свитч.
при этом я даже ничего не тюнил. только поставил прошивку по-новее.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

10. "Создание масштабируемого хранилища с использованием WD MyBoo..."  +/
Сообщение от armnic on 19-Мрт-10, 09:35 
Сервер(1) 2*300Gb SCSI HDD на 2*P3-1,2 GHz 3Gb RAM 2*100Mb LAN Intel82559 :
Какой вариант подключения к серверу(2) 4*Xeon 8Gb RAM 2*1Gb LAN будет работать надёжнее и быстрее:
1) Поднять на сервере(1) FreeBSD8.0(PCBSD) c ZFS и расшарить по самбе (на сервере(2) тоже планируется FreeBSD или Linux)
2) Организовать подключение по iSCSI
3) ...
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

11. "Создание масштабируемого хранилища с использованием WD MyBoo..."  +/
Сообщение от vvvua (ok) on 23-Мрт-10, 14:59 
Как по мне, то самба не очень хороший вариант для соединения Unix/Linux машин между собой.
Я могу ошибаться, но iSCSI следует использовать если у вас один клиент. Если много клиентов совместного доступа Linux/UNIX - NFS.  Если нужно кластер делать одинаковых серверов для распределенных вычислений - GFS.
Samba только в том случае, когда есть разнобой операционок и много клиентов, что не имеют прямого доступа к ФС.
---
Если я правильно домыслил, то iSCSI всё-таки шустрее всего будет. Но сервер(1) будет только носителем. Нельзя будет нормально обслуживать разделяемую ФС.

2 all: Поправьте, если ошибаюсь.

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

12. "Создание масштабируемого хранилища с использованием WD MyBoo..."  +/
Сообщение от armnic on 25-Мрт-10, 08:43 
Да вы правильно домыслили, сервер(1) должен будет лишь предоставлять надёжное файлохранилище для сервера(2) на котором планируется соорудить терминальный сервер.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

13. "Создание масштабируемого хранилища с использованием WD MyBoo..."  +/
Сообщение от playnet on 27-Мрт-10, 09:31 
> сервер(1) должен будет лишь предоставлять надёжное файлохранилище для сервера(2) на котором планируется соорудить терминальный сервер.

УУУУ.. Там не то что 10мб/с, а 250 маловато..
К слову, 5-6мб/с это мало, я получал в самбе порядка 10мб/с, по NFS под 11. Реальный максимум у 100мбит около 11-12мб/с, теоретический 12.5мб/с (100/8)

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

14. "Создание масштабируемого хранилища с использованием WD MyBoo..."  +/
Сообщение от Al.Jes on 14-Дек-10, 18:53 
Разрешите полюбопытствовать, а чем Вас QNX так огорчил?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

15. "Создание масштабируемого хранилища с использованием WD MyBoo..."  +/
Сообщение от universite email(ok) on 20-Июл-11, 00:51 
А можете указать полное название NAS железки?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

16. "Создание масштабируемого хранилища с использованием WD MyBoo..."  +/
Сообщение от Ged email(??) on 05-Апр-14, 15:29 
А что происходит с zfs когда iSCSI теряется?
А то у меня система наглухо виснет. :-(
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

17. "Создание масштабируемого хранилища с использованием WD MyBoo..."  +/
Сообщение от universite email(ok) on 15-Апр-14, 23:21 
> А что происходит с zfs когда iSCSI теряется?
> А то у меня система наглухо виснет. :-(

Винда тоже от такого виснет или в синий экран выпадает.

Какую логику вы хотите?

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

18. "Создание масштабируемого хранилища с использованием WD MyBoo..."  +/
Сообщение от Ged email(??) on 14-Июн-15, 11:28 
1. Винда (XP), если это не системный диск, то просто его теряет, т.е. исчезает буковка диска.
2. Хочу, чтобы все продолжало работать, а при появлении диска все синхронизировалось само.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру