Como eu sei, os snapshots do BtrFS na verdade não copiam dados. Suponho que a cópia real seja executada em cada alteração de dados instantâneos.
Então, é correto que a partição BtrFS no SSD com Snapshots ativados duplique o desgaste da memória SSD? Uma gravação para novos dados e a segunda gravação para gravação de diferença para instantâneo.
Eu já utilizo o BtrFS com Snapshots como sistema de arquivos para /
partição por um tempo considerável e várias vezes me ajudou muito. Mas agora vou instalar o sistema no SSD.
TL;DR
Não, isso não reduzirá a vida útil do seu SSD mais do que o uso do BTRFS sem instantâneos.
Explicação
Existem algumas maneiras diferentes de implementar instantâneos no software:
Você armazena uma cópia exata de todos os dados sendo capturados. Isso não é muito eficiente (tanto em termos de espaço quanto de tempo), mas é a única opção que armazena uma cópia histórica verdadeira dos dados e é bastante trivial de implementar. Devido aos problemas de eficiência, não é amplamente usado para instantâneos, mas é basicamente isso que um backup completo de um volume faz.
Você armazena uma cópia das diferenças entre o estado atual e os estados históricos dos dados. Esse método apresenta problemas de desempenho ao ler dados porque o sistema precisa calcular o estado dos dados solicitados no momento solicitado. Isso pode ser feito em camadas de duas maneiras:
uma. 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 de tempo (uma vez que o tempo para gravar uma alteração é dimensionado linearmente com o número de instantâneos). O desempenho de leitura é ruim para instantâneos, mas decente para os dados atuais. Esse método não é amplamente usado porque é um tanto complicado de implementar, e o desempenho de gravação é tão ruim que você pode apenas 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 aquela cópia, sendo o estado atual um caso especial que muda conforme o usuário o atualiza. Isso só é eficiente em termos de espaço se você estiver apenas modificando os dados existentes e não adicionando ou removendo nenhum dado, mas é mais eficiente em termos de tempo do que 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 diferença é em relação à versão anterior, é o que o software de controle de versão faz, mas não é muito usado para instantâneos porque a próxima opção é melhor em quase todos os aspectos.
Os instantâneos são implementados por meio da semântica copy-on-write (COW). Essa é a opção com maior eficiência de espaço e, em média, é mais eficiente em termos de tempo do que ambas as variantes do método 2. Com instantâneos COW, qualquer dado é armazenado uma vez e cada instantâneo que inclui esses dados faz referência a ele. Isso resolve a maioria dos problemas com as opções 1 e 2. Também existem duas maneiras de lidar com instantâneos COW:
uma. Quando uma determinada parte dos dados for alterada 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 subsequentes sejam boas e o desempenho seja razoável. É assim que o LVM implementa instantâneos, porque é muito fácil acessar um conjunto de dados existente que ainda não estava usando a semântica COW.
b. Quando um dado dado for alterado na versão atual, crie uma nova cópia desse local na versão atual e armazene os dados alterados lá. Isso evita problemas de desempenho de primeira gravação com a opção 3a, mas incorre em uma penalidade de desempenho ao excluir instantâneos (porque você precisa validar as referências em cada bit de dados para descobrir se pode excluí-lo ou não). É assim que o ZFS e o BTRFS implementam instantâneos (embora o BTRFS use o método 3a em certas circunstâncias muito específicas).
Como o BTRFS usa o método 3b, o único aumento na sobrecarga do uso de instantâneos no manuseio de metadados, que deve representar uma porcentagem minúscula dos dados reais gravados pelo BTRFS (e as atualizações de metadados acontecem de qualquer maneira, elas são apenas marginalmente menores sem instantâneos).