Servicios

Web hosting
Ver »
Páginas Web
Ver »
Soporte UNIX
Ver »
UNIX TIPS
Ver »

ZONE AND CONTAINER CONFIGURATION


Para mayor información  ver System Adminstration Guide:


Solaris Containers-Resource Management and Solaris Zones

Contenedor
    Nombre:       o2cmx
    Zonepath:     /export/zone/o2cmx
    Autoboot:     true
    Herencia dir:  /lib, /platform, /usr, /sbin      (por default)


Format para dejar 34 GB partición 0, 34 GB en partición 1 (depende del requerimiento) y 256 MB partición 7 (para réplicas)

# prtvtoc /dev/rdsk/c1t2d0s2 > /tmp/disco

cat /tmp/disco

#fmthard -s /tmp/disco /dev/rdsk/c1t3d0s2


Verificar con format
Verificar replicas con metadb (nos indica las 3 réplicas en cada disco).

Los mirror donde residiran los zonepaths, y los fs's se llamará d7 para una zona y d8 para la otra y estarán formado por los submirror d71, d72, d81, d82 respectivamente.

Para crear los metadispositivos
#metainit d71 1 1 c1t2d0s0
#metainit d72 1 1 c1t3d0s0

Crear el espejo
#metainit d7 -m d71

Crear la soft partition donde residira el zone path de la zona (este fs SI debe estar montado)

#metainit d700 -p d7 12g

Ahora crear la soft partition donde residiran los fs's de la aplicación (estos fs's NO deben de estar montados, y se crean de la misma forma)

# metainit d701, d702, d703 y asi sucesivamente los demas fs's de las soft partition

Metastat después de haber atachado los dos submirrors  (d71, d72)

# metastat -p

d7 -m d71 d72 1
d71 1 1 c1t2d0s0
d72 1 1 c1t3d0s0
d700 -p d7 -o 10208 -b 25165824
d701 -p d7 -o 25176064 -b 3072000
d702 -p d7 -o 28248096 -b 3072000

Crear el file system de cada soft partition:
#newfs /dev/md/rdsk/d700
#newfs /dev/md/rdsk/d701
#newfs /dev/md/rdsk/d702

Crear el punto de montaje (solo para el zonepath de la zona)
#mkdir /export/zone/o2cmx

Ponemos en el /etc/vfstab la linea del zonepath de la zona:

/dev/md/dsk/d700    /dev/md/rdsk/d700    /export/zone/o2cmx    ufs    2    yes    -

Montar Zone
#mountall

Cambiamos permisos a el punto de montaje
#chmod 700 /expor/zone/o2cmx


Ahora crear zonas

#zoneadm list -cv

Crear el contenedor
#zonecfg -z o2cmx
  zonecfg:o2cmx> create 
    zonecfg:o2cmx>set zonepath=/export/zone/o2cmx         (ya fue anteriormente creado y montado
                                                                               aquí residira root de la zona)
    zonecfg:o2cmx> set autoboot=true     zonecfg:o2cmx> verify     zonecfg:o2cmx> commit     zonecfg:o2cmx> add attr                                ( Aqui se agrega algun comentario sobre la zona)
    zonecfg:o2cmx> set name=comment     zonecfg:o2cmx>  set type=string     zonecfg:o2cmx> set value="Comentarios sobre la Zona"
    zonecfg:o2cmx>  end     zonecfg:o2cmx>  verify     zonecfg:o2cmx>  commit     zonecfg:o2cmx> exit
#zonecfg -z  o2cmx info
zonepath: /export/zone/o2cmx
autoboot: true pool: inherit-pkg-dir:         dir: /lib inherit-pkg-dir:         dir: /platform inherit-pkg-dir:         dir: /sbin inherit-pkg-dir:
        dir: /usr

Desheredar FS Globales
zonecfg:sabam_db> remove inherit-pkg-dir dir=/lib
zonecfg:sabam_db> remove inherit-pkg-dir dir=/platform
zonecfg:sabam_db> remove inherit-pkg-dir dir=/sbin
zonecfg:sabam_db> remove inherit-pkg-dir dir=/usr

Renombrar una Zona, Solaris 10 8/07 release
zonecfg:my-zone> set zonename=newzone

zonecfg:my-zone> commit

zonecfg:my-zone> exit



Para la instalación del sistema operativo (hace un montado read-only)
#zoneadm -z o2cmx install (tarda alrededor de 20 minutos)

Verificar si ya tengo el nuevo contenedor:
#zoneadm list -cv

Para bootear la zona:
#zoneadm -z o2cmx boot

Para conectarse a la consola (emula consola serial y concluye la configuración de S.O en la zona)
#zlogin -C o2cmx

Para añadir los otros fs's  (los cuales no deben estar montados en la zona global ):
# zonecfg -z o2cmx
zonecfg:myzone> add fs
zonecfg:myzone:fs> set special=/dev/md/dsk/d701
zonecfg:myzone:fs> set raw=/dev/md/rdsk/d701
zonecfg:myzone:fs> set type=ufs
zonecfg:myzone:fs> add options logging
zonecfg:myzone:fs> set dir=/o2cmx/logs  (directorio que será creado en la zona no global)
zonecfg:myzone:fs> end
zonecfg:myzone> verify
zonecfg:myzone> commit
zonecfg:myzone> add fs
zonecfg:myzone:fs> set special=/dev/md/dsk/d702
zonecfg:myzone:fs> set raw=/dev/md/rdsk/d702
zonecfg:myzone:fs> set type=ufs
zonecfg:myzone:fs> add options logging
zonecfg:myzone:fs> set dir=/o2cmx/interfaces (directorio que sera creado en la zona no global)
zonecfg:myzone:fs> end
zonecfg:myzone> verify
zonecfg:myzone> commit
zonecfg:myzone> exit
fs, cpu shares, dispositivos de cinta, etc.

Example>: Dedicated CPUs

Con este comando eliminamos la necesidad de crear CPU Pools y asignacion del pool a la zona.

zonecfg:g5_mx> add dedicated-cpu
zonecfg:g5_mx:dedicated-cpu> set ncpus=8-12
zonecfg:g5_mx:dedicated-cpu> end

After using that command, when that Container boots, Solaris:
1. removes a CPU from the default pool
2. assigns that CPU to a newly created temporary pool
3. associates that Container with that pool, i.e. only schedules that Container's processes on that CPU

Further, if the load on that CPU exceeds a default threshold and another CPU can be moved from another pool, Solaris will do that, up to the maximum configured amount of three CPUs. Finally, when the Container is stopped, the temporary pool is destroyed and its CPU(s) are placed back in the default pool.


Configurar Red para Zone desde zona global
#zonecfg -z g5_mx
    >info
    >add net
        > set address=172.19.200.107
        >set physical=ce2
    >end
>commit
    >info
    >exit

# zoneadm -z g5_mx reboot       (reboot a la zona g5_mx)
# ifconfig -a (ya aparece configurada)

Para cambiar IP desde la zona global (en forma dinámica sin reboot)
# ifconfig ce2:1 plumb 172.19.200.109 netmask 255.0.0.0 + broadcast + up
# ifconfig ce2:1 zone g5_mx


Para que quede en forma permanente debe hacerse con el zonecfg
#zonecfg -z g5_mx
    >select net address=172.19.200.107                   (ip configurada)

        >set address=172.19.200.109                  (nueva ip)
        >end
    >verify
    >commit
    >exit

Esta forma se complementa con la forma dinámica para no hacer reboot

Borrar una direccion ip en una zona
zonecfg:o2c_mx> remove net address=172.18.156.127
zonecfg:o2c_mx> commit
zonecfg:o2c_mx> info

Borrar un fs de la zona no global
global# zonecfg -z my-zone
zonecfg:my-zone> remove fs dir=/cdrom
zonecfg:my-zone> commit
zonecfg:my-zone> exit
Zone needs a reboot after permanent change, or perform the dynamic way

Mounting Veritas and SVM File Systems
1.    Disco SAN - OK

2.    Inicializar disco vxvm - OK

Disk_30      auto:cdsdisk    devadmamdg109  devadmamdg1  online
Disk_31      auto:cdsdisk    devadmamdg110  devadmamdg1  online
Disk_32      auto:cdsdisk    devadmamdg111  devadmamdg1  online
Disk_33      auto:cdsdisk    -            -              online
Disk_34      auto:cdsdisk    -            -              online

vxdg init devadmamdg2 devadmamdg201=Disk_33
3.    Crear grupo discos / agregar discos al diskgroup - OK
# vxdg -g devadmamdg2 adddisk devadmamdg202=Disk_34
# vxdg -g  devadmamdg2 free DISK         DEVICE       TAG          OFFSET    LENGTH    FLAGS
devadmamdg201 Disk_33      Disk_33      41943040  25159424  -
devadmamdg202 Disk_34      Disk_34      41943040  25159424  -

4.    Crear volumenes - OK # vxassist -g devadmamdg2 make o10ginfrqaam 10G   vxassist -g devadmamdg2 make o10ginfrqaam_data01 4G   vxassist -g devadmamdg2 make o10ginfrqaam_data02 4G   vxassist -g devadmamdg2 make o10ginfrqaam_temp01 1G   vxassist -g devadmamdg2 make o10ginfrqaam_indx01 1G #
  vxassist -g devadmamdg2 make o10ginfrdvam 10G   vxassist -g devadmamdg2 make o10ginfrdvam_data01 4G   vxassist -g devadmamdg2 make o10ginfrdvam_data02 4G   vxassist -g devadmamdg2 make o10ginfrdvam_temp01 1G   vxassist -g devadmamdg2 make o10ginfrdvam_indx01 1G
5.    Crear FS vxfs - OK
# mkfs -F vxfs $pwd/$i

6.    Montar en zona global (creando antes el mount-point)- OK  # mkdir -p
 /export/zone/nombre_contenedor/etiqueta_identifica_cada_filesystem

# mount -F  vxfs /dev/vx/dsk/devadmamdg2/o10ginfrdvam          /export/zone/fs/dev-adm-am/o10ginfrdvam
mount -F vxfs /dev/vx/dsk/devadmamdg2/o10ginfrdvam_data01  /export/zone/fs/dev-adm-am/o10ginfrdvam_data01
# mount -F vxfs  /dev/vx/dsk/devadmamdg2/o10ginfrdvam_data02   /export/zone/fs/dev-adm-am/o10ginfrdvam_data02
mount -F vxfs /dev/vx/dsk/devadmamdg2/o10ginfrdvam_indx01 /export/zone/fs/dev-adm-am/o10ginfrdvam_indx01
# mount -F vxfs   /dev/vx/dsk/devadmamdg2/o10ginfrdvam_temp01 /export/zone/fs/dev-adm-am/o10ginfrdvam_temp01
# mount -F vxfs  /dev/vx/dsk/devadmamdg2/o10ginfrqaam         /export/zone/fs/dev-adm-am/o10ginfrqaam
# mount -F vxfs  /dev/vx/dsk/devadmamdg2/o10ginfrqaam_data02  /export/zone/fs/dev-adm-am/o10ginfrqaam_data02
mount -F vxfs /dev/vx/dsk/devadmamdg2/o10ginfrqaam_data01  /export/zone/fs/dev-adm-am/o10ginfrqaam_data01
# mount -F vxfs  /dev/vx/dsk/devadmamdg2/o10ginfrqaam_indx01   /export/zone/fs/dev-adm-am/o10ginfrqaam_indx01
mount -F vxfs /dev/vx/dsk/devadmamdg2/o10ginfrqaam_temp01  /export/zone/fs/dev-adm-am/o10ginfrqaam_temp01


7.    Asignar a contenedores:

Montar vxfs usando lofs
# zonecfg -z g5_mx
>add fs
>set dir=/g5mxtx                            (punto de montaje que sera creado en la zona)
>set special=/export/zone/fs/g5_mx/g5mxtx   (punto de montaje del volumen previamente creado, y montado sobre la zona global)
>set type=lofs
>end
>verify
>commit
>exit
Raw Devices

Para asignar raw device /dev/md/rdsk/d321 a una non-global zone llamada my_zone, hacer lo siguiente:

# zonecfg -z my_zone
zonecfg:my_zone> add device
zonecfg:my_zone:device> set match=/dev/md/rdsk/d321
zonecfg:my_zone:device> end
zonecfg:my_zone> commit
zonecfg:my_zone> exit
#

Para que los cambios sean aplicados es necesario un reboot a la zone:

# zoneadm -z my_zone reboot

Desde la zona global reboot a zona para que tome el cambio o lo montamos en linea  de la siguiente forma:

1)    Creamos el punto de montaje en la zona no global

# mkdir /export/zone/g5_mx/root/g5mxtx

2)    Montar de la siguiente forma en donde el primer path es el punto de montaje en la zona global del vxfs el cual ya esta montado, y el segundo es el path absoluto de el punto de montaje de la zona no global visto desde la global creado en el punto anterior.

# mount -F lofs /export/zone/fs/g5_mx/g5mxtx  /export/zone/g5_mx/root/g5mxtx

Posteriormente entramos a la zona y verificamos el correcto montaje del fs.

Para un UFS

root@guiam2-adm # pwd            (on global zone)
/export/zone/guiam3/root
root@guiam2-adm # mkdir iplanetgui
root@guiam2-adm # mount -F ufs /dev/md/dsk/d708  /export/zone/guiam3/root/iplanetgui
root@guiam2-adm # zlogin guiam3
# df -k
/iplanetgui          9294317    9233 9192141     1%    /iplanetgui


Add an rctl (dynamic way)

#prctl -n zone.cpu-shares -rv 1 -i zone g5_mx

(1 es el numero de shares, votos o acciones que se le asignan a la zona)

Add an rctl (permanent way)

#zonecfg -z g5_mx
    >add rctl
    >set name=zone.cpu-shares
    >add value (priv=privileged,limit=1,action=none)
    >end
    >verify
    >commit
    >info rctl
    >exit

Remove a rctl

rctl:
        name: zone.cpu-shares
        value: (priv=privileged,limit=8,action=none)
zonecfg:o2c_mx> remove rctl name=zone.cpu-shares
zonecfg:o2c_mx> add rctl
zonecfg:o2c_mx:rctl> set name=zone.cpu-shares
zonecfg:o2c_mx:rctl> add value (priv=privileged,limit=1,action=none)
zonecfg:o2c_mx:rctl> end
zonecfg:o2c_mx> verify
zonecfg:o2c_mx> commit
zonecfg:o2c_mx> info rctl

DB KERNEL PARAMETERS

Parámetro     Descripción     Valor
shmsys:shminfo_shmmax    Cantidad total de memoria compartida. (1/4 de la memoria fisica por default)
Max-shm-memory    4GB
shmsys:shminfo_shmmni    Max-shm-ids    100
semsys:seminfo_semmni    Max-sem-ids    100
semsys:seminfo_semmsl    Max-sem-nsems    256

Los valores mostrados en la columna valor, fueron obtenidos del documento "Best Practices for Running Oracle Databases in Solaris Containers"


CONFIGURE KERNEL PARAMETERS  (WORKSHOP INSTALATION  g5_mx zone)
WAY 1:

A container was created

User: orag5
Group: dba

User and group were created

# projadd -c "Instancia G5" user.orag5      (se crea el proyecto)
# projmod -sK "project.max-shm-memory=(priv,4g,deny)" user.orag5
# projmod -sK "project.max-shm-ids=(priv,128,deny)" user.orag5
# projmod -sK "project.max-sem-ids=(priv,128,deny)" user.orag5
# projmod -sK "process.max-sem-nsems=(priv,256,deny)" user.orag5

/etc/project    (projmod command did modify this file)
Add the following entries to file /etc/user_attr to change the
default projects for your users:
"username"::::project="project"
"username"::::project="project"

"username" is the name of the user
"project" is the name of the project


# su - orag5
$ prctl -i process $$ | more      (display all project parameters)

WAY 2  (RECOMMENDED)

A container was created

User: orag5
Group: dba

Script to create a project:

#!/sbin/sh
projadd -p 200 -c "proyecto guimx2" -U orag5\
        -K "project.max-sem-ids=(priv,1024,deny)" \
        -K "process.max-sem-nsems=(priv,300,deny)" \
        -K "project.max-shm-ids=(priv,230,deny)" \
        -K "project.max-shm-memory=(priv,16777216,deny)" guimx2


Add the following entries to file /etc/user_attr to change the default projects for your users:
"username"::::project="project" "username"::::project="project" "username" is the name of the user "project" is the name of the project g5-mx / # cat /etc/user_attr
# # Copyright (c) 2003 by Sun Microsystems, Inc. All rights reserved. # # /etc/user_attr
# # user attributes. see user_attr(4) # #pragma ident   "@(#)user_attr 1.1      03/07/09 SMI" # adm::::profiles=Log Management lp::::profiles=Printer Management root::::auths=solaris.*,solaris.grant;profiles=Web Console Management,All;lock_after_retries=no orag5::::project=oracle
# prctl -i process $$ | more      (displays all parameters)
# projects -l                (displays all projects)


Para la memoria compartida:

project.max-shm-memory=(privileged,4294967296,deny) = 4G de memoria compartida
project.max-shm-memory=(privileged,1073741842,deny) = 1G de memoria compartida
project.max-shm-memory=(privileged,8589934592,deny) = 8G de memoria compartida
project.max-shm-memory=(privileged,10737418240,deny) = 10G de memoria compartida
project.max-shm-memory=(privileged,12884902104,deny)  = 12G de memoria compartida

TO LIMIT MEMORY FOR PROJECTS
Set the rcap.max-rss attribute in /etc/projects file:

# projmod -s -K rcap.max-rss=10GB oracle
HOW TO ENABLE RESOURCE CAPPING
Turn on resource capping.
# svcadm enable rcap
To started each time the system is booted.
# rcapadm -E
ENABLE CAPPED MEMORY, SWAP TEMPORARY
root@ # rcapadm -z myzone -m 12gb
root@ # prctl -n zone.max-swap -v 12gb -t privileged -r -e deny -i zone myzone
root@ # prctl -n zone.max-locked-memory -v 12gb -r -i zone myzone
ENABLE CAPPED MEMORY, SWAP PERMANENT
zonecfg:my-zone> add capped-memory
zonecfg:zone:capped-memory> set physical=10G
zonecfg:zone:capped-memory> set swap=20G
zonecfg:zone:capped-memory> set locked=10G
zonecfg:zone:capped-memory> end
--------------------------------------------------------------------
TIP: Cambiar el zone path de una zona Solaris 10
--------------------------------------------------------------------

Mover zonepath de una Zona a nueva ruta "zonepath".

1) Dar de bajar la Zona.

# zoneadm -z 'my-zone' halt

2) Detach zone para poder realizar el cambio del zonepath.
# zoneadm -z 'my-zone' detach
# zoneadm list -cv

3) Realizar la configuración y cambio al nuevo zonepath.
# cd 'zonepath'
# mv 'zonepath' 'new_zonepath'
# zonecfg -z 'my-zone'
zonecfg:my-zone> set zonepath='new_zonepath'
zonecfg:my-zone> verify
zonecfg:my-zone> commit
zonecfg:my-zone> exit


4) Finalmente attachar zone con opcion -u y boot para validar los cambios.
# zoneadm list -cv
# zoneadm -z 'my-zone' attach -u
# zoneadm -z 'my-zone' boot
# df -h | grep my-zone
# zlogin 'my-zone'

Como conocimiento adicional leer:

Security Capabilities of Solaris Zones

Regresar


Random TIPS

CONVERT OpenSSH KEY TO SSH2 KEY

Run the OpenSSH version of ssh-keygen on your OpenSSH public key to convert it into the format needed by SSH2 on the remote machine. This must be done on the system running OpenSSH.
#ssh-keygen -e -f ~/.ssh/id_dsa.pub > ~/.ssh/id_dsa_ssh2.pub

CONVERT SSH2 KEY TO OpenSSH KEY

Run the OpenSSH version of ssh-keygen on your ssh2 public key to convert it into the format needed by OpenSSH.
This needs to be done on the system running OpenSSH.
#ssh-keygen -i -f ~/.ssh/id_dsa_1024_a.pub > ~/.ssh/id_dsa_1024_a_openssh.pub

free counters