Looking for Windows RAM Disk which mirrors writes to hard disk
I'm looking for a RAM disk (preferably free) which gets its contents from a specified folder on the hard disk and also writes changes made to it back to that folder. Is there such a thing for Windows?
Solution 1:
I would go with VSuite Ramdisk. Unfortunately it's shareware (50$).
It supports (almost) realtime syncing to hard disk.
Fundamental problem with truly realtime sync would be huge performance loss. If syncing would be synchronous, RAM disk writing speed would be same as with hard disk. Reading speed would be faster though.
Solution 2:
For those looking for a free alternative, you can achieve something similar by creating a RAM disk through ImDisk and then following the steps I outlined here: Keeping HDD files in virtual memory without changing paths to files.
Assuming that:
- you already created a RAM drive in physical memory assigned to
R:
(any other letter is fine too).- you want to make the folder
C:\Folder1
available in RAM for faster access.Folder1
is stored on a local NTFS formatted volume.Applying the changes
- Close all programs that might be accessing
Folder1
.- Rename
Folder1
toFolder1.zTarget
(the actual name is not important as long as it's different).- Copy
Folder1.zTarget
to RAM drive (R:
).- Create a [directory junction link][1] named
Folder1
pointing toR:\Folder1.zTarget
.From now on, every time you access
C:\Folder1
what you're actually accessing is the data stored on the RAM drive (R:\Folder1.zTarget
).Reverting back
- Close all programs that might be accessing
Folder1
(now a directory junction link).- If any file inside
Folder1
was modified, copy theFolder1.zTarget
from RAM (R:
) to disk (C:
) to preserve the changes.- Delete the directory junction link named
Folder1
.- Rename
Folder1.zTarget
back toFolder1
.
Check the linked answer for a working batch script example.
Syncing would be on-demand only, which is the best option performance-wise. Eventually one could get automatic sync by writing data back to disk every, say, 15 minutes (e.g. through a scheduled task).