Gerenciamento de Pools no Ceph

O processo de armazenamento no Ceph envolve dividir um arquivo em objetos. Cada objeto é mapeado para um Placement Group (PG), que por sua vez é atribuído a um conjunto de OSDs (Object Storage Daemons) através do algorimto CRUSH.

Fluxo de Dados

Durante uma gravação, o cliente calcula o PG com base no ID do objeto. O algoritmo CRUSH determina os OSDs responsáveis, com um OSD pirncipal liderando a operação e replicando para os secundários. Leituras sempre ocorrem no OSD principal.

Criação e Configuração de Pools

Um pool agrupa múltiplos PGs, que mapeiam conjuntos de OSDs. Sua criação é feita com o comando:

ceph osd pool create <nome_do_pool> <pg_num> <pgp_num> <tipo> <perfil_erasure>

Exemplo:

ceph osd pool create armazenamento 64 64 replicated

Detalhes do pool podem ser verificados com:

ceph osd pool ls detail | grep armazenamento

Parâmetros importantes encluem size (fator de replicação) e min_size (mínimo de réplicas para operação).

Ajuste de PGs

O número de PGs (pg_num) afeta a distribuição dos objetos. Ao aumentá-lo, os PGs existentes são divididos (pgp_num), e o CRUSH redistribui os objetos. Isso otimiza a distribuição de carga entre os OSDs.

Gerenciamento de Objetos

Utilize a ferramenta rados para operações com objetos:

# Upload
rados -p armazenamento put arquivo_dados /caminho/local

# Listar objetos
rados -p armazenamento ls

# Download
rados -p armazenamento get arquivo_dados ./local_dados

# Remover
rados -p armazenamento rm arquivo_dados

Para verificar o mapeamento de um objeto:

ceph osd map armazenamento arquivo_dados

Limites de Quota

Defina limites de armazenamento com:

ceph osd pool set-quota armazenamento max_bytes 10G

Verifique com:

ceph osd pool get-quota armazenamento

Snapshots

Crie um snapshot de um pool:

rados -p armazenamento mksnap snap_01

Para recuperar um objeto de um snapshot:

rados -p armazenamento -s snap_01 get arquivo_dados ./recuperado

Modificação de Propriedades

Altere a contagem de réplicas:

ceph osd pool set armazenamento size 4

Proteja um pool contra exclusão acidental:

ceph osd pool set armazenamento nodelete true

Pools de Correção de Erros (Erasure Code)

Pools de erasure code oferecem redundância com eficiência de espaço. Crie um perfil personalizado:

ceph osd erasure-code-profile set meu_perfil k=3 m=2 crush-failure-domain=osd

Crie um pool usando este perfil:

ceph osd pool create pool_erasure erasure meu_perfil

Neste exemplo, dados são divididos em 3 blocos, com 2 blocos de paridade, permitindo a falha de até 2 blocos.

Tags: Ceph OSD PG CRUSH Rados

Publicado em 6-2 03:48 por Thomas