Aug 3, 2009

Sistema de archivos vs Dispositivo de bloque

Compartir un dispositivo de bloque (sharing block device) viene a ser lo mismo que compartir un disco físico.

Por ejemplo, se puede tener un disco duro al que quieran acceder de forma concurrente varias máquinas. El acceso a dicho disco se puede proveer a través de diferentes redes de almacenamiento, también conocidas como redes SAN (Store Area Network).

Una SAN es una red dedicada de alta rendimiento destinada a la transferencia de datos, la cual permite conectar directamente los dispositivos de almacenamiento a los equipos a través de fibra óptica, tarjetas iSCSI (Internet Small Computer Systems Interface) u opciones mucho más económicas como por ejemplo drivers GNBD (Global Network Block Device):

  • SAN Fibre Channel: destinada a la interconexión directa a través de fibra óptica entre dispositivos de almacenamiento y máquinas.
  • SAN iSCSI: destinada a la interconexión directa entre dispositivos de almacenamiento y máquinas a través de una red TCP/IP. iSCSI es un estándar oficial que permite encapsular el protocolo SCSI (familia de protocolos para comunicaciones con dispositivos de entrada/salida, especialmente dispositivos de almacenamiento) sobre redes TCP/IP. Las tarjetas iSCSI resultan mucho más económicas que las líneas de fibra, además de mantener la compatibilidad con las infraestructuras Ethernet ya existentes, así como las ventajas de las redes IP en cuanto a administración, escalabilidad, seguridad y coste se refiere.
  • SAN GNBD: proporciona acceso a almacenamiento de bloques sobre una red Ethernet. GNBD es una solución totalmente software (a diferencia de Fibre Channel que es hardware e iSCSI que es un modelo híbrido - es hardware cuando emplea tarjetas dedicadas o software si su comportamiento se emula -) muy económica que permite compartir de forma directa un dispositivo de bloque a través de una LAN.

La principal ventaja de una red de almacenamiento es que permite a los datos ser transferidos directamente entre discos y máquinas, saltándose el cuello de botella impuesto por el servidor y el control de acceso de la red.



Ese dispositivo de bloque que va a ser exportado en crudo a varias máquinas necesita tener un sistema de ficheros. Podríamos pensar por ejemplo en ext3, pero este sistema de ficheros no nos valdría ya que no está diseñado para arbitrar bloqueos entre accesos, y en consecuencia lo que podría ocurrir si se montase es una corrupción de datos.

En base a ello surgieron sistemas de archivos como GFS (Global File System), GFS2 o OCFS (Oracle Cluster File System), que sí permite que varios equipos puedan acceder de forma concurrente al mismo sistema de ficheros sin ningún tipo de problema.

Por otra parte, compartir un sistema de archivos (sharing file system) significa compartir un directorio que ya ha sido montado y el cual contiene un sistema de archivos cualquiera (ext3, NTFS, GFS2, etc.). Ese directorio lo podemos exportar a otras máquinas por ejemplo a través de Samba o NFS (Network File System). NFS por ejemplo proporciona control de acceso sobre el sistema de archivo montado, permitiendo de esta forma que varios nodos puedan acceder concurrentemente sin ningún tipo de problema.



Otra alternativa a NFS puede ser por ejemplo GlusterFS, que además de permitir exportar un sistema de archivos como hace NFS, incorpora otras mejoras adicionales: almacenamiento distribuido, replicado, alto rendimiento, escalabilidad, etc. NFS o GlusterFS no permiten exportar dispositivos de bloque (por ejemplo directamente una partición /dev/sda1).

Y ya por último, ese área de almacenamiento compartido (sistema de archivos o dispositivo de bloque) al que accederán varios nodos tiene un punto de fallo: si ese espacio se cayera se perdería el acceso a la información.



La solución pasa por construir un espejo activo-activo o activo-pasivo de ese espacio de almacenamiento, ya sea un dispositivo de bloque o un sistema de archivos ya montado, de tal forma que si se pierde el acceso al sistema principal siempre exista una copia replicada. GlusterFS o DRBD (Distributed Replicated Block Device) son aplicaciones ideadas para mantener un mirror de un sistema de almacenamiento en tiempo real.

GlusterFS se puede emplear para hacer espejos de sistemas de archivos ya montados (Ej. - /home) y DRBD para dispositivos de bloque en crudo (Ej. - /dev/VolGroup00/LogVol00).

6 comments:

  1. Gracias, Un articulo muy ilustrativo. Algunas dudas:

    -Tanto los sistemas de archivos como el de bloques , ¿intentan solventar el mismo problema?

    -¿Cual es mas eficiente? Yo escuche que el acceso a bloques por software es muy ineficiente ¿Es cierto? Existen gráficas donde comparar GNBD, SMB, GlusterFS...

    Mi interés está sobre todo en almacenamiento distribuido. Me puedes recomendar alguna bibliografía.

    --
    Un saludo

    ReplyDelete
  2. Hola,

    ambos sistemas son dos formas diferentes de compartir la información, no creo que traten de solventar ningún problema. A través de un método puedes exportar un dispositivo en crudo, y con el otro, exportas un dispositivo ya montado sobre un directorio, es la única diferencia.

    Con respecto al rendimiento, yo he hecho pruebas con tres sistemas distintos (publicaré los resultados en el blog): GNBD+GFS2, NFS+GFS2 y NFS+ext3, y el que mejor performance me ha dado ha sido el primero. Me queda por probar iSCSI+GFS2. Lo que si que está claro es que lo más óptimo (se recomienda en todos los sitios) es acceder a GFS2 a través de hardware SAN, eso va que vuela, pero también vale dinero.

    Y para el almacenamiento distribuido miraría la documentación de GlusterFS, que está bastante bien. La verdad es que existe poca información al respecto y está bastante difusa. También te puedes montar un sistema distribuido con DRBD y GFS2. Este artículo de DRBD es bastante claro: http://www.elastix.org/index.php?option=com_openwiki&Itemid=27&id=high_availability_elastix_es

    Un saludo,

    ReplyDelete
  3. Gracias. Esperando esas gráficas.

    El problema del que hablaba era compartir la información.

    ReplyDelete
  4. This comment has been removed by the author.

    ReplyDelete
  5. link:

    http://www.elastix.org/index.php?Itemid=27&id=high_availability_elastix_es

    ReplyDelete
  6. Excelente doc colega, de verdad me fue muy útil, sigan así y saludos...

    ReplyDelete