У меня есть файловый сервер 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 помещаются туда, не беспокоя файловую систему.
Лично еще не пробовал.
Источники: