Em busca de um sistema de arquivos de rede com cache estendido para acelerar o acesso a arquivos

3

Estou executando um pequeno servidor doméstico que armazena meus documentos. Os discos neste servidor estão em uma configuração RAID 1 (usando o Linux md) e também é periodicamente copiado para um disco rígido externo para garantir que não os percam. No entanto, estou sempre acessando os arquivos de outros computadores na rede doméstica usando um compartilhamento SMB, e isso resulta em uma considerável penalidade de velocidade (especialmente quando conectado via WLAN). Isso é bastante irritante ao editar arquivos grandes, como RAWs de câmeras digitais, por exemplo.

Estou procurando uma solução para esse problema. Ele teria que oferecer algum tipo de cache local para acelerar o acesso ao arquivo. O cliente preferencialmente não manteria uma cópia de todos os dados no servidor, pois consiste em uma coleção muito grande de fotografias, a maioria das quais não acessarei com frequência. Em vez disso, ele deve armazenar em cache apenas os arquivos acessados e sincronizar as alterações novamente em segundo plano. Idealmente, ele também faria alguma leitura antecipada (por exemplo, armazenar em cache os arquivos que estão no mesmo diretório que o arquivo aberto no momento), mas suponho que isso seja um pouco demais. A sincronização deve ser automática (na alteração do arquivo). É improvável que ocorram alterações conflitantes nos arquivos (ao mesmo tempo em clientes diferentes) no meu caso de uso, mas eu preferiria que elas fossem tratadas adequadamente (notificação ao usuário).

Eu já vi as seguintes opções:

  • algo semelhante ao Dropbox. iFolder parece ser a única coisa que chega perto, mas sua reputação (estabilidade) e os requisitos me afastam.

  • Um sistema de arquivos distribuídos, como o OpenAFS . Não tenho certeza se isso acelerará o acesso aos arquivos. É provavelmente um exagero para o que eu preciso.

  • Talvez o NFS ou o Samba ofereçam essas possibilidades. Eu li um pouco sobre o Windows Offline Files , mas sua operação parece limitada (pelo menos no Windows XP).

Como isso é apenas para uso pessoal, não estou disposto a gastar muito dinheiro. Uma solução livre seria preferida. Além disso, o servidor precisa ser executado no Linux e eu preciso de um cliente para pelo menos o Windows.

Edit: Desde então, configurei o OpenAFS (um processo bastante complexo). Parece atender a maioria das minhas necessidades. Os arquivos são armazenados em cache localmente, acelerando o acesso a arquivos em cache. O primeiro acesso a um arquivo ainda é lento, é claro. Estou ansioso para que o Desconectado AFS planeje uma versão futura do OpenAFS, pois isso permitirá o pré-armazenamento em cache dos arquivos. Isso seria perfeito para editar conjuntos de arquivos grandes, como RAWs de câmera.

    
por Brecht Machiels 16.03.2011 / 00:56

2 respostas

2

Você pode armazenar em cache leituras e gravações para o NFSv4 com o FS-Cache. A Red Hat escreveu boa documentação .

FS-Cache is a persistent local cache that can be used by file systems to take data retrieved from over the network and cache it on local disk. This helps minimize network traffic for users accessing data from a file system mounted over the network (for example, NFS).

    
por 16.03.2011 / 03:24
0

O problema com sistemas de arquivos que funcionam em modo desconectado é 1) acesso simultâneo e 2) sincronização. Se você não precisa de acesso simultâneo, é só pegar um disco rígido removível e carregá-lo. Se você precisar de acesso simultâneo, haverá problemas com a sincronização, pois como um cliente que trabalha com uma cópia local informa a outros clientes que a cópia na rede está desatualizada? Se você pensar sobre isso, quanto mais próximo da sincronização você obtiver, menor será o ponto de ter um cache. Então, os dois extremos são os que geralmente vencem; você pode obter uma unidade portátil ou usar um sistema de arquivos que não armazena em cache.

Para as suas fotografias, o que você provavelmente quer é um índice local para que você possa pesquisar localmente no índice, mas buscar os arquivos reais da rede. Isso é algo que operaria em um nível mais alto do que o próprio sistema de arquivos, então o motivo pelo qual você não encontrou o que está procurando é que está procurando a coisa errada. :) Você provavelmente deveria estar procurando por programas de indexação de imagens; este é um problema que foi resolvido de várias maneiras, se bem me lembro.

Para uma solução mais geral, algo inspirado por um Subversion ou CVS ou similar provavelmente funcionaria muito bem.

    
por 16.03.2011 / 01:36