Jump to contentJump to page navigation: previous page [access key p]/next page [access key n]
Aplica-se a SUSE Enterprise Storage 5

7 Gerenciando pools de armazenamento

O Ceph armazena dados em pools. Pools são grupos lógicos para armazenamento de objetos. Quando você implanta um cluster pela primeira vez sem criar um pool, o Ceph usa os pools padrão para armazenar os dados. Um pool oferece a você:

  • Resiliência: Agora você pode definir quantos OSDs podem falhar sem perda de dados. Para os pools replicados, esse é o número desejado de cópias/réplicas de um objeto. Novos pools são criados com um total padrão de réplicas definido como 3. Como a configuração típica armazena um objeto e uma cópia adicional, você precisa definir o total de réplicas como 2. Para os pools com codificação de eliminação, esse é o número de pacotes de codificação (que é m=2 no perfil de codificação de eliminação).

  • Grupos de Posicionamento: São estruturas internas de dados para armazenar dados em um pool em vários OSDs. O modo como o Ceph armazena os dados nos PGs é definido em um Mapa CRUSH. Você pode definir o número de grupos de posicionamento para o pool. Uma configuração típica usa aproximadamente 100 grupos de posicionamento por OSD para possibilitar o equilíbrio ideal sem usar muitos recursos de computação. Ao configurar vários pools, tenha cuidado para garantir que você defina um número adequado de grupos de posicionamento para o pool e o cluster como um todo.

  • Regras CRUSH: Quando você armazena dados em um pool, um conjunto de regras CRUSH mapeado para o pool permite que o CRUSH identifique uma regra para o posicionamento do objeto e suas réplicas (ou pacotes para os pools com codificação de eliminação) no cluster. Você pode criar uma regra CRUSH personalizada para o pool.

  • Instantâneos: Ao criar instantâneos com ceph osd pool mksnap, você efetivamente captura um instantâneo de determinado pool.

  • Definir Propriedade: Você pode definir um ID de usuário como proprietário de um pool.

Para organizar dados em pools, você pode listar, criar e remover pools. Você também pode ver as estatísticas de uso para cada pool.

7.1 Associar pools a um aplicativo

Antes de usar os pools, você precisa associá-los a um aplicativo. Os pools que serão usados com o CephFS ou os pools criados automaticamente pelo Object Gateway são associados de forma automática. Os pools planejados para uso com o RBD precisam ser inicializados usando a ferramenta rbd (consulte a Seção 8.1, “Comandos do dispositivo de blocos” para obter mais informações).

Nos outros casos, você pode associar manualmente um nome de aplicativo de formato livre a um pool:

root # ceph osd pool application enable pool_name application_name
Dica
Dica: Nomes de aplicativos padrão

O CephFS usa o nome do aplicativo cephfs, o Dispositivo de Blocos RADOS usa o rbd e o Object Gateway usa o rgw.

É possível associar um pool a vários aplicativos, e cada aplicativo tem seus próprios metadados. Você pode exibir os metadados do aplicativo para determinado pool usando o seguinte comando:

root # ceph osd pool application get pool_name

7.2 Pools operacionais

Esta seção apresenta informações práticas para realizar tarefas básicas com pools. Você aprenderá como listar, criar e apagar pools, bem como mostrar as estatísticas ou gerenciar instantâneos de um pool.

7.2.1 Listar pools

Para listar os pools do cluster, execute:

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

7.2.2 Criar um pool

Para criar um pool replicado, execute:

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

Para criar um pool com codificação de eliminação, execute:

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

O ceph osd pool create poderá falhar se você exceder o limite de grupos de posicionamento por OSD. O limite é definido com a opção mon_max_pg_per_osd.

pool_name

O nome do pool. Ele deve ser exclusivo. Essa opção é obrigatória.

pg_num

O número total de grupos de posicionamento para o pool. Essa opção é obrigatória. O valor padrão é 8.

pgp_num

O número total de grupos de posicionamento para fins de posicionamento. Ele deve ser igual ao número total de grupos de posicionamento, exceto para cenários de divisão de grupo de posicionamento. Essa opção é obrigatória. O valor padrão é 8.

pgp_type

O tipo de pool, que pode ser replicated para recuperação de OSDs perdidos mantendo várias cópias dos objetos, ou erasure para aplicar um tipo de recurso RAID5 generalizado. Os pools replicados exigem mais armazenamento bruto, porém implementam todas as operações do Ceph. Os pools com codificação de eliminação exigem menos armazenamento bruto, porém implementam apenas um subconjunto de operações disponíveis. O padrão é “replicated”.

crush_ruleset_name

O nome do conjunto de regras CRUSH para este pool. Se o conjunto de regras especificado não existir, haverá falha na criação do pool replicado com -ENOENT. No entanto, o pool replicado criará um novo conjunto de regras de eliminação com o nome especificado. O valor padrão é “erasure-code” para um pool com codificação de eliminação. Coleta a variável de configuração do Ceph osd_pool_default_crush_replicated_ruleset para o pool replicado.

erasure_code_profile=profile

Apenas para pools com codificação de eliminação. Use o perfil de codificação de eliminação. Ele deve ser um perfil existente, conforme definido por osd erasure-code-profile set.

Ao criar um pool, defina o número de grupos de posicionamento como um valor adequado (por exemplo, 100). Considere também o número total de grupos de posicionamento por OSD. Os grupos de posicionamento são onerosos em termos de computação, portanto, o desempenho será prejudicado se você tiver muitos pools com vários grupos de posicionamento (por exemplo, 50 pools com 100 grupos de posicionamento cada). O ponto do rendimento regressivo depende da capacidade do host OSD.

Consulte Grupos de Posicionamento para obter detalhes sobre como calcular um número apropriado de grupos de posicionamento para seu pool.

expected_num_objects

O número esperado de objetos para este pool. Ao definir esse valor, a divisão da pasta do PG ocorre no momento da criação do pool. Isso evita o impacto da latência com uma divisão de pasta em tempo de execução.

7.2.3 Definir cotas do pool

Você pode definir cotas do pool para o número máximo de bytes e/ou para o número máximo de objetos por pool.

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

Por exemplo:

root # ceph osd pool set-quota data max_objects 10000

Para remover uma cota, defina o valor como 0.

7.2.4 Apagar um pool

Atenção
Atenção: A exclusão do pool não é reversível

Os pools podem conter dados importantes. Apagar um pool faz com que todos os dados nele desapareçam, e não é possível recuperá-los.

Como a exclusão acidental do pool é um perigo real, o Ceph implementa dois mecanismos que impedem que os pools sejam apagados. Os dois mecanismos devem ser desabilitados antes que um pool possa ser apagado.

O primeiro mecanismo é o flag NODELETE. Cada pool tem esse flag, e seu valor padrão é “false”. Para saber o valor desse flag em um pool, execute o seguinte comando:

root # ceph osd pool get pool_name nodelete

Se a saída for nodelete: true, não será possível apagar o pool até você mudar o flag usando o seguinte comando:

ceph osd pool set pool_name nodelete false

O segundo mecanismo é o parâmetro de configuração de todo o cluster mon allow pool delete, que assume como padrão “false”. Por padrão, isso significa que não é possível apagar um pool. A mensagem de erro exibida é:

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 apagar o pool mesmo com essa configuração de segurança, você pode definir mon allow pool delete temporariamente como “true”, apagar o pool e, em seguida, reverter o parâmetro para “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

O comando injectargs exibe a seguinte mensagem:

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

Trata-se apenas de uma confirmação de que o comando foi executado com êxito. Isso não é um erro.

Se você criou seus próprios conjuntos de regras e suas próprias regras para um pool, convém removê-los quando ele não for mais necessário. Se você criou usuários com permissões estritamente para um pool que não existe mais, convém apagá-los também.

7.2.5 Renomear um pool

Para renomear um pool, execute:

root # ceph osd pool rename current-pool-name new-pool-name

Se você renomear um pool e tiver recursos por pool para um usuário autenticado, deverá atualizar os recursos do usuário com o novo nome do pool.

7.2.6 Mostrar as estatísticas do pool

Para mostrar as estatísticas de uso de um pool, execute:

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 Definir os valores do pool

Para definir um valor para um pool, execute:

root # ceph osd pool set pool-name key value

Você pode definir valores para as seguintes chaves:

size

Define o número de réplicas para os objetos no pool. Consulte a Seção 7.2.9, “Definir o número de réplicas do objeto” para obter mais detalhes. Apenas pools replicados.

min_size

Define o número mínimo de réplicas necessárias para E/S. Consulte a Seção 7.2.9, “Definir o número de réplicas do objeto” para obter mais detalhes. Apenas pools replicados.

crash_replay_interval

O número de segundos para permitir que os clientes reproduzam solicitações confirmadas, mas não comprometidas.

pg_num

O número de grupos de posicionamento para o pool. Se você adicionar OSDs ao cluster, deverá aumentar o valor de grupos de posicionamento. Para obter detalhes, consulte a Seção 7.2.11, “Aumentando o número de grupos de posicionamento”.

pgp_num

O número efetivo de grupos de posicionamento a ser usado ao calcular o posicionamento dos dados.

crush_ruleset

O conjunto de regras a ser usado para mapear o posicionamento de objetos no cluster.

hashpspool

Defina (1) ou não defina (0) o flag HASHPSPOOL em um pool específico. A habilitação desse flag muda o algoritmo para distribuir melhor os PGs pelos OSDs. Após a habilitação desse flag em um pool com o flag HASHPSPOOL definido como 0, o cluster iniciará o preenchimento para reposicionar todos os PGs corretamente. Saiba que isso pode gerar uma carga considerável de E/S em um cluster, portanto, é necessário realizar um bom planejamento em clusters de produção altamente carregados.

nodelete

Impede que o pool seja removido.

nopgchange

Impede que pg_num e pgp_num do pool sejam modificados.

nosizechange

Impede que o tamanho do pool seja modificado.

write_fadvise_dontneed

Defina/Não defina o flag WRITE_FADVISE_DONTNEED em um pool específico.

noscrub,nodeep-scrub

Desabilita a depuração (em detalhes) dos dados para o pool específico a fim de resolver uma alta carga de E/S temporária.

hit_set_type

Habilita o monitoramento de conjunto de acertos para pools de cache. Consulte Filtro de Bloom para obter informações adicionais. Essa opção pode ter os seguintes valores: bloom, explicit_hash, explicit_object. O padrão é bloom, os outros valores são apenas para teste.

hit_set_count

O número de conjuntos de acertos para armazenar nos pools de cache. Quanto maior o número, mais RAM é consumida pelo daemon ceph-osd. O padrão é 0.

hit_set_period

A duração em segundos de um período do conjunto de acertos para os pools de cache. Quanto maior o número, mais RAM é consumida pelo daemon ceph-osd.

hit_set_fpp

A probabilidade de falsos positivos para o tipo de conjunto de acertos bloom. Consulte Filtro de Bloom para obter informações adicionais. A faixa válida é de 0,0 a 1,0. O padrão é 0,05

use_gmt_hitset

Force os OSDs a usar marcações de horário em GMT (Horário de Greenwich) ao criar um conjunto de acertos para camadas de cache. Isso garante que os nós em fusos horários diferentes retornem o mesmo resultado. O padrão é 1. Esse valor não deve ser mudado.

cache_target_dirty_ratio

A porcentagem do pool de cache que contém os objetos modificados antes que o agente de camadas de cache os descarregue para o pool de armazenamento de suporte. O padrão é 0,4.

cache_target_dirty_high_ratio

A porcentagem do pool de cache que contém os objetos modificados antes que o agente de camadas de cache os descarregue para o pool de armazenamento de suporte com uma velocidade maior. O padrão é 0,6.

cache_target_full_ratio

A porcentagem do pool de cache que contém os objetos não modificados (limpos) antes que o agente de camadas de cache os elimine do pool de cache. O padrão é 0,8.

target_max_bytes

O Ceph iniciará o descarregamento ou a eliminação de objetos quando o limite max_bytes for acionado.

target_max_objects

O Ceph iniciará o descarregamento ou a eliminação de objetos quando o limite max_objects for acionado.

hit_set_grade_decay_rate

Taxa de redução de temperatura entre dois hit_sets sucessivos. O padrão é 20.

hit_set_search_last_n

Considera no máximo N aparições nos hit_sets para o cálculo da temperatura. O padrão é 1.

cache_min_flush_age

O tempo (em segundos) antes que o agente de camadas de cache descarregue um objeto do pool de cache para o pool de armazenamento.

cache_min_evict_age

O tempo (em segundos) antes que o agente de camadas de cache elimine um objeto do pool de cache.

fast_read

Se esse flag estiver habilitado nos pools com codificação de eliminação, a solicitação de leitura emitirá subleituras para todos os fragmentos e aguardará até receber fragmentos suficientes para decodificar e atender ao cliente. No caso dos plug-ins de eliminação jerasure e isa, quando as primeiras K respostas são retornadas, a solicitação do cliente é atendida imediatamente, usando os dados decodificados dessas respostas. Isso ajuda a receber alguns recursos para melhorar o desempenho. No momento, esse flag é suportado apenas para pools com codificação de eliminação. O padrão é 0.

scrub_min_interval

O intervalo mínimo em segundos para depuração do pool quando a carga do cluster está baixa. O padrão 0 significa que o valor osd_scrub_min_interval do arquivo de configuração do Ceph foi usado.

scrub_max_interval

O intervalo máximo em segundos para depuração do pool, independentemente da carga do cluster. O padrão 0 significa que o valor osd_scrub_max_interval do arquivo de configuração do Ceph foi usado.

deep_scrub_interval

O intervalo em segundos para depuração do pool em detalhes. O padrão 0 significa que o valor osd_deep_scrub do arquivo de configuração do Ceph foi usado.

7.2.8 Obter os valores do pool

Para obter um valor de um pool, execute:

root # ceph osd pool get pool-name key

Você pode obter valores para as chaves listadas na Seção 7.2.7, “Definir os valores do pool” e as chaves a seguir:

pg_num

O número de grupos de posicionamento para o pool.

pgp_num

O número efetivo de grupos de posicionamento a ser usado ao calcular o posicionamento dos dados. A faixa válida é igual a ou menor do que pg_num.

7.2.9 Definir o número de réplicas do objeto

Para definir o número de réplicas do objeto em um pool replicado, execute o seguinte:

root # ceph osd pool set poolname size num-replicas

O num-replicas inclui o próprio objeto. Por exemplo, se você deseja o objeto e duas cópias dele para um total de três instâncias do objeto, especifique 3.

Se você definir num-replicas como 2, haverá apenas uma cópia dos dados. Se você perder uma instância do objeto, precisará confiar que a outra cópia não foi corrompida desde a última depuração durante a recuperação, por exemplo.

A definição de um pool para uma réplica significa que existe exatamente uma instância do objeto de dados no pool. Se houver falha no OSD, você perderá os dados. Um uso possível para um pool com uma réplica é armazenar dados temporários por um curto período.

A definição de mais de três réplicas para um pool significa apenas um pequeno aumento na confiabilidade, mas pode ser adequada em casos raros. Lembre-se de que, quanto mais réplicas, mais espaço em disco é necessário para armazenar as cópias do objeto. Se você precisar de segurança máxima de dados, recomendamos usar pools com codificação de eliminação. Para obter mais informações, consulte o Capítulo 9, Pools com codificação de eliminação.

Atenção
Atenção: Recomendação de mais do que duas réplicas

Desaconselhamos fortemente o uso de apenas 2 réplicas. Em caso de falha em um OSD, a falha do segundo OSD devido a uma alta carga de trabalho durante a recuperação é extremamente provável.

Por exemplo:

root # ceph osd pool set data size 3

Você pode executar esse comando para cada pool.

Nota
Nota

Um objeto pode aceitar E/S no modo degradado com menos do que pool size réplicas. Para definir um número mínimo de réplicas necessárias para E/S, você deve usar a configuração min_size. Por exemplo:

root # ceph osd pool set data min_size 2

Isso garante que nenhum objeto no pool de dados receba E/S com menos do que min_size réplicas.

7.2.10 Obter o número de réplicas do objeto

Para obter o número de réplicas do objeto, execute o seguinte:

root # ceph osd dump | grep 'replicated size'

O Ceph listará os pools, com o atributo replicated size realçado. Por padrão, o Ceph cria duas réplicas de um objeto (um total de três cópias, ou um tamanho de 3).

7.2.11 Aumentando o número de grupos de posicionamento

Ao criar um novo pool, você especifica o número de grupos de posicionamento para ele (consulte a Seção 7.2.2, “Criar um pool”). Após adicionar mais OSDs ao cluster, normalmente você precisará aumentar o número de grupos de posicionamento também por motivos de desempenho e durabilidade dos dados. Para cada grupo de posicionamento, os nós OSD e do monitor precisam de memória, rede e CPU o tempo todo, e ainda mais durante a recuperação. Em virtude disso, a redução no número de grupos de posicionamento economiza uma quantidade significativa de recursos.

Atenção
Atenção: Um valor muito alto de pg_num

Ao mudar o valor de pg_num de um pool, talvez o novo número de grupos de posicionamento possa exceder o limite permitido. Por exemplo

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)

O limite impede a divisão extrema do grupo de posicionamento e é derivado do valor mon_osd_max_split_count.

Determinar o novo número correto de grupos de posicionamento para um cluster redimensionado é uma tarefa complexa. Uma abordagem é aumentar continuamente o número de grupos de posicionamento até o estado de desempenho ideal do cluster. Para determinar o novo número incrementado de grupos de posicionamento, você precisa obter o valor do parâmetro mon_osd_max_split_count e adicioná-lo ao número atual de grupos de posicionamento. Para ter uma ideia básica, observe o seguinte script:

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"

Depois de descobrir o próximo número de grupos de posicionamento, aumente-o com

root # ceph osd pool set pool_name pg_num next_pg_num

7.2.12 Adicionando um pool

Depois que você implantar um cluster pela primeira vez, o Ceph usará os pools padrão para armazenar os dados. Depois disso, você poderá criar um novo pool com

root # ceph osd pool create

Para obter mais informações sobre a criação de pools de cluster, consulte a Seção 7.2.2, “Criar um pool”.

7.3 Migração de pool

Ao criar um pool (consulte a Seção 7.2.2, “Criar um pool”), você precisa especificar os parâmetros iniciais, como o tipo de pool ou o número de grupos de posicionamento. Mais tarde, se você decidir mudar qualquer um desses parâmetros após inserir dados no pool, será necessário migrar os dados do pool para outro cujos parâmetros sejam adequados à sua implantação.

Há vários métodos de migração de pool. É recomendável usar a camada de cache, pois esse método é transparente, reduz o tempo de espera do cluster e evita a duplicação de todos os dados do pool.

7.3.1 Migrar usando a camada de cache

O princípio é simples: incluir o pool que você precisa migrar para a camada de cache na ordem inversa. Obtenha mais detalhes sobre as camadas de cache no Capítulo 10, Camadas de cache. Por exemplo, para migrar um pool replicado denominado “testpool” para um pool com codificação de eliminação, siga estas etapas:

Procedimento 7.1: Migrando o pool replicado para o pool com codificação de eliminação
  1. Crie um novo pool com codificação de eliminação chamado “newpool”:

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

    Agora você tem dois pools: o “testpool” replicado original preenchido com dados e o novo “newpool” com codificação de eliminação vazio:

    Pools antes da migração
    Figura 7.1: Pools antes da migração
  2. Configure a camada de cache e defina o pool replicado “testpool” como o pool de cache:

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

    A partir deste momento, todos os objetos novos serão criados no novo pool:

    Configuração da camada de cache
    Figura 7.2: Configuração da camada de cache
  3. Force o pool de cache a mover todos os objetos para o novo pool:

    root@minion > rados -p testpool cache-flush-evict-all
    Descarregamento de dados
    Figura 7.3: Descarregamento de dados
  4. Alterne todos os clientes para o novo pool. Até todos os dados serem descarregados para o novo pool com codificação de eliminação, você precisa especificar uma sobreposição para que esses objetos sejam pesquisados no pool antigo:

    root@minion > ceph osd tier set-overlay newpool testpool

    Com a sobreposição, todas as operações são encaminhadas para o “testpool” replicado antigo:

    Definindo a sobreposição
    Figura 7.4: Definindo a sobreposição

    Agora você pode alternar todos os clientes para acessar objetos no novo pool.

  5. Após a migração de todos os dados para o “newpool” com codificação de eliminação, remova a sobreposição e o pool de cache antigo “testpool”:

    root@minion > ceph osd tier remove-overlay newpool
    root@minion > ceph osd tier remove newpool testpool
    Migração concluída
    Figura 7.5: Migração concluída

7.4 Instantâneos de pool

Os instantâneos de pool são capturados com base no estado do pool inteiro do Ceph. Com os instantâneos de pool, você pode manter o histórico de estado do pool. Dependendo do tamanho do pool, a criação de instantâneos de pool pode exigir bastante espaço de armazenamento. Confira sempre se há espaço em disco suficiente no armazenamento relacionado antes de criar um instantâneo de um pool.

7.4.1 Criar um instantâneo de um pool

Para criar um instantâneo de um pool, execute:

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

Por exemplo:

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

7.4.2 Remover um instantâneo de um pool

Para remover um instantâneo de um pool, execute:

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

7.5 Compactação de dados

A partir do SUSE Enterprise Storage 5, o BlueStore fornece compactação de dados sob demanda para economizar espaço em disco.

7.5.1 Habilitar compactação

É possível habilitar a compactação de dados para um pool com:

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

Substitua POOL_NAME pelo pool no qual a compactação será habilitada.

7.5.2 Opções de compactação de pool

Uma lista completa de configurações de compactação:

compression_algorithm

Valores: none, zstd, snappy. Padrão: snappy.

O algoritmo de compactação a ser usado depende do caso de uso específico. Veja a seguir várias recomendações:

  • Não use zlib: os outros algoritmos são melhores.

  • Se você precisa de uma boa taxa de compactação, use zstd. Observe que zstd não é recomendado para o BlueStore por causa do alto overhead de CPU ao comprimir pequenas quantidades de dados.

  • Se você precisa de uso menor da CPU, use lz4 ou snappy.

  • Realize um benchmark desses algoritmos em uma amostra dos dados reais e observe o uso de CPU e memória do cluster.

compression_mode

Valor: {none, aggressive, passive, force}. Padrão: none.

  • none: nunca comprimir

  • passive: comprimir se houver a dica COMPRESSIBLE

  • aggressive: comprimir, exceto se houver a dica INCOMPRESSIBLE

  • force: sempre comprimir

Para obter informações sobre como definir o flag COMPRESSIBLE ou INCOMPRESSIBLE, consulte http://docs.ceph.com/docs/doc-12.2.0-major-changes/rados/api/librados/#rados_set_alloc_hint.

compression_required_ratio

Valor: Duplo, Taxa = SIZE_COMPRESSED / SIZE_ORIGINAL. Padrão: .875

Os objetos acima dessa taxa não serão comprimidos por causa do baixo ganho líquido.

compression_max_blob_size

Valor: Número Inteiro Não Assinado, tamanho em bytes. Padrão: 0

Tamanho mínimo dos objetos que serão comprimidos.

compression_min_blob_size

Valor: Número Inteiro Não Assinado, tamanho em bytes. Padrão: 0

Tamanho máximo dos objetos que serão comprimidos.

7.5.3 Opções globais de compactação

As seguintes opções de configuração podem ser definidas na configuração do Ceph e aplicam-se a todos os OSDs, não apenas a um único pool. A configuração específica do pool listada na Seção 7.5.2, “Opções de compactação de pool” tem prioridade.

bluestore_compression_algorithm

Valores: none, zstd, snappy, zlib. Padrão: snappy.

O algoritmo de compactação a ser usado depende do caso de uso específico. Veja a seguir várias recomendações:

  • Não use zlib, os outros algoritmos são melhores.

  • Se você precisa de uma boa taxa de compactação, use zstd. Observe que zstd não é recomendado para o BlueStore por causa do alto overhead de CPU ao comprimir pequenas quantidades de dados.

  • Se você precisa de uso menor da CPU, use lz4 ou snappy.

  • Realize um benchmark desses algoritmos em uma amostra dos dados reais e observe o uso de CPU e memória do cluster.

bluestore_compression_mode

Valor: {none, aggressive, passive, force}. Padrão: none.

  • none: nunca comprimir

  • passive: comprimir se houver a dica COMPRESSIBLE.

  • aggressive: comprimir, exceto se houver a dica INCOMPRESSIBLE

  • force: sempre comprimir

Para obter informações sobre como definir o flag COMPRESSIBLE ou 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: Duplo, Taxa = SIZE_COMPRESSED / SIZE_ORIGINAL. Padrão: .875

Os objetos acima dessa taxa não serão comprimidos por causa do baixo ganho líquido.

bluestore_compression_min_blob_size

Valor: Número Inteiro Não Assinado, tamanho em bytes. Padrão: 0

Tamanho mínimo dos objetos que serão comprimidos.

bluestore_compression_max_blob_size

Valor: Número Inteiro Não Assinado, tamanho em bytes. Padrão: 0

Tamanho máximo dos objetos que serão comprimidos.

bluestore_compression_min_blob_size_ssd

Valor: Número Inteiro Não Assinado, tamanho em bytes. Padrão: 8K

Tamanho mínimo dos objetos que serão comprimidos e armazenados na unidade de estado sólido.

bluestore_compression_max_blob_size_ssd

Valor: Número Inteiro Não Assinado, tamanho em bytes. Padrão: 64K

Tamanho máximo dos objetos que serão comprimidos e armazenados na unidade de estado sólido.

bluestore_compression_min_blob_size_hdd

Valor: Número Inteiro Não Assinado, tamanho em bytes. Padrão: 128K

Tamanho mínimo dos objetos que serão comprimidos e armazenados em discos rígidos.

bluestore_compression_max_blob_size_hdd

Valor: Número Inteiro Não Assinado, tamanho em bytes. Padrão: 512K

Tamanho máximo dos objetos que serão comprimidos e armazenados em discos rígidos.

Imprimir esta página