A RAID system is provided in which, in the event that a rebuild is to be performed for one of the PDs, a filter driver of the operating system of the computer of the RAID system informs the RAID controller of the RAID system of addresses in the virtual memory that are unused. Unused virtual memory addresses are those which have never been written by the OS as well as those which have been written by the OS and subsequently freed by the OS. The RAID controller translates the unused virtual memory addresses into unused physical addresses. The RAID controller then reconstructs data and parity only for the unused physical addresses in the PD for which the rebuild is being performed. This reduces the amount of data and parity that are rebuilt during a rebuild process and reduces the amount of time that is required to perform the rebuild process. In addition, the RAID system is capable of being configured to prevent or reduce data sprawl.
Legal claims defining the scope of protection, as filed with the USPTO.
1. A Redundant Array of Inexpensive Disks (RAID) system comprising: a computer comprising: at least a first processor; and a first local storage system, wherein an operating system (OS) of the computer runs on the first processor and uses the first local storage system, the OS including at least a file system (FS), the FS using a portion of the first local storage system as virtual memory and maintaining a virtual memory table in the first local storage system containing at least entries identifying addresses in the virtual memory that have been written by the FS, wherein the OS causes the virtual memory addresses that have been written by the FS and the corresponding data to be output from the computer; an array of physical disks (PDs), the array having a maximum storage capacity; and a RAID controller interfaced with the computer and with the array of PDs, the RAID controller allocating a first portion of the array for use by the OS that is less than the maximum storage capacity of the array, the RAID controller receiving, over the interface with the computer, at least the virtual memory addresses and the corresponding data, the RAID controller translating the received virtual memory addresses into physical addresses in the PDs, and wherein the RAID controller causes the received data to be written only to physical addresses in the allocated first portion of the array, and wherein if the RAID controller determines that the allocated first portion of the array is close to being filled with data, the RAID controller allocates an additional portion of the array for use by the OS and causes the received data to be written only to physical addresses in the additionally allocated portion of the array.
2. The RAID system of claim 1 , wherein the first allocated portion and the additionally allocated portion are contiguous.
3. The RAID system of claim 1 , wherein the first allocated portion and the additionally allocated portion are noncontiguous.
4. The RAID system of claim 1 , wherein the OS further comprises a filter driver, and wherein the virtual memory table comprises at least entries identifying virtual memory addresses in the virtual memory that are used, wherein used virtual memory addresses are those that have been written by the FS and have not been freed by the FS subsequent to being written by the FS, and wherein in an event that one of the PDs is to be rebuilt, the filter driver scans the virtual memory table and obtains the used virtual memory addresses and causes the used virtual memory addresses to be output from the computer to the RAID controller, the RAID controller translating the used virtual memory addresses into used physical memory addresses in the PD to be rebuilt, and wherein the RAID controller causes data and parity to be reconstructed for the used physical memory addresses.
5. The RAID system of claim 4 , wherein the filter driver is part of the FS.
6. The RAID system of claim 4 , wherein the filter driver is separate from the FS.
7. A method for reducing or preventing data sprawl in a Redundant Array of Inexpensive Disks (RAID) system, the RAID system comprising a computer, an array of physical disks (PDs), and a RAID controller interfaced with the computer and with the array of PDs, the method comprising: in the RAID controller, allocating a first portion of storage space in the array of PDs for use by an operating system (OS) of the computer, the first portion of storage space being less than a maximum storage capacity of the array; in the RAID controller, receiving, over an interface with the computer, virtual memory addresses of a virtual memory of the computer and data written to the virtual memory addresses by the OS; in the RAID controller, causing the received data to be written only to the allocated first portion of the array; in the RAID controller, determining whether the allocated first portion of the array is close to being filled with data; and in the RAID controller, if it is determined that the allocated first portion of the array is close to being filled with data, allocating an additional portion of the array for use by the OS and causing the received data to be written only to the additionally allocated portion of the array.
8. The method of claim 7 , further comprising: in an event that a rebuild process is to be performed for one of the PDs, outputting from the RAID controller to a filter driver of the OS identifiers of one or more virtual memory disks of the virtual memory that correspond to the physical memory addresses of the PD for which the rebuild process is to be performed; with the filter driver, receiving the identifiers in the computer and scanning a virtual memory table of the OS to identify used virtual memory addresses associated with the identifiers, wherein used virtual memory addresses are virtual memory addresses that have been written by a file system (FS) of the OS and that have not been freed by the FS subsequent to being written by the FS; with the filter driver, causing the used virtual memory addresses to be output from the computer to the RAID controller; in the RAID controller, translating the used virtual memory addresses into used physical memory addresses of the PD for which the rebuild process is being performed, and in the RAID controller, rebuilding data and parity for the used physical addresses of the PD for which the rebuild process is being performed.
9. A non-transitory computer-readable medium (CRM) having a computer software program embodied therein for reducing or preventing data sprawl in a Redundant Array of Inexpensive Disks (RAID) system, the RAID system comprising a computer, an array of physical disks (PDs), and a RAID controller interfaced with the computer and with the array of PDs, the computer software program comprising instructions for execution by the RAID controller, the CRM comprising: a first code segment for execution by the RAID controller, the first code segment allocating a first portion of storage space in the array of PDs for use by an operating system (OS) of the computer, the first portion of storage space being less than a maximum storage capacity of the array; a second code segment for execution by the RAID controller, the second code segment receiving, over an interface with the computer, virtual memory addresses of a virtual memory of the computer and data written to the virtual memory addresses by the OS; a third code segment for execution by the RAID controller, the third code segment translating the received virtual memory addresses into physical memory addresses in the PDs and causing the received data to be written only to physical memory addresses in the allocated first portion of the array; a fourth code segment for execution by the RAID controller, the fourth code segment determining whether the allocated first portion of the array is close to being filled with data; and a fifth code segment for execution by the RAID controller, wherein if it is determined that the allocated first portion of the array is close to being filled with data, the fifth code segment allocates an additional portion of the array for use by the OS and causes the received data to be written only to physical memory addresses in the additionally allocated portion of the array.
10. The non-transitory CRM of claim 9 , further comprising: a sixth code segment for execution by the RAID controller, wherein in an event that a rebuild process is to be performed for one of the PDs, the sixth code segment causes identifiers of one or more virtual memory disks of the virtual memory that correspond to the physical memory addresses of the PD for which the rebuild process is to be performed to be output from the RAID controller; a seventh code segment for execution by the computer, the seventh code segment being a filter driver code segment, the filter driver code segment receiving the identifiers output from the RAID controller and scanning a virtual memory table of the OS to identify used virtual memory addresses associated with the identifiers, wherein used virtual memory addresses are virtual memory addresses that have been written by a file system (FS) of the OS and that have not been freed by the FS subsequent to being written by the FS, the filter driver code segment causing the used virtual memory addresses to be output from the computer to the RAID controller; an eighth code segment for execution by the RAID controller, the eighth code segment translating the used virtual memory addresses into used physical memory addresses of the PD for which the rebuild process is being performed, and a ninth code segment for execution by the RAID controller, the ninth code segment rebuilding data and parity for the used physical addresses of the PD for which the rebuild process is being performed.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
March 1, 2011
September 2, 2014
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.