Solaris: Configurando LDoms en un T1000

LDoms, OpenSolaris, Virtualizacion Dejar un comentario

Logical Domain consiste en una solución intermedia, entre la zonas y los dominios hardware. Podemos asignar una serie de recursos HW de la máquina, para que sean compartidos o no, entre varios dominios, cada uno de estos dominios con su propio SO. LDoms se basa una capa intermedia entre el HW y el SO, dicha capa es conocida por el nombre de Hypervisor. El Hypervisor permite que se pueda crear varias máquinas virtuales, compartiendo el HW disponible en el sistema. Con esta nueva capa, el SO no necesita conocer qué HW está disponible en la máquina, siendo el Hypervisor el que realiza todo el trabajo.

LDoms, actualmente solo está soportado en las siguiente plataformas:

  • Sun Fire T1000 / T2000 Server.
  • Netra T2000 Server.
  • Netra CP3060 Blade.
  • Sun Blade T6300 Server Module.

IMPORTANTE – Este artículo no pretende ser un manual de instalación de LDoms, hay documentación específica para este fin. En el artículo he intentado reflejar mi experiencia durante la instalación en un entorno específico, como es una máquina T1000 sin CDROM. Durante la instalación me encontré con una serie de inconvenientes, los cuales he reflejado aquí, por si pueden ayudar a alguien.

Arquitectura de LDoms

No vamos a emplear mucho tiempo para describir la arquitectura de la tecnología de LDoms, ya que existen varios documentos que la explican perfectamente:

Pero aunque no vamos a entrar en profundidad, vamos a dar una serie de pinceladas, que nos permitirán ejecutar los ejemplos del artículo. Existen 4 componentes principales:

  • Control Domain, es el encargado de gestionar los distintos dominios lógicos.
  • Service Domain, se encarga de gestionar los dispositivos virtuales, tales como los discos.
  • I/O Domain, se encarga de gestionar la entrada/salida de los dispositivos.
  • Guest Domain, es cada uno de los dominios lógicos que creemos.

Una vez que configuremos el Control Domain, podremos crear distintos dominios lógicos (Guest Domain), a cada uno de estos dominios, podemos asignarles distintos tipos de dispositivos como son:

  • vcpu.
  • mem.
  • vnet, virtual network devide.
  • vsw, virtual network switch.
  • vdc, virtual disk client.
  • vds, virtual disk server.

Por lo tanto, un dominio lógico podrá disponer de un número de CPUs virtuales, una cantidad de memoria, una o varias interfaces virtuales de red y uno o varios discos virtuales.

Bajar el software de LDoms

Vamos a instalar LDoms en una máquina T1000, la cual dispone de un procesador T1. Los procesadores T1 están formados por 8 cores, con un total de 32 threads de procesamiento simultaneos. Desde el punto de vista del SO, es como si el sistema tuviera 32 CPUs. LDoms gestiona estas 32 CPUs, asignándolas a los distintos dominio lógicos.

Pero el primer paso para instalar LDoms en nuestra máquina, es bajar el software de la web de Sun. Podemos bajar un fichero zip con la actual versión de LDoms aquí. Una vez que hemos bajado el software, lo copiaremos en nuestra máquina T1000 y procederemos a descomprimirlo.

Para comenzar con la instalación, debemos ejecutar el script install-ldm, pero antes, deberíamos comprobar si nuestro sistema cumple con todos los requerimientos necesarios para que LDoms funcione correctamente. Sobre todo, debemos comprobar la versión de firmware del sistema, para esto podemos acceder a la ALOM de la máquina.

login as: admin 

Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms. 

Sun(tm) Advanced Lights Out Manager CMT v1.3.1 

Please login: admin
Please Enter password: ***** 

sc>
sc> showhost
Sun-Fire-T1000 System Firmware 6.3.1  2006/12/04 09:36 

Host flash versions:
   Hypervisor 1.3.0 2006/11/10 06:35
   OBP 4.25.0 2006/11/07 23:23
   POST 4.25.0 2006/11/08 00:09
sc> showkeyswitch
Keyswitch is in the NORMAL position.

Uno de los requisitos para que LDoms funcione correctamente después de la instalación es que nuestra máquina posea una versión de firmware 6.4 o posterior, podemos ver en la salida del comando showhost en la SC, la máquina en la que estamos instalando LDoms posee una versión de firmware 6.3.1, por lo tanto tendremos que actualizar el firmware del sistema, para que LDoms funcione correctamente.

Para actualizar el firmware de la máquina tenemos varios métodos, vamos a hacerlo utilizando un servidor FTP en otra máquina. El primer paso será bajar el parche 126400-02 y descomprimirlo en el servidor FTP. Para el ejemplo, he utilizado mi cuenta en la máquina con IP 192.168.33.241 y el directorio donde he descomprimido el parche es /export/home/jjmora/LDOM/126400-02/.

Ahora podemos volver a la consola de la máquina T1000 para comenzar la actualización del firmware. Ejecutaremos el comando:

flashupdate -s < ip_server_ftp > -f < fichero_firmware>

Para nuestro ejemplo.

>
> flashupdate -s 192.168.33.241 -f /export/home/jjmora/LDOM/126400-02/Sun_System_Firmware-6_4_6-Sun_Fire_T1000.bin
Username: jjmora
Password: ******* 

SC Alert: System poweron is disabled.
........................................................................................
.............................................................................. 

Update complete. Reset device to use new software. 

SC Alert: SC firmware was reloaded
sc> showhost
Sun-Fire-T1000 System Firmware 6.4.6  2007/06/24 18:43 

Host flash versions:
   Hypervisor 1.4.1 2007/04/02 16:37
   OBP 4.26.1 2007/04/02 16:25
   POST 4.26.0 2007/03/26 16:46
sc> resetsc
Are you sure you want to reset the SC [y/n]?  y
User Requested SC Shutdown

Ya hemos actualizado nuestro firmware con la versión 6.4.6, ahora podemos continuar con la instalación de LDoms. Hemos descomprimido el paquete con la última versión, actualmente es la 1.0.

root@t1000 # pwd
/export/home/jjmora/LDOM/LDoms_Manager-1_0-RR
root@t1000 # ls
Install  Legal    Product  README
root@t1000 # ./Install/install-ldm
Welcome to the LDoms installer. 

You are about to install the domain manager package that will enable
you to create, destroy and control other domains on your system. Given
the capabilities of the domain manager, you can now change the security
configuration of this Solaris instance using the Solaris Security
Toolkit. 

Select a security profile from this list: 

a) Hardened Solaris configuration for LDoms (recommended)
b) Standard Solaris configuration
c) Your custom-defined Solaris security configuration profile 

Enter a, b, or c [a]: a
The changes made by selecting this option can be undone through the
Solaris Security Toolkit's undo feature. This can be done with the
'/opt/SUNWjass/bin/jass-execute -u' command.
Installing LDoms and Solaris Security Toolkit packages.
pkgadd -n -d "/export/home/jjmora/LDOM/LDoms_Manager-1_0-RR/Product" -a pkg_admin SUNWldm.v
Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms. 

... 

Solaris Security Toolkit hardening executed successfully; log file
/var/opt/SUNWjass/run/20070810101627/jass-install-log.txt.  It will not
take effect until the next reboot.  Before rebooting, make sure SSH or
the serial line is setup for use after the reboot.
You have new mail in /var/mail/root
root@t1000 #
root@t1000 # init 6

Una vez terminado el proceso de instalación, reiniciamos la máquina. Cuando la máquina haya terminado de arrancar, comprobamos que LDoms está levantado.

root@t1000 # svcs | grep ldm
online         20:42:42 svc:/ldoms/ldmd:default
root@t1000 #
root@t1000 # svcs -l svc:/ldoms/ldmd:default
fmri         svc:/ldoms/ldmd:default
nombre       Logical Domain Manager
habilitada   Verdadero
estado       online
next_state   none
state_time   Sat Aug 18 20:42:42 2007
logfile      /var/svc/log/ldoms-ldmd:default.log
reiniciador  svc:/system/svc/restarter:default
contract_id  40
dependency   require_all/none svc:/system/filesystem/local (online)
root@t1000 #

Crear los servicios del controlador de dominio

Una vez que hemos instalado el paquete de LDoms, vamos a crear los servicios que gestionará el controlador de dominio. Lo primero es crear un vds, el servicio para la gestión de los discos virtuales y se asignará al controlador primary.

root@t1000 # /opt/SUNWldm/bin/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.
----------------------------------------------------------------------------

Creamos las consolas virtuales que el controlador de dominio asignará a los distintos dominios lógicos.

root@t1000 # /opt/SUNWldm/bin/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.
----------------------------------------------------------------------------

Añadimos un virtual switch, para los distintos interfaces virtuales tengan acceso a la red.

root@t1000 # /opt/SUNWldm/bin/ldm add-vsw net-dev=bge0 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.
----------------------------------------------------------------------------

Asignamos una MAU (Modular Arithmetic Units) al controlador de dominios.

root@t1000 # /opt/SUNWldm/bin/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.
----------------------------------------------------------------------------

De todas las CPUs del sistema, dedicaremos 4 al dominio primary.

root@t1000 # /opt/SUNWldm/bin/ldm set-vcpu 4 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.
----------------------------------------------------------------------------

Asignamos 1024MB de memoria al dominio primary.

root@t1000 # /opt/SUNWldm/bin/ldm set-memory 1024m 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.
----------------------------------------------------------------------------

Ahora debemos guardar los cambios en un fichero de configuración. Para ver los ficheros disponibles podemos ejecutar el comando:

root@t1000 # ldm list-spconfig
factory-default [current]

Guardamos nuestra configuración con el nombre de config_01

root@t1000 # ldm add-spconfig config_01
root@t1000 #
root@t1000 # ldm list-spconfig
factory-default [current]
config_01 [next]
root@t1000 #

Rebotamos la máquina para que el controlador de dominios acepte los nuevos cambios que hemos introducido.

root@t1000 # init 6

Una vez que la máquina haya arrancado, podemos comprobar los nuevos parámetros que hemos añadido al controlador de dominios primary.

root@t1000 # ldm list-domain
Name             State    Flags   Cons    VCPU  Memory   Util  Uptime
primary          active   -t-cv   SP      4     1G       0.1%  4m
root@t1000 #

Crear los dominios lógicos

En el apartado anterior, hemos creados la infraestructura básica en el controlador de dominio para poder dar servicio a los distintos dominios lógicos que vayamos a crear. Para nuestro ejemplo, vamos a crear 2 dominios lógicos con las siguientes características:

  • t1000-01, con 4 CPUs, 312MB de memoria y un disco de 512MB
  • t1000-02, con 2 CPUs, 300MB de memoria y un disco de 512MB

La máquina con la que estamos trabajando no posee unidad de CDROM, esto nos obligará a realizar una instalación del SO en los distintos dominios lógicos, utilizando un servidor de Jumpstart. El proceso que vamos a seguir los podemos resumir en los siguientes pasos:

  • 1.- Crear el dominio lógico t1000-01, asignándole 4 CPUs, 312MB de memoria y como disco de sistema, crearemos un fichero de 512MB.
  • 2.- Configurar el servidor de Jumpstart en el controlador de dominios primario.
  • 3.- Instalar y configurar Solaris 10 en el dominio lógico t1000-01.
  • 4.- Duplicar el fichero de 512MB que el dominio lógico t1000-01 utiliza como disco de sistema, para crear un nuevo fichero que sirva como disco de sistema al dominio lógico t1000-02
  • 5.- Crear el dominio lógico t1000-02, asignándole 2 CPUs, 300MB, como disco de sistema utilizaremos, el fichero que hemos creado en el paso 4.
  • 6.- Arrancar el dominio t1000-02 y cambiar la configuración del sistema operativo, IPs, hostname, etc.

Crear el dominio lógico t1000-01

La creación de un dominio lógico (Guest Domain) es bastante sencilla, tendremos que añadir el nuevo dominio, asignarle los recursos que deseemos y realizar un bind.

root@t1000 # ldm add-domain t1000-01
root@t1000 # ldm add-vcpu 4 t1000-01
root@t1000 # ldm add-memory 312M t1000-01
root@t1000 # ldm add-vnet vnet1 primary-vsw0 t1000-01

Con los comandos anteriores, hemos creado el dominio t1000-01, le hemos asignado 4 CPUs, 312MB de memoria y vamos a utilizar la interfaz de red definida, en el controlador de dominios primario, con el identificador primary-vsw0. El siguiente paso será crear el fichero de 500MB que asignaremos al dominio lógico para que lo utilice como disco de sistema.

root@t1000 # mkfile 500M /var/LDOM/ldom_bootdisk.img
root@t1000 #
root@t1000 # ldm add-vdsdev /var/LDOM/ldom_bootdisk.img vol1@primary-vds0

Creamos un fichero de 500M y lo asignamos con el identificador vol1 al controlador de dominios. Ahora tenemos que asignar el nuevo dispositivo al dominio t1000-01.

root@t1000 # ldm add-vdisk vdisk1 vol1@primary-vds0 t1000-01

Ya hemos asignado CPUs, memoria, un disco y una interfaz de red al dominio lógico t1000-01, ahora solo tenemos que arrancar el nuevo dominio.

root@t1000 # ldm bind-domain t1000-01
root@t1000 # ldm list-domain
Name             State    Flags   Cons    VCPU  Memory   Util  Uptime
primary          active   -t-cv   SP      4     1G       0.3%  1h 4m
t1000-01         bound    -----   5000    4     312M 

root@t1000 # ldm start-domain t1000-01
LDom t1000-01 started
root@t1000 # ldm list
Name             State    Flags   Cons    VCPU  Memory   Util  Uptime
primary          active   -t-cv   SP      4     1G       0.2%  1h 5m
t1000-01         active   -t---   5000    4     312M     100%  6s

El nuevo dominio lógico t1000-01 tiene asignado el puerto de consola 5000, podemos acceder a la consola del dominio t1000-01, utilizando el comando telnet.


root@t1000 # telnet localhost 5000
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'. 

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

{0} ok
{0} ok show-devs
/cpu@3
/cpu@2
/cpu@1
/cpu@0
/virtual-devices@100
/virtual-memory
/memory@m0,1000000
/aliases
/options
/openprom
/chosen
/packages
/virtual-devices@100/channel-devices@200
/virtual-devices@100/console@1
/virtual-devices@100/ncp@4
/virtual-devices@100/channel-devices@200/disk@0
/virtual-devices@100/channel-devices@200/network@0
/openprom/client-services
/packages/obp-tftp
/packages/SUNW,asr
/packages/dropins
/packages/terminal-emulator
/packages/disk-label
/packages/deblocker
/packages/SUNW,builtin-drivers
{0} ok
{0} ok show-disks
a) /virtual-devices@100/channel-devices@200/disk@0
q) NO SELECTION
Enter Selection, q to quit: a
/virtual-devices@100/channel-devices@200/disk@0 has been selected.
Type ^Y ( Control-Y ) to insert it in the command line.
e.g. ok nvalias mydev ^Y
         for creating devalias mydev for /virtual-devices@100/channel-devices@200/disk@0
{0} ok boot /virtual-devices@100/channel-devices@200/disk@0
Boot device: /virtual-devices@100/channel-devices@200/disk@0  File and args:
The file just loaded does not appear to be executable.
{0} ok
{0} ok nvalias vdisk1 /virtual-devices@100/channel-devices@200/disk@0
{0} ok boot vdisk1 

Sun Fire(TM) T1000, No Keyboard
Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
OpenBoot 4.26.1, 300 MB memory available, Serial #66778672.
Ethernet address 0:14:4f:fa:f6:30, Host ID: 83faf630. 

Boot device: /virtual-devices@100/channel-devices@200/disk@0  File and args:
The file just loaded does not appear to be executable.
{0} ok

Si intentamos arrancar con el disco virtual que tiene asignado el dominio t1000-01, la respuesta será parecida a la anterior, ya que aún no hemos instalado un SO en este dominio lógico. Ahora procederemos con la instalación de Solaris 10 en el disco del dominio lógico, como ya hemos comentado antes, vamos a necesitar un servidor Jumpstart para poder realizar la instalación.

Configuración rápida de un servidor de Jumpstart

Esto no pretende ser una guía de instalación de un servidor de Jumpstart, existe muchísima documentación que trata de forma más profunda los entresijos de un servidor de instalación. Aquí solo veremos de forma rápida, cómo podemos configurar el controlador de dominios primary para que actúe como servidor de instalación de Solaris 10.

Discos de Solaris 10

El primer paso será conseguir los discos de instalación de Solaris 10. La máquina T1000 que estamos utilizando no dispone de unidad de CDROM, por lo que tendremos que subir las imágenes ISO de los CDROMs. Lo que hemos hecho es bajar la imagen ISO del disco 1 de Solaris 10 de la web de Sun. Para nuestro ejemplo, no necesitaremos los otros discos, ya que vamos a realizar una instalación básica en el dominio lógico t1000-01. Hemos copiado la imagen en el directorio /ISO/.

root@t1000 # cd /ISO/
root@t1000 # ls
sol-10-u3-ga-sparc-v1.iso
root@t1000 #

Para montar la imagen ISO, utilizaremos el comando lofiadm. El disco 1 de Solaris es una combinación de UFS y HSFS, esta combinación de formatos, no la entiende el comando lofiadm, por lo que tendremos que crear un nuevo fichero de imagen con formato UFS.

root@t1000 # dd if=sol-10-u3-ga-sparc-v1.iso of=vtoc bs=512 count=1
1+0 registros dentro
1+0 registros fuera

Creamos un nuevo fichero con la información de VTOC de la ISO, con el comando od obtenemos la información del VTOC que necesitaremos para crear la nueva imagen.


root@t1000 # od -D -j 452 -N 8 < vtoc
0000000 0000001071 0000616960
0000010

Con los datos obtenidos, multiplicaremos 1071x640=685440 el resultado lo utilizaremos en el comando dd en el campo skip=, el valor 0000616960 obtenido de od, lo utilizaremos en el campo count.

root@t1000 # dd if=sol-10-u3-ga-sparc-v1.iso of=sol-10-u3-ga-sparc-v1_s1.iso bs=512 skip=685440 count=616960
616960+0 registros dentro
616960+0 registros fuera
root@t1000 #

Ahora disponemos de dos ficheros con imágenes ISO, uno en formato HSFS y otro en formato UFS. Usaremos el comando lifoadm para crear los dispositivos que utilizaremos en el comando mount para montar las imágenes ISO.

root@t1000 # lofiadm -a /ISO/sol-10-u3-ga-sparc-v1.iso
/dev/lofi/2
root@t1000 # lofiadm -a /ISO/sol-10-u3-ga-sparc-v1_s1.iso
/dev/lofi/2
root@t1000 # mkdir /mnt/s0
root@t1000 # mkdir /mnt/s1
root@t1000 #
root@t1000 # mount -F hsfs /dev/lofi/1 /mnt/s0/
root@t1000 # mount -F ufs /dev/lofi/2 /mnt/s1/
root@t1000 #
root@t1000 # ls /mnt/s0
Copyright                    JDS-THIRDPARTYLICENSEREADME  Solaris_10
root@t1000 #
root@t1000 # ls /mnt/s1
a            cdrom        devices      kernel       mnt          platform     reconfigure  system       usr
bin          dev          etc          lib          opt          proc         sbin         tmp          var
root@t1000 #

Instalando el servidor de Jumpstart

Ya tenemos montadas las imágenes ISO del disco 1 de instalación, ahora solo nos queda configurar el controlador de dominios para que actue como un servidor de instalaciones. Aunque no es necesario aún, vamos a añadir las IPs de los 2 nuevos dominios lógicos al fcihero /etc/hosts.

#
# Internet host table
#
127.0.0.1       localhost
192.168.29.40   t1000   loghost
192.168.29.42  t1000-01
192.168.29.43  t1000-02

Crearemos un directorio, que el servidor de Jumpstart utilizará para almacenar los SO que se utilizarán para las instalaciones. Para configurar el servidor debemos ejecutar el script setup_install_server que está en el directorio Tools montado en /mnt/s0/.


root@t1000 # cd /mnt/s0/Solaris_10/Tools/
root@t1000 # ls
add_install_client    dial                  rm_install_client
Boot                  miniroot_extra        setup_install_server
root@t1000 # mkdir /var/INSTALL_JUMPSTART
root@t1000 # ./setup_install_server -b  /var/INSTALL_JUMPSTART
Verifying target directory...
Calculating space required for the installation boot image
Copying Solaris_10 Tools hierarchy...
Copying Install Boot Image hierarchy...
Install Server setup complete
root@t1000 #

Configurando un cliente en el servidor Jumpstart

Ya está el servidor configurado, aunque falta decirle qué máquinas clientes lo van a utilizar para sus instalaciones de SO. Ejecutaremos el script add_install_client con los siguientes parámetros.

root@t1000 # cd /mnt/s0/Solaris_10/Tools/
root@t1000 # ./add_install_client -d -e 0:14:4f:f9:ad:c3 -s t1000:/var/INSTALL_JUMPSTART/  sun4v
Adding "share -F nfs -o ro,anon=0 /var/INSTALL_JUMPSTART/" to /etc/dfs/dfstab
Adding "share -F nfs -o ro,anon=0 /mnt/s0/Solaris_10/Tools" to /etc/dfs/dfstab
Adding "share -F nfs -o ro,anon=0 /mnt/s1" to /etc/dfs/dfstab
copying boot file to /tftpboot/inetboot.SUN4V.Solaris_10-1 

To enable 0100144FF9ADC3 in the DHCP server, ensure that
the following Sun vendor-specific options are defined
(SinstNM, SinstIP4, SinstPTH, SrootNM, SrootIP4,
SrootPTH, and optionally SbootURI, SjumpCF and SsysidCF),
and add a macro to the server named 0100144FF9ADC3,
containing the following option values: 

  Install server      (SinstNM)  : t1000
  Install server IP   (SinstIP4) : 192.168.29.40
  Install server path (SinstPTH) : /var/INSTALL_JUMPSTART/
  Root server name    (SrootNM)  : t1000
  Root server IP      (SrootIP4) : 192.168.29.40
  Root server path    (SrootPTH) : /mnt/s0/Solaris_10/Tools/Boot
  Boot file           (BootFile) : 0100144FF9ADC3
root@t1000 #

Debemos añadir la MAC de la máquina cliente en el fichero /etc/ethers, en nuestro caso, la máquina cliente corresponde con el dominio lógico t1000-01. Para conocer la MAC asignada al dominio lógico t1000-01, debemos ejecutar el comando:

root@t1000 # ldm list-bindings t1000-01
Name:   t1000-01
State:  active
Flags:  transition
OS:
Util:   0.4%
Uptime: 18h 26m
Vcpu:   4
        vid    pid    util strand
        0      6      0.3%   100%
        1      7      0.0%   100%
        2      8      0.1%   100%
        3      9      1.4%   100%
Memory: 312M
        real-addr        phys-addr        size
.... 

Vnet:   vnet1   [LDC: 0x1]
        [Peer LDom: t1000-02, mac-addr: 0:14:4f:fa:f6:30]
        mac-addr=0:14:4f:f9:ad:c3
        service: primary-vsw0 @ primary
        [LDC: 0x0]
Vdisk:  vdisk1  vol10@primary-vds0
        service: primary-vds0 @ primary
        [LDC: 0x2]
Vcons:  [via LDC:3]
        t1000-01@primary-vcc0 [port:5001]
Vldcc:  vldcc0  [Domain Services]
        service: primary-vldc0 @ primary
        [LDC: 0x4]
root@t1000 #

En la sección Vnet, la línea mac-addr=0:14:4f:f9:ad:c3 nos informa sobre la MAC del dominio lógico t1000-01. Una vez que conocemos la MAC, la incluimos en el fichero /etc/ethers.

root@t1000 # echo "0:14:4f:f9:ad:c3 t1000-01" > /etc/ethers
root@t1000 # echo "t1000-01  root=t1000:/mnt/s0/Solaris_10/Tools/Boot install=t1000:/var/INSTALL_JUMPSTART/ boottype=:in   rootopts=:rsize=8192" > /etc/bootparams
root@t1000 #

También debemos incluir una línea en el fichero /etc/bootparams con la información sobre dónde se encuentran los ficheros de arranque e instalación. El siguiente paso es asegurarnos que los servicios bootparams, rarp y tftp estén arrancados.

root@t1000 #
root@t1000 # svcadm disbale svc:/network/rpc/bootparams:default
root@t1000 # svcadm disbale svc:/network/tftp/udp6:default
root@t1000 # svcadm disable  svc:/network/rarp:default
root@t1000 # svcadm enable svc:/network/rpc/bootparams:default
root@t1000 # svcadm enable svc:/network/tftp/udp6:default
root@t1000 # svcadm enable  svc:/network/rarp:default
root@t1000 # svcs | grep rar
online         20:46:07 svc:/network/rarp:default
root@t1000 #

Instalar Solaris 10 en t1000-01

Ya hemos configurado los parámetros mínimos para que el controlador de dominio en la máquina t1000 funcione como un servidor de instalación. Ahora vamos a utilizar la consola del dominio lógico t1000-01 para arrancar la instalación utilizando la interfaz de red virtual asignada a dicho dominio lógico.

root@t1000 # telnet localhost 5000
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'. 

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

{0} ok 

{0} ok show-nets
a) /virtual-devices@100/channel-devices@200/network@0
q) NO SELECTION
Enter Selection, q to quit: a
/virtual-devices@100/channel-devices@200/network@0 has been selected.
Type ^Y ( Control-Y ) to insert it in the command line.
e.g. ok nvalias mydev ^Y
         for creating devalias mydev for /virtual-devices@100/channel-devices@200/network@0
{0} ok nvalias vnet1 /virtual-devices@100/channel-devices@200/network@0
{0} ok boot vnet1 - install
Boot device: /virtual-devices@100/channel-devices@200/network@0  File and args: - install
Requesting Internet Address for 0:14:4f:f9:ad:c3
Requesting Internet Address for 0:14:4f:f9:ad:c3
Requesting Internet Address for 0:14:4f:f9:ad:c3
...

Al intentar arrancar, el dominio t1000-01 no consigue obtener una IP, existe un problema en el acceso a la red de dicho dominio. Comprobaremos que las interfaces de red están funcionando correctamente en el controlador de dominios.

root@t1000 # ifconfig -a
lo0: flags=2001000849< up,loopback,running,multicast,ipv4,virtual > mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000
bge0: flags=1000843< up,broadcast,running,multicast,ipv4 > mtu 1500 index 2
        inet 192.168.29.40 netmask ffffff00 broadcast 192.168.29.255
        ether 0:14:4f:82:f4:6a
root@t1000 #

De la salida del comando ifconfig, podemos ver que la interfaz vsw0 no está configurada. Añadimos una nueva entrada en el fichero /etc/hosts y configuramos la nueva interfaz.

#
# Internet host table
#
127.0.0.1       localhost
192.168.29.40   t1000   loghost
192.168.29.49   t1000_vsw0
192.168.29.42  t1000-01
192.168.29.43  t1000-02 

root@t1000 # ifconfig vsw0 plumb
root@t1000 # ifconfig vsw0 192.168.29.49 netmask 0xffffff00 broadcast 192.168.29.255 up
root@t1000 # ifconfig -a
lo0: flags=2001000849< up,loopback,running,multicast,ipv4,virtual > mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000
bge0: flags=1000843< up,broadcast,running,multicast,ipv4 > mtu 1500 index 2
        inet 192.168.29.40 netmask ffffff00 broadcast 192.168.29.255
        ether 0:14:4f:82:f4:6a
vsw0: flags=1000843< up,broadcast,running,multicast,ipv4 > mtu 1500 index 3
        inet 192.168.29.49 netmask ffffff00 broadcast 192.168.29.255
        ether 0:14:4f:fa:56:d7
root@t1000 #

Ahora podemos levantar la IP 192.168.29.40 que corresponde con el nombre t1000, como un alias en la interfaz vsw0. Esto lo debemos hacer, porque toda la configuración de Jumpstart la hemos realizado con el nombre t1000.


root@t1000 # ifconfig -a
lo0: flags=2001000849< up,loopback,running,multicast,ipv4,virtual > mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000
bge0: flags=1000842< broadcast,running,multicast,ipv4 > mtu 1500 index 2
        inet 192.168.29.40 netmask ffffff00 broadcast 192.168.29.255
        ether 0:14:4f:82:f4:6a
vsw0: flags=1000843< up,broadcast,running,multicast,ipv4 > mtu 1500 index 3
        inet 192.168.29.49 netmask ffffff00 broadcast 192.168.29.255
        ether 0:14:4f:fa:56:d7
vsw0:1: flags=1000843< up,broadcast,running,multicast,ipv4 > mtu 1500 index 3
        inet 192.168.29.40 netmask ffffff00 broadcast 192.168.29.255

Arrancamos el dominio t1000-01 y conectamos con su consola.


root@t1000 # ldm start-domain t1000-01
LDom t1000-01 started
root@t1000 #
root@t1000 #telnet localhost 5000
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'. 

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

{0} ok
{0} ok boot vnet1 - install
Boot device: /virtual-devices@100/channel-devices@200/network@0  File and args: - install
Requesting Internet Address for 0:14:4f:fa:f6:30
SunOS Release 5.10 Version Generic_118833-33 64-bit
Copyright 1983-2006 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
WARNING: machine_descrip_update: new MD has the same generation (76) as the old MD
whoami: no domain name
Configuring devices.
Using RPC Bootparams for network configuration information.
Attempting to configure interface vnet0...
Configured interface vnet0
Extracting windowing system. Please wait...
Beginning system identification...
Searching for configuration file(s)...
Search complete.
Discovering additional network configuration... 

Select a Language 

   0. English
   1. French
   2. German
   3. Italian
   4. Japanese
   5. Korean
   6. Simplified Chinese
   7. Spanish
   8. Swedish
   9. Traditional Chinese 

Please make a choice (0 - 9), or press h or ? for help:
...

Como podemos ver, este es el primer paso de cualquier instalación de Solaris, ahora solo tendremos que ir completando los distintos menús. Antes de continuar con la instalación, hay que recordar que debe ser una instalación mínima, ya que solo hemos configurado en Jumpstart el primer CD. Una vez que hemos reiniciado el SO del dominio lógico t1000-01, comprobamos el número de CPUs y memoria.


root@t1000 # telnet localhost 5001
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'. 

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

{0} ok boot
Boot device: /virtual-devices@100/channel-devices@200/disk@0:a  File and args:
SunOS Release 5.10 Version Generic_118833-33 64-bit
Copyright 1983-2006 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
Hostname: t1000-01 

t1000-01 console login: root
Password: Aug 19 23:12:43 t1000-01 sendmail[275]: My unqualified host name (t1000-01) unknown; sleeping for retry
Aug 19 23:12:43 t1000-01 sendmail[276]: My unqualified host name (t1000-01) unknown; sleeping for retry 

Aug 19 23:12:44 t1000-01 login: ROOT LOGIN /dev/console
Last login: Sun Aug 19 17:55:43 on console
Sun Microsystems Inc.   SunOS 5.10      Generic January 2005
#
# mpstat 1
CPU minf mjf xcal  intr ithr  csw icsw migr smtx  srw syscl  usr sys  wt idl
  0  379  25  899   531  150 1567   28  112  172    1  3657   20  20   0  60
  1  400  21  944   229    0 1804   27  146  233    1  4863   20  12   0  68
  2  327  13 1075   138    1 1357   25  141  226    1  3839   15  11   0  74
  3  217  11 1081   218   43 2335   21  111  143    1  5252   16  11   0  73
^C# prtdiag
System Configuration:  Sun Microsystems  sun4v Sun Fire(TM) T1000
Memory size: 312 Megabytes 

========================= CPUs =============================================== 

                            CPU                 CPU
Location     CPU   Freq     Implementation      Mask
------------ ----- -------- ------------------- -----
MB/CMP0/P0       0 1000 MHz  SUNW,UltraSPARC-T1
MB/CMP0/P1       1 1000 MHz  SUNW,UltraSPARC-T1
MB/CMP0/P2       2 1000 MHz  SUNW,UltraSPARC-T1
MB/CMP0/P3       3 1000 MHz  SUNW,UltraSPARC-T1 

========================= IO Configuration ========================= 

            IO
Location    Type  Slot Path                                          Name                      Model
----------- ----- ---- --------------------------------------------- ------------------------- --------- 

#
#
# format
Searching for disks...done 

AVAILABLE DISK SELECTIONS:
       0. c0d0 < sunvdsk >
          /virtual-devices@100/channel-devices@200/disk@0
Specify disk (enter its number): 0
selecting c0d0
[disk unformatted]
Warning: Current Disk has mounted partitions.
/dev/dsk/c0d0s0 is currently mounted on /. Please see umount(1M). 

FORMAT MENU:
        disk       - select a disk
        type       - select (define) a disk type
        partition  - select (define) a partition table
        current    - describe the current disk
        format     - format and analyze the disk
        repair     - repair a defective sector
        label      - write label to the disk
        analyze    - surface analysis
        defect     - defect list management
        backup     - search for backup labels
        verify     - read and display labels
        save       - save new disk/partition definitions
        inquiry    - show vendor, product and revision
        volname    - set 8-character volume name
        !< cmd >     - execute , then return
        quit
format> p 

PARTITION MENU:
        0      - change `0' partition
        1      - change `1' partition
        2      - change `2' partition
        3      - change `3' partition
        4      - change `4' partition
        5      - change `5' partition
        6      - change `6' partition
        7      - change `7' partition
        select - select a predefined table
        modify - modify a predefined partition table
        name   - name the current table
        print  - display the current table
        label  - write partition map and label to the disk
        !< cmd > - execute , then return
        quit
partition> p
Current partition table (original):
Total disk cylinders available: 1704 + 2 (reserved cylinders) 

Part      Tag    Flag     Cylinders        Size            Blocks
  0 unassigned    wm       0 - 1703      499.22MB    (1704/0/0) 1022400
  1 unassigned    wm       0               0         (0/0/0)          0
  2     backup    wm       0 - 1703      499.22MB    (1704/0/0) 1022400
  3 unassigned    wm       0               0         (0/0/0)          0
  4 unassigned    wm       0               0         (0/0/0)          0
  5 unassigned    wm       0               0         (0/0/0)          0
  6 unassigned    wm       0               0         (0/0/0)          0
  7 unassigned    wm       0               0         (0/0/0)          0 

partition> 

# uname -a
SunOS t1000-01 5.10 Generic_118833-33 sun4v sparc SUNW,Sun-Fire-T1000
# ifconfig -a
lo0: flags=2001000849< up,loopback,running,multicast,ipv4,virtual > mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000
vnet0: flags=1000843< up,broadcast,running,multicast,ipv4 > mtu 1500 index 2
        inet 192.168.29.42 netmask ffffff00 broadcast 192.168.29.255
        ether 0:14:4f:f9:ad:c3
#

Crear el dominio lógico t1000-02

Ya hemos configurado el dominio lógico t1000-01 y hemos instalado un Solaris 10 en el único disco asignado en t1000-01 que consistía en un fichero 500MB. En este apartado crearemos el nuevo dominio lógico, que llamaremos t1000-02, pero no instalaremos otro Solaris 10 utilizando el servidor Jumpstart, lo que haremos será hacer una copia del ficheros de 500MB que utiliza t1000-01.

Lo primero será crear el dominio lógico t1000-02.

root@t1000 # ldm add-domain t1000-02
root@t1000 # ldm add-vcpu 2 t1000-02
root@t1000 # ldm add-memory 300M t1000-02
root@t1000 # ldm add-vnet vnet1 primary-vsw0 t1000-02

Ya hemos creado el dominio t1000-02, le hemos asignado 2 CPUs, 300MB de memoria y vamos a utilizar la interfaz de red definida en el controlador de dominios primario, como primary-vsw0. El siguiente paso será crear el fichero de 500MB que asignaremos al dominio lógico para que lo utilice como disco de sistema.

root@t1000 # cd /var/LDOM/
root@t1000 # ls
ldom_bootdisk.img
root@t1000 #
root@t1000 # dd if=ldom_bootdisk.img of=ldom_bootdisk_02.img
1024000+0 registros dentro
1024000+0 registros fuera
root@t1000 #

Asignamos el nuevo fichero /var/LDOM/ldom_bootdisk_02.img al controlador de dominios como vol2@primary-vds0.

root@t1000 # ldm add-vdsdev /var/LDOM/ldom_bootdisk_02.img vol2@primary-vds0

Con el comando dd, hemos realiza una copia del fichero ldom_bootdisk.img. Asignamos el nuevo dispositivo al dominio t1000-02.

root@t1000 # ldm add-vdisk vdisk1 vol2@primary-vds0 t1000-02

Ya hemos asignado CPUs, memoria, un disco y una interfaz de red al dominio lógico t1000-02, ahora solo tenemos que arrancar el nuevo dominio.

root@t1000 # ldm bind-domain t1000-02
root@t1000 # ldm list
Name             State    Flags   Cons    VCPU  Memory   Util  Uptime
primary          active   -t-cv   SP      4     1G       1.9%  4h 39m
t1000-01         active   -t---   5001    4     312M     3.2%  13m
t1000-02         bound    -----   5000    2     300M 

root@t1000 # ldm start-domain t1000-02
LDom t1000-02 started
root@t1000 # ldm list
Name             State    Flags   Cons    VCPU  Memory   Util  Uptime
primary          active   -t-cv   SP      4     1G       0.2%  4h 40m
t1000-01         active   -t---   5001    4     312M     0.2%  14m
t1000-02         active   -t---   5000    2     300M     100%  28s

El nuevo dominio lógico t1000-02 tiene asignado el puerto de consola 5000, podemos acceder a la consola del dominio t1000-02, utilizando el comando telnet.

NOTA - Antes de arrancar el dominio t1000-02, deberíamos asegurarnos que paramos el dominio t1000-01, ya que al duplicar los ficheros asignados como discos virtuales, ambos dominios tienen configurados el SO exactamente igual, esto significa que ambos dominios levantaran su interfaz de red con la misma IP, por esta razón es mejor para t1000-01, levantar t1000-02, hacer los cambios de IP, hostname, etc. Y una vez hemos reiniciado t1000-02, arrancaremos el SO de t1000-01.


root@t1000 # telnet localhost 5000
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'. 

Connecting to console "t1000-02" in group "t1000-02" ....
Press ~? for control options .. 

~ ?
{0} ok boot vdisk1
Boot device: /virtual-devices@100/channel-devices@200/disk@0  File and args:
SunOS Release 5.10 Version Generic_118833-33 64-bit
Copyright 1983-2006 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
WARNING: machine_descrip_update: new MD has the same generation (11) as the old MD
NOTICE: ds_cap_send: invalid handle 0x000000000
NOTICE: md ds_cap_send resp failed (22)
Hostname: t1000-01 

t1000-01 console login:

Como podemos ver, aunque hemos arrancado el dominio t1000-02, tanto el hostname como la IP de la nueva máquina pertenecen al SO que hemos intalado en t1000-01, al realizar una copia del fichero que hemos asignado como disco virtual, hemos clonado el SO, ahora tenemos que realizar los cambio pertinentes en el SO de t1000-02 para que podamos utilizarlo, por ejemplo cambiando el hostname y la IP. Una vez que hayamos cambiado la IP y el hostname podemos reiniciar el dominio lógico t1000-02.

root@t1000 # ping t1000-02
t1000-02 is alive
root@t1000 # ping t1000-01
t1000-01 is alive
root@t1000 # ldm list
Name             State    Flags   Cons    VCPU  Memory   Util  Uptime
primary          active   -t-cv   SP      4     1G       0.5%  5h 4m
t1000-01         active   -t---   5001    4     312M      21%  2m
t1000-02         active   -t---   5000    2     300M     0.2%  5m
root@t1000 # ldm list
Name             State    Flags   Cons    VCPU  Memory   Util  Uptime
primary          active   -t-cv   SP      4     1G       0.3%  5h 4m
t1000-01         active   -t---   5001    4     312M     0.0%  2m
t1000-02         active   -t---   5000    2     300M     0.4%  5m
root@t1000 #

Añadir recursos a un LDom

Vamos a ver de forma rápida cómo podemos añadir más CPUs a un dominio lógico. El dominio t1000-01 actualmente tiene 4 CPUs, con el comando ldm add-vcpu añadiremos 6 CPUs más.

root@t1000 # ldm stop-domain t1000-01
LDom t1000-01 stopped
root@t1000 # ldm add-vcpu 6 t1000-01
root@t1000 # ldm list
Name             State    Flags   Cons    VCPU  Memory   Util  Uptime
primary          active   -t-cv   SP      4     1G       0.5%  1d 21h 4m
t1000-01         bound    -----   5001    10    312M
t1000-02         active   -t---   5000    2    300M     1.5%  4m
root@t1000 #
root@t1000 # ldm start-domain t1000-01
LDom t1000-01 started
root@t1000 # telnet localhost 5001
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'. 

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

{0} ok show-disks
a) /virtual-devices@100/channel-devices@200/disk@0
q) NO SELECTION
Enter Selection, q to quit: a
/virtual-devices@100/channel-devices@200/disk@0 has been selected.
Type ^Y ( Control-Y ) to insert it in the command line.
e.g. ok nvalias mydev ^Y
         for creating devalias mydev for /virtual-devices@100/channel-devices@200/disk@0
{0} ok boot /virtual-devices@100/channel-devices@200/disk@0
Boot device: /virtual-devices@100/channel-devices@200/disk@0  File and args:
SunOS Release 5.10 Version Generic_118833-33 64-bit
Copyright 1983-2006 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
WARNING: machine_descrip_update: new MD has the same generation (58) as the old MD
NOTICE: ds_cap_send: invalid handle 0x000000000
NOTICE: md ds_cap_send resp failed (22)
Hostname: t1000-01 

t1000-01 console login: root
Password:
Last login: Tue Aug 21 16:12:47 on console
Sun Microsystems Inc.   SunOS 5.10      Generic January 2005
#
# uname -a
SunOS t1000-01 5.10 Generic_118833-33 sun4v sparc SUNW,Sun-Fire-T1000
# prtdiag
System Configuration:  Sun Microsystems  sun4v Sun Fire(TM) T1000
Memory size: 312 Megabytes 

========================= CPUs =============================================== 

                            CPU                 CPU
Location     CPU   Freq     Implementation      Mask
------------ ----- -------- ------------------- -----
MB/CMP0/P0       0 1000 MHz  SUNW,UltraSPARC-T1
MB/CMP0/P1       1 1000 MHz  SUNW,UltraSPARC-T1
MB/CMP0/P2       2 1000 MHz  SUNW,UltraSPARC-T1
MB/CMP0/P3       3 1000 MHz  SUNW,UltraSPARC-T1
MB/CMP0/P4       4 1000 MHz  SUNW,UltraSPARC-T1
MB/CMP0/P5       5 1000 MHz  SUNW,UltraSPARC-T1
MB/CMP0/P6       6 1000 MHz  SUNW,UltraSPARC-T1
MB/CMP0/P7       7 1000 MHz  SUNW,UltraSPARC-T1
MB/CMP0/P8       8 1000 MHz  SUNW,UltraSPARC-T1
MB/CMP0/P9       9 1000 MHz  SUNW,UltraSPARC-T1 

========================= IO Configuration ========================= 

            IO
Location    Type  Slot Path                                          Name                      Model
----------- ----- ---- --------------------------------------------- ------------------------- ---------
#

Con el comando prtdiag podemos comprobar que el dominio lógico t1000-01 tiene asignadas 10 CPUs.

Nota - Si tiene alguna pregunta o sugerencia sobre este artículo, por favor, no dude en ponerse en contacto conmigo mediante email en jjmora AT arrakis DOT es

Una Respuesta en “Solaris: Configurando LDoms en un T1000”

  1. DrAmor’s Blog » Blog Archive » Algunas experiencias con LDOMs Dijo:

    [...] Sun Fire T2000. Los resultados son bastante interesantes. Por un lado, aunque me he apoyado en la experiencia de José Juan Mora, en mi caso he trabajado en todo momento con Opensolaris 2009.06 y el paquete LDOMs integrado en [...]

My name is null, /dev/null
Algunos derechos reservados. Licencia Creative Commons