Servidor GlusterFS de 200TB que Utiliza el ODROID-HC2 para Aplicaciones Distribuidas Masivamente.

Con el transcurso de los años, he ido actualizado varias veces el almacenamiento de mi casa. Como muchos, empecé con un NAS de consumo. El primero fue un Netgear ReadyNAS, luego varios dispositivos QNAP. Hace aproximadamente dos años, me cansé de las limitaciones de la CPU y de la memoria de QNAP, y de dispositivos similares, así que decidí montar el mío propio usando un Supermicro XEON D, Proxmox y FreeNAS. Era estupendo, pero añadir más unidades me suponía un auténtico dolor de cabeza. La migración entre niveles ZRAID era básicamente imposible si no contabas con varios discos adicionales.

El fiasco de FreeNAS 10 fue la gota que colmó el vaso. Quería poder añadir discos en cantidades más pequeñas y quería mejores modos ante posibles fallos parciales, algo así como "unRAID", al mismo tiempo que me permitiera escalar a tantos discos como quisiera. También quería evitar cualquier fallo que pudiera darse en el adaptador de bus, la placa base o la fuente de alimentación.

He estado experimentando con GlusterFS y Ceph usando aproximadamente cuarenta pequeñas máquinas virtuales (VM) para simular varias configuraciones y posibles fallos como son la pérdida de energía, fallos en disco, archivos corruptos, etc. Al final, GlusterFS fue el que me dio mejor resultado a la hora de proteger mis datos porque incluso si GlusterFS sufría un fallo integral, mis datos serían en su mayor parte recuperables gracias a que estarían almacenados en un sistema de archivos ext4 en mis nodos. Ceph también realizaba un gran trabajo, pero era bastante frágil (aunque recuperable) y difícil de configurar.

Opte por el ODROID-HC2 con 8 núcleos, 2 GB de RAM, ethernet Gbit y un puerto SATA, el cual ofrece una muy buena base para aplicaciones de distribución masiva. Me hice con cuatro ODROID y volví a experimentar con GlusterFS. Tras poner a prueba mi idea, volví a pedir otros 16 nodos y empecé a migrar mi matriz actual.

Figura 1: Este es un excelente ejemplo de clúster ODROID que gestiona datos reales.

En una prueba de velocidad, logré mantener una tasa de escritura de 8 GBPS y de lectura de 15 GBPS a través de la red cuando las operaciones están suficientemente distribuidas en el sistema de archivos. La lectura de un único archivo está limitada por el rendimiento de 1 nodo, se llegan a alcanzan los 910 Mbit de lectura/escritura.

En términos de consumo de energía, una carga de CPU moderada con una elevada carga trabajo de disco (reequilibrio de la matriz), una carcasa pfSense, 3 switches, 2 puntos de acceso Unifi, un módem Fios Verizon y varias máquinas virtuales en el host XEON-D, me suponía un consumo alrededor de los 250 vatios. Donde yo vivo, en Nueva Jersey, esto equivale a un coste de unos 350$ al año en electricidad. Estoy escribiendo este artículo porque no he logrado encontrar demasiada información sobre cómo usar el ODROID-HC2 con cualquier escala que me resulte significativa.

Listado de componentes

Lo curioso es que no hay mucho que configurar en GlusterFS. Eso es lo que más me gusta de esto. Literalmente, se necesitan tres comandos para activar y ejecutar GlusterFS después de instalar el SO y formatear los discos. Posiblemente publicaré una reseña en mi github en las próximas semanas. Primero quisiera probar Presto ( https://prestodb.io/), un motor SQL distribuido, en estas máquinas antes de escribir nada.

$ sudo apt-get install glusterfs-server glusterfs-client
$ sudo gluster peer probe gfs01.localdomain ...  gfs20.localdomain
$ sudo gluster volume create gvol0 replicate 2 transport tcp gfs01.localdomain:/mnt/gfs/brick/gvol1 ...  gfs20.localdomain:/mnt/gfs/brick/gvol1
$ sudo cluster volume start gvol0
Para comentarios, preguntas y sugerencias, visita el artículo original en https://www.reddit.com/r/DataHoarder/comments/8ocjxz/200tb_glusterfs_odroid_hc2_build/.

Be the first to comment

Leave a Reply