Установка freebsd на программный raid

Обновлено: 06.07.2024

В этой статье речь пойдёт о разметке жестких дисков, сиречь винчестеров, вручную, без помощи программы sysinstall . Необходимость в этом возникает не так уж и часто, однако все-таки возникает. Да и для общего образования полезно проделать такую операцию хотя бы раз в жизни.

Как известно, диски принято делить на разделы (partitions в терминах DOS/Windows и Linux). Но FreeBSD и тут отличается оригинальным подходом. Чтобы понять его, нужно для начала сказать

А доступная BIOS геометрия диска описывается в терминах цилиндр/головка/сектор (cylinders/heads/sectors, C/H/S). Фигурально говоря (а, повторяю, все, относящееся к дисковой геометрии, ныне следует понимать исключительно фигурально, аллегорически или метафорически), головки считывают информацию с концентрических магнитных дорожек (tracks), на которые поделена каждая дисковая пластина. Вертикальная совокупность треков с одинаковыми номерами на всех пластинах, составляющих диск как физическое устройство, и образует цилиндр. А сектора нарезают пластину, вместе с ее треками, на радиальные фрагменты, именуемые блоками. То есть это можно представить себе таким образом, что блок лежит на пересечении (в пространстве) цилиндра, трека и сектора.

Где кончается один раздел и начинается другой? Резонные люди из Одессы сказали бы, что один раздел кончается именно там, где начинается второй. Однако для нас очевидно, что для каждого из разделов следует хранить сведения о его начале и конце (то есть номера первого и последнего из задействованных в нем цилиндров). Где их хранить? Для ответа на этот вопрос следует обратиться к понятию блока.

Собственно о слайсах

Итак, следствием установлено, что на одном физическом диске может быть создано до 4 (включительно) разделов, каждый их которых может быть приписан к отдельной операционной системе. А что дальше? А дальше следует изучить вопрос стилей разметки разделов.

В записи для первого раздела можно указать идентификатор типа файловой системы (например, FAT16 или FAT32), второму же разделу автоматически присваивается идентификатор типа Extended DOS. А уж Extended-раздел может быть далее поделен на логические разделы. Впрочем, нам сейчас это не интересно, да и устройство расширенного раздела и логических разделов в нем многократно описывалось.

Конечно, в ряде случаев умолчального количества разделов, которые можно создать в одном слайсе, оказывается недостаточно. в частности, существует мнение, не лишенное резонов, что выделению в отдельные ветви подлежат еще и такие части файловой системы, как /usr/src , /usr/ports , /usr/ports/distfiles . возможно, /usr/local . В этом случае придется создавать два BSD-слайса (хотя есть сведения, что для дробного членения файловой системы можно задействовать и Extended Partition, однако сам я этого не пробовал ни разу).

Разметка слайсов

А дальше последует информация о слайсе или слайсах, на этом диске проживающих. И тут для каждого слайса мы увидим идентификатор типа файловой системы, его размер (в блоках и мегабайтах), флаг активности (если таковой имеет место быть), данные о начале и конце (номер цилиндра/головки/сектора). Если на диске существует менее четырех слайсов, несуществующие (то есть соответствующие незаполненным записям таблицы разделов) будут помечены как UNUSED. Та же пометка будет на слайсах 2-4 при диске, размеченном в эксклюзивном режиме.

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

предоставит их для диска, подключенного к разъему IDE-RAID контроллера. Сведения эти могут показаться избыточными. Однако с помощью fdisk можно вывести и более краткую (и при этом только существенную) информацию. Чему послужит опция -s . В ответ на команду

Все сказанное преследовало своей целью только получение информации. Чтобы с помощью fdisk осуществить какие-либо активные действия по разметке диска, необходимо ознакомиться с другими ее опциями. Их не так много, и важнейшей, пожалуй, является опция -I . Включенная в команду

Зато много вопросов последует при использовании опции -i , которая позволяет выполнить разметку диска в интерактивном режиме. Данная с именем файла устройства в качестве аргумента, то есть в форме

Первейшее развлечение после исправления геометрии (или вместо нее) в команде

Подтвердив свои действия положительным ответом на вопрос

можно перейти к созданию второго раздела

А добавив в ней еще и опцию -t , можно предварительно протестировать правильность своей разметки, не записывая изменений на диск. Впрочем, сам я этого не проделывал, оставляя желающим для самостоятельных упражнений: все необходимые сведения, в том числе и формат config-файла, можно почерпнуть в man (8) fdisk .

Разметка разделов

имеющие равные (27348) значения.

Если на этом слайсе не планируется размещать корневую файловую систему, для создания единственной партиции достаточно будет дописать (самыми обычными редакторскими средствами) строку вида

для диска, размеченного в режиме совместимости.

При следующем вызове bsdlabel для того же слайса, но без опций картина окажется следующей:

3 комментария к “ FreeBSD: ручная разметка диска ”

> d: 254787 0 4.2BSD
> в случае “эксклюзивного” диска, или
с этим согласен

> d: 254787 63 4.2BSD
> для диска, размеченного в режиме совместимости
не совсем. В режиме совместимости будет создан слайс /dev/da0s1 с характеристиками
Part Start Size Type Flags
1: 63 254724 0xa5 0x80
для которого информация bsdlabel (смещение указывается относительно начала слайса а не диска) будет выглядеть
c: 254724 0 unused 0 0
если не прав поправьте :-)

Спасибо за статью, пишите вы всегда хорошо и интересно!

Проверить иноды, вместо размера:
ls -il /sbin/bsdlabel /sbin/disklabel

Для теста мне понадобилось оперативно работать с Freebsd 10: создавать машины, сохранять конфигурации, быстро откатываться назад. Раньше я использовал для этого Vmware Workstation. Но это десктопный вариант. Для увеличения быстродействия я решил воспользоваться сервером с HyperV.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на . Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Я был приятно удивлен, когда узнал, что в Freebsd 10 x64 по умолчанию в ядре Generic включена поддержка HyperV. То есть Freebsd 10 оптимизирована на работу под HyperV. Корректно работает управление виртуальной машиной из консоли hyperv, а значит машинами можно управлять через скрипты PS. Работает синхронизация времени гостевой машины с хостом. Работает поддержка виртуальных шин IDE и SCSI. Включена поддержка сетевого драйвера hyperv, максимальный порог производительности сети теперь не ограничен 100 мегабитами.

То есть вариант вполне рабочий, Freebsd 10 x64 полностью поддерживает виртуализацию hyperv. Хочу отметить, что речь именно о 64 битной системе. В i386 поддержку по-умолчанию не включили. Нужно будет отдельно подгружать модули ядра и устанавливать драйвера. Подробнее об этом рассказано здесь.

Приступаем к установке. Запускаем оснастку HyperV, выбираем "Создать" -> "Виртуальная машина":

Hyper-V создание виртуальной машины

Пишем название машины:

Название виртуальной машины

Выбираем Поколение 1, 2-е Freebsd не поддерживает:

Выбор поколения в hyper-v

Указываем количество выделяемой памяти:

Установка памяти в hyper-v

Выбираем сетевое подключение:

Выбор адаптера в hyper-v

Создаем виртуальный жесткий диск:

Подключение жесткого диска к виртуальной машине

Указываем путь к образу, откуда будет производиться установка:

Подключение iso образа к виртуальной машине

Проверяем введенные данные:

Информация о новой виртуальной машине

И нажимаем "Готово". Начнется стандартная установка Freebsd, как будто вы ставите на отдельный компьютер. Подробнее об установке и дальнейшей настройке можно прочитать в цикле моих статей на эту тему ( 1, 2, 3 части ).

Управлять созданной виртуальной машиной Freebsd 10 можно как и любой другой. Поддерживается корректное завершение работы командами из консоли управления.

Добрый день.
Есть сервер с обычным встроенным "недораидом" и цель собрать таки на нем раид.

Ставлю FreeBsd 10 с программным Raid5. 3 винта по 500 Гб.
Делаю так:
В биосе - ACHI mode
В момент установки когда доходим до разметки диска выхожу в шелл.
Т.к. поначалу пытался делать средствами биосовского раида то чищу все метаданные на дисках:

В результате весь получился массив в статусе SUBOPTIMAL, а все винты в статусе ACTIVE (UNINITIALIZED).
Ок, думаю. Надо теперь как-то его инициализировать. Тыкался тыкался, не справился. Оставил сервак до вечера - отвлекся на какие-то дела. Вечером просто кнопкой питания вырубил.
Утром запускаю, вижу что ada0 и ada2 - в статусе ACTIVE(ACTIVE), ada1 вообще отсутствует в массиве. В выводе

Я так понял, он все-таки как-то строился в фоновом режиме, а я его прервал.

Как запустить ребилд я так и не догнал снова, поэтому оставил его на ночь. Ничего не изменилось.

Что я делаю не дак? Каковы дальнейшие действия? Спасибо.

Последний раз редактировалось f_andrey 2014-05-13 17:12:16, всего редактировалось 1 раз.
Причина: Автору. пожалуйста, выбирайте соответствующий раздел форума. По моим наблюдениям destroy не разрушает мета данные, я после него обычно dd запускаю, банально забиваю нулями. Хм.. так что, ребилд не идет из-за того что остались метаданные? saska писал(а): Хм.. так что, ребилд не идет из-за того что остались метаданные?

rebuild похоже идет, только это raid5 и нужно время, а не 5 минут как думает топикастер,
вероятно ни разу не создавал RAID'ы 3,5,6. и не rebuild'ил после degrade.
Особенно если диски по 300GB и более.

метаданные хранятся в последнем секторе провайдера и полный dd тут ни к чему,
достаточно указать skip и count, но нужно понимать ЧТО ВЫСТУПАЛО в качестве geom провайдера.

Все что нужно есть man'ах.

ps. gpart создает и удаляет таблицу GPT и к метаданным GEOM отношения не имеет.

а как можно посмотреть состояние ребилда, и вообще что в данный момент происходит с дисками в raid? graid list и status ничего о ребилде не пишут. saska писал(а): а как можно посмотреть состояние ребилда, и вообще что в данный момент происходит с дисками в raid? graid list и status ничего о ребилде не пишут.

sorry, речь идет о graid, а не о graid5!

Боюсь graid Вам не поможет в создании и управлении RAID5 и ряда других.

graid - это в свежих системах замена ataraid, работы с fake-raid'ами.
И этим все сказано, а именно:

Из верхнего следует что ПОЛНОСТЬЮ реализованы следующие уровни RAID:
RAID0, RAID1, RAID1E, SINGLE, CONCAT.
А вот уровни: RAID4, RAID5, RAID5E, RAID5EE, RAID5R, RAID6, RAIDMDF
- поддерживаются только READ-ONLY

Что означает, эти уровни RAID - НЕуправляемые, значит могут быть созданы только из BIOS'а
fake-raid, там же сформированы-собраны (building/rebuilding), и только после этого graid может
распознать метаданные данных рейдов и работать с ними. Вот в чем смысл read-only поддерживаемых
уровней рейдов.

Вывод: если Вы _счастливый_ обладатель fake-raid'а поддерживающего:
- RAID5/E/EE
конфигурить, создавать, билдить и ребилдить такой рейд можно только из его BIOS.

Если Вы хотите использовать softraid для создания и работы с RAID5 -> либо использовать graid5, либо zfs.

Я проделал это, установив систему на отдельный слайс с одним-единственным разделом в 512 Мбайт. Этого как раз хватает, если при заказной установке в пункте Distributions выбрасть Minimal, а затем через Custom добавить к этому минимуму man-страницы (дабы не остаться с ccd один на один). В дальнейшем предполагалось, что разделы /var, /usr, /home и так далее будут вынесены на конкатенированный массив, Кроме того, на каждом из дисков я создал по swap-разделу, равному объему памяти (что в сумме и дало рекомендуемый удвоенный ее объем).

Далее, вооружившись bsdlabel, запускаемой с опцией -e, калькулятором командной строки bc и, конечно же, man (8) bsdlabel, я на первом (/dev/ad0s1) диске, в дополнение к имевшимся

a: 524288 0 4.2BSD 2048 16384 32776
b: 2074624 524288 swap
c: 156301488 0 unused 0 0

d: 524288 2598912 4.2BSD 0 0 0
e: 10240000 3123200 4.2BSD 0 0 0
f: 142938288 13363200 4.2BSD 0 0 0

После этого я обратился ко второму диску (/dev/ar0s1), на котором создал парные к первому разделы под swap (1024 Мбайт), /var, /usr и /home (того же размера), что в итоге дало:

$ ccdconfig ccd0 128 none /dev/ad0s1d /dev/ar0s1d
$ ccdconfig ccd1 128 none /dev/ad0s1e /dev/ar0s1e
$ ccdconfig ccd1 128 none /dev/ad0s1f /dev/ar0s1f

После чего запустить ту же утилиту конфигурации следующим образом:

после чего они безболезненно переконфигурируются заново.
Завершающие штрихи

Итак, для начала размечаем созданные массивы:

$ bsdlabel -w /dev/ccd0 auto
$ bsdlabel -w /dev/ccd1 auto
$ bsdlabel -w /dev/ccd2 auto

Что даст нам на каждом из них по партиции c, к использованию непригодной. И потому повторяем процедуру в ручном режиме:

$ newfs /dev/ccd0d
$ newfs /dev/ccd1d
$ newfs /dev/ccd2d

Со старым каталогом /var это проходит без проблем: монтируем предназначенный для него ccd-раздел в какую-нибудь специально созданную точку (например, /tmp/var)

$ mount /dev/ccd0d /tmp/var

и просто перемещаем все содержимое:

С каталогом /usr поступаем также:

$ mount /dev/ccd1d /tmp/usr
$ mv /usr* /tmp/usr

Тем или иным образом перенеся содержимое старых каталогов в новые, конкатенированные, файловые системы, остается только прописать их в /etc/fstab примерно таким образом:

/dev/ccd0e /var ufs rw,noatime
/dev/ccd1e /usr ufs rw,noatime
/dev/ccd2e /home ufs rw,noatime

Таблица 2. Удаление
FS+Mode Data Ports
UFS,default 7 92
UFS,ccd 5 34
UFS,ccd 5 34

freebsd_softraid2

Рис. 2. Удаление

Таким образом, на типично пользовательских задачах использование программного RAID со стриппингом (по крайней мере, в исполнении ccd) дает вполне реальный (а иногда и просто значительный) прирост в быстродействии файловых операций. А поскольку нынче редкая мама не оснащается дополнительным IDE-контроллером, появляется возможность разнести винчестеры на отдельные линии (даже без задействования аппаратного ATA RAID), что должно еще более улучшить результаты.

Читайте также: