Normalmente, as implementações do sistema de arquivos devem garantir aos programas aplicativos que a qualquer momento em uma determinada máquina, cada arquivo pode ser identificado exclusivamente pela combinação de seu ID de dispositivo (o campo st_dev
no stat
structure ) e seu inode (o campo st_ino
). O ID do dispositivo indica em qual sistema de arquivos montado o arquivo está e o inode caracteriza um arquivo dentro de um determinado sistema de arquivos. cp
considera dois arquivos idênticos se tiverem o mesmo ID de dispositivo e o mesmo inode.
É possível ter mais de um par (ID de dispositivo, inode) para um arquivo, se ele for acessado por meio de diferentes meios, por exemplo, uma montagem NFS para localhost (tais cenários tendem a ser exóticos).
Não deve ser possível que arquivos diferentes tenham os mesmos pares (ID do dispositivo, inode). No entanto, isso depende da implementação do sistema de arquivos. Se você puder alterar o conteúdo da fonte sem alterar o snapshot, esperaria que o snapshot exibisse um ID de dispositivo diferente da fonte, mas é possível que algumas implementações não façam isso.
Observe que, além de alterar o arquivo, seus testes não provam nada. A exclusão de um link físico não exclui os outros nomes do arquivo. Copiar arquivos apenas sob demanda é comum para os instantâneos, portanto, não seria anormal se o arquivo no instantâneo fosse exatamente o mesmo que o arquivo fora do instantâneo, desde que o conteúdo do arquivo permaneça idêntico. O número do inode normalmente permanecerá o mesmo.
Quando você alterar o arquivo, verifique se está gravando no mesmo arquivo e não removendo um arquivo e imediatamente após criar outro arquivo com o mesmo nome.
Se você tiver dois arquivos diferentes (o instantâneo e a origem) com o mesmo ID de dispositivo e o mesmo inode, mas conteúdos diferentes, a maioria dos aplicativos acreditará que são os mesmos. Você terá que encontrar uma maneira de testar a igualdade de arquivos que depende da tecnologia de snapshots, ou então verificar o conteúdo de ambos os lados ou remover sistematicamente o alvo.