IP Library › Granted Patent US 9,565,254
Granted Patent B2
US 9,565,254 · App. 14/453,813 · Granted Feb 7, 2017

Object location service for network-based content repository

Inventors: Sudhir Srinivasan (Acton, MA); Shankar Pasupathy (Milpitas, CA); Minglong Shao (San Jose, CA); Garth Goodson (Fremont, CA)
Assignee: NetApp, Inc.
H04L67/1097G06F17/30091
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,565,254
App. No.
14/453,813
Granted
Feb 7, 2017
Kind
B2
Abstract

A distributed object store in a network storage system uses location-independent global object identifiers (IDs) for stored data objects. The global object ID enables a data object to be seamlessly moved from one location to another without affecting clients of the storage system, i.e., “transparent migration”. The global object ID can be part of a multilevel object handle, which also can include a location ID indicating the specific location at which the data object is stored, and a policy ID identifying a set of data management policies associated with the data object. The policy ID may be associated with the data object by a client of the storage system, for example when the client creates the object, thus allowing “inline” policy management. An object location subsystem (OLS) can be used to locate an object when a client request does not contain a valid location ID for the object.

Claims (35)

1. A method comprising:

providing, by a computing device, a layer of indirection between storage locations of data objects and path names of the data objects so that the path names of the data objects are independent of the storage locations of the data objects;

receiving, by the computing device, a request from a client device to access a particular one of the data objects, the request comprising one of the path names of the particular data object;

obtaining, by the computing device, a location-independent object identifier of the particular data object from a path namespace using the path name of the particular data object, wherein the path namespace includes a mapping between the path names of the data objects and corresponding location-independent object identifiers of the data objects;

locating, by the computing device, the particular data object using the location-independent object identifier of the particular data object to look up a location identifier of the particular data object in a multi-level hierarchical mapping structure, wherein different portions of the location-independent object identifier are used to identify respective entries in different levels of the multi-level hierarchical mapping structure; and

accessing, by the computing device, the particular data object using the location identifier and returning a response to the client device, wherein the response is based on a type of the request to access the particular data object received from the client device.

2. The method of claim 1 , further comprising:

using, by the computing device, a first portion of the location-independent object identifier of the data object to identify a first entry in a first level of the multilevel hierarchical mapping structure;

using, by the computing device, a second portion of the location-independent object identifier of the data object to identify a second entry in a second level of the multilevel hierarchical mapping structure, the second entry being descendent from the first entry in the multilevel hierarchical mapping structure; and

retrieving, by the computing device, the location identifier of the particular data object from the second entry.

3. The method of claim 1 , wherein the data objects are sub-volume level data objects.

4. A computing device comprising:

a memory containing machine readable medium comprising machine executable code having stored thereon instructions for performing a method of facilitating an content repository object location service;

a processor coupled to the memory, the processor configured to execute the machine executable code to cause the processor to:

provide a layer of indirection between storage locations of data objects and path names of the data objects so that the path names of the data objects are independent of the storage locations of the data objects;

receive a request from a client device to access a one of the data objects, the request comprising one of the path names of the particular data object;

obtain a location-independent object identifier of the particular data object from a path namespace using the path name of the particular data object, wherein the path namespace includes a mapping between the path names of the data objects and corresponding location-independent object identifiers of the data objects;

locate the particular data object using the location-independent object identifier of the particular data object to look up a location identifier of the particular data object in a multi-level hierarchical mapping structure, wherein different portions of the location-independent object identifier are used to identify respective entries in different levels of the multi-level hierarchical mapping structure; and

access the particular data object using the location identifier and returning a response to the client device, wherein the response is based on a type of the request to access the particular data object received from the client device.

5. The computing device of claim 4 , wherein the processor is further configured to execute the machine executable code to cause the processor to

use a first portion of the location-independent object identifier of the data object to identify a first entry in a first level of the multilevel hierarchical mapping structure;

use a second portion of the location-independent object identifier of the data object to identify a second entry in a second level of the multilevel hierarchical mapping structure, the second entry being descendent from the first entry in the multilevel hierarchical mapping structure; and

retrieve the location identifier of the particular data object from the second entry.

6. The computing device of claim 4 , wherein the data objects are sub-volume level data objects.

7. A non-transitory machine readable medium having stored thereon instructions for performing a method comprising machine executable code which when executed by at least one machine, causes the machine to:

provide a layer of indirection between storage locations of data objects and path names of the data objects so that the path names of the data objects are independent of the storage locations of the data objects;

receive a request from a client device to access a particular one of the data objects, the request comprising one of the path names of the particular data object;

obtain a location-independent object identifier of the particular data object from a path namespace using the path name of the particular data object, wherein the path namespace includes a mapping between the path names of the data objects and corresponding location-independent object identifiers of the data objects;

locate the particular data object using the location-independent object identifier of the particular data object to look up a location identifier of the particular data object in a multi-level hierarchical mapping structure, wherein different portions of the location-independent object identifier are used to identify respective entries in different levels of the multi-level hierarchical mapping structure; and

access the particular data object using the location identifier and returning a response to the client device, wherein the response is based on a type of the request to access the particular data object received from the client device.

8. The non-transitory machine readable medium of claim 7 , wherein the machine executable code when executed by the at least one machine further causes the machine to:

use a first portion of the location-independent object identifier of the data object to identify a first entry in a first level of the multilevel hierarchical mapping structure;

use a second portion of the location-independent object identifier of the data object to identify a second entry in a second level of the multilevel hierarchical mapping structure, the second entry being descendent from the first entry in the multilevel hierarchical mapping structure; and

retrieve the location identifier of the particular data object from the second entry.

9. The non-transitory machine readable medium of claim 7 , wherein the data objects are sub-volume level data objects.

Continuity (2)
Continuation 12633745 · Dec 8, 2009
Related Publication 20140351388A1 · Nov 27, 2014