IP Library Patent Application 14445145
Patent Application
App. No. 14/445,145

REDUNDANT ARRAY OF INEXPENSIVE DISKS (RAID) SYSTEM CONFIGURED TO REDUCE REBUILD TIME AND TO PREVENT DATA SPRAWL

Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US None
App. No.
14/445,145
Abstract

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.

Claims (39)

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 said at least a first processor and uses the first local storage system, wherein at least a file system (FS) and a filter driver also run on said at least a first processor, 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, the virtual memory table comprising at least entries identifying virtual memory addresses in the virtual memory that are currently being used by the FS, wherein currently used virtual memory addresses are virtual memory addresses that have been written by the FS and that have not been freed by the FS subsequent to being written by the FS, the OS causing 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); and

a RAID controller interfaced with the computer and with the array of PDs, the RAID controller receiving, over the interface with the computer, the virtual memory addresses and the corresponding data, the RAID controller translating the virtual memory addresses into physical memory addresses in one or more of the PDs and writing the data to the corresponding physical memory addresses, and wherein in the event that a rebuild is to be performed for one of the PDs, the RAID controller identifies to the filter driver one or more virtual memory disks in the virtual memory that correspond to the physical memory address of the PD for which the rebuild process is to be performed, and wherein the filter driver scans a portion of the virtual memory table corresponding to the identified virtual memory disk or disks and identifies currently used virtual memory addresses and causes the currently used virtual memory addresses to be output to the RAID controller, and wherein the RAID controller translates the currently used virtual memory addresses into currently used physical addresses and causes data and parity to be reconstructed for the currently used physical addresses.

2 . The RAID system of claim 1 , wherein the filter driver is part of the FS.

3 . The RAID system of claim 1 , wherein the filter driver is separate from the FS.

4 . The RAID system of claim 1 , wherein the FS is part of the OS.

5 . The RAID system of claim 1 , wherein the filter driver is part of the OS.

6 . The RAID system of claim 1 , wherein the FS and the filter driver are part of the OS.

7 . A method for performing a rebuild 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 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 computer identifiers of one or more virtual memory disks of a virtual memory of the computer that correspond to physical memory addresses of the PD for which the rebuild process is being performed;

with the filter driver, receiving the identifiers in the computer and scanning a virtual memory table of an operating system (OS) of the computer to identify currently used virtual memory addresses associated with the identifiers, wherein currently used virtual memory addresses are virtual memory addresses that have been written by a file system (FS) of the computer 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.

8 . The RAID system of claim 7 , wherein the filter driver is part of the FS.

9 . The RAID system of claim 7 , wherein the filter driver is separate from the FS.

10 . The RAID system of claim 7 , wherein the FS is part of the OS.

11 . The RAID system of claim 7 , wherein the filter driver is part of the OS.

12 . The RAID system of claim 7 , wherein the FS and the filter driver are part of the OS.

13 . A non-transitory computer-readable medium (CRM) having one or more computer software programs embodied therein for performing a rebuild 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, wherein in an event that a rebuild process is to be performed for one of the PDs, the first code segment causes identifiers of one or more virtual memory disks of a virtual memory that correspond to physical memory addresses of the PD for which the rebuild process is to be performed to be output from the RAID controller;

a second code segment for execution by the computer, the second 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 an operating system (OS) running on the computer to identify currently used virtual memory addresses associated with the identifiers, wherein currently used virtual memory addresses are virtual memory addresses that have been written by a file system (FS) running on the computer and that have not been freed by the FS subsequent to being written by the FS, the filter driver code segment causing the currently used virtual memory addresses to be output from the computer to the RAID controller;

a third code segment for execution by the RAID controller, the third code segment translating the currently used virtual memory addresses into currently used physical memory addresses of the PD for which the rebuild process is being performed; and

a fourth code segment for execution by the RAID controller, the fourth code segment rebuilding data and parity for the currently used physical addresses of the PD for which the rebuild process is being performed.

14 . The non-transitory CRM of claim 13 , further comprising:

a fifth code segment for execution by the RAID controller, the fifth code segment allocating a first portion of storage space in the array of PDs for use by the OS, the first portion of storage space being less than a maximum storage capacity of the array;

a sixth code segment for execution by the RAID controller, the sixth 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 seventh code segment for execution by the RAID controller, the seventh 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;

an eighth code segment for execution by the RAID controller, the eighth code segment determining whether the allocated first portion of the array is close to being filled with data; and

a ninth 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 ninth code segment allocates an additional portion of the array for use by the OS and causes the data to be written only to physical memory addresses in the additionally allocated portion of the array.

15 . The non-transitory CRM of claim 13 , wherein the filter driver is part of the FS.

16 . The non-transitory CRM of claim 13 , wherein the filter driver is separate from the FS.

17 . The non-transitory CRM of claim 13 , wherein the FS is part of the OS.

18 . The non-transitory CRM of claim 13 , wherein the filter driver is part of the OS.

19 . The non-transitory CRM of claim 13 , wherein the FS and the filter driver are part of the OS.

20 . A Redundant Array of Inexpensive Disks (RAID) controller for use in a RAID system, the RAID controller being configured to interface with a computer and with an array of physical disks (PDs), the computer comprising at least a first processor and a first local storage system, wherein an operating system (OS) runs on said at least a first processor and uses the first local storage system, wherein at least a file system (FS) and a filter driver also run on said at least a first processor, the RAID controller comprising:

an interface for interfacing with the computer and with the array of PDs, the RAID controller receiving virtual memory addresses and corresponding data, the virtual memory addresses corresponding to entries in a virtual memory table maintained by the FS, the entries identifying virtual memory addresses in a virtual memory of the first local storage system of the computer that have been written by the FS and that have not been freed by the FS subsequent to being written by the FS; and

at least one RAID processor translating the virtual memory addresses into physical memory addresses in one or more of the PDs and writing the corresponding data to the corresponding physical memory addresses, and wherein in the event that a rebuild is to be performed for one of the PDs, said at least one RAID processor identifies, via the interface, to a filter driver of the computer one or more virtual memory disks in the virtual memory that correspond to the physical memory addresses of one or more of the PDs for which the rebuild process is to be performed, and wherein the RAID processor receives, via the interface, virtual memory addresses identified by the filter driver as currently used virtual memory addresses and translates the currently used virtual memory addresses into currently used physical addresses and causes data and parity to be reconstructed for the currently used physical addresses.

Assignments (4)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041710/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037808/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 3, 2015
From: LSI CORPORATION
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 035390/0388 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 4, 2014
From: BERT, LUCA
To: LSI CORPORATION
Reel/Frame 033456/0266 →