Назад | Перейти на главную страницу

Загрузка FreeBSD из всего дискового пула ZFS?

У меня есть файловый сервер FreeBSD, настроенный с одним пулом ZFS, созданным из целых дисковых устройств. То есть пул создавался так:

zpool create pool0 raidz ada0 ada1 ada2

Это означает, что диски имеют метки дисков ZFS, а не метки дисков FreeBSD. Это рекомендуемый способ использования дисков с ZFS:

ZFS может использовать отдельные срезы или разделы, хотя рекомендуемый режим работы - использовать целые диски. [ из zpool(1M)]

Форматирование дисков таким образом максимизирует переносимость файловой системы между различными реализациями ZFS. К сожалению, значит некуда поставить freebsd-boot раздел, содержащий загрузчик FreeBSD ... или, по крайней мере, я считать вот что это значит, но я ищу подтверждения.

В настоящее время система загружается с CF-карты, содержащей встроенный загрузчик (а также /boot каталог, хотя он вполне может жить в ZFS). Это работает нормально, но мне любопытно - есть ли способ установить встроенный загрузчик на диски с меткой ZFS?

РЕДАКТИРОВАТЬ: Я сам пытался на это ответить. Я подумал, может быть, я смогу неразрушающим образом применить метку GPT к дискам ZFS, а затем попытаться внедрить загрузочный код - но, хотя метка GPT не вызвала проблем с ZFS, ZFS, похоже, каким-то образом попадает на метку. Итак, вот разные вопрос: поддерживает ли OpenSolaris метки дисков GPT? Конечная цель здесь - создать пул дисков, который будет работать как под FreeBSD, так и под OpenSolaris, при этом имея возможность загружаться с него во FreeBSD.

Что ж, похоже, что ответ - «ты не можешь этого сделать».

Остальная часть этого ответа предназначена для всех, кто случайно натолкнется на эту запись и кому интересно, как она настроена:

У меня есть код загрузки на CF-карте, а все остальное (также известное как /boot каталог) на ZFS. CF-карта разбита на разделы следующим образом:

# gpart show ad0
=>     34  7847213  ad0  GPT  (3.7G)
       34      128    1  freebsd-boot  (64K)
      162  7847085       - free -  (3.7G)

Я установил такой загрузочный код:

gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ad0

И установите соответствующий bootfs свойство в моем пуле ZFS:

zpool set bootfs=pool0/sys/freebsd pool0

куда pool0/sys/freebsd это моя корневая файловая система FreeBSD (и содержит, среди прочего, /boot каталог).

Похоже, что можно загрузиться из пула ZFS, созданного с полнодисковых устройств.

Просто установите zfsboot согласно странице руководства zfsboot:

zfsboot обычно устанавливается с помощью dd (1). Чтобы установить zfsboot на диск ada0:

 dd if=/boot/zfsboot of=/dev/ada0 count=1
 dd if=/boot/zfsboot of=/dev/ada0 iseek=1 oseek=1024

Раздел 1.4: Загрузочный блок спецификации ZFS говорит, что 3,5 МБ зарезервированного пространства находится в этой позиции. Это объясняет, почему 64 КБ zfsboot помещаются туда, не беспокоя файловую систему.

Лично еще не пробовал.

Источники: