Últimos Cambios |
||
Blog personal: El hilo del laberinto |
Última Actualización: 30 de septiembre de 2010 - Jueves
En este documento abundo en mi experiencia con "Live Upgrade". En este caso describo la migración de Solaris 10 Update 8 (10/09) a Solaris 10 Update 9 (09/10).
Para comprender completamente este documento, habría que leerse los artículos anteriores sobre este tema. Para ir limpiando el asunto sólo enlazo a la actualización anterior. Recomiendo leer toda la serie sobre "Live Upgrade":
La nueva actualización de Solaris es bastante "light", aunque algunos usuarios encontrará cambios valiosos: Diversas mejoras en las zonas, migración P2V, mejoras en ZFS (holding Snapshots, RAIDZ-3, mejora en la gestión de dispositivos de log ZFS, recuperación ante "Uberblocks" corruptos, "zpool split", mejor observabilidad), soporte de discos con sectores de más de 512 bytes, mejoras iSCSI, API GLDv3 para drivers de red, nuevos drivers, cambios en la configuración SMF de "sendmail".
Los pasos para actualizar nuestro sistema mediante "Live Upgrade" son los siguientes:
# lustatus Boot Environment Is Active Active Can Copy Name Complete Now On Reboot Delete Status -------------------------- -------- ------ --------- ------ ---------- Solaris10u8 yes yes yes no - Solaris10u8BACKUP yes no no yes - # ludelete Solaris10u8BACKUP System has findroot enabled GRUB No entry for BE <Solaris10u8BACKUP> in GRUB menu Determining the devices to be marked free. Updating boot environment configuration database. Updating boot environment description database on all BEs. Updating all boot environment configuration databases. Boot environment <<Solaris10u8BACKUP> deleted. # lustatus Boot Environment Is Active Active Can Copy Name Complete Now On Reboot Delete Status -------------------------- -------- ------ --------- ------ ---------- Solaris10u8 yes yes yes no -
A continuación clonamos el BE actual, para poder actualizarlo:
# svcadm disable svc:/jcea/sendmail:sendmail # time lucreate -n Solaris10u9 Checking GRUB menu... System has findroot enabled GRUB Analyzing system configuration. Comparing source boot environment <Solaris10u8> 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 <Solaris10u9>. Source boot environment is <Solaris10u8>. Creating boot environment <Solaris10u9>. Cloning file systems from boot environment <Solaris10u8> to create boot environment <Solaris10u9>. Creating snapshot for <datos/ROOT/Solaris10u8> on <datos/ROOT/Solaris10u8@Solaris10u9>. Creating clone for <datos/ROOT/Solaris10u8@Solaris10u9> on <datos/ROOT/Solaris10u9>. Setting canmount=noauto for </> in zone <global> on <datos/ROOT/Solaris10u9>. Creating snapshot for <datos/ROOT/Solaris10u8/var> on <datos/ROOT/Solaris10u8/var@Solaris10u9>. Creating clone for <datos/ROOT/Solaris10u8/var@Solaris10u9> on <datos/ROOT/Solaris10u9/var>. Setting canmount=noauto for </var> in zone <global> on <datos/ROOT/Solaris10u9/var>. Saving existing file </boot/grub/menu.lst> in top level dataset for BE <Solaris10u9> as <mount-point>//boot/grub/menu.lst.prev. File </boot/grub/menu.lst> propagation successful Copied GRUB menu from PBE to ABE No entry for BE <Solaris10u9> in GRUB menu Population of boot environment <Solaris10u9> successful. Creation of boot environment <Solaris10u9> successful. real 0m32.911s user 0m4.570s sys 0m8.035s # lustatus Boot Environment Is Active Active Can Copy Name Complete Now On Reboot Delete Status -------------------------- -------- ------ --------- ------ ---------- Solaris10u8 yes yes yes no - Solaris10u9 yes no no yes - # zfs snapshot datos/sendmail@20100930-03:40 # svcadm enable svc:/jcea/sendmail:sendmail (copiamos el fichero de descripción del nuevo BE y editamos el original para quitar "/etc/mail". El fichero de descripción del nuevo BE está en "/etc/lu/ICF.*". ESE CAMBIO DEBE HACERSE EN EL "BE" ACTUAL Y DENTRO DEL NUEVO "BE", montado con "lumount")
Como puede verse, el clonado del BE actual, si estamos bajo ZFS, lleva apenas unos pocos segundos.
Durante el proceso de clonado desactivo el correo electrónico, de forma que el BE clonado tenga el correo electrónico desactivado. El motivo es el mismo que llevo explicando desde el primer artículo de la serie: mi sistema de correo está MUY modificado, y cuando instalo una actualización de Solaris debo reinstalar luego encima mi versión personalizada. Si en el nuevo BE el correo está parado, mi esperanza es que siga así cuando lanzo el nuevo BE, de forma que puedo reinstalar mi personalización antes de que el sistema operativo haya tenido ocasión de recibir correo y no haya sabido qué hacer con ellos.
En perspectiva, toda esta personalización ha sido un error. Tendría que haber instalado el "sendmail" en otros "paths" completamente independientes del "sendmail" del sistema. De hecho es así como lo tengo en instalaciones, más recientes, pero este equipo es histórico y nunca le llega el turno de modificarlo y dejarlo como dios manda. Algo a solucionar en el futuro...
Comparado con versiones anteriores, esta vez clono el "dataset" que contiene la configuración y el software personalizado de "sendmail", para poder restaurarlo correctamente tras actualizar la nueva BE. En actualizaciones anteriores no era necesario, porque no tenía segregado estos datos en un "dataset" separado, así que podía mirarlos en el "snapshot" que "Live Upgrade" crea al crear el nuevo BE. Con la segregación del dataset, si se me hubiera olvidado hacerle un "snapshot", tendría que irme a los backups, lo que siempre es un riesgo y una mala experiencia.
El objetivo de editar el fichero de configuración de BE es porque no quiero que la configuración del "sendmail" se monte como "read only" durante la instalación, porque la haría fallar.
Podemos ver si todo está bien con un "lumount Solaris10u9" y comprobando que "/etc/mail" no está montado "read only" dentro del nuevo BE.
Mucha complejidad por una decisión incorrecta del pasado...
Bien, en esta ocasión todo ha ido bien. No obstante actualizando otras máquinas he encontrado algunos posibles problemas:
La solución es montarlo vía NFS, que no cruza puntos de montaje.
Hay que prestar mucha atención a los "warning".
El siguiente paso consiste en actualizar el sistema operativo en el nuevo BE. Para ello copio la imagen ISO en "/tmp", la monto y actualizo desde ella:
# lofiadm -a /tmp/sol-10-u9-ga-x86-dvd.iso /dev/lofi/1 # mkdir /tmp/sol-10-u9-ga-x86-dvd # mount -o ro -F hsfs /dev/lofi/1 /tmp/sol-10-u9-ga-x86-dvd # time luupgrade -n Solaris10u9 -u -s /tmp/sol-10-u9-ga-x86-dvd System has findroot enabled GRUB No entry for BE <Solaris10u9> in GRUB menu Uncompressing miniroot Copying failsafe kernel from media. 61364 blocks miniroot filesystem is <lofs> Mounting miniroot at </tmp/sol-10-u9-ga-x86-dvd/Solaris_10/Tools/Boot> Validating the contents of the media </tmp/sol-10-u9-ga-x86-dvd>. 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 <Solaris10u9>. Checking for GRUB menu on ABE <Solaris10u9>. Saving GRUB menu on ABE <Solaris10u9>. Checking for x86 boot partition on ABE. Determining packages to install or upgrade for BE <Solaris10u9>. Performing the operating system upgrade of the BE <Solaris10u9>. 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. Restoring GRUB menu on ABE <Solaris10u9>. Updating package information on boot environment <Solaris10u9>. Package information successfully updated on boot environment <Solaris10u9>. Adding operating system patches to the BE &Solaris10u9>. The operating system patch installation is complete. ABE boot partition backing deleted. PBE GRUB has no capability information. PBE GRUB has no versioning information. ABE GRUB is newer than PBE GRUB. Updating GRUB. GRUB update was successfull. Configuring failsafe for system. Failsafe configuration is complete. INFORMATION: The file </var/sadm/system/logs/upgrade_log> on boot environment <Solaris10u9> contains a log of the upgrade operation. INFORMATION: The file </var/sadm/system/data/upgrade_cleanup> on boot environment <Solaris10u9> contains a log of cleanup operations required. WARNING: <1> packages failed to install properly on boot environment <Solaris10u9>. INFORMATION: The file </var/sadm/system/data/upgrade_failed_pkgadds> on boot environment <Solaris10u9> contains a list of packages that failed to upgrade or install properly. INFORMATION: Review the files listed above. Remember that all of the files are located on boot environment <Solaris10u9>. Before you activate boot environment <Solaris10u9>, 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 <Solaris10u9> is partially complete. Installing failsafe Failsafe install is complete. real 31m18.145s user 6m46.419s sys 4m24.370s # luupgrade -p -n Solaris10u9 -s /tmp/sol-10-u9-ga-x86-dvd/Solaris_10/Product SUNWcsr System has findroot enabled GRUB No entry for BE <Solaris10u9> in GRUB menu Validating the contents of the media </tmp/sol-10-u9-ga-x86-dvd/Solaris_10/Product>. Mounting the BE <Solaris10u9>. Adding packages to the BE <Solaris10u9>. Processing package instance <SUNWcsr> from </tmp/sol-10-u9-ga-x86-dvd/Solaris_10/Product> Core Solaris, (Root)(i386) 11.10.0,REV=2005.01.21.16.34 Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. [...] Installation ofsuccessful. Unmounting the BE . The package add to the BE completed. # umount /tmp/sol-10-u9-ga-x86-dvd # lofiadm -d /dev/lofi/1
El paquete que falla es: "Core Solaris" (SUNWcsr). Es debido a mi estructura personal de "datasets". Lo resuelvo instalando a mano, y prestando atención a los errores exactos que aparecen.
Lo único que quedaría por hacer ahora es cambiar el BE de arranque y reiniciar el sistema. En mi caso particular, no obstante, tengo algunos problemas que hay que resolver primero:
Existe una forma de desactivar este registro, pero no me tenido tiempo ni ganas de investigar el asunto con más detalle.
Ya solo queda activar el nuevo BE y reiniciar la máquina:
# lustatus Boot Environment Is Active Active Can Copy Name Complete Now On Reboot Delete Status -------------------------- -------- ------ --------- ------ ---------- Solaris10u8 yes yes yes no - Solaris10u9 yes no no yes - # luactivate Solaris10u9 System has findroot enabled GRUB Generating boot-sign, partition and slice information for PBE <Solaris10u8> A Live Upgrade Sync operation will be performed on startup of boot environment <Solaris10u9>. WARNING: <1> packages failed to install properly on boot environment <Solaris10u9>. INFORMATION: </var/sadm/system/data/upgrade_failed_pkgadds> on boot environment <Solaris10u9> contains a list of packages that failed to upgrade or install properly. Review the file before you reboot the system to determine if any additional system maintenance is required. Generating boot-sign for ABE <Solaris10u9> Saving existing file </etc/bootsign> in top level dataset for BE <Solaris10u9> as <mount-point>//etc/bootsign.prev. Generating partition and slice information for ABE <Solaris10u9> Copied boot menu from top level dataset. Generating multiboot menu entries for PBE. Generating multiboot menu entries for ABE. Disabling splashimage Re-enabling splashimage No more bootadm entries. Deletion of bootadm entries is complete. GRUB menu default setting is unaffected Done eliding bootadm entries. ********************************************************************** 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. ********************************************************************** In case of a failure while booting to the target BE, the following process needs to be followed to fallback to the currently working boot environment: 1. Boot from Solaris failsafe or boot in single user mode from the Solaris Install CD or Network. 2. Mount the Parent boot environment root slice to some directory (like /mnt). You can use the following command to mount: mount -Fzfs /dev/dsk/c5t0d0s0 /mnt 3. Run <luactivate> utility with out any arguments from the Parent boot environment root slice, as shown below: /mnt/sbin/luactivate 4. luactivate, activates the previous working boot environment and indicates the result. 5. Exit Single User mode and reboot the machine. ********************************************************************** Modifying boot archive service Propagating findroot GRUB for menu conversion. File </etc/lu/installgrub.findroot> propagation successful File </etc/lu/stage1.findroot> propagation successful File </etc/lu/stage2.findroot> propagation successful File </etc/lu/GRUB_capability> propagation successful Deleting stale GRUB loader from all BEs. File </etc/lu/installgrub.latest> deletion successful File </etc/lu/stage1.latest> deletion successful File </etc/lu/stage2.latest> deletion successful Activation of boot environment <Solaris10u9> successful. # lustatus Boot Environment Is Active Active Can Copy Name Complete Now On Reboot Delete Status -------------------------- -------- ------ --------- ------ ---------- Solaris10u8 yes yes no no - Solaris10u9 yes no yes no - # init 6
Una vez reiniciados, comprobamos que estamos ejecutando la versión correcta:
# cat /etc/release Oracle Solaris 10 9/10 s10x_u9wos_14a X86 Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. Assembled 11 August 2010 # lustatus Boot Environment Is Active Active Can Copy Name Complete Now On Reboot Delete Status -------------------------- -------- ------ --------- ------ ---------- Solaris10u8 yes no no yes - Solaris10u9 yes yes yes no -
Los cambios más reseñables respecto a la anterior actualización son:
Más información sobre los OpenBadges
Donación BitCoin: 19niBN42ac2pqDQFx6GJZxry2JQSFvwAfS