BestReplicated File System - Arquivos pequenos e estáticos

3

Como parte de nosso fluxo de trabalho de desenvolvimento, gostaríamos que nosso servidor de compilação publicasse nossos binários compilados e outros artefatos de compilação em algum sistema de arquivos replicado baseado em LAN. Idealmente, nós apenas teríamos nosso servidor de compilação descartando os artefatos de compilação em uma pasta de acordo com a versão da compilação e o conteúdo dessa pasta seria replicado para cada estação de trabalho do desenvolvedor localmente. Depois de publicada, cada compilação é estática e não é alterada. Não temos requisitos de consistência strongs, precisamos que os arquivos estejam disponíveis em cada estação de trabalho do desenvolvedor dentro de um minuto ou mais. Todas as máquinas são baseadas em Linux.

A solução mais fácil é provavelmente um NAS com um rsync + cron, mas isso parece desajeitado. Existe outro sistema de arquivos distribuído / replicado que suporte os requisitos acima? Nós olhamos para fazer o Amazon S3 + s3fs, mas isso era dolorosamente lento.

De muitas maneiras, isso parece um espelhamento tradicional de uma fonte autoritativa em um cenário de servidor da Web, por exemplo, www1, www2, etc.

    
por Jonathan Oliver 02.05.2011 / 21:54

3 respostas

2

Se você precisa apenas de replicação unidirecional, não quer um sistema de arquivos distribuído. Isso introduz um lote de complexidade para nenhum ganho. Eu iria para a abordagem rsync. A última etapa do seu script de construção deve estar empurrando os artefatos se a construção tiver sido bem-sucedida. Se você preferir não fazer isso como parte de seus scripts de construção, pode usar o cron para fazer isso em determinados intervalos ou lsyncd fazer quando arquivos são criados ou modificados.

    
por 03.05.2011 / 05:05
2

Eu acho AFS (ou OpenAFS ) pode ser uma boa solução para você. Ele foi implementado no kernel do Linux desde o 2.6.10 e usa o Kerberos para autenticação.

    
por 02.05.2011 / 23:34
2

Eu também sugeriria tentar abordar isso com um sistema de controle de versão distribuído, como git . Você poderia usar ganchos de commits para manter todos atualizados, e a independência que você ganharia ao não fazer isso no nível do sistema de arquivos economizaria muitas dores de cabeça de confiabilidade no futuro. Você pode até encontrar outras vantagens de ter o material versionado ao longo do caminho.

    
por 03.05.2011 / 10:38