Analizando el almacenamiento definido por software con GlusterFS en el ODROID-HC1: Parte 1 - Configuración del servidor

ODROID Magazine GlusterFS

Según Whatis.com "El almacenamiento definido por software (SDS) es un programa informático que gestiona la funcionalidad y los recursos del almacenamiento de datos sin tener que depender del hardware de almacenamiento físico subyacente"

Según Red Hat "Gluster File System (GlusterFS) es una plataforma SDS diseñada para gestionar los requisitos del almacenamiento tradicional de archivos: tareas de alta capacidad como backup y almacenamiento de archivo, así como tareas de alto rendimiento de análisis y virtualización".

Aunque GlusterFS es claramente una tecnología destinada a empresas, ello no significa que no se pueda usar en casa. Al contrario, considero que es más flexible y escalable que los sistemas de almacenamiento conectados en red (NAS) comerciales. Los servidores NAS para usuarios domésticos normalmente vienen con 2 o 4 bahías. Cuando llega el momento de expandir tu sistema, no son tan flexibles. Necesitas cambiar a un sistema más grande con más bahías, o tienes que reemplazar todos tus discos por otros de mayor capacidad. GlusterFS se escala horizontalmente, lo que significa que puede añadir más servidores para expandir tu capacidad de almacenamiento. Para los usuarios domésticos, añadir más servidores no tiene sentido, ya que los servidores son bastante caros. Esto es cierto hasta que vino a la mente el ODROID-HC1, que se vende por solo 49$. Cuatro ODROID-HC1 se pueden equiparar a un único NAS de 4 bahías con un coste aproximado del 50%. Además, el procesador ODROID-XU4, que cuenta con cuatro núcleos A15 y cuatro núcleos A7 en cada HC1, ya es más potente que el NAS medio dirigido al mercado doméstico, que generalmente viene con un procesador A15 dual-core

En este artículo, voy a utilizar cuatro ODROID-HC1 para crear un volumen GlusterFS replicado, distribuido, altamente escalable y sumamente disponible, similar a una configuración RAID 1+0. No se preocupes si solo tienes dos HC1 a mano. Describiré cómo puedes crear un volumen GlusterFS replicado que sea equivalente a un RAID 1. Pero antes de eso, vamos a analizar un poco los diferentes tipos de volúmenes de GlusterFS que existen.

Tipos de volumenes GlusterFS

GlusterFS es un sistema de archivos distribuidos compatible con POSIX. Utiliza el Elastic Hash Algorithm para realizar hash de forma inteligente en ubicaciones basadas en rutas y nombres del archivo, en lugar de valerse de un servidor de metadatos como ocurre con algunos otros sistemas de archivos distribuidos. En consecuencia, este sistema permite evitar cuello de botella de rendimiento de metadatos y puede ejecutarse en hardware muy heterogéneo.

Un volumen viene a ser un conjunto de “ladrillos”. Un ladrillo es cualquier directorio en un sistema de archivos de disco subyacente. La mayoría de las operaciones de GlusterFS suceden en el volumen. GlusterFS admite diferentes tipos de volúmenes que están optimizados para escalar la capacidad de almacenamiento, mejorar el rendimiento o ambos. Es posible que desees consultar Gluster Docs en http://bit.ly/2zhI51S para obtener más información. En este artículo, analizare dos tipos en concreto, el volumen replicado y el volumen replicado distribuido que requieren dos y cuatro servidores (o HC1), respectivamente. En mi opinión, estas son las configuraciones más adecuadas para el uso doméstico.

El volumen replicado implica que los archivos siempre se escriben en los ladrillos de dos servidores. Esto es el equivalente al RAID 1. En un volumen replicado distribuido, los archivos se escriben en un servidor o en otro dentro de un conjunto fiable de nodos GlusterFS. Discutiremos estos conjuntos fiables más adelante. Los ladrillos de los dos servidores se replican en los otros dos servidores dentro del conjunto. Esto es similar al RAID 1 + 0, pero con una diferencia importante: RAID 1 + 0 usa striping, lo que significa que diferentes bloques de un archivo se escriben en diferentes servidores. En la distribución, un archivo está escrito por completo en un servidor u otro y los contenidos de los dos servidores se replican en otros dos servidores, tal y como describe el siguiente diagrama.

ODROID Magazine Figure 1 - Distributed Replicated
Figura 1 - Replicado distribuido

Utilizar un volumen replicado distribuido evita la pérdida de datos cuando falla uno servidor. También mejora el rendimiento cuando accedes simultáneamente a archivos que han sido distribuido en dos servidores independientes. En lugar de tener un servidor que sirve archivos, cuentas con dos proporcionado archivos. Ahora que ya hemos abordado la teoría, vamos a meternos de lleno en el desarrollo de estos volúmenes.

Montar un volumen GlusterFS replicado distribuido

La Figura 2 muestra una foto de mi configuración. A la izquierda están los cuatro ODROID-HC1 apilados y a la derecha, el clúster ODROID-MC1. Ambos descansan sobre un switch Gigabit de 16 puertos al cual están conectados.

ODROID Magazine Figure 2 - Lab Environment
Figura 2 - Entorno de laboratorio

Configurar los ODROID-HC1s

Necesitarás copiar la imagen del sistema operativo en tu tarjeta SD para iniciar tus HC1. Después, define una dirección IP estática y un nombre de host único para cada HC1. Puede que quieras recurrir a las instrucciones de cómo configurar el sistema operativo en cada nodo del clúster de mi artículo sobre el MC1 en http://bit.ly/2lrzVhb. Cambia los nombres de host a xu4-gluster0, xu-4-gluster1, xu-4-gluster2, y así sucesivamente.

Instalar y formatear el disco duro

Inserta los discos duros en los conectores SATA de tus HC1. Escribe "sudo -as" para acceder a los privilegios de root y crear una partición de Linux usando fdisk, luego crea un sistema de archivos ext4, tal y como se muestra en la Figura 3.

ODROID Magazine Figure 3 - fdisk
Figura 3 - fdisk

Crea un directorio llamado /gds/brick1, añade una entrada a /etc/fstab y monta el sistema de archivos. Puedes ver el resultado en la Figura 4.

ODROID Magazine Figure 4 - fstab
Figura 4 - fstab

Todo esto se hace con los siguientes comandos:

$ fdisk /dev/sda1
 $ mkfs.ext4 /dev/sda1
 $ mkdir -p /gfs/brick1
Añade la siguiente línea a tu /etc/fstab (sin las comillas): “/dev/sda1/gfs/brick1 ext4 defaults 0 1”. A continuación, escribe los siguientes comandos:
$ mount -a
 $ mount
Instalar y configurar el volumen y el servidor Gluster

  • Instalar el servidor GlusterFS
  • Crear un grupo fiable de nodos GlusterFS. Un grupo de almacenamiento es una red fiable de servidores de almacenamiento. Antes de que uno pueda configurar un volumen GlusterFS, se debe crear un conjunto fiable (de almacenamiento) consistente en servidores de almacenamiento que proporcionen ladrillos a un volumen.
  • Crear un directorio para el volumen
  • Crear un volumen replicado distribuido llamado gvolume0
  • Iniciar el volumen y mostrar su estado

Los comandos utilizados se resumen a continuación (se ejecutan como root):

  • Ejecuta en todos los servidores HC1 los siguientes comandos:
     $ apt-get update
    
     $ apt-get install glusterfs-server attr
  • Desde xu4-gluster0 (u otro servidor GlusterFS), introduce los comandos para crear un grupo fiable de nodos GlusterFS que está compuesto por nuestros 4 HC1:
     $ gluster peer probe xu4-gluster1
    
     $ gluster peer probe xu4-gluster2
    
     $ gluster peer probe xu4-gluster3
  • Crea el directorio: /gfs/brick1/gvolume0 en todos los servidores. A continuación, introduce los siguientes comandos gluster:
     $ gluster volume create gvolume0 replica 2 transport tcp
    
     $ xu4-gluster0:/gfs/brick1/gvolume0 xu4-gluster1:/gfs/brick1/gvolume0
    
     $ xu4-gluster2:/gfs/brick1/gvolume0 xu4-gluster3:/gfs/brick1/gvolume0
    
     $ gluster volume start gvolume0
    
     $ gluster volume info gvolume0

En un volumen replicado distribuido, los archivos se distribuyen a través de conjuntos de ladrillos replicados. El número de ladrillos debe ser un múltiplo de la cantidad de réplicas, que en nuestro caso es dos. El orden en que se especifican los ladrillos es importante. En el comando "gluster volume create", los ladrillos adyacentes se convierten en réplicas entre sí. Este tipo de volumen proporciona alta disponibilidad a través de la réplica y el escalado a través de la distribución. En nuestro comando, usamos cuatro ladrillos y replicamos dos, lo cual hace que los dos primeros ladrillos se conviertan en réplicas de los otros. Este volumen suele denominarse 2 x 2. La Figura 5 muestra el resultado de algunos de los comandos.

ODROID Magazine Figure 5 - Create Volume
Figura 5 - Crear el volumen

Para aquellos que solo tengan dos HC1 y quieran crear un volumen replicado, simplemente tienen que usar el comando "gluster peer probe" en el otro servidor y reemplazar el comando "gluster volume create" por el siguiente comando:

$ gluster volume create gvolume0 replica 2 transport tcp xu4-gluster0:/gfs/brick1/gvolume0 $ xu4-gluster1:/gfs/brick1/gvolume0

Probando el volumen usando Gluster Client

En otra máquina (en mi caso usé uno de los servidores del clúster ODROID-MC1), instalé el cliente GlusterFS como root y monté el volumen:

$ apt-get update
 $ apt-get install gluserfs-client attr
 $ mkdir /mnt/gfs
 $ mount -t glusterfs -oacl xu4-gluster0:/gvolume0 /mnt/gfs
Ten en cuenta que, si deseas que el montaje sea permanente, debes añadir una entrada en el archivo /etc/fstab.

Una simple prueba

Esta es una simple prueba que muestra la distribución de archivos en un volumen GlusterFS replicado distribuido.

Crea 100 archivos usando el comando:

$ cd /mnt/gfs
 $ mkdir testdir
 $ cd testdir
 $ for i in `seq 1 100`
 $ do
 $ echo message$i > file$i
 $ done
 $ ls
El resultado de estos comandos se muestra en la Figura 6.

ODROID Magazine Figure 6 - Client Files
Figura 6 - Archivos del clientes

Inicie sesión en xu4-gluster0 e introduce los siguientes comandos:

$ cd /gfs/brick1/gvolume0/testdir
 $ ls
 $ ls | wc -l
Observarás en la Figura 7 que 46 de los 100 archivos están guardados en este servidor, dado que estamos utilizando un volumen replicado distribuido.

ODROID Magazine Figure 7 - Gluster0 Files
Figura 7 - Archivos GlusterO

Inicia sesión en xu4-gluster1 e introduce los mismos comandos:

$ cd /gfs/brick1/gvolume0/testdir
 $ ls
 $ ls | wc -l
Verás en la captura de pantalla que hay 54 archivos en este servidor. El total en ambos servidores suma los 100 archivos que creamos anteriormente. En nuestro volumen replicado distribuido, los 100 archivos se distribuyen entre los dos servidores, aunque no exactamente en una proporción de 50/50. Encontrarás el mismo resultado si inicias sesión en los otros dos servidores (xu4-gluster2 y xu4-gluster3). Para aquellos que crearon un volumen replicado usando dos ODROID-HC1, verán los 100 archivos en ambos servidores ya que el suyo es un volumen replicado y no un volumen distribuido.

¿Qué será lo proximo?

He descrito cómo montar volúmenes GlusterFS replicados y distribuidos replicados usando dos y cuatros ODROID-HC1 respectivamente. También he mostrado cómo acceder al volumen GlusterFS usando un cliente GlusterFS. En la Parte 2 de este artículo, describiré cómo instalar y utilizar otros clientes, incluidos NFS y Samba (para Windows), para acceder al volumen GlusterFS y comparar el rendimiento de estos clientes.

Be the first to comment

Leave a Reply