21 – Ceph Storage

Bienvenidos al episodio 21 de deployandome, el podcast de tecnología para sysadmins y devops. Soy Rodolfo Pilas y estoy grabando el 31 de octubre de 2017.

Aproximádamente por estas semanas estoy viendo en mis cursos de la Universidad el tema del Storage en Cloud Computing, por lo que me pareció interesante dedicar el capítulo de hoy al storage, o sea guardar grandes cantidades de datos.

Todos sabemos o tenemos una idea que cuando la cantidad de datos a guardar supera la capacidad de almacenamiento de nuestras computadoras debemos recurrir a soluciones al almacenamiento externo.

Si el volumen de datos que vamos a guardar esta generado por varias personas o aplicaciones que a su vez, tienen el requisito de disponibilidad inmediata de esos datos, estamos hablando de un recurso de almacenamiento masivo y online.

En estos casos se suele utilizar hardware dedicado especialmente destinado a storage. Estos hardware dedicados para storage, según como se utilizan y conectan se dividen en dos grupos principales:

SAN o Storage Area Network
Es cuando el espacio de almacenamiento se obtiene de una red dedicada que presenta unidades de disco como si fueran discos físicos. En estos casos los sistemas operativos ven discos locales pero están presentados a través de una red y son partes de un hardware externo. Es fácil darse cuenta cuando estamos ante una SAN, pues los comenzamos a utilizar con el comando fdisk, luego los formateamos con mkfs, para recién poderlos montar y usar su espacio.

En SAN los permisos para acceso a los archivos están gestionados por el sistema operativo que utiliza ese disco de red.

NAS o Network Attached Storage
En estos casos hablamos de una tecnología de almacenamiento por el cual se comparte espacio de disco a través de la red. Los sistemas operativos ven que aparece "espacio" para usar. También es fácil darse cuenta cuando estamos utilizando un NAS, pues comenzamos montando (mount) un disco de red compartido.

En NAS los permisos para acceso a los archivos están gestionados por el servidor que comparte su disco y no por el sistema operativo que lo utiliza.

A estos dos sistemas tradicionales y muy utilizados como storage de red se agrega una tercer arquitectura de storage que es el almacenamiento de objetos u "Object Storage".

En estos casos, en lugar de referirnos a archivos, discos o bloques, hablamos de manejar los datos como objetos, que son guardados en forma desestructurada, lo que permite manejar cantidades masivas de datos. Es decir, simplemente mando a guardar archivos en ráfagas y por cada uno obtengo un puntero que luego me permite recuperar el archivo en caso de necesitarlo.

Los datos guardados como objetos, facilitan algunas funciones como replicación, caching, balanceo en sistemas distribuidos, inclusive en distintas regiones geográficas.

Los archivos en un object storage se gestionan a través de un API.

Y entonces, como en Deployando.me siempre busco compartir algo que puedas implementarlo y probarlo en esta edición voy a contarte de CEPH Storage.

Ceph es un software para gestionar un sistema de almacenamiento (storage) que permite utilizar hardware estándar y está diseñado para brindar una excelente performance, confiabilidad y alta escalabilidad.

CEPH una vez levantado presta servicios de Block Storage, de Filesystem y de Object Storage y luego cada uno de los servidores o aplicaciones puede valerse de alguno de estas tres funcionalidades de storage, según sus necesidades.

En concreto Ceph es un conjunto de daemons que se corren sobre el sistema GNU/Linux estándar y que permiten gestionar un cluster de storage. Es decir, con Ceph se puede comenzar con un storage de pocos nodos y hacerlo escalar para satisfacer las necesidades de almacenamiento y confiabilidad de toda una organización o de un prestador de servicios.

Como CEPH es un Software Libre, este crecimiento no está atado a un licenciamiento que te persiga con límites de funcionalidad, recortes de servicios o de tamaño de tu instalación.

Una vez que instalamos y ponemos a funcionar un claster Ceph, significa que tendremos en nuestra red un servicio al cual solicitarle la creación de discos que apeamos como un dispositivo en el /dev y a partir de ahí particionarlo y darle un formato para su uso.

Si bien podemos utilizar estos discos para ampliar la cantidad de disco de nuestro GNU/Linux, generalmente serán utilizados por sistemas de cloud computing como Openstack o de virtualización como KVM.

Cuando Ceph se utiliza como filesystem el uso ya puede ser más común en nuestra red la red y puede ser consumido por cualquiera que necesite filesystem. Para ello, Ceph nos permitirá gestionar llaves de acceso que utilizaremos para montar el filesystem remoto. Pero, teniendo en cuenta la escalabilidad y el nivel de servicios logrado por el cluster, está recomendado para sistemas de cloud computing como Openstack.

Como object storage Ceph es compatible con el API S3 de Amazon y puede ser utilizado también por Openstack Swift para sus servicios de cloud computing.

Si fuera a resumir las características de Ceph empezaría por destacar que es Software Libre, con licencia LGPL v2.1

Que se trata de un storage definido por software lo que permite utilizar hardware diferente para atender distintas cargas de trabajo.

Que se puede construir con hardware commodity, por lo que es fácil de evaluar y de implementar y se puede comenzar a probarlo ya.

Que escala, que su arquitectura está pensada para alta eficiencia y soportar casos de borde, es decir está validado para nivel empresarial.

Que se puede construir un storage distribuido que implementa protección de datos y alta disponibilidad nativa.

¿qué más decirles?

Ceph existe gracias a la cooperación de una comunidad que incluye ingenieros e investigadores en almacenamiento.

Que detrás de Ceph están empresas como RedHat, Canonical, SuSE, Fujitsu, Intel, SanDisk y ZTE entre otras.

Claro Ceph no se trata de un software que uno instala a nivel hogareño, pues cuando se comienzan a apreciar las bondades nativas del cluster Ceph es cuando tenemos seis o más equipos funcionando como Storage.

Pero podemos probarlo corriendo en una única máquina virtual: así lo hice yo la primera vez que lo utilicé, mis usos actuales son en instalaciones de OpenStack, tanto ofreciendo block storage para Cinder, object storage para Swift, o filesystem Manila.

Si te has entusiasmado, en el 2015 escribí una guía de Comandos de Ceph con un acercamiento bien práctico para utilizar un cluster Ceph en sus distintas modalidades de storage. La idea es levantar una máquina virtual con Ceph per-instalado y utilizarlo desde otra máquina virtual.

Esa guía la basé principalmente en el libro de Sage Weil titulado Learning Ceph, de la editorial Packt Publishing. Dejaré el enlace en el artículo del blog sobre este episodio.

Por eso, les recuerdo que en el blog deployando.me siempre pongo la transcripción total del contenido del podcast, que también suelo acompañar con algún enlace o material extra.

Soy Rodolfo Pilas, en twitter me siguen por @pilasguru y les dejo un saludo a todos, confiando en que este podcast les haya aportado para mejorar y, como siempre, espero sus inquietudes y sugerencias comentando en deployando.me

Hasta la próxima edición.

Referencias: