A boot environment is a bootable instance of the Oracle Solaris image and its component software packages. When you install Oracle Solaris for the first time, or upgrade the OS, a BE is automatically created on the system. The BE is also activated and becomes the default BE that is used when the system is rebooted.
You can also manually create new BEs by using the beadm command. Thus, a system can contain multiple BEs. However, only one boot BE can be active at a time.
Multiple BEs reduce risk when updating software, as shown in the following examples.
You can revert to a backup BE in case of errors occurring when updating software.
You can install, test, and update different software packages on a cloned BE and thus preserve the original BE.
Although only one BE can be active at a time, you can mount an inactive one on which you can install or update specific packages. For more information, see Installing a Package Into a New Boot Environment in Updating Systems and Adding Software in Oracle Solaris 11.4.
While modifying a BE, you can take a snapshot at any stage. For example, if you are doing monthly upgrades to your boot environment, you can capture monthly snapshots.
Although a snapshot is not bootable, you can create a BE based on that snapshot.
You can specify any BE to be the default boot BE at the next system reboot.
Packages are installed or updated on a clone of the active BE. The clone is created automatically and becomes the active and default BE when the system is rebooted. Thus, the original BE remains intact.
A BE consists of a root dataset and, optionally, additional nested datasets.
A dataset is a generic name for ZFS entities such as clones, file systems, or snapshots. In the context of boot environment administration, the dataset more specifically refers to the file system specifications for a particular boot environment.
In the following example, the boot environment BE1's root dataset is rpool/ROOT/BE1. rpool is the name of the root storage pool. ROOT is a special dataset that was created by the installer. rpool/ROOT is reserved exclusively for use by boot environment root datasets.
$ zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 42.5G 24.4G 4.65M /rpool rpool/ROOT 25.6G 24.4G 31K legacy rpool/ROOT/BE1 8.91M 24.4G 4.17G / rpool/ROOT/BE1/var 3.96M 24.4G 276M /var
Shared datasets are located outside a BE's root dataset. Shared datasets are user-defined directories, such as a directory that stores user accounts. These directories are accessible regardless of which BE is currently active. In this example, tank and tank/home are shared datasets.
$ zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 42.5G 24.4G 4.65M /rpool rpool/ROOT 25.6G 24.4G 31K legacy rpool/ROOT/BE1 8.91M 24.4G 4.17G / rpool/ROOT/BE1/var 3.96M 24.4G 276M /var tank 450K 457G 18K /export tank/home 315K 457G 21K /export/home
For further reference, see the zpool(8) and the zfs(8) man pages as well as Querying ZFS Storage Pool Status in Managing ZFS File Systems in Oracle Solaris 11.4.