Neste post será apresentado como  realizar algumas operações com pools e pgs de forma prática. O link abaixo explica melhor o conceito das Pools , Pgs e objetos dentro do Cluster Ceph. https://cephbrasil.com/ceph-como-funciona/ Para uma breve explicação os dados que são gravados no Storage são dividos em objetos, onde são agrupados em diversas PGs e são distribuídos para as OSDs via algoritmo Crush.
1.  Requisitos Laboratório do Site Deploy do Ceph Cliente RBD   2. Pools e Pgs Listando as pools no Cluster.
[ceph@mon1 ~]$ sudo ceph osd lspools
1 rbd
Criando a pool de teste com 128 pgs
# ceph osd pool create <POOL NAME> <PG NUMBER> <PGP NUMBER> 

[ceph@mon1 ~]$ sudo ceph osd pool create poola 128 128
pool 'poola' created
Executamos o comando ceph osd pool ls detail para ver detalhes do pool.
Com o output acima podemos considerar :
  • replicated size – Número de replicas configuradas para as pools , controlado pela opção “osd pool default size = 2” no arquivo ceph.conf. Para um ambiente de produção o valor default é 3 .
  • min_size –  Garante o números de réplicas que eu posso escrever antes de entrar em um estado degradado e também controlado pela opção “osd min default size = 1” no arquivo ceph.conf.. Para um ambiente de produção o valor é 2.
  • pg_num – Nossa pool foi criada com 128 pgs e replica de 2 , o que signica que temos um total de 256.
  • pgp_num – É o número de pgs que serão consideradas para posicionamento pelo algoritmo crush , por padrão é utilizado o mesmo valor de pgs.
Podemos alterar o número de pgs ou replicas com os comandos :
ceph osd pool create {pool-name} pg_num
ceph osd pool set {poolname} size {num-replicas}
Lembrando que quando alteramos os valores de réplica ou pgs  automaticamente será rebalanceado e isso pode causar perda de performance em um cenário em produção.   Para deletarmos a pool precisamos injetar uma opção temporária no serviço do mon , que por padrão vem false para garantir que não haja erros. Após o restart do serviço esta opção não ficará disponível tendo que aplicar novamente caso necessário.
sudo ceph tell mon.\* injectargs '--mon-allow-pool-delete=true'
Removendo a pool poola
[ceph@mon1 ~]$ sudo ceph osd pool delete poola poola --yes-i-really-really-mean-it
pool 'poola' removed
3. Manipulando objetos Vamos criar alguns arquivos na pool rbd que está com réplica de 3 configurada e utilizaremos  a imagem montada rbd1 na vm client para gerarmos alguns objetos.
[root@client labrbd]# cd /opt/labrbd
[root@client labrbd]# for i in seq $(1  50) ; do echo file$i ; done
Listando objetos a partir de um servidor mon o comando rados ls -p <POOL NAME>
Mapeando de onde está o  objeto ceph osd map <POOL NAME> <OBJECT NAME>
sudo ceph osd map rbd rbd_data.10936b8b4567.0000000000000081
Analisando o output acima observamos que o objeto se encontra :
  • pool – RBD
  • pg 1.20
  • OSDs  2, 3 e 4
Vamos executar o comando ceph pg <PG ID> query para confirmar as OSDs envolvidas.
[ceph@mon1 ceph]$ sudo ceph pg 1.20 query 
...
{
    "state": "active+clean",
    "snap_trimq": "[]",
    "snap_trimq_len": 0,
    "epoch": 66,
    "up": [
        2,
        4,
        3
    ],
    "acting": [
        2,
        4,
        3
    ],
...
Com o comando ceph osd find <OSD ID> identificamos os hosts envolvidos.
[ceph@mon1 ceph]$ sudo ceph osd find 2
{
    "osd": 2,
    "ip": "10.10.10.105:6800/5319",
    "crush_location": {
        "host": "osd3",
        "root": "default"
    }
}
[ceph@mon1 ceph]$ sudo ceph osd find 4
{
    "osd": 4,
    "ip": "10.10.10.104:6804/5533",
    "crush_location": {
        "host": "osd2",
        "root": "default"
    }
}
[ceph@mon1 ceph]$ sudo ceph osd find 3
{
    "osd": 3,
    "ip": "10.10.10.103:6804/5305",
    "crush_location": {
        "host": "osd1",
        "root": "default"
    }
}
Logando em um storage OSD vamos observar o objeto alocado no diretório do servidor .
[ceph@osd1 ~]$ ls /var/lib/ceph/osd/ceph-3/current/1.20_head/
__head_00000020__1  rbd\udata.10936b8b4567.0000000000000081__head_A1122520__1


[ceph@osd2 ~]$ ls /var/lib/ceph/osd/ceph-4/current/1.20_head/
__head_00000020__1  rbd\udata.10936b8b4567.0000000000000081__head_A1122520__1


[ceph@osd3 ~]$ ls /var/lib/ceph/osd/ceph-2/current/1.20_head/
__head_00000020__1  rbd\udata.10936b8b4567.0000000000000081__head_A1122520__1