Traducciones de esta página:

Instalación de LDOMs en un servidor Sun Fire T2000

Actualización del firmware

Atención: esta parte es delicada. Errores actualizando el firmware pueden dejar un servidor de más de 3000€ convertido en un ladrillo muy pesado. Se recomienda actuar con cuidado.

Antes de nada, entramos en el controlador de consola de la T2000 para ver la versión actual del firmware:

sc> showhost
Sun-Fire-T2000 System Firmware 6.5.3  2007/10/03 05:56

Host flash versions:
   Hypervisor 1.5.2 2007/09/25 08:39
   OBP 4.27.4 2007/10/02 18:35
   POST 4.27.4 2007/10/02 19:03 

De acuerdo con la Guia de ldoms 1.2, necesitamos tener el firmware 6.7.4 o posterior. El parche 139434-03 incluye esa revisión del firmware. Lo podemos bajar de esta página.

Dentro del parche encontraremos un fichero con instrucciones de instalación (Install.info) que nos dice que hay un método de instalación que puede iniciarse desde la consola de Solaris, y requiere menos configuración previa. En el fichero sysfwdownload.README encontramos las instrucciones específicas de este método: en primer lugar, es necesario que la revisión del firmware actual sea la 6.1.10 o posterior. En nuestro caso tenemos la 6.5.3, así que podemos continuar.

Descomprimimos el parche y nos llevamos los archivos Sun_System_Firmware-6_7_4-Sun_ Fire_T2000.bin y sysfwdownload al directorio /tmp/images. Allí ejecutamos:

# ./sysfwdownload ./Sun_System_Firmware-6_7_4-Sun_Fire_T2000.bin

.......... (10%).......... (20%).......... (30%).......... (41%).......... (51%).......... (61%).......... (71%).......... (82%).......... (92%)........ (100%)

Download completed successfully.

Activación del firmware

Ahora vamos a la parte delicada, es conveniente hacerlo desde la consola serie para analizar cualquier problema que pueda surgir.

Paramos el sistema, apagamos la máquina y cargamos el firmware:

# shutdown -i0
...
{1b} ok #.
sc> poweroff
Are you sure you want to power off the system [y/n]?  y
sc>

SC Alert: SC Request to Power Off Host.

SC Alert: Host system has shut down.

Una vez que veamos el mensaje "Host system has shut down", procedemos a cargar el firmware:

sc> setkeyswitch -y normal
sc> flashupdate -s 127.0.0.1
    .....................................................................
    .....................................................................
Update complete. Reset device to use new software.

sc> resetsc
User Requested SC Shutdown

Esperamos un minuto y nos reconectamos a la consola:

sc> showhost
Sun-Fire-T2000 System Firmware 6.7.4  2009/06/10 13:32

Host flash versions:
   OBP 4.30.3 2009/06/08 13:29
   Hypervisor 1.7.3 2009/06/08 18:00
   POST 4.30.3 2009/06/08 13:55 

Ya tenemos el nuevo firmware, así que encendemos la máquina y la dejamos arrancar (tardará más de lo habitual, por los tests hardware):

sc> poweron
sc> console
...
...
gnomehispano console login:

Configuración inicial del software

Instalación de paquetes

En Opensolaris 2009.06 para Sparc es bastante simple:

global# pkg install ldomsmanager

La orden anterior instala los paquetes:

SUNWldom                                      0.5.11-0.111    installed  ----
system/ldoms/ldomsmanager                     1.2-0.111       installed  ----

Como vemos, Opensolaris 2009.06 incluye LDOMS 1.2, la última versión lanzada.

En nuestro caso hizo falta importar el SMF de ldoms, como sigue:

# svccfg import /var/svc/manifest/platform/sun4v/ldmd.xml

Tras esto, tenemos el demonio controlador online:

global# svcs -a|grep ldom
disabled       10:39:35 svc:/ldoms/vntsd:default
online         10:42:56 svc:/ldoms/ldmd:default

El controlador de dominio ya puede consultarse:

global# ldm ls
------------------------------------------------------------------------------
Notice: the LDom Manager is running in configuration mode. Configuration and
resource information is displayed for the configuration under construction;
not the current active configuration. The configuration being constructed
will only take effect after it is downloaded to the system controller and
the host is reset.
------------------------------------------------------------------------------
NAME             STATE      FLAGS   CONS    VCPU  MEMORY   UTIL  UPTIME
primary          active     -n-c--  SP      32    32640M   0.1%  1h 2m

Configuración del controlador de dominio

A nuestro controlador de dominio le vamos a asignar, ya que tiene actualmente varias zonas corriendo, suficientes recursos. En particular, le vamos a dar 16 hilos y 16 Gb de RAM, es decir, la mitad de los recursos de la máquina, lo cual es suficiente para los servicios actuales (servidores web públicos de la zona web y servidores web privados de la zona admin). Además, gestionaremos la red de los dominios con un virtual switch configurado en la interfaz física e1000g2, para nuestras pruebas iniciales.

Por otro lado, para los discos virtuales crearemos un espacio ZFS específico, /export/ldomsvdisks, donde iremos creando los discos virtuales.

Vamos a ir introduciendo los comandos para configurar el controlador de dominio. Estos comandos consisten en, por un lado, configurar un servidor de discos virtuales (para luego apoyar en él los discos virtuales que se vayan creando), configurar un rango de puertos para las consolas de los dominios lógicos, crear un switch virtual para los dispositivos de red y asignar solo una parte de los recursos hardware para dejar el resto libre para los dominios lógicos:

global# ldm add-vds primary-vds0 primary
------------------------------------------------------------------------------
Notice: the LDom Manager is running in configuration mode. Any configuration
changes made will only take effect after the machine configuration is
downloaded to the system controller and the host is reset.
------------------------------------------------------------------------------
global# ldm add-vcc port-range=5000-5100 primary-vcc0 primary
------------------------------------------------------------------------------
Notice: the LDom Manager is running in configuration mode. Any configuration
changes made will only take effect after the machine configuration is
downloaded to the system controller and the host is reset.
------------------------------------------------------------------------------
global# ldm add-vsw net-dev=e1000g2 primary-vsw0 primary
------------------------------------------------------------------------------
Notice: the LDom Manager is running in configuration mode. Any configuration
changes made will only take effect after the machine configuration is
downloaded to the system controller and the host is reset.
------------------------------------------------------------------------------
global# ldm set-mau 1 primary
------------------------------------------------------------------------------
Notice: the LDom Manager is running in configuration mode. Any configuration
changes made will only take effect after the machine configuration is
downloaded to the system controller and the host is reset.
------------------------------------------------------------------------------
global# ldm set-vcpu 16 primary
------------------------------------------------------------------------------
Notice: the LDom Manager is running in configuration mode. Any configuration
changes made will only take effect after the machine configuration is
downloaded to the system controller and the host is reset.
------------------------------------------------------------------------------
global# ldm set-memory 16384m primary
------------------------------------------------------------------------------
Notice: the LDom Manager is running in configuration mode. Any configuration
changes made will only take effect after the machine configuration is
downloaded to the system controller and the host is reset.
------------------------------------------------------------------------------
global# ldm ls
------------------------------------------------------------------------------
Notice: the LDom Manager is running in configuration mode. Configuration and
resource information is displayed for the configuration under construction;
not the current active configuration. The configuration being constructed
will only take effect after it is downloaded to the system controller and
the host is reset.
------------------------------------------------------------------------------
NAME             STATE      FLAGS   CONS    VCPU  MEMORY   UTIL  UPTIME
primary          active     -n-cv-  SP      16    16G       0.0%  1h 9m

Guardamos configuración y reiniciamos, veremos en consola que el banner nos informa ya de la nueva configuración (4 Gb de RAM):

global# ldm list-spconfig
factory-default [current]
global# ldm add-spconfig config_01
global# ldm list-spconfig
global# init 6
...
...
syncing file systems... done
rebooting...

SC Alert: Host System has Reset
...
...
Sun Fire T200, No Keyboard
Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
OpenBoot 4.30.3, 16384 MB memory available, Serial #70066726.
Ethernet address 0:14:4f:2d:22:26, Host ID: 842d2226.


Boot device: /pci@780/pci@0/pci@9/scsi@0/disk@0,0:a  File and args:
zfs-file-system 
...
...
gnomehispano.osuosl.org console login:

Creación de un dominio lógico con Opensolaris 2009.06

Crearemos un dominio lógico de prueba e instalaremos en él Opensolaris 2009.06. A este dominio le asignaremos 2 Gb de RAM y 4 Gb de disco.

global# ldm list-domain
NAME             STATE      FLAGS   CONS    VCPU  MEMORY   UTIL  UPTIME
primary          active     -n-cv-  SP      8     4G       0.2%  10m
global# ldm add-domain t2000-01
global# ldm add-vcpu 4 t2000-01
global# ldm add-memory 2048m t2000-01
global# ldm add-vnet vnet1 primary-vsw0 t2000-01
global# zfs create rpool/export/ldomsvdisks
global# mkfile 4G /export/ldomsvdisks/t2000-01-00.img
global# ldm add-vdsdev /export/ldomsvdisks/t2000-01-00.img vol1@primary-vds0
global# ldm add-vdisk vdisk1 vol1@primary-vds0 t2000-01
global# ldm set-variable auto-boot\?=false testldm01
global# ldm bind-domain t2000-01
global# ldm list-domain
NAME             STATE      FLAGS   CONS    VCPU  MEMORY   UTIL  UPTIME
primary          active     -n-cv-  SP      8     4G       0.2%  13m
t2000-01         bound      ------  5000    4     2G             

Inicio del dominio y conexión a consola:

global# ldm start-domain t2000-01 ; telnet 127.0.0.1 5000
LDom t2000-01 started
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.

Connecting to console "t2000-01" in group "t2000-01" ....
Press ~? for control options ..

Sun Fire T200, No Keyboard
Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
OpenBoot 4.30.3, 2048 MB memory available, Serial #83521591.
Ethernet address 0:14:4f:fa:70:37, Host ID: 84fa7037.


{0} ok boot vdisk

Bad magic number in disk label
ERROR: /virtual-devices@100/channel-devices@200/disk@0: Can't open disk label package

ERROR: boot-read fail

{0} ok

Bien, como vemos el dominio está listo, pero como sabemos Opensolaris 2009.06 en Sparc solo se puede instalar con el procedimiento "Automated Install", basado en un servidor de instalaciones, por lo que vamos a proceder a instalarlo a continuación.

Configuración del servidor de instalaciones (AI)

Para hacer el servidor de instalaciones, necesitamos configurar la interfaz de red vsw0, con la IP del rango elegido para los dominios, en nuestro caso 192.168.91.0/24 (podríamos mezclarla con las zonas, pero por ahora lo mantendremos separado). Para ello, crearemos el fichero /etc/hostname.vsw0 y la IP 192.168.91.1. Además podemos activar a mano la interfaz con el comando:

global# ifconfig vsw0 plumb ; ifconfig vsw0 192.168.91.1 netmask 255.255.255.0 up

Debemos añadir lo siguiente a /etc/ipf/ipnat.conf para permitir acceso al exterior a nuestros dominios virtuales:

map e1000g0 192.168.91.0/24 -> 0/32 proxy port ftp ftp/tcp
map e1000g0 192.168.91.0/24 -> 0/32 portmap tcp/udp auto
map e1000g0 192.168.91.0/24 -> 0/32

Y luego ejecutar el reinicio de ipnat:

global# ipnat -CF -f /etc/ipf/ipnat.conf

Ahora instalamos el paquete para el servidor de instalaciones:

# pkg install SUNWinstalladm-tools

Creamos un espacio ZFS y nos bajamos allí la imagen de instalación de Opensolaris 2009.06:

# zfs create rpool/export/aiserver
# cd /export/aiserver
# wget http://dlc.sun.com/osol/opensolaris/2009/06/osol-0906-ai-sparc.iso

Configuremos ahora el servidor de instalaciones:

# installadm create-service -n 0906sparc -s /export/aiserver/opensolaris200906-ai.iso /export/aiserver/0906sparc
Setting up the target image at /export/aiserver/0906sparc ...
Registering the service 0906sparc._OSInstall._tcp.local
Detected that DHCP is not set up on this server.
If not already configured, please create a DHCP macro
named dhcp_macro_0906sparc with:
   Boot server IP (BootSrvA) : 140.211.167.154
   Boot file      (BootFile) : http://140.211.167.154:5555/cgi-bin/wanboot-cgi
If you are running Sun's DHCP server, use the following
command to add the DHCP macro, dhcp_macro_0906sparc:
   /usr/sbin/dhtadm -g -A -m dhcp_macro_0906sparc -d :BootSrvA=140.211.167.154:BootFile=\"http://140.211.167.154:5555/cgi-bin/wanboot-cgi\":

Note: Be sure to assign client IP address(es) if needed
(e.g., if running Sun's DHCP server, run pntadm(1M)).
Service discovery fallback mechanism set up
Creating SPARC configuration file

El servidor de instalaciones lo modificaremos para que no verifique que el disco destino tenga 12 Gb de capacidad libres. Esto se debe a que manejaremos discos virtuales más pequeños. Para ello, seguiremos este procedimiento. También, es conveniente reducir la instalación a unos 600 Mb, siguiendo este otro procedimiento.

Instalación del dominio lógico

Ahora que ya tenemos el servidor de instalaciones listo, vamos a instalar el dominio lógico. Como no queremos usar DHCP, pondremos a nuestro dominio la variable Openprom con los parámetros de red:

global# ldm set-variable network-boot-arguments=host-ip=192.168.91.2,router-ip=192.168.91.1,subnet-mask=255.255.255.0,hostname=opensolaris,file=http://192.168.91.1:5555/cgi-bin/wanboot-cgi t2000-01

Una vez hecho, nos vamos a la consola del dominio y tratamos de arrancar, aunque como no tenemos DHCP (intencionadamente) pondremos los parámetros de arranque en network-boot-arguments del Openboot como hicimos cuando instalamos la máquina física:

global# telnet 127.0.0.1 5000
Connecting to console "t2000-01" in group "t2000-01" ....
Press ~? for control options ..

~ ?
{0} ok boot net
...
...
Boot device: /virtual-devices@100/channel-devices@200/network@0  File and args: 
Unknown key 'subnetmask'
<time unavailable> wanboot info: WAN boot messages->console
<time unavailable> wanboot info: configuring /virtual-devices@100/channel-devices@200/network@0

Unknown key 'subnetmask'
<time unavailable> wanboot info: Defaulting to classful subnetting
<time unavailable> wanboot progress: wanbootfs: Read 366 of 366 kB (100%)
<time unavailable> wanboot info: wanbootfs: Download complete
...

Una vez iniciado, tendremos los problemas que encontrábamos en nuestra instalación sin DHCP. En este caso, lo que tendremos que hacer es, poner desde la shell de emergencia los parámetros de red y el servidor DNS. El resto de la instalación tendrá lugar por red. Esto ya lo vimos en nuestro procedimiento de instalación de Opensolaris 2009.06 para Sparc sin DHCP, que ahora repetiremos para el dominio lógico.

Enter user name for system maintenance (control-d to bypass): root
Enter root password for system maintenance (control-d to bypass): 
single-user privilege assigned to root on /dev/console.
Entering System Maintenance Mode

Aug  7 18:44:24 su: 'su root' succeeded for root on /dev/console

-bash: /usr/sbin/quota: No such file or directory
Sun Microsystems Inc.	SunOS 5.11	snv_111b	November 2008
-bash: /bin/mail: No such file or directory
-bash: /usr/bin/hostname: No such file or directory
root@:~# ifconfig vnet0 192.168.91.2 netmask 255.255.255.0 up
root@:~# cat > /etc/resolv.conf
nameserver 140.211.166.130
root@:~# cat > /etc/defaultrouter
192.168.91.1
root@:~# route add default 192.168.91.1
add net default: gateway 192.168.91.1
root@:~# rm /etc/nsswitch.conf
root@:~# cat /etc/nsswitch.dns > /etc/nsswitch.conf
root@:~# ping pkg.opensolaris.org
pkg.opensolaris.org is alive
root@:~# umount /etc/netboot
root@:~# rm -rf /etc/netboot
root@:~# umount /tmp
root@:~# svcadm disable dscp
root@:~# svcadm disable sckmd
root@:~# svcadm clear root:live-media
root@:~# Remounting root read/write
Probing for device nodes ...
Preparing automated install image for use  
The AI image will be retrieved from /export/aiserver/osol-0906-ai-sparc/ directory
Downloading solaris.zlib archive
--18:47:42--  http://192.168.91.1:5555/export/aiserver/osol-0906-ai-sparc//solaris.zlib
           => `/tmp/solaris.zlib'
Connecting to 192.168.91.1:5555... connected.
HTTP request sent, awaiting response... 200 OK
Length: 83,334,656 (79M) [text/plain]
...
18:47:50 (10.04 MB/s) - `/tmp/solaris.zlib' saved [83334656/83334656]

Downloading solarismisc.zlib archive
--18:47:50--  http://192.168.91.1:5555/export/aiserver/osol-0906-ai-sparc//solarismisc.zlib
           => `/tmp/solarismisc.zlib'
Connecting to 192.168.91.1:5555... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3,857,408 (3.7M) [text/plain]
...
18:47:50 (11.24 MB/s) - `/tmp/solarismisc.zlib' saved [3857408/3857408]

--18:47:50--  http://192.168.91.1:5555/export/aiserver/osol-0906-ai-sparc//install.conf
           => `/tmp/install.conf'
Connecting to 192.168.91.1:5555... connected.
HTTP request sent, awaiting response... 200 OK
Length: 67 [text/plain]
18:47:50 (1.82 MB/s) - `/tmp/install.conf' saved [67/67]

Done mounting automated install image

Configuring devices.
Reading ZFS config: done
Aug  7 18:48:01 opensolaris sendmail[339]: My unqualified host name (localhost) unknown; sleeping for retry  


root@opensolaris:~# svcadm clear dns/multicast
root@opensolaris:~# logout
Service discovery phase initiated
Service name to look up: 0906sparc


opensolaris console login: Service discovery finished successfully
Process of obtaining configuration manifest initiated
Configuration manifest obtained
Automated Installation started
The progress of the Automated Installation can be followed by viewing  the logfile at /tmp/install_log

Desactivación del servidor de instalaciones

Una vez instalado el dominio lógico, debemos desactivar el servidor de instalaciones:

# installadm disable 0906sparc
# pkill httpd

Para reactivarlo posteriormente pondremos:

# installadm enable 0906sparc

¿Podemos instalar otro sistema operativo que no sea Solaris/Opensolaris en un dominio lógico?

La respuesta simple es "bastante complicado, pero se puede". La respuesta más larga es: lo hemos intentado, con Natamar (otra distribución para Sparc basada en Opensolaris), Debian y Ubuntu, y solo en el caso de Debian lo hemos conseguido, y no resulta fácil. Veamos los detalles:

Intentando instalar Natamar en un dominio lógico

Podemos probar el CD-ROM de Natamar para un dominio lógico. En primer lugar nos lo bajamos:

global# wget http://www.martux.org/RELEASES/SPARC_distro_incl_Xorg7.2/cdrom__NoGnome_NoJDS_with_icewm/Natamar_0.4__b96_sparc_cdrom.iso

Y lo registramos en el dominio:

global# ldm add-vdsdev /export/aiserver/Natamar_0.4__b96_sparc_cdrom.iso vol2@primary-vds0
global# ldm add-vdisk vcdrom vol2@primary-vds0 t2000-01

Con esto podemos arrancar el dominio virtual e instalar Natamar en él.

...
ok boot vcdrom -v

Veremos que la imagen del CDROM arranca, pero el menú posterior se queda bloqueado. Estamos pendientes de intentar eliminar dicho menú, construyéndonos una versión personalizada de Natamar.

Intentando instalar Debian/Sparc en un dominio lógico

Este es el único caso que nos ha funcionado. Hemos documentado el resultado en esta página aparte para Debian.

Intentando instalar Ubuntu/Sparc en un dominio lógico

Necesitamos Ubuntu gutsy o posterior. La única distribución que no ha congelado el núcleo al cargarse él mismo o al cargar los drivers de disco, es Gutsy, que no está actualmente soportada por Ubuntu. Esto descarta su uso para VMs en producción, aunque tal vez se pueda instalar una Gutsy y luego ir actualizando hasta llegar a la actual.

Nos bajamos el fichero boot.img para hacer un servidor de arranque tftp:

global# mkdir /tftpboot ; cd /tftpboot
global# wget http://old-releases.ubuntu.com/ubuntu/dists/gutsy/main/installer-sparc/current/images/sparc64/netboot/2.6/boot.img

Ahora creamos un link más en el /tftpboot que es dependiente de la dirección IP asignada a la instalación, que es 192.168.91.2. Es decir, haremos lo siguiente:

global# cd /tftpboot
global# ln -sf boot.img `printf %02x 192 168 91 2|tr [:lower:] [:upper:]`
global# ls -l
...
lrwxrwxrwx   1 root     root          15 Sep 18 19:42 C0A85B02 -> boot.img
...

Configuramos el servicio tftp:

global# echo "tftp dgram udp6 wait root /usr/sbin/in.tftpd in.tftpd -s /tftpboot" > ~/tftp.inetd.conf
global# inetconv -i tftp.inetd.conf
global# svcs -a|grep tftp
online         19:05:45 svc:/network/tftp/udp6:default

Instalamos y configuramos RARP:

global# pkg install SUNWbs

Guardamos la dirección MAC de la máquina en /etc/ethers y activamos el rarp:

global# ldm ls -l testldm01
...
  MAC
    00:14:4f:fa:70:37
global# echo "00:14:4f:fa:70:37 testldm01" > /etc/ethers
global# echo "192.168.91.2    testldm01" >> /etc/hosts
global# svcadm enable rarp

En el dominio intentamos arrancar por red:

{0} boot net
Boot device: /virtual-devices@100/channel-devices@200/network@0  File and args: 
Requesting Internet Address for 0:14:4f:fb:2:4a

Cuando llegue la hora de seleccionar un mirror de instalación, debemos elegir la opción "Configurar manualmente", y poner los datos: http://old-releases.ubuntu.com/ como mirror, y /ubuntu/ como directorio. La instalación transcurrirá normalmente y al finalizar podremos iniciar el nuevo sistema operativo.

Eliminación del dominio lógico y recursos asignados a él

Para eliminar el dominio lógico, debemos liberar los discos y red virtuales y a continuación eliminarlo. En nuestro ejemplo:

# ldm remove-vdisk vdisk1 t2000-01
# ldm remove-vdsdev vol1@primary-vds0
# ldm remove-vnet vnet1 t2000-01
# ldm unbind-domain t2000-01
# ldm remove-domain t2000-01
# rm -f /export/ldomsvdisks/t2000-01-00.img

Referencias

 
ldominstall.txt · Última modificación: 2010/01/13 00:35 (editor externo)
 
Excepto donde se indique lo contrario, el contenido de esta wiki se autoriza bajo la siguiente licencia:CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki