In Solaris 10, we had 02 types of zones/containers that we could create, the first (and the default type) is "Sparse root zone" and the second is "Whole root zone".
The main difference between these 02 types was that with "sparse root zone", you shared part of the root filesystem with the global zone while with "whole root zone", every Solaris packages are copied to the local zone private filesystem. In Solaris 11, this distinction goes away (more details about Comparison between Solaris 11 Zone and Solaris 10 Zone can be found here). What we address below is the migration of a sparse Solaris 10 zone from Solaris 10 Global Zone to Solaris 11 Global Zone.
1. Let’s Print the existing zone's configuration. We will need this information to recreate the zone on the destination system:
2. The next step is to stop this source local zone and bring it to a state where it can be archived.
The reason for stopping the zone is that we should not archive a running zone because the application or system data within the zone might be captured in an inconsistent state.Also, the zone is a sparse root zone that has inherit-pkg-dir settings, For that reason we need to bring it in the state "ready" ( that'll enable the archiving of inherited directories).
3. Now, we should copy the /var/sadm/system/admin/INST_RELEASE from the source global zone to the source local zone, otherwise we may face the Bug 15751945 (with an error stating that The image release version must be 10 (got unknown), the zone is not usable on this system).
4. Let’s archived the local zone (zonepath: /zpool_slz/slz). For that we’ll create a gzip compressed cpio archive named Source_local_zone.cpio.gz (The local zone will still be named Source_local_zone on the target system)
N.B: the –c option of cpio is to avoid the error similar to “UID or GID are too large to fit in the selected header format”
5. Transfer the archive to the target
Oracle Solaris 11.1 system, using any file transfer mechanism to copy the file, we’ll use sftp here.
6. On the target systems (DEST_GLOBAL_ZONE), create the target zone. Below, we're using a configuration file that's sourced for the creation of the zone.
Note – The zone's brand must be solaris10 and the zone cannot use any inherit-pkg-dir settings, even if the original zone was configured as a sparse root zone.
Note – The zone's brand must be solaris10 and the zone cannot use any inherit-pkg-dir settings, even if the original zone was configured as a sparse root zone.
7. Display the new local zone's configuration:
8. Install the zone from the archive
that was created on the source system, with the archive transferred into the /zpool_slz directory on the destination system
N.B: Again, you might get an error here specifying that “The image
release version must be 10 (got unknown)” if you haven’t copied the /var/sadm/system/admin/INST_RELEASE file in the source local zone as specified above.
9. Once the zone installation has
completed successfully, the zone is ready to boot.
Migration Completed....