Ceph Distributed File System ?
On Dezembro 12, 2021 by adminCeph é um sistema de arquivo distribuído de rede projetado para fornecer bom desempenho, confiabilidade e escalabilidade.
As características básicas incluem:
- POSIX semântica
- Seamless scaling from 1 to many thousands of nodes
- Alta disponibilidade e confiabilidade. Sem ponto único de falha.
- Replicação de dados através dos nós de armazenamento
- Reprodução rápida de falhas nos nós
- Reequilíbrio automático de dados sobre adição/remoção de nós
- Fácil implantação: a maioria dos componentes FS são daemons de espaço do usuário
Também,
- Flexible snapshots (em qualquer diretório)
- Contabilização regressiva (arquivos aninhados, diretórios, bytes)
Em contraste com sistemas de arquivos em cluster como GFS, OCFS2 e GPFS que dependem do acesso simétrico de todos os clientes a dispositivos de blocos compartilhados, o Cephseparates data and metadata management into independent serverclusters, similar ao Lustre. Ao contrário do Lustre, porém, os metadados e nós de armazenamento são executados inteiramente como daemons de espaço do usuário. Os dados de arquivo são nós de armazenamento de stripedacross em grandes pedaços para distribuir a carga de trabalho e facilitar a alta taxa de transferência. Quando os nós de armazenamento falham, os dados são replicados de forma distribuída pelos próprios nós de armazenamento (com alguma coordenação mínima de um monitor de cluster), tornando o sistema extremamente eficiente e escalável.
Servidores de metadados formam efetivamente um cache grande, consistente e distribuído em memória acima do espaço de nomes de arquivos, que é extremamente escalável, redistribui metadados dinamicamente em resposta a mudanças na carga de trabalho e pode tolerar falhas arbitrárias (bem, não-bizantinas) nos nós. O servidor de metadados adota uma abordagem pouco convencional ao armazenamento de metadados para melhorar significativamente o desempenho de cargas de trabalho comuns. Inparticular, os inodes com apenas um link são indiretamente embutidos, permitindo que diretórios inteiros de dentaduras e inodes sejam lançados em seu cache com uma única operação de E/S. O conteúdo de diretórios extremamente grandes pode ser fragmentado e gerenciado por servidores de metadados independentes, permitindo acesso simultâneo escalável.
O sistema oferece rebalanceamento/migração automática de dados ao escalar de um pequeno cluster de apenas alguns nós para muitas centenas, sem a necessidade de um administrador esculpir o conjunto de dados em volumes estáticos ou passar pelo tedioso processo de migração de dados entre servidores.Quando o sistema de arquivos se aproxima do fim, novos nós podem ser facilmente adicionados e as coisas “simplesmente funcionarão”
Ceph inclui um mecanismo flexível de snapshot que permite ao usuário criar um snapshot em qualquer subdiretório (e seu conteúdo aninhado) no sistema. A criação e exclusão de snapshot são tão simples como ‘mkdir.snap/foo’ e ‘rmdir .snap/foo’.
Ceph também fornece alguma contabilidade recursiva em diretórios para nestedfiles e bytes. Ou seja, um ‘getfattr -d foo’ em qualquer diretório do sistema revelará o número total de arquivos e subdiretórios regulares aninhados, e uma soma de todos os tamanhos de arquivos aninhados. Isto faz com que a identificação de grandes consumidores de espaço em disco seja relativamente rápida, já que não é necessário ‘du’ ou uma verificação recursiva similar do sistema de arquivos.
Finalmente, o Ceph também permite que quotas sejam definidas em qualquer diretório no sistema. A quota pode restringir o número de bytes ou o número de arquivos armazenados abaixo daquele ponto na hierarquia de diretórios. As quotas podem ser definidas usando os atributos ‘ceph.quota.max_files’ e ‘ceph.quota.max_bytes’, ex:
setfattr -n ceph.quota.max_bytes -v 100000000 /some/dirgetfattr -n ceph.quota.max_bytes /some/dir
Uma limitação da implementação atual de quotas é que ela depende da cooperação do cliente montando o sistema de arquivos para parar os escritores quando a alimentação for alcançada. Um cliente modificado ou adversário não pode ser prevenido de escrever tantos dados quanto precisa.
Opções de Montagem ¶
ip=A.B.C.D Especifique o IP e/ou porta que o cliente deve ligar localmente. Normalmente não há muita razão para fazer isso. Se o IP for notspecified, o endereço IP do cliente é determinado olhando para o endereço de sua conexão ao monitor de onde se origina. wsize=X Especifique o tamanho máximo de escrita em bytes. Padrão: 64 MB. rsize=X Especifique o tamanho máximo de leitura em bytes. Padrão: 64 MB. rasize=X Especifique o tamanho máximo da cabeça de reada em bytes. Padrão: 8 MB. mount_timeout=X Especifique o valor de timeout para montagem (em segundos), no caso de um sistema de arquivo Ceph não-responsivo. O padrão é 60seconds. caps_max=X Especifique o número máximo de caps a segurar. As caps não utilizadas são liberadas quando o número de caps excede o limite. O padrão é 0 (sem limite) rbytes Quando stat() é chamado em um diretório, defina st_size para ‘rbytes’, a soma dos tamanhos de arquivo sobre todos os arquivos aninhados abaixo dessa diretriz. Este é o padrão. norbytes Quando stat() é chamado em um diretório, defina st_size para o número de entradas naquele diretório. nocrc Desabilita o cálculo CRC32C para escrita de dados. Se definido, o nocrc de armazenamento deve confiar na correção de erros do TCP para detectar corrupção de dados na carga útil de dados. dcache Use o conteúdo do dcache para realizar buscas negativas ereaddir quando o cliente tiver todo o conteúdo do diretório em seu cache. (Isto não altera a correção; os metadados usescached do cliente somente quando uma locação ou capacidade garante que ele évalid.) nodcache Não use o dcache como acima. Isto evita uma quantidade significativa de código complexo, sacrificando a performance sem afetar a correção, e é útil para rastrear bugs. noasyncreaddir Não use o dcache como acima para readdir. noquotadf Relatar o uso geral do sistema de arquivos em statfs ao invés de usar a cota do diretório raiz. nocopyfrom Não use a operação ‘copy-from’ do RADOS para realizar cópias de objetos remotas. Atualmente, ele só é usado no copy_file_range, que reverterá para a implementação VFS padrão se esta opção for usada. recover_session=<no|clean>Set auto reconnect mode no caso em que o cliente está na lista de blocos. Os modos disponíveis são “não” e “limpo”. O padrão é “no”.
- no: nunca tente reconectar quando o cliente detecta que ele foi colocado na lista de bloco. As operações geralmente falharão depois de serem bloqueadas.
- clean: o cliente reconecta-se automaticamente ao cluster ceph quando detecta que foi bloqueado. Durante a reconexão, o cliente deixa cair dados/metadados sujos, invalida os caches de página e os manipuladores de arquivos graváveis. Após a reconexão, os bloqueios de arquivos tornam-se obsoletos porque o MDS perde o controle sobre eles. Se um inode contiver bloqueios de arquivos obsoletos, a leitura/escrita no inode não é permitida até que as aplicações liberem todos os bloqueios de arquivos obsoletos.
Deixe uma resposta