cephx
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.
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
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
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.
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
.
O nome do pool. Ele deve ser exclusivo. Essa opção é obrigatória.
O número total de grupos de posicionamento para o pool. Essa opção é obrigatória. O valor padrão é 8.
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.
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.
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.
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.
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.
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=truecephadm@adm >
ceph osd pool delete pool_name pool_name --yes-i-really-really-mean-itcephadm@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.
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.
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:
Número de bytes usados pelo pool.
Número de objetos armazenados no pool.
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.
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.
Número de objetos no estado degradado (nem todas as cópias existem) enquanto a cópia está ausente no OSD principal.
Número de objetos não encontrados.
Número de objetos degradados.
Número total de operações de leitura solicitadas para este pool.
Número total de bytes lidos deste pool.
Número total de operações de gravação solicitadas para este pool.
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á.
Número de bytes alocados para dados comprimidos.
Número de bytes que os dados comprimidos ocupam quando não são comprimidos.
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:
O número de grupos de posicionamento para o pool.
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
.
Para listar todos os valores relacionados a um pool específico, execute:
cephadm@adm >
ceph osd pool get POOL_NAME all
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:
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.
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.
O número de segundos para permitir que os clientes reproduzam solicitações confirmadas, mas não comprometidas.
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.
O número efetivo de grupos de posicionamento a ser usado ao calcular o posicionamento dos dados.
O conjunto de regras a ser usado para mapear o posicionamento de objetos no cluster.
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.
Impede que o pool seja removido.
Impede que pg_num
e pgp_num
do pool sejam modificados.
Impede que o tamanho do pool seja modificado.
Defina/Não defina o flag WRITE_FADVISE_DONTNEED
em um pool específico.
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.
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.
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
.
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
.
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
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.
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
.
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
.
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
.
O Ceph iniciará o descarregamento ou a eliminação de objetos quando o limite max_bytes
for acionado.
O Ceph iniciará o descarregamento ou a eliminação de objetos quando o limite max_objects
for acionado.
Taxa de redução de temperatura entre dois hit_set
s sucessivos. O padrão é 20
.
Considera no máximo N
aparições nos hit_set
s para o cálculo da temperatura. O padrão é 1
.
O tempo (em segundos) antes que o agente de camadas de cache descarregue um objeto do pool de cache para o pool de armazenamento.
O tempo (em segundos) antes que o agente de camadas de cache elimine um objeto do pool de cache.
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
.
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.
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.
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.
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.
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.
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.
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.
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).
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.
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:
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:
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-nonemptycephadm@adm >
ceph osd tier cache-mode testpool proxy
Force o pool de cache a mover todos os objetos para o novo pool:
cephadm@adm >
rados -p testpool cache-flush-evict-all
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:
Agora você pode alternar todos os clientes para acessar objetos no novo pool.
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 newpoolcephadm@adm >
ceph osd tier remove newpool testpool
Execute:
cephadm@adm >
ceph tell mon.* injectargs \
'--mon_debug_unsafe_allow_tier_with_nonempty_snaps=0'
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.
Veja a seguir a maneira recomendada de migrar imagens RBD entre dois pools replicados.
Impeça os clientes (como uma máquina virtual) de acessar a imagem RBD.
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
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
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”.
Permita que os clientes acessem a imagem no pool de destino.
Migre os dados para o pool de destino:
cephadm@adm >
rbd migration execute SRC_POOL/IMAGE
Remova a imagem antiga:
cephadm@adm >
rbd migration commit SRC_POOL/IMAGE
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.
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
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
Para remover um instantâneo de um pool, execute:
cephadm@adm >
ceph osd pool rmsnap POOL-NAME SNAP-NAME
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.
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_ALGORITHMcephadm@adm >
ceph
osd pool set POOL_NAME compression_mode COMPRESSION_MODE
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
Uma lista completa de configurações de compactação:
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.
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
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.
Valor: Número Inteiro Não Assinado, tamanho em bytes. Padrão: 0
Tamanho máximo dos objetos que serão comprimidos.
Valor: Número Inteiro Não Assinado, tamanho em bytes. Padrão: 0
Tamanho mínimo dos objetos que serão comprimidos.
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.
Consulte compression_algorithm.
Consulte compression_mode.
Consulte compression_required_ratio.
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.
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.
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.
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.
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.
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.