IP Library Granted Patent US 9,767,117
Granted Patent B2
US 9,767,117 · App. 13/896,186 · Granted Sep 19, 2017

Method and system for efficient write journal entry management for a distributed file system

Inventors: Paul E. Soulier (Colorado Springs, CO); Brad D. Besmer (Colorado Springs, CO)
Assignee: NetApp, Inc.
G06F17/30191G06F17/30194
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 9,767,117
App. No.
13/896,186
Granted
Sep 19, 2017
Kind
B2
Abstract

The present invention is directed to a method and system for efficient write journal entry management maintaining minimum write journal information stored in a nonvolatile memory through utilizing an additional structure in a fast volatile memory. The method and system may manage write journaling of a file volume including multiple fixed sized regions and assign a persistent 1-bit synchronization status (the write journal information) to each data region. In addition, a non-persistent I/O counter (the additional structure) for each region to manage the persistent 1-bit synchronization status during run-time. The present invention may provide a mechanism to determine when write I/O operations have not successfully completed to a specific region of the file volume.

Claims (48)

1. A method for efficient write journal entry management for a distributed file system, comprising:

receiving a virtual write I/O command issued from a host;

retrieving an I/O counter associated with a data region, wherein the I/O counter indicates an amount of outstanding host write operations for the data region, and wherein the I/O counter is included in an array of I/O counters;

utilizing the I/O counter to manage a corresponding bit from a Sync State, the Sync State having a plurality of bits, each of the plurality of bits represent a sync status of a corresponding data region; and

writing data via write I/O, wherein the I/O counter is stored in a first memory unit and the Sync State is stored in a second memory unit.

2. The method of claim 1 , the utilizing of the I/O counter further comprising:

in case of the start of write I/O, checking whether the I/O counter associated with the data region is zero;

if the I/O counter associated with the data region is zero, setting the corresponding bit from the Sync State to “0” indicating that the data region is no longer synchronized; and

if the I/O counter associated with the data region is not zero, incrementing the I/O counter by one.

3. The method of claim 1 , the utilizing of the I/O counter further comprising:

determining whether write I/O for the data region has been completed;

in case of the completion of write I/O, decrementing the I/O counter associated with the data region by one, and determining whether the I/O counter associated with the data region is zero after I/O counter is decremented; and

if the I/O counter associated with the data region is zero, setting the corresponding bit from the Sync State to “1” indicating there is no outstanding I/O operation to the data region.

4. The method of claim 1 , wherein the data region is one of a plurality of data regions in which a virtual file volume is divided.

5. The method of claim 4 , wherein the virtual file volume is utilized in a file recovery system.

6. The method of claim 4 , wherein each of the plurality of data regions has two possible states including “synchronized” and “not synchronized”.

7. The method of claim 4 , wherein the array of I/O counters is stored in a volatile memory unit.

8. The method of claim 4 , wherein each of the plurality of data regions is associated with a bit of the Sync State representing previous state.

9. The method of claim 1 , wherein the Sync State is utilized for a file system recovery of system interruptions.

10. A computing device comprising:

a memory; and

at least one processor coupled to the memory, the at least one processor to:

maintain an array of I/O counters in a first memory unit, wherein each I/O counter included in the array of I/O counters indicates an amount of outstanding host write operations for a corresponding data region within a plurality of data regions;

maintain a plurality of sync state bits in a second memory unit, each of the plurality of sync state bits representing a sync status of a corresponding data region within the plurality of date regions; and

change a sync state bit for a particular data region to show a synchronized status for the particular data region in response to decrementing a particular one of the I/O counters to zero outstanding I/O operations for the particular data region.

11. The computing device of claim 10 , wherein the array of I/O counters are implemented in volatile memory.

12. The computing device of claim 10 , wherein the sync state bits are stored in non-volatile memory.

13. The computing device of claim 10 , the processor further to:

synchronize a file volume, the file volume comprising the plurality of data regions, to recover from a system interruption.

14. The computing device of claim 10 , the processor further to:

receive a virtual I/O command from a host computer, wherein the I/O command is to be written to the particular data region;

retrieve the particular one of the I/O counters in response to receiving the virtual I/O command;

set the sync state bit for the particular data region to a value indicating that the particular data region is no longer synchronized in response to receiving the virtual I/O command and in response to determining that the particular one of the I/O counters shows zero outstanding I/O operations; and

increment by one the particular one of the I/O counters in response to determining that the particular one of the I/O counters shows a non-zero number of outstanding I/O operations.

15. A system for efficient write journal entry management of an array of storage devices suitable for being accessed by a plurality of host computers over a network, the system comprising:

a processor to receive a command to access a virtual file volume, wherein the virtual file volume includes a plurality of data regions;

a first memory unit coupled to the processor, the first memory unit including an array of I/O counters, wherein each I/O counter included in the array of I/O counters indicates an amount of outstanding host write operations for a corresponding data region included in the plurality of data regions;

a second memory unit coupled to the processor, the second memory unit including a plurality of sync state bits, each of the plurality of sync state bits representing a sync status of a corresponding data region; and

the processor further to update the plurality of sync state bits for write journaling, and change a sync state bit for a particular data region to show a synchronized status for the particular data region in response to decrementing a particular one of the I/O counters to zero outstanding host write operations for the particular data region.

16. The system of claim 15 , wherein the processor is communicatively coupled to a storage controller that controls the virtual file volume.

17. The system of claim 15 , wherein the processor is communicatively coupled to a host computer, wherein the command is received from the host computer.

18. The system of claim 15 , wherein the first memory unit comprises a volatile memory unit.

19. The system of claim 15 , wherein the second memory unit comprises a non-volatile memory unit.

20. The system of claim 15 , wherein the processor is further to:

receive a virtual I/O command from a host computer, wherein the I/O command is to be written to the particular data region;

retrieve the particular one of the I/O counters in response to receiving the virtual I/O command;

set the sync state bit for the particular data region to a value indicating that the particular data region is no longer synchronized in response to receiving the virtual I/O command and in response to determining that the particular one of the I/O counters shows zero outstanding I/O operations; and

increment by one the particular one of the I/O counters in response to determining that the particular one of the I/O counters shows a non-zero number of outstanding I/O operations.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 13, 2015
From: LSI CORPORATION
To: NETAPP, INC.
Reel/Frame 035628/0866 →
MERGER AND CHANGE OF NAME Recorded Apr 28, 2015
From: LSI SUBSIDIARY CORP.; LSI LOGIC CORPORATION
To: LSI CORPORATION
Reel/Frame 035531/0255 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 20, 2013
From: SOULIER, PAUL E.; BESMER, BRAD D.
To: LSI LOGIC CORPORATION
Reel/Frame 030445/0083 →
Continuity (2)
Continuation 10973478 · Oct 26, 2004
Related Publication 20130268492A1 · Oct 10, 2013