IP Library Granted Patent US 10,380,026
Granted Patent B2
US 10,380,026 · App. 14/569,382 · Granted Aug 13, 2019

Generalized storage virtualization interface

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,380,026
App. No.
14/569,382
Filed
Dec 12, 2014
Granted
Aug 13, 2019
Kind
B2
Art Unit
2124
USPC
711/154
Abstract

A storage system implements a sparse, thinly provisioned logical-to-physical translation layer. The storage system may perform operations to modify logical-to-physical mappings, including creating, removing, and/or modifying any-to-any and/or many-to-one mappings between logical identifiers and stored data (logical manipulation operations). The storage system records persistent metadata to render the logical manipulation (LM) operations persistent and crash-safe. The storage system may provide access to LM functionality through a generalized LM interface. Clients may leverage the LM interface to efficiently implement higher-level functionality and/or offload LM operations to the storage system.

Claims (104)

1. An apparatus, comprising:

a non-transitory storage medium;

a storage manager that stores data on the non-transitory storage medium in response to storage requests of a client;

a translation layer that maintains translation metadata that associates data segments stored on the non-transitory storage medium with logical addresses of a logical address space; and

a data virtualization interface available to the client, the data virtualization interface defining requests to implement specified modifications to the translation metadata, comprising requests to merge designated sets of logical addresses,

wherein:

implementing a merge designating a first set of logical addresses and a second set of logical addresses comprises:

modifying the translation metadata to combine the first set of logical addresses with the second set of logical addresses in a destination set of logical addresses in accordance with a merge policy that specifies a set of rules to resolve merge conflicts based on differences in logical address vectors for the first set of logical addresses and the second set of logical addresses, the merge policy specified by the client in an input/output request, and

the translation metadata is modified to associate each logical address of the destination set of logical addresses with a stored data segment associated with a logical address selected from one of the first set of logical addresses and the second set of logical addresses.

2. The apparatus of claim 1 , wherein:

the translation metadata is modified to associate the logical addresses of the destination set of logical addresses with respective stored data segments without modifying the stored data segments; and

the destination set of logical addresses comprises one of the first set of logical addresses, the second set of logical addresses, and a third set of logical addresses.

3. The apparatus of claim 1 , wherein the storage manager is configured to store the data on the non-transitory storage medium in response to one or more requests issued to a block storage interface.

4. The apparatus of claim 1 , wherein the data virtualization interface comprises one of a library, an application programming interface, a user-level module, a software development kit, and a kernel-level module.

5. The apparatus of claim 1 , wherein:

the data virtualization interface defines requests for specifying move operations pertaining to designated logical addresses; and

implementing a move operation designating a source logical address and a destination logical address comprises:

identifying an association between the source logical address and a particular stored data segment in the translation metadata; and

modifying the translation metadata to remove the identified association between the source logical address and the particular stored data segment and to create an association between the designation logical address and the particular stored data segment.

6. The apparatus of claim 1 , wherein:

the data virtualization interface defines requests for specifying clone operations pertaining to designated logical addresses; and

implementing a clone operation designating a source logical address and a destination logical address comprises:

determining that the translation metadata comprises an association between the source logical address and a particular stored data segment;

modifying the translation metadata to associate the designation logical address with the particular stored data segment; and

retaining the association between the source logical address and the particular stored data segment in the translation metadata such that the translation metadata is modified to associate the particular stored data segment with both of the source logical address and the destination logical address.

7. The apparatus of claim 6 , wherein:

the client is configured to implement a zero-write file copy operation by issuing a logical copy request to the data virtualization interface, the logical copy request specifying a clone operation and designating first logical addresses associated with data of a first file stored on the non-transitory storage medium by the translation metadata as source logical addresses for the clone operation and designating second logical addresses as destination logical addresses for the clone operation; and

implementing the specified clone operation in response to the logical copy request comprises modifying the translation metadata to associate both of the first logical addresses and the second logical addresses with the data of the first file stored on the non-transitory storage medium.

8. The apparatus of claim 7 , wherein the client is configured to:

identify files corresponding to duplicate data stored on the non-transitory storage medium; and

issue the logical copy request to the data virtualization interface in response to determining that the first file corresponds to the duplicate data.

9. The apparatus of claim 1 , wherein:

the data virtualization interface defines requests for specifying range move operations pertaining to designated source and destination logical addresses; and

the client is configured to leverage the data virtualization interface to implement a journaled storage transaction pertaining to logical addresses of a target set of logical addresses, by:

storing data segments pertaining to the journaled storage transaction, such that the translation metadata associates the stored data segments pertaining to the journaled storage transaction with logical addresses of a working set of logical addresses, different from the target set of logical addresses; and

issuing a request specifying a range move operation to the data virtualization interface in response to the storing, the issued request designating the working set of logical addresses as source logical addresses for the specified range move operation and the target set of logical addresses as destination logical addresses for the specified range move operation,

wherein implementing the specified range move operation comprises modifying the translation metadata to associate the stored data segments pertaining to the journaled storage transaction with the target set of logical addresses.

10. The apparatus of claim 9 , wherein the client is configured to roll back a failed journaled storage transaction by invalidating stored data segments associated with logical addresses of the working set of logical addresses by the translation metadata.

11. The apparatus of claim 9 , wherein implementing the specified range move operation further comprises writing persistent metadata on the non-transitory storage medium in a single atomic write operation, the persistent metadata configured to associate the stored data segments pertaining to the journaled storage with the target set of logical addresses.

12. A computer-implemented storage system, comprising:

means for storing data blocks on a physical storage resource, wherein storing the data blocks comprises maintaining logical-to-physical mappings to associate the stored data blocks with identifiers of a logical address space;

means for requesting designated modifications to logical-to-physical mappings, comprising an API function for requesting a merge modification to the logical-to-physical mappings pertaining to specified identifiers; and

means for implementing a merge modification to the logical-to-physical mappings in response to a request specifying a first set of identifiers and a second set of identifiers by modifying the logical-to-physical mappings to combine the first set of identifiers and the second set of identifiers into a third set of identifiers,

wherein:

the logical-to-physical mappings are modified to associate each identifier of the third set of identifiers with a stored data block associated with an identifier selected from one of the first set of identifiers and the second set of identifiers in accordance with a merge policy specified by the client,

the merge policy specifies rules to resolve merge conflicts based on differences in logical address vectors for the first set identifiers and the second set of identifiers, and

the means for storing the data blocks, the means for requesting the designated modifications, and the means for implementing the merge modification comprise one or more of a set of hardware circuits, a set of programmable hardware devices, and executable code stored on a set of non-transitory computer-readable storage media.

13. The computer-implemented storage system of claim 12 , further comprising:

means for requesting logical copy modifications to the logical-to-physical mappings; and

means for implementing a requested logical copy modification to the logical-to-physical mappings specifying a source identifier and a destination identifier by:

identifying a stored data block associated with the source identifier; and

modifying the logical-to-physical mappings to associate the identified stored data block with both of the source identifier and the destination identifier.

14. The computer-implemented storage system of claim 12 , further comprising:

means for requesting logical move modifications to the logical-to-physical mappings; and

means for implementing a requested logical move modification to the logical-to-physical mappings specifying a source identifier and a target identifier by:

determining an address for a stored data block associated with the source identifier by use of the logical-to-logical mappings; and

modifying the logical-to-physical mappings to associate the target identifier with the determined address and disassociate the source identifier from the determined address.

15. The computer-implemented storage system of claim 12 , further comprising:

means for requesting modifications to the logical-to-physical mappings pertaining to specified identifier ranges; and

means for implementing a modification to the logical-to-physical mappings pertaining to a specified source identifier range and a specified destination identifier range by:

identifying stored data blocks corresponding to the source identifier range; and

modifying the logical-to-physical mappings to associate each of the identified stored data blocks with a respective identifier of the destination identifier range.

16. The computer-implemented storage system of claim 15 , further comprising:

means for storing persistent metadata corresponding to the logical-to-physical mappings; and

means for implementing a requested modification to the logical-to-physical mappings by writing persistent metadata corresponding to the requested modification in a single, atomic write operation.

17. The computer-implemented storage system of claim 12 , wherein the means for requesting designated modifications to logical-to-physical mappings further comprises a library that is accessible to a user-level application operating on a computing device.

18. A method, comprising:

maintaining persistent metadata comprising mappings between data segments stored on a storage resource and identifiers of a front-end address space, the front-end address space used by clients to access the stored data segments through a data storage interface; and

providing a logical manipulation interface operating on a computing device to receive requests to manipulate specified mappings of the persistent metadata, wherein receiving a request comprises:

receiving a designation of a manipulation operation for the request, the manipulation operation being designated from a plurality of manipulation operations available to the clients through the logical manipulation interface, including a merge operation; and

specifying identifiers of the front-end address space for the designated manipulation operation;

receiving a first request that designates a merge operation, designates a merge policy among a plurality of merge policies specified by the client in the request, and specifies a first plurality of front-end identifiers and a second plurality of identifiers,

wherein:

implementing the first request comprises:

combining the first plurality of front-end identifiers with the second plurality of front-end identifiers, the combining comprising modifying the persistent metadata to associate each identifier of a third set of front-end identifiers with a stored data segment associated with an identifier of one of the first set of front-end identifiers and the second set of front-end identifiers in accordance with the designated merge policy, and

the merge policy specifies rules to resolve merge conflicts based on differences in logical address vectors for the first set of front-end identifiers and the second set of front-end identifiers.

19. The method of claim 18 , wherein maintaining the persistent metadata comprises appending entries to a log embodied on a persistent storage medium, the method further comprising:

receiving a second request, the second request specifying a source identifier and a destination identifier and designating one or more of a logical move operation and a logical copy operation,

wherein implementing the second request comprises:

identifying a stored data block mapped to the source identifier by the persistent metadata; and

appending an entry to the log, the entry configured to modify the persistent metadata to map the identified stored data segment to the destination identifier.

20. The method of claim 18 , further comprising:

implementing a clone operation in response to receiving a request specifying a source identifier and a destination identifier comprising:

determining that the persistent metadata maps the source identifier to a particular stored data segment;

modifying the persistent metadata to map the particular stored data segment to the destination identifier; and

retaining a mapping between the source identifier and the particular stored data segment in the modified persistent metadata, such that the modified persistent metadata maps the particular data segment to both of the source identifier and the destination identifier.

21. An apparatus, comprising:

a non-transitory, non-volatile storage medium;

a client configured to issue storage requests to a storage layer through a storage interface, the storage interface corresponding to a logical address space, wherein the storage requests comprise requests to store data associated with respective addresses of the logical address space on the non-volatile storage medium,

wherein:

the storage layer is configured to:

maintain translation data comprising logical-to-physical associations between data stored on the non-volatile storage medium and addresses of the logical address space, and

make logical manipulation primitives available to the client, each logical manipulation primitive configured for requesting implementation of designated manipulation operations pertaining to specified logical-to-physical associations of the translation data,

the client is configured to implement storage management operations by use of the logical manipulation primitives made available by the storage layer,

the storage layer is further configured to, in response to a client request to implement a merge operation specifying a first set of addresses and a second set of addresses, modify the translation data to merge logical-to-physical associations of the first set of addresses with logical-to-physical associations of the second set of addresses, each of the merged logical-to-physical associations being associated with stored data corresponding to a logical-to-physical association of one of the first set of addresses and the second set of addresses in accordance with a merge policy specified in the client request, and

the merge policy specifies rules to resolve merge conflicts based on differences in logical address vectors for the first set of addresses and the second set of addresses.

22. The apparatus of claim 21 , wherein the storage layer is further configured to implement the respective manipulation operations of the logical manipulation primitives without changing the data stored on the non-volatile storage medium.

23. The apparatus of claim 21 , wherein:

the logical manipulation primitives include a logical copy primitive for requesting implementation of logical copy operations;

the storage layer is further configured to implement a logical copy operation specifying a source address and a destination address by modifying the translation data to associate the destination address with stored data associated with the source address, such that the translation data associates the stored data with both the source address and the destination address; and

the client is further configured to manage snapshots pertaining to the logical address space by use of the logical copy primitive.

24. The apparatus of claim 21 , wherein:

the storage interface comprises a block storage interface; and

the storage layer exposes the logical manipulation primitives through a logical manipulation interface that is separate from the block storage interface.

Assignments (9)
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 31, 2024
From: SANDISK TECHNOLOGIES LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 069796/0423 →
CHANGE OF NAME Recorded May 25, 2016
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 038807/0807 →
CORRECTIVE ASSIGNMENT TO REMOVE APPL. NO'S 13/925,410 AND 61/663,464 PREVIOUSLY RECORDED AT REEL: 035168 FRAME: 0366. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Apr 30, 2015
From: FUSION-IO, LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 035603/0582 →
CORRECTIVE ASSIGNMENT TO REMOVE APPL. NO'S 13/925,410 AND 61/663,464 PREVIOUSLY RECORDED AT REEL: 034838 FRAME: 0091. ASSIGNOR(S) HEREBY CONFIRMS THE CHANGE OF NAME. Recorded Apr 30, 2015
From: FUSION-IO, INC
To: FUSION-IO, LLC
Reel/Frame 035603/0748 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 9, 2015
From: FUSION-IO, LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 035168/0366 →
CHANGE OF NAME Recorded Jan 28, 2015
From: FUSION-IO, INC
To: FUSION-IO, LLC
Reel/Frame 034838/0091 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 15, 2015
From: SUNDARARAMAN, SWAMINATHAN; TALAGALA, NISHA; WIPFEL, ROBERT; SUBRAMANIAN, SRIRAM; BOLKHOVITIN, VLADISLAV
To: FUSION-IO, INC.
Reel/Frame 034732/0522 →