O
Ceph emprega cinco tipos distintos de daemons:
- Monitores de cluster (ceph-mon) que controlam os nós de cluster ativos e com falha, configuração de cluster e informações sobre o posicionamento de dados e o estado global do cluster;
- Dispositivos de armazenamento de objeto (ceph-osd) que usam um armazenamento em disco direto com registro (chamado BlueStore, que desde a versão v12.x substitui o FileStore que usaria um sistema de arquivos);
- Servidores de metadados (ceph-mds) que armazenam em cache e intermedeiam o acesso a inodes e diretórios dentro de um sistema de arquivos CephFS;
- Gateways HTTP (ceph-rgw) que expõem a camada de armazenamento de objetos como uma interface compatível com Amazon S3 ou APIs OpenStack Swift;
- Gerenciadores (ceph-mgr) que realizam monitoramento de cluster, contabilidade e tarefas de manutenção e interface com sistemas de monitoramento externo e gerenciamento (por exemplo: balanceador, painel de controle, Prometheus, plugin Zabbix).
Todos eles são totalmente distribuídos e podem ser executados no mesmo conjunto de servidores.
O Ceph faz striping de arquivos individuais em vários nós para obter um rendimento mais alto, semelhante ao RAID 0, distribuindo partições em vários discos rígidos. O balanceamento de carga adaptável é suportado pelo qual os objetos acessados com frequência são replicados em mais nós.
BlueStore é o tipo de armazenamento padrão e recomendado para ambientes de produção, que é a própria implementação de armazenamento do Ceph, fornecendo melhor latência e configurabilidade do que o back-end do armazenamento de arquivos e evitando as deficiências do armazenamento baseado no sistema de arquivos que envolve processamento adicional e camadas de cache.
O backend do Filestore ainda é considerado útil e muito estável; O XFS costumava ser o tipo de sistema de arquivos subjacente recomendado para ambientes de produção, enquanto o Btrfs era recomendado para ambientes de não produção. Os sistemas de arquivos ext4 não eram recomendados por causa das limitações resultantes no comprimento máximo dos objetos RADOS. Mesmo usando o BlueStore, o XFS é usado para uma pequena partição de metadados.
Uma visão geral de alto nível da organização interna do Ceph:
Armazenamento de objetos
Um diagrama de arquitetura mostrando as relações entre os componentes da plataforma de armazenamento Ceph.
Ceph implementa armazenamento de objetos distribuídos - BlueStore. As bibliotecas de software do Ceph fornecem aos aplicativos clientes acesso direto ao confiável sistema de armazenamento de objetos distribuídos autônomo (RADOS) e também fornecem uma base para alguns dos recursos do Ceph, incluindo RADOS Block Device (RBD), RADOS Gateway e o Ceph Sistema de arquivos .
As bibliotecas de software "librados" fornecem acesso em C, C ++, Java, PHP e Python. O RADOS Gateway também expõe o armazenamento de objeto como uma interface RESTful que pode se apresentar como Amazon S3 nativa e APIs OpenStack Swift.
Bloco de armazenamento
O sistema de armazenamento de objetos do Ceph permite que os usuários montem o Ceph como um dispositivo de bloco com provisionamento dinâmico. Quando um aplicativo grava dados no Ceph usando um dispositivo de bloco, o Ceph distribui e replica automaticamente os dados no cluster. O RADOS Block Device (RBD) da Ceph também se integra com máquinas virtuais baseadas em kernel (KVMs).
O Ceph RBD faz interface com o mesmo sistema de armazenamento de objetos Ceph que fornece a interface librados e o sistema de arquivos CephFS, e armazena imagens de dispositivos de bloco como objetos. Uma vez que o RBD é baseado em librados, o RBD herda as habilidades dos librados, incluindo instantâneos somente leitura e reverter para instantâneo. Ao distribuir imagens em todo o cluster, o Ceph melhora o desempenho do acesso de leitura para grandes imagens de dispositivos de bloco.
O dispositivo de bloco pode ser virtualizado, fornecendo armazenamento de bloco para máquinas virtuais, em plataformas de virtualização como Apache CloudStack, OpenStack, OpenNebula, Ganeti e Proxmox Virtual Environment .
Sistema de arquivos
O sistema de arquivos do Ceph (CephFS) é executado no mesmo sistema de armazenamento de objeto que fornece armazenamento de objeto e interfaces de dispositivo de bloco.
O cluster de servidor de metadados Ceph fornece um serviço que mapeia os diretórios e nomes de arquivo do sistema de arquivos para objetos armazenados em clusters RADOS. O cluster do servidor de metadados pode expandir, ou contrair, e pode rebalancear o sistema de arquivos dinamicamente para distribuir dados uniformemente entre os hosts do cluster. Isso garante alto desempenho e evita cargas pesadas em hosts específicos dentro do cluster.
Os clientes montam o sistema de arquivos compatível com POSIX usando um cliente de kernel
Linux. Um cliente mais antigo baseado em FUSE também está disponível. Os servidores funcionam como daemons Unix regulares .
Um diagrama de arquitetura mostrando as relações entre os componentes da plataforma de armazenamento Ceph: