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

11 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. Os destaques importantes a seguir são relacionados aos pools do Ceph:

  • Resiliência: Você pode definir quantos OSDs, compartimentos de memória ou folhas 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. 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 um pool no momento da sua criação. 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, os objetos e suas réplicas (ou blocos, no caso de pools com codificação de eliminação) são posicionados de acordo com o conjunto de regras CRUSH mapeado para o pool. 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.

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.

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

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

cephadm@adm > 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:

cephadm@adm > ceph osd pool application get pool_name

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

11.2.1 Listando pools

Para listar os pools do cluster, execute:

cephadm@adm > ceph osd pool ls

11.2.2 Criando um pool

Um pool pode ser criado como “replicated” para recuperar OSDs perdidos mantendo várias cópias dos objetos, ou como “erasure” para aplicar um tipo de recurso RAID5/6 generalizado. Os pools replicados exigem mais armazenamento bruto, enquanto os pools com codificação de eliminação exigem menos armazenamento bruto. O padrão é “replicated”.

Para criar um pool replicado, execute:

cephadm@adm > 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:

cephadm@adm > 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.

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 dos pools replicados com -ENOENT. Para pools replicados, trata-se do conjunto de regras especificado pela variável de configuração osd pool default crush replicated ruleset. Esse conjunto de regras deve existir. Para pools de eliminação, trata-se do “erasure-code”, se o perfil de codificação de eliminação for usado ou, do contrário, POOL_NAME. Esse conjunto de regras será criado implicitamente se ainda não existir.

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

Consulte a Seção 9.4, “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 (juntamente com um limite de fusão de armazenamento de arquivos negativo), a divisão da pasta PG é feita 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.

11.2.3 Definindo 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.

cephadm@adm > ceph osd pool set-quota pool-name max_objects obj-count max_bytes bytes

Por exemplo:

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

Para remover uma cota, defina o valor como 0.

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

cephadm@adm > 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:

cephadm@adm > 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”:

cephadm@adm > ceph tell mon.* injectargs --mon-allow-pool-delete=true
cephadm@adm > ceph osd pool delete pool_name pool_name --yes-i-really-really-mean-it
cephadm@adm > 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.

11.2.5 Renomear um pool

Para renomear um pool, execute:

cephadm@adm > 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.

11.2.6 Mostrar as estatísticas do pool

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

cephadm@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

Veja a seguir uma descrição de cada coluna:

USED

Número de bytes usados pelo pool.

OBJECTS

Número de objetos armazenados no pool.

CLONES

Número de clones armazenados no pool. Quando um instantâneo é criado e faz gravações em um objeto, em vez de modificar o objeto original, o clone dele é criado para que o conteúdo do objeto original do qual foi feito o instantâneo não seja modificado.

COPIES

Número de réplicas do objeto. Por exemplo, se um pool replicado com o fator de replicação 3 tiver “x” objetos, ele normalmente terá 3 * x cópias.

MISSING_ON_PRIMARY

Número de objetos no estado degradado (nem todas as cópias existem) enquanto a cópia está ausente no OSD principal.

UNFOUND

Número de objetos não encontrados.

DEGRADED

Número de objetos degradados.

RD_OPS

Número total de operações de leitura solicitadas para este pool.

RD

Número total de bytes lidos deste pool.

WR_OPS

Número total de operações de gravação solicitadas para este pool.

WR

Número total de bytes gravados no pool. Observe que isso não é igual ao uso do pool porque você pode gravar no mesmo objeto várias vezes. O resultado é que o uso do pool permanecerá o mesmo, mas o número de bytes gravados no pool aumentará.

USED COMPR

Número de bytes alocados para dados comprimidos.

UNDER COMPR

Número de bytes que os dados comprimidos ocupam quando não são comprimidos.

11.2.7 Obtendo os valores do pool

Para obter um valor de um pool, execute:

cephadm@adm > ceph osd pool get pool-name key

Você pode obter valores para as chaves listadas na Seção 11.2.8, “Definindo 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.

Dica
Dica: Todos os Valores de um Pool

Para listar todos os valores relacionados a um pool específico, execute:

cephadm@adm > ceph osd pool get POOL_NAME all

11.2.8 Definindo os valores do pool

Para definir um valor para um pool, execute:

cephadm@adm > 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 11.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 11.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 novos OSDs ao cluster, verifique o valor para os grupos de posicionamento em todos os pools direcionados para os novos OSDs.

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 o padrão 0, o cluster iniciará o provisionamento para reposicionar todos os PGs corretamente. Saiba que isso pode gerar uma carga de E/S muito significativa em um cluster, portanto, não habilite o flag de 0 a 1 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. Essa abordagem gera mais carga de CPU e menos carga de disco/rede. 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.

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

cephadm@adm > 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.

Atenção
Atenção: Não Definir Menos do que 3 Réplicas

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 (consulte a Seção 9.6, “Depuração” para obter detalhes).

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.

Dica
Dica: Definição de Mais do que 3 Réplicas

A definição de 4 réplicas para um pool aumenta a confiabilidade em 25%.

No caso de dois data centers, você precisa definir pelo menos 4 réplicas para que um pool tenha duas cópias em cada data center. Desse modo, se um data center for perdido, ainda haverá duas cópias, e você poderá perder um disco sem perder os dados.

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:

cephadm@adm > 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.

Dica
Dica: Obter o número de réplicas do objeto

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

cephadm@adm > 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).

11.3 Migração de pool

Ao criar um pool (consulte a Seção 11.2.2, “Criando um pool”), você precisa especificar os parâmetros iniciais, como o tipo de pool ou o número de grupos de posicionamento. Posteriomente, se você decidir mudar qualquer um desses parâmetros, por exemplo, ao converter um pool replicado em um com codificação de eliminação ou reduzir o número de grupos de posicionamento, será necessário migrar os dados do pool para outro cujos parâmetros sejam mais 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.

11.3.1 Migrando usando a camada de cache

Dica
Dica: Migração Apenas do Pool Replicado

Você pode usar o método de camada de cache para migrar de um pool replicado para um com codificação de eliminação ou para outro pool replicado. A migração de um pool com codificação de eliminação não é suportada.

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 14, Camadas de cache. O exemplo a seguir migra um pool replicado chamado “testpool” para um pool com codificação de eliminação:

Procedimento 11.1: Migrando um Pool Replicado para um com Codificação de Eliminação
  1. Crie um novo pool com codificação de eliminação chamado “newpool”. Consulte a Seção 11.2.2, “Criando um pool” para obter uma explicação detalhada dos parâmetros de criação de pool.

     cephadm@adm > ceph osd pool create newpool PG_NUM PGP_NUM erasure default

    Verifique se o chaveiro do cliente usado oferece pelo menos os mesmos recursos do “testpool” para o “newpool”.

    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 11.1: Pools antes da migração
  2. Configure a camada de cache e defina o pool replicado “testpool” como o pool de cache. A opção -force-nonempty permite adicionar uma camada de cache mesmo que o pool já tenha dados:

    cephadm@adm > ceph tell mon.* injectargs \
     '--mon_debug_unsafe_allow_tier_with_nonempty_snaps=1'
    cephadm@adm > ceph osd tier add newpool testpool --force-nonempty
    cephadm@adm > ceph osd tier cache-mode testpool proxy
    Configuração da camada de cache
    Figura 11.2: Configuração da camada de cache
  3. Force o pool de cache a mover todos os objetos para o novo pool:

    cephadm@adm > rados -p testpool cache-flush-evict-all
    Descarregamento de dados
    Figura 11.3: Descarregamento de dados
  4. 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:

    cephadm@adm > 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 11.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”:

    cephadm@adm > ceph osd tier remove-overlay newpool
    cephadm@adm > ceph osd tier remove newpool testpool
    Migração concluída
    Figura 11.5: Migração concluída
  6. Execute:

    cephadm@adm > ceph tell mon.* injectargs \
     '--mon_debug_unsafe_allow_tier_with_nonempty_snaps=0'
Atenção
Atenção: Não é Possível Migrar Imagens RBD e Exportações do CephFS para um Pool com EC

Não é possível migrar imagens RBD e exportações do CephFS de um pool replicado para um pool com EC. Os pools com EC podem armazenar dados, mas não metadados. Haverá falha ao descarregar o objeto de cabeçalho do RBD. O mesmo se aplica ao CephFS.

11.3.2 Migrando uma imagem do dispositivo de bloco RADOS

Veja a seguir a maneira recomendada de migrar imagens RBD entre dois pools replicados.

  1. Impeça os clientes (como uma máquina virtual) de acessar a imagem RBD.

  2. Crie uma nova imagem no pool de destino, com o pai definido como a imagem de origem:

    cephadm@adm > rbd migration prepare SRC_POOL/IMAGE TARGET_POOL/IMAGE
    Dica
    Dica: Migrar Apenas Dados para um Pool com EC

    Se você precisa migrar apenas os dados da imagem para um novo pool com EC e deixar os metadados no pool replicado original, execute o seguinte comando:

    cephadm@adm > rbd migration prepare SRC_POOL/IMAGE \
     --data-pool TARGET_POOL/IMAGE
    Nota
    Nota: Suporte ao Cliente e Tempo de Espera

    O método rbd migration permite migrar imagens com tempo de espera mínimo do cliente. Você apenas precisa parar o cliente antes da etapa de “preparação” e iniciá-lo depois. Observe que apenas um cliente librbd com suporte a esse recurso (Ceph Nautilus ou mais recente) poderá abrir a imagem logo após a etapa de “preparação”. Os clientes librbd mais antigos ou os clientes krbd não poderão abrir a imagem antes da execução da etapa de “confirmação”.

  3. Permita que os clientes acessem a imagem no pool de destino.

  4. Migre os dados para o pool de destino:

    cephadm@adm > rbd migration execute SRC_POOL/IMAGE
  5. Remova a imagem antiga:

    cephadm@adm > rbd migration commit SRC_POOL/IMAGE

11.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. A criação de instantâneos de pool consome espaço de armazenamento proporcional ao tamanho do pool. Confira sempre se há espaço em disco suficiente no armazenamento relacionado antes de criar um instantâneo de um pool.

11.4.1 Criando um instantâneo de um pool

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

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

Por exemplo:

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

11.4.2 Listando instantâneos de um pool

Para listar os instantâneos existentes de um pool, execute:

cephadm@adm > rados lssnap -p POOL_NAME

Por exemplo:

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

11.4.3 Removendo um instantâneo de um pool

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

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

11.5 Compactação de dados

O BlueStore (encontre mais detalhes no Seção 1.4, “BlueStore”) oferece compactação de dados sob demanda para economizar espaço no disco. A taxa de compactação depende dos dados armazenados no sistema. Observe que a compactação/descompactação requer mais capacidade da CPU.

Você pode configurar a compactação de dados globalmente (consulte a Seção 11.5.3, “Opções globais de compactação”) e, em seguida, anular as configurações de compactação específicas para cada pool individual.

Você pode habilitar ou desabilitar a compactação de dados do pool ou mudar o algoritmo e o modo de compactação a qualquer momento, para um pool tanto com dados quanto sem dados.

Nenhuma compactação será aplicada aos dados existentes após habilitar a compactação do pool.

Após desabilitar a compactação de um pool, todos os dados dele serão descompactados.

11.5.1 Habilitar compactação

Para habilitar a compactação de dados para um pool denominado POOL_NAME, execute o seguinte comando:

cephadm@adm > ceph osd pool set POOL_NAME compression_algorithm COMPRESSION_ALGORITHM
cephadm@adm > ceph osd pool set POOL_NAME compression_mode COMPRESSION_MODE
Dica
Dica: Desabilitação da Compactação do Pool

Para desabilitar a compactação de dados para um pool, use “none” (nenhum) como o algoritmo de compactação:

cephadm@adm > ceph osd pool set POOL_NAME compression_algorithm none

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

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

compression_algorithm

Os valores possíveis são none, zstd e snappy. O 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:

  • Use o padrão snappy se não tiver um bom motivo para mudá-lo.

  • O zstd oferece uma boa taxa de compactação, mas provoca alto overhead da CPU ao compactar pequenas quantidades de dados.

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

compression_mode

Os valores possíveis são none, aggressive, passive e force. O padrão é none.

  • none: nunca comprimir

  • passive: comprimir se houver a dica COMPRESSIBLE

  • aggressive: comprimir, exceto se houver a dica INCOMPRESSIBLE

  • force: sempre comprimir

compression_required_ratio

Valor: Duplo, Taxa = SIZE_COMPRESSED/SIZE_ORIGINAL. O padrão é 0,875, o que significa que, se a compactação não reduzir o espaço ocupado em pelo menos 12,5%, o objeto não será comprimido.

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áximo 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ínimo dos objetos que serão comprimidos.

11.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 11.5.2, “Opções de compactação de pool” tem prioridade.

bluestore_compression_algorithm

Consulte compression_algorithm.

bluestore_compression_mode

Consulte compression_mode.

bluestore_compression_required_ratio

Consulte compression_required_ratio.

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. Por padrão, a configuração é ignorada a favor de bluestore_compression_min_blob_size_hdd e bluestore_compression_min_blob_size_ssd. Ela tem prioridade quando definida como um valor diferente de zero.

bluestore_compression_max_blob_size

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

Tamanho máximo dos objetos que são comprimidos antes de serem divididos em blocos menores. Por padrão, a configuração é ignorada a favor de bluestore_compression_max_blob_size_hdd e bluestore_compression_max_blob_size_ssd. Ela tem prioridade quando definida como um valor diferente de zero.

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 são comprimidos e armazenados em unidade de estado sólido antes de serem divididos em blocos menores.

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 são comprimidos e armazenados em discos rígidos antes de serem divididos em blocos menores.

Imprimir esta página