Ir al contenidoIr a la navegación de la página: página anterior [tecla de acceso p]/página siguiente [tecla de acceso n]
documentation.suse.com / Documentación de SUSE Enterprise Storage 7.1 / Guía de administración y operaciones / Almacenamiento de datos en un clúster / Gestión de repositorios de almacenamiento
Se aplica a SUSE Enterprise Storage 7.1

18 Gestión de repositorios de almacenamiento

Ceph almacena los datos en repositorios. Los repositorios son grupos lógicos en los que se almacenan objetos. Al distribuir un clúster por primera vez sin crear un repositorio, Ceph utiliza los repositorios por defecto para almacenar los datos. Los siguientes aspectos importantes están relacionados con los repositorios de Ceph:

  • Resiliencia: los repositorios de Ceph proporcionan resiliencia al replicar o codificar los datos que contienen. Cada repositorio se puede definir como replicated (replicado) o como erasure coding (codificación de borrado). En el caso de los repositorios replicados, debe definir el número de réplicas o copias que tendrá cada objeto de datos en el repositorio. El número de copias (OSD, depósitos/hojas de CRUSH) que se pueden perder es uno menos que el número de réplicas. Con la codificación de borrado, se definen los valores de k y m, donde k es el número de fragmentos de datos y m es el número de fragmentos de codificación. Para los repositorios codificados de borrado, es el número de fragmentos de codificación lo que determina cuántos OSD (depósitos/hojas de CRUSH) se pueden perder sin perder datos.

  • Grupos de colocación: puede establecer el número de grupos de colocación del repositorio. En una configuración típica, se utilizan aproximadamente 100 grupos de colocación por OSD para proporcionar el equilibrio óptimo sin necesidad de utilizar demasiados recursos informáticos. Al configurar varios repositorios, asegúrese de que ha definido un número razonable de grupos de colocación para el conjunto de repositorio y clúster.

  • Reglas de CRUSH: cuando se almacenan datos en un repositorio, los objetos y sus réplicas (o los fragmentos en caso de los repositorios codificados de borrado) se colocan según el conjunto de reglas de CRUSH asignado al repositorio. Puede crear una regla de CRUSH personalizada para el repositorio.

  • Instantáneas: al crear instantáneas con ceph osd pool mksnap, se realiza una instantánea de un repositorio concreto.

Para organizar los datos en repositorios, puede enumerar, crear y eliminar repositorios. También puede ver las estadísticas de uso para cada repositorio.

18.1 Creación de un repositorio

Los repositorios se pueden crear de tipo replicated (replicado) para recuperar los OSD perdidos manteniendo varias copias de los objetos o de tipo erasure (de borrado) para obtener capacidad de tipo RAID5/6 generalizada. Los repositorios replicados requieren más almacenamiento en bruto, mientras que los repositorios codificados de borrado requieren menos. El tipo por defecto es replicated. Para obtener más información sobre los repositorios codificados de borrado, consulte el Capítulo 19, Repositorios codificados de borrado.

Para crear un repositorio replicado, ejecute:

cephuser@adm > ceph osd pool create POOL_NAME
Nota
Nota

El escalador automático se encargará del resto de los argumentos opcionales. Para obtener más información, consulte la Sección 17.4.12, “Habilitación del escalador automático de grupos de colocación”.

Para crear un repositorio codificado de borrado, ejecute:

cephuser@adm > ceph osd pool create POOL_NAME erasure CRUSH_RULESET_NAME \
EXPECTED_NUM_OBJECTS

El comando ceph osd pool create puede fallar si supera el límite de grupos de colocación por OSD. El límite se establece con la opción mon_max_pg_per_osd.

POOL_NAME

Nombre del repositorio. Debe ser único. Esta opción es obligatoria.

POOL_TYPE

El tipo de repositorio, que puede ser replicated (replicado) para recuperar los OSD perdidos manteniendo varias copias de los objetos o erasure (de borrado) para obtener un tipo de capacidad RAID5 generalizada. Los repositorios replicados requieren más espacio de almacenamiento en bruto, pero implementan todas las operaciones de Ceph. Los repositorios de borrado requieren menos espacio de almacenamiento en bruto, pero solo implementan un subconjunto de las operaciones disponibles. El tipo POOL_TYPE por defecto es replicated.

CRUSH_RULESET_NAME

El nombre de conjunto de reglas de CRUSH para el repositorio. Si el conjunto de reglas especificado no existe, se producirá un error -ENOENT al crear los repositorios replicados. Para los repositorios replicados es el conjunto de reglas especificado por la variable de configuración osd pool default CRUSH replicated ruleset. Este conjunto de reglas debe existir. Para los repositorios de borrado, es "erasure-code" si se utiliza el perfil de código de borrado por defecto o POOL_NAME de lo contrario. Este conjunto de reglas de creará de forma implícita si aún no existe.

erasure_code_profile=perfil

Solo para los repositorios codificados de borrado. Utiliza el perfil de código de borrado. Debe ser un perfil existente, según se haya definido mediante osd erasure-code-profile set.

Nota
Nota

Si por algún motivo el escalador automático se ha inhabilitado (pg_autoscale_mode desactivado) en un repositorio, puede calcular y definir el número de grupos de colocación manualmente. Consulte la Sección 17.4, “Grupos de colocación” (Grupos de colocación) para obtener información sobre cómo calcular el número adecuado de grupos de colocación para su repositorio.

EXPECTED_NUM_OBJECTS

El número previsto de objetos para este repositorio. Al definir este valor (junto con un valor negativo en filestore merge threshold), la división de carpetas del grupo de colocación se produce en el momento de la creación del repositorio. Esto evita el impacto de latencia cuando se divide una carpeta en tiempo de ejecución.

18.2 Listado de repositorios

Para enumerar los repositorios de su clúster, ejecute:

cephuser@adm > ceph osd pool ls

18.3 Cambio de nombre de un repositorio

Para renombrar un repositorio, ejecute:

cephuser@adm > ceph osd pool rename CURRENT_POOL_NAME NEW_POOL_NAME

Si ha renombrado de un repositorio y existen permisos por repositorio para los usuarios autenticados, debe actualizar los permisos con el nuevo nombre de repositorio.

18.4 Supresión de un repositorio

Aviso
Aviso: la supresión de un repositorio no se puede deshacer

Los repositorios pueden contener datos importantes. Si suprime un repositorio, desaparecerán todos sus datos y no habrá forma de recuperarlo.

Dado que la supresión accidental de un repositorio es un peligro real, Ceph implementa dos mecanismos que impiden suprimir los repositorios. Para suprimir un repositorio, primero es necesario inhabilitar ambos mecanismos.

El primero es el indicador NODELETE. Todos los repositorios lo tienen y el valor por defecto es "false". Para averiguar el valor de este indicador en un repositorio, ejecute el siguiente comando:

cephuser@adm > ceph osd pool get pool_name nodelete

Si la salida es nodelete: true, no podrá suprimir el repositorio hasta que cambie el indicador mediante el siguiente comando:

cephuser@adm > ceph osd pool set pool_name nodelete false

El segundo mecanismo es el parámetro de configuración para todo el clúster mon allow pool delete, que es "false" por defecto. Esto significa que, por defecto, no es posible suprimir un repositorio. El mensaje de error que se muestra es:

Error EPERM: pool deletion is disabled; you must first set the
mon_allow_pool_delete config option to true before you can destroy a pool

Para suprimir el repositorio a pesar de la configuración de seguridad, puede definir temporalmente mon allow pool delete como "true", suprimir el repositorio y, a continuación, volver a definir el parámetro como "false":

cephuser@adm > ceph tell mon.* injectargs --mon-allow-pool-delete=true
cephuser@adm > ceph osd pool delete pool_name pool_name --yes-i-really-really-mean-it
cephuser@adm > ceph tell mon.* injectargs --mon-allow-pool-delete=false

El comando injectargs muestra el siguiente mensaje:

injectargs:mon_allow_pool_delete = 'true' (not observed, change may require restart)

Es una simple confirmación de que el comando se ha ejecutado correctamente. No es un error.

Si ha creado sus propios conjuntos de reglas y reglas para un repositorio que ha creado, plantéese la posibilidad de eliminar estos elementos cuando ya no necesite el repositorio.

18.5 Otras operaciones

18.5.1 Asociación de repositorios a una aplicación

Para utilizar los grupos, debe asociarlos a una aplicación. Los repositorios que se utilizarán con CephFS y los creados automáticamente por Object Gateway se asocian de forma automática.

En otros casos, se puede asociar manualmente un nombre de aplicación de formato libre al repositorio:

cephuser@adm > ceph osd pool application enable POOL_NAME APPLICATION_NAME
Sugerencia
Sugerencia: nombres de las aplicaciones por defecto

CephFS utiliza el nombre de aplicación cephfs, el dispositivo de bloques RADOS utiliza rbd y Object Gateway utiliza rgw.

Un repositorio se puede asociar a varias aplicaciones y cada aplicación puede tener sus propios metadatos. Para mostrar la aplicación (o las aplicaciones) asociadas a un repositorio, emita el comando siguiente:

cephuser@adm > ceph osd pool application get pool_name

18.5.2 Definición de cuotas de repositorio

Puede definir cuotas de repositorio para el número máximo de bytes o el número máximo de objetos por repositorio.

cephuser@adm > ceph osd pool set-quota POOL_NAME MAX_OBJECTS OBJ_COUNT MAX_BYTES BYTES

Por ejemplo:

cephuser@adm > ceph osd pool set-quota data max_objects 10000

Para eliminar una cuota, establezca su valor en 0.

18.5.3 Visualización de estadísticas de repositorios

Para mostrar las estadísticas de uso de un repositorio, ejecute:

cephuser@adm > rados df
 POOL_NAME                    USED OBJECTS CLONES COPIES MISSING_ON_PRIMARY UNFOUND DEGRADED  RD_OPS      RD  WR_OPS      WR USED COMPR UNDER COMPR
 .rgw.root                 768 KiB       4      0     12                  0       0        0      44  44 KiB       4   4 KiB        0 B         0 B
 cephfs_data               960 KiB       5      0     15                  0       0        0    5502 2.1 MiB      14  11 KiB        0 B         0 B
 cephfs_metadata           1.5 MiB      22      0     66                  0       0        0      26  78 KiB     176 147 KiB        0 B         0 B
 default.rgw.buckets.index     0 B       1      0      3                  0       0        0       4   4 KiB       1     0 B        0 B         0 B
 default.rgw.control           0 B       8      0     24                  0       0        0       0     0 B       0     0 B        0 B         0 B
 default.rgw.log               0 B     207      0    621                  0       0        0 5372132 5.1 GiB 3579618     0 B        0 B         0 B
 default.rgw.meta          961 KiB       6      0     18                  0       0        0     155 140 KiB      14   7 KiB        0 B         0 B
 example_rbd_pool          2.1 MiB      18      0     54                  0       0        0 3350841 2.7 GiB     118  98 KiB        0 B         0 B
 iscsi-images              769 KiB       8      0     24                  0       0        0 1559261 1.3 GiB      61  42 KiB        0 B         0 B
 mirrored-pool             1.1 MiB      10      0     30                  0       0        0  475724 395 MiB      54  48 KiB        0 B         0 B
 pool2                         0 B       0      0      0                  0       0        0       0     0 B       0     0 B        0 B         0 B
 pool3                     333 MiB      37      0    111                  0       0        0 3169308 2.5 GiB   14847 118 MiB        0 B         0 B
 pool4                     1.1 MiB      13      0     39                  0       0        0 1379568 1.1 GiB   16840  16 MiB        0 B         0 B

A continuación se ofrece una descripción de cada columna:

USED

El número de bytes utilizados por el repositorio.

OBJECTS

El número de objetos almacenados en el repositorio.

CLONES

El número de clones almacenados en el repositorio. Cuando se crea una instantánea y se escribe en un objeto, en lugar de modificar el objeto original, se crea su clon para que no se modifique el contenido del objeto original del que se ha hecho la instantánea.

COPIES

El número de réplicas del objeto. Por ejemplo, si un repositorio replicado con el factor de réplica 3 tiene x objetos, normalmente tendrá 3 * x copias.

MISSING_ON_PRIMARY

El número de objetos en estado degradado (no existen todas las copias) mientras falta la copia en el OSD primario.

UNFOUND

El número de objetos no encontrados.

DEGRADED

El número de objetos degradados.

RD_OPS

El número total de operaciones de lectura pedidas para este repositorio.

RD

El número total de bytes leídos de este repositorio.

WR_OPS

El número total de operaciones de escritura pedidas para este repositorio.

WR

El número total de bytes escritos en el repositorio. Tenga en cuenta que no es lo mismo que el uso del repositorio, ya que es posible escribir en el mismo objeto muchas veces. El resultado es que el uso del repositorio seguirá siendo el mismo, pero el número de bytes escritos en el repositorio aumentará.

USED COMPR

El número de bytes asignados para datos comprimidos.

UNDER COMPR

El número de bytes que ocupan los datos comprimidos cuando no están comprimidos

18.5.4 Obtención de valores de repositorio

Para obtener un valor de un repositorio, ejecute el comando get siguiente:

cephuser@adm > ceph osd pool get POOL_NAME KEY

Puede obtener los valores de las claves indicadas en la Sección 18.5.5, “Definición de valores de repositorio”, además de las siguientes:

PG_NUM

El número de grupos de colocación del repositorio.

PGP_NUM

El número efectivo de grupos de colocación que se deben utilizar para calcular la colocación de los datos. El intervalo válido es igual o menor que PG_NUM.

Sugerencia
Sugerencia: todos los valores de un repositorio

Para mostrar todos los valores relacionados con un repositorio específico, ejecute:

 cephuser@adm > ceph osd pool get POOL_NAME all

18.5.5 Definición de valores de repositorio

Para definir un valor para un repositorio, ejecute:

cephuser@adm > ceph osd pool set POOL_NAME KEY VALUE

A continuación se muestra una lista de valores de repositorio ordenados por tipo de repositorio:

Valores de repositorio comunes
crash_replay_interval

El número de segundos que se debe permitir a los clientes que reproduzcan peticiones reconocidas, pero no confirmadas.

pg_num

El número de grupos de colocación del repositorio. Si añade nuevos OSD al clúster, verifique el valor de los grupos de colocación en todos los repositorios de destino para los nuevos OSD.

pgp_num

El número efectivo de grupos de colocación que se deben utilizar para calcular la colocación de los datos.

crush_ruleset

El conjunto de reglas que se debe utilizar para asignar la colocación en el clúster.

hashpspool

Establece (1) o anula (0) el indicador HASHPSPOOL en un repositorio. Cuando se habilita este indicador, el algoritmo cambia para mejorar la distribución de los grupos de colocación a los OSD. Después de habilitar el indicador en un repositorio cuyo indicador HASHPSPOOL se ha definido con el valor por defecto, 0, el clúster inicia la reposición para que todos los grupos vuelvan a la colocación correcta. Tenga en cuenta que esto puede crear una carga de E/S bastante sustancial en un clúster; por lo tanto, no habilite el indicador de 0 a 1 en clústeres de producción con mucha carga.

nodelete

Impide la eliminación del repositorio.

nopgchange

Impide que se modifiquen los valores pg_num y pgp_num del repositorio.

noscrub,nodeep-scrub

Inhabilita la depuración (profunda) de los datos para el repositorio específico, a fin de resolver un pico temporal de carga de E/S.

write_fadvise_dontneed

Defina o anule la definición del indicador WRITE_FADVISE_DONTNEED en las peticiones de lectura/escritura de un repositorio determinado para omitir la colocación de datos en el caché. El valor por defecto es false (falso). Se aplica tanto a los repositorios replicados como a los codificados de borrado.

scrub_min_interval

El intervalo mínimo en segundos para el borrado seguro de datos del repositorio cuando la carga del clúster es reducida. El valor 0 por defecto significa que se utiliza el valor osd_scrub_min_interval del archivo de configuración de Ceph.

scrub_max_interval

El intervalo máximo en segundos para el borrado seguro de datos del repositorio, independientemente de la carga del clúster. El valor 0 por defecto significa que se utiliza el valor osd_scrub_max_interval del archivo de configuración de Ceph.

deep_scrub_interval

El intervalo en segundos para el borrado seguro profundo del repositorio. El valor 0 por defecto significa que se utiliza el valor osd_deep_scrub del archivo de configuración de Ceph.

Valores de repositorio replicados
size

Define el número de réplicas para los objetos del repositorio. Consulte la Sección 18.5.6, “Definición del número de réplicas de objetos” para obtener más información. Solo para repositorios replicados.

min_size

Define el número mínimo de réplicas obligatorias para E/S. Consulte la Sección 18.5.6, “Definición del número de réplicas de objetos” para obtener más información. Solo para repositorios replicados.

nosizechange

Impide que se modifique el tamaño del repositorio. Cuando se crea un repositorio, el valor por defecto se toma del valor del parámetro osd_pool_default_flag_nosizechange, que es false por defecto. Se aplica a los repositorios replicados solo porque no se puede cambiar el tamaño de los repositorios codificados de borrado.

hit_set_type

Habilita el seguimiento de conjuntos de resultados para repositorios de caché. Consulte este artículo sobre los filtros de Bloom para obtener más información. Esta opción puede tener los valores siguientes: bloom, explicit_hash o explicit_object. El valor por defecto es bloom, los demás solo se emplean para realizar pruebas.

hit_set_count

El número de conjuntos de resultados que se deben almacenar en los repositorios de caché. Cuanto mayor sea el número, más RAM consumirá el daemon ceph-osd. El valor por defecto es 0.

hit_set_period

La duración en segundos de un periodo de conjunto de resultados para los repositorios de caché. Cuanto mayor sea el número, más RAM consumirá el daemon ceph-osd. Cuando se crea un repositorio, el valor por defecto se toma del valor del parámetro osd_tier_default_cache_hit_set_period, que es 1200 por defecto. Se aplica a los repositorios replicados solo porque los repositorios codificados de borrado no se pueden usar como nivel de caché.

hit_set_fpp

La probabilidad de falsos positivos para el tipo de conjunto de resultados del filtro de Bloom. Consulte este artículo sobre los filtros de Bloom para obtener más información. El intervalo válido es de 0.0 a 1.0; el valor predeterminado es 0.05

use_gmt_hitset

Forzar a los OSD para que utilicen marcas horarias GMT (hora del meridiano de Greenwich) al crear un conjunto de resultados para los niveles de caché. Esto garantiza que los nodos de distintas zonas horarias devuelvan el mismo resultado. El valor por defecto es 1. Este valor no debe cambiarse.

cache_target_dirty_ratio

El porcentaje del repositorio de caché que debe contener objetos modificados (sucios) para que el agente de niveles de caché los vacíe en el repositorio de almacenamiento. El valor por defecto es 0.4.

cache_target_dirty_high_ratio

El porcentaje del repositorio de caché que debe contener objetos modificados (sucios) para que el agente de niveles de caché los vacíe en el repositorio de almacenamiento a mayor velocidad. El valor por defecto es 0.6.

cache_target_full_ratio

El porcentaje del repositorio de caché que debe contener objetos no modificados (limpios) para que el agente de niveles de caché los expulse del repositorio de caché. El valor por defecto es 0.8.

target_max_bytes

Ceph comenzará a expulsar o limpiar objetos cuando se active el umbral establecido en max_bytes.

target_max_objects

Ceph comenzará a expulsar o limpiar objetos cuando se active el umbral establecido en max_objects.

hit_set_grade_decay_rate

Velocidad de caída de temperatura entre dos hit_sets sucesivos. El valor por defecto es 20.

hit_set_search_last_n

Deben contarse como máximo N apariciones en hit_sets para calcular la temperatura. El valor por defecto es 1.

cache_min_flush_age

El tiempo (en segundos) que debe transcurrir para que el agente de niveles de caché mueva un objeto del repositorio de caché al de almacenamiento.

cache_min_evict_age

El tiempo (en segundos) que debe transcurrir para que el agente de niveles de caché expulse un objeto del repositorio de caché.

Valores de repositorio codificado de borrado
fast_read

Si este indicador está habilitado en los repositorios codificados de borrado, las peticiones de lectura emite sublecturas a todos los shards y espera a recibir suficientes shards que descodificar para ofrecer servicio al cliente. En el caso de los complementos de borrado jerasure e isa, cuando vuelve la respuesta K, la petición del cliente se atiende de inmediato con los datos descodificados a partir de estas respuestas. Este enfoque provoca más carga de CPU y menos carga de disco/red. Actualmente, este indicador solo se admite para los repositorios codificados de borrado. El valor por defecto es 0.

18.5.6 Definición del número de réplicas de objetos

Para establecer el número de réplicas de objetos en un repositorio replicado, ejecute lo siguiente:

cephuser@adm > ceph osd pool set poolname size num-replicas

El valor num-replicas incluye el objeto en sí. Por ejemplo, si quiere que existan el objeto y dos copias (tres instancias en total), especifique 3.

Aviso
Aviso: no defina menos de 3 réplicas

Si establece un valor de 2 en num-replicas, solo habrá una copia de los datos. Si pierde una instancia de un objeto, para recuperarlo debe poder confiar en que la otra copia no haya sufrido daños, por ejemplo, desde el último borrado seguro (consulte la Sección 17.6, “Depuración de grupos de colocación” para obtener más detalles).

Si establece solo una réplica en el repositorio, significa que habrá exactamente una única instancia del objeto de datos. Si el OSD falla, se perderán los datos. Un posible uso de un repositorio con una réplica es el almacenamiento temporal de datos durante poco tiempo.

Sugerencia
Sugerencia: definición de más de 3 réplicas

Si se definen 4 réplicas para un repositorio, la fiabilidad aumenta en un 25%.

En el caso de dos centros de datos, debe definir al menos 4 réplicas para que un repositorio tenga dos copias en cada centro de datos. De este modo, si se pierde un centro de datos, aún existen dos copias y se puede perder un disco más sin que se pierdan datos.

Nota
Nota

Un objeto puede aceptar operaciones de E/S en modo degradado con menos réplicas de las indicadas en pool size. Para configurar un número mínimo de réplicas necesarias para las operaciones de E/S, debe utilizar el valor min_size. Por ejemplo:

cephuser@adm > ceph osd pool set data min_size 2

Esto garantiza que ningún objeto del repositorio de datos recibirá operaciones de E/S con menos réplicas de las indicadas en min_size.

Sugerencia
Sugerencia: obtención del número de réplicas de objetos

Para obtener el número de réplicas de objetos, ejecute lo siguiente:

cephuser@adm > ceph osd dump | grep 'replicated size'

Ceph enumerará los grupos con el atributo replicated size destacado. Ceph crea por defecto dos réplicas de cada objeto (un total de tres copias o un tamaño de 3).

18.6 Migración de repositorios

Al crear un repositorio (consulte la Sección 18.1, “Creación de un repositorio”) debe especificar sus parámetros iniciales, como el tipo de repositorio o el número de grupos de colocación. Si más adelante decide cambiar cualquiera de estos parámetros (por ejemplo, al convertir un repositorio replicado en uno codificado de borrado o al disminuir el número de grupos de colocación), debe migrar los datos del repositorio a otro cuyos parámetros se adapten a la distribución.

En esta sección se describen dos métodos de migración: un método de nivel de caché para la migración de datos de repositorios generales y un método que utiliza los subcomandos rbd migrate para migrar imágenes RBD a un repositorio nuevo. Cada método tiene sus particularidades y limitaciones.

18.6.1 Limitaciones

  • Puede usar el método de niveles de caché para migrar desde un repositorio replicado a un repositorio codificado de borrado o a otro repositorio replicado. No se admite la migración desde un repositorio codificado de borrado.

  • No se pueden migrar imágenes RBD ni exportaciones de CephFS de un repositorio replicado a un repositorio codificado de borrado. La razón es que los repositorios codificados de borrado no admiten omap, mientras que RBD y CephFS utilizan omap para almacenar sus metadatos. Por ejemplo, el objeto de encabezado del RBD no se podrá vaciar. Sin embargo, es posible migrar los datos al repositorio codificado de borrado y dejar los metadatos en el repositorio replicado.

  • El método rbd migration permite migrar imágenes con el mínimo tiempo de inactividad del cliente. Solo es necesario detener el cliente antes del paso de preparación e iniciarlo después. Tenga en cuenta que solo un cliente librbd que admita esta característica (Ceph Nautilus o posterior) podrá abrir la imagen justo después del paso de preparación, mientras que los clientes librbd más antiguos o los clientes krbd no podrán abrir la imagen hasta que ejecute el paso de asignación.

18.6.2 Migración mediante el nivel de caché

El principio básico es simple: incluir el repositorio que quiere migrar en un nivel de caché en orden inverso. En el ejemplo siguiente se migra un repositorio replicado denominado "testpool" a un repositorio codificado de borrado:

Procedimiento 18.1: Migración de un repositorio replicado a un repositorio codificado de borrado
  1. Cree un nuevo repositorio codificado de borrado y llámelo "newpool". Consulte la Sección 18.1, “Creación de un repositorio” para obtener una explicación detallada de los parámetros de creación de repositorios.

     cephuser@adm > ceph osd pool create newpool erasure default

    Verifique que el anillo de claves de cliente utilizado proporcione al menos las mismas capacidades para "newpool" que para "testpool".

    Ahora tiene dos repositorios: el original replicado y lleno de datos ("testpool") y el nuevo repositorio codificado de borrado vacío ("newpool"):

    Repositorios antes de la migración
    Figura 18.1: Repositorios antes de la migración
  2. Configure los niveles de caché y establezca el repositorio replicado "testpool" como repositorio de caché. La opción -force-nonempty permite añadir un nivel de caché incluso si el repositorio ya tiene datos:

    cephuser@adm > ceph tell mon.* injectargs \
     '--mon_debug_unsafe_allow_tier_with_nonempty_snaps=1'
    cephuser@adm > ceph osd tier add newpool testpool --force-nonempty
    cephuser@adm > ceph osd tier cache-mode testpool proxy
    Configuración de los niveles de caché
    Figura 18.2: Configuración de los niveles de caché
  3. Ejecute un traslado forzoso de todos los objetos del repositorio de caché al nuevo repositorio:

    cephuser@adm > rados -p testpool cache-flush-evict-all
    Limpieza de datos
    Figura 18.3: Limpieza de datos
  4. Hasta que todos los datos se hayan movido al nuevo repositorio codificado de borrado, es preciso especificar una superposición para que los objetos se busquen en el repositorio antiguo:

    cephuser@adm > ceph osd tier set-overlay newpool testpool

    Con la superposición, todas las operaciones se reenvían al repositorio replicado antiguo ("testpool"):

    Configuración de la superposición
    Figura 18.4: Configuración de la superposición

    Ahora puede configurar todos los clientes para que accedan a los objetos en el nuevo repositorio.

  5. Una vez migrados todos los datos al repositorio codificado de borrado "newpool", elimine la superposición y el repositorio de caché antiguo ("testpool"):

    cephuser@adm > ceph osd tier remove-overlay newpool
    cephuser@adm > ceph osd tier remove newpool testpool
    Migración completada
    Figura 18.5: Migración completada
  6. Ejecute:

    cephuser@adm > ceph tell mon.* injectargs \
     '--mon_debug_unsafe_allow_tier_with_nonempty_snaps=0'

18.6.3 Migración de imágenes RBD

A continuación se muestra la forma recomendada de migrar imágenes RBD de un repositorio replicado a otro repositorio replicado.

  1. Detenga el acceso de los clientes (como una máquina virtual) a la imagen RBD.

  2. Cree una nueva imagen en el repositorio de destino, con la imagen de origen como elemento padre:

    cephuser@adm > rbd migration prepare SRC_POOL/IMAGE TARGET_POOL/IMAGE
    Sugerencia
    Sugerencia: migración solo de datos a un repositorio codificado de borrado

    Si necesita migrar solo los datos de imagen a un nuevo repositorio codificado de borrado y dejar los metadatos en el repositorio replicado original, ejecute el siguiente comando:

    cephuser@adm > rbd migration prepare SRC_POOL/IMAGE \
     --data-pool TARGET_POOL/IMAGE
  3. Permita que los clientes accedan a la imagen en el repositorio de destino.

  4. Migre los datos al repositorio de destino:

    cephuser@adm > rbd migration execute SRC_POOL/IMAGE
  5. Elimine la imagen antigua:

    cephuser@adm > rbd migration commit SRC_POOL/IMAGE

18.7 Instantáneas de repositorios

Las instantáneas de repositorios son instantáneas del estado del repositorio Ceph completo. Con las instantáneas de repositorios, es posible conservar el historial de estado del repositorio. Crear instantáneas de repositorio consume un espacio de almacenamiento proporcional al tamaño del repositorio. Compruebe siempre que hay espacio de almacenamiento suficiente antes de crear la instantánea de un repositorio.

18.7.1 Creación de una instantánea de un repositorio

Para crear una instantánea de un repositorio, ejecute:

cephuser@adm > ceph osd pool mksnap POOL-NAME SNAP-NAME

Por ejemplo:

cephuser@adm > ceph osd pool mksnap pool1 snap1
created pool pool1 snap snap1

18.7.2 Lista de las instantáneas de un repositorio

Para mostrar las instantáneas existentes de un repositorio, ejecute:

cephuser@adm > rados lssnap -p POOL_NAME

Por ejemplo:

cephuser@adm > rados lssnap -p pool1
1	snap1	2018.12.13 09:36:20
2	snap2	2018.12.13 09:46:03
2 snaps

18.7.3 Eliminación de una instantánea de un repositorio

Para eliminar una instantánea de un repositorio, ejecute:

cephuser@adm > ceph osd pool rmsnap POOL-NAME SNAP-NAME

18.8 Compresión de datos

BlueStore (encontrará más información en el Sección 1.4, “BlueStore”) proporciona compresión de datos sobre la marcha para ahorrar espacio en disco. La relación de compresión depende de los datos almacenados en el sistema. Tenga en cuenta que la compresión/descompresión requiere potencia de CPU adicional.

Puede configurar la compresión de datos a nivel global (consulte la Sección 18.8.3, “Opciones de compresión global”) y, a continuación, sustituir la configuración específica para cada repositorio individual.

Es posible habilitar o inhabilitar la compresión de datos del repositorio o cambiar el algoritmo y el modo de compresión en cualquier momento, independientemente de si el repositorio contiene datos o no.

No se aplicará ninguna compresión a los datos existentes después de habilitar la compresión del repositorio.

Después de inhabilitar la compresión de un repositorio, todos sus datos se descomprimirán.

18.8.1 Habilitación de la compresión

Para habilitar la compresión de datos para un repositorio denominado POOL_NAME, ejecute el siguiente comando:

cephuser@adm > ceph osd pool set POOL_NAME compression_algorithm COMPRESSION_ALGORITHM
cephuser@adm > ceph osd pool set POOL_NAME compression_mode COMPRESSION_MODE
Sugerencia
Sugerencia: inhabilitación de la compresión de repositorios

Para inhabilitar la compresión de datos para un repositorio, utilice "none" como algoritmo de compresión:

cephuser@adm > ceph osd pool set POOL_NAME compression_algorithm none

18.8.2 Opciones de compresión de repositorios

Este es un listado completo de las opciones de compresión:

compression_algorithm

Los valores posibles son none, zstd y snappy. El valor por defecto es snappy.

El algoritmo de compresión utilizado depende del caso de uso específico. A continuación s ofrecen varias recomendaciones:

  • Utilice el valor por defecto, snappy, si no tiene una buena razón para cambiarlo.

  • zstd ofrece una buena relación de compresión, pero causa una alta sobrecarga de CPU cuando comprime pequeñas cantidades de datos.

  • Ejecute una comparativa de estos algoritmos en una muestra de sus datos reales y observe el uso de CPU y memoria en su clúster.

compression_mode

Los valores posibles son none, aggressive, passive y force. El valor por defecto es none.

  • none: no comprimir nunca

  • passive: comprimir si se sugiere COMPRESSIBLE

  • aggressive: comprimir a menos que se sugiera INCOMPRESSIBLE

  • force: comprimir siempre

compression_required_ratio

Valor: doble, proporción = SIZE_COMPRESSED / SIZE_ORIGINAL. El valor por defecto es 0.875, lo que significa que si la compresión no reduce el espacio ocupado en al menos un 12,5 %, el objeto no se comprimirá.

Los objetos por encima de esta proporción no se almacenarán comprimidos, ya que el beneficio neto es bajo.

compression_max_blob_size

Valor: entero sin firmar, tamaño en bytes. Por defecto: 0

El tamaño máximo de los objetos comprimidos.

compression_min_blob_size

Valor: entero sin firmar, tamaño en bytes. Por defecto: 0

El tamaño mínimo de los objetos comprimidos.

18.8.3 Opciones de compresión global

Las siguientes opciones de configuración se pueden definir en la configuración de Ceph y se aplican a todos los OSD y no a un solo repositorio. La configuración específica del repositorio indicada en la Sección 18.8.2, “Opciones de compresión de repositorios” tendrá prioridad.

bluestore_compression_algorithm

Consulte la compression_algorithm

bluestore_compression_mode

Consulte la compression_mode

bluestore_compression_required_ratio

Consulte la compression_required_ratio

bluestore_compression_min_blob_size

Valor: entero sin firmar, tamaño en bytes. Por defecto: 0

El tamaño mínimo de los objetos comprimidos. La configuración se omite por defecto si se usa bluestore_compression_min_blob_size_hdd y bluestore_compression_min_blob_size_ssd. Tiene prioridad cuando se define un valor distinto a cero.

bluestore_compression_max_blob_size

Valor: entero sin firmar, tamaño en bytes. Por defecto: 0

El tamaño máximo de los objetos que se comprimen antes de dividirse en fragmentos más pequeños. La configuración se omite por defecto si se usa bluestore_compression_max_blob_size_hdd y bluestore_compression_max_blob_size_ssd. Tiene prioridad cuando se define un valor distinto a cero.

bluestore_compression_min_blob_size_ssd

Valor: entero sin firmar, tamaño en bytes. Por defecto: 8K

Tamaño mínimo de los objetos comprimidos y almacenados en la unidad de estado sólido.

bluestore_compression_max_blob_size_ssd

Valor: entero sin firmar, tamaño en bytes. Por defecto: 64K

El tamaño máximo de los objetos que se comprimen y se almacenan en unidades de estado sólido antes de dividirse en fragmentos más pequeños.

bluestore_compression_min_blob_size_hdd

Valor: entero sin firmar, tamaño en bytes. Por defecto: 128K

Tamaño mínimo de los objetos comprimidos y almacenados en los discos duros.

bluestore_compression_max_blob_size_hdd

Valor: entero sin firmar, tamaño en bytes. Por defecto: 512K

El tamaño máximo de los objetos que se comprimen y se almacenan en discos duros antes de dividirse en fragmentos más pequeños.