Proyecto HAST alcanza 1er nivel de desarrollo

high-availability

Hace un tiempo atrás la Fundación FreeBSD decidió apoyar en los fondos de un proyecto denominado HAST (High Available Storage Project). Este proyecto, liderado por Pawel Jakub Dawidek, tiene por objetivo implementar un programa de replicación de datos que permita a los usuarios usar el sistema operativo FreeBSD para configuraciones de alta disponibilidad, en donde los datos tengan que estar compartidos en nodos de un cluster; este proyecto está parcialmente apoyado económicamente por OMCnet Internet Service y TransIP BV.

El programa permitirá la replicación sincrónica, a nivel de bloques, de cualquier medio de almacenamiento (proveedores GEOM, usando la nomenclatura de FreeBSD) y la recuperación rápida de pérdida sobre la red TCP/IP. HAST proveerá el almacenamiento usando la infraestructura GEOM, lo cual significa que será independiente del sistema de archivos y la aplicación que lo use, y podrá ser combinado con cualquier clase GEOM existente. En caso de fallo de un nodo maestro, el cluster será capaz de cambiar a un nodo esclavo, verificar y montar el sistema de archivos UFS o importar una ‘pool’ ZFS y continuar trabajando sin perder ni un simple bit de los datos.

En el día 13 de diciembre de 2009 se hace público el anuncio del completamiento del 1er nivel de desarrollo de este proyecto. El sumario del trabajo que ya se ha hecho:

  • Implementación del demonio ‘hastd’.
  • Implementación de la utilidad ‘hastctl’ para administrar los demonios ‘hastd’.
  • La clase GEOM_GATE fue extendida para que el llamante pueda especificar el nombre del proveedor GEOM. Antes, solamente estaban soportados los nombres ‘/dev/ggateX’. HAST usará ‘/dev/hast’.
  • Implementación del protocolo de comunicación. Existe una capa de abstracción encima y debajo existen tres protocolos implementados, de ellos están actualmente:
  • proto_tcp4 – Es usado para la comunicación entre los nodos primario y secundario.
  • proto_uds – (UDS – UNIX Domain Socket) Es usado para la comunicación entre ‘hastctl’ y ‘hastd’.
  • proto_socketpair – Es usado para la comunicación entre el demonio principal ‘hastd’ y los procesos de trabajo clonados desde este.
  • Implementación de la API ‘nv’ (nombre-valor) – Permite la fácil creación de paquetes conteniendo los pares ‘nombre-valor’ y es usado para la entera comunicación a través de los protocolos anteriores. Es, además, responsable de administrar el orden correcto de los bytes.
  • Implementación de la API ‘ebuf’ (búfer extensible) – Provee una vía de extender el búfer dado agregando datos al final, pero además al frente sin la reasignación y copia de los datos muy a menudo (o nunca).
  • Implementación de la API de registro ‘pjdlog’ – La API decide si los mensajes deberían ser registrados en los estándar salida/error (stdout/stderr) o hacia ‘syslog’. Este provee, además, algunos atajos para el registramiento de un mensaje, salida, etc. Soporta la noción del nivel de depuración y puede omitir mensajes destinados a un nivel de depuración más alto que el solicitado.
  • Implementación del analizador de archivos de configuración en ‘lex/yacc’ – El archivo de configuración está diseñado en una vía que permite mantenerlo idéntico en ambos nodos.
  • La comprobación de suma y compresión de los datos no es una de las metas del proyecto, pero los talonarios están ahí, asi que estos pueden ser agregados fácilmente.
  • Se tomaron bastante cuidados para ser capaces de manipular más nodos en el futuro. Esto no está implementado y no es una meta del proyecto, pero se quiere tener listo para mejoras futuras.

«La alta disponibilidad es el requerimiento número uno para cualquier uso serio de cualquier sistema operativo» dijo Pawel Jakub Dawidek, desarrollador de FreeBSD. «Los almacenamientos altamente disponibles es uno de los componentes claves en tales escenarios, Yo creo fuertemente que hay muchos usuarios de FreeBSD que han estado esperando por largo tiempo esta funcionalidad. Haré lo mejor que pueda para entregar un programa que cumpla con la calidad de FreeBSD y que satisfaga las necesidades de nuestros usuarios».

El proyecto estará completo para Febrero de 2010.

¿Te resultó interesante? Compártelo ...



GUTL

Publicado por GUTL

Forma parte de GUTL desde el 6 diciembre, 2011.