Questão Dispositivo de loop baseado em arquivo com suporte a gravação e tamanho dinâmico


Geralmente dispositivo de loop (disco do nó v) é baseado em um arquivo com tamanho pré-alocado (por exemplo, uma imagem de uma unidade de disquete ou disco ISO). O dispositivo é então tratado como um dispositivo de bloco e pode ser formatado com qualquer sistema de arquivos suportado pelo sistema operacional, e. ext3.

Por outro lado, o FUSE permite montar arquivos com suporte de escrita, ou seja, arquivamento. É possível gravar arquivos na unidade montada e o arquivo subjacente crescerá para acomodar todos os arquivos gravados nela. Então, de certa forma, ele se comporta como um dispositivo de bloco, mas sem um sistema de arquivos específico - o sistema de arquivos é determinado pelo tipo de arquivo, por exemplo, zip, tar.

Eu estou procurando uma implementação de um dispositivo com backup de arquivo que pode crescer dinamicamente para acomodar qualquer quantidade de arquivos (se comporta como um arquivo montado com FUSE), mas com implementação eficiente de operações de leitura / gravação / busca (como seria o caso com um sistema de arquivos em um dispositivo de bloco).

Por eficiente quero dizer mais eficiente do que procurar linearmente através do arquivo, então possivelmente com algum tipo de indexação distribuída de arquivos contidos no arquivo.

Como um exemplo do que quero dizer, vamos considerar um arquivo tar descompactado montado com o arquivemount. Ele suporta leitura / gravação, mas a operação de busca não é eficiente, já que os arquivos tar não suportam TOC - eles devem trabalhar com arquivos de fita.

No caso de arquivos zip montados com o arquivemount, a leitura e a busca são eficientes, pois o zip suporta TOC, no entanto, a gravação não é eficiente, pois geralmente envolve a recompactação de todo o arquivo.

Outro exemplo seria um arquivo esparso montado por meio de um dispositivo de loop - ele é esparso para poder crescer dinamicamente, mas até um tamanho máximo fixo especificado, o que não está atendendo à minha necessidade.

Ainda outro exemplo é o arquivo-backed do CouchDB banco de dados ou o MBox formato de arquivo. Em ambos os casos, os dados são sempre anexados ao arquivo (por exemplo, em vez de excluir um arquivo, ele é marcado como excluído e acrescenta uma nova versão). E para recuperar o espaço usado por arquivos excluídos de tempos em tempos, o arquivo precisa ser compactado. Com esse arquivo, todas as operações são rápidas, incluindo a busca, porque sempre lê a última versão do arquivo. No entanto, não conheço nenhuma implementação desse tipo para armazenar arquivos arbitrários.

Então, existe tal implementação de um dispositivo com backup de arquivo?


1


origem




Respostas: