Solaris ZFS Administration Guide
  Search only this book
Download this book in PDF (1709 KB)

Migrating a UFS Root File System to a ZFS Root File System (Solaris Live Upgrade)

Previous Solaris Live Upgrade features are available and if related to UFS components, they work as in previous Solaris releases.

The following features are available:

For detailed information about Solaris installation and Solaris Live Upgrade features, see the Solaris 10 Installation Guide: Solaris Live Upgrade and Upgrade Planning.

The basic process for migrating a UFS root file system to a ZFS root file system is as follows:

  • Install the Solaris 10 10/08, Solaris 10 5/09, or Solaris 10 10/09 release or use the standard upgrade program to upgrade from a previous Solaris 10 release on any supported SPARC based or x86 based system.

  • When you are running the Solaris 10 10/08, Solaris 10 5/09, or Solaris 10 10/09 release, create a ZFS storage pool for your ZFS root file system, if necessary.

  • Use Solaris Live Upgrade to migrate your UFS root file system to a ZFS root file system.

  • Activate your ZFS BE with the luactivate command.

For information about ZFS and Solaris Live Upgrade requirements, see Solaris Installation and Solaris Live Upgrade Requirements for ZFS Support.

ZFS Solaris Live Upgrade Migration Issues

Review the following list of issues before you use Solaris Live Upgrade to migrate your UFS root file system to a ZFS root file system:

  • The Solaris installation GUI's standard-upgrade option is not available for migrating from a UFS to a ZFS root file system. To migrate from a UFS file system, you must use Solaris Live Upgrade.

  • You must create the ZFS storage pool that will be used for booting before the Solaris Live Upgrade operation. In addition, due to current boot limitations, the ZFS root pool must be created with slices instead of whole disks. For example:


    # zpool create rpool mirror c1t0d0s0 c1t1d0s0

    Before you create the new pool, make sure that the disks to be used in the pool have an SMI (VTOC) label instead of an EFI label. If the disk is relabeled with an SMI label, make sure that the labeling process did not change the partitioning scheme. In most cases, the majority of the disk's capacity should be in the slices that are intended for the root pool.

  • You cannot use Solaris Live Upgrade to create a UFS BE from a ZFS BE. If you migrate your UFS BE to a ZFS BE and you retain your UFS BE, you can boot from either your UFS BE or your ZFS BE.

  • Do not rename your ZFS BEs with the zfs rename command because the Solaris Live Upgrade feature is unaware of the name change. Subsequent commands, such as ludelete, will fail. In fact, do not rename your ZFS pools or file systems if you have existing BEs that you want to continue to use.

  • Solaris Live Upgrade creates the datasets for the BE and ZFS volumes for the swap area and dump device but does not account for any existing dataset property modifications. Thus, if you want a dataset property enabled in the new BE, you must set the property before the lucreate operation. For example:


    # zfs set compression=on rpool/ROOT
  • When creating an alternative BE that is a clone of the primary BE, you cannot use the -f, -x, -y, -Y, and -z options to include or exclude files from the primary BE. You can still use the inclusion and exclusion option set in the following cases:


    UFS -> UFS 
    UFS -> ZFS
    ZFS -> ZFS (different pool)
  • Although you can use Solaris Live Upgrade to upgrade your UFS root file system to a ZFS root file system, you cannot use Solaris Live Upgrade to upgrade non-root or shared file systems.

  • You cannot use the lu command to create or migrate a ZFS root file system.

Using Solaris Live Upgrade to Migrate to a ZFS Root File System (Without Zones)

The following examples show how to migrate a UFS root file system to a ZFS root file system.

If you are migrating or updating a system with zones, see the following sections:


Example 5–3 Using Solaris Live Upgrade to Migrate a UFS Root File System to a ZFS Root File System

The following example shows how to create a BE of a ZFS root file system from a UFS root file system. The current BE, ufs1009BE, which contains a UFS root file system, is identified by the -c option. If you do not include the optional -c option, the current BE name defaults to the device name. The new BE, zfs1009BE, is identified by the -n option. A ZFS storage pool must exist before the lucreate operation.

The ZFS storage pool must be created with slices rather than whole disks to be upgradeable and bootable. Before you create the new pool, make sure that the disks to be used in the pool have an SMI (VTOC) label instead of an EFI label. If the disk is relabeled with an SMI label, make sure that the labeling process did not change the partitioning scheme. In most cases, the majority of the disk's capacity should be in the slices that are intended for the root pool.


# zpool create mpool mirror c1t2d0s0 c2t1d0s0
# lucreate -c ufs1009BE -n zfs1009BE -p mpool
Analyzing system configuration.
No name for current boot environment.
Current boot environment is named <ufs1009BE>.
Creating initial configuration for primary boot environment <ufs1009BE>.
The device </dev/dsk/c1t0d0s0> is not a root device for any boot environment; cannot get BE ID.
PBE configuration successful: PBE name <ufs1009BE> PBE Boot Device </dev/dsk/c1t0d0s0>.
Comparing source boot environment <ufs1009BE> file systems with the file 
system(s) you specified for the new boot environment. Determining which 
file systems should be in the new boot environment.
Updating boot environment description database on all BEs.
Updating system configuration files.
The device </dev/dsk/c1t2d0s0> is not a root device for any boot environment; cannot get BE ID.
Creating configuration for boot environment <zfs1009BE>.
Source boot environment is <ufs1009BE>.
Creating boot environment <zfs1009BE>.
Creating file systems on boot environment <zfs1009BE>.
Creating <zfs> file system for </> in zone <global> on <mpool/ROOT/zfs1009BE>.
Populating file systems on boot environment <zfs1009BE>.
Checking selection integrity.
Integrity check OK.
Populating contents of mount point </>.
Copying.
Creating shared file system mount points.
Creating compare databases for boot environment <zfs1009BE>.
Creating compare database for file system </mpool/ROOT>.
Creating compare database for file system </>.
Updating compare databases on boot environment <zfs1009BE>.
Making boot environment <zfs1009BE> bootable.
Creating boot_archive for /.alt.tmp.b-qD.mnt
updating /.alt.tmp.b-qD.mnt/platform/sun4u/boot_archive
Population of boot environment <zfs1009BE> successful.
Creation of boot environment <zfs1009BE> successful.

After the lucreate operation completes, use the lustatus command to view the BE status. For example:


# lustatus
Boot Environment           Is       Active Active    Can    Copy      
Name                       Complete Now    On Reboot Delete Status    
-------------------------- -------- ------ --------- ------ ----------
ufs1009BE                  yes      yes    yes       no     -         
zfs1009BE                  yes      no     no        yes    -         

Then, review the list of ZFS components. For example:


# zfs list
NAME                   USED  AVAIL  REFER  MOUNTPOINT
mpool                 7.17G  59.8G  95.5K  /mpool
mpool/ROOT            4.66G  59.8G    21K  /mpool/ROOT
mpool/ROOT/zfs1009BE  4.66G  59.8G  4.66G  /
mpool/dump               2G  61.8G    16K  -
mpool/swap             517M  60.3G    16K  -

Next, use the luactivate command to activate the new ZFS BE. For example:


# luactivate zfs1009BE
A Live Upgrade Sync operation will be performed on startup of boot environment <zfs1009BE>.

**********************************************************************

The target boot environment has been activated. It will be used when you 
reboot. NOTE: You MUST NOT USE the reboot, halt, or uadmin commands. You 
MUST USE either the init or the shutdown command when you reboot. If you 
do not use either init or shutdown, the system will not boot using the 
target BE.

**********************************************************************
.
.
.
Modifying boot archive service
Activation of boot environment <zfs1009BE> successful.

Next, reboot the system to the ZFS BE.


# init 6

Confirm that the ZFS BE is active.


# lustatus
Boot Environment           Is       Active Active    Can    Copy      
Name                       Complete Now    On Reboot Delete Status    
-------------------------- -------- ------ --------- ------ ----------
ufs1009BE                  yes      no     no        yes    -         
zfs1009BE                  yes      yes    yes       no     -      

If you switch back to the UFS BE, you will need to re-import any ZFS storage pools that were created while the ZFS BE was booted because they are not automatically available in the UFS BE.

If the UFS BE is no longer required, you can remove it with the ludelete command.



Example 5–4 Using Solaris Live Upgrade to Create a ZFS BE From a ZFS BE

Creating a ZFS BE from a ZFS BE in the same pool is very quick because this operation uses ZFS snapshot and clone features. If the current BE resides on the same ZFS pool mpool, for example, the -p option is omitted.

If you have multiple ZFS BEs on a SPARC based system, you can use the boot -L command to identify the available BEs and select a BE from which to boot by using the boot -Z command. On an x86 based system, you can select a BE from the GRUB menu. For more information, see Example 5–9.


# lucreate -n zfs10092BE
Analyzing system configuration.
Comparing source boot environment <zfs1009BE> file systems with the file 
system(s) you specified for the new boot environment. Determining which 
file systems should be in the new boot environment.
Updating boot environment description database on all BEs.
Updating system configuration files.
Creating configuration for boot environment <zfs10092BE>.
Source boot environment is <zfs1009BE>.
Creating boot environment <zfs10092BE>.
Cloning file systems from boot environment <zfs1009BE> to create boot environment <zfs10092BE>.
Creating snapshot for <mpool/ROOT/zfs1009BE> on <mpool/ROOT/zfs1009BE@zfs10092BE>.
Creating clone for <mpool/ROOT/zfs1009BE@zfs10092BE> on <mpool/ROOT/zfs10092BE>.
Setting canmount=noauto for </> in zone <global> on <mpool/ROOT/zfs10092BE>.
Population of boot environment <zfs10092BE> successful.
Creation of boot environment <zfs10092BE> successful.


Example 5–5 Upgrading Your ZFS BE (luupgrade)

You can upgrade your ZFS BE with additional packages or patches.

The basic process is:

  • Create an alternate BE with the lucreate command.

  • Activate and boot from the alternate BE.

  • Upgrade your primary ZFS BE with the luupgrade command to add packages or patches.


# lustatus
Boot Environment           Is       Active Active    Can    Copy      
Name                       Complete Now    On Reboot Delete Status    
-------------------------- -------- ------ --------- ------ ----------
zfs1009BE                  yes      no     no        yes    -         
zfs10092BE                 yes      yes    yes       no     -         
# luupgrade -p -n zfs1009BE -s /net/system/export/s10u8/Solaris_10/Product SUNWchxge

Validating the contents of the media </net/system/export/s10u8/Solaris_10/Product>.
Mounting the BE <zfs1009BE>.
Adding packages to the BE <zfs1009BE>.

Processing package instance <SUNWchxge> from </net/install/export/s10u8/Solaris_10/Product>

Chelsio N110 10GE NIC Driver(sparc) 11.10.0,REV=2006.02.15.20.41
Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.

This appears to be an attempt to install the same architecture and
version of a package which is already installed.  This installation
will attempt to overwrite this package.

Using </a> as the package base directory.
## Processing package information.
## Processing system information.
   4 package pathnames are already properly installed.
## Verifying package dependencies.
## Verifying disk space requirements.
## Checking for conflicts with packages already installed.
## Checking for setuid/setgid programs.

This package contains scripts which will be executed with super-user
permission during the process of installing this package.

Do you want to continue with the installation of <SUNWchxge> [y,n,?] y

Installing Chelsio N110 10GE NIC Driver as <SUNWchxge>

## Installing part 1 of 1.
## Executing postinstall script.

Installation of <SUNWchxge> was successful.
Unmounting the BE <zfs1009BE>.
The package add to the BE <zfs1009BE> completed.

Using Solaris Live Upgrade to Migrate or Upgrade a System With Zones (Solaris 10 10/08)

You can use Solaris Live Upgrade to migrate a system with zones but the supported configurations are limited in the Solaris 10 10/08 release. If you are installing or upgrading to the Solaris 10 5/09 release, more zone configurations are supported. For more information, see Using Solaris Live Upgrade to Migrate or Upgrade a System With Zones (Solaris 10 5/09 and Solaris 10 10/09).

This section describes how to configure and install a system with zones so that it can be upgraded and patched with Solaris Live Upgrade. If you migrating to a ZFS root file system without zones, see Using Solaris Live Upgrade to Migrate to a ZFS Root File System (Without Zones).

If you are migrating a system with zones or if you are configuring a system with zones in the Solaris 10 10/08 release, review the following procedures:

Follow the recommended procedures to set up zones on a system with a ZFS root file system to ensure that you can use Live Upgrade on that system.

ProcedureHow to Migrate a UFS Root File System With Zone Roots on UFS to a ZFS Root File System (Solaris 10 10/08)

Follow the steps below to migrate a UFS root file system with zones installed to a ZFS root file system and ZFS zone root configuration that can be upgraded or patched.

In the steps that follow the example pool name is rpool and the example name of the boot environment that is currently active is S10BE*.

  1. Upgrade the system to the Solaris 10 10/08 release if it is running a previous Solaris 10 release.

    For more information upgrading a system that runs the Solaris 10 release, see Solaris 10 Installation Guide: Solaris Live Upgrade and Upgrade Planning.

  2. Create the root pool.

    For information about the root pool requirements, see Solaris Installation and Solaris Live Upgrade Requirements for ZFS Support.

  3. Confirm that the zones from the UFS environment are booted.

  4. Create the new boot environment.


    # lucreate -n S10BE2 -p rpool
    

    This command establishes datasets in the root pool for the new boot environment and copies the current boot environment (including the zones) to those datasets.

  5. Activate the new boot environment.


    # luactivate s10BE2
    

    Now the system is running a ZFS root file system, but the zone roots on UFS are still in the UFS root file system. The next steps are required to fully migrate the UFS zones to a supported ZFS configuration.

  6. Reboot the system.


    # init 6
    
  7. Migrate the zones to a ZFS BE.

    1. Boot the zones.

    2. Create another BE within the pool.


      # lucreate S10BE3
      
    3. Activate the new boot environment.


      # luactivate S10BE3
      
    4. Reboot the system.


      # init 6
      

      This step verifies that the ZFS BE and the zones are booted.

  8. In this Solaris release, resolve any potential mount point problems.

    Due to a bug in the Live Upgrade feature, the non-active boot environment might fail to boot because a ZFS dataset or a zone's ZFS dataset in the boot environment has an invalid mount point.

    1. Review the zfs list output.

      Look for incorrect temporary mount points. For example:


      # zfs list -r -o name,mountpoint rpool/ROOT/s10u6
      
      NAME                               MOUNTPOINT
      rpool/ROOT/s10u6                   /.alt.tmp.b-VP.mnt/
      rpool/ROOT/s10u6/zones             /.alt.tmp.b-VP.mnt//zones
      rpool/ROOT/s10u6/zones/zonerootA   /.alt.tmp.b-VP.mnt/zones/zonerootA

      The mount point for the root ZFS BE (rpool/ROOT/s10u6) should be /.

    2. Reset the mount points for the ZFS BE and its datasets.

      For example:


      # zfs inherit -r mountpoint rpool/ROOT/s10u6
      # zfs set mountpoint=/ rpool/ROOT/s10u6
      
    3. Reboot the system.

      When the option is presented to boot a specific boot environment, either in the GRUB menu or at the OpenBoot Prom prompt, select the boot environment whose mount points were just corrected.

ProcedureHow to Configure a ZFS Root File System With Zone Roots on ZFS (Solaris 10 10/08)

Follow the steps below to set up a ZFS root file system and ZFS zone root configuration that can be upgraded or patched. In this configuration, the ZFS zone roots are created as ZFS datasets.

In the steps that follow the example pool name is rpool and the example name of the boot environment that is currently active is S10be.

  1. Install the system with a ZFS root, either by using the interactive initial installation method or the Solaris JumpStart installation method.

    For more information about installing a ZFS root file system by using the initial installation method or the Solaris JumpStart method, see Installing a ZFS Root File System (Initial Installation) or Installing a ZFS Root File System (JumpStart Installation).

  2. Boot the system from the newly-created root pool.

  3. Create a dataset for grouping the zone roots.

    For example:


    # zfs create -o canmount=noauto rpool/ROOT/S10be/zones
    

    The name for the zones dataset can be any legal dataset name. In the steps that follow the example dataset name is zones.

    Setting the noauto value for the canmount property prevents the dataset from being mounted other than by the explicit action of Solaris Live Upgrade and system startup code.

  4. Mount the newly-created zones container dataset.


    # zfs mount rpool/ROOT/S10be/zones
    

    The dataset is mounted at /zones.

  5. Create and mount a dataset for each zone root.


    # zfs create -o canmount=noauto rpool/ROOT/S10be/zones/zonerootA
    # zfs mount rpool/ROOT/S10be/zones/zonerootA
    
  6. Set the appropriate permissions on the zone root directory.


    # chmod 700 /zones/zonerootA
    
  7. Configure the zone, setting the zone path as follows:


    # zonecfg -z zoneA
        zoneA: No such zone configured
        Use 'create' to begin configuring a new zone.
        zonecfg:zoneA> create
        zonecfg:zoneA> set zonepath=/zones/zonerootA
    

    You can enable the zones to boot automatically when the system is booted by using the following syntax:


    zonecfg:zoneA> set autoboot=true
    
  8. Install the zone.


    # zoneadm -z zoneA install
    
  9. Boot the zone.


    # zoneadm -z zoneA boot
    

ProcedureHow to Upgrade or Patch a ZFS Root File System With Zone Roots on ZFS (Solaris 10 10/08)

Use the following steps when you need to upgrade or patch a ZFS root file system with zone roots on ZFS. These updates can either be a system upgrade or the application of patches.

In the steps that follow, newBE, is the example name of the boot environment that is upgraded or patched.

  1. Create the boot environment to upgrade or patch.


    # lucreate -n newBE
    

    The existing boot environment, including all the zones, are cloned. New datasets are created for each dataset in the original boot environment. The new datasets are created in the same pool as the current root pool.

  2. Select one of the following to upgrade the system or apply patches to the new boot environment.

    • Upgrade the system.


      # luupgrade -u -n newBE -s /net/install/export/s10u7/latest
      

      Where the -s option is the location of a Solaris installation medium.

    • Apply patches to the new boot environment.


       # luupgrade -t -n newBE -t -s /patchdir 139147-02 157347-14
      
  3. Activate the new boot environment after the updates to the new boot environment are complete.


    # luactivate newBE
    
  4. Boot from newly-activated boot environment.


    # init 6
    
  5. In the Solaris 10/08 release, resolve any potential mount point problems.

    Due to a bug in the Live Upgrade feature, the non-active boot environment might fail to boot because a ZFS dataset or a zone's ZFS dataset in the boot environment has an invalid mount point.

    1. Review the zfs list output.

      Look for incorrect temporary mount points. For example:


      # zfs list -r -o name,mountpoint rpool/ROOT/newBE
      
      NAME                               MOUNTPOINT
      rpool/ROOT/newBE                   /.alt.tmp.b-VP.mnt/
      rpool/ROOT/newBE/zones             /.alt.tmp.b-VP.mnt//zones
      rpool/ROOT/newBE/zones/zonerootA   /.alt.tmp.b-VP.mnt/zones/zonerootA

      The mount point for the root ZFS BE (rpool/ROOT/newBE) should be /.

    2. Reset the mount points for the ZFS BE and its datasets.

      For example:


      # zfs inherit -r mountpoint rpool/ROOT/newBE
      # zfs set mountpoint=/ rpool/ROOT/newBE
      
    3. Reboot the system.

      When the option is presented to boot a specific boot environment, either in the GRUB menu or at the OpenBoot Prom prompt, select the boot environment whose mount points were just corrected.

Using Solaris Live Upgrade to Migrate or Upgrade a System With Zones (Solaris 10 5/09 and Solaris 10 10/09)

You can use the Live Upgrade feature to migrate or upgrade a system with zones starting in the Solaris 10 10/08 release. Additional sparse and whole zone configurations are supported by Live Upgrade starting in the Solaris 10 5/09 release.

This section describes how to configure and install a system with zones so that it can be upgraded and patched with Solaris Live Upgrade starting in the Solaris 10 5/09 release. If you are migrating to a ZFS root file system without zones, see Using Solaris Live Upgrade to Migrate to a ZFS Root File System (Without Zones).

Consider the following points when using Live Upgrade with ZFS and zones starting in the Solaris 10 5/09 release.

  • If you want to use Live Upgrade with zone configurations that are supported starting in the Solaris 10 5/09 release, you will need to first upgrade your system to the Solaris 10 5/09 or the Solaris 10 10/09 release by using the standard upgrade program.

  • Then, with Live Upgrade, you can either migrate your UFS root file system with zone roots to a ZFS root file system or you can upgrade or patch your ZFS root file system and zone roots.

  • You cannot take unsupported zone configurations from a previous Solaris 10 release and migrate them directly to the Solaris 10 5/09 or the Solaris 10 10/09 release.

If you are migrating a system with zones or if you are configuring a system with zones starting in the Solaris 10 5/09 release, review the following information:

Supported ZFS with Zone Root Configuration Information (Solaris 10 5/09 or Solaris 10 10/09)

Review the supported zone configurations before using the Live Upgrade feature to migrate or upgrade a system with zones.

  • Migrate a UFS root file system to a ZFS root file system – The following configurations of zone roots are supported:

    • In a directory in the UFS root file system

    • In a subdirectory of a mount point in the UFS root file system

    • UFS root file system with a zone root (as described above) and a ZFS non-root pool with zone root

    The following UFS/zone configuration is not supported:

    • UFS root file system that has a zone root as a mount point

  • Migrate or Upgrade a ZFS root file system – The following configurations of zone roots are supported:

    • In a dataset in the ZFS root pool. In some cases, if a dataset for the zone root is not provided before the Live Upgrade operation, a dataset for the zone root (zoneds) will be created by Live Upgrade.

    • In a subdirectory of the ZFS root file system

    • In a dataset outside of the ZFS root file system

    • In a subdirectory of a dataset outside of the ZFS root file system

    • In a dataset in a non root pool. For example, zonepool/zones is a dataset that contains the zone roots and rpool contains the ZFS BE.


      zonepool
      zonepool/zones
      zonepool/zones/myzone
      rpool
      rpool/ROOT
      rpool/ROOT/myBE

      The Live Upgrade operation snapshots and clones the zones in zonepool and the rpool BE if you use this syntax:


      # lucreate -n newBE

      The newBE BE in rpool/ROOT/newBE is created and when activated, provides access to the zonepool components.

      In the above example, if /zonepool/zones was a subdirectory and not a separate dataset, then Live Upgrade would migrate them as components of the root pool, rpool.

  • Zones Migration or Upgrade Information with Zones for both UFS and ZFS – Review the following considerations that might impact both a migration or an upgrade of either a UFS and ZFS environment:

    • If you configured your zones as described in Using Solaris Live Upgrade to Migrate or Upgrade a System With Zones (Solaris 10 10/08) in the Solaris 10 10/08 release and have upgraded to the Solaris 10 5/09 or the Solaris 10 10/09 release, you should be able to migrate to a ZFS root file system or use Solaris Live Upgrade to upgrade to the Solaris 10 5/09 or the Solaris 10 10/09 release.

    • Do not create zone roots in nested directories, for example, zones/zone1 and zones/zone1/zone2, otherwise mounting might fail at boot time.

ProcedureHow to Create a ZFS BE with a ZFS Root File System and a Zone Root (Solaris 10 5/09 or Solaris 10 10/09)

Use this procedure after you have done an initial installation of the Solaris 10 5/09 or the Solaris 10 10/09 release to create a ZFS root file system or after you have used the luupgrade feature to upgrade a ZFS root file system to the Solaris 10 5/09 release or the Solaris 10 10/09 release. A ZFS BE that is created using this procedure can then be upgraded or patched.

In the steps that follow, the example Solaris 10 10/09 system has a ZFS root file system and a zone root dataset in /rpool/zones. A ZFS BE named zfs10092BE is created that can be upgraded or patched.

  1. Review existing ZFS file systems. For example:


    # zfs list
    NAME                   USED  AVAIL  REFER  MOUNTPOINT
    rpool                 7.26G  59.7G    98K  /rpool
    rpool/ROOT            4.64G  59.7G    21K  legacy
    rpool/ROOT/zfs1009BE  4.64G  59.7G  4.64G  /
    rpool/dump            1.00G  59.7G  1.00G  -
    rpool/export            44K  59.7G    23K  /export
    rpool/export/home       21K  59.7G    21K  /export/home
    rpool/swap               1G  60.7G    16K  -
    rpool/zones            633M  59.7G   633M  /rpool/zones
  2. Make sure the zones are installed and booted. For example:


    # zoneadm list -cv
      ID NAME             STATUS     PATH                           BRAND    IP    
       0 global           running    /                              native   shared
       2 zfszone          running    /rpool/zones                   native   shared
  3. Create the ZFS BE. For example:


    # lucreate -n zfs10092BE
    Analyzing system configuration.
    Comparing source boot environment <zfs1009BE> file systems with the file 
    system(s) you specified for the new boot environment. Determining which 
    file systems should be in the new boot environment.
    Updating boot environment description database on all BEs.
    Updating system configuration files.
    Creating configuration for boot environment <zfs10092BE>.
    Source boot environment is <zfs1009BE>.
    Creating boot environment <zfs10092BE>.
    Cloning file systems from boot environment <zfs1009BE> to create boot environment <zfs10092BE>.
    Creating snapshot for <rpool/ROOT/zfs1009BE> on <rpool/ROOT/zfs1009BE@zfs10092BE>.
    Creating clone for <rpool/ROOT/zfs1009BE@zfs10092BE> on <rpool/ROOT/zfs10092BE>.
    Setting canmount=noauto for </> in zone <global> on <rpool/ROOT/zfs10092BE>.
    Creating snapshot for <rpool/zones> on <rpool/zones@zfs10092BE>.
    Creating clone for <rpool/zones@zfs10092BE> on <rpool/zones-zfs10092BE>.
    Population of boot environment <zfs10092BE> successful.
    Creation of boot environment <zfs10092BE> successful.
  4. Activate the ZFS BE.


    # lustatus
    Boot Environment           Is       Active Active    Can    Copy      
    Name                       Complete Now    On Reboot Delete Status    
    -------------------------- -------- ------ --------- ------ ----------
    zfs1009BE                  yes      yes    yes       no     -         
    zfs10092BE                 yes      no     no        yes    -         
    # luactivate zfs10092BE
    A Live Upgrade Sync operation will be performed on startup of boot environment <zfs10092BE>.
    .
    .
    .
    # init 6
    
  5. Confirm the ZFS file systems and zones are created in the new BE. For example:


    # zfs list
    NAME                               USED  AVAIL  REFER  MOUNTPOINT
    rpool                             7.38G  59.6G    98K  /rpool
    rpool/ROOT                        4.72G  59.6G    21K  legacy
    rpool/ROOT/zfs10092BE             4.72G  59.6G  4.64G  /
    rpool/ROOT/zfs10092BE@zfs10092BE  74.0M      -  4.64G  -
    rpool/ROOT/zfs1009BE              5.45M  59.6G  4.64G  /.alt.zfs1009BE
    rpool/dump                        1.00G  59.6G  1.00G  -
    rpool/export                        44K  59.6G    23K  /export
    rpool/export/home                   21K  59.6G    21K  /export/home
    rpool/swap                           1G  60.6G    16K  -
    rpool/zones                       17.2M  59.6G   633M  /rpool/zones
    rpool/zones-zfs1009BE              653M  59.6G   633M  /rpool/zones-zfs1009BE
    rpool/zones-zfs1009BE@zfs10092BE  19.9M      -   633M  -
    # zoneadm list -cv
      ID NAME             STATUS     PATH                           BRAND    IP    
       0 global           running    /                              native   shared
       - zfszone          installed  /rpool/zones                   native   shared

ProcedureHow to Upgrade or Patch a ZFS Root File System With Zone Roots (Solaris 10 5/09 or Solaris 10 10/09)

Use the following steps when you need to upgrade or patch a ZFS root file system with zone roots in the Solaris 10 5/09 or in the Solaris 10 10/09 release. These updates can either be a system upgrade or the application of patches.

In the steps that follow, zfs10093BE, is the example name of the boot environment that is upgraded or patched.

  1. Review existing ZFS file systems. For example:


    # zfs list
    NAME                               USED  AVAIL  REFER  MOUNTPOINT
    rpool                             7.38G  59.6G   100K  /rpool
    rpool/ROOT                        4.72G  59.6G    21K  legacy
    rpool/ROOT/zfs10092BE             4.72G  59.6G  4.64G  /
    rpool/ROOT/zfs10092BE@zfs10092BE  75.0M      -  4.64G  -
    rpool/ROOT/zfs1009BE              5.46M  59.6G  4.64G  /
    rpool/dump                        1.00G  59.6G  1.00G  -
    rpool/export                        44K  59.6G    23K  /export
    rpool/export/home                   21K  59.6G    21K  /export/home
    rpool/swap                           1G  60.6G    16K  -
    rpool/zones                       22.9M  59.6G   637M  /rpool/zones
    rpool/zones-zfs1009BE              653M  59.6G   633M  /rpool/zones-zfs1009BE
    rpool/zones-zfs1009BE@zfs10092BE  20.0M      -   633M  -
  2. Make sure the zones are installed and booted. For example:


    # zoneadm list -cv
      ID NAME             STATUS     PATH                           BRAND    IP    
       0 global           running    /                              native   shared
       5 zfszone          running    /rpool/zones                   native   shared
  3. Create the ZFS BE to upgrade or patch. For example:


    # lucreate -n zfs10092BE
    Analyzing system configuration.
    Comparing source boot environment <zfs1009BE> file systems with the file 
    system(s) you specified for the new boot environment. Determining which 
    file systems should be in the new boot environment.
    Updating boot environment description database on all BEs.
    Updating system configuration files.
    Creating configuration for boot environment <zfs10092BE>.
    Source boot environment is <zfs1009BE>.
    Creating boot environment <zfs10092BE>.
    Cloning file systems from boot environment <zfs1009BE> to create boot environment <zfs10092BE>.
    Creating snapshot for <rpool/ROOT/zfs1009BE> on <rpool/ROOT/zfs1009BE@zfs10092BE>.
    Creating clone for <rpool/ROOT/zfs1009BE@zfs10092BE> on <rpool/ROOT/zfs10092BE>.
    Setting canmount=noauto for </> in zone <global> on <rpool/ROOT/zfs10092BE>.
    Creating snapshot for <rpool/zones> on <rpool/zones@zfs10092BE>.
    Creating clone for <rpool/zones@zfs10092BE> on <rpool/zones-zfs10092BE>.
    Population of boot environment <zfs10092BE> successful.
    Creation of boot environment <zfs10092BE> successful.
  4. Select one of the following to upgrade the system or apply patches to the new boot environment.

    • Upgrade the system. For example:


      # luupgrade -u -n zfs10092BE -s /net/install/export/s10uX/combined.s10s_uXwos/latest
      

      Where the -s option is the location of a Solaris installation medium.

      This process can be very long.

      For a complete example of the luupgrade process, see Example 5–6.

    • Apply patches to the new boot environment. For example:


      # luupgrade -t -n zfs10092BE -t -s /patchdir patch-id-02 patch-id-04
      
  5. Activate the new boot environment after the updates to the new boot environment are complete.


    # lustatus
    Boot Environment           Is       Active Active    Can    Copy      
    Name                       Complete Now    On Reboot Delete Status    
    -------------------------- -------- ------ --------- ------ ----------
    zfs1009BE                  yes      no     no        yes    -         
    zfs10092BE                 yes      no     no        yes    -     
    # luactivate zfs10092BE
    A Live Upgrade Sync operation will be performed on startup of boot environment <zfs10093BE>.
    .
    .
    .
  6. Boot from newly-activated boot environment.


    # init 6
    

Example 5–6 Upgrading a ZFS Root File System With Zone Root to a Solaris 10 10/09 ZFS Root File System

In this example, a ZFS BE (zfs509BE), created on a Solaris 10 5/09 system with a ZFS root file system and zone root in a non root pool, is upgraded to the Solaris 10 10/09 release. This process can take a long time. Then, the upgraded BE (zfs10092BE) is activated. Make sure that the zones are installed and booted before attempting the migration.

In this example, the zonepool pool, the /zonepool/zones dataset, and zfszone are created as follows:


# zpool create zonepool mirror c2t1d0 c2t5d0
# zfs create zonepool/zones
# chmod 700 zonepool/zones
# zonecfg -z zfszone
zfszone: No such zone configured
Use 'create' to begin configuring a new zone.
zonecfg:zfszone> create
zonecfg:zfszone> set zonepath=/zonepool/zones
zonecfg:zfszone> verify
zonecfg:zfszone> exit
# zoneadm -z zfszone install
cannot create ZFS dataset zonepool/zones: dataset already exists
Preparing to install zone <zfszone>.
Creating list of files to copy from the global zone.
Copying <8960> files to the zone.
.
.
.

# zoneadm list -cv
  ID NAME             STATUS     PATH                           BRAND    IP    
   0 global           running    /                              native   shared
   2 zfszone          running    /zonepool/zones                native   shared

# lucreate -n zfs1009BE
.
.
.
# luupgrade -u -n zfs1009BE -s /net/install/export/s10u8/combined.s10s_u8wos/latest
40410 blocks
miniroot filesystem is <lofs>
Mounting miniroot at </net/system/export/s10u8/latest/Solaris_10/Tools/Boot>
Validating the contents of the media </net/system/export/s10u8//latest>.
The media is a standard Solaris media.
The media contains an operating system upgrade image.
The media contains <Solaris> version <10>.
Constructing upgrade profile to use.
Locating the operating system upgrade program.
Checking for existence of previously scheduled Live Upgrade requests.
Creating upgrade profile for BE <zfs1009BE>.
Determining packages to install or upgrade for BE <zfs1009BE>.
Performing the operating system upgrade of the BE <zfs1009BE>.
CAUTION: Interrupting this process may leave the boot environment unstable 
or unbootable.
Upgrading Solaris: 100% completed
Installation of the packages from this media is complete.
Updating package information on boot environment <zfs1009BE>.
Package information successfully updated on boot environment <zfs1009BE>.
Adding operating system patches to the BE <zfs1009BE>.
The operating system patch installation is complete.
INFORMATION: The file </var/sadm/system/logs/upgrade_log> on boot 
environment <zfs1009BE> contains a log of the upgrade operation.
INFORMATION: The file </var/sadm/system/data/upgrade_cleanup> on boot 
environment <zfs1009BE> contains a log of cleanup operations required.
INFORMATION: Review the files listed above. Remember that all of the files 
are located on boot environment <zfs1009BE>. Before you activate boot 
environment <zfs1009BE>, determine if any additional system maintenance is 
required or if additional media of the software distribution must be 
installed.
The Solaris upgrade of the boot environment <zfs1009BE> is complete.
Installing failsafe
Failsafe install is complete.
# luactivate zfs1009BE
# init 6
# lustatus
Boot Environment           Is       Active Active    Can    Copy      
Name                       Complete Now    On Reboot Delete Status    
-------------------------- -------- ------ --------- ------ ----------
zfs509BE                   yes      no     no        yes    -         
zfs1009BE                  yes      yes    yes       no     -   
# zoneadm list -cv
  ID NAME             STATUS     PATH                           BRAND    IP    
   0 global           running    /                              native   shared
   - zfszone          installed  /zonepool/zones                native   shared

ProcedureHow to Migrate a UFS Root File System With Zone Root to a ZFS Root File System (Solaris 10 5/09 or Solaris 10 10/09)

Use this procedure to upgrade a system with a UFS root file system and a zone root to the Solaris 10 5/09 or the Solaris 10 10/09 release. Then, use Live Upgrade to create a ZFS BE.

In the steps that follow, the example UFS BE name is c0t1d0s0, the UFS zone root is zonepool/zfszone, and the ZFS root BE is zfs1009.

  1. Upgrade the system to the Solaris 10 5/09 or the Solaris 10 10/09 release if it is running a previous Solaris 10 release.

    For more information upgrading a system that runs the Solaris 10 release, see Solaris 10 Installation Guide: Solaris Live Upgrade and Upgrade Planning.

  2. Create the root pool.

    For information about the root pool requirements, see Solaris Installation and Solaris Live Upgrade Requirements for ZFS Support.

  3. Confirm that the zones from the UFS environment are booted. For example:


    # zoneadm list -cv
      ID NAME             STATUS     PATH                           BRAND    IP    
       0 global           running    /                              native   shared
       2 zfszone          running    /zonepool/zones                native   shared
  4. Create the new ZFS boot environment. For example:


    # lucreate -c c1t1d0s0 -n zfs1009 -p rpool
    

    This command establishes datasets in the root pool for the new boot environment and copies the current boot environment (including the zones) to those datasets.

  5. Activate the new ZFS boot environment. For example:


    # lustatus
    Boot Environment           Is       Active Active    Can    Copy      
    Name                       Complete Now    On Reboot Delete Status    
    -------------------------- -------- ------ --------- ------ ----------
    c1t1d0s0                   yes      yes    yes       no     -         
    zfs1009BE                  yes      no     no        yes    -         
    # luactivate zfs1009BE       
    A Live Upgrade Sync operation will be performed on startup of boot environment <zfs1009BE>.
    .
    .
    .
  6. Reboot the system.


    # init 6
    
  7. Confirm the ZFS file systems and zones are created in the new BE. For example:


    # zfs list
    NAME                                USED  AVAIL  REFER  MOUNTPOINT
    rpool                              6.17G  60.8G    98K  /rpool
    rpool/ROOT                         4.67G  60.8G    21K  /rpool/ROOT
    rpool/ROOT/zfs1009BE               4.67G  60.8G  4.67G  /
    rpool/dump                         1.00G  60.8G  1.00G  -
    rpool/swap                          517M  61.3G    16K  -
    zonepool                            634M  7.62G    24K  /zonepool
    zonepool/zones                      270K  7.62G   633M  /zonepool/zones
    zonepool/zones-c1t1d0s0             634M  7.62G   633M  /zonepool/zones-c1t1d0s0
    zonepool/zones-c1t1d0s0@zfs1009BE   262K      -   633M  -
    # zoneadm list -cv
      ID NAME             STATUS     PATH                           BRAND    IP    
       0 global           running    /                              native   shared
       - zfszone          installed  /zonepool/zones                native   shared

Example 5–7 Migrating a UFS Root File System With Zone Root to a ZFS Root File System

In this example, a Solaris 10 10/09 system with a UFS root and a zone root (/uzone/ufszone) and a ZFS non-root pool (pool) and a zone root (/pool/zfszone) is migrated to a ZFS root file system. Make sure that the ZFS root pool is created and that the zones are installed and booted before attempting the migration.


# zoneadm list -cv
  ID NAME             STATUS     PATH                           BRAND    IP    
   0 global           running    /                              native   shared
   2 ufszone          running    /uzone/ufszone                 native   shared
   3 zfszone          running    /pool/zones/zfszone            native   shared

# lucreate -c ufs1009BE -n zfs1009BE -p rpool
Analyzing system configuration.
No name for current boot environment.
Current boot environment is named <zfs1009BE>.
Creating initial configuration for primary boot environment <zfs1009BE>.
The device </dev/dsk/c1t0d0s0> is not a root device for any boot environment; cannot get BE ID.
PBE configuration successful: PBE name <ufs1009BE> PBE Boot Device </dev/dsk/c1t0d0s0>.
Comparing source boot environment <ufs1009BE> file systems with the file 
system(s) you specified for the new boot environment. Determining which 
file systems should be in the new boot environment.
Updating boot environment description database on all BEs.
Updating system configuration files.
The device </dev/dsk/c1t1d0s0> is not a root device for any boot environment; cannot get BE ID.
Creating configuration for boot environment <zfs1009BE>.
Source boot environment is <ufs1009BE>.
Creating boot environment <zfs1009BE>.
Creating file systems on boot environment <zfs1009BE>.
Creating <zfs> file system for </> in zone <global> on <rpool/ROOT/zfs1009BE>.
Populating file systems on boot environment <zfs1009BE>.
Checking selection integrity.
Integrity check OK.
Populating contents of mount point </>.
Copying.
Creating shared file system mount points.
Copying root of zone <ufszone> to </.alt.tmp.b-EYd.mnt/uzone/ufszone>.
Creating snapshot for <pool/zones/zfszone> on <pool/zones/zfszone@zfs1009BE>.
Creating clone for <pool/zones/zfszone@zfs1009BE> on <pool/zones/zfszone-zfs1009BE>.
Creating compare databases for boot environment <zfs1009BE>.
Creating compare database for file system </rpool/ROOT>.
Creating compare database for file system </>.
Updating compare databases on boot environment <zfs1009BE>.
Making boot environment <zfs1009BE> bootable.
Creating boot_archive for /.alt.tmp.b-DLd.mnt
updating /.alt.tmp.b-DLd.mnt/platform/sun4u/boot_archive
Population of boot environment <zfs1009BE> successful.
Creation of boot environment <zfs1009BE> successful.
# lustatus
Boot Environment           Is       Active Active    Can    Copy      
Name                       Complete Now    On Reboot Delete Status    
-------------------------- -------- ------ --------- ------ ----------
ufs1009BE                  yes      yes    yes       no     -         
zfs1009BE                  yes      no     no        yes    -         
# luactivate zfs1009BE    
.
.
.
# init 6
.
.
.
# zfs list
NAME                                    USED  AVAIL  REFER  MOUNTPOINT
pool                                    628M  66.3G    19K  /pool
pool/zones                              628M  66.3G    20K  /pool/zones
pool/zones/zfszone                     75.5K  66.3G   627M  /pool/zones/zfszone
pool/zones/zfszone-ufs1009BE            628M  66.3G   627M  /pool/zones/zfszone-ufs1009BE
pool/zones/zfszone-ufs1009BE@zfs1009BE   98K      -   627M  -
rpool                                  7.76G  59.2G    95K  /rpool
rpool/ROOT                             5.25G  59.2G    18K  /rpool/ROOT
rpool/ROOT/zfs1009BE                   5.25G  59.2G  5.25G  /
rpool/dump                             2.00G  59.2G  2.00G  -
rpool/swap                              517M  59.7G    16K  -
# zoneadm list -cv
  ID NAME             STATUS     PATH                           BRAND    IP    
   0 global           running    /                              native   shared
   - ufszone          installed  /uzone/ufszone                 native   shared
   - zfszone          installed  /pool/zones/zfszone            native   shared