Saltar a contenidoSaltar a navegación de páginas: página anterior [tecla acceso p]/página siguiente [tecla acceso n]
Se aplica a SUSE Enterprise Storage 5

7 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 repositorios aportan lo siguiente:

  • Capacidad de recuperación: puede establecer cuántos OSD pueden fallar sin que se pierda ningún dato. En el caso de los repositorios replicados, es el número de copias o réplicas deseadas de un objeto. Los repositorios nuevos se crean con un número predeterminado por defecto de réplicas establecido en 3. Dado que en una configuración típica se almacenan el objeto y una copia adicional, debe definir un valor de número de réplicas igual a 2. En los repositorios codificados de borrado, se trata del número de fragmentos de codificación (es decir m = 2 en el perfil de código de borrado).

  • Grupos de colocación: estructuras de datos internas para almacenar datos en un repositorio entre los OSD. La forma en que ceph almacena datos en los grupos de colocación se define en una asignación CRUSH. 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 almacena datos en un repositorio, un conjunto de reglas de CRUSH asignada al repositorio permite que CRUSH identifique una regla para la colocación del objeto y sus réplicas (o fragmentos en repositorios de repositorios codificados de borrado) en el clúster. 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.

  • Definición de la propiedad: puede configurar un ID de usuario como propietario de un repositorio.

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

7.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. Los repositorios que se vayan a utilizar con RBD deben inicializarse mediante la herramienta rbd (consulte la Sección 8.1, “Comandos del dispositivo de bloques” para obtener más información).

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

root # 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 los metadatos de la aplicación para un determinado repositorio, emplee el siguiente comando:

root # ceph osd pool application get pool_name

7.2 Gestión de los repositorios

En esta sección encontrará información práctica para realizar tareas básicas relacionadas con los repositorios. Descubrirá cómo enumerar, crear y eliminar repositorios, así como visualizar las estadísticas de los repositorios o gestionar sus instantáneas.

7.2.1 Enumeración de repositorios

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

root # ceph osd lspools
0 rbd, 1 photo_collection, 2 foo_pool,

7.2.2 Creación de repositorios

Para crear un repositorio replicado, ejecute:

root # ceph osd pool create pool_name pg_num pgp_num replicated crush_ruleset_name \
expected_num_objects

Para crear un repositorio codificado de borrado, ejecute:

root # ceph osd pool create pool_name pg_num pgp_num erasure erasure_code_profile \
 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.

pg_num

El número total de grupos de colocación para el repositorio. Esta opción es obligatoria. El valor por defecto es 8.

pgp_num

El número total de grupos de colocación para fines de colocación. Debe ser idéntico al número total de grupos de colocación, salvo en situaciones en las que se dividan los grupos de colocación. Esta opción es obligatoria. El valor por defecto es 8.

pgp_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 codificados de borrado requieren menos espacio almacenamiento en bruto, pero solo implementan un subconjunto de las operaciones disponibles. El valor por defecto es "replicated" (replicado).

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 el repositorio replicado. No obstante, el repositorio replicado creará un nuevo conjunto de reglas de borrado con el nombre que se indique. El valor por defecto es "erasure-code" (código de borrado) para un repositorio codificado de borrado. Recoge la variable de configuración de Ceph osd_pool_default_crush_replicated_ruleset para el repositorio replicado.

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.

Al crear un repositorio, establezca un valor razonable de número de grupos de colocación (por ejemplo, 100). Tenga en cuenta también el número total de grupos de colocación por OSD. Los grupos de colocación consumen muchos recursos, por lo que el rendimiento se degradará si tiene repositorios con muchos grupos (por ejemplo, 50 repositorios con 100 grupos de colocación cada uno). El punto de rendimiento decreciente depende de la capacidad del host OSD.

Consulte Placement Groups (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. Si define este valor, la división de la carpeta de grupos de colocación se producirá al crear el repositorio. Esto evita el impacto de latencia cuando se divide una carpeta en tiempo de ejecución.

7.2.3 Definición de las 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.

root # ceph osd pool set-quota pool-name max_objects obj-count max_bytes bytes

Por ejemplo:

root # ceph osd pool set-quota data max_objects 10000

Para eliminar una cuota, establezca su valor en 0.

7.2.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:

root # 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:

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":

root # ceph tell mon.* injectargs --mon-allow-pool-delete=true
root # ceph osd pool delete pool_name pool_name --yes-i-really-really-mean-it
root # 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. Si ha creado usuarios con permisos estrictamente para un repositorio que ya no existe, plantéese también la posibilidad de suprimir dichos usuarios.

7.2.5 Cambios en el nombre de un repositorio

Para renombrar un repositorio, ejecute:

root # 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.

7.2.6 Visualización de estadísticas del repositorio

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

root # rados df
pool name  category  KB  objects   lones  degraded  unfound  rd  rd KB  wr  wr KB
cold-storage    -   228   1         0      0          0       0   0      1   228
data            -    1    4         0      0          0       0   0      4    4
hot-storage     -    1    2         0      0          0       15  10     5   231
metadata        -    0    0         0      0          0       0   0      0    0
pool1           -    0    0         0      0          0       0   0      0    0
rbd             -    0    0         0      0          0       0   0      0    0
total used          266268          7
total avail       27966296
total space       28232564

7.2.7 Definición de los valores de repositorio

Para definir un valor para un repositorio, ejecute:

root # ceph osd pool set pool-name key value

Puede definir valores para las siguientes claves:

size

Define el número de réplicas para los objetos del repositorio. Consulte la Sección 7.2.9, “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 7.2.9, “Definición del número de réplicas de objetos” para obtener más información. Solo para repositorios replicados.

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 OSD a su clúster, deberá aumentar el valor de los grupos de colocación. Consulte la Sección 7.2.11, “Aumento del número de grupos de colocación” para obtener más información.

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 como 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 considerable de E/S en un clúster, por lo que debe llevarse a cabo una buena planificación en los clústeres de producción con una carga elevada.

nodelete

Impide la eliminación del repositorio.

nopgchange

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

nosizechange

Impide que se modifique el tamaño del repositorio.

write_fadvise_dontneed

Establece o anula el indicador WRITE_FADVISE_DONTNEED en un repositorio.

noscrub,nodeep-scrub

Se inhabilita el borrado seguro (profundo) de los datos para el repositorio específico, a fin de resolver un pico temporal de carga de E/S.

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.

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 .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 .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 .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é.

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. Esto permite obtener algunos recursos para mejorar el rendimiento. Actualmente, este indicador solo se admite para los repositorios codificados de borrado. El valor por defecto es 0.

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.

7.2.8 Obtención de los valores del repositorio

Para obtener un valor de un repositorio, ejecute:

root # ceph osd pool get pool-name key

Puede obtener los valores de las claves indicadas en la Sección 7.2.7, “Definición de los 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.

7.2.9 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:

root # ceph osd pool set poolname size num-replicas

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

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 ha sufrido daños, por ejemplo, desde el último borrado seguro.

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.

La configuración de más de tres réplicas para un repositorio implica solo un pequeño incremento en la fiabilidad, pero puede ser adecuado en raras ocasiones. Recuerde que a mayor número de réplicas, más espacio de disco necesitará para almacenar las copias de los objetos. Si necesita un nivel de seguridad máximo para sus datos, recomendamos utilizar repositorios codificados de borrado. Para obtener más información, consulte: Capítulo 9, Repositorios codificados de borrado.

Aviso
Aviso: se recomienda usar más de dos réplicas

Es muy recomendable no utilizar solo 2 réplicas. En caso de que falle un OSD, es muy probable que se produzca un fallo del segundo debido a una gran carga de trabajo durante la recuperación.

Por ejemplo:

root # ceph osd pool set data size 3

Puede ejecutar este comando para cada repositorio.

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:

root # 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.

7.2.10 Obtención del número de réplicas de objetos

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

root # 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).

7.2.11 Aumento del número de grupos de colocación

Al crear un repositorio nuevo, debe especificar el número de grupos de colocación del repositorio (consulte la Sección 7.2.2, “Creación de repositorios”). Después de añadir más OSD al clúster, normalmente deberá aumentar también el número de grupos de colocación por razones de rendimiento y de durabilidad de los datos. Para cada grupo de colocación, los nodos de OSD y de Monitor necesitan recursos de memoria, red y CPU en todo momento, y aún más durante la recuperación. Por lo tanto, reducir el número de grupos de colocación permite ahorrar grandes cantidades de recursos.

Aviso
Aviso: valor demasiado elevado de pg_num

Al modificar el valor de pg_num de un repositorio, puede ocurrir que el nuevo número de grupos de colocación supere el límite permitido. Por ejemplo

root # ceph osd pool set rbd pg_num 4096
 Error E2BIG: specified pg_num 3500 is too large (creating 4096 new PGs \
 on ~64 OSDs exceeds per-OSD max of 32)

El límite impide una división extrema de los grupos de colocación y se deriva del valor de mon_osd_max_split_count.

Determinar el número adecuado de grupos de colocación para un clúster redimensionado es una tarea compleja. Un método consiste en aumentar continuamente el número de grupos de colocación hasta un estado que ofrezca un rendimiento óptimo del clúster. Para determinar el nuevo número de grupos de colocación, debe obtener el valor del parámetro mon_osd_max_split_count y sumarlo al número actual de grupos de colocación. Para hacerse una idea básica, eche un vistazo al siguiente guion:

cephadm > max_inc=`ceph daemon mon.a config get mon_osd_max_split_count 2>&1 \
  | tr -d '\n ' | sed 's/.*"\([[:digit:]]\+\)".*/\1/'`
cephadm > pg_num=`ceph osd pool get rbd pg_num | cut -f2 -d: | tr -d ' '`
cephadm > echo "current pg_num value: $pg_num, max increment: $max_inc"
cephadm > next_pg_num="$(($pg_num+$max_inc))"
cephadm > echo "allowed increment of pg_num: $next_pg_num"

Después de calcular el siguiente número de grupos de colocación, auméntelo con

root # ceph osd pool set pool_name pg_num next_pg_num

7.2.12 Adición de un repositorio

Después de distribuir un clúster por primera vez, Ceph utiliza los repositorios por defecto para almacenar datos. Posteriormente, podrá crear un nuevo repositorio con

root # ceph osd pool create

Para obtener más información sobre la creación de repositorios en el clúster, consulte la Sección 7.2.2, “Creación de repositorios”.

7.3 Migración de repositorios

Al crear un repositorio (consulte la Sección 7.2.2, “Creación de repositorios”) debe especificar sus parámetros iniciales, como el tipo de repositorio o el número de grupos de colocación. Si posteriormente decide cambiar alguno de estos parámetros después de añadir datos al repositorio, deberá migrar los datos del repositorio a otro cuyos parámetros se adapten a su distribución.

Existen varios métodos para migrar repositorios. Recomendamos utilizar los niveles de caché, ya que es un método transparente, reduce el tiempo de inactividad del clúster y evita la duplicación de todos los datos del repositorio.

7.3.1 Migración mediante niveles de caché

El principio básico es simple: incluir el repositorio que quiere migrar en un nivel de caché en orden inverso. Encontrará más información sobre los niveles de caché en el Capítulo 10, Niveles de caché. Por ejemplo, para migrar un repositorio replicado llamado "testpool" a un repositorio codificado de borrado, siga estos pasos:

Procedimiento 7.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":

    root@minion > ceph osd pool create newpool 4096 4096 erasure default

    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 7.1: Repositorios antes de la migración
  2. Configure los niveles de caché y establezca el repositorio replicado "testpool" como repositorio de caché:

    root@minion > ceph osd tier add newpool testpool --force-nonempty
    root@minion > ceph osd cache-mode testpool forward

    A partir de ahora, todos los objetos nuevos se crearán en el nuevo repositorio:

    Configuración de los niveles de caché
    Figura 7.2: Configuración de los niveles de caché
  3. Ejecute un traslado forzoso de todos los objetos del repositorio de caché al nuevo repositorio:

    root@minion > rados -p testpool cache-flush-evict-all
    Limpieza de datos
    Figura 7.3: Limpieza de datos
  4. Traslade todos los clientes al nuevo repositorio. 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:

    root@minion > 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 7.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"):

    root@minion > ceph osd tier remove-overlay newpool
    root@minion > ceph osd tier remove newpool testpool
    Migración completada
    Figura 7.5: Migración completada

7.4 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. Según el tamaño del repositorio, la creación de instantáneas de repositorios puede requerir mucho espacio de almacenamiento. Compruebe siempre que hay espacio de almacenamiento suficiente antes de crear la instantánea de un repositorio.

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

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

root # ceph osd pool mksnap pool-name snap-name

Por ejemplo:

root # ceph osd pool mksnap pool1 snapshot1
created pool pool1 snap snapshot1

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

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

root # ceph osd pool rmsnap pool-name snap-name

7.5 Compresión de datos

A partir de SUSE Enterprise Storage 5, BlueStore proporciona compresión de datos sobre la marcha para ahorrar espacio de disco.

7.5.1 Cómo habilitar la compresión

La compresión de datos de un repositorio puede habilitarse con:

root # ceph osd pool set POOL_NAME ompression_algorithm snappy
root # ceph osd pool set POOL_NAME compression_mode aggressive

Sustituya POOL_NAME por el repositorio para el que desea habilitar la compresión.

7.5.2 Opciones de compresión de repositorio

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

compression_algorithm

Valores: none, zstd, snappy. Por defecto: snappy.

El algoritmo de compresión utilizado depende del caso de uso específico. Estas son algunas de nuestras recomendaciones:

  • No utilice zlib: los otros algoritmos son mejores.

  • Si necesita un buen índice de compresión, utilice zstd. Tenga en cuenta que zstd no se recomienda para BlueStore debido a la alta sobrecarga de CPU al comprimir pequeñas cantidades de datos.

  • Si necesita reducir el uso de CPU, use lz4 o snappy.

  • 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

Valor: {none, aggressive, passive, force}. Por defecto: none.

  • none: no comprimir nunca

  • passive: comprimir si se sugiere COMPRESSIBLE

  • aggressive: comprimir a menos que se sugiera INCOMPRESSIBLE

  • force: comprimir siempre

Para obtener información acerca de cómo definir los indicadores COMPRESSIBLE o INCOMPRESSIBLE, consulte http://docs.ceph.com/docs/doc-12.2.0-major-changes/rados/api/librados/#rados_set_alloc_hint.

compression_required_ratio

Valor: doble, proporción = SIZE_COMPRESSED / SIZE_ORIGINAL. Por defecto: .875

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ínimo de los objetos comprimidos.

compression_min_blob_size

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

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

7.5.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 de repositorio indicada en la Sección 7.5.2, “Opciones de compresión de repositorio” tendrá prioridad.

bluestore_compression_algorithm

Valores: none, zstd, snappy, zlib. Por defecto: snappy.

El algoritmo de compresión utilizado depende del caso de uso específico. Estas son algunas de nuestras recomendaciones:

  • No utilice zlib: los otros algoritmos son mejores.

  • Si necesita un buen índice de compresión, utilice zstd. Tenga en cuenta que zstd no se recomienda para BlueStore debido a la alta sobrecarga de CPU al comprimir pequeñas cantidades de datos.

  • Si necesita reducir el uso de CPU, use lz4 o snappy.

  • 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.

bluestore_compression_mode

Valor: {none, aggressive, passive, force}. Por defecto: none.

  • none: no comprimir nunca

  • passive: comprimir si se sugiere COMPRESSIBLE

  • aggressive: comprimir a menos que se sugiera INCOMPRESSIBLE

  • force: comprimir siempre

Para obtener información acerca de cómo definir los indicadores COMPRESSIBLE o INCOMPRESSIBLE, consulte http://docs.ceph.com/docs/doc-12.2.0-major-changes/rados/api/librados/#rados_set_alloc_hint.

bluestore_compression_required_ratio

Valor: doble, proporción = SIZE_COMPRESSED / SIZE_ORIGINAL. Por defecto: .875

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

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.

bluestore_compression_max_blob_size

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

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

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

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

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

Tamaño máximo de los objetos comprimidos y almacenados en los discos duros.

Imprimir esta página