Browse Prior Art Database

A Dynamic Way to Manage Nvram Space in RAID Controller Disclosure Number: IPCOM000248248D
Publication Date: 2016-Nov-11
Document File: 6 page(s) / 79K

Publishing Venue

The Prior Art Database


The NVRAM is a non-volatile storage media to preserve information on power loss, as a component in RAID controller. It records the write stride position of each array to prevent data inconsistency on power loss . The space of NVRAM is quite limited, so the management of its space is important. This invention put forward a way to manage NVRAM space in a dynamic way. It makes full use of NVRAM space to support more host IO as well as make sure there is enough space for each array. It combines the workload information into the allocation of NVRAM, making space allocation more reasonable.

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 45% of the total text.

Page 01 of 6

A Dynamic Way to Manage Nvram Space in RAID Controller


NVRAM (Non-volatile random access memory) is a non-volatile storage media in RAID (Redundant Arrays of Independent Disks) controller. This component preserves stride information during power loss. For a RAID controller that handles massive host IO, this component is essentialfor keeping data consistency under power loss.

Arrays are managed by RAID controllers. For each ongoing write IO sent to different array, it's important that the stride location is safely recorded in a non-volatile media, which makes it possible for RAID controller to resume the interrupted IO after an unexpected power loss, thus keeps data consistency.

Then it leads to the question of how to manage NVRAM space in a reasonable way. We need to make sure there's enough space for each array. Meanwhile, better NVRAM utilization is important to make sure adapter workload is not blocked by NVRAM.

But there exists some difficulty for the task:
1) NVRAM space is limited. Hardware limit decides the maximum physical space.

2) Array number is dynamic. We have no idea how much array would be created.

3) The space required for each array is dynamic. It all depends on the overall and instantaneous workload. It varies from time to time.


The existing solution uses a fixed allocation. The design assume a fixed number of arrays. Each array is allocated with a fixedspace. There are three severe problems of this design:
1) Since we cannot be sure how many array there would be, this fixed number is set to a big value to avoid shortage, which is far more than the actual array number in most cases. This leads to the waste of NVRAM space.

2) The space reserved for each array is fixed, so the workload is limited by this space. If the space of an array is used up, also the physical space of NVRAM might still be enough, this array cannot support more write IO.

3) Once the NVRAM space for a specific array is used up, while more host IO sent to this array, there's no proper handling of this situation and adapter simply stuck. This can cause loss access and data loss.


Page 02 of 6


Here we put forward a dynamic solution of the NVRAM space allocation. The basic design is:
1) Adjust allocated space according to the run-time reality and overall workload information.

2) Adjust NVRAM space for each array when array number increases.

3) Re-arrange space when array number decreases.

According to the characteristic of typical storage system, there's a time window from new array starting configuration to host IO starting. The processes includes drive installation, array creation, rank creation, pool assignation, volume creation and finally the volume is attached to host. Host won't start IO until all these processes are finished. So this gives us the time to set up the extra NVRAM configuration asynchronously. This time window is the basis of the dynamic allocat...