Limite prático do número de instantâneos btrfs?


23

Estou pensando em usar btrfs na minha unidade de dados para poder usar o snapper , ou algo parecido com o snapper, para tirar instantâneos baseados em tempo. Eu acredito que isso me permitirá navegar em versões antigas dos meus dados. Isso seria um acréscimo ao meu backup externo atual, pois uma falha na unidade acabaria com os dados e os instantâneos.

Pelo meu entendimento, os snapshots do btrfs não ocupam muito espaço (metadados e os blocos que foram alterados, mais talvez algumas despesas gerais), portanto o espaço não parece ser uma restrição.

Se eu tiver um milhão de instantâneos (por exemplo, um instantâneo a cada minuto por dois anos), isso causaria estragos, supondo que eu tenha espaço em disco suficiente para os dados, os dados alterados e os metadados?

Se houver um limite prático para o número de capturas instantâneas, isso depende do número de arquivos e / ou tamanho dos arquivos?

Respostas:


16

Como alguém que está usando um btrfssistema de arquivos Arch Linuxhá quase 2anos, posso dizer com segurança que não parece haver um limite prático no número de instantâneos que podem ser facilmente alcançados. Existem algumas ressalvas. btrfssistema de arquivos pode levar à fragmentação. Portanto, é aconselhável usar o recurso de desfragmentação on-line incorporado aobtrfs . Além disso, pode-se fazer bom uso do btrfsrecurso de compactação. Essas medidas devem cuidar da maioria dos problemas de desempenho que possam surgir sensatamente em um computador razoavelmente decente, criando muitos instantâneos.

Como você deve saber, btrfstrata os subvolumes como sistemas de arquivos e, portanto, o número de instantâneos é realmente limitado: ou seja, pelo tamanho dos arquivos. De acordo com o btrfswiki, o tamanho máximo de arquivo que pode ser alcançado é 2^64 byte == 16 EiB[1] .

Além dessas limitações, sempre há problemas quando você fica sem espaço, sem o reconhecer imediatamente, porque a verificação de espaço livre nos btrfssistemas de arquivos às vezes pode ser complicada, ou seja, sem conseguir diferenciar os diferentes métodos de medir o espaço livre em um btrfssistema de arquivos. use com facilidade o controle da quantidade de espaço que realmente resta. Uma maneira possível de evitar esse cenário é o uso de cota. Isso garante que os usuários (ou o usuário, se for apenas um) possam usar apenas uma certa quantidade de espaço. Este conceito é discutido com muita habilidade aqui e também aqui .

Por último, mas não menos importante, um aviso: não sou especialista em btrfssistemas de arquivos e só li sobre essas coisas quando tive a mesma pergunta há algum tempo. Além disso, sempre há o problema de btrfsum "alvo em movimento rápido" (palavras bonitas sendo roubadas de uma Arch Linuxpágina da wiki, eu acho.) Para que as coisas possam mudar.


1
Sou um dos adotantes anteriores também, e isso é estrondo.
mikeserv

Yep praticamente bang :)
Mark K Cowan

1
Você deve tentar ficar abaixo de 100 instantâneos em um volume BTRFS. Caso contrário, você poderá encontrar problemas de desempenho, especialmente na exclusão de instantâneos. Criar instantâneos é de baixo custo, mas excluí-los não é. Além disso, observe que a recomendação para executar a desfragmentação junto com o uso de instantâneos eliminará a eficiência de espaço dos instantâneos. A desfragmentação quebra os refluxos e multiplica o espaço usado.
MountainX para Monica Cellio

@ MountainX, você pode elaborar isso em uma resposta. 100 instantâneos em um volume não são nem um por semana, durante dois anos.
StrongBad

@StrongBad - recebi essas informações da lista de discussão BTRFS em resposta a um problema. Todos concordaram que é uma má idéia ter centenas ou milhares de instantâneos. Para uma resposta mais técnica, você teria que perguntar na lista de correspondência do BTRFS.
MountainX para Monica Cellio

5

Embora tecnicamente não haja limite para o número de instantâneos, perguntei na lista de discussão BTRFS :

A resposta (prática) depende até certo ponto de como você usa o btrfs.

O Btrfs tem problemas de dimensionamento devido a muitos snapshots (ou, na verdade, os snapshots de reflinks usam, a desduplicação usando reflinks pode acionar os mesmos problemas de dimensionamento) e o dígito duplo a baixo dígito de snapshots por subvolume de snapshot continua sendo a forte recomendação por esse motivo.

Mas os problemas de dimensionamento afetam principalmente os próprios comandos de manutenção do btrfs, balancear, verificar, excluir subvolume. Enquanto milhões de snapshots tornarão o equilíbrio, por exemplo, efetivamente impraticável (isso meio que funcionará, mas poderá levar meses), operações normais do sistema de arquivos, como ler e salvar arquivos, não tendem a ser afetadas, exceto na medida em que a fragmentação se tornar um problema ( os sistemas de arquivos cow, como o btrfs, são notados por fragmentação, a menos que etapas como desfragmentação sejam tomadas para reduzi-lo).

Parece que usar snapshots como um backup de arquivo semelhante ao time machine / snapper não é uma boa ideia.


O Time Machine não é um backup de arquivo, é um backup. Não compartilho sua conclusão. Usar snapshots btrfs pode ser uma boa idéia para backups como o Time Machine (porque o kernel do Linux não pode vincular um diretório, fazendo com que recrie toda a estrutura de diretórios para cada snap, o que pode causar um uso considerável do espaço em disco). Para um backup em um único dispositivo de backup, sem desejar adicionar dispositivos adicionais, não há nem um objetivo em executar um comando de saldo. A resposta da lista btrfs também tenta explicar isso.
Pro Backup

@ProBackup, a resposta da lista btrfs diz que mantenha o número de snapshots em dígitos únicos a baixos, o que o padrão do arco para o snapper realmente não funciona. Embora o btrfs-balance não seja necessário para uma configuração simples, muitos usuários gostam da idéia do btrfs-check, mesmo que nunca precisem, e a exclusão do subvolume parece crítica se você deseja girar subvolumes da maneira que o snapper faz.
StrongBad

O backup de arquivamento do @ProBackup provavelmente não é o termo certo para o Time Machine. Parece que o time machine é mais do que apenas um backup incremental, mas eu não estava confortável em chamá-lo de backup baseado em instantâneo, como snapper ou rsnapshot, mas talvez isso fosse melhor. É um prazer editar o termo, pois parece que você sabe muito sobre o campo.
StrongBad 07/02

Pelo que li na página inicial do snapper, o snapper não é uma ferramenta de backup. Apesar do snapper poder voltar no tempo, não significa que seja como o Time Machine. A diferença essencial é que o Time Machine armazena cópias de todos os dados em uma mídia separada, onde o snapper pode nem mesmo criar uma cópia.
Pro Backup

@ ProBackup finalmente, escreva uma resposta e explique por que minhas conclusões sobre a resposta na lista de discussão estão erradas. Dessa forma, podemos ver como a comunidade se sente.
StrongBad 07/02

3

Você pode ter um total combinado de 2 64 capturas instantâneas e subvolumes.

A btrfspágina wiki de design diz (mina empahsis):

Subvolumes são basicamente uma btree nomeada que contém arquivos e diretórios. Eles têm inodes dentro da árvore das raízes das árvores e podem ter proprietários e grupos não-raiz. Os subvolumes podem receber uma cota de blocos e, uma vez atingida essa cota, não são permitidas novas gravações. Todos os blocos e extensões de arquivo dentro dos subvolumes são contados como referência para permitir a captura instantânea. Até 2 64 subvolumes podem ser criados no FS.

Os instantâneos são idênticos aos subvolumes , mas seu bloco raiz é compartilhado inicialmente com outro subvolume. Quando a captura instantânea é obtida, a contagem de referência no bloco raiz é aumentada e a cópia no sistema de transações de gravação garante que as alterações feitas no instantâneo ou no subvolume de origem sejam privadas para essa raiz. Os instantâneos são graváveis ​​e podem ser instantâneos novamente várias vezes. Se desejar apenas snapshots de leitura, sua cota de blocos será definida como uma no momento da criação.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.