Una de las principales diferencias de Clouding es nuestro innovador sistema de triple réplica para el almacenamiento de tus servidores.
En la mayoría de proveedores, los datos se almacenan de forma local en el propio Hypervisor. Es decir, el Hypervisor (equipo físico o host) tiene la RAM, CPU y Disco de los Servidores Cloud que aloja.
Por el contrario en Clouding almacenamos los discos de los Servidores Cloud en un clúster de almacenamiento distribuido.
Cada vez que un Servidor Cloud escribe en disco, los datos se escriben simultáneamente en 3 discos diferentes, cada uno de ellos alojado en una cabina de almacenamiento diferente. De esta forma el disco de tu servidor no está vinculado a ningún servidor físico, sino que está distribuido en múltiples cabinas.
Esto tiene múltiples ventajas y alguna pequeña desventaja.
Ventajas
Recuperación rápida de fallos de hardware
En el caso de un problema de hardware en un Hypervisor, podemos arrancar los servidores alojados en ese hypervisor en otros hypervisores en apenas unos segundos. Si los datos estuviesen en los discos locales del hypervisor, sería necesario cambiar primero el hardware dañado, antes de poder acceder a los discos de los servidores y recuperarlos.
Gran tolerancia a fallos
En caso de utilizar discos locales, normalmente se opta por RAID 5 -en el cual solo puede fallar un disco- o RAID 6 -donde pueden fallar dos discos- o RAID 10 -de forma que puedan fallar entre 1 y la mitad de discos, depende de cuales fallen. En caso de fallar más discos, se produce una pérdida total de datos.
En el caso de Clouding, tendrían que fallar 3 discos exactamente al mismo tiempo, en 3 cabinas diferentes, para producirse una pérdida de datos. La cual sería parcial -y fácilmente recuperable desde el sistema de Disaster Recovery- ya que los datos de tu servidor se almacenan en bloques de 4MB, distribuyéndose cada bloque en un disco diferente. Es decir, los datos no están solo en 3 discos específicos, sino distribuidos entre los cientos de discos que componen nuestro almacenamiento.
Recuperación rápida de réplicas
En un RAID local normal, cuando un disco falla, es necesario reemplazarlo físicamente para que los datos se vuelvan a replicar a ese disco. Esto implica que suelen pasar bastantes horas desde que se detecta el fallo, hasta que se cambia el disco y empieza la replicación. Además, los datos podrán replicarse como mucho, a la máxima velocidad del disco reemplazado, lo que aumenta el tiempo total de recuperación.
Nuestro almacenamiento distribuido funciona de forma muy diferente. Cuando un disco falla, las réplicas almacenadas en ese disco, se empiezan a replicar inmediatamente por todos los otros discos del sistema de almacenamiento distribuido.
Al utilizar solo discos en estado sólido, disponer de varios cientos de disco y tener cabinas capaces de transmitir a velocidades de hasta 160gbps, la réplica no solo se empieza a hacer al acto, sino que además se completa en muy poco tiempo, ya que se realiza a una velocidad de decenas de gbps utilizando todas las réplicas existentes -que se encuentran distribuidas por 2/3 de los discos- para generar otra réplica en el tercio de discos restante.
Esto hace, que el tiempo de recuperación desde que se pierde una réplica hasta que hay otra disponible, sea de pocos minutos, frente a las horas que suele tardar con un sistema RAID normal.
Integridad de datos
Un RAID normal -aún utilizando sistemas como PatrolRead- solo verifica los datos puntualmente y de forma superficial. Es decir, no examina los datos en sí mismos, sino que simplemente verifica que todos los sectores del disco sean legibles.
El sistema de almacenamiento que utilizamos en Clouding tiene un comportamiento muy diferente.
Cada vez que un dato se escribe, se genera un CRC básico de ese dato y se almacena. De esta forma cada vez que el dato sea leído en el futuro, se podrá volver a calcular el CRC del mismo y compararlo con el almacenado. En el caso de que el CRC no cuadre, el sistema descartará esa réplica y utilizará otra réplica donde el valor CRC coincida con los datos almacenados.
Adicionalmente, se realiza una comparación de los CRC de todas las réplicas cada día, para asegurar la consistencia de los datos.
Y como última barrera infalible de protección, se realiza una comprobación bit a bit semanalmente, donde se compara el contenido íntegro de cada réplica contra las dos otras réplicas existentes. En el caso de que una réplica contenga datos diferentes de las otras dos, se utilizarán las 2 réplicas restantes coincidentes para sobreescribir los datos de la réplica no coincidente. Además, se genera un error, para que nuestros técnicos revisen el fallo en busca de posibles problemas en el disco afectado.
Esto asegura que los datos siempre se mantengan sin ningún tipo de corrupción.
Estas acciones se realizan tanto en las cabinas que almacenan los discos de los Servidores Cloud, como en las cabinas independientes que almacenan los backups o los snapshots.
Snapshots y Clonado instantáneos
Para realizar un Snapshot de un servidor en un RAID local, tendremos que copiar todos los datos a un almacenamiento externo, desde el cual podamos después descargar estos datos para restaurar ese snapshot en otro servidor. Todas esas transmisiones de datos, especialmente con volúmenes de cierto tamaño, pueden conllevar esperas bastante largas cada vez que realizamos operaciones de este tipo.
En Clouding, al disponer de un almacenamiento centralizado, no necesitamos copiar datos. Simplemente indicamos a nuestro sistema de almacenamiento que cree una instancia nueva de un disco ya existente. El sistema de almacenamiento distribuido es capaz de realizar esta acción de forma totalmente transparente y sin ninguna espera para el usuario.
Por lo tanto, en Clouding es posible crear un servidor desde un snapshot o clonar un servidor en segundos, ya que no tenemos que realizar copias de grandes volúmenes de datos.
Backups independientes
En un sistema de RAID local, para realizar un backup es necesario que el hypervisor -o los Servidores Cloud- envíen el Backup al destino. Eso puede provocar problemas de rendimiento o de configuración.
Por el contrario, en Clouding podemos leer directamente del sistema de almacenamiento distribuido para realizar los backups, asegurándonos así que no afecta al rendimiento de los hypervisores, ya que leemos de cientos de discos.
Por otro lado, el sistema de backups es totalmente independiente de los hypervisores o los servidores cloud, de forma que siempre se realiza sea cual sea el estado de los mismos.
Desventajas
Costes
Una desventaja de este sistema es el coste, ya que debemos disponer de 3 veces el almacenamiento contratado por nuestros clientes. Esto sumado a solo utilizar discos de estado sólido de grado Datacenter aumenta de forma importante los costes.
Las cabinas de almacenamiento son equipos de prestaciones muy altas, con procesadores con gran número de cores y frecuencias muy altas, así como gran cantidad de RAM para realizar caché.
También es necesario disponer de una red de alto rendimiento y baja latencia, para asegurar que el impacto de este sistema en el rendimiento es mínimo. Por eso en Clouding utilizamos switches 40G CISCO con latencias de pocos microsegundos por salto.
Rendimiento
Evidentemente toda la capa de abstracción y la separación de los nodos de proceso de los de almacenamiento afecta al rendimiento, aunque ligeramente.
El equipo de Clouding ha trabajado y sigue trabajando continuamente para reducir al máximo estas diferencias de rendimiento y en la actualidad conseguimos tiempos de acceso y tasas de transferencia suficientes para aplicaciones de acceso a disco intensivo.
Las tasas de transferencia son muy similares a un disco de estado sólido local y las tasas de tiempos de acceso se mantienen por debajo de 1 milisegundo, con un tiempo de acesso de habitualmente 500 a 700 microsegundos.