Out of curiosity, may I ask why this is desirable over flashcache and friends? If you're on the same server you don't have to worry about multiple readers and writers so coherency problems go away. The device is a 100% replica so you never want to be reading from the slow, seekbound disk. Your working set is, by definition, smaller than (or equal) what your cache's size must be...
Generally, a lack of support or documentation. I can't really find much on flashcache's failure modes and how to fix them, which is probably one of:
- It doesn't break, so no one has written about it breaking.
- No one uses it.
- It breaks, but no one writes anything about it (unlikely).
One of the benefits of inotify or rsnapshot is that they operate at the filesystem level, which i'm comfortable working with. Idera/r1soft/whatever-its-called has purchaseable support if needed, plus there's plenty of documentation otherwise.
Another pivot is the application: 1U VM servers. 2U of rack space costs us twice as much regardless if we're using additional power, so 1U is extremely desirable to us. We're finding that with our current E3-12x0 builds,
all of them are running out of steam on disk i/o with a 4-spindle RAID 10 array way before any other resource (CPU, RAM, etc) gets anywhere near full utilization.
After doing
a lot of pricing, we determined that a RAID 1 (or RAID 0, not sure if want to be that ballsy) SSD array ends up being cheaper at the price of about half the storage amount versus a mechanical drive array. While the SSDs are more expensive on a per-unit basis, I don't need to purchase more of them for better throughput, I don't need to purchase a $700 RAID controller for better throughput, I don't need to purchase a BBU/CV module for the RAID controller, etc. All of our servers are under 50% of their disk array utilized, and we have a storage VPS product with free internal transit for people who need to store a lot of stuff.
There's a sentiment amongst the community to use 2U servers so that you can have more (6, 8, or 12) spindles, but that seems extremely wasteful, both from the fact that I then need to buy more drives, need to buy a SAS expander or a 16-port RAID card, additional power used to spin the drives, and then I have wasted storage space that I can't sell as actual
storage space due to clients generally abusing disk i/o on storage, as I can tune an array and scheduler for random I/O (true VM usage) or contiguous read/write (storage),
not both. Additionally, more spindles conveys that there's now more points of failure, whereas I can just implement two SSDs and a replication drive.
Granted, i'm conveying this concept of SSD-and-replication-drive as backup; I'm really not thinking of it that way. "Backup" insinuates being not in the same chassis for one. I'm thinking more of it as "due diligence", in that if the SSD array fails, we have a "hot spare" that we can copy all of our stuff from and get up and running in the time it takes to copy. With the durability of modern SSDs, this may even be completely irrelevant, but having this safety net, even if the safety net is made out of thin paper, makes me feel better about what we're offering.
I appreciate your input; i'm always interested in the thoughts and opinions of others. Don't hesitate to respond if you have anything further