Donnerstag Jun 18, 2009

Paralleles Patchen von Solaris Containern.

Die neueste Version der Solaris 10 Patch Utilities (Patch 119254-66 für SPARC bzw. 119255-66 für x86) unterstützt jetzt das parallele Patchen mehrerer Solaris Zonen/Container, was das Patchen eines Systems mit einer größeren Zahl von Containern signifikant beschleunigt. Näheres im englischsprachigen Blog rund um's Patching in Solaris, der vom dafür zuständigen Engineering-Team betrieben wird. Jeff Victor hatte bereits im März umfangreiche Performance-Tests mit verschiedenen Ansätzen zum parallelen Patchen von Containern gemacht (noch mit einer Beta-Version des Patch-Utility Patch) und in seinem Blog darüber berichtet. Wichtig beim parallelen Patchen ist eine ausreichende IO-Bandbreite (IOPS) zu den Zonen - da kann es durchaus hilfreich sein, die Zonen auf eine SSD zu legen. Näheres bei Jeff.

Donnerstag Okt 18, 2007

Update: Schnelles, paralleles Patchen von Zonen

Vor einiger Zeit habe ich  hier über ein Script berichtet, welches das parallele Patchen von mehreren Zonen gleichzeitig gestattet. Der Mechanismus wird in dem Blog-Eintrag erläutert, ich möchte das hier nicht alles noch einmal wiederholen. Jetzt gibt es hier ein Update zu dem Patch Skript - immer noch unsupportet, funktioniert aber super.

Montag Jul 16, 2007

Schnelleres Patchen von Systemen mit lokalen Zonen

Um ein System mit installierten lokalen Zonen zu patchen, werden die Patches mit patchadd in der globalen Zone eingespielt. Hierbei wird die Patchprozedur für die globale Zone und anschließend automatisch der Reihe nach für jede lokale Zone ausgeführt. Dazu muß die Zone laufen.


  • Erfordert der Patch die Installation im Single-User Modus, wird die Zone in den Single-User Modus gebracht, der Patch installiert und die Zone in den Ursprungszustand zurück versetzt.
  • Ist die Zone installiert, aber angehalten, wird sie für die Installation des Patches kurzzeitig in den Single-User Modus gebracht, der Patch installiert und danach wieder angehalten.

Dieses Verfahren betrifft alle installierten Zonen (Zustand installed) und kann bei vielen einzuspielenden Patches und vielen vorhandenen Zonen mehrere Stunden in Anspruch nehmen.


Es gibt verschiedene Überlegungen, wie der Zeitaufwand zum Patchen von vielen Zonen und damit die Ausfallzeit von Zonen reduziert werden kann:


  1. Die globale Zone und alle installierten lokalen Zonen werden in den single-user Mode gebootet, um alle Patches einzuspielen. So kann die Zeit für die Zustandswechsel der Zonen (z.B. multi-user zu single-user und zurück) eingespart werden.

  2. Um das aktuell laufende System nicht durch Patch-Verfahren zu beeinflussen ist auch ein separater Patch-Server anwendbar. Die aktuellen Zonen werden hierbei dupliziert und die Kopien der Zonen werden per
    zoneadm detach  /  zoneadm attach auf einen Patch-Server bewegt. Auf diesem Server werden danach die Patches eingespielt. Danach werden die Zonen auf einen Server bewegt, der in der globalen Zone bereits die aktuellen Patches enthält.

  3. Ab dem kommenden Solaris Update kann Live Upgrade auch auf Zonen angewendet werden, wenn sich das zoneroot im UFS befindet. Dave Miner beschreibt dieses neue Projekt in seinem Blog  (http://blogs.sun.com/dminer/entry/upgrades_with_zones%2C_finally). So kann mit lucreate(1M) eine Kopie des aktiven Solaris Boot-Environments mit all seinen Zonen erzeugen werden, um danach in diese Kopie mit luupgrade -t die Patches einzuspielen. Ein luactivate(1M) aktiviert das Boot-Environment, das nach dem nächsten reboot aktiv ist. Durch die Nutzung von Live Upgrade kann die Ausfallzeit von Services während des Patchens drastisch reduziert werden, da das Patchen parallel zu laufenden Services abläuft. Lediglich zur Aktivierung des aktualisierten Boot-Environments durch ein reboot ist ein Service-Ausfall notwendig. Weiterhin ist eine höhere Beanspruchung des I/O-Systems durch lucreate und luupgrade zu beachten und ggf. auf negative Effekte auf die Produktionsumgebung hin zu überprüfen.

  4. Zum zeitparallelen Patchen von vielen lokalen Zonen ist von Sun Kollegen als work-around ein Patch-Script entwickelt worden. Dieses Script ist kein offizielles Sun Produkt und unterliegt also auch nicht den allgemeinen Supportbedingungen, kann aber zur freien Benutzung hier heruntergeladen werden. Der Zeitgewinn ist enorm, da Patchoperationen zwischen den Zonen parallel ausgeführt werden.

Mit dem Script patchadd_zones_parallel.ksh wird zuerst die globale Zone gepatcht, anschließend parallel alle lokalen Zonen. Damit reduziert sich die Zeit für die Patchinstallation von (1 + (anzahl_zonen)) x installtime auf ca. (1 + 1,5) x installtime. Bei einem Kunden konnte so die Downtime von unerträglichen 25 Stunden(!) auf akzeptable 6 Stunden reduziert werden.

Aber ACHTUNG - das Script ist nur ein work-around, es ist nicht offiziell supported.

Hier ein Beispiel-Output von patchadd_zones_parallel.ksh:
root@global[/zones/zpatch] ./patchadd_zones_parallel.ksh -d /zones/zpatch/ -u ulist
>>> Started at Thu Jul 5 14:08:53 CEST 2007
Now we have a ordered patchlist to work with.
Patching global zone now:
Patch 119956-03 has been successfully installed.
Patch 120033-03 has been successfully installed.
Patch 120349-02 has been successfully installed.
Patch 121300-03 has been successfully installed.
Patch 122184-03 has been successfully installed.
Patch 124394-03 has been successfully installed.
Global zones patching successful. Proceeding to patch non-global zones
testz3 in [running] status, OK.
testz6 in [running] status, OK.
testz1 in [running] status, OK.
testz2 in [installed] status; booting the zone to singleuser mode.
testz2 in [running] status, OK.
testz4 in [installed] status; booting the zone to singleuser mode.
testz4 in [running] status, OK.
testz5 in [configured] status; cannot be booted and patched, skipping.
testz2 : Patch 119956-03 failed to install due to a failure produced by pkgadd.
testz2 : Patch 120033-03 has been successfully installed.
testz2 : Patch 120349-02 has been successfully installed.
testz2 : Patch 121300-03 has been successfully installed.
testz2 : Patch 122184-03 has been successfully installed.
testz2 : Patch 124394-03 has been successfully installed.
testz3 : Patch 119956-03 has been successfully installed.
testz3 : Patch 120033-03 has been successfully installed.
testz3 : Patch 120349-02 has been successfully installed.
testz3 : Patch 121300-03 has been successfully installed.
testz3 : Patch 122184-03 has been successfully installed.
testz3 : Patch 124394-03 has been successfully installed.
testz6 : Patch 119956-03 has been successfully installed.
testz6 : Patch 120033-03 has been successfully installed.
testz6 : Patch 120349-02 has been successfully installed.
testz6 : Patch 121300-03 has been successfully installed.
testz6 : Patch 122184-03 has been successfully installed.
testz6 : Patch 124394-03 has been successfully installed.
testz4 : Patch 119956-03 has been successfully installed.
testz4 : Patch 120033-03 has been successfully installed.
testz4 : Patch 120349-02 has been successfully installed.
testz4 : Patch 121300-03 has been successfully installed.
testz4 : Patch 122184-03 has been successfully installed.
testz4 : Patch 124394-03 has been successfully installed.
testz1 : Patch 119956-03 has been successfully installed.
testz1 : Patch 120033-03 has been successfully installed.
testz1 : Patch 120349-02 has been successfully installed.
testz1 : Patch 121300-03 has been successfully installed.
testz1 : Patch 122184-03 has been successfully installed.
testz1 : Patch 124394-03 has been successfully installed.
>>> Completed at Thu Jul 5 14:12:20 CEST 2007

>>> Please check and cleanup these files:
/var/tmp/global_zone_patchadd.28567_output in global zone
/var/tmp/<zonename>_zone_patchadd.28567_output in each local zone
/zones/zpatch//patch_list.28567
Do not forget to bringup zones into multiuser mode.
root@global[/zones/zpatch] 

Bemerkung: Natürlich wird empfohlen, in den Zonen gleiche Patchstände des Betriebssystems zu betreiben. Trotzdem kann es aus verschiedenen Gründen notwendig sein, für die benutzte Anwendungssoftware, in Zonen unterschiedliche Patch-Ständen zu benutzen. Sollen Patches nur in eine bestimmte Zone installiert werden, z.B. bei Whole-root Zonen zum Testen von Patches, können Patches mit patchadd -G in nur eine Zone installiert werden.

Search

Archives
« April 2014
MoDiMiDoFrSaSo
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    
       
Heute