Настройка программного RAID5 во FreeBSD

internal-hard-drivesFreeBSD поддерживает организацию RAID5 двумя менеджерами дискового пространства: VINUM и GEOM.

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

I. VINUM.

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

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

# mkdir /raid5

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

# touch /usr/local/gvinum.conf

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

# 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 массив:

# gvinum create /usr/local/gvinum.conf

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

# newfs /dev/gvinum/raid5

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

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

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

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

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

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

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

# gvinum resetconfig

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

 Enter text -> NO FUTURE

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

 len 953869m

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

# 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», поэтому переходим в папку с источниками:

# cd /usr/src

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

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

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

# tar -xf geom_raid5.tbz

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

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

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

# make

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

# 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, так что делаем так.

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

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

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

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

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

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

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

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

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

# graid5 load

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

# newfs /dev/raid5/graid5

Создаём точку монтирования:

# mkdir /graid5

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

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

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

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

Источник


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Unlix © Все права защищены 2019

Копирование материалов с сайта Unlix.ru без указания полной ссылки на источник ЗАПРЕЩЕНО!