主权项 |
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. |