SmartOS



SmartOS es el sistema operativo desarrollado por Joyent a partir del proyecto Illumos, por tanto, SmartOS posee las principales características que hacen de Solaris uno de los sistemas operativos más versátiles, como son las Zonas, ZFS o DTrace, además Joyent ha conseguido portar KVM a SmartOS, con lo que ha dotado al SO de la capacidad para virtualizar utilizando características propias de los procesadores. Con KVM podemos ejecutar máquinas virtuales de los sistemas operativos Linux, Windows y *BSD, entre otros.

Las principales características de SmartOS son:

  • KVM
  • Zonas
  • Resource Controls
  • DTrace
  • ZFS
  • SMF
  • VNIC (Virtualización de red)

Antes de comenzar debemos tener claros una serie de conceptos sobre SmartOS:

  • No se instala. SmartOS utiliza imágenes de los distintos SO, por lo que no requiere de la instalación tradicional a la que estamos acostumbrados. Solo necesita un espacio de almacenamiento, para salvaguardar ciertas configuraciones.
  • No es un SO de propósito general. SmartOS ha sido diseñado como un SO para la nube, con lo cual, el propósito es gestionar un conjunto de máquinas virtuales.
  • SmartOS puede correr como anfitrión o como SO huésped.
  • No puedes instalar sofware o crear usuarios en el SO anfitrión.
  • Se puede arrancar desde una llave USB, un live CD o un servidor PXE.

Configuración

La primera vez que arranquemos la imagen de SmartOS (recuerda que puedes arrancar desde una llave USB, un Live CD o un servidor PXE) nos preguntará si queremos continuar con la configuración, SmartOS se configura no se instala, este es un concepto al que tendrás que acostumbrarte cuando trabajes con SmartOS.

Respondemos “Y” para comenzar con la configuración. El siguiente paso es configurar la dirección IP o el servidor DHCP que empleará SmartOS, para nuestro ejemplo vamos a poner una dirección IP.

También tendremos que facilitar la IP del gateway, los servidores DNS, etc.

El siguiente paso es seleccionar los discos para el pool de almacenamiento de todos los datos persistentes que vayamos a utilizar. En nuestro ejemplo seleccionaremos el disco c1t5d0.

La configuración nos pedirá la password del usuario root.

Por último nos muestra los datos de configuración que hemos introducido y nos preguntará si deseamos editar el fichero de configuración, vamos a responder que no queremos editar el fichero, ya que lo veremos más adelante.

Debemos contestar al aviso de que los datos del disco c1t5d0 será eliminados.

Y ya hemos configurado SmartOS para que trabaje como anfitrión, una vez que reiniciemos el sistema presentará una pantalla parecida a esta.

El primer paso, una vez que hemos arrancado es configurar el teclado, este paso lo podríasmos haber realizado durante la configuración anterior, pero vamos a hacerlo ahora para introducir el fichero de configuración maestro de SmartOS.

Debemos añadir como teclado por defecto “spain” en el fichero de configuración /usbkey/config, para que el teclado esté configurado de manera permanente.

[root@00-0c-29-14-cf-5e ~]# ls
[root@00-0c-29-14-cf-5e ~]# ls /usbkey/
config  shadow  ssh
[root@00-0c-29-14-cf-5e ~]# echo "default_keymap=spain" >> /usbkey/config
[root@00-0c-29-14-cf-5e ~]#

Ahora cargaremos el teclado con el comando loadkeys

[root@00-0c-29-14-cf-5e ~]# loadkeys spain

Configuración permanente

Cuando SmartOS arranca, lanza un servicio mediante SMF para la configuración durante el arranque, que dependiendo de si se ha configurado el sistemas inicialmente

[root@00-0c-29-14-cf-5e ~]# svcs -l /system/smartdc/config
fmri         svc:/system/smartdc/config:default
name         SmartDC live-image config management service
enabled      true
state        online
next_state   none
state_time   January 29, 2013 05:39:10 PM UTC
alt_logfile  /etc/svc/volatile/system-smartdc-config:default.log
restarter    svc:/system/svc/restarter:default
dependency   require_all/none svc:/system/filesystem/smartdc (online)
[root@00-0c-29-14-cf-5e ~]#

Este servicio utiliza como fichero de configuración maestro el fichero:

[root@00-0c-29-14-cf-5e ~]# cat /usbkey/config
#
# This file was auto-generated and must be source-able by bash.
#

coal=true
# admin_nic is the nic admin_ip will be connected to for headnode zones.
admin_nic=0:c:29:14:cf:5e
admin_ip=192.168.126.100
admin_netmask=255.255.255.0
admin_network=...
admin_gateway=192.168.126.100

headnode_default_gateway=192.168.126.2

dns_resolvers=8.8.8.8,8.8.4.4
dns_domain=prueba

ntp_hosts=pool.ntp.org
compute_node_ntp_hosts=192.168.126.100

default_keymap=spain

Vamos a ver cómo se ha configurado nuestro nuevo SmartOS. Comenzamos con los filesystem y los puntos de montaje. La salida del comando df nos mostrará algo parecido a:

[root@00-0c-29-14-cf-5e ~]# df -h
Filesystem             size   used  avail capacity  Mounted on
/devices/ramdisk:a     264M   219M    45M    83%    /
/devices                 0K     0K     0K     0%    /devices
/dev                     0K     0K     0K     0%    /dev
ctfs                     0K     0K     0K     0%    /system/contract
proc                     0K     0K     0K     0%    /proc
mnttab                   0K     0K     0K     0%    /etc/mnttab
swap                   1.6G   872K   1.6G     1%    /etc/svc/volatile
objfs                    0K     0K     0K     0%    /system/object
sharefs                  0K     0K     0K     0%    /etc/dfs/sharetab
/devices/pseudo/lofi@0:1
                       376M   354M    22M    95%    /usr
/usr/lib/libc/libc_hwcap1.so.1
                       376M   354M    22M    95%    /lib/libc.so.1
fd                       0K     0K     0K     0%    /dev/fd
zones                   20G   649K    18G     1%    /zones
zones/cores             10G    31K    10G     1%    /zones/global/cores
zones/var               20G   2.8M    18G     1%    /var
zones/config            20G    38K    18G     1%    /etc/zones
zones/opt               20G    31K    18G     1%    /opt
zones/usbkey            20G   128K    18G     1%    /usbkey
/usbkey/shadow          18G   128K    18G     1%    /etc/shadow
/usbkey/ssh             18G   128K    18G     1%    /etc/ssh
swap                   1.6G     8K   1.6G     1%    /tmp
swap                   1.6G    24K   1.6G     1%    /var/run
[root@00-0c-29-14-cf-5e ~]#

Lo primero que nos llama la atención es que la mayor parte de los directorios, incluido el directorio raiz está sobre un disco RAM

/devices/ramdisk:a     264M   219M    45M    83%    /

El directorio /usr está sobre un dispositivo LOFI

/devices/pseudo/lofi@0:1        376M   354M    22M    95%    /usr

Con el comando lofiadm podemos identificar cómo se ha configurado el dispositivo LOFI.

[root@00-0c-29-14-cf-5e ~]# lofiadm
Block Device             File                           Options
/dev/lofi/1              /usr.lgz                       Compressed(gzip)
[root@00-0c-29-14-cf-5e ~]#
[root@00-0c-29-14-cf-5e ~]# ls -l /usr.lgz
-rw-------   1 root     root     112586240 Nov 15 21:35 /usr.lgz
[root@00-0c-29-14-cf-5e ~]#

También vemos en la salida del comando df que existen varios FS que están montados sobre ZFS

[root@00-0c-29-14-cf-5e ~]# zfs list
NAME           USED  AVAIL  REFER  MOUNTPOINT
zones         2.06G  17.5G   652K  /zones
zones/config    38K  17.5G    38K  legacy
zones/cores     31K  10.0G    31K  /zones/global/cores
zones/dump    1.03G  17.5G  1.03G  -
zones/opt       31K  17.5G    31K  legacy
zones/swap    1.03G  18.5G    16K  -
zones/usbkey   128K  17.5G   128K  legacy
zones/var     2.86M  17.5G  2.86M  legacy
[root@00-0c-29-14-cf-5e ~]#

Con el comando zpool status podemos ver los pools ZFS que están configurados en el sistema.

[root@00-0c-29-14-cf-5e ~]# zpool status
  pool: zones
 state: ONLINE
  scan: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        zones       ONLINE       0     0     0
          c1t5d0    ONLINE       0     0     0

errors: No known data errors
[root@00-0c-29-14-cf-5e ~]#

En los próximos posts veremos cómo podemos administrar máquinas virtuales, bajar las imágenes y la forma en la que SmartOS utiliza ZFS.