O que é o Ceph?

3 de abril de 2024

Ceph é um de código aberto plataforma de software que fornece armazenamento altamente escalonável baseado em objetos, blocos e arquivos em um sistema unificado. Ele foi construído para funcionar Hardware de comodidade, oferecendo uma solução de armazenamento altamente confiável e fácil de escalar para grandes operações de dados. O sistema foi projetado para ser auto-recuperável e autogerenciado, visando minimizar o tempo de administração e outros custos.

História do Ceph

Ceph foi desenvolvido por Sage Weil como parte de sua tese de doutorado em ciência da computação na Universidade da Califórnia, Santa Cruz (UCSC). O projeto começou em 2004 sob a direção do Professor Scott Brandt como parte do Centro de Pesquisa de Sistemas de Armazenamento da UCSC.

O principal objetivo por trás do Ceph era projetar um sistema de armazenamento distribuído que pudesse escalar até o nível de exabyte e além, mantendo alto desempenho e confiabilidade. Sage Weil e sua equipe procuraram resolver as limitações das soluções de armazenamento existentes, que muitas vezes enfrentavam problemas de escalabilidade, eram propensas a gargalos ou exigiam hardware proprietário caro.

Aqui estão alguns marcos importantes no desenvolvimento e evolução do Ceph:

  • 2006. O protótipo inicial do Ceph foi lançado publicamente, apresentando sua abordagem inovadora para armazenamento distribuído, incluindo o uso do Reliable Autonomic Distributed Object Store (RADOS) para alcançar alta escalabilidade e disponibilidade.
  • 2007. O Ceph foi lançado sob a LGPL 2.1 (Licença Pública Geral Menor), convidando uma comunidade mais ampla de desenvolvedores a contribuir para seu desenvolvimento.
  • 2010. A primeira versão estável do Ceph, chamada Argonaut, marcou um marco significativo para o projeto, demonstrando sua maturidade e estabilidade para ambientes de produção.
  • 2011. A Inktank Storage foi fundada por Sage Weil para fornecer suporte comercial e serviços para Ceph, ajudando a acelerar sua adoção em ambientes corporativos.
  • 2014. adquiriu a Inktank Storage, investindo ainda mais no desenvolvimento do Ceph e integrando-o ao seu conjunto de cloud e soluções de armazenamento. Esta aquisição foi fundamental para a Ceph, pois combinou os recursos e a experiência da Red Hat com a tecnologia inovadora da Ceph.
  • 2015 e além. O Ceph continuou a evoluir, com lançamentos regulares adicionando novos recursos, melhorando o desempenho e expandindo seus recursos. A comunidade em torno do Ceph cresceu significativamente e desenvolvedores, usuários e empresas contribuíram para seu desenvolvimento e implantação em diversos setores.

Arquitetura Ceph

A arquitetura do Ceph foi projetada para oferecer escalabilidade, confiabilidade e desempenho, aproveitando o poder do computação distribuída para gerenciar grandes quantidades de dados com eficiência. A arquitetura é fundamentalmente modular, permitindo o dimensionamento independente de diferentes componentes com base nos requisitos da carga de trabalho. Aqui está uma visão geral dos principais componentes da arquitetura do Ceph.

1. RADOS (armazenamento confiável de objetos distribuídos autônomos)

RADOS é a base da arquitetura Ceph, fornecendo a capacidade subjacente de armazenamento distribuído. Ele lida armazenamento de dados, replicação de dadose recuperação. Os clusters RADOS são compostos por dois tipos de daemons:

  • OSD (Object Storage Demônios). Eles são responsáveis ​​por armazenar dados, lidar com replicação de dados, recuperação, preenchimento e rebalanceamento em todo o cluster. Cada daemon OSD atende um disco de armazenamento e se comunica com outros OSDs para garantir que os dados sejam replicados e distribuídos de forma consistente no cluster.
  • MONs (monitores). Os monitores mantêm uma cópia mestre do mapa do cluster, um registro detalhado do estado do cluster, incluindo OSDs, seu status e outras informações críticas. metadados. Os monitores garantem que o cluster alcance consenso sobre o estado do sistema usando o Paxos algoritmo, fornecendo uma visão confiável e consistente do cluster para todos os clientes e OSDs.

2. Algoritmo CRUSH

Ceph usa o algoritmo CRUSH (Controlled Replication Under Scalable Hashing) para armazenar e recuperar dados com eficiência. CRUSH é uma abordagem inovadora que permite ao Ceph calcular onde os dados devem ser armazenados (ou recuperados) no cluster sem a necessidade de uma tabela de pesquisa central. Esse processo permite que o Ceph seja dimensionado horizontalmente sem gargalos ou pontos únicos de falha.

3. Interfaces de armazenamento Ceph

O Ceph fornece diversas interfaces de armazenamento para interagir com a camada RADOS subjacente, atendendo a diferentes necessidades de armazenamento:

  • RBD (dispositivo de bloco RADOS). Essa interface fornece armazenamento em blocos, permitindo que o Ceph seja usado como uma solução de armazenamento em blocos distribuída e escalável para máquinas virtuais e bancos de dados.
  • CephFS (sistema de arquivos Ceph). Compatível com POSIX sistema de arquivos que usa Ceph para armazenamento, fornecendo uma interface de armazenamento de arquivos para o cluster do Ceph. Oferece recursos como instantâneos e cotas.
  • RGW (RADOS Gateway). Isso fornece object storage recursos, oferecendo uma interface compatível com APIs S3 e Swift. É comumente usado para escala web object storage necessidades.

4. Daemon do Gerenciador Ceph (ceph-mgr)

O daemon do Ceph Manager é responsável por rastrear tempo de execução métricas e o estado atual do cluster. Ele fornece recursos essenciais de gerenciamento e monitoramento, garantindo que os administradores tenham insights em tempo real sobre a integridade e o desempenho do cluster.

Como funciona o Ceph?

Aqui está uma explicação passo a passo de como o Ceph funciona:

1. Distribuição de dados

No Ceph, todos os dados são armazenados como objetos em um namespace simples. Quando um arquivo é salvo no cluster do Ceph, ele é dividido em blocos de tamanho fixo, que são agrupados em objetos. Esses objetos são a unidade básica de armazenamento no Ceph, contendo o bloco de dados, metadados e um identificador exclusivo.

O Ceph usa o algoritmo CRUSH para determinar como armazenar e recuperar esses objetos no cluster. CRUSH utiliza o identificador exclusivo de cada objeto para calcular quais OSDs devem armazenar as réplicas do objeto. Esse processo permite que o Ceph gerencie o posicionamento de dados no cluster de maneira dinâmica e eficiente, sem depender de um diretório centralizado ou de um nó mestre.

2. Replicação de dados

Para garantir a durabilidade dos dados e alta disponibilidade, o Ceph replica cada objeto várias vezes em diferentes OSDs. O número de réplicas é configurável (normalmente três) para equilibrar entre redundância e eficiência de armazenamento.

Ceph também garante consistência forte. Quando os dados são gravados ou modificados, as alterações são replicadas para todas as cópias antes que a gravação seja confirmada pelo cliente. Isso garante que todos os clientes vejam os mesmos dados, independentemente da réplica que acessam.

3. Tolerância a falhas e autocura

Os Ceph Monitors (MONs) supervisionam o estado do cluster, incluindo a integridade dos OSDs e sua distribuição no cluster. Os MONs usam o algoritmo de consenso Paxos para chegar a um acordo sobre o estado atual do cluster, garantindo visualizações consistentes entre os nós.

Quando um OSD falha, o Ceph redistribui automaticamente seus dados para outros OSDs, mantendo o nível de replicação desejado. Este processo é conhecido como autocorreção e ajuda a garantir que o sistema permaneça disponível e durável diante de Hardwares falhas.

4. Acesso a dados

O Ceph fornece diversas interfaces para acesso a dados, cada uma atendendo a diferentes necessidades de armazenamento:

  • Dispositivo de bloco RADOS (RBD) para armazenamento em bloco, permitindo que máquinas virtuais e bancos de dados armazenem dados no Ceph como se fosse um dispositivo de bloco local.
  • Sistema de arquivos Ceph (CephFS) para armazenamento de arquivos, fornecendo um sistema de arquivos compatível com POSIX para armazenar e gerenciar arquivos em uma estrutura hierárquica.
  • Gateway RADOS (RGW) para object storage, oferecendo APIs compatíveis com S3 e Swift para armazenar e acessar dados como objetos.

Os clientes Ceph interagem com o cluster de armazenamento por meio dessas interfaces. Eles utilizam librados, biblioteca que implementa o protocolo de comunicação com Ceph OSDs, para acessar os dados armazenados no cluster.

5. Escala

A arquitetura do Ceph permite escalar para milhares de nós e de petabytes a exabytes de dados. Adicionar mais capacidade de armazenamento ou desempenho é tão simples quanto adicionar mais nós ao cluster. O algoritmo CRUSH permite que o Ceph gerencie essa escalabilidade com eficiência, distribuindo os dados uniformemente pelo cluster sem gargalos centrais.


Anastasia
Spasojevic
Anastazija é uma redatora de conteúdo experiente, com conhecimento e paixão por cloud computação, tecnologia da informação e segurança online. No phoenixNAP, ela se concentra em responder a questões candentes sobre como garantir a robustez e a segurança dos dados para todos os participantes do cenário digital.