Ever since my early days using virtualization (KVM and Xen), I have always used LVM to provide virtual disks and it was with great joy (and ultimately caused me to purchase unRAID) to see the LVM module included into the unRAID Linux kernel.
After various tests and wanting to increase performance, I started experimenting with SSD caching and so tested LVM caching as well as bcache by recompiling the kernel.
LVM caching works well and although I have never benchmarked my different configurations, here are the reasons I went against it.
[*]It was difficult to find and install the required tools (thin provisioning tools).
[*]The 'better' "smq" cache policy is either not available in the current kernel or has been dropped (not entirely sure which) so as such, only the older "mq" policy is available which does cause a few warnings when creating cached logical volumes.
[*]Possibly due to "smq" being unavailable, I felt there was no visible performance gained.
[*]Snapshotting a cached logical volume cannot be done unless the cache is removed resulting in a fresh empty cache each time you back up the logical volume onto your unRAID array (which I like to do a lot!).
Onto bcache...
There are quite a few ways to implement this cache to work with LVM:
[*]Create a LVM volume group with the SSD and HDD(s) - create a logical volume on the SSD as well as a volume on the HDD then make-bcache to create a caching and a backing device for the virtual disk then attach the cache.
[*]Create a LVM volume group using only the HDD(s) and use the SSD as an exclusive caching device - create a logical volume on the HDD and use make-cache to turn it into a backing device, then attach it to the cache.
[*]Use the SSD as a bcache cache device and the HDD(s) as a backing device - then use /dev/bcache[#num] devices to create a LVM volume group.
Within that list, 1 and 2 can cause confusion when snapshotting in LVM as well as /dev/bcache[#num] not being consistent after reboots (use UID).
My personal preference is 3 - with LVM on top of bcache, my virtual machines (2 gaming vm's with dedicated GPU passthrough - thank you LimeTech for making that easy and Linus Tech Tips for the vid that got me here in the first place) feel a helluva lot quicker the more we use them (further performance can be gained by adjusting the cache to writeback but writethrough is default to prevent data loss should the cache device fail).
Snapshotting logical volumes to create backup images on the unRAID array is a lot easier as the virtual disk partitions do not need a bcache header (useful in case of emergency).
My own virtual machine desktop is primarily Ubuntu but I do have a Windows 10 config I boot into when I play some Windows exclusive games on Steam. My daughter uses Windows 10 on her virtual machine and we both enjoy the performance boost bcache provides in my setup.
I encourage others to test this out as I would really like to see bcache included into the unRAID kernel.