jueves, 21 de enero de 2010

Creación de zonas con Solaris Containers

Introducción a Solaris Containers
Solaris containers es la implementación de un sistema operativo virtualizado sobre Solaris 10, proporciona la gestión de recursos del sistema y la virtualización de sistemas operativos a través de las zonas.
La zona global es la primaria, desde la que instalaremos otras zonas (no globales), así el administrador puede gestionar de una forma mas eficaz los recursos del servidor, ahorrando costes, espacio, tiempo ...
Las zonas actúan como un sistema operativo independiente, les podemos asignar una interfaz de red virtual, un sistema de archivos independiente, memoria, cpu ... Todo esto es personalizable y altamente recomendado ya que podemos optimizar el rendimiento del sistema según creemos conveniente.
Pooladm

Pooladm es un gestor de recursos de cpu, con esta herramienta podemos crear “pools” o procesadores virtuales que contienen un número deseado de cpu's, de este modo podemos asignarle a una zona muy importante unos recursos grandes y a otra zona menos importante unos recursos mas pequeños, también podemos igualar cargas ... etc.Pooladm por defecto está desactivado , si no se activa las zonas obtendrán los recursos de la zona global, éste no discriminará y tratará a todas las zonas por igual.
La configuración consta de un pool y un pset asociados entre ellos.
Pset es donde almacena las cpus mínimas y máximas que va a tener el pool, la carga que tiene, el tamaño en cpus...
Pool contiene parámetros como el id del pool en el sistema, si esta activado o desactivado, la importancia del pool o prioridad y además tiene asociado un pset que trabaja para el pool.

Primero habilitamos pooladm

bash-3.00# pooladm -e
bash-3.00# pooladm -s
Creamos un pset (este tendrá como mínimo una cpu y como máximo 4)
bash-3.00# poolcfg -c 'create pset pset1 (uint pset.min=1; uint pset.max=4)'

Creamos un pool
bash-3.00# poolcfg -c 'create pool pool1'

Asociamos el pool con el pset
bash-3.00# poolcfg -c 'associate pool pool1 (pset pset1)'
Zonas

Crearemos una zona de prueba llamada "test-zone" y le pondremos una configuración básica.

Primero creamos el directorio físico donde se almacenará en la zona global, y le asignamos permisos 700.
bash-3.00# mkdir -p /opt/zones/test-zone
bash-3.00# chmod 700 /opt/zones/test-zone

Empezamos con la configuración de la zona.
bash-3.00# zonecfg -z test-zone
test: No se ha configurado esa zona
Use 'create' para comenzar a configurar una zona nueva.

zonecfg:test> create

Definimos donde se creará el sistema de archivos de la zona global.
zonecfg:test> set zonepath=/opt/zones/test-zone

La configuramos para que sea autoarrancable.
zonecfg:test> set autoboot=true

Configuramos la red. En mi caso me interesa asignar la interfaz bge3 de la zona global.
zonecfg:test> add net
zonecfg:test:net> set address=192.168.1.35/24
zonecfg:test:net> set physical=bge3
zonecfg:test:net> end


Configuramos el pool que creamos anteriormente.
zonecfg:test:net> set pool=pool1


Podemos añadir discos.
zonecfg:test> add device
zonecfg:test:device> set match=/dev/dsk/c0t0d3s1
zonecfg:test:device> end

zonecfg:test> add device
zonecfg:test:device> set match=/dev/rdsk/c0t0d3s1
zonecfg:test:device> end

Verificamos y guardamos los cambios.
zonecfg:test:net> verify
zonecfg:test:net> commit
zonecfg:test:net> exit
Instalamos la zona.
bash-3.00# zoneadm -z test-zone install

Arrancamos la zona.

bash-3.00# zoneadm -z test-zone boot
La primera vez que accedemos a la zona lo haremos en modo consola. Nos preguntará por configuraciones básicas como el nombre del host.
bash-3.00# zlogin -C test-zone

Ya tenemos nuestra zona funcionando! ahora podemos acceder a ella desde la zona global con el comando zlogin o directamente con la ip que le hemos asignado.

Por último listo algunos comandos básicos para la administración de las zonas.
Listar todas las zonas
bash-3.00# zoneadm list -cv
Arrancar una zona
bash-3.00# zoneadm -z test-zone boot
Parar una zonabash-3.00# zoneadm -z test-zone halt
Reiniciar una zonabash-3.00# zoneadm -z test-zone reboot
Loguearse en una zonabash-3.00# zlogin test-zone

miércoles, 20 de enero de 2010

Instalación Jumpstart Server en Solaris 10

Supongamos que tenemos dos equipos, el primero es el que hace de servidor de instalaciones, y el segundo será el cliente, el que solicita la instalación remota. A partir de ahora estos serán los datos para estos dos equipos:

Servidor Jumpstart
Hostname: jumpstartserver
Ip: 192.168.5.1

Cliente
Hostname: chistau
Ip: 192.168.5.2

Antes de comenzar con la instalación hay que asegurarse que la máquina servidor y el cliente están en el mismo segmento de red y que son accesibles.

Los pasos a seguir son los siguientes:

1.- Configuración Ip del servidor jumpstart.

bash-3.00# ifconfig bge0 192.168.5.1 netmask 255.255.255.0 up

2.- Añadimos las ips del servidor y de los clientes remotos que queramos en el /etc/hosts

bash-3.00# vi /etc/hosts
#
# Internet host table
#
::1 localhost
127.0.0.1 localhost
192.168.5.1 jumpstartserver
192.168.5.2 chistau

3.- Montamos el DVD de Instalación de Solaris en el servidor Jumpstart.

4.- Creamos el directorio de instalación del jumpstart server, el que nosotros queramos.
bash-3.00# mkdir -p /opt/jumpstart

5.- Desde el DVD lanzar la instalación del servidor Jumpstart.
bash-3.00# cd /cdrom/sol_10_1009_sparc/Solaris_10/Tools/
bash-3.00# ./setup_install_server /opt/jumpstart

6.- Compartimos el directorio del jumpstart.
bash-3.00# vi /etc/dfs/dfstab
share -F nfs -o ro,anon=0 /opt/jumpstart
7.- Copiamos los archivos de configuración y reglas al directorio jumpstart.
bash-3.00# cp -R /cdrom/sol_10_1009_sparc/Solaris_10/Misc/jumpstart_sample/* /opt/jumpstart/.

8.- Creamos un profile.
bash-3.00# vi /opt/jumpstart/profile
install_type initial_install
system_type standalone
partitioning default
cluster SUNWCprog
filesys any 512 swap

9.- Creamos un archivo rules.
bash-3.00# vi /opt/jumpstart/rules
any - - profile -

10.- Verificamos las reglas, si son correctas se creará un archivo rules.ok
bash-3.00# /opt/jumpstart/check

11.- Añadimos la información del cliente al servidor jumpstart.
bash-3.00# cd /opt/jumpstart/Solaris_10/Tools
bash-3.00# ./add_instant_client -d -e 0:3:ba:19:13:a7 -s jumpstartserver:/opt/jumpstart -c jumpstartserver:/opt/jumpstart sun4u

-e = La mac de la tarjeta de red del cliente
-s = El directorio de arranque de Instalaciones del servidor
-c = El directorio del jumpstart del servidor

12.- Editamos el archivo /etc/ethers e insertamos la mac del cliente.
bash-3.00# vi /etc/ethers
0:3:ba:19:13:a7 chistau

13.- Desde el cliente mandamos un "send break" y desde la prompt lanzamos el siguiente comando.
ok boot net - install
Boot device: /pci@1f,0/ethernet@c File and args: - install
Timeout waiting for ARP/RARP packet
3a000 |

14.- A partir de aquí comenzará la instalación ...