Esta é uma pergunta de acompanhamento de: Como faço para montar um dispositivo rbd do fstab que perguntei há algum tempo.
Como faço para montar dispositivos rbd com o driver de fusível? (Não consigo usar o driver do kernel do docker sem abrir muitos privilégios)
Tanto quanto eu posso dizer, crio uma entrada no arquivo fstab com algo como:
id=client.admin /mnt fuse.ceph 0 0
No entanto, não consigo ver como especificar o dispositivo de bloco rbd. Se eu executar esta montagem, vejo um arquivo em /mnt/mariadb1 (mariadb1 é o nome do meu dispositivo rbd criado com rbd create --size 250000 mariadb1)
Como eu realmente o monto como um sistema de arquivos?
Nota: Sim, eu realmente gostaria de usar o driver rbd do kernel e montá-lo no host e, em seguida, expô-lo ao meu contêiner docker, mas .... Estou usando o CoreOS.
Se for possível montar o sistema de arquivos no namespace de montagem do host, eu aceitaria isso, mas ainda não vejo um caminho a seguir. O melhor que consegui foi montá-lo a partir de um contêiner com muitos privilégios. Mas não posso compartilhar esse contêiner com --volumes-from. Eu realmente não gosto de ter esse contêiner específico com acesso total ao host.
Devo presumir que você está se referindo ao RBD-fuse ao falar sobre isso porque o ceph-fuse é um utilitário cephfs e nada a ver com o RBD.
No entanto, a premissa de sua pergunta está ainda mais quebrada porque sua compreensão do que
rbd-fuse
realmente faz é incompleta.librbd
fornece um arquivo de imagem armazenado no Ceph. A maioria das pessoas (através derbd map
) usa essa imagem para fornecer um dispositivo de pseudobloco na forma de /dev/rbd*.A única diferença
rbd-fuse
é que ele expõe seu próprio pseudo-sistema de arquivos e fornece as imagens como arquivos compatíveis com POSIX simples, em oposição aos dispositivos de bloco.Portanto
rbd-fuse
, não tem mais conhecimento sobre o conteúdo real do arquivo de imagem do querbd map
ele.Ao invocar
rbd-fuse mountpoint
qualquer imagem RBD dentro do pool, ela ficará visível emmountpoint
. São necessárias opções de comando, principalmente-p
se você usar um pool diferente em cephrbd
e-c
se usar um arquivo de configuração diferente de/etc/ceph/ceph
. Você também pode expor imagens individuais usando-r
.O que você faz com esses arquivos é com você. Eles podem ter um sistema de arquivos escrito para eles (cuidado com o Linux, pois eles não são dispositivos de bloco especializados). Você pode montá-los como dispositivos de loop se um sistema de arquivos estiver presente.
Deve apresentar algo nos moldes da seguinte forma:
Se esta é a maneira correta (para seu uso) de fazer isso, porém, é uma questão diferente. No entanto, pode permitir o acesso a imagens RBD que não seriam suportadas de outra forma pela
krbd
versão do seu sistema.O tipo de sistema de arquivos ceph.fuse (e seu equivalente manual ceph-fuse) é usado para montar volumes cephfs. Esses são fundamentalmente diferentes dos dispositivos de bloco RADOS (RBD).
Por um lado, um RBD representa um dispositivo de bloco no qual um sistema host pode executar um sistema de arquivos, da mesma forma que faria com um dispositivo de bloco físico. O Ceph não sabe nada sobre a estrutura do sistema de arquivos dentro do RBD. Por outro lado, o cephfs é um sistema de arquivos por si só, ou seja, o ceph gerencia arquivos e metadados individuais. Uma das consequências é que geralmente você pode montar um RBD apenas uma vez, porque dois hosts acessando o mesmo dispositivo de bloco não têm provisões para sincronizar os acessos a ele, enquanto você pode montar um cephfs várias vezes, como um sistema de arquivos de rede.