Instantâneos de btrfs

1

No meu sistema debian, estou usando o hdds formatado com o btrfs para fazer backups. Os grandes volumes de dados são minhas coleções de músicas e fotos, por isso tendem a ser relativamente estáveis e só crescem.

Montei o volume btrfs em / media / backup, depois tenho um backup de subdiretório e dentro dele tenho diretórios para os vários conjuntos de backup que estou fazendo. Depois de fazer o backup noturno, faço um instantâneo.

DATE = $ (date + "% Y% m% d_% H% M")    btrfs instantâneo de subvolume / media / backup / media / backup / $ DATE

Para o primeiro dia, isso funcionou como o esperado, mas no dia seguinte, o instantâneo também continha o primeiro instantâneo de dias, o dia depois que o instantâneo continha os dois primeiros instantâneos e assim por diante.

Se eu entendi corretamente o que acontece quando eu faço um snapshot btrfs, isso não tem implicações práticas, o uso de espaço em disco é absolutamente marginal, mas como parece um pouco confuso, eu gostaria de evitá-lo. Minha primeira idéia foi fazer um snapshot de / media / backup / backup para evitar isso, mas como tentei fazer um snapshot de um diretório em vez de um volume, isso obviamente não funcionou.

Existe alguma maneira de fazer um snapshot do mesmo volume e evitar que o snapshot mais recente aponte para todos os mais antigos?

    
por MortenSickel 07.02.2018 / 20:26

1 resposta

2
Primeiro, se você olhar para o snapshot mais recente, você notará que os diretórios do snapshot anterior não contêm nenhum dado real dentro do novo snapshot, então não é apenas um uso marginal do disco, é zero extra. / p>

Agora, para evitá-los, a única maneira de fazer isso é armazenar seus instantâneos em algum lugar que não esteja coberto pelo processo de instantâneo. Para isso, você basicamente tem duas opções:

  1. Crie um subvolume dedicado para seus instantâneos dentro do subvolume que você está tirando fotos. Os snapshots param nos limites do subvolume (que é a razão pela qual eles não armazenam cópias de snapshots existentes), assim você não terá nenhum deles em seus snapshots, apenas um diretório vazio para o subvolume de snapshots. Esta é provavelmente a opção mais fácil de adotar agora, já que requer apenas criar o subvolume com btrfs subvolume create e apontar o script de criação de instantâneo para o local para armazenar os instantâneos. Por que vale a pena, .snapshots parece ser um nome padrão de fato para essa abordagem. Depois de alguns dias de uso, sua árvore de diretórios ficaria mais ou menos assim:

    /media/backups
    /media/backups/.snapshots
    /media/backups/.snapshots/20180207_1342
    /media/backups/.snapshots/20180209_0415
    /media/backups/.snapshots/20180312_1754
    

    Todos os seus dados que não são de instantâneo estão em /media/backups e todos os seus instantâneos individuais são armazenados em /media/backups/.snapshots . Cada snapshot terá um diretório .snapshots vazio.

  2. Em vez de usar o subvolume raiz do volume BTRFS, coloque todos os seus dados reais em seu próprio subvolume e instale o instantâneo ao colocar os instantâneos fora dele. Essa abordagem não é tão fácil de converter e provavelmente exigirá que você atualize mais do que apenas o comando de instantâneo, mas também facilita a reversão de um instantâneo inteiro de uma só vez. Depois de alguns instantâneos usando esse método, sua árvore de diretórios seria algo como isto:

    /media/backups/current
    /media/backups/20180207_1342
    /media/backups/20180209_0415
    /media/backups/20180312_1754
    

    Todos os seus dados são armazenados em /media/backups/current (que precisa ser um subvolume BTRFS exatamente como .snapshots faz com o primeiro método), e seus instantâneos ficam ao lado dele em /media/backups . Você pode restaurar facilmente um instantâneo inteiro simplesmente excluindo o subvolume current e criando um instantâneo gravável chamado current do instantâneo que deseja restaurar.

Agora, há duas outras observações que gostaria de fazer sobre o que você disse que não fazem parte diretamente da sua pergunta:

  1. O comando que você listou criará instantâneos graváveis. Isso quase certamente não é o que você deseja se a sua finalidade aqui for manter cópias de arquivamento de sua coleção, portanto sugiro adicionar -r às opções para tornar os instantâneos somente leitura. Se você precisar modificar um (por exemplo, se precisar remover completamente um arquivo da coleção), ainda poderá usar o comando btrfs property set para alternar o sinalizador somente leitura no instantâneo.
  2. Embora não seja tecnicamente um problema significativo, o formato de data e hora não é convencional e, como tal, pode causar problemas se tentar lidar com esses instantâneos com outra ferramenta ou se confundir outras pessoas, se precisar compartilhar esses dados. Tendo isso em mente, sugiro usar '% FT% T', que lhe dará um timestamp ISO 8601 que deve ser analisado por todos os softwares e imediatamente reconhecível para a maioria das pessoas, enquanto ainda fornece uma classificação lexical sensata dos instantâneos. >
por 07.02.2018 / 21:22

Tags