Zones Parallel Patching versus Update On Attach: When to use which one ?
By Gerry Haskins-Oracle on Jun 19, 2009
The Zones Parallel Patching enhancement for the Solaris 10 patch utilities was released this week giving customers a choice of how to improve zones patching performance.
In the Zones "Update On Attach" section of a previous blog posting, I mentioned that the Zones "Update On Attach" feature could also be used to improve Zones patching perfomance.
Zones Parallel Patching is a true patching solution utilizing the 'patchadd' utility.
Whereas Zones "Update On Attach" uses zones functionality similar to that used during zones creation to provide a pseudo-patching solution that does not utilize 'patchadd'.
So which one to choose ?
Let's look at the two options in more detail:
Zones Parallel Patching
Zones Parallel Patching is an enhancement to the standard Solaris 10 patch utilities and is delivered in the patch utilities patch, 119254-66 (SPARC) and 119255-66 (x86).
Simply install this patch, set the maximum number of non-global zones to be patched in parallel in the config file /etc/patch/pdo.conf, and away you go.
It works for all Solaris 10 systems.
It also works well in conjunction with higher level patch automation tools such as xVM Ops Center.
It can dramatically improve zones patching performance by patching non-global zones in parallel. The global zone is still patched first.
While the performance gain is dependent on a number of
factors, including the number of non-global zones, the number of
on-line CPUs, the speed of the system, the I/O configuration of the
system, etc., a performance gain of ca. 300% can typically be expected
for patching the non-global zones - e.g. On a T2000 with 5 sparse root
See my previous Zones Parallel Patching blog entry for further information.
Since it's a pure enhancement to 'patchadd', it's normal 'patchadd' functionality. You can subsequently remove patches using 'patchrm', etc. Nothing has changed except that it's now much faster to patch non global Zones with Zones Parallel Patching invoked.
Zones "Update On Attach"
The primary purpose of Zones "Update on Attach" is Zones migration from one server to another.
For example, a database instance in a non-global zone hosted on a server has grown to the extent that the Sys Admin wants to transfer it to a better spec'd server which can better handle the workload. The Sys Admin can detach it from the old server (e.g. a Sun4u) and reattach it to the new server (e.g. a Sun4v) using Zones "Update On Attach". This will bring the OS Software level on the non-global zone up to the same level as the new server's global zone.
Zones "Update On Attach" can certainly be used for patching but there are limitations you need to be aware of as outlined below.
For example, detach the non-global zones from a system, apply a bunch of patches to the global zone, reattach the non-global zones using "Update On Attach" and viola, the non-global zones will be brought up to the same software level as the global zone (for OS type packages), effectively patching the non-global zones without using 'patchadd' at all. This is typically even faster than using Zones Parallel Patching. But there are limitations to this approach which users must be aware of (see below).
My senior engineer, Enda O'Connor, has just published an interesting article on The Zones Update on Attach Feature and Patching in the Solaris 10 OS.
Zones "Update On Attach" limitations as a patching aid
Zones "Update On Attach" only works for packages which are SUNW_PKG_ALLZONES=true - i.e. typically OS level packages, and not application packages.
So when to use Zones Parallel Patching in 'patchadd' and when to use Zones "Update On Attach" ?
Here's what my senior engineer, Enda O'Connor, says:
"The Zones Update on Attach Feature and Patching in the Solaris 10 OS document may help customers understand how the technology works, applying a cluster via patching and via zones Update On Attach is not quite the same really.
It really depends on the patches being applied, i.e. applying a firefox patch via Update On Attach would not work if you wanted it to apply to the global zone and all non-global zones as well.
One has to understand how Update On Attach works and then apply that to the list of patches to see if it gets them to a desirable state.
There is no black or white answer here.
I'd recommend Zones Parallel Patching using 'patchadd' as it has a known outcome all the time, whereas Update On Attach makes it's own internal determination based on a number of things, that can vary from system to system ( e.g. inherited directories ).
But if time to patch is critical then if the customer does proper testing to validate things, and are happy with the results, then by all means use Update On Attach.
But using Update On Attach without:
1. Understanding how it determines what packages to update
2. Not inspecting the patches being applied.
...will most likely lead to grief at some point."
And my other senior engineer, Ed Clark, says:
"In terms of giving guidance on which technology to use, there are a number of considerations -- two of these considerations are:
1. Using Update On Attach to update sparse zones can require significantly more disk storage space than would be needed by applying patches with 'patchadd' (3-4 times as much space would not be uncommon i think), due to Update On Attach copying fully populated global zone 'undo' files into the non-global zones, as opposed to having patchadd build sparsely populated 'undo' files in the non-global zones.
2. If a customer is really concerned about the ability to back out patches reliably, then 'patchadd' is a lower risk option than Update On Attach -- 'patchrm' of a patch from a non-global zone that has a copy of the global zones 'undo' pkg data (as is the case after Update On Attach) may potentially have unexpected side effects." [although we have yet to see any actual cases of negative results from this.]
In general, we recommend using the Zones Parallel Patching enhancement in the patch utilities rather than the Zones "Update On Attach" feature as Zones Parallel Patching is standard patching functionality, only faster, whereas Zones "Update On Attach" is really designed for migrating zones from one server as another and was not primarily designed to speed up patching.
Because Zones "Update On Attach" uses Zones functionality similar to the zone creation functionality, rather than 'patchadd' functionality, limitations exist on what will be patched (typically the OS but not applications) and there's the potential for anomalies around things like the "undo" files which would be used by 'patchrm' if patches applied using Zones "Update On Attach" were subsequently removed from the non-global zones using 'patchrm' (although we have yet to see any actual cases of serious issues resulting from this).
So in patching situations where time is absolutely critical, Zones "Update On Attach" may provide a good option, as long as it's well tested in the customer environment prior to deployment on production systems.
Remember too, Live Upgrade is also your friend in such situations, enabling you to patch an inactive boot environment while the system is still in production. So a combination of Live Upgrade and Zones Parallel Patching would be ideal.
I hope you find this helpful!