# US 10,482,066 B2 · Gransets for managing consistency groups of dispersed storage items

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

- Number: US 10,482,066 B2
- Document ID: US10482066B2
- Status: Granted
- Kind: B2
- Application number: 15/140,992
- Filed: 2016-04-28
- Published: 2017-11-02
- Granted: 2019-11-19
- Earliest claimed: 2016-04-28
- Assignees: NetApp, Inc.
- Applicants: NetApp Inc.
- Inventors: Devang Kundanlal Shah; Dipankar Roy; Krishnaveni Budati; Kai Tan; Pranab Patnaik; Akhil Kaushik
- Web page: https://patentgrep.com/patent/US10482066B2

## CPC

- G06F 16/178: Techniques for file synchronisation in file systems
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/0605: {by facilitating the interaction with a user or administrator}
- G06F 3/065: {Replication mechanisms}
- G06F 3/0655: {Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices}
- G06F 3/0665: {at area level, e.g. provisioning of virtual or logical volumes}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 3/0679: {Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]}
- G06F 16/122: {using management policies (point-in-time backing up or restoration of persistent data G06F11/1446; file migration policies for HSM systems G06F16/185)}
- G06F 16/128: {Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion (error detection or correction of the data by redundancy in operations or in hardware G06F11/14, G06F11/16)}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

One or more techniques and/or computing devices are provided for managing an arbitrary set of storage items using a granset. For example, a storage controller may host a plurality of storage items and/or logical unit numbers (LUNs). A subset of the storage items are grouped into a consistency group. A granset is created for tracking, managing, and/or providing access to the storage items within the consistency group. For example, the granset comprises application programming interfaces (APIs) and/or properties used to provide certain levels of access to the storage items (e.g., read access, write access, no access), redirect operations to access either data of an active file system or to a snapshot, fence certain operations (e.g., rename and delete operations), and/or other properties that apply to each storage item within the consistency group. Thus, the granset provides a persistent on-disk layout used to manage an arbitrary set of storage items.

## Claims

### Claim 1

A method comprising:
maintaining a first granset for a set of storage items of a consistency group and a second granset for a set of mirrored storage items maintained as replicas of the set of storage items, the first granset specifying a first access type for the set of storage items and the second granset specifying a second access type for the set of mirrored storage items, wherein identifiers of the set of storage items are mapped to a granset identifier of the first granset; and
processing operations targeting the set of storage items by filtering operations requesting access different than the first access type that is allowed and processing operations targeting the set of mirrored storage items by filtering operations requesting access different than the second access type that is allowed, wherein an operation targeting the set of storage items is processed using data from a snapshot based upon the first granset comprising a redirection property specifying that operations targeting the set of storage items are to be redirected to the snapshot of the consistency group.

### Claim 2 (depends on 1)

The method of claim 1, comprising:
atomically creating the first granset with the first access type.

### Claim 3 (depends on 1)

The method of claim 1, comprising:
negotiating a generation number between a file system layer of a first storage controller and a replication layer used to replicate data of the set of storage items to the set of mirrored storage items, wherein incoming operations labeled with the generation number are executed and incoming operations without the generation number are rejected.

### Claim 4 (depends on 1)

The method of claim 1, comprising:
atomically creating the first granset with the first access type, a first state, a first fencing property, a first redirection property, and the granset identifier, wherein the granset identifier is atomically assigned to inodes of storage items within the set of storage items.

### Claim 5 (depends on 1)

The method of claim 1, comprising:
storing a first fencing property within the first granset, the first fencing property specifying types of operations that are to be fenced from being implemented upon storage items within the set of storage items.

### Claim 6 (depends on 1)

The method of claim 1, comprising:
utilizing the first granset to enumerate the storage items within the set of storage items as being assigned to the consistency group.

### Claim 7 (depends on 1)

The method of claim 1, comprising:
modifying the second access type from a read only property to a read and write property for the set of mirrored storage items based upon identifying a failover from a first storage controller hosting the set of storage items to a second storage controller hosting the set of mirrored storage items for providing clients with failover access to the set of mirrored storage items.

### Claim 8 (depends on 7)

The method of claim 7, comprising:
performing a resynchronization to update the set of storage items using updated data of the set of mirrored storage items based upon identifying a failback from the second storage controller to the first storage controller.

### Claim 9 (depends on 8)

The method of claim 8, comprising:
setting the first access type to the read and write property and clearing a redirection property to allow I/O access to an active file system and setting the second access type to the read only property and setting a second redirection property of the second granset to redirect I/O to a target snapshot based upon the resynchronization completing.

### Claim 10 (depends on 1)

The method of claim 1, wherein the set of storage items are stored across multiple volumes.

### Claim 11 (depends on 1)

The method of claim 1, comprising:
utilizing the first granset to perform an item move on demand operation to move a group of storage items within the set of storage items from a first volume to a second volume using an I/O fence for the group of storage items.

### Claim 12 (depends on 1)

The method of claim 1, wherein the set of storage items are stored across first storage, hosted by a first storage controller, and second storage hosted by a third storage controller.

### Claim 13 (depends on 1)

The method of claim 1, comprising:
updating the first granset to include a storage item based upon a request to add the storage item to the set of storage items, wherein an inode of the storage item is modified to comprise the granset identifier.

### Claim 14 (depends on 1)

The method of claim 1, comprising:
updating the first granset to exclude a storage item based upon a request to delete the storage item from the consistency group, wherein an inode of the storage item is updated to remove the granset identifier of the first granset used to identify the consistency group.

### Claim 15 (depends on 1)

The method of claim 1, comprising:
modifying at least one of a fencing property, a redirection property, a state property, and the first access type of the first granset based upon a modify command.

### Claim 16 (depends on 1)

The method of claim 1, comprising:
maintaining a hash table mapping unique identifiers of storage items within the set of storage items of the consistency group to the granset identifier of the first granset.

### Claim 17 (depends on 1)

The method of claim 1, comprising:
maintaining a granset metafile to store a plurality of gransets, the granset metafile comprising granset property blocks corresponding to properties within gransets and storage item blocks corresponding to storage items within consistency groups.

### Claim 18 (depends on 1)

The method of claim 1, comprising:
utilizing the first granset to perform an item restore upon a group of storage items within the set of storage items using an I/O fence for the group of storage items.

### Claim 19

A non-transitory machine readable medium comprising machine executable code which when executed by a machine, causes the machine to:
maintain a first granset for a set of storage items of a consistency group and a second granset for a set of mirrored storage items maintained as replicas of the set of storage items, the first granset specifying a first access type for the set of storage items and the second granset specifying a second access type for the set of mirrored storage items, wherein identifiers of the set of storage items are mapped to a granset identifier of the first granset;
negotiating a generation number between a file system layer of a first storage controller and a replication layer used to replicate data of the set of storage items to the set of mirrored storage items, wherein incoming operations labeled with the generation number are executed and incoming operations without the generation number are rejected; and
process operations targeting the set of storage items by filtering operations requesting access different than the first access type that is allowed and processing operations targeting the set of mirrored storage items by filtering operations requesting access different than the second access type that is allowed.

### Claim 20

A computing device comprising:
a memory comprising machine executable code for performing a method; and
a processor coupled to the memory, the processor configured to execute the machine executable code to cause the processor to:
maintain a first granset for a set of storage items of a consistency group and a second granset for a set of mirrored storage items maintained as replicas of the set of storage items, the first granset specifying a first access type for the set of storage items and the second granset specifying a second access type for the set of mirrored storage items, wherein identifiers of the set of storage items are mapped to a granset identifier of the first granset, wherein the first granset is atomically created with the first access type, a first state, a first fencing property, a first redirection property, and the granset identifier atomically assigned to inodes of storage items within the set of storage items; and
process operations targeting the set of storage items by filtering operations requesting access different than the first access type that is allowed and processing operations targeting the set of mirrored storage items by filtering operations requesting access different than the second access type that is allowed.
