Samba quebrando hard links - comportamento desejado?

4

Estou usando o Samba 2: 3.5.4 no Ubuntu 10.10 Server e um sistema de arquivos EXT4.

Eu configurei uma pasta "dev" localmente no meu pc, e usando "cp -alf" hard vinculou essa pasta à pasta "teste". Então, ao procurar na pasta "test", ela tem exatamente o mesmo conteúdo da pasta "dev".

"test" é compartilhado no momento usando o Samba na rede.

Se eu alterar um arquivo em "teste" no sistema de arquivos local. A alteração é refletida na pasta "dev" (como as pastas estão vinculadas). Isso é como esperado.

Quando um arquivo em "teste" é modificado por meio de um compartilhamento Samba, o link físico é quebrado. Ou seja, a alteração só se aplica a "teste" e não a "dev".

Modificando arquivos via Samba, e isso quebrando os hard links é realmente o que queremos. O que me foi perguntado (e não consigo encontrar nenhum white paper sobre isso), é isto:

  • um bug
  • ou conforme projetado

O perigo é que, se for um bug, e começarmos a usar a solução acima, quando o bug for corrigido, nossa configuração não funcionará mais!

Alguém tem alguma ideia,

Obrigado.

    
por Bealer 21.01.2011 / 17:40

2 respostas

4

Não posso comentar especificamente sobre o Samba, mas muitas vezes o aplicativo específico em uso é responsável por quebrar os links. Alguns editores, por exemplo, substituem um arquivo - em vez de simplesmente sobrescrevê-lo - ao salvar as alterações, o que naturalmente quebraria todos os links físicos associados ao arquivo ... então, seu comportamento pode ser mais devido ao aplicativo que você ' re usando do que para o Samba.

    
por 21.01.2011 / 19:13
1

Este não é o comportamento do samba que quebra o link. Larsks está certo de que o comportamento que você descreveu é específico do aplicativo. Os aplicativos gravarão em arquivos usando dois métodos básicos: Método "A": basta escrever de volta no arquivo original. Método "B": siga um algoritmo seguro:     (1) escrever no arquivo temporário;     (2) se gravar com êxito o arquivo temporário, substitua o arquivo original pelo arquivo temporário. No método "B", a gravação no arquivo temporário resultará, é claro, em um novo inode e a substituição do arquivo original interromperá o link físico.

Veja por si mesmo: crie um arquivo text.txt simples no compartilhamento samba, juntamente com um arquivo vinculado. Edite o arquivo samba usando o bloco de notas ou o wordpad e você verá que os inodes ainda são os mesmos. Faça o mesmo com o MS-Word e descubra que o arquivo salvo recebe um novo inode, quebrando assim o hard link. Portanto, o bloco de notas e o teclado de Word usam o método "A", enquanto o MS-Word usa o método "B". Você pode provar para si mesmo que isso não é samba usando um sistema de arquivos ext3 local montado no Windows e executando os mesmos testes.

    
por 06.11.2011 / 08:14