How to use BEADM utility

Название

beadm - управляет загрузочными разделами (Boot Environments) ZFS

Формат команды

beadm create [-a] [-d description] [-e non-activeBeFmri | BeFmri@snapshot] [-o property=value] ... BeFmri
beadm create BeFmri@snapshot
beadm destroy [-fF] {BeFmri | BeFmriPattern}... | BeFmri@snapshot ... beadm destroy [-fF] -O

Описание

Команда beadm - это пользовательский интерфейс для управления ZFS Boot Environments (BEs). Эта утилита предназначена для работы системных администраторов, которые хотят управлять несколькими экземплярами Oracle Solaris на одной системе. Пользователи определяют несколько BE, управляемые BeFmris. Более подробная информация про BeFmris приводится здесь: fmri(7) man page.

С помощью beadm Выможете делать следующее:

  • Создавать новый BE на основе активного BE.

  • Создавать новый BE на основе неактивного BE.

  • Создавать снапшот (слепок) существующего BE.

  • Создавать новый BE на основе существующего снапшота.

  • Активироать существующий неактивный BE.

  • Монтировать BE.

  • Размонтировать BE.

  • Удалять BE.

  • Удалять снапшот BE.

  • Переименовывать существующий неактивный BE.

  • Устанавливать атрибут policy на набор из нескольких BE.

  • Получать информацию о снапшотах, наборах данных (datasets) неглобальных зонах BE.

Подкоманды

У команды beadm имеются подкомандыи опции, которые приводятся ниже. Как пользоваться многими из них можно посмотреть в разделе EXAMPLES ниже.

  • beadm (без аргументов)

Выводит справку, как пользоваться командой.

  • beadm create [–a] [–d description] [–e non-activeBeFmri | BeFmri@snapshot] [–o property=value] ... BeFmri

Создаёт новый BE с именем BeFmri. Если опция –e не указывается, то новый BE будет создан как клон текущего работающего BE. Если указана опция –d, то description будет использоваться в качестве названия точки входа нового BE в меню GRUB (для систем x86) или в загрузочном меню (для систем SPARC). Если опция –d не указывается, то в качестве названия используется BeFmri. Также опция –e не может применяться к незагружаемым BE и снапшотам незагружаемых BE.

–a

Активирует вновь соданный BE в процессе создания. По умолчанию новый BE не активируется.

–d description

Создаёт новый BE с этим описанием.

–e non-activeBeFmri

Создаёт новый BE из существующего неактивного BE, который находится в этом жеzpool , что и новый BE. Копирование BE между пулами запрещено. В BE зоны эта опция может применяться только к загружаемым BE.

–e beFmri@snapshot

Создаёт новый BE из существующего снапшота BE с именем beFmri. Эта опция в BE зоны может применяться только к снапшотам загружаемых BE.

–o property=value

Создаёт наборы данных для нового BE с указанными пропертями ZFS. Можно указывать несколько опций –o. Более подробно об этой опции написано в zfs(8).

  • beadm create BeFmri@snapshot

Создаёт снапшот из существующего BE с именем beFmri. В BE зоны применяется только к загружаемым BE.

  • beadm destroy [–fF] {BeFmri | BeFmriPattern} ... | BeFmri@snapshot ...

Удаляет один или несколько BE или снапшотов существующих BE в соответствии с BeFmri или BeFmriPattern.

BeFmriPattern позволяет включать символы ? или *, как glob(3C)-style wildcards в имени BE или поле zbe-name BeFmri, что соответствует одному или нескольким BE. Символы ? и * не допускаются в поле zpool и zonename BeFmri.

Note : При удалении BE все снапшоты этого BE тоже будут удалены. Поэтому будьте внимательны.

При выполнении из глобальной зоны, если BeFmri или BeFmriPattern ссылаются на BE неглобальной зоны, могут быть удалены только BE неглобальной зоны, которые не помечены как активные при перезагрузке.

При выполнении внутри BE зоны могут быть удалены только загружаемые BE или незагружаемые, но не помеченные как активные при перезагрузке.

–f

Принудительно размонтирует BE, если он в настоящий момент смонтирован.

–F

Выполяется без запроса подтверждения на удаление BE.

–O

Удаляет все BE, потерянные (оставшиеся без родительских) BE. Ей можно пользоваться только внутри зон Solaris.

  • beadm list [[[–a | –ds] [–Z]] | [–o attr[,attr]...]...] [–H] [{BeFmri| BeFmriPattern}...]

Выводит инфоормацию о существующих BE, соответствующих указааным BeFmri или BeFmriPattern. Если же BeFmri или BeFmriPattern не указаны, то выводится инфоормация обо всех BE в пуле текущего BE. Для вывода информации о BE, не принадлежащих пулам текущего BE, нужно указать BeFmriPattern be://<zpool_name>/*.

При выводе списка поле Flags показывает, активен ли BE в настоящий момент (N), будет ли он активен при перезагрузке (R) или и то, и другое (NR). Незагружаемые BE глобальной зоны помечаются восклицательным знаком (!). В таких BE версия поддерживаемого пула ZFS меньше, чем версия загрузочного пула. Незагружаемые BE внутри зоны BE также помечаются восклицательным знаком (!). В таких зонах флаг ! означает, что загрузочные артифакты BE находятся вне загрузочного пула, и т.о. BE НЕ МОЖЕТ быть загружен непосредственно. (Для перемещения загрузочных артифактов в загрузочный пул BE или активируйте BE подкомандой activate, или измените политику BE на noevict при помощи подкоманды set-policy). BE зоны, не имеющие соответствующих BE глобальной зоны, помечаются символом (O), что означает, что у них нет родительского BE.

–a

Выводит всю имеющуюся информацию о BE, включая подчинённые файловые системы и снапшоты.

–d

Выводит информацию обо всех подчинённых файловых системах, принадлежащих BE.

–s

Выводит информацию о снапшотах BE.

–Z

Выводит все BE зоны, ассоциированные с BE глобальной зоны. Эта опция может применяться только из глобальной зоны.

–o attr

Выводит указанные атрибуты, отсортированные по значению первого из перечисленных атрибутов. Опция –o может быть указана несколько раз, или в одной опции можно указать несколько атрибутов, разделяемых запятыми.

Опция –o может быть использована без параметров для вывода атрибутов в табличном виде. Её можно использовать вместе с опцией –H для получения вывода с ; в качестве разделителя.

Если у атрибута есть несколько значений, а опция –H не указана, тогда каждое значение будет выведено в отдельной строке в соответствующей колонке. Если одновременно будут выводиться атрибуты с множественными и единственными значениями, то атрибуты с единственным значением будут выводится один раз в соответствующей колонке.

Если при выводе атрибутов с множественными значениями указаны обе опции - –o и –H, то множественные значения упаковываются в одну строку с : в качестве разделителя.

Можно указывать атрибуты из списка, приведённого ниже (имена атрибутов чувствительны к регистру).

created

Дата создания BE.

datasets

Выводит все подчинённые файловые системы BE. Этот атрибут может иметь множественные значения.

flags

Выводит информацию, как описано выше для поля Flags.

fmri

FMRI этого BE.

mountpoint

Точка монтирования BE, если он смонтирован. Если BE не смонтирован, то поле остаётся пустым.

name

Имя BE.

ngz_bes

FMRI всех BE неглобальной зоны, ассоциированных с BE глобальной зоны. Это поле используется только с BE глобальной зоны. Для BE неглобальной зоны оно будет пустым. Этот атрибут может иметь множественные значения.

parent_fmri

FMRI родительского BE для BE неглобальной зоны. Это поле используется только с BE неглобальной зоны. Для BE глобальной зоны оно будет пустым.

parent_uuid

UUID родительского BE для BE неглобальной зоны. Это поле используется только с BE неглобальной зоны. Для BE глобальной зоны оно будет пустым.

policy

Политика BE.

pool_version

Максимальная поддерживаемая BE версия пула, если известна. Если неизвестна, выводится (-). Проперти pool_version очищается, когда BE монтируется для четния/записи, и обновляется, когда BE размонтируется, т.е. когда любой неактивный BE монтируется для чтения/записи, её значение неопределено.

root_dataset

Имя файловой системы ZFS корневого набора данных BE.

snapshots

Выводит снапшоты ZFS, принадлежащие BE. Этот атрибут может иметь множественные значения.

space

Общий размер BE.

uuid

UUID BE. Это поле может быть пустым для BE неглобальной зоны.

zpool

Имя пула, в котором находится BE.

–H

Запрашивает форматный вывод. Формат вывода - список строк с полями, разделёнными ;. Поле размера отображается в байтах, а поле даты создания отображается в формате UTC.

Без опций выводится одна строка со следующими полями для каждого BE. При запуске в глобальной зоне поле uuid - это uuid BE, если есть. Это поле будет пустым, если значение отсутствует. При запуске в неглобальной зоне поле uuid представляет uuid ассоциированного родительского BE.

Если указаны опции –a, –d, или –s, одна или несколько следующих строк выводится для каждого BE. fs_name в этом случае или имя файловой системы ZFS, или имя снапшота ZFS, в зависимости от того, указана опция –d или –s.

Если указана опция –Z, для каждого BE неглобальной зоны выводится одна или несколько строк следующего формата. be-name - имя BE глобальной зоны, ассоциированного с BE неглобальной зоны. Все остальные поля - атрибуты BE неглобальной зоны.

Если указана опция –o, значения указанных атрибутов выводятся как строка с полями, разделёнными ;.

  • beadm list –z zonename [–z zonename]... [[–a | –ds] | [–o attr[,attr]...]...] [–H]

Выводит информацию обо всех BE зоны в указанных зонах. Эта команда работает только из глобальлной зоны. Указанное имя zonename должно быть определно в текущем глобальном BE.

–a

Выводит всю доступную информацию о каждом BE зоны, включая подчинённые файловые системы и снапшоты.

–d

Выводит информацию обо всех подчинённых файловых системах, принадлежащих каждому BE зоны.

–s

Выводит информацию о снапшотах каждого BE зоны.

–o attr

Выводит информацию об указанных атрибутах каждого BE зоны, отсортированную по значению первого выводимого атрибута. Опция –o может быть указана несколько раз, или в одной опции можно указать несколько атрибутов, разделяемых запятыми. Список допустимых имён атрибутов был приведён выше.

–H

Не выводит заголовок. Каждое поле в списке оделяется ;.

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

Если указаны опции –a, –d, или –s, одна или несколько следующих строк выводится для каждого BE зоны:

Если указана опция –o, указанные атрибуты выводятся в виде строк с полями, разделяемыми ;.

–z zonename

Выводит все BE в указанной зоне. Для вывода BE из нескольких зон укажите опцию –z несколько раз.

  • beadm mount [–b] BeFmri mountpoint

Монтирует BE с именем BeFmri в mountpoint. mountpoint должна быть существующая пустая директория.

Если в командную строку включён аргумент –b, и если есть активный загрузочный набор данных, ассоциированный с указанным BE, этот загрузочный набор данных будет смонтирован в <mountpoint>/bootpool_data. Эта директория создаётся автоматически при монтировании набора данных и автоматически удаляется при размонтировании BE подкомандой beadm unmount.

Note : при размонтировании BE другим способом эта директория не НЕ очищается.

  • beadm unmount [–f] BeFmri

Размонтирует BE с именем BeFmri.

–f

Размонтирует BE принудительно, даже если он занят в текущий момент.

  • beadm rename BeFmri newBeFmri

Переименовывает BE с именем BeFmri в newBeFmri. Для BE зоны можно переименовать только загружаемые BE.

  • beadm set-policy {–n [-]policy [–n [-]policy2] ...} BeFmri [BeFmri2] ...

Устанавливает (или стирает) указанный набор политик для указанного списка BE. Допускается множественный аргумент –n. Строка политики, следующая за –n, может начинаться с дефиса. Если она начинается с дефиса, то эта политика удаляется с указанных BE. Текущий набор поддерживаемых политик:

static

BE, ассоциированный с корневым пулом, управляется вручную, а соответствующий загрузочный набор данных (dataset) в загрузочном пуле управляется системой (если существует активный загрузочный пул).

auto

Если ассоциированный BE создан сервисом автоматического обновления системы svc:/system/auto-update:default, то он будет автоматически удаляться экземпляром svc:/system/auto-update:cleanup в соответствии с проперти config/keep.

Для отключения автоматически обновляемого BE от автоматического удаления и для его сохранения и управления вручную, установите политику static.

Политику auto нельзя установить при помощи beadm, он устанавливается только при создании BE сервисом автоматического обновления.

noevict

Работает для корневого набора данных пула BE так же, как и политика static, но соответствующий загрузочный набор данных в загрузочном пуле (если существует активный загрузочный пул) создаётся (если его ещё нет) и никогда не удаляется, даже если нехватка доступного пространства в загрузочном пуле не позволяет перенести соответствующий загрузочный набор данных другого BE в загрузочный пул.

NOTE : Размер загрузочного пула не может превышать 85% от максимально доступного места для сохранения максимальной производительности системы.

  • beadm activate BeFmri

Делает BE с именем BeFmri активным при следующей перезагрузке. В BE зоны только загружаемые BE могут быть активированы.

Поддержка BE зоны

beadm поддерживает концепцию BE зоны, в частности, в том, что касается BE для неглобальных зон. beadm может управлять BE зоны из BE глобальной зоны или изнутри неглобальной зоны.

Все команды beadm можно использовать для управления BE зоны. BE зоны должен быть определён из глобальной зоны с BE FMRI, где указаны оба - имя зоны и имя BE зоны.

Функции beadm в неглобальной зоне работают так же, как и в глобальной зоне, за несколькими исключениями. Есть различие в определении, загружаемый или незагружаемый данный BE (или снапшот BE). BE зоны является загружаемым, если он ассоциирован (т.е. разделяет тот же родительский id, что и UUID BE глобальной зоны) с активным в настоящий момент BE глобальной зоны. В противном случае он считается незагружаемым и помечается знаком '!' в колонке active команды beadm list.

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

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

  • Нельзя сделать активным незагружаемый BE.

  • Нельзя сделать снапшот незагружаемого BE.

  • Нельзя использовать beadm create с опцией –e применительно к незагружаемому BE или снапшоту BE.

  • Нельзя переименовывать незагружаемый BE.

Примеры

Пример 1 Создание нового BE с использованием активного BE

Нижеследующая команда создаёт новый BE BE1 клонированием текущего BE.

Пример 2 Создание нового BE с использованием неактивного BE

Нижеследующая команда создаёт новый BE BE2 клонированием существующего неактивного BE с именем BE1.

Пример 3 Создание снапшота существующего BE

Эта команда создаёт снапшот с именем now из существующего BE с именем BE1.

Пример 4 Клонирование снапшота для создания нового BE

Нижеследующая команда создаёт новый BE BE3 клонированием существующего снапшота BE1.

Пример 5 Создание нового BE зоны

Следующая команда создаёт новый BE зоны с именем ZBE1 из запущенного в настоящий момент BE зоны для зоны zone1.

Пример 6 Создание нового BE с подключением сжатия

Следующая команда создаёт новый BE BE5 из запущенного в настоящий момент BE. Команда создаёт новые наборы данных BE со включенным сжатием.

Пример 7 Создание нового BE с описанием

Эта команда создаёт новый BE BE6из запущенного в настоящий момент BE и добавляет его описание.

Example 8 Активирование BE

Эта команда активирует существующий неактивный BE BE3.

Пример 9 Монтирование BE

Следующая команда монтирует BE BE3 в папку /mnt.

Пример 10 Размонтирование BE

Следующая команда монтирует BE BE3.

Пример 11 Удаление BE

Следующая команда удаляет BE BE3 без запроса подтверждения.

Пример 12 Удаление снапшота

Следующая команда удаляет снапшот BE1 с именем now.

Пример 13 Переименование BE

Эта команда переименует существующий неактивный BE BE1 в BE3.

Пример 14 Вывод списка всех BE

Следующая команда выводит список всех существующих BE.

Пример 15 Вывод списка всех BE с информацией о наборах данных и снапшотах

Следующая команда выводит список всех существующих BE со списком всех наборов данных и снапшотов этих BE.

Пример 16 Вывод списка наборов данных и снапшотов BE

Следующая команда выводит список всей имеющейся информации о BE2.

Пример 17 Форматный вывод

Следующая команда выводит информацию обо всех BE в автоматически разбираемом формате.

Пример 18 Вывод BE зоны, ассоциированных с BE глобальной зоны

Эта команда выводит список всех BE зоны, принадлежащих BE2. Команда запускается из глобальной зоны.

Пример 19 Вывод списка всех BE зоны в зоне

Эта команда выводит список всех BE в zone1. Запускается из глобальной зоны.

Пример 20 Вывод всех незагружаемых BE в BE зоны

Команда выолняется в zbe:/zone1/solaris. Она выводит список и загружаемых, и незагружаемых BE. Незагружаемые BE помечаются знаком ! в колонке Flags, а потерянные BE ещё и знаком O в этой же колонке.

Пример 21 Установка флагов политики для набора BE

Следующая команда устанавливает атрибут noevict для BE с именами named BE1, BE2 и BE3 (и также пересылает загрузочные артифакты BE1, BE2 и BE3 в загрузочный пул):

А эта команда очищает атрибут noevict (путем установки списка атрибутов на значение, которое его не включает):

Пример 22 Ввод списка указанных атрибутов всех BE

Следующая команда выводит список всех имён BE, дат создания и корневых наборов данных для всех BE.

Пример 23 Ввод списка указанных атрибутов для нескольких BE

Эта команда выводит список имён BE, подчинённых файловых систем и дат созданиядля всех BE, соответствующих BeFmriPattern.

Пример 24 Ввод списка указанных атрибутов

Вывод списка name, flags, mountpoint, policy и дат создания для всех BE. Эти атрибуты включаются в вывод команды beadm list по умолчанию. Обычно включаемый атрибут Space здесь не указывается. Отсутствие атрибута Space в явном виде может быть полезно в системе с большим количеством зон, поскольку вычисление размера для каждого BE в таких системах занимает больше времени, что приводит к замедлению выполнения команды beadm list.

Возвращаемое значение

0

Success.

>0

Failure.

Файлы

<log_dir>/beadm/beadm.yyyymmdd_hhmmss.<pid>.log

Лог используется для записи результатов отладки beadm. Файл лога создается в одном из следующих 3 мест для каждого вызова команды.

  1. /var/share/beadm: Это предпочтительное место расположения, если оно доступно, и у пользователя есть права на запись в этот каталог.

  2. /system/volatile/beadm: Эта папка используется, если набор данных /var/share ещё не смонтирован.

  3. /tmp/beadm: Этот каталог используется, если у пользователя нет прав на запись в предыдущие 2 каталога.

Время в имени файла обозначается как:

  • yyyymmdd_hhmmss — например, 20071130_140558.

  • yyyy — год, 2007

  • mm — месяц, 11

  • dd — день, 30

  • hh — часы, 14

  • mm — минуты, 05

  • ss — секунды, 58

Если команда выполнена успешно, лог автоматически удаляется. В случае сбоя команды сообщение об ошибке будет содержать полный путь к логу. Ответственность за удаление лога лежит на пользователе.