Neste será apresentado como configurar o cliente em uma vm para acesso ao block storage do Ceph via RBD Client.
Desenhando apenas em um fluxograma simples o processo será realizado da seguinte forma :

Observando de uma forma mais técnica , a imagem abaixo apresenta melhor o processo dentro da infraestrutura do Ceph :

1. Ambiente
Será utilizado o ambiente de laboratório do site para este documento, segue os links :
Link do Laboratório
Deploy do Ceph
No laboratório será realizado deploy da vm client via Vagrant para instalação e testes do client RBD.
vagrant up client
2. Configuração do Client
Configure o usuário do Ceph
useradd -d /home/ceph -m ceph
echo "ceph" | passwd --stdin ceph
echo "ceph ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ceph
chmod 0440 /etc/sudoers.d/ceph
sed -i s'/Defaults requiretty/#Defaults requiretty'/g /etc/sudoers
chown -R ceph.ceph /home/ceph
chmod -R 600 /home/ceph/.ssh/config
Copie as chaves ssh do ceph a partir da vm controller
[ceph@controller ~]$ ssh-copy-id client
/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/ceph/.ssh/id_rsa.pub"
The authenticity of host 'client (192.168.0.10)' can't be established.
ECDSA key fingerprint is SHA256:YfqKEeU3TMMAsw10UBn3vKzDksYwnWkhhTDAEBOeEaI.
ECDSA key fingerprint is MD5:4a:d5:17:23:aa:df:9f:72:03:7d:58:9a:e1:fa:dc:41.
Are you sure you want to continue connecting (yes/no)? yes
/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
ceph@client's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'client'"
and check to make sure that only the key(s) you wanted were added.
Realize deploy do client a partir da vm controller
ceph-deploy install <VM CLIENT>
ceph-deploy admin <VM CLIENT>
Pacotes instalados durante o processo :
[root@client]# rpm -qa | grep ceph
python-cephfs-13.2.1-0.el7.x86_64
ceph-common-13.2.1-0.el7.x86_64
ceph-mds-13.2.1-0.el7.x86_64
ceph-13.2.1-0.el7.x86_64
libcephfs2-13.2.1-0.el7.x86_64
ceph-base-13.2.1-0.el7.x86_64
ceph-osd-13.2.1-0.el7.x86_64
ceph-mon-13.2.1-0.el7.x86_64
ceph-mgr-13.2.1-0.el7.x86_64
ceph-radosgw-13.2.1-0.el7.x86_64
ceph-selinux-13.2.1-0.el7.x86_64
ceph-release-1-1.el7.noarch
3. Configuração de recursos no Ceph
Criando a chave de acesso da vm client
# ceph auth get-or-create client.rbd mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=rbd'
Confirme a chave listando com o comando abaixo
# ceph auth list
...
client.rbd
key: AQAMDoZbvtuDABAAEVIfmXGNTr5SOSNymM7L8g==
caps: [mon] allow r
caps: [osd] allow class-read object_prefix rbd_children, allow rwx pool=rbd
...
Copie a chave gerada para a vm client.
[root@mon1 ceph]# ceph auth get-or-create client.rbd | ssh root@client tee /etc/ceph/ceph.client.rbd.keyring
4. Criando imagem no pool e montando
Na vm client vamos criar uma imagem de 1 Gb .
[root@client]# rbd create rbd1 --size 1024 --name client.rbd
Vamos listar e pegar as informações da imagem criada no pool RBD
[root@client]# rbd ls -p rbd --name client.rbd
...
rbd1
...
[root@client]# rbd --image rbd1 info --name client.rbd
...
rbd image 'rbd1':
size 1 GiB in 256 objects
order 22 (4 MiB objects)
id: 5e4a6b8b4567
block_name_prefix: rbd_data.5e4a6b8b4567
format: 2
features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
op_features:
flags:
create_timestamp: Wed Aug 29 09:30:43 2018
...
Antes de mapearmos vamos desabilitar algumas features da imagem para que não haja erros .
[root@client]# rbd feature disable rbd1 object-map fast-diff deep-flatten
Vamos mapear a imagem :
[root@client]# rbd map --image rbd1 --name client.rbd
...
/dev/rbd0
...
Validando a imagem entregue para o SO com fdisk :
[root@client]# fdisk -l /dev/rbd0
Disk /dev/rbd0: 1073 MB, 1073741824 bytes, 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 4194304 bytes / 4194304 bytes
[root@client log]#
Montando a imagem
mkfs.xfs /dev/rbd0
mkdir /opt/labrbd
mount /dev/rbd0 /opt/labrbd
Imagem montada no Sistema Operacional :

Montando de forma persistente a imagem
[root@client]# vi /etc/ceph/rbdmap
...
rbd map rbd/rbd1 --id admin --keyring /etc/ceph/ceph.client.rbd.keyring
Ajuste o arquivo /etc/fstab
[root@client]# vi /etc/fstab
...
/dev/rbd0 /opt/labrbd xfs noauto 0 0
Habilite o serviço no boot
systemctl enable rbdmap.service
Para desmontar a imagem do SO , desmonte o mapeamento e a imagem
umount /opt/lab/rbd
rbdmap unmap
Após desmontar remova as entradas no /etc/fstab e /etc/ceph/rbdmap