Eu li que o ZFS e o Btrfs usam somas de verificação para evitardegradação de dadose li que o Git tem integridade por meio do hash de essencialmente tudo em cada commit.
Eu usaria um servidor Git em um NAS Linux com Btrfs RAID 1 para armazenamento, mas se o Git tiver integridade, acho que isso não seria necessário (pelo menos não se tudo o que eu quiser é evitar a degradação dos dados).
Pergunta: Então, a integridade do Git, apesar de fazer hash de essencialmente tudo com cada commit, evita ou ajuda contra a podridão de bits?
Responder1
O hash do Git só acontece no momento da criação dos commits, e a partir daí os hashes são usados para identificar os commits. Isso não garante de forma alguma a integridade dos arquivos. Os repositórios Git podem ser corrompidos e perder dados. Na verdade, o git possui um comando integrado para detectar esse tipo de perda,git fsck, mas como diz a documentação, você é responsável por restaurar quaisquer dados corrompidos dos backups.
Responder2
Depende do que você entende por "prevenir".
(Em primeiro lugar, bit-rot é um termo com múltiplas definições. Esta questão énãosobrecódigo tornando-se inexequível devido à falta de manutenção.)
Se você quer dizer com "prevenir" que provavelmente detectará corrupção por decomposição de bits, sim, isso funcionará. No entanto, seránãoajude a consertar essa corrupção: os hashes fornecem apenas errosdetecção, não correção.
Isto é geralmente o que se entende por "integridade": a possibilidade dedetectarmanipulação não autorizada/involuntária de dados, e não a possibilidade de preveni-la ou corrigi-la.
Geralmente, você ainda desejaria um RAID1 junto com backups (possivelmente implementado com instantâneos ZFS ou similares, não estou familiarizado com a semântica ZFS em instantâneos RAID1 +), por vários motivos:
se um disco falhar fatalmente, você precisará de um RAID1 (ou de um backup recente) para restaurar seus dados; nenhuma correção de erros pode corrigir a falha de um disco inteiro, a menos que tenha uma cópia completa dos dados (RAID1). Para um curto período de inatividade, você essencialmente deve ter o RAID1.
se você excluir acidentalmente parte ou todo o repositório, precisará de um backup (o RAID1 não protege você, pois reflete imediatamente a alteração em todos os dispositivos)
RAID1 em nível de bloco (por exemplo, via LVM ou similar) com apenas dois discos em sinãoprotege você contra a deterioração silenciosa dos dados: o controlador RAID não pode saber qual dos dois discos contém os dados corretos. Você precisa de informações adicionais para isso, como uma soma de verificação dos arquivos. É aqui que entram as somas de verificação ZSF e btrfs: elas podem ser usadas (o que não quer dizer que elassãousado nesses casos, não sei como o ZFS ou o Btrfs lidam com as coisas lá) para distinguir qual dos dois discos contém os dados corretos.
Responder3
prevenir a podridão dos bits
Não, não, de forma alguma. Não há redundância semelhante ao RAID introduzida pelo git. Se os arquivos em seu .git
diretório sofrerem apodrecimento, você perderá coisas como de costume.
ajuda contra a podridão dos bits?
Aaa... não. Não ajuda contra a ocorrência de podridão de bits, mas ajudará a detectar a podridão de bits. Mas em nenhum momento durante o uso normal ele faz isso por conta própria (bem, obviamente acontece quando você verifica alguns objetos e assim por diante, mas não para o seu histórico). Você teria que criar tarefas cron para recalcular os hashes do conteúdo e compará-los com os hashes reais. É bastante trivial fazer isso, já que git
os hashes são literalmente simplesmente os hashes de conteúdo, é trivial recalculá-los e git fsck
fazer isso para você. Mas quando detecta a podridão dos bits, não há nada em particular que possa fazer contra isso. Especificamente, como pedaços maiores são compactados automaticamente, você provavelmente sofrerá perda total de pedaços se um bit em um objeto maior for invertido.