Increased concurrency of an initialization process of multiple data storage units of a volume
AssigneeNetApp, Inc.
InventorsVishal Patil, Albert E. Yong
Life of this patent
Estimating the term…
Abstract
An apparatus and a method for initializing data storage units of a volume or multiple volumes in parallel for data access as part of an initialization process. The method may include assigning initialization tasks for each of the data storage units to the multiple worker threads, and each of the worker threads independently performing each of the initialization tasks. The apparatus may include a processor and a memory storing instructions which configure the processor to initialize an initialization process to initialize the data storage units of a volume or of multiple volumes in parallel for data access.
Claims31
A method of operation of a storage server, the method comprising:
- assigning, by an administration thread, a data storage unit of a plurality of data storage units to a respective independent worker thread of a plurality of independent worker threads;
- and
- initializing, by the respective independent worker thread, the data storage unit assigned to the respective independent worker thread, the plurality of independent worker threads initializing the plurality of data storage units in parallel, wherein initializing further comprises assigning the plurality of independent worker threads initialization tasks to register the plurality of data storage units for data access and assigning one of the plurality of independent worker threads to read a table of contents of a first volume,
- wherein assigning one of the plurality of independent worker threads to read the table of contents of the first volume comprises reading the table of contents of the first volume to obtain information for accessing the plurality of data storage units of the first volume.
A method, comprising:
- selecting a first volume of a plurality of volumes of a storage server, wherein the first volume contains a first plurality of data storage units;
- assigning, by a first volume administration thread, a data storage unit of the first plurality of data storage units in the first volume to a respective independent worker thread of a plurality of independent worker threads;
- initializing independently, by the respective first volume independent worker thread, the data storage unit assigned to the respective first volume independent worker thread, the plurality of first volume independent worker threads initializing the plurality of data storage units in the first volume in parallel, wherein initializing further comprises assigning the plurality of independent worker threads initialization tasks to register the plurality of data storage units for data access and assigning one of the first volume plurality of independent worker threads to read a table of contents of the first volume, wherein assigning one of the plurality of first volume independent worker threads to read the table of contents of the first volume comprises reading the table of contents of the first volume to obtain information for accessing the plurality of data storage units of the first volume;
- selecting a second volume of the plurality of volumes of the storage server, wherein the second volume contains a second plurality of data storage units are inaccessible to data access until initialization;
- assigning, by a second volume administration thread, each of the second plurality of data storage units in the second volume to a respective independent worker thread of a plurality of independent worker threads;
- and
- initializing independently, by a respective second volume independent worker thread, the data storage unit assigned to the respective second volume independent worker thread, the plurality of second volume independent worker threads initializing the plurality of data storage units in the second volume in parallel, wherein initializing further comprises assigning the plurality of independent worker threads initialization tasks to register the plurality of data storage units for data access and assigning one of the second volume plurality of independent worker threads to read a table of contents of the second volume, wherein assigning one of the plurality of second volume independent worker threads to read the table of contents of the second volume comprises reading the table of contents of the second volume to obtain information for accessing the plurality of data storage units of the second volume.
A storage server, comprising:
- a processor;
- a first communication interface through which to communicate with an array of storage devices;
- a second communication interface through which to communicate with a client of the storage server;
- a file system layer to manage a plurality of volumes, each volume having a plurality of data storage units, wherein the plurality of data storage units are inaccessible to data access until initialization;
- and
- a memory storing instructions which configure the processor to initialize the plurality of data storage units in parallel to make the plurality of data storage units accessible for data access in each of the plurality of volumes as part of an initialization process of the storage server, by
- assigning, by an administration thread, a data storage unit of the plurality of data storage units in a first volume to a respective independent worker thread from a plurality of independent worker threads;
- and
- initializing, by the respective independent worker thread, the data storage unit assigned to the respective independent worker thread, the plurality of independent worker threads initializing the plurality of data storage units in parallel, wherein initializing further comprises assigning the plurality of independent worker threads initialization tasks to register the plurality of data storage units for data access,
- wherein initializing further comprises sending either an asynchronous message or a synchronous message to the file system layer to request the file system layer to perform an initialization task.
A storage server, comprising:
- a processor;
- a first communication interface through which to communicate with an array of storage devices;
- a second communication interface through which to communicate with a client of the storage server;
- a file system managed by a file system layer, wherein the file system contains a plurality of volumes, each volume having a plurality of data storage units, wherein the plurality of data storage units are inaccessible to data access until initialization;
- a virtual disk subsystem coupled to the file system layer, wherein the virtual disk system comprises an administrative thread and a plurality of independent worker threads;
- and
- a memory storing instructions which configure the processor to initialize a plurality of data storage units of a volume in the file system and make the plurality of data storage units accessible for data access, by
- assigning, by the administration thread, a data storage unit of the plurality of data storage units in the volume to a independent worker thread from a plurality of independent worker threads;
- and
- initializing, by the respective independent worker thread, the data storage unit assigned to the respective independent worker thread, the plurality of independent worker threads initializing the plurality of data storage units in parallel, wherein initializing further comprises assigning the plurality of independent worker threads initialization tasks to register the plurality of data storage units for data access,
- wherein initializing further comprises sending either an asynchronous message or a synchronous message to the file system layer to request the file system layer to perform an initialization task.
Dependencies are inferred from the claim text.