Comprender los modelos de almacenamiento en la nube

¿Quién hubiera pensado que almacenar bits podría volverse tan increíblemente complicado? El almacenamiento siempre ha contenido una plétora de protocolos, desde Fibre Channel hasta iSCSI y SMB en todas sus variaciones, pero la llegada de flash y el crecimiento continuo de la virtualización han convertido un tema ya denso en una jungla enmarañada de acrónimos, protocolos y abstracciones.

La virtualización del centro de datos también ha provocado una ola de virtualización en el almacenamiento, alejando gradualmente el almacenamiento de los protocolos físicos y hacia modelos de almacenamiento lógicos y abstractos como el almacenamiento de instancias y el almacenamiento de volumen. Al proporcionar abstracciones, el centro de datos ha desacoplado constantemente las máquinas virtuales de los protocolos de almacenamiento.

El auge de los centros de datos en la nube también ha dado lugar a una nueva clase de almacenamiento llamada almacenamiento de objetos, que sacrifica la fuerte coherencia de los protocolos de almacenamiento tradicionales para proporcionar espacios de nombres únicos a escala global.

En este artículo, proporcionaré algo de claridad colocando el almacenamiento de instancia, volumen y objeto en la evolución del centro de datos, y mostraré cómo estas nuevas abstracciones encajan en la parte superior o junto a los protocolos de almacenamiento existentes.

La historia del almacenamiento en la nube es en muchos sentidos una historia de virtualización. Comenzaré con entornos físicos, pasaré a la virtualización, donde los modelos virtuales y físicos comienzan a divergir, y terminaré con la nube, donde los modelos virtuales abstraen casi por completo lo físico.

Almacenamiento físico

En la raíz de todo el almacenamiento hay un conjunto de protocolos de almacenamiento físico, por lo que comenzaré con un resumen rápido del almacenamiento físico. Actualmente se utilizan tres clases principales de modelos de almacenamiento físico: almacenamiento de conexión directa (DAS), red de área de almacenamiento (SAN) y almacenamiento conectado a la red (NAS).

DAS.  El almacenamiento adjunto directo es el modelo de almacenamiento más simple. Todos estamos familiarizados con DAS; este es el modelo utilizado por la mayoría de las computadoras portátiles, teléfonos y computadoras de escritorio. La unidad fundamental en DAS es la propia computadora; el almacenamiento de un servidor no es separable del servidor en sí. En el caso de un teléfono, es físicamente imposible eliminar el almacenamiento de la computadora, pero incluso en el caso de los servidores, donde teóricamente es posible extraer unidades de disco, una vez que una unidad se separa del servidor, generalmente se borra antes reutilizar. SCSI y SATA son ejemplos de protocolos DAS.

SAN.  Finalmente, la industria del almacenamiento reconoció la utilidad de separar el almacenamiento de la informática. En lugar de adjuntar discos a cada computadora individual, colocamos todos los discos en un solo grupo de servidores y accedemos al disco a través de la red. Esto simplifica las tareas de administración del almacenamiento, como la copia de seguridad y la reparación de fallas. Esta división de almacenamiento y computación a menudo se denomina almacenamiento compartido , ya que varias computadoras usarán un solo grupo de almacenamiento.

Fue más sencillo comunicarse entre el cliente y el servidor a través de la red utilizando los mismos protocolos de bloque (o muy similares) que se utilizaron para comunicarse con unidades de disco conectadas localmente. El almacenamiento expuesto de esta manera se denomina red de área de almacenamiento. Fibre Channel e iSCSI son ejemplos de protocolos SAN.

En una SAN, un administrador agrupará un conjunto de discos (o una parte de un conjunto de discos) en un LUN (unidad lógica), que luego se comporta como una única unidad de disco para las computadoras externas. El LUN es la unidad fundamental que se utiliza para administrar el almacenamiento SAN.

NAS.  Si bien las SAN nos permiten mover LUN entre una computadora y otra, los protocolos de bloque que utilizan no fueron diseñados para compartir datos de forma simultánea en el mismo LUN entre computadoras. Para permitir este tipo de intercambio, necesitamos un nuevo tipo de almacenamiento creado para el acceso concurrente. En este nuevo tipo de almacenamiento, nos comunicamos con el almacenamiento mediante protocolos de sistema de archivos, que se parecen mucho a los sistemas de archivos que se ejecutan en las computadoras locales. Este tipo de almacenamiento se conoce como almacenamiento conectado a la red. NFS y SMB son ejemplos de protocolos NAS.

La abstracción del sistema de archivos permite que varios servidores accedan a los mismos datos al mismo tiempo. Varios servidores pueden leer el mismo archivo al mismo tiempo y varios servidores pueden colocar nuevos archivos en el sistema de archivos al mismo tiempo. Por lo tanto, NAS es un modelo muy conveniente para compartir datos de usuarios o aplicaciones.

El almacenamiento NAS permite a los administradores asignar partes del almacenamiento en sistemas de archivos individuales. Cada sistema de archivos es un espacio de nombres único y el sistema de archivos es la unidad principal que se utiliza para administrar el NAS.

Almacenamiento virtual

La virtualización cambió el panorama del centro de datos moderno para el almacenamiento, al igual que lo hizo para la informática. Así como las máquinas físicas se abstrajeron en máquinas virtuales, el almacenamiento físico se abstrajo en discos virtuales.

En la virtualización, el hipervisor proporciona un entorno de hardware emulado para cada máquina virtual, incluida la computadora, la memoria y el almacenamiento. VMware, el hipervisor moderno inicial, optó por emular las unidades de disco físicas locales como una forma de proporcionar almacenamiento para cada VM. Dicho de otra manera, VMware eligió el modelo de unidad de disco local (DAS) como la forma de exponer el almacenamiento a las máquinas virtuales.

Así como la unidad fundamental de almacenamiento en DAS es la máquina física, la unidad fundamental en el almacenamiento en disco virtual es la VM. Los discos virtuales no se exponen como objetos independientes, sino como parte de una máquina virtual en particular, exactamente como los discos locales son conceptualmente parte de una computadora física. Al igual que con DAS, un disco virtual vive y muere con la propia VM; Si se elimina la VM, también se eliminará el disco virtual.

La mayoría de las plataformas de virtualización convencionales utilizan un modelo de almacenamiento en disco virtual. Por ejemplo, el almacenamiento en los entornos VMware vSphere, Microsoft Hyper-V, Red Hat Enterprise Virtualization y Xen se administran y se adjuntan de manera similar.

Implementando discos virtuales

Debido a que VMware quería continuar brindando los beneficios del almacenamiento compartido a las máquinas virtuales, no podía confiar en un protocolo DAS para implementar discos virtuales. La siguiente opción obvia sería utilizar SAN, ya que un SAN LUN se parece mucho a una unidad de disco local.

Sin embargo, los LUN físicos tienen limitaciones que dificultan el ajuste de los discos virtuales. Los entornos virtualizados consolidan una cantidad de equipos lógicos en un solo servidor físico, lo que significa que la cantidad de discos virtuales en un host determinado será mucho mayor que la cantidad de LUN físicos para un host en un entorno físico. La cantidad máxima de LUN que se podían conectar a un servidor físico determinado era demasiado baja para admitir la cantidad necesaria de discos virtuales.

Quizás aún más importante, los discos virtuales, al igual que las CPU virtuales, deben ser objetos lógicos que se puedan crear, destruir y mover mediante programación, y estas no son operaciones para las que se diseñó el almacenamiento SAN. Por ejemplo, VMware necesitaba mover máquinas virtuales dinámicamente entre hosts físicos, lo que requería acceso al almacenamiento compartido durante la migración.

Por estas razones, VMware eligió implementar discos virtuales como archivos en un sistema de archivos (NFS) o en un sistema de archivos distribuido (VMFS) en SAN, en lugar de LUN sin procesar.

De protocolos de almacenamiento a modelos de almacenamiento

El hecho de que VMware eligiera implementar discos virtuales, un modelo de almacenamiento en bloque de estilo DAS, sobre NAS o SAN, ilustra una de las características interesantes del almacenamiento moderno del centro de datos. Debido a que el IO de una máquina virtual se transfiere al software en el hipervisor, en lugar de al hardware en un bus de dispositivo, el protocolo utilizado por la VM para comunicarse con el hipervisor no necesita coincidir con el protocolo que utiliza el hipervisor para comunicarse con el almacenamiento en sí.

Esto conduce a una separación entre el modelo de almacenamiento que se expone a la VM y el administrador, y el protocolo de almacenamiento que utiliza el hipervisor para almacenar realmente los datos. En el caso de los discos virtuales, VMware los diseñó de acuerdo con un modelo de almacenamiento DAS y luego utilizó un protocolo de almacenamiento NAS para implementarlos.

Ésta es una capa poderosa de indirecta; nos da la flexibilidad de mezclar y combinar modelos de almacenamiento y protocolos de almacenamiento, e incluso cambiar dinámicamente el protocolo de almacenamiento sin afectar a las máquinas virtuales. Por ejemplo, los discos virtuales se implementan mediante archivos en NFS, archivos en VMFS almacenados en LUN de canal de fibra o incluso (en VVols o Virtual Volumes) directamente como iSCSI LUN. La elección de la implementación es completamente transparente para la aplicación, porque eventualmente todos estos protocolos tendrán el mismo aspecto para la VM y el administrador; se verán como unidades de disco físicas locales conectadas a máquinas virtuales.

Por tanto, el desarrollador de aplicaciones en la mayoría de las infraestructuras de nube pública no puede saber qué protocolo de almacenamiento está en uso; de hecho, el protocolo puede incluso cambiar de forma dinámica. No sabemos qué protocolo de almacenamiento utiliza Amazon para Elastic Block Storage, ni es importante que lo sepamos.

Debido a la separación entre el modelo de almacenamiento y el protocolo de almacenamiento, el protocolo de almacenamiento se convierte en un problema de infraestructura, principalmente importante para el costo y el rendimiento, en lugar de una decisión de aplicación que dicta la funcionalidad.

Almacenamiento en la nube

El panorama del centro de datos está cambiando nuevamente a medida que los entornos virtualizados se transforman en entornos de nube. Los entornos de nube adoptan el modelo de disco virtual pionero en la virtualización y proporcionan modelos adicionales para permitir una pila de almacenamiento completamente virtualizada. Los entornos de nube intentan virtualizar toda la pila de almacenamiento para que puedan proporcionar autoservicio y una separación limpia entre la infraestructura y la aplicación.

Los entornos en la nube se presentan de muchas formas. Las empresas pueden implementarlos como nubes privadas utilizando entornos como OpenStack, CloudStack y la suite VMware vRealize. También pueden ser implementados por proveedores de servicios como nubes públicas como Amazon Web Services, Microsoft Azure y Rackspace.

Curiosamente, los modelos de almacenamiento utilizados en entornos de nube reflejan los que se utilizan en entornos físicos. Sin embargo, al igual que con los discos virtuales, son modelos de almacenamiento extraídos de los múltiples protocolos de almacenamiento que se pueden usar para implementarlos.

Almacenamiento de instancias: discos virtuales en la nube

El modelo de almacenamiento en disco virtual es el modelo principal (o único) para el almacenamiento en entornos virtualizados convencionales. En entornos de nube, sin embargo, este modelo es uno de tres. Por lo tanto, el modelo recibe un nombre específico en entornos de nube: almacenamiento de instancia, lo que significa almacenamiento consumido como discos virtuales convencionales.

Es importante tener en cuenta que el almacenamiento de instancias es un modelo de almacenamiento, no un protocolo de almacenamiento, y se puede implementar de varias formas. Por ejemplo, el almacenamiento de instancias a veces se implementa mediante DAS en los propios nodos de cómputo. Implementado de esta manera, a menudo se le llama almacenamiento efímero porque el almacenamiento generalmente no es muy confiable.

El almacenamiento de instancia también se puede implementar como almacenamiento confiable usando NAS o almacenamiento de volumen, un segundo modelo de almacenamiento que se describe a continuación. Por ejemplo, OpenStack permite a los usuarios implementar el almacenamiento de instancias como almacenamiento efímero en los hosts, como archivos en los puntos de montaje de NFS o como volúmenes de Cinder usando boot-from-volume.

Almacenamiento de volumen: SAN sin el físico

El almacenamiento de instancias, sin embargo, tiene sus limitaciones. Los desarrolladores de aplicaciones nativas de la nube a menudo diferencian explícitamente los datos de configuración, como los datos del sistema operativo y de las aplicaciones, de los datos del usuario, como las tablas de bases de datos o los archivos de datos. Al dividir los dos, los desarrolladores pueden hacer que la configuración sea transitoria y reconstruible mientras mantienen una gran confiabilidad para los datos del usuario.

Esta distinción, a su vez, conduce a otro tipo de almacenamiento: almacenamiento de volumen, un híbrido de almacenamiento de instancia y SAN. Un volumen es la unidad principal de almacenamiento de volumen en lugar de una máquina virtual. Un volumen puede separarse de una VM y adjuntarse a otra. Sin embargo, como un disco virtual, un volumen se parece más a un archivo que a un LUN en escala y abstracción. A diferencia del almacenamiento de instancias, generalmente se supone que el almacenamiento de volumen es altamente confiable y se usa a menudo para datos de usuario.

Cinder de OpenStack es un ejemplo de un almacén de volumen, al igual que la abstracción de volumen independiente de Docker. Tenga en cuenta nuevamente que el almacenamiento por volumen es un modelo de almacenamiento, no un protocolo de almacenamiento. El almacenamiento de volumen se puede implementar sobre protocolos de archivo como NFS o protocolos de bloque como iSCSI de forma transparente para la aplicación.

Almacenamiento de objetos: NAS a escala web

Las aplicaciones nativas de la nube también necesitan un hogar para los datos compartidos entre máquinas virtuales, pero a menudo necesitan espacios de nombres que puedan escalar a múltiples centros de datos en regiones geográficas. El almacenamiento de objetos proporciona exactamente este tipo de almacenamiento. Por ejemplo, el S3 de Amazon proporciona un único espacio de nombres lógico en toda una región y, posiblemente, en todo el mundo. Para alcanzar esta escala, S3 necesitaba sacrificar la sólida consistencia y las actualizaciones detalladas del NAS convencional.

El almacenamiento de objetos proporciona una abstracción similar a un archivo llamada objeto, pero proporciona consistencia eventual. Esto significa que, si bien todos los clientes eventualmente obtendrán las mismas respuestas a sus solicitudes, pueden recibir temporalmente diferentes respuestas. Esta consistencia es similar a la consistencia proporcionada por Dropbox entre dos computadoras; los clientes pueden perder temporalmente la sincronización, pero eventualmente todo convergerá.

Los almacenes de objetos tradicionales también proporcionan un conjunto simplificado de operaciones de datos ajustadas para su uso en conexiones WAN de alta latencia: enumerar los objetos en un "depósito", leer un objeto en su totalidad y reemplazar los datos en un objeto con datos completamente nuevos. Este modelo proporciona un conjunto de operaciones más básico que el NAS, que permite a las aplicaciones leer y escribir pequeños bloques dentro de un archivo, truncar archivos a nuevos tamaños, mover archivos entre directorios, etc.