Making more active use of a secondary storage system
Techniques are disclosed which allow a secondary storage system to provide data to non-production workloads in conjunction with performing data backup and protection tasks. As disclosed, a secondary storage system exposes backup data stored by the secondary storage system to other workloads, such as test and development applications, data analytics, etc. These non-production workloads can run at the same time the secondary storage system provides backup services to a primary storage system. This consolidation eliminates the need for an enterprise to deploy separate storage clusters for analytics, test and development applications, etc. and eliminates unnecessary copies of data.
1. A system, comprising:
a processor configured to:
obtain a tree associated with requested data, wherein the tree associated with requested data corresponds to a state of data in a primary storage system at a given point in time;
traverse the tree to identify an inode associated with the requested data;
determine that a size of data attached to the inode is greater than or equal to a size limit, wherein the inode includes a reference to a binary large object;
search the binary large object to locate the requested data, wherein the binary large object is a tree structure that includes information about a location of the requested data; and
provide the requested data; and
a memory coupled to the processor and configured to provide the processor with instructions.
2. The system of claim 1 , wherein the processor is further configured to receive a request for the requested data, wherein the requested data is stored on a secondary storage system.
3. The system of claim 1 , wherein the processor is further configured to determine that the size of data attached to the inode is less than the size limit.
4. The system of claim 3 , wherein the processor is further configured to:
traverse the tree to a node of the tree storing the inode, wherein the node stores the requested data in the event the size of the data is less than the size limit; and
provide the requested data.
5. The system of claim 4 , wherein the requested data is stored as a value of a key-value pair.
6. The system of claim 1 , wherein the processor is further configured to obtain the binary large object.
7. The system of claim 1 , wherein the binary large object includes a node storing a brick.
8. The system of claim 7 , wherein the brick is comprised of one or more chunks.
9. The system of claim 8 , wherein the processor is further configured to locate a chunk of the one or more chunks associated with the requested data.
10. The system of claim 9 , wherein the processor is further configured to obtain a chunk identifier associated with the located chunk.
11. The system of claim 10 , wherein the processor is further configured to use the chunk identifier to locate the requested data.
12. The system of claim 1 , wherein the tree is comprised of a root node, a plurality of intermediate nodes, and a plurality of leaf nodes.
13. A method, comprising:
obtaining a tree associated with requested data, wherein the tree associated with requested data corresponds to a state of data in a primary storage system at a given point in time;
traversing the tree to identify an inode associated with the requested data;
determining that a size of data attached to the inode is greater than or equal to a size limit, wherein the inode includes a reference to a binary large object;
searching the binary large object to locate the requested data, wherein the binary large object is a tree structure that includes information about a location of the requested data; and
provide the requested data.
14. The method of claim 13 , further comprising receiving a request for the requested data, wherein the requested data is stored on a secondary storage system.
15. The method of claim 13 , further comprising obtaining the binary large object.
16. The method of claim 15 , wherein the binary large object includes a node storing a brick comprised of one or more chunks.
17. The method of claim 16 , further comprising locating a chunk of the one or more chunks associated with the requested data.
18. The method of claim 17 , further comprising obtaining a chunk identifier associated with the located chunk.
19. The method of claim 18 , further comprising using the chunk identifier to locate the requested data.
20. A computer program product, the computer program product being embodied in a non-transitory computer readable storage medium and comprising computer instructions for:
obtaining a tree associated with requested data, wherein the tree associated with requested data corresponds to a state of data in a primary storage system at a given point in time;
traversing the tree to identify an inode associated with the requested data;
determining that a size of data attached to the inode is greater than or equal to a size limit, wherein the inode includes a reference to a binary large object;
searching the binary large object to locate the requested data, wherein the binary large object is a tree structure that includes information about a location of the requested data; and
provide the requested data.