Introducción a GlusterFS (sistema de archivos) e instalación en RHEL/CentOS y Fedora


Vivimos en un mundo donde los datos crecen de manera impredecible y es nuestra necesidad almacenar estos datos, ya sea estructurados o no, de manera eficiente. Los sistemas informáticos distribuidos ofrecen una amplia gama de ventajas sobre los sistemas informáticos centralizados. Aquí los datos se almacenan de forma distribuida con varios nodos como servidores.

El concepto de servidor de metadatos ya no es necesario en un sistema de archivos distribuido. En sistemas de archivos distribuidos, ofrece un punto de vista común de todos los archivos separados entre diferentes servidores. Se accede a los archivos/directorios de estos servidores de almacenamiento de forma normal.

Por ejemplo, los permisos para archivos/directorios se pueden configurar como en el modelo de permisos del sistema habitual, es decir, el propietario, el grupo y otros. El acceso al sistema de archivos depende básicamente de cómo está diseñado el protocolo en particular para trabajar en el mismo.

¿Qué es GlusterFS?

GlusterFS es un sistema de archivos distribuido definido para ser utilizado en el espacio del usuario, es decir, el sistema de archivos en el espacio del usuario (FUSE). Es un sistema de archivos basado en software que cuenta con su propia característica de flexibilidad.

Mire la siguiente figura que representa esquemáticamente la posición de GlusterFS en un modelo jerárquico. Por defecto, el protocolo TCP será utilizado por GlusterFS.

  1. Innovación: elimina los metadatos y puede mejorar drásticamente el rendimiento, lo que nos ayudará a unificar datos y objetos.
  2. Elasticidad: adaptada al crecimiento y la reducción del tamaño de los datos.
  3. Escalar linealmente: tiene disponibilidad de petabytes y más.
  4. Simplicidad: es fácil de administrar e independiente del kernel mientras se ejecuta en el espacio del usuario.

  1. Se puede vender: la ausencia de un servidor de metadatos proporciona un sistema de archivos más rápido.
  2. Asequible: se implementa en hardware básico.
  3. Flexible: como dije anteriormente, GlusterFS es un sistema de archivos solo de software. Aquí los datos se almacenan en sistemas de archivos nativos como ext4, xfs, etc.
  4. Código abierto: actualmente GlusterFS es mantenido por Red Hat Inc, una empresa de código abierto de mil millones de dólares, como parte de Red Hat Storage.

  1. Bloque: el bloque es básicamente cualquier directorio destinado a compartirse entre el grupo de almacenamiento de confianza.
  2. Trusted Storage Pool: es una colección de estos archivos/directorios compartidos, que se basan en el protocolo diseñado.
  3. Almacenamiento en bloque: son dispositivos a través de los cuales los datos se mueven a través de los sistemas en forma de bloques.
  4. Clúster: en Red Hat Storage, tanto el clúster como el grupo de almacenamiento confiable transmiten el mismo significado de colaboración de servidores de almacenamiento basados en un protocolo definido.
  5. Sistema de archivos distribuido: un sistema de archivos en el que los datos se distribuyen en diferentes nodos donde los usuarios pueden acceder al archivo sin conocer la ubicación real del archivo. El usuario no experimenta la sensación del acceso remoto.
  6. FUSE: es un módulo de kernel cargable que permite a los usuarios crear sistemas de archivos por encima del kernel sin involucrar ninguno de los códigos del kernel.
  7. glusterd - glusterd es el demonio de administración GlusterFS que es la columna vertebral del sistema de archivos que se ejecutará durante todo el tiempo siempre que los servidores estén en estado activo.
  8. POSIX - Interfaz de sistema operativo portátil (POSIX) es la familia de estándares definidos por IEEE como una solución a la compatibilidad entre variantes de Unix en forma de Interfaz programable de aplicación (API).
  9. RAID: la matriz redundante de discos independientes (RAID) es una tecnología que brinda una mayor confiabilidad de almacenamiento a través de la redundancia.
  10. Subvolumen: un bloque después de ser procesado por al menos un traductor.
  11. Traductor: un traductor es ese fragmento de código que realiza las acciones básicas iniciadas por el usuario desde el punto de montaje. Conecta uno o más subvolúmenes.
  12. Volumen: un volumen es una colección lógica de ladrillos. Todas las operaciones se basan en los diferentes tipos de volúmenes creados por el usuario.

También se permiten representaciones de diferentes tipos de volúmenes y combinaciones entre estos tipos de volúmenes básicos, como se muestra a continuación.

Representación de un volumen replicado distribuido.

Instalación de GlusterFS en RHEL/CentOS y Fedora

En este artículo, instalaremos y configuraremos GlusterFS por primera vez para una alta disponibilidad de almacenamiento. Para ello, estamos tomando dos servidores para crear volúmenes y replicar datos entre ellos.

  1. Instale CentOS 6.5 (o cualquier otro sistema operativo) en dos nodos.
  2. Establezca nombres de host llamados "servidor1" y "servidor2".
  3. Una conexión de red que funcione.
  4. Disco de almacenamiento en ambos nodos llamado "/ data/brick".

Antes de instalar GlusterFS en ambos servidores, necesitamos habilitar los repositorios EPEL y GlusterFS para satisfacer las dependencias externas. Utilice el siguiente enlace para instalar y habilitar el repositorio de epel en ambos sistemas.

  1. Cómo habilitar el repositorio EPEL en RHEL/CentOS

A continuación, debemos habilitar el repositorio de GlusterFs en ambos servidores.

# wget -P /etc/yum.repos.d http://download.gluster.org/pub/gluster/glusterfs/LATEST/EPEL.repo/glusterfs-epel.repo

Instale el software en ambos servidores.

# yum install glusterfs-server

Inicie el demonio de administración de GlusterFS.

# service glusterd start

Ahora verifique el estado del demonio.

# service glusterd status
service glusterd start
  service glusterd status
  glusterd.service - LSB: glusterfs server
   	  Loaded: loaded (/etc/rc.d/init.d/glusterd)
  	  Active: active (running) since Mon, 13 Aug 2012 13:02:11 -0700; 2s ago
  	 Process: 19254 ExecStart=/etc/rc.d/init.d/glusterd start (code=exited, status=0/SUCCESS)
  	  CGroup: name=systemd:/system/glusterd.service
  		  ├ 19260 /usr/sbin/glusterd -p /run/glusterd.pid
  		  ├ 19304 /usr/sbin/glusterfsd --xlator-option georep-server.listen-port=24009 -s localhost...
  		  └ 19309 /usr/sbin/glusterfs -f /var/lib/glusterd/nfs/nfs-server.vol -p /var/lib/glusterd/...

Abra "/ etc/sysconfig/selinux" y cambie SELinux a modo "permisivo" o "deshabilitado" en ambos servidores. Guarde y cierre el archivo.

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

A continuación, vacíe las iptables en ambos nodos o necesite permitir el acceso al otro nodo a través de iptables.

# iptables -F

Ejecute el siguiente comando en "Server1".

gluster peer probe server2

Ejecute el siguiente comando en "Server2".

gluster peer probe server1

Nota: Una vez que se haya conectado este grupo, solo los usuarios de confianza pueden probar nuevos servidores en este grupo.

Tanto en server1 como en server2.

# mkdir /data/brick/gv0

Cree un volumen en cualquier servidor e inicie el volumen. Aquí, he tomado "Server1".

# gluster volume create gv0 replica 2 server1:/data/brick1/gv0 server2:/data/brick1/gv0
# gluster volume start gv0

A continuación, confirme el estado del volumen.

# gluster volume info

Nota: Si el volumen en caso de que no se inicie, los mensajes de error se registran en "/ var/log/glusterfs" en uno o ambos servidores.

Monte el volumen en un directorio bajo "/ mnt".

# mount -t glusterfs server1:/gv0 /mnt

Ahora puede crear y editar archivos en el punto de montaje como una vista única del sistema de archivos.

Características de GlusterFS

  1. Autocuración: si alguno de los ladrillos en un volumen replicado está inactivo y los usuarios modifican los archivos dentro del otro ladrillo, el demonio de autocuración automática entrará en acción tan pronto como el ladrillo esté activo la próxima vez y las transacciones ocurridos durante el tiempo de inactividad se sincronizan en consecuencia.
  2. Reequilibrio: si agregamos un nuevo bloque a un volumen existente, donde anteriormente residía una gran cantidad de datos, podemos realizar una operación de reequilibrio para distribuir los datos entre todos los bloques, incluido el bloque recién agregado.
  3. Replicación geográfica: proporciona copias de seguridad de los datos para la recuperación ante desastres. Aquí viene el concepto de volúmenes maestro y esclavo. De modo que si el maestro está inactivo, se puede acceder a todos los datos a través del esclavo. Esta función se utiliza para sincronizar datos entre servidores separados geográficamente. La inicialización de una sesión de replicación geográfica requiere una serie de comandos gluster.

Aquí está la siguiente captura de pantalla que muestra el módulo de replicación geográfica.

Enlaces de referencia

Página de inicio de GlusterFS

¡Eso es todo por ahora!. Manténgase actualizado para obtener una descripción detallada de funciones como Autocuración y reequilibrio, replicación geográfica, etc. en mis próximos artículos.