Logical Domain LDOMS
Logical Domain LDOMS
Logical Domain LDOMS
hardware. Podemos asignar una serie de recursos HW de la mquina, 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 mquinas
virtuales, compartiendo el HW disponible en el sistema. Con esta nueva capa, el SO no
necesita conocer qu HW est disponible en la mquina, 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 artculo no pretende ser un manual de instalacin de LDoms,
hay documentacin especfica para este fin. En el artculo he intentado reflejar mi
experiencia durante la instalacin en un entorno especfico, como es una mquina
T1000 sin CDROM. Durante la instalacin 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 tecnologa de
LDoms, ya que existen varios documentos que la explican perfectamente:
The Beginners Guide to Logical Domains.
Logical Domains Administration Guide
Pero aunque no vamos a entrar en profundidad, vamos a dar una serie de pinceladas,
que nos permitirn ejecutar los ejemplos del artculo. Existen 4 componentes
principales:
Control Domain, es el encargado de gestionar los distintos dominios lgicos.
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 lgicos que creemos.
Una vez que configuremos el Control Domain, podremos crear distintos dominios
lgicos (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 lgico podr disponer de un nmero de CPUs virtuales, una
cantidad de memoria, una o varias interfaces virtuales de red y uno o varios discos
virtuales.
2006/12/04 09:36
Uno de los requisitos para que LDoms funcione correctamente despus de la instalacin
es que nuestra mquina posea una versin de firmware 6.4 o posterior, podemos ver en
la salida del comando showhost en la SC, la mquina en la que estamos instalando
LDoms posee una versin 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 mquina tenemos varios mtodos, vamos a hacerlo
utilizando un servidor FTP en otra mquina. El primer paso ser bajar el parche 12640002 y descomprimirlo en el servidor FTP. Para el ejemplo, he utilizado mi cuenta en la
mquina con IP 192.168.33.241 y el directorio donde he descomprimido el parche es
/export/home/jjmora/LDOM/126400-02/.
2007/06/24 18:43
Ya hemos actualizado nuestro firmware con la versin 6.4.6, ahora podemos continuar
con la instalacin de LDoms. Hemos descomprimido el paquete con la ltima versin,
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
Creamos las consolas virtuales que el controlador de dominio asignar a los distintos
dominios lgicos.
Aadimos 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.
---------------------------------------------------------------------------
---------------------------------------------------------------------------
Ahora debemos guardar los cambios en un fichero de configuracin. Para ver los
ficheros disponibles podemos ejecutar el comando:
root@t1000 # ldm list-spconfig
factory-default [current]
Rebotamos la mquina para que el controlador de dominios acepte los nuevos cambios
que hemos introducido.
root@t1000 # init 6
Una vez que la mquina haya arrancado, podemos comprobar los nuevos parmetros
que hemos aadido al controlador de dominios primary.
root@t1000 # ldm list-domain
Name
State
Flags
primary
active
-t-cv
root@t1000 #
Cons
SP
VCPU
4
Memory
1G
Util
0.1%
Uptime
4m
5.- Crear el dominio lgico t1000-02, asignndole 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 configuracin del sistema
operativo, IPs, hostname, etc.
#
#
#
#
ldm
ldm
ldm
ldm
add-domain t1000-01
add-vcpu 4 t1000-01
add-memory 312M t1000-01
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 lgico 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@primaryvds0
Ya hemos asignado CPUs, memoria, un disco y una interfaz de red al dominio lgico
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
primary
active
-t-cv
SP
t1000-01
bound
----5000
VCPU
4
4
Memory
1G
312M
Util
0.3%
Uptime
1h 4m
VCPU
4
4
Memory
1G
312M
Util
0.2%
100%
Uptime
1h 5m
6s
El nuevo dominio lgico 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 '^]'.
File and
Si intentamos arrancar con el disco virtual que tiene asignado el dominio t1000-01, la
respuesta ser parecida a la anterior, ya que an no hemos instalado un SO en este
Discos de Solaris 10
El primer paso ser conseguir los discos de instalacin de Solaris 10. La mquina
T1000 que estamos utilizando no dispone de unidad de CDROM, por lo que tendremos
que subir las imgenes 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 instalacin bsica en el dominio lgico
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 #
Ahora disponemos de dos ficheros con imgenes 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 imgenes ISO.
root@t1000 #
/dev/lofi/2
root@t1000 #
/dev/lofi/2
root@t1000 #
root@t1000 #
root@t1000 #
root@t1000 #
root@t1000 #
root@t1000 #
root@t1000 #
Copyright
root@t1000 #
root@t1000 #
a
platform
bin
sbin
root@t1000 #
lofiadm -a /ISO/sol-10-u3-ga-sparc-v1.iso
lofiadm -a /ISO/sol-10-u3-ga-sparc-v1_s1.iso
mkdir /mnt/s0
mkdir /mnt/s1
mount -F hsfs /dev/lofi/1 /mnt/s0/
mount -F ufs /dev/lofi/2 /mnt/s1/
ls /mnt/s0
JDS-THIRDPARTYLICENSEREADME
ls /mnt/s1
cdrom
reconfigure
dev
tmp
devices
system
etc
var
kernel
usr
lib
Solaris_10
mnt
opt
proc
(SinstNM)
(SinstIP4)
(SinstPTH)
(SrootNM)
(SrootIP4)
(SrootPTH)
(BootFile)
:
:
:
:
:
:
:
t1000
192.168.29.40
/var/INSTALL_JUMPSTART/
t1000
192.168.29.40
/mnt/s0/Solaris_10/Tools/Boot
0100144FF9ADC3
Vdisk:
size
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]
vdisk1 vol10@primary-vds0
#
#
#
#
#
#
#
#
De la salida del comando ifconfig, podemos ver que la interfaz vsw0 no est
configurada. Aadimos 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 #
2.
3.
4.
5.
6.
7.
8.
9.
German
Italian
Japanese
Korean
Simplified Chinese
Spanish
Swedish
Traditional Chinese
Como podemos ver, este es el primer paso de cualquier instalacin de Solaris, ahora
solo tendremos que ir completando los distintos mens. Antes de continuar con la
instalacin, hay que recordar que debe ser una instalacin mnima, ya que solo hemos
configurado en Jumpstart el primer CD. Una vez que hemos reiniciado el SO del
dominio lgico t1000-01, comprobamos el nmero 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
type
partition
current
format
repair
label
analyze
defect
backup
verify
save
inquiry
volname
!< cmd >
quit
format> p
select a disk
select (define) a disk type
select (define) a partition table
describe the current disk
format and analyze the disk
repair a defective sector
write label to the disk
surface analysis
defect list management
search for backup labels
read and display labels
save new disk/partition definitions
show vendor, product and revision
set 8-character volume name
- execute , then return
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
Flag
wm
Cylinders
0 - 1703
Size
499.22MB
0
Blocks
(1704/0/0)
wm
wm
0 - 1703
wm
(0/0/0)
wm
(0/0/0)
wm
(0/0/0)
wm
(0/0/0)
wm
(0/0/0)
499.22MB
(0/0/0)
(1704/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
#
#
#
#
#
ldm
ldm
ldm
ldm
add-domain t1000-02
add-vcpu 2 t1000-02
add-memory 300M t1000-02
add-vnet vnet1 primary-vsw0 t1000-02
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 lgico
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
primary
active
-t-cv
SP
t1000-01
active
-t--5001
t1000-02
bound
----5000
VCPU
4
4
2
Memory
1G
312M
300M
Util
1.9%
3.2%
Uptime
4h 39m
13m
VCPU
4
4
2
Memory
1G
312M
300M
Util
0.2%
0.2%
100%
Uptime
4h 40m
14m
28s
El nuevo dominio lgico 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, deberamos 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 razn 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 mquina 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 lgico 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
primary
active
-t-cv
t1000-01
active
-t--t1000-02
active
-t--root@t1000 # ldm list
Name
State
Flags
primary
active
-t-cv
t1000-01
active
-t--t1000-02
active
-t--root@t1000 #
Cons
SP
5001
5000
VCPU
4
4
2
Memory
1G
312M
300M
Util
0.5%
21%
0.2%
Uptime
5h 4m
2m
5m
Cons
SP
5001
5000
VCPU
4
4
2
Memory
1G
312M
300M
Util
0.3%
0.0%
0.4%
Uptime
5h 4m
2m
5m
VCPU
4
Memory
1G
Util
0.5%
Uptime
1d 21h
t1000-01
bound
----5001
t1000-02
active
-t--5000
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 '^]'.
10
2
312M
300M
1.5%
4m
Con el comando prtdiag podemos comprobar que el dominio lgico t1000-01 tiene
asignadas 10 CPUs.