Overmount o conteúdo do diretório existente no tempo de execução

1

Eu tenho o seguinte cenário:

  1. os usuários executam o software instalado em / path / to / software
  2. Eu crio uma imagem FS com backup de arquivo com exatamente o mesmo conteúdo de / path / to / software
  3. Montei a imagem usando o loopback no modo somente leitura em / path / to / software

Após o passo 3, o conteúdo antigo do diretório é 'sombreado' pela imagem recém-montada com exatamente o mesmo conteúdo.

Isso pode afetar os usuários que iniciaram o software original antes da montagem? Fiz alguns testes e parece que os programas iniciados desconhecem qualquer alteração, ou seja, continuam a ser executados sem qualquer erro. É um pouco surpreendente, uma vez que os programas abriram anteriormente alguns arquivos (bibliotecas) no sistema de arquivos antigo, que desapareceram após a etapa 3. Eu esperaria que os descritores de arquivos mudassem após a montagem.

Então, como é que não há erro? Os arquivos antigos são visíveis de alguma forma para os programas em execução, apesar do fato de o conteúdo do diretório ter sido sombreado?

    
por angainor 27.04.2016 / 13:30

1 resposta

1

Nos sistemas de arquivos compatíveis com POSIX, os arquivos abertos não são removidos até que ninguém os abra mais. Esse mesmo comportamento é usado na biblioteca padrão tmpfile , que abre um arquivo temporário e, em seguida, o exclui. O identificador de arquivo aberto ainda pode ser usado pelo processo que possui o identificador de arquivo (ou seus filhos), mas nenhum outro processo pode abrir o arquivo, pois não há mais nenhum nome de arquivo. Parece razoável esperar que isso também funcione quando mount ing em algum diretório.

    
por 27.04.2016 / 15:37