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 de usuario, es decir, Sistema de archivos en el espacio de 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. Innovation – It eliminates the metadata and can dramtically improve the performance which will help us to unify data and objects.
  2. Elasticity – Adapted to growth and reduction of size of the data.
  3. Scale Linearly – It has availability to petabytes and beyond.
  4. Simplicity – It is easy to manage and independent from kernel while running in user space.
  1. Salable – Absence of a metadata server provides a faster file system.
  2. Affordable – It deploys on commodity hardware.
  3. Flexible – As I said earlier, GlusterFS is a software only file system. Here data is stored on native file systems like ext4, xfs etc.
  4. Open Source – Currently GlusterFS is maintained by Red Hat Inc, a billion dollar open source company, as part of Red Hat Storage.
  1. Brick – Brick is basically any directory that is meant to be shared among the trusted storage pool.
  2. Trusted Storage Pool – is a collection of these shared files/directories, which are based on the designed protocol.
  3. Block Storage – They are devices through which the data is being moved across systems in the form of blocks.
  4. Cluster – In Red Hat Storage, both cluster and trusted storage pool convey the same meaning of collaboration of storage servers based on a defined protocol.
  5. Distributed File System – A file system in which data is spread over different nodes where users can access the file without knowing the actual location of the file. User doesn’t experience the feel of remote access.
  6. FUSE – It is a loadable kernel module which allows users to create file systems above kernel without involving any of the kernel code.
  7. glusterd – glusterd is the GlusterFS management daemon which is the backbone of file system which will be running throughout the whole time whenever the servers are in active state.
  8. POSIX – Portable Operating System Interface (POSIX) is the family of standards defined by the IEEE as a solution to the compatibility between Unix-variants in the form of an Application Programmable Interface (API).
  9. RAID – Redundant Array of Independent Disks (RAID) is a technology that gives increased storage reliability through redundancy.
  10. Subvolume – A brick after being processed by least at one translator.
  11. Translator – A translator is that piece of code which performs the basic actions initiated by the user from the mount point. It connects one or more sub volumes.
  12. Volume – A volumes is a logical collection of bricks. All the operations are based on the different types of volumes created by the user.

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. Install CentOS 6.5 (or any other OS) on two nodes.
  2. Set hostnames named “server1” and “server2“.
  3. A working network connection.
  4. Storage disk on both nodes named “/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. How to Enable EPEL Repository in 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 ha 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. Self-heal – If any of the bricks in a replicated volume are down and users modify the files within the other brick, the automatic self-heal daemon will come into action as soon as the brick is up next time and the transactions occurred during the down time are synced accordingly.
  2. Rebalance – If we add a new brick to an existing volume, where large amount of data was previously residing, we can perform a rebalance operation to distribute the data among all the bricks including the newly added brick.
  3. Geo-replication – It provides back-ups of data for disaster recovery. Here comes the concept of master and slave volumes. So that if master is down whole of the data can be accessed via slave. This feature is used to sync data between geographically separated servers. Initializing a geo-replication session requires a series of gluster commands.

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.