Muitos sistemas de arquivos comumente usados, como FAT, NTFS, ext2 / 3/4, não garantem a integridade dos dados do arquivo (por exemplo, com somas de verificação) ... isso juntamente com a ameaça real de bit-rot pode levar à situação em que você se encontra ... Os dados são retornados do disco rígido sem erros, mas não estão corretos .
Existe uma página wiki útil comparando os recursos do sistema de arquivos aqui - para o seu caso de uso, estamos interessados no " Verificação de dados "coluna da tabela" Recursos de arquivo ", aqui .
No momento da escrita, a lista de sistemas de arquivos que verificam os dados (e que você pode ter acesso) é: ZFS, Brtfs, ReFS.
O uso de um sistema de arquivos mais moderno como esse permite uma melhor resiliência contra a podridão de bits. Eu não posso comentar sobre os outros, mas eu uso o ZFS extensivamente, então é aí que o resto da minha resposta irá focar (especificamente na garantia de dados, ignorando muitos outros recursos úteis).
Disco Único / Listra
O uso do ZFS com um pool single disk
ou striped
(muitos discos sem disco de paridade dedicado) fornece a tranquilidade de que, se os dados forem retornados, estão corretos. Se os dados não puderem ser lidos corretamente, você verá um erro . Isto é conseguido através do armazenamento de uma soma de verificação dos dados, bem como dos dados em si.
Observe que, mesmo com esse pool, a propriedade copies
do ZFS pode ajudar simplesmente a garantir a integridade dos dados - no entanto, ela fornece um benefício não em relação à falha do dispositivo. usar.
copies=1 | 2 | 3 Controls the number of copies of data stored for this dataset. These copies are in addition to any redundancy provided by the pool, for example, mirroring or RAID-Z. The copies are stored on different disks, if possible. The space used by multiple copies is charged to the associated file and dataset, changing the used property and counting against quotas and reservations.
Espelho ou RAIDZ
O uso do ZFS com mirror
ou raidz1
ou raidz2
pool (1 ou 2 discos de paridade) aprimora a capacidade acima de detectar erros e permite que o sistema de arquivos tente automaticamente cure os dados danificados. Se uma leitura falhar (devido à soma de verificação incompatível), uma solicitação de leitura será enviada para um dos discos espelhados ou de paridade. No caso improvável de que todas as fontes tenham checksums incorretos, você verá um erro, como acima. Mas, no caso típico, o espelho ou disco de paridade será lido com sucesso, os dados corretos serão retornados para você e os dados danificados serão gravados novamente.
Infelizmente, não tenho conhecimento de um produto NAS de consumidor que ofereça suporte a ZFS ou Btrfs, mas se você estiver executando isso em um PC, então distribuições como FreeNAS (usa o ZFS) pode ser muito interessante para você.
Você pode, naturalmente, calcular uma soma de verificação para todos os arquivos, como você mencionou, mas isso causa problemas ao tentar manter e verificar as somas de verificação.