# US 8,751,533 B1 · Method and system for transparently migrating storage objects between nodes in a clustered storage system

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

- Number: US 8,751,533 B1
- Document ID: US8751533B1
- Status: Granted
- Kind: B1
- Application number: 12/626,551
- Filed: 2009-11-25
- Granted: 2014-06-10
- Earliest claimed: 2009-11-25
- Assignees: NetApp, Inc.
- Applicants: Poonam Dhavale; Susan M. Coatney; Steven S. Watanabe
- Inventors: Poonam Dhavale; Susan M. Coatney; Steven S. Watanabe
- Web page: https://patentgrep.com/patent/US8751533B1

## CPC

- G06F 16/27: Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F 3/061: {Improving I/O performance}
- G06F 3/0647: {Migration mechanisms}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 7/00: Methods or arrangements for processing data by operating upon the order or content of the data handled (logic circuits H03K19/00)
- G06F 11/2033: {switching over of hardware resources}
- G06F 11/2092: {Techniques of failing over between control units}
- G06F 16/00: Information retrieval; Database structures therefor; File system structures therefor
- G06F 16/119: {Details of migration of file systems (migration mechanisms in storage systems G06F3/0647)}
- G06F 16/13: File access structures, e.g. distributed indices (arrangements of input from, or output to, record carriers G06F3/06)
- G06F 16/183: {Provision of network file services by network file servers, e.g. by using NFS, CIFS (network file access protocols H04L67/1097)}
- G06F 16/289: {Object oriented databases}
- G06F 16/951: Indexing; Web crawling techniques
- G06F 11/2005: {using redundant communication controllers}
- G06F 11/2046: {where the redundant components share persistent storage (G06F11/2043 takes precedence)}
- G06F 16/10: File systems; File servers
- G06F 16/182: Distributed file systems
- G06F 16/185: Hierarchical storage management [HSM] systems, e.g. file migration or policies thereof (details of archiving G06F16/11)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method and system are provided for transparently migrating a storage object (aggregate) between nodes by one of the nodes (source), automatically verifying another node (destination) is configured to service the aggregate, and changing ownership of the aggregate based on the verifying to enable servicing of the aggregate at the destination. A cluster manager receives an aggregate migration request and provides the request to the source owning the aggregate. The source verifies the destination is configured according to a predetermined configuration for servicing the aggregate. Based on the verifying, the source offlines the aggregate and updates ownership information of the aggregate, thereafter allowing the destination to online the aggregate. The cluster manager provides the updated ownership information to all nodes in the cluster, so an access request intended for the aggregate may be received by any node and forwarded to the destination using the updated ownership information.

## Claims

### Claim 1

A computer-implemented method comprising:
receiving, in a clustered storage system, a request to migrate a storage object from a source node servicing the storage object to a destination node;
verifying the destination node is configured to service the storage object, wherein the verifying further comprises attempting to access the storage object and determining the storage object is accessible if the attempted access is successful;
verifying the source node is configured to migrate the storage object, wherein verifying the source node comprises performing a veto check that determines whether active operations on they source node include one or more of fault tolerance, maintenance, and servicing of access requests;
offlining the storage object at the source node to prevent servicing of storage requests on the storage object;
updating ownership information of the storage object to indicate the destination node instead of the source node;
onlining the storage object at the destination node to resume servicing of storage requests on the storage object; and
routing storage requests for the storage object to the destination node instead of the source node as a result of updating the ownership information.

### Claim 2 (depends on 1)

A computer-implemented method of claim 1, the step of verifying the destination node comprising determining that the destination node is configured according to predetermined configuration.

### Claim 3 (depends on 2)

A computer-implemented method of claim 2, wherein the predetermined configuration is stored as a configuration table at the destination node, the configuration table including an operating characteristic of the destination node for servicing the storage object.

### Claim 4 (depends on 2)

A computer-implemented method of claim 2, wherein the predetermined configuration comprises the destination node operating in a cluster quorum.

### Claim 5 (depends on 1)

A computer-implemented method of claim 1, wherein performing the veto check comprises determining that a proper operating condition exists at the source node.

### Claim 6 (depends on 1)

A computer-implemented method of claim 1, wherein performing the veto check comprises determining migration of the storage object is permitted based on a state of the storage object.

### Claim 7 (depends on 1)

A computer-implemented method of claim 1, wherein the ownership information is stored in a metadata location of the storage object and updating ownership information comprises accessing the metadata location of the storage object.

### Claim 8 (depends on 1)

A computer-implemented method of claim 1, wherein the step of onlining comprises:
receiving, by the destination node, a notification for new ownership information of the storage object;
reading the new ownership information in a metadata location within the storage object;
updating a list of storage objects serviced by the destination node; and
providing the updated list to nodes in the clustered storage system.

### Claim 9 (depends on 1)

A computer-implemented method of claim 1, wherein the step of onlining comprises:
receiving, by the destination node, cached storage requests stored at the source node during the offlining; and
processing, by the destination node, the cached storage requests on the storage object.

### Claim 10 (depends on 1)

A computer-implemented method of claim 1, wherein the clustered storage system comprises a plurality of nodes, the plurality of nodes each comprising a D-module, an N-module, and an M-host.

### Claim 11 (depends on 10)

A computer-implemented method of claim 10, wherein the step of routing comprises:
receiving a new storage request for the storage object at the N-module of one of the plurality of nodes;
determining, by the N-module, the destination node owns the storage object using the updated ownership information; and
forwarding the new storage request to the D—module of the destination node for processing by the ID-module of the destination node.

### Claim 12

A computer-implemented method comprising:
determining, by a source node servicing a storage object in a clustered storage system, a destination node is configured to service the storage object in response to a request to migrate the storage object to the destination node, wherein the verifying further comprises attempting to access the storage object and determining the storage object is accessible if the attempted access is successful;
performing a veto check that determines whether active operations on the source node include one or more of fault tolerance, maintenance, and servicing of access requests;
preventing, by the source node, servicing of storage requests on the storage object while ownership information of the storage object is updated to indicated the destination node in accordance with the request;
synchronizing, by the source and destination nodes, updated ownership information to indicate ownership of the storage object by the destination node instead of the source node; and
resuming, by the destination node, servicing of storage requests on the storage object at a second node based on the synchronizing.

### Claim 13 (depends on 12)

A computer-implemented method of claim 12, the step of determining comprising the destination node confirming that the destination node is configured according to a predetermined configuration.

### Claim 14 (depends on 13)

A computer-implemented method of claim 13, wherein the predetermined configuration is stored as a configuration table at the destination node, the configuration table including an operating characteristic of the destination node for participating in a migration operation.

### Claim 15 (depends on 12)

A computer-implemented method of claim 12, wherein the ownership information is stored in a metadata location of the storage object and updating ownership information comprises accessing the metadata location of the storage object.

### Claim 16 (depends on 12)

A computer-implemented method of claim 12, further comprising:
storing, by the source node, the storage requests in memory during the preventing;
sending, by the source node, the stored storage requests to the destination after synchronizing the updated ownership information; and
processing, by the destination node, the stored storage requests on the storage object.

### Claim 17 (depends on 12)

A computer-implemented method of claim 12, wherein the step of synchronizing comprises:
receiving, by the destination node, a notification from the source node indicating an update to the ownership information;
reading the ownership information in a metadata location of the storage object;
updating a list of storage objects serviced by the destination node; and
providing the updated list to nodes in the clustered storage system.

### Claim 18

A data processing device comprising:
a processor coupled to a bus;
a memory coupled to the processor through the bus; and
instructions executed by the processor from the memory to cause the processor to:
receive, at a cluster manager, a request to migrate a storage object of a first node to a second node in a clustered storage system;
forward, to the first node, the request to migrate the storage object;
determine, by the cluster manager, the first node is configured to migrate the storage object and the second node is configured to service the storage object, and attempt to access the storage object and determine the storage object is accessible if the attempted access is successful;
perform a veto check that determine; whether active operations on the first node include one or more of fault tolerance, maintenance, and servicing of access requests;
update ownership information of the storage object to indicate the second node instead of the first node; and
prevent servicing of storage request; on the storage object at the first node when the second node is configured to service the storage object and for resuming servicing of storage requests on the storage object at the second node upon updating ownership information of the storage object.

### Claim 19 (depends on 18)

A data processing device of claim 18, further configured to update a first data structure of the first node and a second data structure of the second node, the first and second data structures accessed by respective first and second nodes for routing storage requests to the storage object.

### Claim 20 (depends on 18)

A data processing device of claim 18, further configured to update a centralized data structure for synchronizing routing information of the storage object at the first and second nodes.

### Claim 21 (depends on 18)

A data processing device of claim 18, wherein the determining on the second node by confirming the second node is configured according to a predetermined configuration.

### Claim 22 (depends on 21)

A data processing device of claim 21, wherein the predetermined configuration is stored as a configuration table at the second node, the configuration table including an operating characteristic of the second node for participating in a migration operation.

### Claim 23 (depends on 18)

A system data processing devise of claim 18, further configured to perform the determining of the first node by performing a veto check on the first node.

### Claim 24 (depends on 18)

A data processing device of claim 18, further configured to:
store, at the first node, the storage requests in memory during the preventing;
send the stored storage requests to the second node upon resuming servicing of storage requests at the second node; and
processing the stored storage requests on the storage object at the second node.

### Claim 25 (depends on 18)

A data processing device of claim 18, further configured to:
notify the second node of an update to the ownership information of the storage object;
reading the ownership information in a metadata location of the storage object;
updating a list of storage objects serviced by the second node; and
providing the updated list to nodes in the clustered storage system for use in routing a new storage request of the storage object to the second node.

### Claim 26 (depends on 18)

A data processing device of claim 18, further configured to:
generate, automatically by the cluster manager, the request to migrate a storage object based on monitoring events in the clustered storage system.
