Algum sistema de arquivos implementa Copy on Write Mechanism para CP

9

Vimos o sistema operacional fazendo a otimização de cópia ao gravar quando um processo é bifurcado. Razão é que na maioria das vezes bifurcação é procedida por exec, portanto, não queremos incorrer no custo de alocações de página e copiar os dados do espaço de endereços do chamador desnecessariamente.

Isso também acontece quando se faz CP em um Linux com sistemas de arquivos ext4 ou xfs (journaling). Se isso não acontece, por que não?

    
por Mridul Verma 20.09.2017 / 03:56

3 respostas

4

A palavra-chave a pesquisar é reflink . Foi implementado recentemente no XFS.

    
por 24.09.2017 / 13:23
8

De cp página do manual :

When --reflink[=always] is specified, perform a lightweight copy, where the data blocks are copied only when modified. If this is not possible the copy fails, or if --reflink=auto is specified, fall back to a standard copy.

Isso funciona em sistemas de arquivos que suportam Copy-on-Write ( reflink ), principalmente BTRFS no momento. A implementação do XFS reflink está em desenvolvimento [1] [2] .

    
por 24.09.2017 / 15:46
2

A menos que você introduza um syscall para cp (ou pelo menos para copiar um bloco), o sistema operacional tem dificuldade em descobrir que os dados que o programa cp vai escrever é o mesmo que o leia de outro bloco. Além disso, você teria uma sobrecarga adicional para gerenciar o cenário "vários arquivos compartilham os mesmos blocos". Arquivos grandes semelhantes que diferem apenas em alguns blocos acontecem raramente. Portanto, é mais barato, no geral, apenas copiar esses blocos e adicionar essa sobrecarga administrativa a todos os arquivos .

Agora, se você "copiar" arquivos (muitos deles) adicionando outro clone / instantâneo do sistema de arquivos em, digamos, BTRFS, a situação é diferente: Agora você "copiou" todos arquivos no sistema de arquivos, e quaisquer alterações a eles serão cópias-escritas. Isso existe, mas não no ext4.

"Journalling" é um conceito completamente independente disso, são as estruturas administrativas dos arquivos que contam.

    
por 24.09.2017 / 13:07