# US 11,113,235 B1 · Methods and apparatus for managing objects in a storage environment

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,113,235 B1
- Document ID: US11113235B1
- Status: Granted
- Kind: B1
- Application number: 16/029,867
- Filed: 2018-07-09
- Granted: 2021-09-07
- Earliest claimed: 2010-05-14
- Assignees: EMC IP Holding Company LLC
- Applicants: EMC IP Holding Company, LLC
- Inventors: Mark O'Connell
- Web page: https://patentgrep.com/patent/US11113235B1

## CPC

- G06F 16/10: File systems; File servers
- G06F 16/14: Details of searching files based on file metadata
- G06F 16/1873: {Versioning file systems, temporal file systems, e.g. file system supporting different historic versions of files}
- G06F 16/27: Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Some embodiments are directed to accessing a content unit stored in a storage environment that includes a plurality of storage clusters, wherein multiple versions of the content unit are stored on at least two different clusters in the storage environment. The storage environment and/or the requesting entity may identify the at least two storage clusters that store the content unit and select one of clusters as storing a valid version of the content unit.

## Claims

### Claim 1

A method of accessing a content unit stored in a storage environment that includes a plurality of storage clusters, wherein the content unit is stored on at least two of the plurality of storage clusters, the method comprising acts of:
receiving a request, from a host computer, to read the content unit, the request identifying the content unit via an object identifier assigned to the content unit;
causing each of the plurality of storage clusters to perform a search for the content unit;
determining, based on the searches performed for the plurality of storage clusters, whether a copy of the content unit to be read is stored on multiple clusters;
receiving, from each of the plurality of storage clusters that stores the content unit, a validity indicator for the content unit;
determining, based on the validity indicators, which one of the plurality of storage clusters that stores the content unit stores a valid version of the content unit; and
returning the valid version of the content unit in response to the request.

### Claim 2 (depends on 1)

The method of claim 1, wherein the act of receiving, from each of the plurality of storage clusters that stores the content unit, the validity indicator for the content unit further comprises:
receiving the content unit from each of the plurality of storage clusters that stores it; and
extracting the validity indicator from the content of the content unit received from each of the plurality of storage clusters.

### Claim 3 (depends on 2)

The method of claim 2, wherein:
the act of causing each of the plurality of storage clusters to perform a search for the content unit further comprises sending a read request for the content unit to each of the plurality of storage clusters; and
the content unit is identified in the storage environment via an object identifier assigned to the content unit, and the read request identifies the content unit via the object identifier.

### Claim 4 (depends on 3)

The method of claim 3, wherein the object identifier assigned to the content unit comprises a content address that is generated, at least in part, from at least a portion of the content of the content unit.

### Claim 5 (depends on 1)

The method of claim 1, wherein the act of receiving, from each of the plurality of storage clusters that stores the content unit, the validity indicator for the content unit further comprises:
receiving, from each of the plurality of storage clusters that stores the content unit, the validity indicator for the content unit, in response to the read request.

### Claim 6 (depends on 5)

The method of claim 5, wherein the validity indicator comprises a timestamp value used by each of the plurality of clusters to indicate a time at which the content unit was first stored in the cluster.

### Claim 7

At least one non-transitory computer readable medium encoded with instructions that when executed by one of a plurality of storage clusters in a storage environment, perform a method comprising acts of:
receiving a request, from a host computer, to read the content unit, the request identifying the content unit via an object identifier assigned to the content unit;
causing each of the plurality of storage clusters to perform a search for the content unit;
receiving, from each of the plurality of storage clusters that stores the content unit, a validity indicator for the content unit;
determining, based on the validity indicators, whether a valid copy of the content unit to be read is stored on more than one of the plurality of clusters;
selectively, based on determining that a valid copy of the content unit to be read is stored on more than one of the plurality of clusters, storing an indication for all but one of the more than one of the plurality of clusters, that the content unit to be read is invalid such that one of the plurality of storage clusters stores a valid version of the content unit; and
returning the valid version of the content unit in response to the request.

### Claim 8 (depends on 7)

The at least one non-transitory computer readable medium of claim 7, wherein the act of receiving, from each of the plurality of storage clusters that stores the content unit, the validity indicator for the content unit further comprises:
receiving the content unit from each of the plurality of storage clusters that stores it; and
extracting the validity indicator from the content of the content unit received from each of the plurality of storage clusters.

### Claim 9 (depends on 8)

The at least one non-transitory computer readable medium of claim 8, wherein the act of causing each of the plurality of storage clusters to perform a search for the content unit further comprises:
sending a read request for the content unit to each of the plurality of storage clusters.

### Claim 10 (depends on 9)

The at least one non-transitory computer readable medium of claim 9, wherein the content unit is identified in the storage environment via an object identifier assigned to the content unit, and the read request identifies the content unit via the object identifier.

### Claim 11 (depends on 10)

The at least one non-transitory computer readable medium of claim 10, wherein the object identifier assigned to the content unit comprises a content address that is generated, at least in part, from at least a portion of the content of the content unit.

### Claim 12 (depends on 9)

The at least one non-transitory computer readable medium of claim 9, wherein the act of receiving, from each of the plurality of storage clusters that stores the content unit, the validity indicator for the content unit further comprises:
receiving, from each of the plurality of storage clusters that stores the content unit, the validity indicator for the content unit, in response to the read request.

### Claim 13 (depends on 12)

The at least one non-transitory computer-readable medium of claim 12, wherein the validity indicator comprises a timestamp value used by each of the plurality of clusters to indicate a time at which the content unit was first stored in the cluster.

### Claim 14

A computer system that operates as one of a plurality of storage clusters in a storage environment, the storage cluster comprising:
at least one memory that stores processor-executable instructions for accessing a content unit, wherein the content unit is stored on at least two of the plurality of storage clusters; and
at least one microprocessor, coupled to the at least one memory, that executes the processor-executable instructions to:
initiate an operation to modify the content unit;
cause each of the plurality of storage clusters to perform a search for the content unit;
selectively, based on the content unit being stored on at least two of the plurality of storage clusters:
identify, based on the search, the at least two storage clusters that store the content unit;
select one of the at least two of the plurality of storage clusters as storing a valid version of the content unit;
perform the operation to modify the content unit on the valid version of the content unit stored by the selected one of the plurality of storage clusters; and
store a status content unit on each of the at least two clusters that does not already store a status content unit for the content unit, wherein the status content unit indicates which of the at least two clusters stores the valid version of the content unit.

### Claim 15 (depends on 14)

The computer system of claim 14, wherein the at least one microprocessor executes the processor-executable instructions to cause each of the plurality of storage clusters to perform a search for the content unit by:
sending a read request for the content unit to each of the plurality of storage clusters.

### Claim 16 (depends on 15)

The computer system of claim 15, wherein the content unit is identified in the storage environment via an object identifier assigned to the content unit, and the read request identifies the content unit via the object identifier.

### Claim 17 (depends on 16)

The computer system of claim 16, wherein the object identifier assigned to the content unit comprises a content address that is generated, at least in part, from at least a portion of the content of the content unit.

### Claim 18 (depends on 14)

The computer system of claim 14, wherein the status content unit on each of the at least two clusters indicates which of the plurality of clusters store an invalid version of the content unit.

### Claim 19 (depends on 14)

The computer system of claim 14, wherein the at least one microprocessor selects one of the at least two of the plurality of storage clusters as storing a valid version of the content unit based, at least in validity information obtained from each of the plurality of storage clusters that stores the content unit.

### Claim 20 (depends on 14)

The computer system of claim 14, wherein the selected one of the at least two of the plurality of storage clusters storing a valid version of the content unit is selected based on which of the at least two storage clusters has the most available storage capacity.
