Está en la página 1de 20

Virtualizacin Zonas

David Galn Ortiz. www.opensolarisblog.org dgalan@opensolarisblog.org

< Spain OpenSolaris Users Groups >

<OrangeBooks>

USE

IMPROVE

EVANGELIZE

Spain OpenSolaris Users Group

LICENCIA.................................................................................................................3 REFERENCIAS .............................................................................................................3 CONTENEDORES....................................................................................................4 ZONAS EN SOLARIS 10.................................................................................................4 CREAR UNA ZONA........................................................................................................5 Asignar CPU......................................................................................................6 Memoria.............................................................................................................7 Espacio en disco................................................................................................7 RED....................................................................................................................8 Creacin de una zona no compartida o Small-Zone.........................................8 Arrancar la zona..............................................................................................12 Zlogin entrar en la nueva zona........................................................................12 Parar la Zona virtual......................................................................................14 Crear una zona no compartida o BIG-ZONE..................................................15 ESTADOS DE UNA ZONA..............................................................................................17 MONITORIZAR UNA ZONA............................................................................................18 VALIDARSE EN UNA ZONA...........................................................................................19 DESINSTALAR UNA ZONA.............................................................................................20

Spain OpenSolaris Users Group

Licencia
Esta obra est bajo una licencia Reconocimiento-NoComercialSinObraDerivada-2.5 Espaa de Creative Commons. Para ver una copia de esta licencia, visite http://creativecommons.org/licenses/by-nc-nd/2.5/es o enve una carta a Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. Usted es libre de: Copiar, distribuir y comunicar pblicamente la obra.

Bajo las condiciones siguientes:

Reconocimiento. Debe reconocer los crditos de la obra de la manera especificada por el autor o el licenciador. No comercial. No puede utilizar esta obra para fines comerciales. Compartir bajo la misma licencia. Si altera o transforma esta obra, o genera una obra derivada, slo puede distribuir la obra generada bajo una licencia idntica a sta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los trminos de la licencia de esta obra.

Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor.

Referencias
Todos los nombres propios de programas, sistemas operativos, equipos hardware, etc., que aparecen en este libro son marcas registradas de sus respectivas compaas u organizaciones.

Spain OpenSolaris Users Group

Contenedores
Zonas en Solaris 10 La tecnologa de contendedores permite la virtualizacin de Solaris 10 en zonas aisladas del resto del sistema. La denominacin de contenedores es la suma de el SRM (Gestor de Recursos de Solaris) + Zonas. Las zonas ejecutan los procesos de forma aislada al sistema anfitrin sin comunicacin con otros procesos fuera de la zona. Las zonas solo pueden ejecutar entornos virtuales con el operativo Solaris 10 compartiendo el kernel del sistema anfitrin Las zonas se dividen en: Zona Global: es la primera instalacin que se realiza de Solaris 10 fsicamente en la mquina y en la que se basan el resto de zonas. Tiene el control de todo el sistema y el hardware de la mquina. Zona no global: es un contenedor aislado de la zona global donde se pueden ejecutar Solaris 10 y aplicaciones forma aislada a la zona global.
4

Spain OpenSolaris Users Group

Crear una zona La zonas no globales pueden compartir directorios con la zona global o estar aislada. Una zona no global puede compartir con la zona global los sistemas de ficheros: /usr /lib /sbin /platform

El uso de una zona no global compartida ocupa tan solo 100MB al tener compartidos directorios con la zona global tal como se puede ver en la figura 5.1.

Zona Global 0
/dev/rdsk/c0d0s0

Zona local Compartida


lofs(ro) /usr /lib /sbin /platform /var /etc

/usr /lib /sbin /platform /var /etc 4GB

100MB

Figura 5.1 Zona compartida

Spain OpenSolaris Users Group

Zona Global 0
/dev/dsk/c0d0 /usr /lib /sbin /platform /var /etc 4GB

BIG ZONE
/dev/dsk/c1d0 /usr /lib /sbin /platform /var /etc 3GB

Figura 5.2 Zona no compartida Las zonas no compartidas o zonas grandes ocupan 4GB ya que no comparten sistema de ficheros. Al no compartir sistemas de ficheros con la zona global podemos aplicar parches a la zona distintos a los de la zona global. Podemos tener varias zonas con niveles de parche distintos segn las necesidades de las aplicaciones. En la figura 5.2 se representa una zona no compartida. Control de recursos Cuando creamos una zona tenemos que asignarlas recursos como red, memoria, CPU etc..

Asignar CPU El control de recursos sobre la CPU en zonas puede ser de tres tipos:

Spain OpenSolaris Users Group

CPU fija: una zona puede tener asignada una o mas CPUs de forma fija. Esta forma puede ser til cuando licenciamos aplicaciones por el numero de CPU. Esta opcin tiene una desventaja si la zona no requiere mucho uso de CPU ya que perdemos capacidad de procesamiento estando la CPU solamente asignada una zona. CPUs dinamicas: se asigna un mnimo y un mximo de CPUs para una zona. El demonio poold se encarga de balancear el numero de CPUs disponibles segn la necesidades de cada zona. CPUs compartidas: consiste en un pool de CPUs asignado a todas las zonas. El sistema repartir las CPU segn las necesidades de cada zona.

Memoria El control de memoria para zonas no globales hasta la versin 11/06 de Solaris 10 no se poda realizar de forma directa se utiliza el resource control del sistema. Se ha incluido una nueva propiedad denominada zone.max-locked-memory que establece el limite de memoria para una zona.

Espacio en disco La zonas puedes ser creadas en: Discos independientes o particiones (slices): una zona puede ser creada en un directorio de cualquier sistema de ficheros, una particin o en un disco independiente.

Spain OpenSolaris Users Group

Volmenes independientes: puede instalarse las zonas en volmenes de Solaris Volume Manager y beneficiarse de polticas como RAID1, RAIRD 5 etc.. ZFS: Puede instalarse una zona en uns sistema de ficheros ZFS o compartir un sistema de ficheros de la zona global.

RED Cuando creamos una zona se le asigna una direccin IP e interfaz de red de la zona global.

Creacin de una zona no compartida o Small-Zone En el siguiente apartado vamos a seguir los pasos necesarios para crear una zona Solaris 10 no compartida ocupando tan solo 100MB . La zona a crear tiene un direccin IP asociada a la interfaz pcn1 y se instala en /babilonia/mizona. forma: zonecfg z [nombre de la zona] Al ejecutar el comando aparece un mensaje indicando que la zona no esta configurada. Para configurar la zona tenemos que introducir los comandos de configuracin el editor de zonezfg. Los datos a introducir son: autoboot=trae: este parmetro define si la zona es persintente a los reinitos del sistema. Si reiniciamos la mquina anfitriona la zona tambin arrancara. zonepath: PATH donde se instalara la zona Solarias 10. set address: asigna una direccin IP para la zona
8

Ejecutamos el comando zonecfg con la opcin z de la siguiente

Spain OpenSolaris Users Group

set physical: asocia una interfaz de la zona no global para su uso en la zona.

El ejemplo siguiente muestra el proceso completo para la creacin de la zona:


# zonecfg -z mizona mizona: No se ha configurado esa zona Use 'create' para comenzar a configurar una zona nueva. zonecfg:mizona> create zonecfg:mizona> set autoboot=true zonecfg:mizona> set zonepath=/babilonia/mizona zonecfg:mizona> add net zonecfg:mizona:net> set address=10.73.111.25 zonecfg:mizona:net> set physical=pcn1 zonecfg:mizona:net> end zonecfg:mizona> info zonename: mizona zonepath: /babilonia/mizona autoboot: true pool: limitpriv: inherit-pkg-dir: dir: /lib inherit-pkg-dir: dir: /platform inherit-pkg-dir: dir: /sbin inherit-pkg-dir: dir: /usr net: address: 10.73.130.25 physical: pcn1 zonecfg:mizona> verify zonecfg:mizona> commit zonecfg:mizona> exit

Con los pasos anteriores hemos creado la zona. Al realizar el commit se crea un fichero XML en /etc/zones con los datos de la zona:
9

Spain OpenSolaris Users Group

Ejemplo de mizona.xml:
# more mizona.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE zone PUBLIC "-//Sun Microsystems Inc//DTD Zones//EN" "file:///usr/share/lib/xml/dtd/zonecfg.dtd.1"> <!-DO NOT EDIT THIS FILE. Use zonecfg(1M) instead. --> <zone name="mizona" zonepath="/babilonia/mizona" autoboot="true"> <inherited-pkg-dir directory="/lib"/> <inherited-pkg-dir directory="/platform"/> <inherited-pkg-dir directory="/sbin"/> <inherited-pkg-dir directory="/usr"/> <network address="10.73.130.25" physical="pcn1"/> </zone>

Para comprobar que la mquina esta correctamente creada ejecutamos el comando: zoneadm list -cv
# zoneadm list -cv ID NAME STATUS PATH 0 global running / - mizona configured /babilonia/mizona

Ya esta creada la zona y tenemos que inicializarla para que se instalen los paquetes necesarios. Este paso puede tardar varios minutos por que implica la copia de todos los paquetes necesarios. Antes de iniciar la instalacin de paquetes para la zona debemos de comprobar los permisos de la zona par ello acudimos al comando zoneadm para verificar que la zona tiene los permisos necesarios para su creacin. Para verificar ejecutamos: zoneadm z [nombre de la zona] verify
10

Spain OpenSolaris Users Group

Al lanzar el comando nos muestra un mensaje avisando que los permisos sobre los ficheros de la zona no son los correctos:
bash-3.00# zoneadm -z mizona verify /babilonia/mizona no debe ser legible por grupo. /babilonia/mizona no debe ser ejecutable por grupo. /babilonia/mizona no debe ser legible por todos. /babilonia/mizona no debe ser ejecutable por todos. no se ha podido verificar rutazona /babilonia/mizona debido a los errores anteriores. zoneadm: la zona mizona no se ha podido verificar

Solucionamos el problema aplicando el comando chmod con los permisos 700.


chmod 700 /babilonia/mizona/

Si ejecutamos nuevamente el comando zoneadm para verificar la zona no observaremos ningn error. Instalamos la mquina ejecutando la orden: zoneadm z [nombre de la zona] install
bash-3.00# zoneadm -z mizona install Preparing to install zone <mizona>. Creating list of files to copy from the global zone. Copying <2430> files to the zone. Initializing zone product registry. Determining zone package initialization order. Preparing to initialize <1042> packages on the zone. Initialized <1042> packages on zone. Zone <mizona> is initialized. El archivo </babilonia/mizona/root/var/sadm/system/logs/install_log> contiene un registro de la instalacin por zonas.

Una vez finalizada la copia de paquetes comprobamos que la maquina esta instalada correctamente ejecutando zoneadm list cv:
11

Spain OpenSolaris Users Group

bash-3.00# zoneadm list -cv ID NAME STATUS PATH 0 global running / - mizona installed /babilonia/mizona

Arrancar la zona La mquina ya esta configurada e instalada ahora tenemos que arrancar la zona con el comando zoneadm y el parmetro boot: zoneadm z [nombre de la zona] boot
bash-3.00#zoneadm z mizona boot bash-3.00# zoneadm list -cv ID NAME STATUS PATH 0 global running / 4 mizona running /babilonia/mizona

Para verificar que la zona esta arrancada ejecutamos el comando zoneadm list cv y veremos que su estado es running.

Zlogin entrar en la nueva zona Tenemos la mquina virtual ejecutndose correctamente y queda realizar el ultimo paso supone entrar en la mquina y responder unas preguntas sobre la configuracin que queremos para la zona. Las preguntas son las mismas que en una instalacin normal de Solaris, realizar las siguientes preguntas: Nombre de la mquina Idioma del sistema Idioma del teclado
12

Spain OpenSolaris Users Group

Tipo de Terminal Zona geogrfica Contrasea de root Compatibilidad NTFS v4

C: zlogin C [nombre de la zona] Como se aprecia en el siguiente ejemplo se inicia un pequeo instalador que pregunta nuestras preferencias para el sistema:

Para entrar en la mquina ejecutamos la orden zlogin con el parmetro

bash-3.00# zlogin -C mizona [Conectado a la consola de la zona 'mizona'] Select a Language 0. English 1. Spanish 2. it Please make a choice (0 - 2), or press h or ? for help:

Sobre el Terminal:
Qu tipo de terminal esta usando? 1) Estndar ANSI CRT 2) DEC VT52 3) DEC VT100 4) Heathkit 19 5) Lear Siegler ADM31 6) Consola PC 7) Herramienta de comandos Sun 8) Estacin de Trabajo (Workstation) Sun 9) Televideo 910 10) Televideo 925 11) Wyse, modelo 50 12) Emulador X Terminal (xterms) 13

Spain OpenSolaris Users Group

13) Emulador de terminal CDE (dtterm) 14) Otros Introduzca el nmero seleccionado y presione Intro:

Cuando finalizamos la preguntas se configura e inicia el arranque del sistema operativo Solaris 10 como en cualquier mquina:
SunOS Release 5.10 Version Generic_118855-33 32-bit Copyright 1983-2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Hostname: babilonia babilonia console login: Feb 13 03:09:03 babilonia sendmail[5971]: My unqualified host name (localhost) unknown; sleeping for retry babilonia console login:

Estamos dentro de la mquina virtual babilonia y podemos hacer login con el usuario introducido en las preguntas de la instalacin de la zona. Ahora podemos instalar y configurar la mquina virtual como cualquier otra. Ahora se puede hacer telnet o ssh a la direccin IP que tenemos asociada a nuestra mquina virtual e instar cualquier servicio normalmente.

Parar la Zona virtual Para parar una mquina virtual podemos proceder de dos formas diferentes: 1. Al ser una mquina virtual responde a los mismos comandos de parada que cualquier instalacin normal de Solaris por lo tanto podemos parar con comandos como init 0, shutdown o halt. 2. Desde la zona global podemos o reiniciar la mquina utilizando el comando zoneadm con los parmetros reboot y halt:
14

Spain OpenSolaris Users Group

a. zoneadm -z [nombre de la zona] reboot b. zoneadm -z [nombre de la zona] halt

Crear una zona no compartida o BIG-ZONE Tal como hemos visto al comienzo una zona no compartida no comparte los directorios /usr./lib,/sbin y /platform por lo tanto ocupa 4GB de espacio aportando la ventaja de tener una zona totalmente independiente donde se puede aplicara un nivel de parches diferente a la zona global. Para crear una zona no compartida vamos utilizar un disco completo de 6GB con sistema de ficheros UFS montado en /bigzone. disco:
/dev/dsk/c1d0s0 5783070 5753 5719487 1% /bigzone

Antes de instalar la zona vemos que tan solo ocupamos el 1% del

Al finalizar la instalacin el espacio ocupado por la zona es igual a una instalacin completa de Solaris 10:
/dev/dsk/c1d0s0 5783070 2951463 2773777 52% /bigzone

Una zona no compartida o BigZone se crea igual que una zona compartida con la salvedad de que indicamos que no se compartan los sistemas de ficheros /usr./lib,/sbin y /platform con los parmetros: remove inherit-pkg-dir dir=/sbin remove inherit-pkg-dir dir=/usr remove inherit-pkg-dir dir=/platform remove inherit-pkg-dir dir=/lib

Los pasos a realizar son los siguientes:


15

Spain OpenSolaris Users Group

# zonecfg -z mibigzone mibigzone: No se ha configurado esa zona Use 'create' para comenzar a configurar una zona nueva. zonecfg:mibigzone> create zonecfg:mibigzone> remove inherit-pkg-dir dir=/sbin zonecfg:mibigzone> remove inherit-pkg-dir dir=/usr zonecfg:mibigzone> remove inherit-pkg-dir dir=/platform zonecfg:mibigzone> remove inherit-pkg-dir dir=/lib zonecfg:mibigzone> set autoboot=true zonecfg:mibigzone> set zonepath=/bigzone zonecfg:mibigzone> add net zonecfg:mibigzone:net> set address=127.0.0.100 zonecfg:mibigzone:net> set physical=lo0 zonecfg:mibigzone:net> end zonecfg:mibigzone> info zonename: mibigzone zonepath: /bigzone autoboot: true pool: limitpriv: net: address: 127.0.0.100 physical: lo0 zonecfg:mibigzone> verify zonecfg:mibigzone> commit zonecfg:mibigzone> exit

Establecemos los permisos de fichero para la zona:


chmod 700 /bigzone

Verificamos la zona y procedemos a la instalacin de los paquetes necesarios para la ejecucin de la zona:
bash-3.00# zoneadm -z nocompartida verify bash-3.00# zoneadm -z nocompartida install Preparing to install zone <nocompartida>. Creating list of files to copy from the global zone. 16

Spain OpenSolaris Users Group

Copying <130622> files to the zone. Initializing zone product registry. Determining zone package initialization order. Preparing to initialize <1042> packages on the zone. Initialized <1042> packages on zone. Zone <nocompartida> is initialized. El archivo </bigzone/root/var/sadm/system/logs/install_log> contiene un registrde la instalacin por zonas.

Arrancamos la zona:
# zoneadm list -cv ID NAME STATUS PATH 0 global running / - nocompartida installed /bigzone # zoneadm -z nocompartida boot # zoneadm list -cv ID NAME STATUS PATH 0 global running / 2 nocompartida running /bigzone

Y finalizamos el proceso de instalacin estableciendo el nombre de mquina, contrasea de root, zona geogrfica etc..:

bash-3.00# zlogin -C nocompartida [Conectado a la consola de la zona 'nocompartida'] Select a Language 0. English 1. Spanish 2. it Please make a choice (0 - 2), or press h or ? for help:

Estados de una zona Hemos visto como crear una zona, configurarlas y las operaciones de parada y arranque. Ahora veremos como detectar el
17

Spain OpenSolaris Users Group

estado de una mquina desde la zona global. Con el comando zoneadm list cv obtenemos informacin sobre el estado de una zona:
# zoneadm list -cv ID NAME STATUS PATH 0 global running / - nocompartida installed /bigzone

Los estados posibles son: Configured: se encuentra en estado estado cuando finalizamos la configuracin y realizamos un commit. Incomplete: mostrar este estado muestran se estn instalando los paquetes al ejecutar zoneadm con la opcin install. Installed: la zona tiene todos los paquetes necesarios para su funcionamiento. Ready: la zona esta lista tiene creado el kernel, los controladores de red estn cargados y los sistemas de ficheros montados. Running: la zona esta arrancada. Shutting Down: la zona esta en proceso de parada.

Monitorizar una zona Una zona puede ser monitorizada desde la zona global utilizando el comando zlogin con la opcin S que permite la ejecucin de un comando dentro la zona y enviar la salida del comando a la zona global. Zlogin S [nombre de la zona] comando Ejemplos para monitorizar una zona:
18

Spain OpenSolaris Users Group

Uptime:
# zlogin -S nocompartida "uptime" 10:43am up 8 min(s), 0 users, load average: 0.18, 0.87, 0.98

FileSystems:
# # zlogin -S nocompartida "df -k" Filesystem kbytes used avail capacity Mounted on / 5783070 2964445 2760795 52% / /dev 5783070 2964445 2760795 52% /dev proc 0 0 0 0% /proc ctfs 0 0 0 0% /system/contract swap 513036 260 512776 1% /etc/svc/volatile mnttab 0 0 0 0% /etc/mnttab /usr/lib/libc/libc_hwcap1.so.1 5783070 2964445 2760795 52% fd 0 0 0 0% /dev/fd swap 512812 36 512776 1% /tmp swap 512796 20 512776 1% /var/run

/lib/libc.so.1

Uname a:
# zlogin -S nocompartida "uname -a" SunOS babilonia 5.10 Generic_118855-33 i86pc i386 i86pc

Validarse en una zona Para entrar a una zona podemos realizar un telnet o ssh a la direccin IP asociada a la zona o entrar por consola con la utilizad zlogin: zlogin l [usuario] [nombre de zona] Ejemplo de conexin a una zona con un usuario:
19

Spain OpenSolaris Users Group

# zlogin -l aulaunix nocompartida [Conectado a la zona 'nocompartida' pts/5] No directory! Logging in with home=/ Sun Microsystems Inc. SunOS 5.10 Generic January 2005 $ id uid=100(aulaunix) gid=1(other) $

Desinstalar una zona Para desinstalar una zona tenemos que detener la zona y ejecutar el comando zoneadm con la opcin uninstall. Hay que usar esta opcin con mucha precaucin ya que elimina todos los ficheros:
# zoneadm -z nocompartida halt # zoneadm -z nocompartida uninstall F # df k /dev/dsk/c1d0s0 5783070 5894 5719346

1%

/bigzone

La desinstalacin de la zona puede tardar varios minutos al igual que al crearla.

20