cde_solaris10.jpgSMF son las siglas de Solaris Service Management Facility, el nuevo sistema de arranque que incorpora Solaris 10 y que viene a sustituir a los run level de System V. Esta nueva infraestructura de servicios de Solaris permnite arrancar los servicios de forma parela en función de las dependencias que requiera la aplicación. Una vez arrancado el servicio, el administrador podrá deshabilitar, observar, parar o arrancar servicios de una forma sencilla y cómoda. Una de las características principales de este servicio son los archivos manifest en formato XML que contienen las instrucciones de los nuevos servicios a gestionar.

La gran ventaja de SMF es que ofrece mecanismos por los cuales se establecen unas relaciones de dependencia entre servicios, de forma que un servicio no arrancará hasta que sus dependencias hayan arrancado correctamente. Para cada proceso de arranque de un servicio, se guarda un log, que nos informará de los pasos que ha seguido el servicio para arrancar y que nos ayudará a determinar la causa de error, en caso de que un servicio no pueda arrancar.

Podríamos decir que los servicios actúan como objetos, que pueden ser gestionados de forma sencilla por un grupo de comandos de administración. Que nos permitirán parar, arrancar, y ver el estado del servicio y sus dependencias.

Un servicio SMF está compuesto por un conjunto de componentes que interactuan entre sí:

  • SMF manifest: es un fichero XML donde se definen las características del servicio, y define los “methods” que se han de aplicar para arrancar, parar o reiniciar el servicio. Para interactuar con los ficheros XML disponemos de un comando que nos permitirá validar su contenido (svccfg validate file.xml), importar su contenido (svccfg import file.xml), o exportar a un fichero XML un determinado servicio SMF (svccfg export servicename).
  • Methods: los methods son los pasos a seguir para parar, arrancar o reiniciar un servicio. Puede estar compuesto por un script, un comando, un fichero ejecutable o una serie de comandos. Normalmente se almacenan en /lib/svc/method.
  • Service Log Files: es un servicio que escribe en un fichero de log, todo lo sucedido durante los procesos de arranque, parada o reinicio de un servicio. Normalmente se escriben en /var/svc/log.

Los servicios pueden tener varios estados, en los que podemos ver si un servicio se encuentra parado, corriendo, deshabilitado, o degradado. Estos son los estados que pueden tener los servicios SMF:

  • online: el servicio se está ejecutando correctamente.
  • offline: el servicio está diponible pero en estos momentos no se está ejecutando.
  • disabled: el servicio no está disponible y no se está ejecutando.
  • maintenance: el servicio tiene un error y no puede ser ejecutado.
  • disabled: el servicio está deshabilitado, no se está ejecutando.
  • degraded: el servicio está funcionando pero con errores, puede que no funcione correctamente.
  • legacy_run: por compatibilidad con los antiguos servicios de Solaris se mantiene este estado, solo nos indica el estado en el que se encuentra el servicio.

El arranque en Solaris 10 no dista mucho del arranque que existía en anteriores versiones, pues cuando arranca el proceso init sigue siendo el primer proceso a ejecutarse, leyendo del fichero inittab. Pero dentro de este fichero existe una línea en la que se le indica la carga del proceso svc.stard, que inicia el proceso svc.configd , este proceso va a leer del repositorio SMF los datos de los servicios que debe arrancar.

smf_service.jpg

Toda la información aquí reflejada ha sido extraida del proyecto Opensolaris.