Red Hat OpenShift Data Foundation (ODF) para cargas de trabajo de máquinas virtuales

Implementa la base de datos Red Hat® OpenShift® Data Foundation (ODF) para cargas de trabajo de VM: configura los grupos de almacenamiento de Ceph, establece clases de almacenamiento, activa la migración en vivo e implementa soluciones de copia de seguridad.

Red Hat® OpenShift® Data Foundation (ODF) es la solución de almacenamiento validada y respaldada para la virtualización de Red Hat OpenShift en IBM Cloud® Red Hat OpenShift Kubernetes Service. Se recomienda utilizar ODF como sistema de almacenamiento para la virtualización de Red Hat OpenShift.

Principales ventajas

  • Alto rendimiento para máquinas virtuales: el almacenamiento en bloques optimizado está diseñado para los discos de arranque y de datos de las cargas de trabajo de máquinas virtuales, lo que reduce la latencia y ofrece un elevado número de IOPS.
  • Diseñado para la virtualización de Red Hat OpenShift: integración nativa con Red Hat OpenShift y KubeVirt que admite instantáneas, clonación, migración en vivo, copia de seguridad y restauración, y funciona a la perfección con el Containerized Data Importer (CDI).
  • Alta resiliencia y disponibilidad: almacenamiento distribuido con replicación de datos entre los nodos de trabajo, recuperación automática ante fallos de disco o de nodo, y ausencia de un único punto de fallo en el almacenamiento.
  • Optimizado para Red Hat OpenShift Kubernetes Service bare metal infrastructure: Agrega discos NVMe y SSD locales en un grupo de almacenamiento compartido, lo que elimina la dependencia del almacenamiento de red externo.
  • Con soporte técnico completo y gestión del ciclo de vida: instalación y actualización a través de operadores de Red Hat OpenShift con supervisión y alertas integradas. Validado y respaldado conjuntamente por IBM® y Red Hat®.
  • Almacenamiento unificado para servidores virtuales y contenedores: ODF proporciona almacenamiento coherente en todas estas cargas de trabajo en una única plataforma.

¿Qué es el ODF?

ODF es una solución de almacenamiento definida por software creada para Red Hat OpenShift. ODF se basa en Ceph® y está totalmente integrado y gestionado a lo largo de su ciclo de vida a través de los operadores de Red Hat OpenShift. Ceph es un sistema de almacenamiento distribuido de código abierto que convierte servidores estándar en un clúster de almacenamiento altamente escalable y tolerante a fallos.

ODF ofrece cuatro tipos de almacenamiento desde la misma plataforma:

  • Almacenamiento en bloques (RBD): para discos de cargas de trabajo de máquinas virtuales
  • Almacenamiento de archivos ( CephFS ) – para sistemas de archivos compartidos
  • Almacenamiento de objetos (RGW y S3-compatible ): para cargas de trabajo de objetos
  • NFS ( CephFS-backed ) – Exportaciones de NFS para clientes tradicionales o externos

En ODF, NFS está respaldado por CephFS y expuesto a través de una pasarela Ceph NFS Ganesha. La pasarela se gestiona a través de un recurso personalizado CephNFS en Rook. No se trata de un backend de almacenamiento independiente. Proporciona acceso a CephFS a través del protocolo NFS. El principal caso de uso consiste en proporcionar acceso NFS a clientes externos al clúster de Red Hat OpenShift, o a cargas de trabajo que requieren NFS. NFS No se utiliza para los discos de carga de trabajo de las máquinas virtuales, ya que los servidores virtuales utilizan almacenamiento en bloques (RBD).

En IBM, Red Hat OpenShift y Kubernetes Service, ODF suele utilizar discos locales en los nodos de trabajo para crear un clúster de almacenamiento de alto rendimiento y resistente dentro de Red Hat OpenShift.

Comprender la protección de datos

Antes de planificar e implementar su clúster de ODF, es importante que comprenda cómo protege ODF sus datos. La estrategia de protección de datos que elija afecta a la capacidad de almacenamiento, las características de rendimiento, la tolerancia a fallos y el número mínimo de nodos necesarios.

Un único clúster ODF puede ejecutar varios pools Ceph simultáneamente, cada uno con una política de protección de datos diferente. Cada pool se expone a las cargas de trabajo a través de su propio StorageClass. Cuando cree una carga de trabajo de máquina virtual, seleccione la dirección StorageClass para cada disco. Por ejemplo, una carga de trabajo de máquina virtual podría utilizar un rep3 StorageClass como disco raíz y un StorageClass diferente, respaldado por un grupo de discos rep2, como disco de datos menos crítico. Este modelo no es una opción de "todo o nada" para todo el grupo.

Para los equipos de VMware, este modelo es similar a las políticas de almacenamiento de vSAN. En vSAN, se asigna una política de almacenamiento (por ejemplo, RAID-1 FTT=1, RAID-5 ) por carga de trabajo de máquina virtual o por VMDK. En ODF, se asigna un StorageClass que mapea a un pool Ceph por PVC. El concepto es el mismo, pero diferentes cargas de trabajo en el mismo clúster pueden tener diferentes niveles de protección.

ODF admite las siguientes estrategias de protección de datos para grupos de bloques Ceph:

Grupos replicados (por defecto)

La configuración predeterminada de ODF utiliza la replicación de tres vías. Cada dato se almacena en tres copias repartidas entre distintos nodos, lo que ofrece protección frente a hasta dos fallos simultáneos de disco o de nodo.

  • Ventajas: arquitectura sencilla, lecturas rápidas, recuperación rápida y latencia predecible.
  • Aumento del uso: 3x de almacenamiento bruto por cada byte de datos utilizables.

¿Qué ocurre cuando se pierden copias ( rep3 )?:

rep3 progresión de los fallos y comportamiento de E/S
Copias que quedan Estado de Ceph Comportamiento de E/S Riesgo
3 de 3 active+clean Funcionamiento normal. Las lecturas se realizan desde cualquier copia. Ninguna.
2 de 3 active+degraded La E/S continúa normalmente. Ceph comienza inmediatamente a replicar de nuevo la copia que falta en otro OSD para restablecer las tres copias. Mínimo. Los datos siguen siendo duraderos en 2 OSD independientes. La recuperación se produce automáticamente.
1 de 3 active+degraded o peered (según min_size) Con el valor predeterminado de ODF min_size=2, Ceph bloquea todas las operaciones de E/S hacia los grupos de colocación afectados cuando solo queda una copia. Evita escrituras adicionales que podrían provocar inconsistencias. Los servidores virtuales que contienen datos en esos grupos de páginas (PG) sufren bloqueos de E/S. Alto. Solo queda una copia de los datos en un único OSD restante. Si además falla antes de que finalice la recuperación, los datos se perderán de forma definitiva.
0 de 3 incomplete La E/S está bloqueada. No existen copias. Pérdida de datos. Los datos son irrecuperables de forma permanente.

El parámetro min_size controla el número mínimo de copias que deben estar disponibles antes de que Ceph permita la E/S. ODF establece por defecto un conjunto de grupos de min_size=2 rep3, y esta configuración se aplica mediante requireSafeReplicaSize: true, lo que significa que, cuando hay 2 o 3 copias disponibles, las operaciones de lectura y escritura se realizan con normalidad. Cuando solo hay una copia disponible, Ceph bloquea las operaciones de E/S para evitar una mayor inconsistencia en los datos.

Este comportamiento es un mecanismo de seguridad deliberado que da prioridad a la integridad de los datos frente a la disponibilidad.

El periodo comprendido entre la pérdida de la segunda copia y la finalización de la repliación es el más peligroso. Durante este tiempo, un tercer fallo provoca la pérdida permanente de datos. Esta es la razón por la que la planificación de la capacidad es importante, ya que la velocidad de repluración de Ceph depende del ancho de banda disponible del clúster y del espacio libre. Un clúster sobrecargado o casi lleno tarda más en volver a replicarse, lo que prolonga el tiempo de vulnerabilidad.

En el caso de los grupos de rep2, la progresión es más agresiva. Si se pierde una copia, sólo queda una. Con ( min_size=2 por defecto), la E/S se bloquea inmediatamente en los PG afectados hasta que el OSD que falta vuelva a estar disponible o se replique una nueva copia. Con min_size=1, la E/S continúa en la única copia restante, pero un segundo fallo provoca la pérdida permanente de los datos.

El complemento ODF de Red Hat OpenShift Kubernetes Service crea automáticamente únicamente grupos de rep3 con ocs-storagecluster-cephblockpool. Rep2 El complemento no crea grupos. Debes crear manualmente un CephBlockPool personalizado con replicated.size: 2 y el correspondiente StorageClass. Para obtener más información, consulta Creación de un entorno de StorageClass personalizado para la virtualización.

Dado que rep2 ofrece menos tolerancia a fallos que rep3, evalúe si el ahorro en almacenamiento justifica el mayor riesgo para su carga de trabajo.

IBM Recomienda la replicación de tres vías para todas las cargas de trabajo de virtualización en producción, con el fin de garantizar la disponibilidad y la durabilidad de los datos.

Grupos codificados por borrado

Para entornos en los que la eficiencia de la capacidad de almacenamiento es una prioridad, ODF también admite pools con código de borrado (EC). EC divide los datos en bloques de datos k y bloques de paridad m, lo que reduce el uso de almacenamiento bruto en comparación con la replicación, al tiempo que sigue ofreciendo tolerancia a fallos.

Estado de soporte: La codificación de borrado para RBD y CephFS en ODF es una función en fase de vista previa para desarrolladores, introducida por primera vez en ODF 4.20. Las funciones de la versión preliminar para desarrolladores no están compatibles con el uso en producción. Además, no están incluidos en la gestión de incidencias del portal de clientes de Red Hat. Antes de ODF 4.20, solo RGW (almacenamiento de objetos) EC estaba disponible como versión preliminar para desarrolladores (de ODF 4.16 ). Aunque el motor de almacenamiento Ceph subyacente admite sobrescrituras EC para RBD desde la versión Luminous (2017), el operador ODF y su modelo de despliegue gestionado aún no certifican pools EC para cargas de trabajo de almacenamiento de bloques de producción. Prevé utilizar grupos replicados ( rep2 o rep3 ) para todo el almacenamiento de producción VM, y evalúa los grupos EC únicamente para entornos que no sean de producción, en los que las limitaciones de la versión preliminar para desarrolladores sean aceptables.

La siguiente tabla compara todos los tipos de grupos disponibles a modo de referencia.

Tipos de pools y sus características
Tipo de agrupación Configuración Aumento del uso de Raw Tolerancia a errores Mínimo de host necesarios
rep3 (por defecto) 3 ejemplares 3.0x Sobrevive a 2 fallos 3
rep2 2 ejemplares 2.0x Sobrevive a 1 fallo 2
rep1 (no resistente) 1 copia 1.0x Ninguna. Pérdida de datos ante cualquier fallo 3
ec-2-1 k=2, m=1 1.5x Sobrevive a 1 fallo 3
ec-3-1 k=3, m=1 1.33x Sobrevive a 1 fallo 4
ec-2-2 k=2, m=2 2.0x Sobrevive a 2 fallos 4
ec-4-2 k=4, m=2 1.5x Sobrevive a 2 fallos 6

Las siguientes listas recogen las consideraciones clave sobre la codificación de borrado.

  • Los grupos EC tienen una latencia de escritura mayor que los grupos replicados debido al cálculo de la paridad y a la necesidad de escribir más fragmentos por operación.
  • Los pools EC ofrecen un rendimiento de lectura secuencial competitivo, pero pueden mostrar IOPS de escritura aleatoria reducidas.
  • El número de dominios de fallo debe ser, como mínimo, k+m. En un clúster de 3 nodos, solo son posibles rep2, rep3 y ec-2-1.
  • Para un clúster de 6 nodos, están disponibles todos los tipos de grupo enumerados anteriormente.

Grupo de réplicas únicas (no resiliente, solo para desarrollo y pruebas)

A partir de la versión del complemento ODF 4.14, Red Hat OpenShift Kubernetes Service admite un grupo de réplicas único ( rep1 ) a través del parámetro addSingleReplicaPool. Este parámetro crea un grupo de bloques no resistente de Ceph sin replicación de datos, en el que cada bloque de datos se almacena una sola vez.

Para habilitar el grupo de réplicas único al implementar ODF, utiliza el siguiente comando

ibmcloud oc cluster addon enable openshift-data-foundation -c <cluster_name> \
  --version <version> \
  --param "addSingleReplicaPool=true"

Este comando crea un StorageClass: adicional

  • ocs-storagecluster-ceph-non-resilient-rbd: Almacenamiento de bloques de réplica única con vinculación de volúmenes WaitForFirstConsumer.

Con él se sigue creando el grupo estándar replica-3 (ocs-storagecluster-cephblockpool). La reserva no resistente es una opción independiente y optativa.

Un único grupo de réplicas tiene los siguientes casos de uso.

  • Entornos de desarrollo y pruebas: aquellos en los que la durabilidad de los datos no es fundamental y se da prioridad al ahorro en los costes de almacenamiento.
  • Aplicaciones con replicación integrada: estas aplicaciones gestionan su propia redundancia de datos en la capa de aplicación. Estas aplicaciones mantienen múltiples copias en los distintos nodos, lo que significa que la replicación a nivel de almacenamiento es redundante.

El grupo de réplicas único proporciona tolerancia cero a los fallos. El fallo de un único OSD o nodo provoca la pérdida permanente e irrecuperable de todos los datos de ese OSD. No se dispone de una segunda copia para la recuperación. La documentación de IBM Cloud advierte explícitamente de que esta opción aumenta el riesgo de pérdida de datos, corrupción de datos y posible inestabilidad del sistema. Para más información, consulte la documentación de Ceph.

Limitaciones:

  • Solo almacenamiento en bloques: el almacenamiento de archivos no es compatible con una única réplica.
  • Requiere discos adicionales: al menos un disco NVMe utilizable adicional por nodo, además de los que utiliza el grupo replica-3. Sin este disco adicional, los OSD de replica-1 no se inician y el clúster de almacenamiento permanece en estado de progreso.
  • Un pool por dominio de fallo: ODF crea un CephBlockPool no resistente por dominio de fallo, con volúmenes que se vinculan mediante el uso de WaitForFirstConsumer para validar la localidad de los datos.
  • No recomendado para discos raíz de cargas de trabajo de máquinas virtuales: Si el OSD que aloja un disco raíz falla, la carga de trabajo de la máquina virtual se pierde permanentemente. Utilice el pool no resistente sólo para discos de datos desechables en cargas de trabajo de máquinas virtuales dev o de prueba.

Para las cargas de trabajo de virtualización en producción, utilice siempre grupos de replica-3 (o, como mínimo, replica-2 ).

VMware vSAN comparación de migraciones

Para los equipos que están migrando desde VMware vSAN™, estos tipos de grupos de Ceph se corresponden con las políticas de almacenamiento habituales de vSAN:

Tipos de pool Ceph asignados a equivalentes de VMware vSAN
Grupo Ceph Equivalente más cercano vSAN Aumentar el uso Tolerancia a errores Notas
rep2 RAID-1, FTT=1 2x 1 anomalía Equivalente directo para guardar dos copias.
rep3 RAID-1, FTT=2 3x 2 fallos Equivalente directo para ambos: guardar 3 copias.
ec-2-1 Sin equivalente directo 1.5x 1 anomalía Monoparidad como RAID-5, pero utiliza una disposición 2+1. Mayor uso que vSAN RAID-5.
ec-3-1 RAID-5, FTT=1 (3+1) 1.33x 1 anomalía Equivalente directo para ambos: utilizar 3 bloques de datos + 1 de paridad.
ec-2-2 Sin equivalente directo 2x 2 fallos Doble paridad como RAID-6, pero utiliza una disposición 2+2. Más uso que vSAN RAID-6.
ec-4-2 RAID-6, FTT=2 (4+2) 1.5x 2 fallos Equivalente directo para ambos: 4 bloques de datos + 2 bloques de paridad.

Principales diferencias con vSAN:

  • Mínimos de host más pequeños: Ceph separa el quórum del clúster de la ubicación de los datos. Un grupo de rep3 solo necesita tres hosts, ya que cada host almacena una copia completa. vSAN RAID-1 FTT=2 necesita cinco hosts.
  • rep2 Se ajusta a la norma vSAN RAID-1: La mayoría de las implementaciones de vSAN utilizan FTT=1, que almacena dos copias. El documento rep2 de Ceph es el equivalente directo.
  • ec-3-1 Coincide con vSAN RAID-5: Ambos utilizan una disposición 3+1 y logran un uso de 1.33x, la opción más eficiente en cuanto a espacio para la tolerancia a un único fallo.
  • ec-4-2 Coincide con vSAN RAID-6: Ambos utilizan una configuración 4+2 y consiguen un uso de 1.5x con tolerancia a dos fallos.
  • ec-2-1 y ec-2-2 no tienen un equivalente directo en vSAN: configuraciones de Ceph EC más pequeñas con menos fragmentos de datos, lo que se traduce en un mayor uso por byte, pero requiere menos hosts. Sacrifican la eficiencia de almacenamiento a cambio de unos requisitos de número de hosts más reducidos.

Planificación de su cluster ODF

Ahora que conoce las opciones de protección de datos, ya puede planificar el dimensionamiento del clúster y la topología para su implementación de ODF.

Capacidad de planificación

Al planificar su clúster ODF, tenga en cuenta el uso de almacenamiento bruto de la política de protección de datos que haya elegido. La capacidad utilizable es inferior a la capacidad NVMe bruta total.

La fórmula de la capacidad útil es Usable capacity = Total raw NVMe capacity / Replication or EC overhead factor.

Consulte el siguiente ejemplo de cálculos para un clúster de 3 nodos con 8 unidades NVMe de 3.2 TB por nodo ( 76.8 TB en bruto en total):

Capacidad utilizable por tipo de protección de datos para un clúster de 3 nodos
Protección de datos Factor de utilización Capacidad útil Eficiencia de almacenamiento
*ep3 (por defecto) 3.0x 25.6 TB 33%
rep2 2.0x 38.4 TB 50 %
ec-2-1 1.5x 51.2 TB 67 %
rep1 (no resistente) 1.0x 76.8 TB 100 %

Estimación de la capacidad de carga de trabajo de la máquina virtual: Una carga de trabajo de máquina virtual típica con un disco raíz de 30 GB y un disco de datos de 100 GB utiliza 130 GB de almacenamiento utilizable. Con rep3, esa carga de trabajo de máquina virtual requiere 390 GB de almacenamiento bruto. En el clúster de 3 nodos anterior, se podrían aprovisionar aproximadamente 196 cargas de trabajo de máquinas virtuales de este tamaño. En la práctica, mantenga el uso de Ceph por debajo del 75% para mantener el rendimiento y apoyar las operaciones de recuperación.

El rendimiento de Ceph se degrada a medida que aumenta el uso del clúster. ODF activa la CephOSDNearFull alerta Prometheus cuando cualquier OSD supera el 75 % de uso. Al alcanzar el 85 %, Ceph establece el indicador nativo nearfull OSD (mon_osd_nearfull_ratio) y ODF activa la alerta CephOSDCriticallyFull. Al alcanzar el 90 %, Ceph detiene las operaciones de rellenado y recuperación en el OSD afectado (mon_osd_backfillfull_ratio). Al alcanzar el 95 %, Ceph marca el OSD full (mon_osd_full_ratio), bloquea todas las escrituras y emite HEALTH_ERR. Planifique su capacidad de modo que el uso se mantenga por debajo del 70 % durante el funcionamiento normal, dejando margen para la recuperación de datos y el reequilibrio durante el mantenimiento de los nodos o en caso de fallos.

Para comprobar el uso actual del clúster, ejecuta el siguiente comando :

oc exec -n openshift-storage $(oc get pods -n openshift-storage -l app=rook-ceph-tools -o name) -- ceph df

Número de nodos de trabajo y topología

La topología del dominio de fallos que utiliza el complemento ODF de IBM Cloud depende de la configuración de su clúster:

  • Clústeres multizona (3 zonas de disponibilidad): El dominio de fallo está configurado en zone. Los nodos de trabajo se distribuyen entre las distintas zonas, y el ODF debe crecer en múltiplos de 3 para mantener el equilibrio entre las zonas. Para obtener una disponibilidad, un rendimiento y una seguridad de los datos óptimos, utilice 3, 6 o 9 nodos en el clúster de almacenamiento ODF; cada zona recibirá el mismo número de nodos.
  • Clústeres de una sola zona o clústeres con menos de tres zonas de disponibilidad: el escalado flexible se activa automáticamente y el dominio de fallo se establece en host. Puedes empezar con 3 nodos e ir añadiendo nodos de uno en uno.

Todos los nodos que participan en el clúster de almacenamiento ODF deben ser bare metal. No se admite la mezcla de nodos virtualizados y bare-metal dentro del mismo clúster ODF.

En el caso de los clústeres multizona: añadir nodos en cantidades que no sean múltiplos de 3 provoca un desequilibrio entre las zonas. Con 4 nodos, una zona recibe 2 nodos, mientras que las demás reciben 1 cada una, lo que da lugar a una distribución desigual del peso de los OSD, una ubicación de datos subóptima, un uso desigual y OSD parcialmente inactivos.

En el caso de los clústeres multizona, amplíe siempre en múltiplos de 3 para mantener una topología de zonas equilibrada.

Por qué 6 nodos son el mínimo práctico para la producción

Aunque ODF requiere un mínimo de tres nodos, un clúster de tres nodos no dispone de margen para el mantenimiento programado. Analicemos qué ocurre con un servicio rep3 en tres nodos cuando uno de ellos se aísla para realizar una actualización de firmware o de Red Hat OpenShift:

  • 1 nodo está en mantenimiento. Sus OSD están inactivos, por lo que Ceph marca esas copias como no disponibles. El clúster entra en y active+degraded comienza a replicarse de nuevo para restaurar tres copias en los dos nodos restantes.
  • Si un segundo nodo falla durante ese periodo de mantenimiento (fallo de disco, pánico del kernel, incidente de alimentación), algunos grupos de ubicación se quedan con una sola copia. Con el valor predeterminado min_size=2, Ceph bloquea la E/S en esos PG. Los servidores virtuales con datos en los grupos de ubicación afectados se cuelgan.
  • Si tanto el nodo de mantenimiento como el nodo averiado permanecen inactivos, cualquier grupo de ubicación que tenga copias en esos dos nodos y un tercer OSD en el mismo nodo tendrá 0 copias, lo que provocará una pérdida permanente de datos.

Para evitar esta pérdida de datos, dimensiona tu clúster ODF de tal forma que, aunque se pierdan dos nodos simultáneamente, sigas disponiendo de suficientes OSD para que todos los datos sigan estando disponibles.

Impacto del mantenimiento planificado más un fallo imprevisto por tamaño del clúster
Nodos Mantenimiento + Fallo Resultado
3 (mínimo) 1 en mantenimiento + 1 avería = 1 restante E/S bloqueada (min_size=2). Riesgo de pérdida de datos.
6 (recomendado) 1 en mantenimiento + 1 avería = 4 restantes Ceph vuelve a replicar en los 4 nodos. La E/S continúa. Sin riesgo de pérdida de datos.
9 1 en mantenimiento + 1 avería = 7 restantes Amplia capacidad para la repliación. Impacto mínimo en el rendimiento.

Para los clústeres de producción que ejecutan rep3, empieza con 6 nodos. Esta configuración proporciona N+2 headroom con capacidad suficiente para un nodo en mantenimiento planificado y un fallo inesperado sin arriesgar la disponibilidad o la pérdida de datos. Utilice un clúster de 3 nodos sólo para desarrollo, pruebas o pruebas de concepto en las que el tiempo de inactividad y la pérdida de datos sean aceptables.

Puede comprobar las asignaciones de topología de nodos en su clúster ejecutando el siguiente comando :

oc get nodes -l node-role.kubernetes.io/worker= \
  -o custom-columns='NAME:.metadata.name,RACK:.metadata.labels.topology\.kubernetes\.io/rack'

Dispone de dos opciones de implementación.

  • Opción A: utilizar todo el grupo de trabajadores

    • Especifique sólo el nombre del pool de trabajadores durante la configuración de ODF.
    • En el caso de los clústeres multizona, compruebe que el grupo contenga 3, 6 o 9 nodos bare metal (múltiplos de 3). Para los clústeres de una sola zona, se requiere un mínimo de 3 nodos.
  • Opción B: seleccionar nodos específicos

    • Si el grupo cuenta con más nodos, o si desea reservar algunos nodos para cargas de trabajo exclusivamente de cálculo, seleccione los nodos que participarán en ODF. Para clústeres multizona, seleccione nodos en múltiplos de 3; para clústeres de una sola zona, es válido cualquier número a partir de 3.

Planes de suscripción ODF

Elige el plan que mejor se adapte a tus necesidades:

  • Essentials

    • Coste reducido
    • Solo para implementación en modo interno
    • No admite la recuperación ante desastres, los clústeres extendidos ni las implementaciones en modo externo
    • Ideales para entornos de pruebas y desarrollo, pruebas de concepto o implementaciones a pequeña escala
  • Avanzado

    • Conjunto completo de funciones que incluye recuperación ante desastres, clústeres extendidos, implementación en modo externo, cifrado granular avanzado y compatibilidad con múltiples clústeres
    • Recomendado para cargas de trabajo de virtualización en producción con máquinas virtuales

Ambos planes incluyen compresión BlueStore en grupos de bloques, aprovisionamiento ligero, instantáneas y clonación. Las diferencias entre los planes se refieren a la recuperación ante desastres, la granularidad del cifrado y la flexibilidad de implementación, más que a las características de eficiencia de almacenamiento.

ODF sólo admite la deduplicación para el almacenamiento de objetos a través de Multicloud Object Gateway (MCG). El almacenamiento en bloque no admite la deduplicación. Esta asistencia se aplica tanto a los planes Essentials como a los Advanced. La deduplicación Ceph ascendente para RBD sigue siendo experimental y no está certificada para su uso en ODF.

Para obtener más información, consulta ODF: Conceptos básicos frente a Avanzado.

Configurar ODF en Red Hat OpenShift Kubernetes Service

Red Hat OpenShift Virtualización en Red Hat OpenShift Kubernetes Service Actualmente, los clústeres de VPC solo admiten nodos de trabajo bare metal. Los nodos trabajadores virtualizados no son compatibles con los clusters de almacenamiento ODF.

Asegúrese de que su clúster de Red Hat OpenShift Kubernetes Service incluya al menos un grupo de trabajadores que utilice servidores bare metal que se ejecuten en Red Hat CoreOS. Red Hat OpenShift. Se requiere la versión 4.17 o superior para la virtualización de Red Hat OpenShift. Entre las opciones compatibles se incluyen bx2d.metal.96x384, cx2d.metal.96x192 y mx2d.metal.96x768.

Implemente el clúster de almacenamiento ODF en estos nodos bare metal para utilizar discos NVMe locales y ofrecer almacenamiento en bloque de alto rendimiento a las máquinas virtuales.

Para obtener instrucciones sobre el despliegue de ODF en un clúster Red Hat OpenShift Kubernetes Service basado en VPC, consulte Implementación de Red Hat OpenShift Data Foundation en clústeres VPC.

Tipo de almacenamiento

  • Seleccione Almacenamiento local.
  • El almacenamiento local utiliza el almacenamiento de instancia NVMe local disponible en los nodos de trabajador bare metal.
  • Las unidades NVMe ofrecen una latencia reducida y un elevado rendimiento en IOPS, requisitos imprescindibles para los discos de las cargas de trabajo de las máquinas virtuales.

Perfil de recursos ODF

ODF proporciona tres perfiles de asignación de recursos que controlan la CPU y la memoria que se reserva para los demonios Ceph.

  • Lean: Asignación mínima de recursos. El perfil Lean es adecuado para entornos con recursos limitados, pruebas, desarrollo y pruebas de concepto. No se recomienda el uso de Lean para cargas de trabajo de virtualización en producción.
  • Equilibrado: El perfil por defecto en Red Hat OpenShift Kubernetes Service. El perfil Equilibrado proporciona un equilibrio entre el consumo de recursos y el rendimiento para cargas de trabajo de uso general.
  • Rendimiento: Asigna más CPU y memoria a los demonios de Ceph, lo que reduce el riesgo de cuellos de botella por parte de los demonios. Ideal para cargas de trabajo con un elevado número de IOPS, un gran número de servidores virtuales y aplicaciones exigentes.

Para implementaciones bare-metal con unidades NVMe locales, utilice el perfil de recursos Performance. Los nodos bare-metal con 8 o más unidades NVMe por nodo generan un elevado número de OSD por host. Con el perfil Balanced, los límites de CPU y memoria del daemon de Ceph suelen alcanzarse antes de que se sature el hardware NVMe subyacente, lo que limita las IOPS y aumenta la latencia. El perfil Performance es el perfil mínimo recomendado para cargas de trabajo de virtualización de Red Hat OpenShift en entornos de producción sobre hardware físico.

Los requisitos de recursos que se muestran en la consola web Red Hat OpenShift durante la instalación de ODF se calculan dinámicamente en función del recuento de OSD del clúster. Por lo tanto, los clústeres con más unidades NVMe requieren proporcionalmente más recursos. Los valores no son fijos. Compruebe siempre los requisitos mostrados en la consola para su configuración de clúster específica.

El perfil se selecciona durante la creación de StorageSystem a través de la pantalla Configure Performance de la consola web Red Hat OpenShift. Los daemons de Ceph con recursos insuficientes pueden convertirse en un cuello de botella oculto, lo que provoca una reducción de las IOPS o una latencia mayor de la que puede ofrecer el hardware de almacenamiento subyacente.

Haga coincidir sus perfiles de servidor bare metal con los requisitos de recursos mostrados para el perfil elegido: IBM Cloud Perfiles de servidor VPC bare metal.

Una ligera sobresuscripción de recursos suele ser aceptable en un servidor bare metal. Sin embargo, nunca asigne recursos significativamente inferiores a los requisitos mínimos indicados, ya que ello reduce el rendimiento y la estabilidad de ODF.

Número de discos OSD por nodo

  • Determina el número de unidades NVMe locales disponibles en cada servidor bare metal.
  • Asegúrese de que el número de OSD configurados por nodo no supere el número de unidades NVMe utilizables.
  • Se recomienda utilizar un OSD por unidad NVMe para obtener un rendimiento óptimo y aislar los fallos.
  • Asegúrese de que el número de discos OSD coincida normalmente con el número de unidades NVMe por nodo bare metal. El cálculo de la capacidad de almacenamiento que se muestra en la interfaz de usuario no refleja la capacidad útil real en el caso de las configuraciones de almacenamiento local y puede ignorarse.

Al seleccionar nodos durante la creación de un clúster de StorageSystem, evite seleccionar todos los nodos del clúster. Al seleccionar todos los nodos se crea un sistema de equilibrio de carga ( LocalVolumeSet, LVS) sin nodeSelector. Cualquier nodo de trabajo que se añada al clúster en el futuro será detectado automáticamente por ODF, incluso si no está destinado al almacenamiento. Los nodos que se detecten de forma inesperada deben eliminarse manualmente del LVS. Para evitarlo, selecciona únicamente los nodos de tu grupo de trabajadores de almacenamiento dedicado o asegúrate de que dichos nodos tengan la etiqueta cluster.ocs.openshift.io/openshift-storage antes de crear un StorageSystem.

Por defecto StorageClass para el cluster

Tras la implementación de ODF, suelen crearse los siguientes archivos de configuración ( followingStorageClasses ):

  • ocs-storagecluster-ceph-rbd: Almacenamiento en bloque
  • ocs-storagecluster-cephfs: Almacenamiento de archivos
  • ocs-storagecluster-ceph-rgw: Almacenamiento de objetos

Para que las cargas de trabajo utilicen automáticamente almacenamiento en bloques persistente de alto rendimiento respaldado por ODF sin necesidad de configuración adicional, seleccione Usar dispositivo de bloques Ceph RADOS (RBD) como clase de almacenamiento predeterminada o configure manualmente RBD (ocs-storagecluster-ceph-rbd) como StorageClass predeterminado para el clúster una vez instalado el complemento ODF.

  1. Marcar RBD como predeterminado:

    oc patch storageclass ocs-storagecluster-ceph-rbd -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
    
  2. Si es necesario, elimina el valor predeterminado de la configuración predeterminada establecida anteriormente:

    oc patch storageclass <previous-default-name> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
    

Lista de comprobación de la configuración de ODF

  • El clúster contiene al menos un grupo de servidores bare metal
  • Red Hat OpenShift Versión 4.17 o superior
  • El complemento ODF y el operador están instalados y en funcionamiento
  • Los servidores bare metal disponen de suficientes unidades NVMe locales utilizables
  • El perfil de recursos seleccionado coincide con la capacidad del nodo
  • Los clústeres de almacenamiento ODF utilizan un mínimo de 3 nodos; los clústeres multizona deben utilizar múltiplos de 3 (3, 6, 9, …) para mantener el equilibrio de la zona
  • Todos los nodos participantes en ODF son de metal desnudo
  • Se crea el RBD StorageClass y se establece preferentemente como predeterminado
  • El estado del clúster ODF es Listo (oc get storagecluster -n openshift-storage)
  • El estado de Ceph es HEALTH_OK (oc -n openshift-storage rsh $(oc get pod -l app=rook-ceph-tools -o name) ceph status)

Ejecución de servidores virtuales en ODF

Utilice la siguiente información para ejecutar servidores virtuales en ODF.

Requisitos previos: Instalar el operador de virtualización Red Hat OpenShift

Antes de utilizar la virtualización Red Hat OpenShift en IBM Cloud, comprueba que el operador de virtualización Red Hat OpenShift esté instalado en tu clúster de Red Hat OpenShift Kubernetes Service.

El operador de virtualización Red Hat OpenShift permite la gestión de cargas de trabajo de máquinas virtuales nativas de Kubernetes. También proporciona los controladores, CRD e integraciones necesarios con componentes de almacenamiento y redes.

Para más información, consulte Red Hat OpenShift Virtualization en IBM Cloud.

Uso del almacenamiento ODF para cargas de trabajo de máquinas virtuales

Red Hat OpenShift Data Foundation (ODF) proporciona almacenamiento persistente definido por software para cargas de trabajo de virtualización que se ejecutan en Red Hat OpenShift. Cuando se utiliza ODF como backend de almacenamiento para máquinas virtuales, es fundamental seleccionar el StorageClass adecuado para garantizar el rendimiento, la estabilidad y la compatibilidad total con todas las funciones.

Debe especificar el StorageClass adecuado para las siguientes situaciones:

  • Se crean servidores virtuales
  • Los servidores virtuales se importan o se clonan
  • Los servidores virtuales se migran a un clúster de Red Hat OpenShift Kubernetes Service

Virtualización por defecto StorageClass

Cuando se instala el Operador de virtualización de Red Hat OpenShift y hay un clúster ODF disponible, se crea automáticamente un clúster de StorageClass optimizado para cargas de trabajo de virtualización:

  • ocs-storagecluster-ceph-rbd-virtualization

Esto es StorageClass:

  • Ajustado para patrones de E/S de disco como lecturas aleatorias, escrituras y rendimiento sostenido
  • Validada para operaciones del ciclo de vida de la virtualización como inicio, parada, migración en vivo e instantáneas
  • Totalmente compatible y recomendado para entornos de virtualización de producción Red Hat OpenShift

Para la mayoría de los casos de uso, utilice este StorageClass sin modificaciones.

Requisitos de almacenamiento para la migración en vivo

La migración en vivo mueve la carga de trabajo de una máquina virtual en ejecución de un nodo trabajador a otro sin tiempo de inactividad. Para que la migración en vivo tenga éxito, el almacenamiento debe ser accesible desde los nodos de origen y destino simultáneamente. La migración en vivo requiere las siguientes configuraciones.

  • ReadWriteMany modo de acceso en PVCs de carga de trabajo de máquinas virtuales. Ceph RBD soporta RWX en modo bloque, que es la configuración por defecto para la virtualización ODF StorageClass.
  • El StorageClassocs-storagecluster-ceph-rbd-virtualization viene preconfigurado con soporte ReadWriteMany a través del modo de bloques RBD. Los servidores virtuales que utilizan este StorageClass pueden migrar sin necesidad de configuración adicional.
  • El genérico ocs-storagecluster-ceph-rbd StorageClass utiliza por defecto el modo de acceso ReadWriteOnce. Los servidores virtuales que utilizan PVCs RWO no pueden realizar la migración en vivo. La migración falla porque el PVC no se puede montar en el nodo de destino mientras está conectado al origen.

Si creas un customStorageClasses s para servidores virtuales que necesitan migración en vivo, comprueba que los PVC se hayan creado con y accessModes: [ReadWriteMany] volumeMode: Block.

La migración en vivo también requiere:

  • Configuración del operador de virtualización Red Hat OpenShift con una política de migración adecuada
  • Comprobación de que el nodo de destino dispone de suficiente CPU y memoria

Virtualización específica comparada con RBD genérico StorageClass

Aunque las máquinas virtuales pueden utilizar un RBD genérico de Ceph StorageClass,, el StorageClass específico para la virtualización está optimizado para las características únicas de E/S y ciclo de vida de los discos de carga de trabajo de las máquinas virtuales.

Comparación entre RBD específico para virtualización y RBD genérico StorageClass
Aspecto Virtualización específica StorageClass RBD genérico StorageClass
Optimización de la carga de trabajo Adaptado a los patrones de acceso a disco de la carga de trabajo de las máquinas virtuales Optimizado para cargas de trabajo en contenedores
Mapeo RBD del núcleo Utiliza VM-opciones de mapeo RBD amigables (por ejemplo, krbd:rxbounce) Podría utilizar opciones de asignación por defecto
Coherencia del rendimiento Latencia más predecible para la E/S del SO huésped Potencialmente más latencia
Operaciones del ciclo de vida de la carga de trabajo de la máquina virtual Validado para los flujos de trabajo de arranque, parada, migración en vivo e instantáneas de la carga de trabajo de la máquina virtual No validado explícitamente para operaciones de carga de trabajo de máquinas virtuales
Apoyabilidad Totalmente compatible y recomendado para Red Hat OpenShift Virtualization Admitido, pero no recomendado para discos VM
Day-2 operaciones Reducción del riesgo durante las actualizaciones y migraciones Más riesgo de resultados inesperados

Los RBD genéricos StorageClasses siguen siendo adecuados para cargas de trabajo en contenedores, pero se recomienda utilizar los específicos para virtualización StorageClass para los entornos de virtualización en producción.

Grupos de trabajadores separados para cálculo y almacenamiento

Para implementar grupos de trabajadores independientes para la computación y el almacenamiento en Red Hat OpenShift Kubernetes Service, primero planifica la arquitectura de tu clúster con grupos de trabajadores dedicados. Cree un grupo de trabajadores de almacenamiento que utilice perfiles optimizados de almacenamiento para ODF. A continuación, cree uno o varios grupos de trabajadores informáticos que utilicen perfiles equilibrados u optimizados para las cargas de trabajo de las aplicaciones.

Al instalar el complemento ODF, especifica el grupo de trabajadores de almacenamiento, lo que aplica automáticamente restricciones para evitar que los pods o máquinas virtuales que no sean de almacenamiento se programen en los nodos de dicho grupo de trabajadores de almacenamiento.

  1. Cree un grupo de trabajadores de almacenamiento dedicado:

    • Crea un nuevo grupo de trabajadores destinado a los nodos de almacenamiento en IBM Cloud.
    • Selecciona un perfil bare-metal optimizado para el almacenamiento (discos locales o perfiles de alta E/S).
    • Añada el número necesario de nodos trabajadores en función de las necesidades de capacidad y resistencia.
  2. Aplicar manchas a los nodos de almacenamiento:

    • Cuando instales el complemento ODF en tu clúster de Red Hat OpenShift Kubernetes Service desde IBM Cloud, ve a la sección Capacidad y nodos de trabajo.
    • Especifica el nombre del grupo de trabajadores de almacenamiento designado en el campo Grupos de trabajadores.
    • Activa la opción Nodos Taint.

    Una vez completada la instalación del complemento ODF, la marca node.ocs.openshift.io/storage=true:NoSchedule se aplica automáticamente a todos los nodos del grupo de trabajadores seleccionado.

    Si la opción Taint Nodes no se seleccionó durante la instalación de ODF, puede aplicar taints manualmente a los nodos de almacenamiento después utilizando el comando oc adm taint en Red Hat OpenShift.

    oc get node -l ibm-cloud.kubernetes.io/worker-pool-name=<your storage workerpool  name> -o=name  | \
    xargs -I {} oc adm taint nodes {} node.ocs.openshift.io/storage=true:NoSchedule
    
  3. Comprueba que el nodo se ha contaminado correctamente:

    • Ve a Compute > Nodes en Red Hat OpenShift.
    • Seleccione el botón Node para verificar el estado y, a continuación, haga clic en la pestaña YAML.
    • En la sección Specs, compruebe los valores de los siguientes parámetros:
       Taints:
         Key: node.ocs.openshift.io/storage
         Value: 'true'
         Effect: Noschedule
    

Configuración avanzada

La siguiente sección está dirigida a los equipos que necesitan ir más allá de la configuración predeterminada de ODF StorageClasses, para crear grupos Ceph personalizados, StorageClasses con ajustes de rendimiento específicos y habilitar el cifrado.

Creación de un sitio StorageClass personalizado para la virtualización

En algunos casos, es posible que necesite un sitio StorageClass personalizado para satisfacer requisitos específicos de rendimiento, resistencia o capacidad.

Para crear un StorageClass personalizado, primero debes crear un CephBlockPool personalizado. Al crear un pool personalizado, debe configurar targetSizeRatio en el pool. Sin esta configuración, el escalador automático de grupos de ubicación de Ceph asigna solo un grupo de ubicación al grupo de recursos. Esta asignación provoca que todas las operaciones de E/S se concentren en un único OSD, lo que da lugar a un rendimiento inferior al del grupo predeterminado.

Cuando cree un StorageClass personalizado para cargas de trabajo de virtualización, compruebe que los siguientes parámetros están configurados correctamente.

  • Suministrador

    El StorageClass debe utilizar el aprovisionador Ceph RBD CSI proporcionado por ODF:

    openshift-storage.rbd.csi.ceph.com
    

    Este aprovisionador permite el aprovisionamiento dinámico de volúmenes Ceph RBD respaldados por el clúster ODF.

  • Agrupación de almacenamiento

    Especifique el CephBlockPool que respalda los discos de carga de trabajo de la máquina virtual. Puede seleccionar una de las opciones siguientes:

    • Grupo de bloques por defecto. El pool de bloques Ceph replicado en 3 direcciones por defecto creado por ODF:
        ocs-storagecluster-cephblockpool
        ```
    
    - Piscina de bloques a medida. Una dirección definida por el usuario CephBlockPool. El pool debe incluir los siguientes ajustes para evitar problemas de rendimiento:
    
    ```yaml
          apiVersion: ceph.rook.io/v1
          kind: CephBlockPool
          metadata:
          name: my-custom-pool
          namespace: openshift-storage
         spec:
           failureDomain: zone          # Default for multi-zone clusters — data copies spread across zones; use host for single-zone flexible-scaling clusters
           deviceClass: ssd             # Match OSD device class
           enableCrushUpdates: true     # Keep CRUSH rules current on topology changes
           enableRBDStats: true         # Enable per-volume I/O monitoring
           replicated:
            size: 3
            requireSafeReplicaSize: true
                targetSizeRatio: 0.1       # CRITICAL — prevents 1-PG bottleneck
            ```
        The `targetSizeRatio` instructs the placement group autoscaler to proportionally preallocate placement groups based on the expected capacity share. Without it, the pool receives 1 PG and all I/O is funneled through a single OSD.
        
    
  • Características de la imagen

    La página StorageClass debe incluir las características de la imagen RBD que son críticas para el rendimiento de la carga de trabajo:

    imageFeatures: layering,deep-flatten,exclusive-lock,object-map,fast-diff
    
    Características de la imagen RBD y su finalidad
    Característica Finalidad
    exclusive-lock Activa la caché de escritura y las optimizaciones de escritura única. Sin esta función, las IOPS de escritura pueden ser hasta 7x peores.
    object-map Permite el seguimiento de mapa de bits de objetos asignados para imágenes dispersas.
    fast-diff Acelera las operaciones de snapshot diff y DataVolume clone para tiempos de arranque más rápidos.
    deep-flatten Hace que los clones sean totalmente independientes una vez aplastados.
    layering Activa la clonación de copia en escritura necesaria para la clonación de DataVolume.
  • Opciones de mapas

    mapOptions: krbd:rxbounce
    

    Esta opción soluciona los problemas de corrupción de datos que se producen al utilizar el controlador RBD del núcleo con servidores virtuales de Windows. Obliga al núcleo a utilizar un búfer de rebote para los datos recibidos con el fin de garantizar la compatibilidad. Esta opción debe configurarse en todos los StorageClasses de carga de trabajo.

  • Ejemplo completo de StorageClass personalizado

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: my-custom-virt-sc
    provisioner: openshift-storage.rbd.csi.ceph.com
    parameters:
      clusterID: <your-cluster-id>
      pool: my-custom-pool
      imageFormat: "2"
      imageFeatures: layering,deep-flatten,exclusive-lock,object-map,fast-diff
      mapOptions: krbd:rxbounce
      csi.storage.k8s.io/provisioner-secret-name: rook-csi-rbd-provisioner
      csi.storage.k8s.io/provisioner-secret-namespace: openshift-storage
      csi.storage.k8s.io/controller-expand-secret-name: rook-csi-rbd-provisioner
      csi.storage.k8s.io/controller-expand-secret-namespace: openshift-storage
      csi.storage.k8s.io/node-stage-secret-name: rook-csi-rbd-node
      csi.storage.k8s.io/node-stage-secret-namespace: openshift-storage
      csi.storage.k8s.io/fstype: ext4
    reclaimPolicy: Delete
    allowVolumeExpansion: true
    volumeBindingMode: Immediate
    

    Para encontrar el clusterID para su cluster, ejecute el siguiente comando :

    oc get sc ocs-storagecluster-ceph-rbd -o jsonpath='{.parameters.clusterID}'
    

    Para los grupos con codificación de borrado (solo en versión preliminar para desarrolladores), consulta Descripción de la protección de datos, añade dataPool que apunte al grupo EC y mantén pool apuntando al grupo replicado por defecto:

    parameters:
      pool: ocs-storagecluster-cephblockpool   # Replicated pool for metadata
      dataPool: my-ec-pool                      # EC pool for data blocks
    

Compresión

ODF admite la compresión en línea BlueStore en los grupos de bloques Ceph, lo que puede reducir el almacenamiento en bruto utilizado por los discos. La compresión se aplica de forma transparente en la capa OSD, por lo que la carga de trabajo de la máquina virtual y su sistema operativo invitado no detectan que los datos están comprimidos.

Cómo funciona

  • Si un fragmento no se comprime hasta alcanzar al menos el 87.5 % de su tamaño original
  • Ceph almacena los datos que ha descomprimido para evitar malgastar recursos de la CPU en ahorros insignificantes.
  • Los datos escritos antes de que se activara la compresión no se comprimen de forma retroactiva; solo se ven afectadas las nuevas escrituras.

Algoritmos de compresión

BlueStore algoritmos de compresión comparados
Algoritmo Ahorro de espacio típico Efecto sobre el rendimiento Recomendación
Snappy 16-23% 12-38% de reducción de IOPS Valor predeterminado. El mejor equilibrio entre rapidez y ahorro.
lz4 Mínimo-moderado Menor coste de CPU Utilícelo para minimizar el uso de la CPU.
ZLib Moderado Moderado Término medio entre snappy y zstd.
zstd 36-50% reducción de IOPS del 21-66 La mejor relación de compresión, pero el mayor coste de CPU. No se recomienda para cargas de trabajo sensibles a la latencia.

Casos prácticos de compresión

La compresión resulta más eficaz con datos comprimibles, texto, registros, datos de aplicaciones descomprimidos y sistemas de archivos del sistema operativo con espacio libre. Aporta pocos o ningún beneficio en las siguientes situaciones relacionadas con los datos:

  • Los datos ya están comprimidos
  • Los datos se cifran en la capa de aplicación
  • Datos generados por cargas de trabajo que producen datos de alta entropía

En los clústeres hiperconvergentes en los que las máquinas virtuales y los OSD de Ceph comparten nodos, la compresión aumenta la carga de la CPU, lo que compite con las cargas de trabajo de VM. Supervisa el uso de la CPU del OSD tras habilitar la compresión y ten en cuenta el perfil de recursos de rendimiento para proporcionar a los demonios de Ceph un margen adicional de CPU.

Activación de la compresión en un CephBlockPool

Para habilitar la compresión, configura Compression_mode en la sección Parámetros del grupo:

apiVersion: ceph.rook.io/v1
kind: CephBlockPool
metadata:
  name: compressed-block-pool
  namespace: openshift-storage
spec:
  failureDomain: zone          # Default for multi-zone clusters; use host for single-zone flexible-scaling clusters
  deviceClass: ssd
  enableCrushUpdates: true
  enableRBDStats: true
  replicated:
    size: 3
    requireSafeReplicaSize: true
    targetSizeRatio: 0.1
  parameters:
    compression_mode: "aggressive"

Consulta los siguientes valores válidos para Compression_mode:

  • none: No comprimir nunca (por defecto).
  • passive: Comprimir cuando el cliente indica que los datos son comprimibles.
  • aggressive: Comprimir, a menos que el cliente indique que los datos son incompresibles. Recomendado cuando se activa la compresión.
  • force: Intente siempre la compresión independientemente de las pistas.

Para activar la compresión en el grupo predeterminado a través de la consola web Red Hat OpenShift, siga estos pasos.

  1. Ve a Almacenamiento > Data Foundation > StorageSystems
  2. Selecciona tu StorageSystem y haz clic en la pestaña BlockPools
  3. Haga clic en el menú Acción del grupo, en Editar grupo de bloques y active la casilla de verificación Compresión.
  4. Después de activar la compresión, cree un StorageClass que haga referencia al pool comprimido.

Para obtener más información, consulta el ejemplo anterior de StorageClass personalizado. Los PVC existentes en la piscina no se ven afectados. Sólo se comprimen las nuevas escrituras en el pool.

Cifrado

ODF admite el cifrado de datos en reposo en varias capas que puedes activar de forma independiente.

  • IBM Cloud Cifrado de infraestructura: cifrado completo del disco en unidades NVMe físicas, gestionado por IBM Cloud.
  • Cifrado de todo el clúster ODF: todos los discos OSD de Ceph se cifran con dm-crypt a nivel de dispositivo. Habilitado a través de encryption.clusterWide: true en el CR del clúster de almacenamiento. Protege contra el robo físico de discos.
  • Cifrado por volumen de ODF: los volúmenes RBD individuales se cifran mediante LUKS2, cada uno con su propia clave de cifrado de datos. Ofrece aislamiento de inquilinos y gestión granular de claves.

En Red Hat OpenShift Kubernetes Service, ODF se integra con IBM Key Protect como servicio externo de gestión de claves tanto para el cifrado de todo el clúster como para el cifrado por volumen. Cuando se activa el cifrado por volumen, ODF crea automáticamente -encrypted StorageClass variantes (por ejemplo, ocs-storagecluster-ceph-rbd-encrypted).

Limitación

Considere la siguiente limitación.

El controlador Ceph CSI no puede crear un volumen cifrado a partir de una instantánea de un volumen sin cifrar. Esta limitación afecta directamente a la creación de cargas de trabajo de máquinas virtuales. Red Hat OpenShift La virtualización arranca las cargas de trabajo de máquinas virtuales clonando discos raíz a partir de imágenes de referencia precargadas en caché, que se almacenan como volúmenes sin cifrar. Si selecciona el StorageClass cifrado para un disco raíz, la clonación falla silenciosamente y la carga de trabajo de la máquina virtual permanece atascada en Provisioning.

Para superar esta limitación, utilice la dirección StorageClass sin cifrar para sus discos raíz (el cifrado en todo el clúster sigue protegiendo los datos en la capa física). Para los discos de datos que requieren cifrado por volumen, añada un segundo disco que utilice el cifrado StorageClass. Alternativamente, puedes importar la imagen del sistema operativo directamente a un PVC encriptado utilizando source: registry, que omite la ruta de clonación, y crear una fuente de datos encriptada reutilizable a partir de una instantánea de ese PVC.

Para obtener más información sobre la configuración del cifrado con IBM Key Protect, consulte Understanding Red Hat OpenShift Data Foundation.

Optimización del rendimiento de Ceph para servidores bare-metal con NVMe

La configuración predeterminada de Ceph está optimizada para cargas de trabajo generales. Los siguientes valores de parámetros se han validado en el perfil bare-metal mx2d.metal.96x768 y aumentan significativamente las IOPS y reducen la latencia para las cargas de trabajo de disco VM en dicho perfil. Si utilizas un perfil de servidor físico diferente, tómalos como referencia inicial y ajusta los valores en función del número de unidades NVMe y de la CPU disponible de tu perfil específico.

Parámetros recomendados de ajuste de Ceph para entornos bare-metal con NVMe
Parámetro Valor recomendado Fundamentos
osd_memory_target 8589934592 (8 GB) a 12884901888 (12 GB) Aumenta la caché de BlueStore disponible para cada OSD. Una mayor caché reduce la amplificación de lectura y mejora las IOPS de lectura aleatoria. El valor predeterminado es de 4 GB, lo cual es insuficiente para nodos NVMe de alta densidad.
osd_op_num_shards_ssd 16 Cada fragmento gestiona una cola de operaciones de E/S. Aumentar de 8 a 16 fragmentos en nodos bare-metal con un elevado número de núcleos permite un mayor procesamiento paralelo de solicitudes y reduce la profundidad de la cola por fragmento.
osd_op_num_threads_per_shard_ssd 2 Controla el número de subprocesos de trabajo por fragmento. Aumentar este valor junto con el número de fragmentos mejora el rendimiento de E/S simultáneo en las unidades NVMe.
bluestore_prefer_deferred_size_ssd 0 Desactiva las escrituras diferidas para NVMe. Las escrituras diferidas provocan una doble escritura a través del WAL (registro de escritura anticipada), lo que añade una sobrecarga. Las unidades NVMe tienen un rendimiento de escritura aleatoria lo suficientemente rápido como para que las escrituras diferidas resulten contraproducentes.
RocksDB rocksdb_write_buffer_size 268435456 (256 MB) Aumenta el tamaño de la tabla de memoria de RocksDB. Un búfer de escritura más grande absorbe los picos de escritura de metadatos (habituales durante las operaciones de aprovisionamiento y de instantáneas de VM ) antes de volcarlos al disco, lo que reduce los bloqueos de escritura.
RocksDB rocksdb_max_write_buffer_number 16 a 32 Controla el número máximo de búferes de escritura en la memoria. Bajar el valor predeterminado de 64 a entre 16 y 32 en NVMe es suficiente y reduce la carga sobre la memoria.
RocksDB rocksdb_max_background_jobs 12 a 16 Controla el número de subprocesos simultáneos de compactación y vaciado. Aumentar este valor en los nodos NVMe evita que la compactación de RocksDB se convierta en un cuello de botella bajo una carga de escritura sostenida.

Aplica cada parámetro utilizando el ceph config set comando del pod Ceph toolbox:

TOOLS_POD=$(oc get pod -n openshift-storage -l app=rook-ceph-tools -o name)
# OSD memory and shard tuning
oc exec -n openshift-storage ${TOOLS_POD} -- ceph config set osd osd_memory_target 8589934592
oc exec -n openshift-storage ${TOOLS_POD} -- ceph config set osd osd_op_num_shards_ssd 16
oc exec -n openshift-storage ${TOOLS_POD} -- ceph config set osd osd_op_num_threads_per_shard_ssd 2
oc exec -n openshift-storage ${TOOLS_POD} -- ceph config set osd bluestore_prefer_deferred_size_ssd 0
# RocksDB tuning
oc exec -n openshift-storage ${TOOLS_POD} -- ceph config set osd rocksdb_write_buffer_size 268435456
oc exec -n openshift-storage ${TOOLS_POD} -- ceph config set osd rocksdb_max_write_buffer_number 16
oc exec -n openshift-storage ${TOOLS_POD} -- ceph config set osd rocksdb_max_background_jobs 12

Tras aplicar los cambios, comprueba que la configuración se haya aceptado:

oc exec -n openshift-storage ${TOOLS_POD} -- ceph config dump | grep -E "osd_memory_target|osd_op_num_shards|bluestore_prefer_deferred|rocksdb"

No es necesario reiniciar los pods de OSD para aplicar los cambios ceph config set. Ceph aplica la configuración de forma dinámica. Sin embargo, los cambios en la caché de BlueStore (osd_memory_target) solo surten pleno efecto después de que se haya reciclado cada pod de OSD. Puedes reciclar los pods de OSD de uno en uno durante una ventana de mantenimiento sin interrumpir las operaciones de E/S.

Referencia de rendimiento: Las pruebas internas realizadas en un clúster mx2d.metal.96x768 de 3 nodos con 200 máquinas virtuales y IOPS ilimitadas demostraron que la combinación de 16 fragmentos, 8 GB de memoria OSD y un búfer de escritura de 256 MB RocksDB alcanzaba aproximadamente 194.000 IOPS y un rendimiento de 758 MB/s. El aumento del número de fragmentos de 8 a 16 produjo sistemáticamente la mayor mejora individual en IOPS en todas las configuraciones de prueba.

Copia de seguridad y protección de datos

Las copias de seguridad y la recuperación ante desastres son fundamentales para los entornos de virtualización de producción. En Red Hat OpenShift Virtualización con ODF, las copias de seguridad se basan actualmente en Ceph RBD VolumeSnapshots. Cada copia de seguridad crea una instantánea puntual completa de los volúmenes persistentes.

Copia de seguridad basada en instantáneas

ODF soporta Kubernetes VolumeSnapshots para volúmenes Ceph RBD. Para tomar una instantánea de un disco, utilice el siguiente comando :

oc apply -f - <<EOF
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
  name: my-vm-snapshot
spec:
  volumeSnapshotClassName: ocs-storagecluster-rbdplugin-snapclass
  source:
    persistentVolumeClaimName: my-vm-data-disk
EOF

VolumeSnapshots se copian al escribir y se crean casi al instante. Puede utilizarlos para restaurar la carga de trabajo de una máquina virtual a un estado anterior o para clonar un disco. La virtualización de Red Hat OpenShift también proporciona una API integrada de instantáneas y restauraciones VM que captura el estado completo de la carga de trabajo de la máquina virtual —incluida la configuración y todos los discos— en una sola operación.

Puesta en reposo de cargas de trabajo de máquinas virtuales para instantáneas coherentes con la aplicación

Cuando se realiza una instantánea de una carga de trabajo de una máquina virtual en ejecución, los datos del disco deben encontrarse en un estado coherente. Sin quiescing, la instantánea captura lo que haya en el disco en ese instante, incluyendo transacciones parcialmente escritas, búferes sucios y E/S en vuelo. Este proceso genera una instantánea coherente con el fallo, lo que podría requerir una recuperación a nivel de aplicación al restaurar los datos.

Para obtener instantáneas coherentes con la aplicación, congele el sistema de archivos invitado antes de la instantánea y descongélelo después. Red Hat OpenShift La virtualización automatiza este proceso mediante el agente invitado de QEMU.

El controlador de instantáneas detecta el agente invitado QEMU. Antes de realizar la instantánea, se ejecuta un comando guest-fsfreeze-freeze que detiene todas las operaciones de E/S de los sistemas de archivos. La instantánea VolumeSnapshot se realiza mientras el sistema de archivos está congelado. Una vez finalizada la instantánea, un comando guest-fsfreeze-thaw reanuda la E/S. El estado de la instantánea indica el nivel de consistencia alcanzado. Consulte la siguiente tabla para conocer el significado de cada estado.

Indicadores de consistencia de instantáneas
Indicación Significado
GuestAgent El agente invitado congeló con éxito el sistema de archivos. La instantánea es coherente con la aplicación.
NoGuestAgent El agente invitado no estaba instalado o no estaba listo. La instantánea sólo es consistente en caso de colisión.
QuiesceFailed Se intentó congelar el sistema de archivos, pero falló. La instantánea podría no ser coherente con la aplicación.

Se recomienda instalar el agente invitado de QEMU en todas las máquinas virtuales de producción. En los servidores Linux, utiliza el siguiente comando.

# RHEL / CentOS / Fedora
sudo dnf install -y qemu-guest-agent
sudo systemctl enable --now qemu-guest-agent
# Ubuntu / Debian
sudo apt-get install -y qemu-guest-agent
sudo systemctl enable --now qemu-guest-agent

Para huéspedes Windows, instale el paquete de controladores VirtIO, que incluye el servicio de agente huésped QEMU.

Hooks personalizados de congelación/descongelación para aplicaciones: para bases de datos y otras aplicaciones con estado que requieran una suspensión adicional más allá de la congelación del sistema de archivos, coloque scripts de hooks personalizados dentro de la carga de trabajo de la máquina virtual invitada en /etc/qemu-ga/fsfreeze-hook.d/. El agente invitado ejecuta automáticamente estos scripts con un argumento freeze antes de que se congele el sistema de archivos y con un argumento thaw después de que se descongele el sistema de archivos. Los registros de ejecución de los ganchos se escriben en /var/log/qga-fsfreeze-hook.log.

Por ejemplo, el siguiente gancho de congelación PostgreSQL puede colocarse en /etc/qemu-ga/fsfreeze-hook.d/postgresql.sh:

#!/bin/bash
case "$1" in
  freeze)
    sudo -u postgres psql -c "SELECT pg_backup_start('snapshot');" 2>/dev/null || true
    ;;
  thaw)
    sudo -u postgres psql -c "SELECT pg_backup_stop();" 2>/dev/null || true
    ;;
esac

VMware Comparación: Este ejemplo es análogo al script de pre-congelación y post-descongelación de VMware que se utiliza con VMware Tools para crear instantáneas coherentes con la aplicación. El agente invitado de QEMU desempeña la misma función que las herramientas de VMware para la suspensión de instantáneas.

Cambiadas las limitaciones del seguimiento de bloques

El seguimiento de bloques modificados permite realizar copias de seguridad incrementales identificando únicamente los bloques que han cambiado desde la última copia de seguridad. El VADP (API de vStorage s para la protección de datos) de VMware utiliza este mecanismo para proporcionar copias de seguridad incrementales eficientes.

CBT no está disponible para ODF y Ceph RBD en Red Hat OpenShift Virtualization. Actualmente, las copias de seguridad se basan en instantáneas completas, lo que puede dar lugar a ventanas de copia de seguridad más largas y a un mayor consumo de almacenamiento.

El desarrollo de la TCC está en marcha a múltiples niveles:

Seguimiento de bloques modificados: estado de desarrollo en toda la pila
Capa Estado Detalles
Kubernetes API CBT DE CSI Alfa ( Kubernetes 1.31 ) Introduce un servicio CSI SnapshotMetadata para identificar los bloques modificados entre instantáneas. Sólo volúmenes en bloque.
KubeVirt copia de seguridad incremental En desarrollo VEP 25 apunta a CBT de nivel QEMU para copias de seguridad incrementales VM. Alfa previsto para KubeVirt 1.7.
RBD de Ceph Existe una capacidad subyacente Ceph admite instantáneas diferenciales (rbd diff) de forma nativa, pero la integración de la API CSI CBT no está implementada.

Aunque Ceph RBD admite la rbd diff capacidad subyacente de identificar bloques modificados entre instantáneas, esta capacidad aún no está disponible a través de la API de seguimiento de bloques modificados (CSI Changed Block Tracking API) de Kubernetes. Hasta que no se disponga de la pila completa (API CSI CBT + compatibilidad con el controlador Ceph CSI + integración con KubeVirt ), no estarán disponibles las copias de seguridad incrementales a nivel de bloque.

Soluciones de copia de seguridad

Varios proveedores de soluciones de copia de seguridad ofrecen soluciones para la virtualización Red Hat OpenShift que funcionan dentro del modelo actual basado en instantáneas:

Recomendaciones para las migraciones VMware

Si su entorno actual VMware se basa en copias de seguridad incrementales basadas en CBT, tenga en cuenta las siguientes recomendaciones:

  • Planifica copias de seguridad completas. Evalúa tus ventanas de copia de seguridad y tus requisitos de almacenamiento basándote en copias de seguridad completas VolumeSnapshots en lugar de copias de seguridad incrementales.
  • Evalúe las herramientas de copia de seguridad nativas de Kubernetes. Veeam Kasten y Trilio están diseñados para la virtualización de Kubernetes y Red Hat OpenShift, y funcionan dentro del modelo de instantáneas actual.
  • Utilizar la eficacia de las instantáneas Ceph. Las instantáneas de Ceph RBD son de tipo copy-on-write y utilizan almacenamiento únicamente para los bloques modificados tras la creación de la instantánea, lo que hace que el almacenamiento continuo de las instantáneas sea más eficiente que las copias completas.

Day-2 operaciones

Una vez que hayas implementado ODF en IBM Cloud Red Hat OpenShift Kubernetes Service, céntrate en las operaciones de Day-2. Estas operaciones incluyen tareas continuas de gestión, supervisión y mantenimiento que mantienen su infraestructura de almacenamiento en buen estado, con un buen rendimiento, actualizada y adaptable a las cambiantes demandas de carga de trabajo. La guía se centra en los tres aspectos fundamentales siguientes del funcionamiento de Day-2:

  • Supervisión
  • Actualización de
  • Ampliando

Supervisar la salud de ODF y Ceph

La supervisión periódica del clúster de almacenamiento ODF es esencial para mantener la disponibilidad y el rendimiento. En la siguiente sección se describen comandos clave y sus resultados.

Comprobar la salud general de Ceph

Comando más importante para el buen funcionamiento de ODF:

TOOLS_POD=$(oc get pods -n openshift-storage -l app=rook-ceph-tools -o name)
oc exec -n openshift-storage ${TOOLS_POD} -- ceph status

Interpretación del resultado:

  cluster:
    id:     a1b2c3d4-...
    health: HEALTH_OK          ← What you want to see
  services:
    mon: 3 daemons             ← Should be 3 (quorum)
    mgr: 1 active              ← Manager daemon running
    osd: 24 osds: 24 up, 24 in ← All OSDs healthy (should match your NVMe count)
  data:
    pools:   4 pools, 353 pgs
    objects: 12.5k objects, 48 GiB
    usage:   152 GiB used, 69 TiB / 70 TiB avail   ← Cluster usage

Estados de funcionamiento:

Estados de salud de Ceph y acciones recomendadas
Estado Significado Acción
HEALTH_OK Todos los componentes funcionan correctamente, todos los datos están totalmente replicados. Ninguno, funcionamiento normal.
HEALTH_WARN Cuestión no crítica. El clúster está operativo, pero algo necesita atención. Investigue con ceph health detail. Causas comunes: OSDs casi llenos, PGs degradados recuperándose, desviación de reloj entre MONs.
HEALTH_ERR Cuestión crítica. La disponibilidad o durabilidad de los datos podría estar en peligro. Investíguelo inmediatamente. Causas comunes: OSDs caídos, PGs no recuperándose, cluster lleno.

Para ver las advertencias detalladas, utilice el siguiente comando :

oc exec -n openshift-storage ${TOOLS_POD} -- ceph health detail

Comprobar estado OSD

Los OSD son los demonios de almacenamiento, con un demonio por unidad NVMe. Todos los OSD deben estar en el estado up y in. Utiliza el siguiente comando para comprobar el estado.

oc exec -n openshift-storage ${TOOLS_POD} -- ceph osd tree

Verifique la siguiente información.

  • Todos los OSD up: si aparece un OSD down, significa que la unidad NVMe o su daemon tienen un problema.
  • Todos los OSD in: un OSD out significa que Ceph lo ha excluido de la distribución de datos porque podría fallar.
  • Ponderaciones coherentes: todos los OSD de un mismo nodo deben tener ponderaciones idénticas.

Comprobar el uso del clúster

Ejecuta el siguiente comando para comprobar el uso del clúster.

oc exec -n openshift-storage ${TOOLS_POD} -- ceph df

Columnas importantes:

  • %RAW USADO: Uso general del clúster. Manténgalo por debajo del 70% para un funcionamiento óptimo.
  • MAX AVAIL* por grupo: la cantidad de datos adicionales que se pueden escribir en el grupo, teniendo en cuenta la replicación.

Comprobar las estadísticas de la piscina

Ejecuta el siguiente comando para consultar las estadísticas del grupo.

oc exec -n openshift-storage ${TOOLS_POD} -- ceph osd pool stats

Este comando muestra estadísticas de E/S en tiempo real por grupo, lo que ayuda a identificar qué grupos están sometidos a carga.

Supervisión a través de la consola web Red Hat OpenShift

ODF se integra con la consola web Red Hat OpenShift para proporcionar la siguiente información.

  • Almacenamiento > El panel de control de Data Foundation muestra el estado de funcionamiento, la capacidad y las métricas de rendimiento.
  • Observar > Alertas muestra alertas automáticas sobre advertencias de estado de Ceph (por ejemplo, CephClusterNearFull, CephOSDDown, CephPGNotScrubbed).
  • Observar > Métricas de consultas basadas en Prometheus sobre métricas de Ceph (por ejemplo, ceph_osd_op_r_latency, ceph_osd_op_w_latency).

Actualización de ODF en Red Hat OpenShift Kubernetes Service

El complemento IBM Cloud ( Red Hat OpenShift ) de Data Foundation (ODF) aplica automáticamente las actualizaciones de z-stream dentro de la misma versión menor. Estas actualizaciones se gestionan a través de IBM Cloud.

Sin embargo, las actualizaciones de versión principales y secundarias (por ejemplo, 4.18 → 4.19 ) no son automáticas. Sigue el procedimiento de actualización manual para garantizar la seguridad de los datos y la estabilidad del clúster.

La actualización de ODF en un clúster Red Hat OpenShift Kubernetes Service consta de dos fases principales, ambas necesarias para que la actualización se realice correctamente.

  1. Actualice o sustituya los nodos trabajadores ODF.

    • ODF se basa en nodos de trabajo dedicados o etiquetados para alojar componentes de almacenamiento.
    • Durante una actualización mayor o menor, estos nodos de trabajo deben actualizarse o sustituirse para alinearse con las versiones Red Hat OpenShift y ODF de destino.
    • Este proceso ayuda a garantizar que los pods ODF (como los OSD, MON y gestores Ceph) se reprogramen correctamente y sigan funcionando sin pérdida de datos.
    • Asegúrese de que la capacidad sea la adecuada y de que los nodos estén en buen estado antes de iniciar este paso para mantener la disponibilidad del almacenamiento.
  2. Actualice el complemento ODF.

    • Una vez actualizados o sustituidos los nodos trabajadores, actualice el complemento ODF.
    • Este paso actualiza los operadores ODF, los controladores CSI y los componentes relacionados a la versión de destino.
    • Una vez finalizada la actualización del complemento, el clúster reconcilia automáticamente los recursos ODF y aplica los cambios necesarios.

    Ejecuta la validación posterior a la actualización para confirmar:

    • Salud del clúster ODF y Ceph
    • StorageClasses disponibilidad
    • Operaciones de lectura y escritura en PVC realizadas con éxito por las aplicaciones

Para obtener más información, consulte Actualización de ODF en clústeres VPC.

Ampliación del almacenamiento ODF en Red Hat OpenShift Kubernetes Service

Por lo tanto, a medida que aumentan sus cargas de trabajo y crecen las necesidades de almacenamiento, resulta esencial ampliar su infraestructura de almacenamiento. La ampliación en ODF es una operación clave del Día 2 que permite aumentar la capacidad de almacenamiento, mejorar el rendimiento y mantener la resistencia sin interrumpir las aplicaciones en ejecución.

En los entornos IBM Cloud Red Hat OpenShift Kubernetes Service, la expansión suele implicar la ampliación del grupo de trabajadores de almacenamiento. Esta operación se realiza con un tiempo de inactividad mínimo, lo que permite un crecimiento sin interrupciones de su clúster de almacenamiento.

  1. Añade nodos de trabajo a tu clúster de VPC. En el caso de clústeres multizona en los que el clúster de almacenamiento abarca tres zonas de disponibilidad, añada nodos de trabajo en múltiplos de tres para mantener el equilibrio entre zonas (por ejemplo, 3, 6 o 9). En el caso de los clústeres de una sola zona con escalado flexible habilitado, se pueden añadir nodos de uno en uno.

  2. Una vez añadidos los nodos, regístralos en ODF. Si ODF se ejecuta en todos los nodos de trabajo de su clúster, los nuevos nodos se añaden automáticamente a la topología de almacenamiento. Si ODF se ejecuta solo en un subconjunto de nodos de trabajo, pasa al siguiente paso.

  3. Si ODF se ejecuta en todos los nodos trabajadores de su clúster, los nuevos nodos trabajadores se añaden automáticamente a la topología del clúster de almacenamiento ODF. Si ODF se ejecuta solo en un subconjunto de nodos de trabajo, especifica los parámetros <workerNodes> privados en tu recurso personalizado OcsCluster. Añada los nombres de los nuevos nodos trabajadores a su despliegue ODF editando la definición de recursos personalizada. Modifica el recurso personalizado OcsCluster de la siguiente manera:

    • Buscar ocscluster

      oc get ocscluster
      
    • Edita el archivo de recursos personalizados de ocscluster y añade nuevos nodos de trabajo

      oc edit ocscluster <ocs cluster name> -o yaml
      
    • Guarda el archivo de recursos personalizados OcsCluster para volver a aplicarlo a tu clúster.

  4. Aumenta el valor de 'numOfOsd' en tu recurso personalizado OcsCluster para permitir que OCS implemente componentes ODF en los nodos de trabajo recién añadidos y aprovisione OSD adicionales en el clúster de almacenamiento.

    El ajuste de 'numOfOsd' depende tanto del número de discos OSD por nodo como del número de nodos añadidos. Por ejemplo, si cada nodo tiene 8 discos NVMe dedicados a los OSD, añadir 3 nodos aumenta el número de 'numOfOsd' en 8, mientras que añadir 6 nodos lo aumenta en 16.

  5. Comprueba el resultado ejecutando el siguiente comando :

    oc exec -n openshift-storage ${TOOLS_POD} -- ceph osd tree
    
  6. Comprueba que los nuevos nodos de trabajo se hayan añadido y estén distribuidos de forma uniforme en cada zona (en el caso de clústeres multizona) o que aparezcan como grupos de hosts individuales (en el caso de clústeres de escalado flexible de una sola zona), junto con el número correspondiente de OSD asignados a cada nodo.

Para obtener más información, consulta « Ampliar ODF añadiendo nodos de trabajo a tu clúster de VPC ».

Escalado flexible

El complemento ODF de IBM Cloud utiliza diferentes topologías de dominios de fallo en función de la configuración de su clúster:

  • Clústeres multizona (3 zonas de disponibilidad): El dominio de fallo está configurado en zone. Los OSD se aprovisionan en múltiplos de 3, un conjunto por zona, para mantener la replicación de datos y la alta disponibilidad entre zonas. El clúster de almacenamiento debe ampliarse en múltiplos de 3 para mantener el equilibrio entre las zonas.
  • Clústeres de una sola zona o clústeres con menos de tres zonas de disponibilidad: el escalado flexible se activa automáticamente. El dominio de fallo está configurado en host, lo que significa que cada nodo individual constituye un dominio de fallo distinto. Puedes añadir un nodo cada vez y ampliar el almacenamiento de forma granular.

A partir de ODF 4.21, el comportamiento de escalado flexible se determina automáticamente durante la implementación inicial en función de la topología del clúster y no se puede modificar posteriormente.

En una implementación de zona única o de escalado flexible, un grupo de replica-3 sigue funcionando aunque se pierda un único host. En una implementación multizona, un grupo de replica-3 sigue funcionando aunque se pierda una zona completa. Evalúa si la topología de tu clúster y su tolerancia a fallos asociada cumplen tus requisitos de resiliencia antes de implementar ODF en producción.

Para consultar el conjunto completo de parámetros de los complementos y los pasos de instalación desde la consola, véase Implementación de una base de datos de OpenShift en clústeres de VPC.

Rendimiento durante la ampliación de nodos: al añadir un nodo a un clúster ODF de escalado flexible, se activa el reequilibrio de datos de Ceph. En la prueba interna que se describe a continuación, las IOPS y el rendimiento se mantuvieron estables, mientras que la latencia de escritura aumentó temporalmente. En pruebas internas realizadas en un clúster de 3 nodos con 100 máquinas virtuales a 50 000 IOPS, se observaron los siguientes resultados:

Repercusión en el rendimiento de añadir un nodo con el escalado flexible activado
Etapa IOPS Rendimiento Latencia lectura Latencia grabación
Antes de añadir un nodo 50.000 195 MB/s 0.69 ms 1.37 ms
Durante la adición de un nodo 50.000 195 MB/s 1.24 ms 2.22 ms
Tras añadir el nodo 50.000 195 MB/s 0.67 ms 1.22 ms

La latencia de escritura vuelve a los valores normales una vez finalizado el reequilibrio. Planifica la incorporación de nodos durante los periodos de menor actividad de VM si tus cargas de trabajo son sensibles a los picos de latencia de escritura.

Resumen y buenas prácticas

  • Utilice ocs-storagecluster-ceph-rbd-virtualization para la mayoría de las implantaciones de virtualización de Red Hat OpenShift.
  • Cree un StorageClass personalizado sólo cuando existan requisitos específicos.
  • Al crear CephBlockPools, personalizado, configure siempre targetSizeRatio (por ejemplo, 0.1) e incluya todos los imageFeatures necesarios (especialmente exclusive-lock) en el StorageClass.
  • Los grupos con codificación de borrado para RBD son una función en fase de vista previa para desarrolladores (ODF 4.20 +) y no están compatibles para su uso en producción. Utilice grupos replicados ( rep2 o rep3 ) para todo el almacenamiento en producción de VM.
  • Valide siempre la página StorageClasses personalizada en un entorno que no sea de producción antes de utilizarla.
  • Evite utilizar RBD genéricos StorageClasses para discos VM en entornos de producción.
  • Para el almacenamiento cifrado VM, utilice la variante no cifrada StorageClass para los discos raíz y la variante cifrada para los discos de datos.
  • Planifica la capacidad para mantener el uso del clúster por debajo del 70 %. En el caso de los clústeres multizona, amplíe los nodos ODF en múltiplos de 3; los clústeres de una sola zona y de escalado flexible pueden ampliarse de forma granular.
  • Instale el agente invitado QEMU en todas las máquinas virtuales de producción para obtener instantáneas coherentes con las aplicaciones.
  • Supervise la salud de Ceph con regularidad e investigue HEALTH_WARN con prontitud antes de que los problemas se agraven.
  • Utiliza el perfil de recursos Performance para todas las implementaciones de producción NVMe en hardware físico. El perfil Balanced no proporciona recursos suficientes del daemon de Ceph para los nodos NVMe de alta densidad y limita las IOPS antes de que el hardware se sature.
  • Una vez implementado ODF en un servidor físico, aplica los parámetros de ajuste recomendados para Ceph NVMe ( RocksDBosd_memory_target``osd_op_num_shards_ssd, configuración del búfer de escritura) para maximizar las IOPS en las cargas de trabajo de disco de VM. Consulte Ajuste del rendimiento de Ceph para equipos físicos con NVMe.
  • Al seleccionar nodos durante la creación de un StorageSystem, seleccione únicamente los nodos del grupo de trabajadores de almacenamiento dedicado, no todos los nodos del clúster. Al seleccionar todos los nodos se crea un LocalVolumeSet sin nodeSelector, lo que hace que los futuros nodos de trabajo que no sean ODF se detecten automáticamente y requieran una limpieza manual.
  • El escalado flexible se habilita automáticamente para los clústeres de una sola zona y los de fewer-than-3-AZ; estas implementaciones utilizan un dominio de fallo host y pueden escalarse de forma granular. Los clústeres multizona utilizan un dominio de fallo zone y deben crecer en múltiplos de 3. El comportamiento de escalabilidad flexible se establece en la implementación inicial y no se puede modificar posteriormente.