IP Library Granted Patent US 10,095,708
Granted Patent B2
US 10,095,708 · App. 14/658,015 · Granted Oct 9, 2018

Data mobility, accessibility, and consistency in a data storage system

Inventors: Aaron Passey (Seattle, WA); Neal Fachan (Seattle, WA); Peter Godman (Seattle, WA)
Assignee: Qumulo, Inc.
G06F17/30221G06F9/467G06F17/30368
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 10,095,708
App. No.
14/658,015
Granted
Oct 9, 2018
Kind
B2
Abstract

A transactional block storage system is provided which is capable of supporting a single-phase commit for data writes specifying a protected storage unit. The storage system includes a data storage map that logically links the protected data storage unit to two or more block storage units associated with a layer of the protected data storage unit. The storage system also includes an address abstraction layer which translates write requests to the block storage units and resolves whether those write requests are atomically committed to the storage system in a single phase transaction. The address abstraction layer is further configured to detected when a block storage unit becomes unavailable during a transaction and create a cleaning kit for that block in order to prevent data loss. Additionally, the address abstraction layer facilitates moving, copying, and merging of block storage units without global locking in the storage system.

Claims (82)

1. A data storage system for providing access to data over a network, comprising:

a plurality of data storage devices; and

one or more computers, including:

one or more memories for storing instructions; and

one or more processors that execute the instructions to perform actions, including:

instantiating a client interface, by an application layer, to access data stored in a plurality of storage units, wherein each storage unit comprises a plurality of layers that include a plurality of block storage units (bstore) on the plurality of hardware data storage devices, wherein the file system employs a received write request to specify one or more of the storage units as protected (pstore), and;

instantiating a map that corresponds to each pstore with two or more block storage units (bstore), wherein a copy of the map is included in an address abstraction layer that also includes an address for each pstore, and wherein the address abstraction layer communicates with a kernel layer that employs the received write request and associated pstore address to access one or more of the corresponding bstores; and

employing the address abstraction layer to perform further actions, comprising:

employing each received write request to generate one or more translated write requests, wherein each translated write request specifies a different one of the two or more block storage units that corresponds to each protected data storage volume;

resolving a transaction, collectively representing the one or more translated write requests, as being positive or negative based on commit responses from each write request to the two or more block storage units, wherein the one or more write requests are atomically committed; and

when one of the two or more block storage units becomes unavailable during the single-phase transaction, performing further actions, including:

adding a new block storage unit to one layer of an available data storage device containing the unavailable block storage unit, wherein the new block storage unit stores data intended for the unavailable block storage unit; and

updating the unavailable block storage unit with data included in the new block storage unit when the unavailable block storage becomes available.

2. The data storage system of claim 1 , wherein the transaction is resolved as single-phase commit actions to improve performance of the data storage system.

3. The data storage system of claim 1 , wherein a commit response includes one of a positive response, a negative response, or a null response.

4. The data storage system of claim 1 , wherein the transaction is resolved to be a positive transaction when one or more of the write requests returns a positive commit response and none of the other one or more write requests returns a negative commit response.

5. The data storage system of claim 1 , wherein each write request originates from a client and provides a logical address for storing data, and wherein the two or more bstores are indicated by the logical address.

6. The data storage system of claim 1 , further comprising:

when the transaction is resolved as negative, terminating the transaction, and providing a notification that the one or more write requests are incomplete; and

when the transaction is resolved as positive, providing a notification that the one or more write requests are complete.

7. The data storage system of claim 1 , further comprising:

logging each commit response and each resolved transaction, wherein a positive response is logged as a successful commit, a negative response is logged as an unsuccessful commit, and a null is logged as a commit for which no response is received.

8. The data storage system of claim 1 , further comprising removing the new block storage unit from the data storage system when the unavailable block storage unit is updated.

9. A computer for providing access to data stored on a plurality of data storage devices over a network, comprising:

one or more memories for storing instructions; and

one or more processors that execute the instructions to perform actions, including:

instantiating a client interface, by an application layer, to access data stored in a plurality of storage units, wherein each storage unit comprises a plurality of layers that include a plurality of block storage units (bstore) on the plurality of hardware data storage devices, wherein the file system employs a received write request to specify one or more of the storage units as protected (pstore), and;

instantiating a map that corresponds to each pstore with two or more block storage units (bstore), wherein a copy of the map is included in an address abstraction layer that also includes an address for each pstore, and wherein the address abstraction layer communicates with a kernel layer that employs the received write request and associated pstore address to access one or more of the corresponding bstores; and

employing the address abstraction layer to perform further actions, comprising:

employing each received write request to generate one or more translated write requests, wherein each translated write request specifies a different one of the two or more block storage units that corresponds to each protected data storage volume;

resolving a transaction, collectively representing the one or more translated write requests, as being positive or negative based on commit responses from each write request to the two or more block storage units, wherein the one or more write requests are atomically committed; and

when one of the two or more block storage units becomes unavailable during the single-phase transaction, performing further actions, including:

adding a new block storage unit to one layer of an available data storage device containing the unavailable block storage unit, wherein the new block storage unit stores data intended for the unavailable block storage unit; and

updating the unavailable block storage unit with data included in the new block storage unit when the unavailable block storage becomes available.

10. The computer of claim 9 , wherein the transaction is resolved as single-phase commit actions to improve performance in accessing data.

11. The computer of claim 9 , wherein a commit response includes one of a positive response, a negative response, or a null response.

12. The computer of claim 9 , wherein the transaction is resolved to be a positive transaction when one or more of the write requests returns a positive commit response and none of the other one or more write requests returns a negative commit response.

13. The computer of claim 9 , wherein each write request originates from a client and provides a logical address for storing data, and wherein the two or more bstores are indicated by the logical address.

14. The computer of claim 9 , further comprising:

when the transaction is resolved as negative, terminating the transaction, and providing a notification that the one or more write requests are incomplete; and

when the transaction is resolved as positive, providing a notification that the one or more write requests are complete.

15. The computer of claim 9 , further comprising:

logging each commit response and each resolved transaction, wherein a positive response is logged as a successful commit, a negative response is logged as an unsuccessful commit, and a null is logged as a commit for which no response is received.

16. The computer of claim 9 , further comprising removing the new block storage unit from the data storage system when the unavailable block storage unit is updated.

17. A method for providing access to data stored on a plurality of data storage devices over a network, comprising:

employing one or more computers to execute instructions, stored in non-transitory memory storage devices to perform actions, including:

instantiating a client interface, by an application layer, to access data stored in a plurality of storage units, wherein each storage unit comprises a plurality of layers that include a plurality of block storage units (bstore) on the plurality of hardware data storage devices, wherein the file system employs a received write request to specify one or more of the storage units as protected (pstore), and;

instantiating a map that corresponds to each pstore with two or more block storage units (bstore), wherein a copy of the map is included in an address abstraction layer that also includes an address for each pstore, and wherein the address abstraction layer communicates with a kernel layer that employs the received write request and associated pstore address to access one or more of the corresponding bstores; and

employing the address abstraction layer to perform further actions, comprising:

employing each received write request to generate one or more translated write requests, wherein each translated write request specifies a different one of the two or more block storage units that corresponds to each protected data storage volume;

resolving a transaction, collectively representing the one or more translated write requests, as being positive or negative based on commit responses from each write request to the two or more block storage units, wherein the one or more write requests are atomically committed; and

when one of the two or more block storage units becomes unavailable during the single-phase transaction, performing further actions, including:

adding a new block storage unit to one layer of an available data storage device containing the unavailable block storage unit, wherein the new block storage unit stores data intended for the unavailable block storage unit; and

updating the unavailable block storage unit with data included in the new block storage unit when the unavailable block storage becomes available.

18. The method of claim 17 , wherein the transaction is resolved as single-phase commit actions to improve performance of the data storage system.

19. The method of claim 17 , wherein a commit response includes one of a positive response, a negative response, or a null response.

20. The method of claim 17 , wherein the transaction is resolved to be a positive transaction when one or more of the write requests returns a positive commit response and none of the other one or more write requests returns a negative commit response.

21. The method of claim 17 , wherein each write request originates from a client and provides a logical address for storing data, and wherein the two or more bstores are indicated by the logical address.

22. The method of claim 17 , further comprising:

when the transaction is resolved as negative, terminating the transaction, and providing a notification that the one or more write requests are incomplete; and

when the transaction is resolved as positive, providing a notification that the one or more write requests are complete.

23. The method of claim 17 , further comprising:

logging each commit response and each resolved transaction, wherein a positive response is logged as a successful commit, a negative response is logged as an unsuccessful commit, and a null is logged as a commit for which no response is received.

24. The data storage system of claim 17 , further comprising removing the new block storage unit from the data storage system when the unavailable block storage unit is updated.

25. A non-transitory data storage media that includes instructions for providing access to data stored on a plurality of data storage devices over a network, wherein execution of the instructions by one or more computers performs actions, including:

instantiating a client interface, by an application layer, to access data stored in a plurality of storage units, wherein each storage unit comprises a plurality of layers that include a plurality of block storage units (bstore) on the plurality of hardware data storage devices, wherein the file system employs a received write request to specify one or more of the storage units as protected (pstore), and;

instantiating a map that corresponds to each pstore with two or more block storage units (bstore), wherein a copy of the map is included in an address abstraction layer that also includes an address for each pstore, and wherein the address abstraction layer communicates with a kernel layer that employs the received write request and associated pstore address to access one or more of the corresponding bstores; and

employing the address abstraction layer to perform further actions, comprising:

employing each received write request to generate one or more translated write requests, wherein each translated write request specifies a different one of the two or more block storage units that corresponds to each protected data storage volume;

resolving a transaction, collectively representing the one or more translated write requests, as being positive or negative based on commit responses from each write request to the two or more block storage units, wherein the one or more write requests are atomically committed; and

when one of the two or more block storage units becomes unavailable during the single-phase transaction, performing further actions, including:

adding a new block storage unit to one layer of an available data storage device containing the unavailable block storage unit, wherein the new block storage unit stores data intended for the unavailable block storage unit; and

updating the unavailable block storage unit with data included in the new block storage unit when the unavailable block storage becomes available.

26. The media of claim 25 , wherein the transaction is resolved as single-phase commit actions to improve performance of the data storage system.

27. The media of claim 25 , wherein a commit response includes one of a positive response, a negative response, or a null response.

28. The media of claim 25 , wherein the transaction is resolved to be a positive transaction when one or more of the write requests returns a positive commit response and none of the other one or more write requests returns a negative commit response.

29. The media of claim 25 , wherein each write request originates from a client and provides a logical address for storing data, and wherein the two or more bstores are indicated by the logical address.

30. The media of claim 25 , further comprising:

when the transaction is resolved as negative, terminating the transaction, and providing a notification that the one or more write requests are incomplete; and

when the transaction is resolved as positive, providing a notification that the one or more write requests are complete.

31. The media of claim 25 , further comprising:

logging each commit response and each resolved transaction, wherein a positive response is logged as a successful commit, a negative response is logged as an unsuccessful commit, and a null is logged as a commit for which no response is received.

Assignments (2)
SECURITY INTEREST Recorded Jun 24, 2022
From: QUMULO, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 060439/0967 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 9, 2016
From: PASSEY, AARON; FACHAN, NEAL; GODMAN, PETER
To: QUMULO, INC.
Reel/Frame 037931/0235 →
Continuity (3)
Provisional Application 61982926 · Apr 23, 2014
Provisional Application 61982931 · Apr 23, 2014
Related Publication 20150310054A1 · Oct 29, 2015
Cited By (10)
US 12,222,903 US 12,229,414 US 12,292,853 US 12,346,290 US 12,443,559 US 12,443,568 US 12,481,625 US 12,585,563 US 12,619,582 US 12,670,081