1

I have 10TB~ RAID 5 array and two NVME 500GB on RAID 0
and they in different systems.

what I want is to make a stick of RAM like 16GB or something to act as a cache or buffer to give me faster access time through the network to the second system for connecting I will be using (1 or 2) 10GB ethernet

Raygo
  • 11
  • 2

3 Answers3

2

DRAM is used as cache by default on most operating systems. Research how the caching tiers and file system performance work for your OS of choice. Watch disk performance metrics before and after installing more memory.

Think about where the bottlenecks should be in theory. If the RAID 5 array is on magnetic spindles, maximum sequential is maybe 200 MB/s per drive and probably is the limit. If those are fast solid state, the 10 Gb Ethernet could be the limit. For the latter case, consider 25 Gb links, maybe multiple of them.


Perhaps you have heard the joke, RAID 0 refers to the 0 data left after one drive failure, a complete loss. I am skeptical anyone using RAID 0 is aware of the risk. Destroy one disk as a test, and determine if recovery via backups or rebuild is acceptable.

John Mahowald
  • 32,050
  • 2
  • 19
  • 34
0

Sure, it's called a RAMDisk or RAMDrive. Depending on your OS and budget, you have different ways of making one from some of your RAM.

It's worth reading up on this in depth before implementing it, it's usually not the best idea, but maybe for your use case it would be great! You should definitely confirm that you're bottlenecked at disk IO before going too far down this path.

mfinni
  • 36,144
  • 4
  • 53
  • 86
0

The downside of caches is that they don't survive crashes and power outages, so file systems try very hard to get a clear picture of what has been actually written to disk, and schedule writes so that after a crash it can get back to a consistent state quickly.

What this means in practice is that a file system will submit a journal entry first, wait for the report that it has been successfully written, then submit the data, wait for the report, then submit another journal entry marking the data as valid. Any crash before the last bit is done will lead to a state where the new data doesn't show up.

In most setups, that is the bottleneck for small accesses, not raw throughput, and the only way to get out of that is to make the cache write count as a persistent write, i.e. the cache acknowledges the write, and then takes over responsibility for delivering the data to the disks.

For that to work, the cache needs to be somewhat crash proof, usually this is handled by implementing it in a separate controller, so its state is kept if the main computer crashes.

For reads, caching is safe and is already performed by your OS, so there isn't much to be gained here.

Simon Richter
  • 3,317
  • 19
  • 19