I've been experimenting with using a RPi 4 as a backup server, hoping to take advantage of the improved network and USB 3 speeds. The problem is I'm running into a bottleneck with SSH. I can only achieve about 40 MBPS, and top shows that ssh is taking 100% cpu. I used to be able to get around this on older systems with an older version of openssh, by switching to arcfour encryption, however that cipher has been obsoleted and removed.
I could resolve the speed issue by having ssh launch nc, then do the communications of the nc channel, but that is a bit less clean and harder to automate in some cases.
Is there any hardware encryption available on the RPi 4 SOC that ssh can use, that I'm not aware of, that can speed this up, or should I download an older version of ssh so I can use arcfour?
The second issue I have, is my backup software uses an SQLite database to store the backup metadata catalog (list of file names, file ownership/permissions, etc). This ends up being a bunch of small random I/O events on the attached USB drive, and as a result ends up being a major performance bottleneck. If I put the backup catalog DB on the SD card, performance is much improved, however I'd like to keep the DB and the actual backup data all on the external drive (right now I'm backing up the SQLite DB to the external USB drive after each backup run, but that is also an additional step). So the question -- does anyone have a recommendation for a relatively inexpensive USB 3 drive, that has better random I/O than the WD one I'm using? Maybe something that is a hybrid with a built in SSD write back cache? The other option I'm considering is hooking up a small SSD in addition to the HDD, to use with bcache configured in writeback mode.
Ultimately, I'm looking to add a section on using the RPi 4 as a backup server, to the documentation for Snebu, when I get around to putting out a new release. Currently working on bug squashing, documentation / setup improvements, and release packages.