O que faz um “clone” de rmlint para o btrfs?

1

Eu estava lendo o manual rmlint , e um dos manipuladores duplicados é clone e reflink:

· clone: btrfs only. Try to clone both files with the BTRFS_IOC_FILE_EXTENT_SAME ioctl(3p). This will physically delete duplicate extents. Needs at least kernel 4.2.

· reflink: Try to reflink the duplicate file to the original. See also --reflink in man 1 cp. Fails if the filesystem does not support it.

O que exatamente faz esse clone e como ele é diferente de um reflink? O que faz o ioctl BTRFS_IOC_FILE_EXTENT_SAME?

    
por Dan 13.02.2018 / 22:10

1 resposta

2

As diferenças são um pouco sutis.

O Reflink exclui o arquivo duplicado e cria um novo arquivo em seu lugar, que é um clone do arquivo original. Os metadados da duplicata são perdidos, embora o rmlint faça o possível para preservar os metadados através de algum truque com touch -mr .

O clone usa o ioctl BTRFS_IOC_FILE_EXTENT_SAME (ou, na versão mais recente, o ioctl FIDEDUPERANGE), que solicita ao kernel para verificar se os arquivos são idênticos e, em caso afirmativo, fazê-los compartilhar as mesmas extensões de dados. Eles mantêm seus metadados originais. É indiscutivelmente mais seguro que o reflink porque é feito atomicamente pelo kernel e porque verifica se os arquivos ainda são idênticos.

    
por 05.03.2018 / 13:49