Hi Guillermo,

I agree. BackupPC's RefCnt/Fsck is a must IMHO.

A main difference between PoolNightlyDigestCheck and btrfs' builtin 
checksumming is that the nightly digest checks proactively scan the data and 
will tell you about broken files as soon as they break (well, as soon as the 
next check is done after the broke). Btrfs will only complain on retrieval; 
perhaps soon, perhaps never. So you need a way to make sure that your archived 
data is actually read every now and then, and compared to the checksums for 
consistency.

For btrfs, this is done by the "scrub" operation. Which is recommended to be 
done regularly.
In my experience, it's slightly lower on the CPU load than BackupPC's check, 
but the actual load should be on I/O to the disk, not the CPU. Default CRC32 is 
somewhat weaker than the MD5s used by BackupPC, but this is a concern for only 
pool collisions, not for data rot. Newer btrfs' features include, e.g., xxhash 
checksums, which are not only faster but also more collision resistant than MD5.

I personally use btrfs scrub exclusively (which also check's my non-BackupPC 
files on that disk) and disabled NightlyDigestCheck. However, there is one 
significant drawback that might or might not be an issue for you: btrfs scrub 
is all-or-nothing; it always scans the entire partition and, to be frank, the 
"idle priority scheduler" does not play nicely on every system. In contrast, 
BackupPC's nightly checks are more clever in that you can scan parts of your 
pool every night, to distribute the load on your system.

So, IMHO, the best approach is to have a separate partition/device exclusively 
for your pool, use NightlyDigestCheck there, and *disable* (or not enable) 
regular btrfs scrub. (You can keep checksumming active nevertheless, it's 
extremely low overhead.)
A scrub does oh-so-slightly more, as it also checks metadata checksums and can 
repair corrupted blocks if good copies are available - but problems will also 
be detected by a BackupPC nightly scan, and corrective action can be taken.


For any of those, make sure you receive notifications by mail, monitoring, or 
LEDs above your pillow in case there are errors. Spending a lot of time on 
checksumming, reading SMART data, health checks etc. isn't going to help unless 
you know about the results.


For ZFS, no clue.


Best,
Alex


On 5/4/21 6:38 PM, Guillermo Rozas wrote:
>     One ensures against file system bit rot, the other ensures backup file
>     consistency.
> 
> 
> I would say $Conf{PoolNightlyDigestCheckPercent} = 1 is also a check for bit 
> rot, as the only thing it does is to read the file, re-calculate the md5 
> checksum, and compares it with its name (which is the md5 calculated at the 
> time of writing). It actually says it in the help, "This is check if there 
> has been any server file system corruption."
> 
> What controls the consistency of the backup are 
> $Conf{PoolSizeNightlyUpdatePeriod} and specially $Conf{RefCntFsck}.
> 
> Regards,
> Guillermo
> 
> 
> _______________________________________________
> BackupPC-users mailing list
> BackupPC-users@lists.sourceforge.net
> List:    https://lists.sourceforge.net/lists/listinfo/backuppc-users
> Wiki:    https://github.com/backuppc/backuppc/wiki
> Project: https://backuppc.github.io/backuppc/
> 

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

_______________________________________________
BackupPC-users mailing list
BackupPC-users@lists.sourceforge.net
List:    https://lists.sourceforge.net/lists/listinfo/backuppc-users
Wiki:    https://github.com/backuppc/backuppc/wiki
Project: https://backuppc.github.io/backuppc/

Reply via email to