Категорії
FreeBSD Solaris

Boot Environment

Если кратко, то Boot Envirement (BE) – это отдельная среда внутри существующей ОС. То есть по сути это ещё одна полноценная копия ОС, но уже может содержать свой набор ПО, свои настройки и т.д.

Про FreeBSD будет сказано отдельно, в самом низу.

Тестовый стенд: Solaris 11

1) Введение.

В документации написано так:

boot environment is a bootable Oracle Solaris environment consisting of a root dataset and, optionally, other datasets mounted underneath it. Exactly one boot environment can be active at a time.

Если перевести, то получим такое: BE – Это загрузочная среда, которая содержит кореневой dataset и возможно другие dataset’ы находящиеся ниже его.

Только что созданный BE занимает очень мало места. По мере того, как в него вносятся изменения, он будет увеличиваться в размерах. BE – по сути это клон системы на определённый момент. Далее эти 2 системы живут своими жизнями. Их можно сравнить со snapshot’ами в VMware.

Для администрирования служит утилита beadm, которая позволяет выполнять различные действия: просмотр, создание, удаление.

Ограничения:

  • Утилита beadm работает только в zfs
  • beadm может управлять только снимками, сделанными непосредственно через beadm. Если снимок сделан через zfs утилиты, то beadm не сможет им управлять

2) Просмотр BE

Что бы посмотреть список BE используем команду beadm list

# beadm list
BE               Active Mountpoint Space   Policy Created
--               ------ ---------- -----   ------ -------
solaris          NR     /          4.40G   static 2011-11-09 19:27
solaris-backup-1 -      -          148.0K  static 2011-12-06 18:53

Как видим, у нас есть 2 BE. Возможные значения столбца Active:

  • R – активен после ребута.
  • N – сейчас активен.
  • NR – активен сейчас и после ребута.
  • “-” – неактивен.
  • “!” – незагрузочный BE в неглобальной зоне .

Для просмотра списка доступных снапшотов, используем такую команду:

# beadm list -s
BE/Snapshot                    Space   Policy Created
-----------                    -----   ------ -------
solaris
   solaris@2011-12-06-16:53:17 129.89M static 2011-12-06 18:53
   solaris@2011-12-25-20:46:09 57.13M  static 2011-12-25 22:46
   solaris@install             9.57M   static 2011-11-09 19:33
solaris-backup-1

Напомним, что

снапшот (snaphot) – это образ BE или datase’a в определённый момент и определённой точки монтирования, который доступен только для чтения. Снапшот не является загрузочным, но с него можно сделать загрузочный BE

Рассмотрим ещё такое понятие, как клон.

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

Ну и напоследок определим, что же такое dataset

dataset – общее название ZFS-содержимых элементов, таких как клоны, снапшоты, файловые системы

3) Создание BE.

Используем команду:

#beadm create <bename>[@snapshot] [-p pool] [-a]

где -a означает активировать только что созданный BE. По умолчанию BE создаётся на текущем пуле. Если хотите создать на другом – укажите параметр ‘-p’.

Что бы активировать новое BE (если вы этого не сделали в момент создания):

#beadm activate <bename>

Кстати, смею заметить, что все имеющееся BE отображаются так же и в меню загрузчика. То есть если вы хотите загрузится в новый BE – можно либо его активировать, либо выбрать в меню загрузчика.

А есть ещё один способ загрузки в новый BE без изменений:

#reboot -- 'rpool/zfsbe2'

где, rpool/zfsbe2 – нужный BE.

или так, с указанием нужного BE:

#reboot -e <bename>

Но для KZ (kernel zone) такое не работает. Зато там есть другой способ.

4) Зоны

Так же приятной новостью будет узнать, что BE можно создавать и для неглобальных зон (начиная с релиза 11/11), но с некоторыми ограничениями, а так же с некоторыми неожиданностями. К примеру, в глобальной зоне нельзя посмотреть доступные BE неглобальных зон. Зато в неглобальных зонах можно увидеть BE глобальной, но все, кроме активного будут отображаться с именами <rootBEname>-N, где N-номер.

Для KZ немного по-другому. Для выбора необходимого BE для загрузки есть команда:

# zoneadm -z kzone2 boot -- -L
[Connected to zone 'kzone2' console]
1 kz-130118 (rpool/ROOT/kz-130118)
2 kz-1 (rpool/ROOT/kz-1)
3 solaris-5 (rpool/ROOT/solaris-5)
4 solaris-7 (rpool/ROOT/solaris-7)
Select environment to boot: [ 1 - 4 ]:

Или так, если знаем необходимый BE

#zoneadm -z zonename boot -- -Z BE <bename>

5) Разное.

BE можно смонтировать и работать как с обычной ФС. Для этого применяется команда

#beadm mount <bename> <mountpoint>

В команде pkg существует ключ -R, который можно использовать для установки в другой корень, то есть по сути в нужный нам BE.

В качестве BE можна также указівать и zfs. Пример

#zoneadm -z kzone1 boot -- -Z rpool/ROOT/solaris-backup-1

FreeBSD

Во FreeBSD beadm присутствует в качестве порта (/usr/ports/sysutils/beadm). Принципиально настройкой ничем не отличается от Solaris. Вот здесь неплохо подготовили инструкцию.

Только учтите, что используется он на ZFS root only системах.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Домашняя страничка Andy
Записки молодого админа
Самостоятельная подготовка к Cisco CCNA
Самостоятельная подготовка к Cisco CCNP
Powered by Muff