IP Library Granted Patent US 7,657,537
Granted Patent B1
US 7,657,537 · App. 11/119,166 · Granted Feb 2, 2010

System and method for specifying batch execution ordering of requests in a storage system cluster

Assignee: NetApp, Inc.
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 7,657,537
App. No.
11/119,166
Granted
Feb 2, 2010
Kind
B1
Abstract

A system and method specifies batch execution ordering of requests in a cluster of storage systems or nodes. Each node is generally organized as a network element and a disk element. One or more sessions are established between the elements in the cluster. Each session comprises a plurality of channels disposed over connections, wherein each channel enables multiple requests to be sent over a connection. Each request is identified by a unique identifier (“request id”) that is generally defined as the combination of a channel number and a sequence number. The request id is extended to include a batch number that provides an execution ordering directive within a channel. All requests with the same batch number in a channel can be executed in arbitrary order or concurrently. Ordering is imposed only when the batch number changes, e.g., increases. Although more than one request in a channel can have the same batch number, all requests with the same batch number are executed before any request with a higher batch number.

Claims (66)

1. A method for operating a computer data storage system, comprising:

connecting a plurality of network interfaces with a computer network to exchange messages with one or more clients connected to the computer network;

connecting a plurality of interfaces to data storage devices to a plurality of data storage devices;

connecting both the plurality of network interfaces and the plurality of interfaces to data storage devices to a cluster switching fabric;

establishing, through the cluster switching fabric, a communications session between a selected network interface of the plurality of network interfaces and a selected interface to a data storage device of the plurality of interfaces to data storage devices;

establishing for the session a plurality of connections through the cluster switching fabric between the selected network interface and the selected interface to a data storage device, each connection having established a conventional transport protocol;

receiving a plurality of requests from a client of the one or more clients, each request of the plurality of requests having assigned a unique sequence number, each request being an input/output request to a selected data storage device connected to the selected interface to a data storage device;

dividing the plurality of requests into a plurality of subsets of requests;

assigning a batch number to each subset of requests, the batch numbers increasing monotonically so that each subset of requests is assigned a unique batch number;

executing a first subset of requests in arbitrary order over the plurality of connections in response to a first batch number; and

executing a second subset of requests in response to a second batch number after execution of all of the first subset of requests have completed.

2. The method as in claim 1 , further comprising:

using a TCP/IP protocol for the conventional transport protocol.

3. The method as in claim 1 , further comprising:

using a writable storage device media as a storage device of the plurality of storage devices.

4. The method as in claim 1 , further comprising:

using an optical writable storage device as a storage device of the plurality of storage devices.

5. The method as in claim 1 , further comprising:

using a DVD writable storage device as a storage device of the plurality of storage devices.

6. The method as in claim 1 , further comprising:

using an electronic random access memory as a storage device of the plurality of storage devices.

7. The method as in claim 1 , further comprising:

using a micro-electro mechanical memory as a storage device of the plurality of storage devices.

8. The method as in claim 1 , further comprising:

using a magnetic disk as a storage device of the plurality of storage devices.

9. The method as in claim 1 , further comprising:

using a RAID array of magnetic disks as a storage device of the plurality of storage devices.

10. A computer data storage system, comprising:

a plurality of network interfaces connected with a computer network to exchange messages with one or more clients connected to the computer network;

a plurality of interfaces to data storage devices connected to a plurality of data storage devices;

a cluster switching fabric connected to both the plurality of network interfaces and the plurality of interfaces to data storage devices;

an operating system to establish, through the cluster switching fabric, a communications session between a selected network interface of the plurality of network interfaces and a selected interface to a data storage device of the plurality of interfaces to data storage devices;

the operating system to establish for the session a plurality of connections through the cluster switching fabric between the selected network interface and the selected interface to a data storage device, each connection having established a conventional transport protocol;

a selected network interface of the plurality of network interfaces to receive a plurality of requests from a client of the one or more clients, each request of the plurality of requests having assigned a unique sequence number, each request being an input/output request to a selected data storage device connected to the selected interface to a data storage device;

a first process to divide the plurality of requests into a plurality of subsets of requests;

a second process to assign a batch number to each subset of requests the batch numbers increasing monotonically so that each subset of requests is assigned a unique batch number;

the operating system to execute a first subset of requests in arbitrary order over the plurality of connections in response to a first batch number; and

the operating system to execute a second subset of requests in response to a second batch number after execution of all of the first subset of requests have completed.

11. The data storage system as in claim 10 , further comprising:

a TCP/IP protocol used for the conventional transport protocol.

12. The data storage system as in claim 10 , further comprising:

a writable storage device media is a storage device of the plurality of storage devices.

13. The data storage system as in claim 10 , further comprising:

an optical writable storage device is a storage device of the plurality of storage devices.

14. The data storage system as in claim 10 , further comprising:

a DVD writable storage device is a storage device of the plurality of storage devices.

15. The data storage system as in claim 10 , further comprising:

an electronic random access memory is a storage device of the plurality of storage devices.

16. The data storage system as in claim 10 , further comprising:

a micro-electro mechanical memory is a storage device of the plurality of storage devices.

17. The data storage system as in claim 10 , further comprising:

a magnetic disk is a storage device of the plurality of storage devices.

18. The data storage system as in claim 10 , further comprising:

a RAID array of magnetic disks is a storage device of the plurality of storage devices.

19. A computer readable storage media, comprising:

said computer readable storage media containing instructions for execution on a processor for a method of operating a computer data storage system, having,

connecting a plurality of network interfaces with a computer network to exchange messages with one or more clients connected to the computer network;

connecting a plurality of interfaces to data storage devices to a plurality of data storage devices;

connecting both the plurality of network interfaces and the plurality of interfaces to data storage devices to a cluster switching fabric;

establishing, through the cluster switching fabric, a communications session between a selected network interface of the plurality of network interfaces and a selected interface to a data storage device of the plurality of interfaces to data storage devices;

establishing for the session a plurality of connections through the cluster switching fabric between the selected network interface and the selected interface to a data storage device, each connection having established a conventional transport protocol;

receiving a plurality of requests from a client of the one or more clients, each request of the plurality of requests having assigned a unique sequence number, each request being an input/output request to a selected data storage device connected to the selected interface to a data storage device;

dividing the plurality of requests into a plurality of subsets of requests;

assigning a batch number to each subset of requests the batch numbers increasing monotonically so that each subset of requests is assigned a unique batch number;

executing a first subset of requests in arbitrary order over the plurality of connections in response to a first batch group number; and

executing a second subset of requests in response to a second batch number after execution of all of the first subset of requests have completed.

Assignments (2)
CHANGE OF NAME Recorded Nov 15, 2010
From: NETWORK APPLIANCE, INC.
To: NETAPP, INC.
Reel/Frame 025360/0245 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 29, 2005
From: CORBETT, PETER F.
To: NETWORK APPLIANCE, INC.
Reel/Frame 016521/0312 →