
Tras la publicación de la nueva Release
8/07 de Solaris 10 por parte de
Sun Microsystems, caben destacar entre sus nuevas funcionalidades, la posibilidad de configurar los Contenedores a través de la propia configuracion de las zonas virtuales, al igual que la asignación dedicada de los interfaces de red reales de la zona global.
La funcionalidad de asignar un interface de la zona global (anfitrión) para una zona virtual, no es compatible actualmente con las de tipo BrandZ, pero si el sistema virtualizado es Solaris 10 se puede configurar facilmente en la seccion general, asi:
#
zonecfg -z zonepruebaszonelx: No se ha configurado esa zona
Use 'create' para comenzar a configurar una zona nueva.
zonecfg:zonepruebas>
create zonecfg:zonepruebas>
set zonepath=/opt/zones/zonepruebaszonecfg:zonepruebas>
set ip-type=exclusivezonecfg:zonepruebas>
add netzonecfg:zonepruebas:net>
set physical=pcn0zonecfg:zonepruebas:net>
endzonecfg:zonepruebas>
exitPosteriormente configurariamos el interface de red pcn0 en el sistema virtualizado como si se tratase del anfitrión, e incluso podemos filtrar su tráfico con
IPFilter.
#
zlogin -C zonepruebas#
ifconfig pcn0 plumb#
ifconfig pcn0 inet 192.168.1.2 netmask 255.255.255.0 broadcast +#
route add default 10.73.130.1#
cat /etc/ipf/ipf.conf### Block all inbound and outbound traffic by default
block in log on pcn0 all head 100
block out log on pcn0 all head 150
### Allow inbound SSH connections
pass in quick proto tcp from any to any port = 22 keep state group 100
### Allow my box to utilize all UDP, TCP and ICMP services
pass out quick proto tcp all flags S/SA keep state group 150
pass out quick proto udp all keep state group 150
pass out quick proto icmp all keep state group 150
#
svcadm enable ipfilter#
ipf -f /etc/ipf.confEn el siguiente ejemplo vamos a definir la configuración de una zona virtual (en la que instalaremos una imagen de CentOS 3.0) la cual vamos a acotar en cuanto a sus recursos de CPU y memoria durante su definición, asi:
#
zonecfg -z zonelxzonelx: No se ha configurado esa zona
Use 'create' para comenzar a configurar una zona nueva.
zonecfg:zonelx>
create -t SUNWlxzonecfg:zonelx>
set zonepath=/opt/zones/zonelxzonecfg:zonelx>
set autoboot=truezonecfg:zonelx>
add netzonecfg:zonelx:net>
set physical=pcn1zonecfg:zonelx:net>
set address=10.73.130.249/24zonecfg:zonelx:net>
endzonecfg:zonelx>
add dedicated-cpuzonecfg:zonelx:dedicated-cpu>
set ncpus=1-2zonecfg:zonelx:dedicated-cpu>
endzonecfg:zonelx>
add capped-memoryzonecfg:zonelx:capped-memory>
set physical=256mzonecfg:zonelx:capped-memory>
set swap=128mzonecfg:zonelx:capped-memory>
set locked=50mzonecfg:zonelx:capped-memory>
endzonecfg:zonelx>
verifyzonecfg:zonelx>
commitzonecfg:zonelx>
exitLa configuración de la memoria de tipo contenedor tambien la podemos realizar cuando el contenedor se esta ejecutando, a través del
Resource Manager, asi:
#
rcapadm -z zonelx -m 256mY lo mismo el area de swap:
#
prctl -n zone.max-swap -v 128m -t privileged -r -e deny -i zone zonelxInstalamos la imagen de CentOS 3.0...
#
zoneadm -z zonelx install -d /export/home/un38134/centos_fs_image.tar.bzInstalling zone 'zonelx' at root directory '/opt/zones'
from archive '/export/home/un38134/centos_fs_image.tar.bz'
This process may take several minutes.
Setting up the initial lx brand environment.
System configuration modifications complete.
Installation of zone 'zonelx' completed successfully.
Details saved to log file:
"/opt/zones/root/var/log/zonelx.install.747.log"
#
zoneadm list -iv ID NAME STATUS PATH BRAND IP
0 global running / native shared
1 zonelx running /opt/zones/zonelx lx shared
- zonepruebas installed /opt/zones/zonepruebas native shared
#
zonecfg -z zonelx infozonename: zonelx
zonepath: /opt/zones/zonelx
brand: lx
autoboot: false
bootargs: -m verbose
pool:
limitpriv:
scheduling-class:
ip-type:
sharednet:
address: 10.73.130.249/24
physical: pcn0
capped-memory:
physical: 256M
[swap: 128M]
[locked: 50M]
rctl:
name: zone.max-swap
value: (priv=privileged,limit=134217728,action=deny)
rctl:
name: zone.max-locked-memory
value: (priv=privileged,limit=52428800,action=deny)
Arrancamos la zona.
#
zoneadm -z zonelx bootY ya podemos acceder a nuestro contenedor con Linux.
#
zlogin zonelx[Conectado a la zona 'zonelx' pts/2]
Welcome to your shiny new Linux zone.
- The root password is 'root'. Please change it immediately.
- To enable networking goodness, see /etc/sysconfig/network.example.
- This message is in /etc/motd. Feel free to change it.
For anything more complicated, see:
http://opensolaris.org/os/community/brandz/
You have mail.
#
uname -aLinux zonelx 2.4.21 BrandZ fake linux i686 i686 i386 GNU/Linux
#
ifconfig -aeth0 Link encap:Ethernet HWaddr 00:0C:29:2D:04:A0
inet addr:10.73.130.249 Bcast:10.73.130.255 Mask:255.255.255.0
UP BROADCAST RUNNING SLAVE MTU:1500 Metric:1
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING SLAVE MTU:8232 Metric:1
~.
A diferencia con el
articulo anterior de este mismo blog, hemos trasformado la zona virtual de tipo BrandZ en un contenedor con unos pocos parametros definidos en su configuración.