Os snapshots do BtrFS estão matando meu SSD?

1

Como eu sei, os instantâneos do BtrFS na verdade não copiam dados. Suponho que a cópia real seja executada em cada mudança de dados instantâneos.

Então, é correto que a partição do BtrFS em SSD com Instantâneos habilitados duplique o desgaste da memória SSD? Uma gravação para novos dados e segunda gravação para gravação diff para instantâneo.

Eu já uso o BtrFS com Snapshots como sistema de arquivos para / partititon por um tempo considerável e várias vezes isso realmente me ajudou. Mas agora eu vou instalar o sistema no SSD.

    
por Storm 12.02.2018 / 13:26

1 resposta

0

TL; DR

Não, isso não reduzirá a vida útil do seu SSD mais do que usar o BTRFS sem o instantâneo.

Explicação

Existem algumas maneiras diferentes de implementar instantâneos no software:

  1. Você armazena uma cópia exata de todos os dados que estão sendo capturados. Isso não é muito eficiente (tanto em termos de espaço e tempo), mas é a única opção que armazena uma cópia histórica verdadeira dos dados e é bastante trivial de implementar. Por causa dos problemas de eficiência, ele não é amplamente usado para snapshots, mas isso é basicamente o que um backup completo de um volume faz.

  2. Você armazena uma cópia das diferenças entre o estado atual e os estados históricos dos dados. Esse método tem problemas de desempenho ao ler dados porque o sistema precisa calcular o estado dos dados solicitados no horário solicitado. Isso pode ser feito de duas maneiras:

    a. Cada instantâneo armazena as diferenças entre o estado atual dos dados e o estado dos dados quando o instantâneo foi obtido. Isso é eficiente em termos de espaço, mas não é eficiente em termos de tempo (desde que o tempo para escrever uma mudança seja escalado linearmente com o número de instantâneos). O desempenho de leitura é ruim para instantâneos, mas decente para os dados atuais. Este método não é muito usado porque é um pouco complicado de implementar, e o desempenho da gravação é tão ruim que você pode simplesmente armazenar uma cópia completa.

    b. O primeiro instantâneo obtido arquiva o estado dos dados naquele momento e os instantâneos subsequentes armazenam apenas as diferenças desde essa cópia, com o estado atual sendo um caso especial que muda conforme o usuário o atualiza. Isso só é eficiente em termos de espaço se você só estiver modificando dados existentes e não adicionando ou removendo nenhum dado, mas tiver mais eficiência de tempo que o 2a. O desempenho de leitura é ruim para a maioria dos instantâneos e dos dados atuais, mas é bom para o primeiro instantâneo. É assim que os backups incrementais funcionam, e em um arranjo especial em que cada diff é contra a versão anterior é o que o software de controle de versão faz, mas não é muito usado para snapshots porque a próxima opção é melhor em quase todos os aspectos. p>

  3. Os instantâneos são implementados por meio de semântica de copy-on-write (COW). Essa é a opção mais eficiente em termos de espaço e é, em média, mais eficiente em termos de tempo que as duas variantes do método 2. Com as capturas instantâneas COW, qualquer dado de dados é armazenado uma vez e cada captura instantânea que inclui esses dados faz referência a ele. Isso resolve a maioria dos problemas com as opções 1 e 2. Também há duas maneiras de lidar com os instantâneos de COW:

    a. Quando um determinado dado é alterado na versão atual, copie os dados antigos para o instantâneo e, em seguida, atualize os novos dados. Isso faz com que a primeira gravação em um local depois de tirar um instantâneo tenha problemas de desempenho, mas as gravações subseqüentes são boas e o desempenho é razoável. É assim que o LVM implementa os snapshots, porque é muito fácil acessar um conjunto de dados existente que ainda não estava usando a semântica COW.

    b. Quando um determinado dado é alterado na versão atual, crie uma nova cópia desse local na versão atual e armazene os dados alterados nesse local. Isso evita os problemas de desempenho da primeira gravação com a opção 3a, mas incorre em uma penalidade de desempenho ao excluir instantâneos (porque é necessário validar as referências em todos os dados para descobrir se você pode excluí-los ou não). É assim que o ZFS e o BTRFS implementam instantâneos (embora o BTRFS use o método 3a em determinadas circunstâncias muito específicas).

Como o BTRFS usa o método 3b, o único aumento na sobrecarga do uso de snapshots no manuseio de metadados, que deve levar em conta uma porcentagem minúscula dos dados reais gravados pelo BTRFS (e as atualizações de metadados acontecem de qualquer maneira, são apenas marginalmente menor sem instantâneos).

    
por 12.02.2018 / 21:12