IP Library Granted Patent US 8,074,019
Granted Patent B2
US 8,074,019 · App. 11/939,036 · Granted Dec 6, 2011

Preventing data loss in a storage system

View Patent ↗
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 8,074,019
App. No.
11/939,036
Granted
Dec 6, 2011
Kind
B2
Abstract

Storage servers use a fast, non-volatile or persistent memory to store data until it can be written to slower mass storage devices such as disk drives. If the server crashes before a write can complete, the data remains safely stored in non-volatile memory. If the data cannot be committed to disk when the server reboots (e.g. because the destination mass storage device is unavailable), it is stored in a file. When the disk reappears, the data in the file may be used to restore a file or file system on the disk to a consistent state.

Claims (47)

1. A method comprising:

identifying uncommitted data records in a persistent store of a data storage server during system initialization of the data storage server;

saving each of the identified uncommitted data records onto a corresponding aggregate if said corresponding aggregate is accessible; and

storing each of the identified uncommitted data records that corresponds to an inaccessible aggregate in a file that corresponds to the inaccessible aggregate, the file that corresponds to the inaccessible aggregate including a sequence identifier of the inaccessible aggregate, wherein the sequence identifier identifies whether the inaccessible aggregate was repaired and mounted without storing the identified uncommitted data records on the inaccessible aggregate;

detecting an accessible aggregate, wherein the detected accessible aggregate was previously inaccessible;

determining whether the detected accessible aggregate was last shut down cleanly with no outstanding client data writes;

if the detected accessible aggregate was not last shut down cleanly, identifying a file containing uncommitted data records that correspond to the detected accessible aggregate; and

replaying the uncommitted data records from the file containing uncommitted data records that corresponds to the detected accessible aggregate onto the detected accessible aggregate.

2. The method of claim 1 wherein the accessible aggregate is a Redundant Array of Independent Disks (“RAID array”) that is presently capable of storing data, and

the inaccessible aggregate is a RAID array that is presently incapable of storing data.

3. The method of claim 1 , further comprising:

testing the file containing uncommitted data records that corresponds to the detected accessible aggregate to determine whether the uncommitted data records in the file containing uncommitted data records that corresponds to the detected accessible aggregate are stale before the replaying operation.

4. The method of claim 1 wherein said file includes:

an identifier of said inaccessible aggregate; and

an identifier of said persistent store.

5. The method of claim 1 wherein the data storage server is a first data storage server, the method further comprising:

transmitting said file to a second, different data storage server.

6. The method of claim 1 , further comprising:

storing said file on a backup medium.

7. The method of claim 1 wherein said persistent store is one of a non-volatile random access memory (“NVRAM”), a battery-backed random access memory (“RAM”), or a Flash memory.

8. A method comprising:

booting a storage server;

detecting Redundant Array of Independent Disks (“RAID array”) data that was cached in a persistent memory of the storage server before the booting operation, the RAID array data to be stored on a mass storage aggregate that was available for writing before the booting operation but is unavailable for writing after the booting operation; and

storing the RAID array data in a file, wherein the file includes a sequence identifier of the unavailable mass storage aggregate, wherein the sequence identifier identifies whether the unavailable mass storage aggregate was repaired and mounted without the stored RAID array data;

detecting that the mass storage aggregate has become available for writing;

determining whether the available mass storage aggregate was last shut down cleanly with no outstanding client data writes;

if the available mass storage aggregate was not last shut down cleanly, identifying the file; and

writing the RAID array data from the file to the mass storage aggregate.

9. The method of claim 8 , further comprising:

minoring the file to a second storage server.

10. The method of claim 8 , further comprising:

receiving a request to write client data into a file stored on the mass storage aggregate;

saving the client data in the persistent memory; and

transmitting an acknowledgement to the client before writing the client data into the file, wherein

the receiving, saving and transmitting operations occur before the booting operation.

11. A method comprising:

during a system initialization of a data storage server,

identifying uncommitted data records representing client write requests stored in a short-term persistent store of the data storage server,

for each identified uncommitted data record, determining whether a corresponding aggregate is accessible, and

for each said identified uncommitted data record that corresponds to an inaccessible aggregate, storing said data record in a file and deleting the data record from the short-term persistent store; and

when a corresponding aggregate that was inaccessible during the identifying operation becomes newly accessible, determining whether the newly accessible aggregate was last shut down cleanly with no outstanding client data writes and if the detected newly accessible aggregate was not last shut down cleanly, replaying the data records from the file to commit the data records to the newly accessible aggregate, wherein the data records from the file include a sequence identifier of the newly accessible aggregate, wherein the sequence identifier identifies whether the newly accessible aggregate was repaired and mounted without the data records from the file.

12. The method of claim 11 wherein each uncommitted data record corresponds to a Redundant Array of Independent Disks (“RAID array”) parity stripe associated with a client write request.

13. The method of claim 11 wherein the data storage server is a first data storage server, the method further comprising:

making the file available at a second data storage server; and

transferring control of the inaccessible aggregate to the second data storage server, wherein

the replaying operation is performed by the second data storage server.

14. The method of claim 11 wherein the inaccessible aggregate is a Redundant Array of Independent Disks (“RAID Array”) including a plurality of mass storage devices, where a subset of the plurality of mass storage devices is malfunctioning so that existing data can be read from the RAID array but new data cannot be written to the RAID array.

Assignments (2)
MERGER AND CHANGE OF NAME Recorded Apr 11, 2025
From: NETWORK APPLIANCE, INC.; NETAPP NC CORPORATION
To: NETAPP, INC.
Reel/Frame 071490/0528 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 21, 2007
From: GUPTA, RATNESH; LEONG, JAMES; GOEL, ATUL
To: NETWORK APPLIANCE, INC.
Reel/Frame 020297/0745 →