Upgrade de versión Servidor Solaris 11

Con la llegada de Solaris 11 ya se puede subir la versión de “release” fácilmente. Hasta ahora, en Solaris 10, si queríamos pasar del “Update X” al “Update Y” había que reinstalar el servidor. El instalador detectaba que existía una versión instalada y daba la opción de subir de “release“. En Solaris 11 sin embargo, gracias al gestor de paquetes que tiene es mucho mas fácil y el tiempo de parada se ha disminuido al máximo.

 

Veamos como se haría en el siguiente ejemplo. Tenemos un servidor con los siguientes datos:
  • Release:
# more /etc/release 
             Oracle Solaris 11 11/11 X86 
Copyright (c) 1983, 2011, Oracle and/or its affiliates. 
     All rights reserved. Assembled 18 October 2011 

  • Uname:

# uname -a 
SunOS HOSTNAME 5.11 11.0 i86pc i386 i86pc 
  • Kernel:
# pkg info system/kernel 
          Name: system/kernel 
       Summary: Core Kernel 
   Description: Core operating system kernel, device drivers and other modules. 
      Category: System/Core 
         State: Installed 
     Publisher: solaris 
       Version: 0.5.11 
 Build Release: 5.11 
        Branch: 0.175.0.11.0.4.1 
Packaging Date: 30 de agosto de 2012 14:21:42 
          Size: 32.04 MB 
          FMRI: pkg://solaris/system/kernel@0.5.11,5.11-0.175.0.11.0.4.1:20120830T142142Z
  • Entire:
# pkg info entire 
         Name: entire 
      Summary: entire incorporation including Support Repository Update (Oracle Solaris 11 11/11 SRU 11.4). 
  Description: This package constrains system package versions to the same 
               build. WARNING: Proper system update and correct package 
               selection depend on the presence of this incorporation. 
               Removing this package will result in an unsupported system. For
               more information see https://support.oracle.com/CSP/main/article 
               ?cmd=show&type=NOT&doctype=REFERENCE&id=1372094.1. 
     Category: Meta Packages/Incorporations 
        State: Installed 
    Publisher: solaris 
      Version: 0.5.11 (Oracle Solaris 11 SRU 11.4) 
Build Release: 5.11 Branch: 0.175.0.11.0.4.1 
Packaging Date: 1 de septiembre de 2012 01:14:39 
          Size: 5.45 kB 
          FMRI: pkg://solaris/entire@0.5.11,5.11-0.175.0.11.0.4.1:20120901T011439Z 
  • Boot Environments:
root@solaris11repo:~# beadm list 
BE Active Mountpoint Space Policy Created 
— —— ———- —– —— ——- 
solaris-1 NR / 10.82G static 2012-10-10 16:26

Como vemos actualmente tenemos la versión 5.11 SRU 11.4. Procedemos a lanzar el parcheo del servidor indicando que cree un nuevo Boot Environment:

# pkg update –require-new-be –be-name SolarisU11.1 –accept
———————————————————— 

Package: pkg://solaris/consolidation/osnet/osnet-incorporation@0.5.11,5.11-0.175.1.0.0.24.2:20120919T184141Z 
License: usr/src/pkg/license_files/lic_OTN 

Oracle Technology Network Developer License Agreement 

Oracle Solaris, Oracle Solaris Cluster and Oracle Solaris Express 

… 

Oracle may contact you to ask if you had a satisfactory experience installing and using this OTN software download. 

            Packages to remove: 1 
           Packages to install: 36 
            Packages to update: 455 
           Mediators to change: 2 
       Create boot environment: Yes 
Create backup boot environment: No 
DOWNLOAD                      PKGS         FILES        XFER (MB) 
Completed                  492/492   25247/25247      467.8/467.8 
PHASE                                    ACTIONS 
Removal Phase                          8164/8164 
Install Phase                        17909/17909 
Update Phase                         14639/14639 
PHASE                                      ITEMS 
Package State Update Phase               945/945 
Package Cache Update Phase               455/455 
Image State Update Phase                     2/2 
A clone of solaris-1 exists and has been updated and activated. 
On the next boot the Boot Environment SolarisU11.1 will be 
mounted on ‘/’. Reboot when ready to switch to this updated BE. 

The following unexpected or editable files and directories were 
salvaged while executing the requested package operation; they 
have been moved to the displayed location in the image: 

    var/crash -> /tmp/tmpa0wceg/var/pkg/lost+found/var/crash-20121029T111717Z 

————————————————————————— 

—————————————————————————  

Se ha creado un nuevo “Boot Environment” donde se ha realizado el upgrade de versión y que se ha activado para el próximo reinicio:

# beadm list 
BE Active Mountpoint Space Policy Created 
— —— ———- —– —— ——- 
SolarisU11.1 R – 7.41G static 2012-10-29 11:11 
solaris-1 N / 525.0K static 2012-10-10 16:26
Una vez reiniciado y arrancado con el nuevo “Boot Environment” podemos realizar las mismas comprobaciones que al inicio y veremos como estamos en una nueva ““Release” de Solaris 11, la 11.1:

  • Release

# cat /etc/release 
                           Oracle Solaris 11.1 X86 
Copyright (c) 1983, 2012, Oracle and/or its affiliates. All rights reserved. 
                         Assembled 19 September 2012

  • Uname

# uname -a 
SunOS solaris11repo 5.11 11.1 i86pc i386 i86pc

  • Kernel

# pkg info system/kernel 
          Name: system/kernel 
       Summary: Core Kernel 
   Description: Core operating system kernel, device drivers and other modules. 
      Category: System/Core 
         State: Installed 
     Publisher: solaris 
       Version: 0.5.11 
 Build Release: 5.11 
        Branch: 0.175.1.0.0.24.2 
Packaging Date: 19 de septiembre de 2012 18:50:11 
          Size: 32.59 MB 
          FMRI: pkg://solaris/system/kernel@0.5.11,5.11-0.175.1.0.0.24.2:20120919T185011Z

  • Entire

# pkg info entire 
          Name: entire 
       Summary: Incorporation to lock all system packages to the same build
   Description: This package constrains system package versions to the same
                build. WARNING: Proper system update and correct package
                selection depend on the presence of this incorporation. 
                Removing this package will result in an unsupported system. 
      Category: Meta Packages/Incorporations 
         State: Installed 
     Publisher: solaris 
       Version: 0.5.11 
 Build Release: 5.11 
        Branch: 0.175.1.0.0.24.2 
Packaging Date: 19 de septiembre de 2012 19:01:35 
          Size: 5.46 kB 
          FMRI: pkg://solaris/entire@0.5.11,5.11-0.175.1.0.0.24.2:20120919T190135Z

En el caso de que deseemos actualizar el servidor que contiene nuestro repositorio para poder actualizar el resto de nuestra infraestructura, deberemos primero realizar el upgrade sobre este servidor. A continuación, ya se podría actualizar el repositorio para tener los paquetes de la última Release:

  • Desde los repositorios de release (publicos de Oracle)

# pkgrecv -s http://pkg.oracle.com/solaris/release/ -d /export/repoSolaris11 ‘*’ 

Processing packages for publisher solaris… 
Retrieving and evaluating 4401 package(s)… 
PROCESS                                       ITEMS   GET (MB)    SEND (MB) 
Completed                                 1270/1270  5894/5894  19638/19638

  • Desde los repositorios de Soporte (es necesario un CSI activo):

# pkgrecv -s https://pkg.oracle.com/solaris/support/ -d /export/repoSolaris11\ –key /var/pkg/ssl/Oracle_Solaris_11_Support.key.pem \ –cert /var/pkg/ssl/Oracle_Solaris_11_Support.certificate.pem ‘*’ 
Processing packages for publisher solaris … 
Retrieving and evaluating 4414 package(s)… 

PROCESS                                      ITEMS     GET (MB)   SEND (MB) 
Completed                                      6/6      4.5/4.5   12.0/12.0

Anuncios

Crear repositorio local solaris 11

Una de las novedades de Solaris 11 con respecto a sus versiones anteriores es la utilización, por fin, de un sistema de gestión de paquetes parecido a los disponibles en linux. Este sistema permite la instalación de software de manera sencilla, conectandose a un repositorio (por defecto el de Oracle) de donde baja el software y todas sus dependencias. Ya no es necesario bajarse el paquete, revisar las dependencias, bajarse las dependencias, revisar a su vez las dependencias de las primeras, etc, etc…
Si solo vamos a tener unos pocos servidores será suficiente con mantener el repositorio de Oracle. En cambio, si vamos a tener una gran instalación puede interesar montar un repositorio local. De esta forma, el repositorio estará sincronziado con el de Oracle y los servidores no necesitarán conectarse a internet para la instalación de software. 
El aprovisionado de zonas también es mas rápido ya que en Solaris 11 es necesario la conexión al repositorio, haciendo que sea mas rápido si está en la red local.
Para la instalación del repositorio bajamos las imágenes ISO que ofrece Oracle desde su web de descargas. Son necesarias dos imágenes ISO que deberemos concatenarlas y montarlas en un directorio:

# cat sol-11-1111-repo-full.iso-a sol-11-1111-repo-full.iso-b > sol-11-1111-repo-full.iso
# mkdir /export/repoSolaris11
# mv sol-11-1111-repo-full.iso /export/repoSolaris11/
# mount -F hsfs /export/repoSolaris11/sol-11-1111-repo-full.iso /mnt
# ls /mnt
COPYRIGHT NOTICES README repo

A continuación se deberá sincronizar el contenido de la ISO con el directorio que servirá como repositorio:  

# rsync -aP /mnt/repo/ /export/repoSolaris11
sending incremental file list
./
pkg5.repository

240 100% 0.00kB/s 0:00:00 (xfer#1, to-check=1378/1380)

publisher/
publisher/solaris/
publisher/solaris/catalog/
publisher/solaris/catalog/catalog.attrs

1250 100% 23.94kB/s 0:00:00 (xfer#2, to-check=1369/1380)

publisher/solaris/catalog/catalog.base.C

602328 100% 6.24MB/s 0:00:00 (xfer#3, to-check=1368/1380)

publisher/solaris/catalog/catalog.dependency.C

Una vez haya terminado de sincronizar podemos desmontar la ISO:

root@s11template:/var/tmp# umount /mnt

    Con el contenido ya en su ubicación final es momento de crear el indice del repositorio:

    # pkgrepo -s /export/repoSolaris11 refresh
    Initiating repository refresh

      El repositorio hara uso de servicios que deberán ser configurados adecuadamente para que sirvan correctamente el software. El servicio publisher se configurará de la siguiente manera para hacer accesible el repositorio por http:

      # svccfg -s application/pkg/server setprop pkg/inst_root=/export/repoSolaris11
      # svccfg -s application/pkg/server setprop pkg/readonly=true
      # svcprop -p pkg/inst_root application/pkg/server /export/repoSolaris11

        Podemos verificar que se han guardado los cambios en la configuración y a continuación aplicar las modificaciones refrescando el servicio:

          # svcprop application/pkg/server
          pkg/address net_address
          pkg/cfg_file astring “”
          pkg/content_root astring usr/share/lib/pkg
          pkg/debug astring “” pkg/file_root astring “”
          pkg/log_access astring none
          pkg/log_errors astring stderr
          pkg/mirror boolean false
          pkg/pkg_root astring /
          pkg/port count 80
          pkg/proxy_base astring “”
          pkg/socket_timeout count 60
          pkg/sort_file_max_size astring “”
          pkg/ssl_cert_file astring “”
          pkg/ssl_dialog astring smf
          pkg/ssl_key_file astring “”
          pkg/threads count 60
          pkg/writable_root astring “”
          pkg/inst_root astring /export/repoSolaris11
          pkg/readonly boolean true
          pkg_bui/feed_description ustring “”
          pkg_bui/feed_icon ustring web/_themes/pkg-block-icon.png
          pkg_bui/feed_logo ustring web/_themes/pkg-block-logo.png
          pkg_bui/feed_name ustring package\ repository\ feed
          pkg_bui/feed_window count 24
          pkg_secure/read_authorization astring solaris.smf.read.pkg-server
          pkg_secure/ssl_key_passphrase astring “”
          fs/entities fmri svc:/system/filesystem/local
          fs/grouping astring require_all
          fs/restart_on astring none
          fs/type astring service
          autofs/entities fmri svc:/system/filesystem/autofs
          autofs/grouping astring optional_all
          autofs/restart_on astring none
          autofs/type astring service
          ntp/entities fmri svc:/network/ntp
          ntp/grouping astring optional_all
          ntp/restart_on astring none
          ntp/type astring service
          network/entities fmri svc:/milestone/network
          network/grouping astring require_all
          network/restart_on astring none
          network/type astring service
          manifestfiles/lib_svc_manifest_application_pkg_pkg-server_xml astring /lib/svc/manifest/application/pkg/pkg-server.xml
          general/entity_stability astring Unstable
          start/exec astring %{pkg/pkg_root}/lib/svc/method/svc-pkg-depot\ %m
          start/timeout_seconds count 0
          start/type astring method
          stop/exec astring %{pkg/pkg_root}/lib/svc/method/svc-pkg-depot\ %m\ %{restarter/contract}
          stop/timeout_seconds count 30
          stop/type astring method tm_common_name/C ustring image\ packaging\ repository

          # svcadm refresh application/pkg/server
          # svcadm enable application/pkg/server

            Con esto ya esta el servicio configurado. Ahora, al propio servidor se le puede configurar el publisher local como repositorio principal:

            # pkg set-publisher -G ‘*’ -M ‘*’ -g http://localhost:80/ solaris
            # pkg publisher
            PUBLISHER TYPE STATUS URI
            solaris origin online http://localhost:80/

              Si quisieramos volver al repositorio de Oracle:

              # pkg set-publisher \
              > -k /var/pkg/ssl/Oracle_Solaris_11_Support.key.pem \
              > -c /var/pkg/ssl/Oracle_Solaris_11_Support.certificate.pem \
              > -g https://pkg.oracle.com/solaris/support/ \
              > -G http://pkg.oracle.com/solaris/release/ solaris

              # pkg publisher
              PUBLISHER TYPE STATUS URI
              solaris origin online https://pkg.oracle.com/solaris/support/

                NOTA: Oracle dispone de dos repositorios, uno público, en el que no publica parches y otro privado que requiere el uso de certificados. Los certificados se consiguen aqui: http://pkg-register.oracle.com/ y es requesito disponer de un CSI válido para obtenerlos.

                Con el repositorio ya configurado podemos realizar una simulación de actualización:

                # pkg update -nv

                Packages to install: 6
                Packages to update: 238
                Mediators to change: 1
                Estimated space available: 1.67 GB
                Estimated space to be consumed: 1.04 GB
                Create boot environment: Yes
                Activate boot environment: Yes
                Create backup boot environment: No
                Rebuild boot archive: Yes

                Changed mediators:
                mediator java:
                version: None -> 1.6 (system default)

                Changed packages:
                solaris
                database/mysql-51/library
                None -> 5.1.37,5.11-0.175.0.0.0.2.537:20111019T091844Z
                library/apr-util-13/apr-ldap

                  Con este nuevo sistema podemos sacar un listado de paquetes con actualizaciones disponibles:

                  # pkg list -u
                  NAME (PUBLISHER) VERSION IFO
                  consolidation/SunVTS/SunVTS-incorporation 0.5.11-0.172.0.0.0.0.0 i–
                  consolidation/X/X-incorporation 0.5.11-0.175.0.0.0.0.1215 i–
                  consolidation/cacao/cacao-incorporation 0.5.11-0.174.0.0.0.0.0 i–
                  consolidation/cns/cns-incorporation 0.5.11-0.175.0.0.0.1.0 i–
                  consolidation/desktop/desktop-incorporation 0.5.11-0.175.0.0.0.2.0 i–
                  consolidation/desktop/gnome-incorporation 0.5.11-0.175.0.0.0.2.0 i–
                  consolidation/install/install-incorporation 0.5.11-0.175.0.0.0.2.1482 i–
                  consolidation/ips/ips-incorporation 0.5.11-0.175.0.0.0.2.2576 i–
                  consolidation/java/java-incorporation 0.5.11-0.173.0.0.0.0.0 i–
                  consolidation/l10n/l10n-incorporation 0.5.11-0.175.0.0.0.1.765 i–
                  consolidation/ldoms/ldoms-incorporation 0.5.11-0.175.0.0.0.1.0 i–

                  Actualización del Repositorio:

                  Existen dos repositorios de oracle, uno con los paquetes de la release y otro con los paquetes con actualizaciones y parches. Con el primero es normal que no actualice nada:

                  # pkgrecv -s http://pkg.oracle.com/solaris/release/ -d /export/repoSolaris11 ‘*’
                  Processing packages for publisher solaris …
                  Retrieving and evaluating 4292 package(s)…

                  En cambio, si configuramos el repositorio de soporte, si que bajará los parches que se han ido añadiendo al repositorio. Para poder configurar este repositorio deberemos disponer de las claves.

                  # pkgrecv -s https://pkg.oracle.com/solaris/support/ -d /export/repoSolaris11 \
                  > –key /var/pkg/ssl/Oracle_Solaris_11_Support.key.pem \
                  > –cert /var/pkg/ssl/Oracle_Solaris_11_Support.certificate.pem ‘*’
                  Processing packages for publisher solaris …
                  Retrieving and evaluating 4304 package(s)…
                  PROCESS ITEMS GET (MB) SEND (MB)
                  mail/thunderbird 21/391 56.5/2535.6 56.9/8402.3

                  Actualizando un sistema

                    Una vez tenemos el repositorio local actualizado podríamos parchear un sistema de la siguiente manera

                    # pkg update
                    Packages to install: 6
                    Packages to update: 238
                    Mediators to change: 1
                    Create boot environment: Yes
                    Create backup boot environment: No

                    DOWNLOAD PKGS FILES XFER (MB)
                    Completed 244/244 6412/6412 166.1/166.1

                    PHASE ACTIONS
                    Removal Phase 1944/1944
                    Install Phase 2455/2455
                    Update Phase 8580/8580

                    PHASE ITEMS
                    Package State Update Phase 482/482
                    Package Cache Update Phase 238/238
                    Image State Update Phase 2/2

                    A clone of solaris exists and has been updated and activated.
                    On the next boot the Boot Environment solaris-1 will be mounted on ‘/’.
                    Reboot when ready to switch to this updated BE.

                    —————————————————————————
                    NOTE: Please review release notes posted at:
                    http://www.oracle.com/pls/topic/lookup?ctx=E23824&id=SERNS
                    ————————————————————————–

                      Al existir parches de Kernel nos ha creado un nuevo Boot Environment, aunque no lo hayamos especificado explícitamente. Listanto los Boot Enviroments verificamos que se ha creado uno nuevo y se ha activado para el próximo reboot:

                      # beadm list
                      BE Active Mountpoint Space Policy Created
                      — —— ———- —– —— ——-
                      solaris N / 6.72M static 2012-10-08 17:42
                      solaris-1 R – 4.04G static 2012-10-10 16:26

                       
                      Antes de reiniciar para activar el nuevo Boot Environment verificaremos la versión de Kernel que tenemos actualmente instalada:

                      # pkg info system/kernel
                      Name: system/kernel
                      Summary: Core Kernel
                      Description: Core operating system kernel, device drivers and other modules.
                      Category: System/Core
                      State: Installed
                      Publisher: solaris
                      Version: 0.5.11
                      Build Release: 5.11
                      Branch: 0.175.0.0.0.2.1
                      Packaging Date: October 19, 2011 07:57:11 AM
                      Size: 32.33 MB
                      FMRI: pkg://solaris/system/kernel@0.5.11,5.11-0.175.0.0.0.2.1:20111019T075711Z

                       Una vez reiniciado el sistema, podemos ver que ha arrancado con una versión superior:

                      # pkg info system/kernel
                      Name: system/kernel
                      Summary: Core Kernel
                      Description: Core operating system kernel, device drivers and other modules.
                      Category: System/Core
                      State: Installed
                      Publisher: solaris
                      Version: 0.5.11
                      Build Release: 5.11
                      Branch: 0.175.0.11.0.4.1
                      Packaging Date: August 30, 2012 02:21:42 PM
                      Size: 32.04 MB
                      FMRI: pkg://solaris/system/kernel@0.5.11,5.11-0.175.0.11.0.4.1:20120830T142142Z

                      Vuelta atrás de un parcheo

                      Siempre que se lanza un parcheo existe la posibilidad de indicarle sobre que Boot Enviroment aplicarlo. Se le puede especificar que cree uno nuevo, donde se instalarán los parches, y posteriormente reiniciar el servidor con ese nuevo Boot Enviroment. El nuevo Boot Enviroment no siempre se crea de forma automática, pero si se lanza una simulacion de la actualización se indica en el resumen de la misma.
                      Para lanzar una actualización forzando la creación de un nuevo Boot Enviroment lo haremos de la siguiente forma:
                       
                      root@s11client:~# pkg update –require-new-be –be-name parcheo –accept
                      Packages to install: 6
                      Packages to update: 238
                      Mediators to change: 1
                      Create boot environment: Yes
                      Create backup boot environment: No

                      DOWNLOAD PKGS FILES XFER (MB)
                      Completed 244/244 6412/6412 166.1/166.1

                      PHASE ACTIONS
                      Removal Phase 1944/1944
                      Install Phase 2455/2455
                      Update Phase 8580/8580

                      PHASE ITEMS
                      Package State Update Phase 482/482
                      Package Cache Update Phase 238/238
                      Image State Update Phase 2/2

                      A clone of solaris exists and has been updated and activated.
                      On the next boot the Boot Environment parcheo will be mounted on ‘/’.
                      Reboot when ready to switch to this updated BE.

                      —————————————————————————
                      NOTE: Please review release notes posted at:
                      http://www.oracle.com/pls/topic/lookup?ctx=E23824&id=SERNS
                      —————————————————————————

                      Verificaremos el nuevo Boot Enviroment creado y que será el activo en el próximo arranque del servidor. Posteriormente reiniciamos para aplicarlo.

                      # beadm list
                      BE Active Mountpoint Space Policy Created
                      — —— ———- —– —— ——-
                      parcheo R – 4.15G static 2012-10-11 09:37
                      solaris N / 502.0K static 2012-10-08 17:42
                      # init 6

                      Al reiniciar vemos que la versión del kernel es la nueva, el boot enviroment activo es el creado durante el parcheo:

                      $ beadm list
                      BE Active Mountpoint Space Policy Created
                      — —— ———- —– —— ——-
                      parcheo NR / 4.22G static 2012-10-11 09:37
                      solaris – – 11.08M static 2012-10-08 17:42 

                      # pkg info system/kernel
                      Name: system/kernel
                      Summary: Core Kernel
                      Description: Core operating system kernel, device drivers and other modules.
                      Category: System/Core
                      State: Installed
                      Publisher: solaris
                      Version: 0.5.11
                      Build Release: 5.11
                      Branch: 0.175.0.11.0.4.1
                      Packaging Date: August 30, 2012 02:21:42 PM
                      Size: 32.04 MB
                      FMRI: pkg://solaris/system/kernel@0.5.11,5.11-0.175.0.11.0.4.1:20120830T142142Z

                      Si queremos volver atras el parcheo por algún motivo, basta con activar el boot enviroment original y reiniciar:

                      # beadm activate solaris
                      # beadm list BE
                      Active Mountpoint Space Policy Created
                      — —— ———- —– —— ——-
                      parcheo N / 810.33M static 2012-10-11 09:37
                      solaris R – 3.52G static 2012-10-08 17:42
                      root@s11client:~# init 6

                      Una vez reinicado vemos que el boot enviroment original es el activo y que la versión de kernel es la que teniamos inicialmente:

                      # pkg info system/kernel
                      Name: system/kernel
                      Summary: Core Kernel
                      Description: Core operating system kernel, device drivers and other modules.
                      Category: System/Core
                      State: Installed
                      Publisher: solaris
                      Version: 0.5.11
                      Build Release: 5.11
                      Branch: 0.175.0.0.0.2.1
                      Packaging Date: October 19, 2011 07:57:11 AM
                      Size: 32.33 MB
                      FMRI: pkg://solaris/system/kernel@0.5.11,5.11-0.175.0.0.0.2.1:20111019T075711Z
                      # beadm list BE
                      Active Mountpoint Space Policy Created
                      — —— ———- —– —— ——-
                      parcheo – – 812.17M static 2012-10-11 09:37
                      solaris NR / 3.57G static 2012-10-08 17:42
                       

                      Configuración del servicio a traves de proxy

                      Si no funciona la actualización y da time out es posible que sea debido a la configuración del proxy. Hay que configurar en las propiedades del servicio para que tome el proxy y también en las variables de entorno:
                       
                      # svccfg -s svc:/application/pkg/system-repository:default setprop config/http_proxy=astring: “http://USUARIO:PASSWORD@X.X.X.X:PPPP”
                      # svccfg -s svc:/application/pkg/system-repository:default setprop config/https_proxy=astring: “http://USUARIO:PASSWORD@X.X.X.X:PPPP”


                      Reconfigurar el servicio

                      # svcadm refresh svc:/application/pkg/system-repository:default

                      Verificacion de las propiedades:

                      # svcprop pkg/system-repository | grep proxy
                      config/http_proxy astring http://USUARIO:PASSWORD@X.X.X.X:PPPP
                      config/https_proxy astring http://USUARIO:PASSWORD@X.X.X.X:PPPP

                      Además es recomendable definir las variables de entorno:
                       
                      # export http_proxy=”http://USUARIO:PASSWORD@X.X.X.X:PPPP”
                      # export https_proxy=”http://USUARIO:PASSWORD@X.X.X.X:PPPP”

                      Ampliacion Filesystem de root en Solaris 11

                      En Solaris 10 ya se podía  pero en Solaris 11 es obligatorio la instalación de el filesystem de root con el sistema de ficheros ZFS. ZFS es un sistema de ficheros y gestor de volúmenes en un único software. Esto nos proporcionará múltiples ventajas y opciones de configuración: mirrors, stripes, Raid-Z, etc. El problema que tendremos si queremos ampliar dicho Filesystem y no existe espacio libre en el disco sin particionar es que no podemos añadirle un disco adicional al pool Rpool. La única opción de ampliación de dicho Filesystem pasa por asignar un disco de mayor capacidad, sincronizarlo, separar el mirror y arrancar con el nuevo disco.



                      Para conseguir ampliar el disco seguiremos los siguientes pasos:
                      1. Asignamos el nuevo disco (insertamos un disco mayor en un slot libre o asignamos nuevo disco virtual si se trata de una maquina virtual) y lo escaneamos desde Solaris:
                      root@solaris11:~# cfgadm -l
                      Ap_Id Type Receptacle Occupant Condition  
                      c4 scsi-bus connected configured unknown  
                      c4::dsk/c4t0d0 disk connected configured unknown  
                      c4::dsk/c4t1d0 disk connected configured unknown

                      2. En el nuevo disco creamos la partición Fdisk del disco completo. Para ello podemos ejecutar un format, seleccionar el disco y particionarlo con el menú de fdisk. A mi me gusta mas este comando, que nos permite crear el particionado fdiks en una línea:

                      root@solaris11:~# fdisk -B c4t1d0p0

                      Podemos verificar el particionado del disco de la siguiente manera:

                      root@solaris11:~# fdisk -W – c4t1d0p0
                      * /dev/rdsk/c4t1d0p0 default fdisk table 
                      * Dimensions: 
                      * 512 bytes/sector 
                      * 63 sectors/track 
                      * 255 tracks/cylinder 
                      * 5221 cylinders  
                      …  
                      …  
                      * Id Act Bhead Bsect Bcyl Ehead Esect Ecyl Rsect Numsect  
                      191 128 0 1 1 254 63 1023 16065 83859300  
                      0 0 0 0 0 0 0 0 0
                      0 0 0 0 0 0 0 0 0 0
                      0 0 0 0 0 0 0 0 0 0 

                      3. Crear las particiones de solaris (slices en adelante) en el nuevo disco. Para ello podemos copiar el particionado del disco original o con un format particionar el disco nuevo asignándole todos los cilindros al Slice 0. Con la primera opción nos mostrará un warning:

                      root@solaris11:~# prtvtoc /dev/rdsk/c4t0d0s2 | fmthard -s – /dev/rdsk/c4t1d0s2
                      fmthard: Partition 2 specifies the full disk and is not equal full size of disk.  
                      The full disk capacity is 83827170 sectors.  
                      fmthard: New volume table of contents now in place.

                      4. Ya estamos en disposición de asignar el disco al pool. Con este comando se ve lo fácil que es crear un mirror con ZFS, a diferencia de lo que ocurria con SVM. Primero verificamos que el pool esta correcto y no tiene fallos y a continuación asignamos el Slice 0 del nuevo disco:

                      root@solaris11:~# zpool status  
                      pool: rpool  
                      state: ONLINE  
                      scan: none requested  
                      config:  
                          NAME STATE READ WRITE CKSUM  
                        rpool ONLINE 0 0 0  
                          c4t0d0s0 ONLINE 0 0 0

                        errors: No known data errors  
                      root@solaris11:~# zpool attach -f rpool c4t0d0s0 c4t1d0s0
                       
                      Make sure to wait until resilver is done before rebooting.
                      5. Con el comando ‘zpool status’ vamos comprobando el estado de la sincronización:

                      root@solaris11:~# zpool status  
                      pool: rpool  
                      state: ONLINE  
                      status: One or more devices is currently being resilvered. The pool will
                      continue to function, possibly in a degraded state.  
                      action: Wait for the resilver to complete.  
                      scan: resilver in progress since Wed Oct 31 17:39:29 2012 2,92G scanned out of 17,0G at 8,76M/s, 0h27m to go 2,92G resilvered, 17,14% done  
                      config:
                        NAME STATE READ WRITE CKSUM
                       rpool ONLINE 0 0 0
                        mirror-0 ONLINE 0 0 0
                         c4t0d0s0 ONLINE 0 0 0
                         c4t1d0s0 ONLINE 0 0 0 (resilvering)
                      errors: No known data errors

                      6. Será necesario instalar el GRUB en el nuevo disco para asegurarnos que una vez hayamos quitado el disco original el sistema sea capaz de arrancar. Para ello, como hacíamos en Solaris 10, ejecutamos el siguiente comando: 

                      root@solaris11:~# installgrub -fm /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c4t1d0s0

                      7. Una vez haya terminado la sincronización separamos el pool. Al separar el pool en el nuevo disco se habrá creado un nuevo pool que posteriormente podremos importar:

                      root@solaris11:~# zpool split rpool rpool2 c4t1d0s0

                      8. A continuación apagamos el servidor, desconectamos el disco original y arrancamos el sistema con una imagen de Solaris 11, ya sea la versión Live o con el instalador y seleccionando la opción 3 para abrir una shell. Una vez tengamos el promt importaremos el pool que habíamos creado al separar el mirror y lo importaremos con el nombre rpool para que el GRUB sea capaz de encontrarlo:

                      # zpool import rpool2 rpool 
                      # zpool export rpool 

                      9. Una vez se haya exportado el rpool ya podemos reiniciar y debería arrancar ya con el nuevo disco. Es posible que el zpool aún vea el espacio original. Para ello hay que modificar la propiedad autoexpand para que crezca el espacio automáticamente:

                      root@solaris11:~# zpool set autoexpand=on rpool

                      10. Dependiendo de la opción elegida en el punto 3, es posible que sea necesario modificar la Slice 0 del disco para asignarle todos los cilindros disponibles.

                      
                      

                      Configuración básica de red en Solaris 11

                      En Solaris 11 ha cambiado completamente la configuración de la red. Se ha reescrito por completo el código y los comandos que se venían utilizando hasta ahora ya no sirven.

                      En la siguiente guía se puede entrar mas en detalle en algunos parámetros avanzados, pero en este post explicaré como realizar las tareas básicas de red:
                      Para ver el estado físico de las interfaces se utilza el comando “dladm”. Este comando ya existía en Solaris 10 pero ahora nos devolverá información sobre el dispositivo, el estado de la interfaz, el link y el nombre del dispositivo virtual (net0, net1, etc) algo parecido a lo que ya estamos acostumbrados a ver en Linux.
                      Con los subcomandos “show-phys” y “show-link” veremos toda esta información:

                      Para poder trabajar con una interfaz, lo primero que hay que hacer es activarla. Para ello se utiliza el comando “ipadm create-ip”. Una vez creada ya se pueden levantar las IPs que sean necesarias:
                      Para configurar la IP en una interfaz se utiliza el comando “ipadm create-addr”. Se puede definir que se utilice una IP estática o una IP dinámica y por cada interfaz se creará un alias de la forma IFNAME/”alias”. De esta forma se identificará unívocamente cada IP levantada sobre la interfaz. Veamos un ejemplo:
                      Como vemos, la interfaz no la ha levantado. Esto es debido a que originalmente el servidor se instaló utilizando un servidor DHCP. Para permitir que se utilicen direcciones estáticas debemos cambiar el modo NCP a DefaultFixed. Con el comando netadm list podemos ver que el NCP estaba por defecto en Automático:
                      Una vez configurada la interfaz, lo que debemos hacer es configurar el default gateway para tener salida hacia otras redes. Para ello, se utilizará el comando route, con la opción -p para hacerlo permanente:
                      Ya la última de las tareas básicas para poder conectarnos a la red es la configuración de DNS. Al haber desactivado el NCP el fichero /etc/nsswitch.conf no queda configurado para utilizar DNS. Para configurarlo hay que editar las propiedades del servicio name-service/switch de la siguiente manera:

                      # svccfg -s svc:/system/name-service/switch
                      svc:/system/name-service/switch> select name-service/switch:default
                      svc:/system/name-service/switch> setprop config/host = astring: “files dns”
                      svc:/system/name-service/switch:default> refresh
                      svc:/system/name-service/switch:default> validate
                      svc:/system/name-service/switch> exit


                      Si ahora vemos el contenido del fichero /etc/nsswitch.conf vemos que ya incluye la opción de resolver hosts a través de DNS:
                      # grep dns /etc/nsswitch.conf 
                      hosts:  files dns
                      ipnodes:        files dns

                      Para configurar los servidores DNS y los dominios de búsqueda editaremos las propiedades del servicio dns/client. Al igual que en el caso anterior:

                      # svccfg -s svc:/network/dns/client
                      svc:/network/dns/client> setprop config/nameserver=net_address: (8.8.8.8 8.8.4.4)
                      svc:/network/dns/client> listprop config/nameserver
                      config/nameserver net_address 8.8.8.8 8.8.4.4
                      svc:/network/dns/client> setprop config/search= (“es.acme.com” “acme.com”)
                      svc:/network/dns/client> listprop config/search
                      config/search astring     “es.acme.com” “acme.com”
                      svc:/network/dns/client> select default
                      svc:/network/dns/client:default> validate
                      svc:/network/dns/client:default> refresh
                      svc:/network/dns/client:default> exit

                      Podemos ver que el contenido del fichero /etc/resolv.conf se ha actualizado con los parámetros que hemos cambiado y que la resolución ya funciona correctamente:

                      # more /etc/resolv.conf 

                      #
                      # _AUTOGENERATED_FROM_SMF_V1_
                      #
                      # WARNING: THIS FILE GENERATED FROM SMF DATA.
                      #   DO NOT EDIT THIS FILE.  EDITS WILL BE LOST.
                      # See resolv.conf(4) for details.

                      domain globalia.com
                      search es.acme.com acme.com
                      nameserver 8.8.8.8
                      nameserver 8.8.4.4