This question is a bit of an odd one, I'll try to be as detailed as I can be.
I'm repurposing an old computer to serve as an in home backup solution. The final resting place for the data is an external G-Drive connected via USB 2.0 (I told you it's an old computer.) I would like to figure out how to use some space on the computer's new shiny SSD drive to buffer writes to the external drive. I am using OpenSUSE Leap 15, with a server installation.
So far I have found bcache, which I could set to write-back mode and get something similar to what I'm looking for. The problem is the partition I would be buffering uses btrfs (transparent compression) and there have been issues reported using the two together. The arch wiki says that this was fixed in 3.9 but I don't find that anywhere in the linked source.
There's also lvmcache. The only reference to writeback that I see is a brief blip in the man page, without much further explanation. I'm also already using lvm to divvy up the SSD into various partitions with thin pools, so I would be worried that using lvmcache would require me to either create a new dedicated lvm-vg across the two drives, to prevent the thin pools from spreading to the external. Additionally there are notes in the BTRFS wiki that using BTRFS on top of anything block-level could cause problems.
DM-Cache is another highly configurable option that I am still in the process of learning. As it works on the block level, it is still possible that it may conflict with btrfs.
The final option is setting up a SLOG based ZIL with zfs. This source says that with a 1Gbps connection the largest a SLOG would have to be is .625 GB, because it would flush every 5 seconds. However, based on extensive testing, the highest sustained write speed I can get to this drive is 30MB/s. This would imply that it would take 20 seconds to dump a .625GB slog to the ZFS drive. (Update: Based on This source and this source the SLOG device is not intended to boost throughput, just to reduce latency.) (Update to the Update: In the comments Dan clarified what is meant by this. It is still likely that the ZIL could be utilized in this scenario.)
I know that large writes will inevitably be bottlenecked by the external connection. I figure that anything on the order of tens of GB will end up at 30MB/s. My goal is not to solve that problem. I'll likely use rsync to send data to the external, so I would like to speed up most transfers of less than 10GB.
I'm basically curious as to if anyone else has done something similar to this, and has recommendations, or can point to a specific option as being better than others. Right now I'm considering the ZFS/SLOG option to be the best one, using a 10GB slog drive, but I have no idea how that large of a drive will play with the 5 second flush.
tl;dr: What's the best way (though I know not all of this is exactly recommended) to buffer about 10GB worth of data on an internal drive that will then be transferred to an external drive?