“Excluir em gravação” com o mapeador de dispositivos e o Docker

2

O comportamento padrão atual do Docker é COW (copy on write), ou seja, allocate on write. Isso depende do espaço livre em uma unidade para gravar no disco.

Por outro lado - com a memória, os arquivos não referenciados são deixados disponíveis, para serem sobrescritos caso algo seja necessário, ou novamente vinculados em tempo constante, se forem necessários novamente.

Gostaríamos de implementar um mecanismo semelhante para armazenar em cache arquivos remotos em um disco local. Ou seja, haveria um local definido para arquivos que poderiam ser sobrescritos se o espaço fosse necessário ou vinculados se os arquivos fossem necessários.

Tal parte do software idealmente se encaixaria no driver do FS quando ele tenta fazer uma gravação ou quando relata o espaço disponível. É minha suposição de que um método de pesquisa seria insuficiente, já que um software pode alocar arquivos grandes arbitrários a qualquer momento.

Será que algo assim já existe no mundo do código aberto? Se não, é possível? Existem grandes impedimentos? O que é uma boa maneira de começar?

    
por Peter Ehrlich 12.08.2016 / 21:41

1 resposta

3

Uma maneira de começar é com o FUSE, sistema de arquivos no espaço do usuário. Esta API permite que você implemente um sistema de arquivos em um pequeno programa que pode fazer o que você escolher para armazenar em cache o acesso a arquivos remotos. Por exemplo, o sistema de arquivos sshfs fuse usa sftp para obter / colocar arquivos em um sistema remoto e transparentemente deixá-los aparecer como arquivos locais.

Um sistema de arquivos de cache somente leitura em C usando o FUSE que poderia formar uma base para o seu código foi anunciado em 2004 e é aqui . Para o desenvolvimento inicial, você pode preferir usar uma interface de biblioteca Python para o FUSE, e há pelo menos três implementações diferentes e muitos sistemas de arquivos de exemplo construídos em cada um deles. Uma busca por cache do Python FUSE veio com CacheFS de 2011.

    
por 13.08.2016 / 13:45