IP Library Granted Patent US 8,046,422
Granted Patent B2
US 8,046,422 · App. 11/507,887 · Granted Oct 25, 2011

Automatic load spreading in a clustered network storage system

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 8,046,422
App. No.
11/507,887
Granted
Oct 25, 2011
Kind
B2
Abstract

A cache is used in a network storage system that includes a plurality of data storage nodes in a storage cluster, to automatically spread read and write access load, by a plurality of storage clients, for file system data and metadata, across the plurality of data storage nodes.

Claims (78)

1. A method comprising:

operating a clustered storage server system that includes a plurality of data storage nodes configured to operate as a cluster, each of the data storage nodes including an N-module, a D-module, and a separate one of a plurality of caches, and each of the data storage nodes being associated with a separate one of a plurality of nonvolatile mass storage subsystems, wherein operating the clustered storage system includes maintaining, in each of the N-modules, a data structure indicating a mapping between D-modules and data identifiers of data stored in the network storage system; and

using the plurality of caches to automatically spread read and write access load for file system data and metadata, by a plurality of storage clients, across the plurality of data storage nodes, including:

receiving, at one of the N-modules, a read request directed to a first dataset;

selecting, by said one of the N-modules, either a caching D-module for the first dataset or a read-write D-module for the first dataset, from which to access the first dataset, based on the mapping and an indication whether the first dataset has been updated at the read-write D-module within a threshold time;

directing, by said one of the N-modules, the read request to either said caching D-module or said read-write D-module selected in said selecting;

receiving, at one of the N-modules, a write request directed to a second dataset;

determining one of the D-modules at which to access the second dataset, based on the mapping and a data identifier indicated by the write request; and

directing the write request to said one of the D-modules determined in said determining.

2. A method as recited in claim 1 , further comprising:

operating a plurality of clustered storage server modules, wherein each of the caches is associated with a separate one of the storage server modules, and wherein each cache caches a copy of data managed by one or more of the storage server modules other than the storage module with which the cache is associated.

3. A method as recited in claim 1 , wherein using the plurality of caches comprises:

caching a plurality of copies of a dataset in different ones of the data storage nodes;

receiving from a client a data access request relating to the dataset; and

selecting one of the cached copies of the dataset from which to service the request, based on an update frequency of the dataset.

4. A method as recited in claim 3 , wherein:

caching a plurality of copies of the dataset comprises

storing a read-only copy of the dataset in at least one of the plurality of data storage nodes; and

storing a read-write copy of the dataset in only one of the plurality of data storage nodes.

5. A method as recited in claim 4 , wherein the data access request is a read request, and wherein selecting one of the cached copies of the dataset from which to service the request comprises:

allowing the read request to be serviced from one of the read-only copies if the dataset is not considered to be a frequently updated dataset; and

servicing the read request only from the read-write copy if the dataset is considered to be a frequently updated dataset.

6. A method as recited in claim 1 , wherein the cluster contains a plurality of volumes of data, the method further comprising:

selectively enabling or disabling use of the caches to automatically spread read and write access load, on a volume-by-volume basis.

7. A method as recited in claim 1 , wherein using the plurality of caches comprises write caching data in a volume, including:

creating only one read-write copy of each individual file of a plurality of individual files of the volume; and

assigning the read-write copy of each individual file to a particular one of the data storage nodes, such that the read-write copy of two or more individual files of the volume are assigned to different data storage nodes.

8. A method as recited in claim 7 , wherein using the plurality of caches further comprises read caching data in the volume, including:

creating at least one read-only copy of at least one file of the volume, and

for at least one file of the volume, assigning a read-only copy of the file to different ones of the data storage nodes.

9. A method as recited in claim 8 , wherein using the plurality of caches comprises:

creating only one read-write copy of each directory of the volume;

assigning the read-write copy of each directory of the volume to a particular one of the data storage nodes, such that the read-write copy of different directories of the volume are assigned to different data storage nodes;

creating at least one read-only copy of at least one directory of the volume, and

for at least one directory of the volume, assigning a read-only copy of the directory to different ones of the data storage nodes.

10. A method as recited in claim 7 , further comprising accessing said read-only copies according to an update frequency of the file.

11. A method as recited in claim 1 , further comprising:

caching portions of a file in different ones of the plurality of data storage nodes.

12. A method as recited in claim 1 , wherein using the plurality of caches comprises:

receiving a write request directed to a dataset stored in the cluster;

determining a hash value based on a dataset identifier associated with the write request; and

determining a particular one of the data storage nodes in which to access the dataset in response to the write request, according to the hash value.

13. A method as recited in claim 12 , wherein the plurality of data storage nodes contain only a single writeable copy of the dataset, and said determining a particular one of the data storage nodes in which to access the dataset comprises determining which of the data storage nodes contains the writeable copy of the dataset.

14. A method as recited in claim 1 , further comprising:

dividing a volume stored in the network storage system into a first plurality of subsets;

striping the first plurality of subsets across a first level of caches of the plurality of caches in the network storage system;

identifying a particular subset of the first plurality of subsets as being frequently accessed; and

in response to identifying the particular subset as being frequently accessed, dividing the particular subset into a second plurality of subsets and spreading the second plurality of subsets across a second level of caches in the network storage system.

15. A method comprising:

maintaining a plurality of data storage nodes in a clustered network storage server system, each data storage node including an N-module and a D-module;

maintaining, in the N-module of each data storage node, a data structure indicating a mapping between D-modules and data identifiers of data stored in the clustered network storage system; and

spreading read and write accesses across the plurality of data storage nodes, including:

receiving at one of the N-modules a write request directed to a first dataset;

determining one of the D-modules at which to access the first dataset, based on the mapping and a data identifier indicated by the write request;

directing the write request to said one of the D-modules;

receiving at one of the N-modules a read request directed to a second dataset;

selecting by said one of the N-module either a caching D-module for the second dataset or a read-write D-module for the second dataset, from which to access the second dataset, based on an indication whether the second dataset has been updated at the read-write D-module within a threshold time; and

directing, by said one of the N-modules, the read request to either said caching D-module or said read-write D-module selected in said selecting.

16. A method as recited in claim 15 , wherein said spreading further comprises:

directing all writes to a particular file to the same D-module, regardless of which N-module receives the write request to said file; and

directing reads of the file to a D-module selected based on an observed update frequency of the particular file.

17. A method as recited in claim 15 , further comprising:

selectively enabling or disabling said spreading on a volume-by-volume basis.

18. A clustered network storage system comprising:

a plurality of storage nodes configured to operate as a cluster, each of the data storage nodes including a mass storage subsystem and a D-module associated therewith to manage back-end storage functions for the mass storage subsystem, each of the D-modules to implement a cache for primary data stored in one or more of the mass storage subsystems on one or more of the storage nodes other than the mass storage subsystem on the storage node with which the D-module is associated; and

a plurality of N-modules, each to receive data access requests via a network from one or more of a plurality of clients, such that each data access request received by any of the N-modules is mapped to a particular one of the D-modules for servicing so as to spread file system data and metadata access load across the plurality of data storage nodes, the plurality of N-modules configured to:

receive a write request directed to a first dataset;

determine one of the D-modules at which to access the first dataset, based on the mapping and a data identifier indicated by the write request;

direct the write request to said determined one of the D-modules;

receive a read request directed to a second dataset;

select either a caching D-module for the first dataset or a read-write D-module for the first dataset, from which to access the first dataset, based on the mapping and an indication whether the first dataset has been updated at the read-write D-module within a threshold time; and

direct the read request to either said selected caching D-module or read-write D-module.

19. A system as recited in claim 18 , wherein each of the D-modules comprises a cache to store data of which a primary copy is stored in one or more of the mass storage subsystems other than the mass storage subsystem with which the D-module is associated.

20. A system as recited in claim 18 , wherein each of the N-modules maintains a mapping of data identifiers to D-modules, and each of the N-modules directs write requests which it receives to an appropriate one of the D-modules based on the mapping and a data identifier in each of the write requests.

21. A system as recited in claim 20 , wherein all write requests for any particular file are directed to the same D-module regardless of which N-module receives the write request.

22. A system as recited in claim 21 , wherein each of the N-modules directs any read requests that it receives for a particular file to a D-module selected based on an update frequency of the file.

23. A system as recited in claim 18 , wherein the plurality of data storage nodes collectively store a volume containing a plurality of individual files, including one or more read-only copies of each file of the volume and only one read-write copy of each file of the volume, wherein the one read-write copy of each file is stored in the cache in one of the data storage nodes, and wherein two or more read-only copies of a particular file of the volume are stored in the caches in different ones of the plurality of data storage nodes.

24. A system as recited in claim 18 , wherein two or more of the D-modules are configured as cluster-failover partners.

Assignments (4)
CORRECTIVE ASSIGNMENT TO CORRECT THE CORRECTIVE OF CORRECTIVE TO CORRECT ASSIGNOR NAME PREVIOUSLY RECORDED ON REEL 024261 FRAME 0251. ASSIGNOR(S) HEREBY CONFIRMS THE CHANGE OF NAME. Recorded Apr 21, 2010
From: NETWORK APPLIANCE, INC.
To: NETAPP, INC.
Reel/Frame 024264/0961 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NAME OF THE ASSIGNOR PREVIOUSLY RECORDED AT REEL 024223 FRAME 0673. ASSIGNOR(S) HEREBY CONFIRMS THE CHANGE OF NAME. Recorded Apr 20, 2010
From: NETWORK APPLICANCE, INC.
To: NETAPP, INC.
Reel/Frame 024261/0251 →
CHANGE OF NAME Recorded Apr 13, 2010
From: NETAPP, INC.
To: NETAPP, INC.
Reel/Frame 024223/0673 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 21, 2006
From: SUSARLA, SAI RAMA KRISHNA; EISLER, MICHAEL R.
To: NETWORK APPLIANCE, INC.
Reel/Frame 018228/0594 →
Continuity (1)
Related Publication 20080046538A1 · Feb 21, 2008