Como obter NTFS como o comportamento de snapshots no BTRFS?

0

Eu gostaria de usar o BTRFS para hospedar VMs no VirtualBox para poder usar snapshots sem LVM ou algo semelhante. Em teoria eu não preciso de CoW de comportamento o tempo todo por causa de razões de desempenho e usando nodatacow parece que não preciso. O que eu gostaria de ter em vez disso é uma abordagem do meu entendimento Windows e NTFS parece estar usando: Os dados são alterados o tempo todo sem CoW , mas se alguém cria um instantâneo do sistema de arquivos os dados atuais são mantidos salvar dentro desse instantâneo por copiando os dados para fora, caso sejam alterados de alguma forma. O importante é que isso só acontece exatamente uma vez por snapshot e realmente apenas para os blocos modificados. Então, depois que um bloco a ser modificado foi copiado inicialmente, todas as modificações subsequentes no mesmo bloco são aplicadas, novamente, sem o comportamento CoW .

Além de copiar o bloco original de dados alterados para algum local seguro, do ponto de vista de desempenho, isso faz muito sentido para mim e gostaria de ter exatamente esse comportamento para hospedar minhas VMs. Aqueles escrevem alguns dados o tempo todo e eu simplesmente não vejo como eu preciso de CoW de comportamento para todas essas mudanças.

Eu quero apenas CoW depois que criei um instantâneo do sistema de arquivos por finalidade, por exemplo para fins de backup. Depois, eu preciso de CoW para manter meus instantâneos consistentes enquanto eu precisar deles. Mas, novamente, mesmo após a criação dos snapshots eu não precisaria de CoW para toda a eternidade para todos os dados, mas apenas uma vez para os blocos alterados posteriormente. Todas as alterações após a primeira podem ser aplicadas sem qualquer CoW .

Do meu entendimento dos documentos BTRFS, se CoW acontecer uma vez em algum arquivo, isso continuará acontecendo para sempre. Mas eu posso estar errado, claro ...

Então, o que eu gostaria de ter é possível com o BTRFS?

    
por Thorsten Schöning 15.03.2017 / 12:22

1 resposta

1

If CoW happens once to some file, it keeps happening forever. But I might be wrong of course.

Eu acho que você está errado. Eu encontrei essa pergunta sobre tirar instantâneos de um volume BTRFS montado com nodatacow . Há uma citação lá (da lista de discussão do BTRFS ) que parece crucial para o seu caso:

On a NOCOW file the first write to a fileblock (4096 bytes) after a snapshot must still be COW, because the snapshot locks the old version in place, and now the fileblock has changed, so it MUST be written elsewhere despite the NOCOW in ordered to keep the snapshot as it was. However, the file does retain the NOCOW attribute and additional writes to the same fileblock will be in-place... until the next snapshot of course.

Parece que a opção nodatacow mount oferece exatamente o que você deseja. Basta lembrar que existem limitações:

nodatacow
Do not copy-on-write data for newly created files, existing files are unaffected. This also turns off checksumming! […] potentially getting partially updated files on system failures. […] switches off compression!

Fonte: Opções de montagem do BTRFS .

    
por 22.03.2017 / 21:47