A melhor escolha para um servidor de arquivos temporários do Linux?

5

Para um projeto específico, tenho que implementar um servidor de arquivos temporários:

  1. o servidor deve exibir arquivos binários de tamanho médio (cerca de 1 MB)
  2. a duração máxima dos arquivos é de 5 minutos
  3. arquivos serão enviados por cerca de 10 servidores distintos
  4. arquivos serão lidos por cerca de 10 servidores distintos
  5. um determinado arquivo é enviado por apenas 1 servidor e lido por apenas 1 servidor
  6. um determinado arquivo pode ser destruído após a primeira leitura bem-sucedida
  7. o servidor deve usar apenas portas não privilegiadas (sem FTP ou NFS)
  8. o servidor deve funcionar sem acesso root
  9. o servidor deve funcionar no Linux
  10. o servidor deve estar acessível na LAN
  11. clientes (upload e download) são apenas servidores Linux (o código do cliente deve funcionar também com qualquer acesso root)
  12. Eu não preciso de persistência formal (posso aceitar perder alguns arquivos após uma falha)
  13. o servidor deve usar apenas componentes de código aberto
  14. deve ser muito rápido!

Estou considerando duas soluções: - uma instância do REDIS (sem VM, sem persistência) - um servidor NGINX com módulo DAV (comando PUT para carregar)

Mas estou realmente aberto a outras soluções; -)

    
por Ben Pilbrow 25.07.2010 / 19:00

4 respostas

3

Se você pode usar uma solução FreeBSD em vez de Linux, o FreeNAS é uma ótima opção NAS que é fácil de instalar e configurar e tem um enorme gama de opções para conectividade e controle de acesso. Há também uma versão Linux do projeto em andamento, mas não tenho certeza de como o recurso é completo.

Há também o OpenFiler no lado do Linux, mas nós achamos o FreeNAS melhor para as nossas necessidades variadas (que reconhecidamente soam um pouco diferente do seu).

Edit: Parece que você precisa de algo para ser executado em um servidor Linux existente, em vez de seu próprio hardware. Se isso for uma necessidade, eu pensaria em executar uma dessas opções como uma VM no KVM ou no Xen.

    
por 25.07.2010 / 20:17
0

você pode tentar a sua sorte com memcached ou coauchdb . ambos são key value stores, o primeiro é o tipo 'na memória'. pode usá-lo? Eu não sei - isso depende se o consumidor pode 'adivinhar' a chave sob a qual os dados foram armazenados pelo produto.

talvez módulo memcached para nginx é exatamente o que você precisa? junto com ele, você obtém a interface HTTP RESTful para o seu banco de dados na memória.

você também pode considerar algum mecanismo de enfileiramento - começando do simples fifo implementado por você no mysql para coisas como rabbitmq ou activemq .

    
por 25.07.2010 / 20:50
0

Basta executar o NFS em uma porta não padrão, criar seu disco para esse tmpfs, acho que pelo som disso, o tamanho total é pequeno? Isso deve ser executado perto da velocidade do fio (classicamente nfs quer gravações síncronas, mas com tmpfs, isso não será um problema.


tmpfs é um fs que é basicamente um pedaço do seu swapfile / memory. Portanto, não há persistência através de uma reinicialização de qualquer tipo, mas tão rápido quanto gravar na memória.

    
por 25.07.2010 / 21:26
0

Seus requisitos sugerem que, além do "servidor", você precisa fornecer:

1) algum software cliente para colocar arquivos no servidor

2) software cliente para baixar do servidor

3) um canal de notificação entre o remetente e o downloader

4) alguns smarts no servidor para expirar o conteúdo não é mais necessário

Enquanto o HTTP é uma escolha óbvia (1 e 2 são bem abordados, enquanto 3 e 4 requerem apenas algumas linhas de código facilmente implementadas em perl / php / whatever) isso soa como um sistema de enfileiramento de mensagens assíncrono. Você não diz quão importante é a integridade transacional - mas 2 & 12 sugerem que isso não é um grande problema. Portanto, sugiro usar o email - a notificação é implícita, ela sobreviverá a interrupções temporárias, você poderá configurar facilmente um segundo servidor SMTP em um sistema em execução em uma porta sem privilégios e a maioria permitirá especificar intervalos de repetição, tempos limite etc. de adicionar código de trigger no final do recebimento - isso é trivial usando o procmail.

HTH

C.

    
por 26.07.2010 / 17:23