Excluindo um subvolume btrfs sem perder os dados dentro

0

Eu tenho um sistema de arquivos btrfs no meu servidor de mídia. Foi a primeira vez que configurei um sistema com o btrfs e achei que seria uma boa ideia separar diferentes tipos de mídia em subvolumes diferentes, para que eu pudesse criar instantâneos para eles separadamente. Existem dois sub volumes:

/downloads
/movies'

Um programa que estou executando (sonarr a excact) faz download de filmes automaticamente e tenta criar uma cópia impressa entre /downloads/movie e /media/movie depois de concluído. Acontece que hard links entre subvolumes btrfs não são possíveis, então sonarr volta a copiar. Isso cria desnecessariamente duas cópias de um arquivo que ocupa o espaço em disco.

Eu tentei resolver isso usando a desduplicação fora de banda, pois a deduplicação na banda ainda não é suportada, tanto quanto sei. Usando duperemove , recebo cerca de 2 GB / hora de dados liberados, mas é muito lento para mim.

Eu decidi que seria uma boa ideia descarregar a configuração de subvolume que eu tinha antes e usar um único volume btrfs para tudo. Olhando para a página man de btrfs subvolume , parece que todos os dados em subvolume são perdidos quando são deletados. Existe uma maneira de "transferir" a propriedade de dados de um subvolume para o volume pai antes de excluir o subvolume para que eu possa manter os dados?

    
por PoVa 22.05.2018 / 08:59

1 resposta

1

Eu ainda não sei muito sobre o btrfs. Apenas comecei a aprender há algumas horas! Mas acho que posso responder sua pergunta.

Eu não sei sonarr, mas talvez você possa dizer para criar um reflink ao copiar. O comando de cópia seria algo como isto:

$ cp --reflink=always /downloads/file-to-copy /movies/

Isto irá criar uma cópia no outro subvolume, mas devido ao mecanismo "copy on write" do btrfs, ele não usa mais espaço até que um dos arquivos seja modificado. Se você não modificar os arquivos (renomear está bem), isso seria exatamente como a solução de hardlink.

Para se livrar dos subvolumes mas manter os arquivos, você deve ser capaz de simplesmente mover ( mv ) os arquivos para outro diretório dentro do subvolume pai, excluir o subvolume e renomear o novo diretório assim como o subvolume foi nomeado .

Como alternativa, você pode usar o método reflink acima para clonar os arquivos em um novo diretório no subvolume pai, renomear o subvolume, renomear o novo diretório como o subvolume foi nomeado e testar se tudo funcionar, depois excluir o subvolume.

    
por x3ro 13.09.2018 / 21:53