Intelligent Defragmentation Mode in PrimoCache?

Suggestions around PrimoCache
Post Reply
Axel Mertes
Level 9
Level 9
Posts: 180
Joined: Thu Feb 03, 2011 3:22 pm

Intelligent Defragmentation Mode in PrimoCache?

Post by Axel Mertes »

Hi PrimoCache Support,

I regularly need to defragment my volumes to increase performance and for safety reasons (disc scrubbing = refreshing written data, defragmented volumes are dramatically easier to recover in desaster scenarios).
I believe that PrimoCache would not help in defragmentation process, because its a lot of single reads and single writes. I am sure it will clean up the cache completely and non of the previously cached data will be present anymore.

So I thought about how to resolve this.

One option would be to stop caching for a while, run defragmentation and actually bypass the caching, then - when defragmentation is finished - reactivate caching.
However, that means the cache needs to be refreshed, because it would not know about which blocks have been moved elsewhere during defragmentation. In fact that is DANGEROUS.

So I thougt if there could be an "Intelligent Defragmentation Mode" in Primocache?
Lets call it "Bypass Mode", as it actually nails it.
When activated, Primocache might no longer add fresh data to the cache, but track if any of the cached blocks is moved on the HDDs. If it is moved, it keeps the cached block, but changes the HDDs source block/cluster address accordingly in the cache index, so that everything is fine again. The cache will reflect the new position of the cache blocks. If blocks are moved that are not in the cache, it will completely bypass the cache system like if there were no Primocache at all. When finished with defragmentation, the mode can be disabled and Primocache would continue with caching.

The benefits would be that cache is kept 1:1 as prior to the defragmentation, so my "important data" is still in there. Just all block addresses have been updated during the defragmentation cycle - inc case they need to be changed. It will not require repopulating the cache with information that the user expects there, because no user will want to have his cache flushed just due moving data around in defragmention - even if this is a very naive approach.

Given a larger file server with many TBytes of storage plus e.g. 1-2 TBytes of cache, such mechanism would be a HUGE TIMESAVER.


I have not measured if PrimoCache does really not affect defragmentation speed. If it does (maybe due to MFT caching?) it might be possible to use just a given percentage of the cache for fresh data. So the above model would change into that a fixed amound of cache (oldest) is cyclic overwritten with the data being moved during the defragmentation, while all the rest is reserved to stay "as is". This would be pretty advanced and right now I have no real data yet on if and how an activated PrimoCache would affect defragmentations speed on a large HDD array. If its the case, it my be worth considering it.

I know this may sound complex, but I believe its pretty simple to implement, based on what is already existing.



Cool would be if we can control Primocache also via DOS shell scripts, so we can activate a mode prior to defragmentation automatically and reactivate afterwards. That would be really helpful for an advanced user.

If you need more detailed feedback on this, just drop me a email or comment here.

Best regards,
Axel
Post Reply