Zonas y Contenedores bajo ZFS
Una de las ventajas de crear zonas y/o contenedores bajo el nuevo sistema de ficheros ZFS, reside que nos podemos apoyar en la creación de sanpshot y clones para mover un contenedor de un sistema real (anfitrión) a otro.
La zona global origen tiene como hostname "opensolaris" y el sistema anfitrión destino se denomina "opensolaris2".
Partimos de una zona de tipo BrandZ acotada en cuanto al consumo de memoria y swap:
# hostname
Opensolaris
# zonecfg -z zonelx info
zonename: zonelx
zonepath: /opt/zones/zonelx
brand: lx
autoboot: false
bootargs: -m verbose
pool:
limitpriv:
scheduling-class:
ip-type: shared
net:
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)
y de los siguientes filesystems ZFS:
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
mypool 1,57G 380M 26,5K none
mypool/zonas 1,57G 380M 1,57G /opt/zones/
Lo primero que hacemos es "desenganchar" del sistema anfitrión origen, el contenedor que vamos a mover:
# zoneadm -z zonelx detach
Posteriormente realizamos un snapshot de dicho filesystem sobre el que reside el contenedor denominado zonelx.
# zfs snapshot mypool/zonas@Snap1
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
mypool 1,34G 2,94G 24,5K none
mypool/zonas 1,34G 2,94G 1,34G /opt/zones/
mypool/zonas@Snap1 0 - 1,34G -
Una vez que tenemos la imagen como resultado de la snapshot, realizamos un backup de la misma a un fichero local.
# zfs send mypool/zonas@Snap1 > /opt/zones/zonelx.Backup1 &
Y ese mismo fichero resultado del backup lo llevamos por ssh al anfitrión destino.
# scp /opt/zones/zonelx.Backup1 un38134@10.73.130.247:/export/home/un3813 &
Una vez que estamos en el sistema destino, unicamente creamos el pool ZFS deniminado "mypool" y sobre el realizamos la importación del fichero resultado del backup de la snapshot realizado en el sistema origen.
# hostname
opensolaris2
# df -h
Sistema de archivos tamaño usados aprovechar capacidad Montado en
/dev/dsk/c0d0s0 5,4G 3,8G 1,6G 71% /
/devices 0K 0K 0K 0% /devices
ctfs 0K 0K 0K 0% /system/contract
proc 0K 0K 0K 0% /proc
mnttab 0K 0K 0K 0% /etc/mnttab
swap 811M 856K 810M 1% /etc/svc/volatile
objfs 0K 0K 0K 0% /system/object
/usr/lib/libc/libc_hwcap1.so.1
5,4G 3,8G 1,6G 71% /lib/libc.so.1
fd 0K 0K 0K 0% /dev/fd
swap 810M 40K 810M 1% /tmp
swap 810M 28K 810M 1% /var/run
mypool 1,9G 24K 1,9G 1% /mypool
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
mypool 91K 1,94G 24,5K none
# zfs receive mypool/zonas < /export/home/un38134/zonelx.Backup1
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
mypool 1,34G 2,94G 24,5K none
mypool/zonas 1,34G 2,94G 1,34G /opt/zones/
mypool/zonas@Snap1 0 - 1,34G -
Una vez importado el sanpshot ZFS podemos crear el contenedor, asi:
# zonecfg -z zonelx
zonecfg:zfszone2> create -a /opt/zonas/zonelx
zonecfg:zfszone2> exit
Una vez creada la zona, la podemos "enganchar" en el anfitrión destino.
# zoneadm -z zonelx attach
# zoneadm list -iv
ID NAME STATUS PATH BRAND IP
0 global running / native shared
- zonelx installed /opt/zones/zonelx lx shared
Una vez creada, la podemos arrancar y acceder a ella.
# zoneadm -z zonelx boot
# 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 -a
Linux zonelx 2.4.21 BrandZ fake linux i686 i686 i386 GNU/Linux
# ifconfig -a
eth0 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
Luego de una forma sencilla y con muy poco tiempo de perdia de servivio hemos movido un contenedor (con toda su configuración) de un sistema anfitrión inicial a otro destino.
No hay comentarios:
Publicar un comentario