I'm running Manjaro ARM with BTRFS on a Raspberry Pi 4 which running off an SD card, which are known to be a problem when performing too much read/write operations.
For that reason I would like to avoid such an operations, without sacrificing the possibility of having live snapshots, the sole reason I'm running BTRFS, so that I can then backup those snapshots somewhere else.
I've recently found that it is possible to have snapshots when mounting a BTRFS subvolume with the nodatacow mount options [1] [2], which disables COW. I also know that, for technical reasons, this option must be provided system-wide [3].
From my understanding disabling COW means that we will get a behavior of a "normal" filesystem, expect for the metadata [4], meaning that the files content always get overwritten on new writes. However, from my interpretation of [2], if we are to perform a snapshot the current version of each file is saved, while a new place is allocated for the subsequent writes, which will inherent the nodatacow and overwrite on new writes, meaning that I will only have two versions of my system: the current version and the snapshot (which can be easily restored as usual).
Further disadvantages include the disabling of checksum and compression [3].
Is my understanding on the matter at hand correct?
What would be the impact on the size, fragmentation and performance (IO operations) of the filesystem and snapshots when using the nodatacow mount option?