[Sorry for any duplicates, resending to psarc-ext]
I am sponsoring this fast-track for myself. There is
a contract associated with this case and I have placed
a copy in the case directory. I will have the appropriate
managers email the case with their approval.
Thanks,
Jerry
---
SUMMARY:
This fast-track enhances the Solaris Zones [1] subsystem to address
existing RFEs [2,3] requesting the ability to update a non-global zone when
migrating from one machine to another.
Currently when we migrate a zone we validate that the destination host has
the same pkg versions and patches for the zone-dependent packages as were
installed on the source host. This is described in the zone migration ARC
case [4]. While this is safe and ensures that the new host is capable of
properly supporting the zone, it is also very restrictive. With this
enhancement, if the new host has higher versions of the zone-dependent
pkgs, or higher versions of patches for those pkgs, then when we attach the
zone to the new host we will enable an update of the pkgs and pkg metadata
within the zone to match the new host.
Patch binding is requested for this "update on attach" capability. The
stability of these interfaces is documented in the interface table below.
DETAILS:
"Update on attach" is different from a traditional zone upgrade. In the
traditional upgrade all native zones are upgraded as part of upgrading the
base system using a standard Solaris media image as the source for the pkgs
to upgrade to. Pkg operations on pkgs with the SUNW_ALLZONES attribute
set must be run from the global zone, the operation will be performed on
all native zones, and this behavior is built-in to the pkg commands.
With "update on attach" we are only updating a single zone. We cannot
depend on the basic pkg behavior which updates all zones when a pkg is
installed in the global zone. We cannot use standard Solaris media since
the host can have a variety of patches installed which have updated the
base system pkgs beyond any specific Solaris release.
Instead what we want to do is similar to what happens when a zone is
initially installed. The spooled pkg data and global zone files are the
source for installing the zone. In this way the zone is installed with
the correct pkg versions along with any patches that have been applied to
those pkgs.
We can do something similar for "update on attach". The zone 'attach'
validation already generates a list of mismatched pkg versions and patches.
We can use this information to determine which dependent pkgs need to
be updated so that the zone can run properly on the new host. We will
remove the obsolete versions of those pkgs and install the up-to-date
version using the pkg data spooled in the global zone. This procedure will
preserve any editable or volatile files that are delivered by these pkgs.
The normal pkg install scripts and class action scripts are run as part of
this process so any updates performed by these scripts will take place. As
described in [4] the dependent pkgs are those that have the
SUNW_PKG_ALLZONES=true pkg attribute as well as any pkgs installed in an
inherited-pkg-dir. Only these pkgs will be updated to match the new host.
We will ensure that we will only update a zone to a host running the same
or later version of the dependent pkgs. For example, if the new host has
a mix of higher and lower version patches as compared to the source host
then we will not allow an update during the attach.
By default the zone will not be updated during attach. Instead, the
existing output listing the pkgs that are out of sync will continue to
be printed. We will add a new option (-u) to the 'zoneadm attach'
subcommand. When this option is used then zoneadm will update the
necessary pkgs during the attach (assuming there are any to update).
Because the zone has previously booted and run on the source host it is
possible that there could be security issues with directly accessing the
zone's filesystem to remove and add pkgs to the zone. To protect against
this the pkg operations will be performed within the scratch zone [5]. The
scratch zone was defined to address this specific issue for upgrading
zones.
We cannot use the pkgrm(1M) and pkgadd(1M) commands to update the zone
while running within the scratch zone. Those commands explicitly
disallow removing or adding a pkg with the SUNW_ALLZONES attribute set
unless running in the global zone. Instead we will use the
/usr/sadm/install/bin/pkgremove and /usr/sadm/install/bin/pkginstall
commands directly. The pkgrm and pkgadd commands are wrappers to those
commands. Those commands were formerly part of the ON consolidation but
moved to the Install consolidation as part of [6]. That case documents man
pages for pkgremove and pkginstall but no such man pages exist. No
stability level is documented for these two commands so we're assuming
these are consolidation private and a contract is needed to directly use
these commands. The command line options being used are:
/usr/sadm/install/bin/pkgremove:
-a same as public pkgrm option
-F private - used by upgrade to suppress
actual removal of files delivered by
the pkg
-M same as public pkgrm option
-n same as public pkgrm option
-O inherited-filesystem={IPD} private - used to specify
the zone's inherited-pkg-dir
entries
-R same as public pkgrm option
/usr/sadm/install/bin/pkginstall:
-a same as public pkgrm option
-C private - disable checksums since files
are installed via a separate copy from
the global zone
-h private - enable hollow pkg support
-N pkgadd private - error msgs use use the name
"pkgadd" instead of "pkginstall"
-n same as public pkgrm option
-O addzonename private - error msgs include zonename
-O inherited-filesystem={IPD} private - used to specify
the zone's inherited-pkg-dir
entries
-R same as public pkgrm option
-S private - suppress copyright output
-t private - suppress spooled pkg creation
-z private - install zone pkg data from
spooled pkg data
EXPORTED INTERFACES
zoneadm attach option
[-u] Evolving
IMPORTED INTERFACES
pkgremove, pkginstall and
their options described in
this case Contracted Consolidation Private
REFERENCES
1. PSARC 2002/174 Virtualization and Namespace Isolation in Solaris
2. RFE: zoneadm attach should patch/update the zone to the new hosts level
Bugid 6480464 http://bugs.opensolaris.org/view_bug.do?bug_id=6480464
3. RFE: zoneadm detach/attach should work between sun4u and sun4v architecture
Bugid 6576592 http://bugs.opensolaris.org/view_bug.do?bug_id=6576592
4. PSARC/2006/030 Zone migration
5. PSARC/2005/474 Zones Upgrade
6. PSARC/2002/274 Move SVr4 Packaging from ON to ADMIN