Existe um sistema de arquivos copy-on-write para o Mac OS X?

4

Estou no Snow Leopard. Eu tenho tanto MacFUSE e fuse4x instalado. Existe um sistema de arquivos copy-on-write que eu possa instalar?

Eu tentei criar o UnionFS-FUSE 0.25 usando includes e libs do fuse4x, mas recebo este erro:

error: ‘AT_SYMLINK_NOFOLLOW’ undeclared

Parece que o OS X não define esta constante (eu usei todos / usr / include e ele não foi encontrado).

Eu também tentei usar as montagens de união integradas do OS X ( mount -o union ), mas ele não se comportou como esperado. Eu montei 2 sistemas de arquivos (usando arquivos dmg) com a opção de união para o mesmo ponto de montagem. O primeiro era somente leitura e tinha um diretório chamado d1 contendo alguns arquivos. O segundo não tinha um diretório com esse nome. Quando tentei criar um arquivo em d1 na montagem de união, obtive um erro fs de somente leitura. Eu esperava que ele criasse automaticamente o diretório e o arquivo abaixo dele, ambos em fs # 2. Então tentei criar d1 em fs # 2, mas o conteúdo de d1 em fs # 1 estava completamente oculto (o dir aparecia vazio). Basicamente, o comportamento de união acontecia apenas no nível da raiz dos sistemas de arquivos e não era recursivo.

Se alguém quiser tentar replicar o comportamento de montagem de união incorporada, usei este guia .

Eu não estou familiarizado com os sistemas de arquivos copy-on-write - minha expectativa corresponde a como os sistemas de arquivos copy-on-write devem funcionar?

    
por Kelvin 29.08.2012 / 08:01

1 resposta

3

Depois de fazer um pouco mais de pesquisa, posso ter que desistir de uma solução pré-escrita e apenas escrever a minha.

O

PyFilesystem parece ter potencial, particularmente o tipo fs do MultiFS. Seu código FUSE precisa de um patch para funcionar com o fusível 4x .

A documentação do MultiFS não está clara sobre se ele criará um diretório no fs gravável, mas vou tentar.

UPDATE

O patch introduziu um bug quando moveu esta linha antes do carregamento do iconv CDLL:

_libfuse = CDLL(_libfuse_path)

Basta movê-lo logo depois e ele deve funcionar no OS X. (Uma correção geral também requer a adição da linha após o bloco if _system in .)

Então eu tentei o MultiFS e ele não cria diretórios ausentes no FS gravável. Mas eu estou supondo que é fácil adicionar (mesmo que eu não sou um especialista em python). Além disso, tentar sobrescrever ou anexar um arquivo em um dos FSs somente de leitura não cria consistentemente o caminho correspondente no arquivo gravável. Eu recebo muitos erros e trava (o processo de fusível começa a usar muita CPU). Essa solução ainda parece muito promissora.

    
por 29.08.2012 / 20:35