Analizando el almacenamiento definido por software con GlusterFS en el ODROID-HC1: Parte 2 - Rendimiento del cliente

ODROID Magazine GlusterFS

En mi anterior artículo, describí cómo configurar un Volumen Distribuido Replicado GlusterFS así como un simple Volumen Replicado. También describí cómo usar GlusterFS Native Client para acceder a los volúmenes. En esta ocasión, te mostraré cómo configurar clientes NFS y Samba para acceder al volumen GlusterFS y compararemos el rendimiento de los diferentes clientes.

Cliente NFS

Se configura automáticamente un servidor NFS cuando instalamos GlusterFS y creamos un volumen replicado distribuido. Sin embargo, si tu instalación es como la mía, cuando ejecutes el siguiente comando, descubrirás que los servidores NFS están desconectados, tal y como se muestra en la Figura 1.

$ gluster volume status
ODROID Magazine Figure 1 -nfs-offline Figura 1 -nfs-desconectado

Es probable que se deba a que rpcbind no se esté ejecutando, tal y como se evidencia en el registro /var/log/glusterfs/nfs.log, el cual se muestra en la Figura 2.

ODROID Magazine Figure 2 - rpc-error Figura 2 - rpc-error

Al ejecutar los siguientes comandos en todos los servidores GlusterFS se iniciarán los servidores NFS, donde gvolume0 es el volumen replicado distribuido de GlusterFS que creé en la Parte 1:

$ sudo /etc/init.d/rpcbind start
$ sudo gluster volume set gvolume0 nfs.disable off
$ sudo gluster volume stop gvolume0
$ sudo gluster volume start gvolume0
$ sudo gluster volume status gvolume0
ODROID Magazine Figure 3 - nfs-online-all Figura 3 - nfs online en todos los volumenes

Luego configuramos un cliente NFS en una de las máquinas de mi ODROID-MC1, en concreto, el xu4-master, donde xu4-gluster0 es uno de los servidores GlusterFS:

$ sudo apt-get update
$ sudo apt-get install nfs-common
$ sudo mkdir /mnt/nfs
$ sudo mount -t nfs -o vers=3,mountproto=tcp xu4-gluster0:/gvolume0 /mnt/nfs
Ahora puedes acceder al volumen de GlusterFS en xu4-master. Puedes enviar el siguiente comando sobre la lista de 50 archivos que creamos en la Parte 1:
$ ls /mnt/nfs/testdir

Cliente SAMBA

La forma más sencilla de acceder a un volumen GlusterFS es exportar el punto de montaje Gluster como un recurso samba y montarlo usando el protocolo CIFS. Por supuesto, primero debes instalar los paquetes Samba y CIFS:

$ sudo apt-get update
$ sudo apt-get install samba smbfs cifs
Después, debes configurar una contraseña para samba,
$ sudo smbpasswd -a odroid
Edita el archivo /etc/samba/smb.conf con la siguiente configuración
[global]
 security = user
 #guest account = nobody
 [gvolume0]
 guest ok = yes
 path = /mnt/gfs
 read only = no
 valid users = odroid
 admin users = root
A continuación, reinicia Samba y monta el recurso compartido:
$ sudo /etc/init.d/samba restart
$ sudo mount -t cifs -ouser=odroid,password=odroid //192.168.1.80/gvolume0 /mnt/samba
Para montar en el recurso compartido NFS en lugar del recurso Gluster, simplemente desmonte Samba, modifica el archivo /etc/samba/smb.conf, reinicia Samba y monta el sistema de archivos de la siguiente forma:
[global]
 security = user
 #guest account = nobody
 [gvolume0]
 guest ok = yes
 path = /mnt/nfs
 read only = no
 valid users = odroid
Reinicia samba y monta el recurso compartido:
$ sudo /etc/init.d/samba restart
$ sudo mount -t cifs -ouser=odroid,password=odroid //192.168.1.80/gvolume0 /mnt/samba

Rendimiento del cliente

Para comparar el rendimiento de los distintos clientes, necesitamos un punto de partida y éste es el rendimiento del sistema de archivos nativo, es decir, una partición montada en local en un servidor. Esto implica que tenemos 5 clientes distintos para comparar. Incluyen:

  1. Sistema de archivos nativo: la prueba de rendimiento se ejecuta en un servidor donde se monta una partición de disco local
  2. Cliente nativo GlusterFS: montado en una máquina que no sea un servidor GlusterFS que utilice GlusterFS Native Client
  3. Cliente NFS Gluster: montado en una máquina que no es un servidor GlusterFS que utilice el cliente NFS GlusterFS.
  4. Cliente Samba basado en GlusterFS Native Client – Recurso compartido CIFS del sistema de archivos del cliente Nativo GlusterFS.
  5. Cliente Samba basado en GlusterFS NFS Client – Recurso compartido CIFS del sistema de archivos cliente NFS GlusterFS.

La herramienta para evaluar el rendimiento del sistema de archivos utilizada es iozone, que no está en el repositorio de software de Ubuntu, pero puede descargarse desde http://bit.ly/2BnxxfA. Genera y mide diversas operaciones de archivos. Nosotros utilizaremos los siguientes 4 indicadores de rendimiento para comparar el rendimiento del cliente: escritura de un solo hilo, escritura de 8 hilos, lectura de un solo hilo, lectura de 8 hilos.

Escritura de un solo hilo

El comando iozone usado en la prueba es:

$ iozone -w -c -e -i 0 -+n -C -r 64k -s 1g -t 1 -F path/f0.ioz
Las opciones utilizadas son: -c Incluye close() -e Incluye el vaciado de los cálculos del tiempo. (Las opciones -c -e se usan conjuntas para medir el tiempo que tardan los datos en alcanzar el almacenamiento persistente) -w No desvincula archivos temporales cuando termina de usarlos -i 0=escribir, 1=leer (solo utilizamos 0 y 1 en estas pruebas) -+n Ahorra tiempo omitiendo las pruebas de re-lectura y re-escritura -C Muestra cuánto tiempo participó cada hilo en la prueba -r Tamaño de transferencia de datos -s Tamaño de archivo de subproceso -t Número de hilos -F Lista de archivos

El comando se ejecuta para cada cliente. El resultado del comando se muestra en la Figura 4, y el resultado se resume en el gráfico de barras de la Figura 5.

ODROID Magazine Figure 4 - native-w1 Figura 4 - native-w1 eODROID Magazine Figure 5 - 1ThreadWrite Figura 5 - Escritura 1 hilo

El nativo es el más rápido, seguido por los clientes nativos NFS y GlusterFS. Como era de esperar, los clientes de Samba son los más lentos en nuestra configuración porque depende de los clientes NFS y nativo GlusterFS y subyacentes.

Escritura de 8 hilos

El comando usado es:

$ iozone -w -c -e -i 0 -+n -C -r 64k -s 1g -t 8 -F path/f{0,1,2,3,4,5,6,7,8}.ioz
El resultado se muestra en la Figura 6, y los gráficos de resultados se muestran en la Figura 7.

ODROID Magazine Figure 6 - native-w8 Figura 6 - native-w8ODROID Magazine Figure 7 - 8ThreadWrite Figura 7 - Escritura de 8 hilos

En la prueba de rendimiento de escritura multiproceso, el resultado nativo es el más rápido, seguido por el cliente NFS y Samba que usa NFS. Ten en cuenta que el cliente Samba que utiliza NFS es más rápido que el cliente NFS en sí, para lo cual no tengo una explicación clara.

Lectura de un solo hilo

El caché se borra antes de la prueba de rendimiento de lectura:

$ sync
$ echo 1 > /proc/sys/vm/drop_caches
$ iozone -w -c -e -i 1 -+n -C -r 64k -s 1g -t 1 -F path/f0.ioz
El gráfico resultante con los resultados se muestra en la Figura 8.

ODROID Magazine Figure 8 - 1ThreadRead Figura 8 - Lectura de 1 hilo

El resultado vuelve a mostrar que el Nativo es el más rápido, seguido de los clientes basados en NFS y luego los clientes basados en clientes nativos de GlusterFS. De nuevo, no tengo ninguna explicación sobre por qué el cliente Samba que usa NFS es más rápido que el cliente NFS.

Lectura de 8 hilos

Finalmente, ejecuta la prueba de rendimiento de lectura multiproceso usando los siguientes comandos:

$ sync
$ echo 1 > /proc/sys/vm/drop_caches
$ iozone -w -c -e -i 1 -+n -C -r 64k -s 1g -t 8 -F path/f{0,1,2,3,4,5,6,7,8}.ioz
El resultado se muestra en la Figura 9.

ODROID Magazine Figure 9 - 8ThreadRead Figura 9 - Lectura de 8 hilos

El rendimiento es bastante diferente en este caso, ya que el cliente nativo GlusterFS es el más rápido, probablemente debido a la distribución. Los archivos se almacenan en diferentes servidores, lo cual añade paralelismo en la recuperación, a diferencia de las escrituras, lo que añade a su vez una sobrecarga al escribir datos en varios servidores.

Clientes de alta disponibilidad con tolerancia frente a fallos automática

De todos los clientes probados, solo el GlusterFS Native Client ofrece tolerancia frente a fallos automática y alta disponibilidad. Esto significa que, si falla el servidor GlusterFS especificado en el comando mount, cambiará automáticamente para usar otro servidor Gluster en nuestro Volumen Replicado o Replicado Distribuido.

Los clientes NFS y Samba utilizados no tienen estas funciones. Si desea esta función para NFS, debes desactivar el servidor NFS GlusterFS e instalar el servidor NFS-Ganesha (http://bit.ly/2BuH9Ek).

Del mismo modo, para Samba/CIFS, debes instalar el complemento Samba VFS desde http://bit.ly/2i7gMjI. Además de proporcionar alta disponibilidad y tolerancia frente a fallos automática, también utiliza libgfapi para evitar la penalización de rendimiento entre el modo kernel y el del usuario, que tiene lugar en nuestro cliente Samba basado en GlusterFS Native Client utilizado en nuestra prueba.

Ten en cuenta que el plugin para gluster no está presente en el paquete Ubuntu samba-vfs-modules. Animo a que los analicéis si queréis contar con alta disponibilidad y tolerancia frente a fallos automática para los clientes de NFS y Samba.

Conclusión

Te he enseñado cómo configurar Volúmenes Replicados Distribuidos y Replicados GlusterFS usando dispositivos ODROID-HC1, y cómo acceder a ellos usando GlusterFS Native Client, NFS y Samba. También te he mostrado su rendimiento mediante gráficas que te permite compararlos fácilmente. Ahora dispones de suficiente información para elegir el cliente más apropiado. Personalmente, creo que es una tecnología empresarial muy buena que se presta para su fácil uso doméstico. En mi opinión el ODROID-HC1 es más económico y flexible que los sistemas NAS comerciales. Espero que compartas mi entusiasmo al utilizarlo en casa.

Be the first to comment

Leave a Reply