The OpenNET Project / Index page

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

Настройка программного RAID5 во FreeBSD
Понадобилось организовать надежное хранение большого объёма данных. По сей день
использовалось софтовое зеркало, но существующего объёма уже не хватало и
решено было соорудить RAID5 из трёх дисков по терабайту. В моём случае
избыточность составит 1/3 против 1/2 (зеркало).

Судя по тому, что мне удалось узнать FreeBSD поддерживает организацию RAID5
двумя менеджерами дискового пространства: VINUM и GEOM.

Попробуем каждый из них:

I. VINUM.

Начиная с FreeBSD5 VINUM была переписана для совместимости с архитектурой GEOM,
и теперь новая подсистема называется GVINUM, а модуль ядра сменил название с
vinum.ko на geom_vinum.ko.

Создадим директорию к которой будем монтировать наш RAID5:

   snap# mkdir /raid5

Теперь создаём конфигурационный файл нашего массива(расположить его можно где угодно):

   snap# touch /usr/local/gvinum.conf

После этого непосредственно конфигурируем наш массив(как я говорил, в моем
случае будет 3 диска по терабайту):

   snap# vi /usr/local/gvinum.conf

Пишем в файле следующее:

   drive raid51 device /dev/ad5
   drive raid52 device /dev/ad6
   drive raid53 device /dev/ad7
   volume raid5
   plex org raid5 256k
   sd len 1t drive raid51
   sd len 1t drive raid52
   sd len 1t drive raid53

Где:

- drive raid51/raid52/raid53 - это просто псевдонимы физических дисков (можно
придумать любое). Используются чисто для удобства. С этими псевдонимами мы
будем работать во всём файле и поменяв физический диск, нам не придётся менять
его название во всём конфигурационном файле, а достаточно лишь изменить в описании.

- volume raid5 - это виртуальный диск (можно придумать тоже любое название).
Система его будет видеть как 1 физическое устройство, хотя в моем случае это
массив из 3х дисков с полезным объёмом равным ~2м терабайтам. Отображаться
будет как /dev/gvinum/raid5 (Назовёте volume terminator, отображаться будет /dev/gvinum/terminator).

- plex - это набор, который предоставляет полное адресное пространство тома.
Нам нобходим набор RAID5, поэтому организуем набор RAID5: org raid5, причем
организовываем со страйпом в 256кВ (судя документации это самый оптимальный
размер полосы).

- sd - это поддиски(SubDisk), VINUM может организовывать массивы не только из
отдельных физических дисков, но и используя разделы UNIX. Я же использую 3
отдельных физических устройства, каждый по 1 терабайту, поэтому указываем
размер: len 1t.

На этом описание конфигурационного файла закончилось. Теперь создаём сам RAID массив:

   snap# gvinum create /usr/local/gvinum.conf

Создаётся устройство /dev/gvinum/raid5. На нём необходимо создать файловую систему. Создаём:

   snap# newfs /dev/gvinum/raid5

Стандартное ядро FreeBSD(GENERIC) не включает Vinum. Можно пересобрать ядро с
поддержкой Vinum, но этого делать не рекомендуют. Обычный способ активации
Vinum - загрузка модуля для ядра (kld). Так и поступим, только использовать
команду kldload не будем, да и нет необходимости, при первом вызове gvinum
проверит наличие поддержки Vinum в ядре и при необходимости загрузит модуль
автоматически. Я сделаю так чтобы модуль Vinum был доступен на этапе загрузки,
для этого делаем так:

   snap# echo geom_vinum_load="YES" >> /boot/loader.conf

И последний момент, нужно смонтировать наш массив (Точку монтирования мы
указываем /raid5, ту, что создали изначально):

   snap# echo /dev/gvinum/raid5 /raid5 ufs rw 2 2 >> /etc/fstab

Перегружаемся и всё должно работать.

:( У меня сервер уходит в Fatal trap 12(Kernel panic) и перегружается до
бесконечности. Ничего страшного. Выключаем, ждём 5 минут и включаем, если не
получится, выключаем, ждём ещё 5 минут и включаем, в конце концов включается
всё норм! Называется размечтался... 1t = 1024G, смотрю свой диск... а там всего
953869m... В общем нужно в конфиге уменьшить размер - len! И после этого всё
замечательно работает!!!

Можно выводить диски из массива и т.д., но как-то долго... проще сбросить конфиг:

   snap# gvinum resetconfig

На что, он нас спрашивает, вы мол в своё уме? подтвердите что вы это делаете
осмысленно! И просит ввести текст "NO FUTURE", ну чтож, вводим:

   Enter text -> NO FUTURE

Я поменял в конфиге размеры дисков на:

   len 953869m

После этого, повторяем команды:

   snap# gvinum create /usr/local/gvinum.conf
   snap# newfs /dev/gvinum/raid5

Перегружаемся ещё раз...И вуаля!!! Всё работает!!!


II. GEOM:

Пробуем второй вариант. GEOM RAID5 в FreeBSD не входит, поэтому придётся
скачивать с сайта. На сайте видим, что есть 3 версии это:

- Компромисс скорости и использования памяти: geom_raid5
- Самая стабильная, но и самая медленная: geom_raid5 TNG
- Улучшенная скорость, но и памяти соответственно потребляет больше: geom_raid5 PP

Все версии доступны тут:

geom_raid5: http://wgboome.homepage.t-online.de./geom_raid5.tbz
geom_raid5 TNG: http://wgboome.homepage.t-online.de./geom_raid5-eff.tbz
geom_raid5 PP: http://wgboome.homepage.t-online.de./geom_raid5-pp.tbz

Я выбрал "geom_raid5", поэтому переходим в папку с источниками:

   snap# cd /usr/src

И скачиваем архив:

   snap# wget http://wgboome.homepage.t-online.de./geom_raid5.tbz

Архив необходимо распаковать. Действуем:

   snap# tar -xf geom_raid5.tbz

Архив распакован,переходим к процессу инсталляции. Первым делом необходимо
собрать модуль. Переходим в папку с конфигом:

   snap# cd /usr/src/sys/modules/geom/geom_raid5

И запускаем компиляцию:

   snap# make

упс... :( у меня вылезли ошибки...читаем...пробуем исправить... Для этого делаем следующее:

   snap# cd /usr/src/sys/geom/raid5

И правим в файле g_raid5.c (если у вас ошибки будут такие же как и у меня) кому
каким редактором удобнее:

1. Ошибка: в строке  2015 в функции "kthread_exit" много аргументов
       исправляем: меняем в строке 2015 kthread_exit(0); на kthread_exit();
2. Ошибка: в строке 2444 в функции "kthread_exit" много аргументов
       исправляем: меняем в строке 2444 kthread_exit(0); на kthread_exit();
3. Ошибка: в строке 2635 нету описания функции "kthread_create"
       исправляем: меняем в строке 2635 kthread_create (остальное не трогаем), на kproc_create
4. Ошибка: в строке 2639 нету описания функции "kthread_create"
       исправляем: меняем в строке 2639 kthread_create (остальное не трогаем), на kproc_create
Примечание: Ошибка 4 другая, и ссылается на строку 2635, но изменив строку 2635
необходимо изменить и 2639, так что делаем так.

После того как исправили,снова делаем компиляцию модуля:

   snap# cd /usr/src/sys/modules/geom/geom_raid5
   snap# make

Появляется нужный нам файл: "*geom_raid5.ko". Его необходимо скопировать ко всем модулям. Копируем:

   snap# cp geom_raid5.ko /boot/kernel/geom_raid5.ko

Теперь устанавливаем сам geom_raid5:

   snap# cd /usr/src/sbin/geom/class/raid5
   snap# make && make install && make clean

Собственно после инсталляции GEOM_RAID5 собираем RAID массив:

   snap# graid5 label -v -s 256k graid5 /dev/da0 /dev/da1 /dev/da2

И создаём устройство:

   snap# graid5 load

Создаётся устройство /dev/raid5/graid5. На нём необходимо создать файловую систему. Создаём:

   snap# newfs /dev/raid5/graid5
 
Создаём точку монтирования:

   snap# mkdir /graid5

Добавляем запись в /etc/fstab, для автоматического монтирования нашего массива
RAID5 при загрузке системы:

   snap# echo /dev/raid5/graid5 /graid5 ufs rw 2 2 >> /etc/fstab

Не забываем добавить загрузку модуля при старте системы:

   snap# echo 'geom_raid5_load="YES" >> /boot/loader.conf

P.S. В конечном итоге остановил свой выбор на GVINUM. В основном из-за того,
что он входит в состав FreeBSD, а разработчики, раз решили что GEOM_RAID5 ещё
рано(или уже поздно) входить в релиз, то значит так и есть. Протестировал
GVINUM на крах (отключением питания и отсоединением шлейфа от одного из дисков
в режимах чтение\запись, после этого записывал\удалял данные с битого массива,
перегружался, добавлял снова диск, восстанавливал всё работает замечательно!
...но это уже тема для другой статьи...)
 
29.07.2010 , Автор: McSeem
Ключи: raid, raid5, vinum, GEOM, freebsd, disk / Лицензия: CC-BY
Раздел:    Корень / Администратору / Система / Диски и файлы / RAID массивы

Обсуждение [ Линейный режим | Показать все | RSS ]
 
  • 1.1, m, 23:08, 28/07/2010 [ответить] [смотреть все]
  • +/
    Спасибо!
     
  • 1.2, Bocha, 06:11, 29/07/2010 [ответить] [смотреть все]
  • +/
    В общем, хорошо, конечно, что всё это во фре есть, но уж больно всё как-то через... В Линуксе, впрочем md тоже не супер просто делается. В ZFS всё как-то сильно по-проще, безо всяких подготовок дисков предварительных.
     
     
  • 2.8, arachnid, 08:25, 29/07/2010 [^] [ответить] [смотреть все] [показать ветку]
  • +/
    для zfs диск тоже лучше подготовить - и строить массив, используя метки glabel ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.17, OLD, 12:18, 29/07/2010 [^] [ответить] [смотреть все]  
  • +/
    ZFS ничего не знает про метки glabel и перезатирает их Поэтому нужно бить диски... весь текст скрыт [показать]
     
     
  • 4.21, arachnid, 16:29, 29/07/2010 [^] [ответить] [смотреть все]  
  • +/
    угу забыл развернуть мысль по любому это есть в wiki... весь текст скрыт [показать]
     
  • 3.19, Michael, 13:47, 29/07/2010 [^] [ответить] [смотреть все]  
  • +/
    как вариант - метки gpart
     
  • 1.3, CHERTS, 06:28, 29/07/2010 [ответить] [смотреть все]  
  • +/
    Полезная статья, спасибо!
     
  • 1.4, nanodaemon2, 07:10, 29/07/2010 [ответить] [смотреть все]  
  • +/
    ни фря, ни салярис пока не умеют грузиться с raidz :(
     
     
  • 2.6, arachnid, 08:20, 29/07/2010 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    откуда дровишки http wiki freebsd org RootOnZFS - вот тут написано, что умеет... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.12, nanodaemon, 10:10, 29/07/2010 [^] [ответить] [смотреть все]  
  • +/
    10ка до сих пор не умеет бутиться с raidz опен хз, может и умеет про фряху, да... весь текст скрыт [показать]
     
  • 2.31, universite, 15:59, 01/08/2010 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Фряха 100% умеет.
    Настроил в 8.1 и 9.0
     
  • 2.33, Mikula, 09:38, 03/08/2010 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Спасибо, поржал У меня как раз загрузочный pool test state ONLINE scru... весь текст скрыт [показать] [показать ветку]
     
  • 1.5, Alex, 08:19, 29/07/2010 [ответить] [смотреть все]  
  • +/
    Итого имеем, что кроме варианта с использованием выкидыша от Sun RAID5 в BSD - это фантастика, поскольку для продакшна с такими косяками не годно.
     
     
  • 2.7, arachnid, 08:23, 29/07/2010 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    вообще косяк я заметил только один - автор ошибся при указании размера диска в g... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.23, McSeem, 19:25, 29/07/2010 [^] [ответить] [смотреть все]  
  • +/
    С GVINUM вообще проблем не было никаких я когда покупал диски, покупал на тераб... весь текст скрыт [показать]
     
  • 3.25, Alex, 07:55, 30/07/2010 [^] [ответить] [смотреть все]  
  • +/
    Утилиты mdraid, к примеру, просто не дадут такого сделать, ибо это бессмысленно ... весь текст скрыт [показать]
     
     
  • 4.26, arachnid, 10:12, 30/07/2010 [^] [ответить] [смотреть все]  
  • +/
    скорее всего просто не подключит разделы - в результате результат то будет тот... весь текст скрыт [показать]
     
  • 1.9, Аноним, 09:23, 29/07/2010 [ответить] [смотреть все]  
  • +/
    т.е. корень в raid не разместить получаецца? ой, все на костылях..
     
     
  • 2.10, BlackHawk, 09:54, 29/07/2010 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    почему не получиться на geom_mirror можно, думаю и тут можно - главное правильн... весь текст скрыт [показать] [показать ветку]
     
  • 2.11, Султан, 09:54, 29/07/2010 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Корень на soft raid5? Зачем? На soft raid1 (gmirror) - запросто.
     
     
  • 3.13, Аноним, 10:20, 29/07/2010 [^] [ответить] [смотреть все]  
  • +/
    чтоб был всего один раздел ну типа того dev md0 on type ext3 rw dev sda1... весь текст скрыт [показать]
     
     
  • 4.14, BlackHawk, 10:36, 29/07/2010 [^] [ответить] [смотреть все]  
  • +/
    а зачем всего один раздел мне линухах жутко не нравится эта система создание ... весь текст скрыт [показать]
     
     
  • 5.15, Аноним, 10:57, 29/07/2010 [^] [ответить] [смотреть все]  
  • +/
    а зачем терять гигабайты дискового пространства пустыми сколько сделать var ... весь текст скрыт [показать]
     
     
  • 6.16, Oleg, 12:06, 29/07/2010 [^] [ответить] [смотреть все]  
  • +/
    Если понимаете, то почему не пользуетесь Фряха действительно прекрасно грузится... весь текст скрыт [показать]
     
  • 6.30, slepnoga, 17:39, 30/07/2010 [^] [ответить] [смотреть все]  
  • +/
    мдя, забить тебе нафек tmp для прочистки моска в линухе есть lvm - со своим... весь текст скрыт [показать]
     
     
  • 7.32, Аноним, 09:17, 02/08/2010 [^] [ответить] [смотреть все]  
  • +/
    что ты мелешь что будет быстрее забито, один монолитный раздел, или мелкий кусо... весь текст скрыт [показать]
     
     
  • 8.34, Аноним, 12:40, 04/08/2010 [^] [ответить] [смотреть все]  
  • +/
    угу, поговорим когда тебе таки напихают терабайт в tmp на твоем общем для всего... весь текст скрыт [показать]
     
     
  • 9.37, Аноним, 18:01, 04/08/2010 [^] [ответить] [смотреть все]  
  • +/
    кто из пенгвинятников мог знать, что у фри нельзя квоты в корне настроить флаг... весь текст скрыт [показать]
     
     
  • 10.38, Аноним, 18:45, 04/08/2010 [^] [ответить] [смотреть все]  
  • +/
    ну для тебя только в home - может быть в принципе и не удивительно, если ты вс... весь текст скрыт [показать]
     
     
  • 11.40, Аноним, 09:33, 05/08/2010 [^] [ответить] [смотреть все]  
  • +/
    не все в кучу вот разделы рабочего хоста dev sda1 on type ext3 rw,noatime,... весь текст скрыт [показать]
     
  • 4.18, Султан, 12:28, 29/07/2010 [^] [ответить] [смотреть все]  
  • +/
    А зачем корень raid5?
    Я говорю - на raid1 (gmirror) оно есть.
     
     
  • 5.20, Oleg, 14:11, 29/07/2010 [^] [ответить] [смотреть все]  
  • +/
    Конечно, оно есть Но у человека в условиях задачи три одинаковых диска, из кото... весь текст скрыт [показать]
     
  • 1.22, Nas_tradamus, 17:30, 29/07/2010 [ответить] [смотреть все]  
  • +/
    Спасибо!
    Вообще не знал, что бывает программный RAID 5 во Фре или Линаксе. :) Век живи - век учись...

    Но скажите, а нельзя ли при помощи GVINUM сделать ВСЮ систему на RAID5, а не только отдельную точку монтирования?

     
     
  • 2.24, Oleg, 00:30, 30/07/2010 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Нет, нельзя Загрузчик в любом случае должен располагаться на отдельном разделе,... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.27, Nas_tradamus, 11:11, 30/07/2010 [^] [ответить] [смотреть все]  
  • +/
    Спасибо.
    Эх... а в gmirror можно.
     
     
  • 4.39, Аноним, 18:48, 04/08/2010 [^] [ответить] [смотреть все]  
  • +/
    >Спасибо.
    >Эх... а в gmirror можно.

    можно

     
  • 1.28, dim, 11:23, 30/07/2010 [ответить] [смотреть все]  
  • +/
    http://old.nabble.com/graid5-after-reboot-problem-ts10327403.html
    Последний пост от Dawidek , по поводу write-hole на RAID3 и RAID5
     
     
  • 2.29, Oleg, 13:12, 30/07/2010 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Потому я и советую zfs, что она избавлена от такого рода ошибок. Сам ее использую недавно, но пока вижу только плюсы этой fs.
     
     
  • 3.41, Андрей, 14:30, 13/08/2010 [^] [ответить] [смотреть все]  
  • +/
    на фре zfs работает только модулем, с PAE нет.
     
  • 1.36, Аноним, 12:43, 04/08/2010 [ответить] [смотреть все]  
  • +/
    копировать нужно в boot modules... весь текст скрыт [показать]
     
  • 1.42, FireDex, 22:53, 26/01/2011 [ответить] [смотреть все]  
  • +/
    Есть вопрос по теме. Собрал RAID5 по этому мануалу на 3 х 2TB дисках (WDC WD20EARS). Перед установкой с дисками ничего не делал. На запись всё работает ОООЧЕНЬ медленно - около 100Кб/с, на чтение около 50Мб/с. Система: Intel E3400, GA-G31M-ES2L, 2Gb RAM. Есть идеи? Диски новые, advanced format, может их перед этим надо было как-то форматировать?
     
     
  • 2.43, OzzY, 12:03, 28/02/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    В мане по GVINUM так и написано, что RAID5 не является флагманом и не оптимален в части записи
     
     
  • 3.44, FireDex, 23:31, 28/02/2011 [^] [ответить] [смотреть все]  
  • +/
    > В мане по GVINUM так и написано, что RAID5 не является флагманом
    > и не оптимален в части записи

    Оно понятно, но не на столько же всё плохо должно быть! 80 - 100Кб - это не скорость, это издевательство.. RaidZ на тех же диских даёт 50Mb минимум.

     
  • 2.45, Павел, 13:12, 15/04/2011 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    У меня та же проблема Собрал как тут написано 5х500ГБ в raid5 Intel Dual Core ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.46, FireDex, 22:45, 15/04/2011 [^] [ответить] [смотреть все]  
  • +/
    > У меня та же проблема. Собрал как тут написано 5х500ГБ в raid5.

    Я, после недели мучений, рытья в манах, чтения форумов, просто забил и сделал raidz. Теперь со скоростью порядок.

     
  • 2.47, patzub, 21:25, 10/09/2012 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Аналогичная ситуация. Долго мучился безрезультатно... И тут сижу я значит, бездумно втыча в монитор, тыцкая по /usr/ports/ . И тут у меня чуть шары не выпали (есть ньюанс - у мя фря 9.0) /usr/ports/sysutils/graid5!!!!!!!!!!  make install clean - без ошибок! Таки добавили грейд5 в новой фре!
    Дальше всё сделал по инструкции (пропуская установку "левого" graid5), он гараздо дольше собирался, чем gvinum. Записываю файл - ВУАЛЯ!! 160 - 180 МБ/С!!!!! Чтение чуть по медленнее, но не существенно. Проверил на reset - работает. Выдернул шнурок с винта - матюгнулось типа "ада3 из даун и....", но чтение/запись проводится без проблем, после перезагрузки проверил - все данные наместе. Остался один, но ООООЧЕНЬ важный вопрос: КАК ВЕРНУТЬ ЭТОТ ВИНТ НАЗАД В РЕЙД (ТИПА ОН НОВЫЙ)? Гуру, помогите, плиз!
     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:



      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor