O Samba é a escolha certa para mim?

2

temos um aplicativo distribuído que usa grandes quantidades de conteúdo (todos os tipos de arquivos). Existem vários servidores que precisam acessar o conteúdo. Neste momento, o conteúdo é armazenado em cada servidor de forma redundante. Mas isso está ficando feio.

Queremos armazenar o conteúdo em uma única instância de armazenamento com discos rígidos grandes. Em seguida, queremos montar o sistema de arquivos dessa instância de armazenamento de cada um dos nossos servidores.

Eu pensei em usar o NFS, mas o esquema de segurança não parece se encaixar. Agora estou olhando para o Samba, mas não tenho certeza se é a escolha certa. Todos os servidores são Linux e o principal objetivo do Samba é um ambiente Windows / Linux. O que torna o Samba interessante para mim é a segurança em nível de usuário.

Além da segurança, outro requisito importante é o desempenho. Nossos servidores precisam de acesso rápido ao conteúdo. Isso é o mais rápido possível em uma LAN.

O Samba é uma boa escolha? Quais outras opções existem? E o WebDAV?

EDIT: O que eu preciso fazer: Temos um número variável de servidores que precisam acessar um número crescente de arquivos. Esperamos nos tornar vários TB. Nós chamamos esses arquivos de "conteúdo". Todos os servidores precisam usar a mesma versão do conteúdo. Os servidores precisam de acesso somente leitura simultâneo ao conteúdo. O conteúdo é atualizado relativamente raramente. Algo entre uma vez por semana e uma vez por mês, mas provavelmente se torna muito mais frequente. Neste momento, seria possível sincronizar o conteúdo em cada servidor, mas isso se tornará uma dor no futuro próximo. A atualização tem que ser bem rápida. Achamos que seria conveniente atualizar / sincronizar o conteúdo em apenas um servidor (servidor de armazenamento) e permitir que todos os outros servidores montassem o conteúdo como um sistema de arquivos remoto.

Tudo de bom

Jan

    
por Jan Deinhard 25.07.2011 / 09:47

4 respostas

3

O Samba quase certamente fará o que quiser, e com um desempenho razoavelmente razoável. Ele deve ter os controles de segurança necessários para lidar com qualquer caso de uso que você tenha em mente (sua pergunta é um pouco curta sobre detalhes).

É difícil fornecer outras recomendações, já que você não dá uma boa descrição do que precisa fazer e quais são suas restrições. WebDAV provavelmente não é útil; não é nada como um sistema de arquivos POSIX, e se você acha que precisa de um desempenho incrivelmente rápido, provavelmente está querendo algo que funcionará como um sistema de arquivos completo (buscas arbitrárias, esse tipo de coisa) que vai ser doloroso no WebDAV.

Você também não falou sobre o acesso simultâneo a arquivos individuais, o que tem uma strong influência em seu possível espaço de solução. Se apenas um cliente estiver acessando um determinado arquivo de uma só vez, e especialmente se apenas um cliente estiver atualizando um determinado arquivo, não necessariamente desista de soluções de sincronização periódicas - elas podem fazer uma bom trabalho, nas condições certas.

Por fim, se for principalmente (ou todos) somente leitura, considere fazer com que seus dados acessem níveis mais altos. Em vez de pensar que você tem para ter arquivos, por que não pensar em termos de abstrações úteis específicas do aplicativo? Um exemplo comum disso é o humilde banco de dados SQL - em vez de armazenar dados em arquivos simples e rastejá-los com código customizado, alguns clods inteligentes criaram a ideia de um mecanismo de armazenamento mais especializado e o palavreado necessário para acessá-lo de maneira inteligente. Não é tão flexível quanto um sistema de arquivos, mas (em seu nicho estreito) é uma visão maldita mais rápida. Talvez com um pouco de imaginação, você possa criar uma abstração semelhante para seus dados, o que poderia poupar bastante problemas?

    
por 25.07.2011 / 10:40
1

NFS - Sua instância de armazenamento é o servidor NFS. O que você chama de servidores que desejam montar os sistemas de arquivos NFS fora da instância de armazenamento são seus clientes NFS. Sua instância de armazenamento NFS precisa conhecer os endereços IP de seus clientes NFS, ou seja, seus servidores, mas você já conhece esses endereços. Para esses endereços, você pode permitir uma sub-rede inteira de cada vez e, pelo menos, saberá em que sub-rede seus servidores estão ativos. Observe que empresas como a NetApp vendem exatamente esse tipo de coisa e funcionam muito bem.

Samba - Minha experiência é um pouco diferente do que você quer usar (ou seja, o usuário fornece combinações de nome de usuário / senha quando monta os compartilhamentos), então não posso comentar sobre o uso proposto.

Ambos devem funcionar bem e ambos devem saturar uma interface ethernet de 1Gb sem problemas. Eu suspeito que esse será seu limite superior em termos de quantos dados você pode obter de sua instância de armazenamento. É claro que você pode usar várias interfaces ethernet para contornar isso e, em seguida, você provavelmente ficará limitado pela rapidez com que pode mover dados do que quer que você compre para discos.

Acho que um dos principais números que você precisa saber antes de começar isso é: quantos dados cada um dos vários servidores precisa ler por segundo? Então você precisa saber qual é o número máximo de servidores que você terá. Sua solução centralizada proposta fornece tantos dados por segundo? No momento, você resolveu isso fazendo com que cada servidor seja independente e tenha uma cópia dos dados.

    
por 25.07.2011 / 15:38
0

Em relação aos seus requisitos específicos de desempenho e velocidade, o SSH se encaixaria perfeitamente. O SSH usa o protocolo sftp para trocar arquivos e usa o controle nativo de permissão de usuário do Linux. Você pode usar um sistema de computador com grandes volumes de armazenamento (possivelmente com RAID ou Encryption em nível de hardware ou em nível de software, o sistema de arquivos EXT4 é perfeito, pois funciona magicamente rápido) como um Dedicated Attached Storage (DAS). Configure o servidor SSH nele e defina diferentes níveis de acesso do usuário em seus dados da mesma maneira que você faz em cada sistema de computador que você possui atualmente. Então, acessar o conteúdo deste servidor é tão fácil quanto acessar dados locais. A configuração de chaveiros em cada computador é essencial para tornar a autenticação no servidor segura.

    
por 25.07.2011 / 10:09
0

A consolidação em um servidor pode facilitar a vida - mas como você garante a disponibilidade - placas de rede duplicadas? Raid? Às vezes, a replicação pode ser uma coisa boa.

Já que estamos falando de comunicações servidor-servidor, a segurança no nível do usuário é um requisito muito grande? Certamente, a autenticação do usuário no NFS é fraca - mas que tal usar a autenticação NFS + em um nível inferior na rede, como o IPSEC? Ou um sistema de arquivos compartilhado em cima do iSCSI em cima de uma VPN?

Dependendo do padrão de acesso, e se a disponibilidade de armazenamento local não for um problema, a solução mais rápida pode ser algo como o AFS - onde você efetivamente obtém um cache local muito grande que tem a vantagem de ser utilizável quando o servidor desce.

    
por 25.07.2011 / 16:14