Operações de entrada / saída
Os clientes do Ceph recuperam um Mapa do cluster de um monitor do Ceph, ligam a um conjunto e executam entrada / saída (E/S) em objetos dentro de grupos de posicionamento no conjunto. O conjunto de regras CRUSH do conjunto e o número de grupos de colocação são os principais fatores que determinam como o Ceph colocará os dados.
Com a versão mais recente do mapa do cluster, o cliente sabe sobre todos os monitores e OSDs no cluster e seus estados atuais. No entanto, o cliente não sabe nada sobre locais do objeto.
As únicas entradas requeridas pelo cliente são o ID do objeto e o nome do conjunto. É simples: Ceph armazena dados em conjuntos nomeados. Quando um cliente deseja armazenar um objeto nomeado em um conjunto, ele usa o nome do objeto, um código hash, o número de PGs no conjunto e o nome do conjunto como entradas; em seguida, CRUSH (Controlled Replication Under Scalable Hash) calcula o ID do grupo de posicionamento e o OSD primário para o grupo de posicionamento.
Os clientes do Ceph usam as etapas a seguir para calcular IDs do PG.
O cliente insere o ID do conjunto e o ID do objeto Por exemplo,
pool = liverpooleobject-id = john..CRUSH usa o ID do objeto e faz hash dele.
CRUSH calcula o hash modulo do número de PGs para obter um ID PG. Por exemplo,
58.CRUSH calcula o OSD primário correspondente ao ID PG.
O cliente obtém o ID do conjunto dado o nome do conjunto. Por exemplo, o conjunto
liverpoolé o número do conjunto4O cliente pré-anexa o ID do conjunto ao ID PG. Por exemplo,
4.58.O cliente executa uma operação de objeto, como gravação, leitura ou exclusão, comunicando-se diretamente com o OSD primário no Conjunto de ações.
A topologia e o estado do cluster de armazenamento do Ceph são relativamente estáveis durante uma sessão Capacitar um cliente Ceph por meio do librados para calcular locais de objeto é muito mais rápido do que exigir que o cliente faça uma consulta para o cluster de armazenamento em uma sessão de bate-papo para cada operação de leitura / gravação. O algoritmo CRUSH permite que um cliente calcule onde os objetos devem ser armazenados e permite que o cliente entre em contato com o OSD primário no conjunto de ações diretamente para armazenar ou recuperar dados nos objetos Como um cluster na escala exabyte tem milhares de OSDs, a alocação excessiva de rede entre um cliente e um Ceph OSD não é um problema significativo. Se o estado do cluster for alterado, o cliente poderá simplesmente solicitar uma atualização para o mapa do cluster a partir do monitor do Ceph.