Techniques for efficient mass storage layout optimization
AssigneeNetwork Appliance, Inc.
InventorRobert L. Fair
Life of this patent
Estimating the term…
Abstract
A data storage system can automatically improve the layout of data blocks on a mass storage subsystem by collecting optimization information during both read and write activities, then processing the optimization information to limit the impact of optimization activities on the system's response to client requests. Processing read-path optimization information and write-path optimization information through shared rate-limiting logic simplifies system administration and promotes phased implementation, which can reduce the difficulty of developing a self-optimizing storage server.
Claims22
A method comprising:
- identifying, by a filesystem process in a data storage server, a first plurality of optimizable data blocks during a read operation on a related data block;
- identifying, by the filesystem process, a second plurality of optimizable data blocks during a write operation on a related data block;
- posting, by the filesystem process, a plurality of read requests to a queue, the read requests prepared by the filesystem process to read a third plurality of data blocks into a cache memory from a mass storage device, the third plurality of data blocks comprising a subset of the first plurality of optimizable data blocks identified during the read operation and a subset of the second plurality of optimizable data blocks identified during the write operation;
- retrieving, by a reading process in the data storage server, a read request from the queue;
- delivering, by the reading process, data blocks corresponding to the retrieved read request to the cache memory;
- and
- writing, by a writing process in the data storage server, a fourth plurality of data blocks to a mass storage device as a result of a cache flush, the fourth plurality of data blocks comprising a subset of the third plurality of data blocks that had been delivered to the cache memory prior to the cache flush, wherein if fewer than all of the second plurality of data blocks have been delivered to the cache memory before the cache flush, then the fourth plurality of data blocks does not include any of the second plurality of data blocks.
A non-transitory computer-readable medium having executable instructions to cause a processor to perform operations comprising:
- identifying, by a filesystem process in a data storage server, a first plurality of optimizable data blocks during a read operation on a related data block;
- identifying, by the filesystem process, a second plurality of optimizable data blocks during a write operation on a related data block;
- posting, by the filesystem process, a plurality of read requests to a queue, the read requests prepared by the filesystem process to read a third plurality of data blocks into a cache memory from a mass storage device, the third plurality of data blocks comprising a subset of the first plurality of optimizable data blocks and a subset of the second plurality of optimizable data blocks identified during the write operation;
- retrieving, by a reading process in the data storage server, a read request from the queue;
- delivering, by the reading process, data blocks corresponding to the retrieved read request to the cache memory;
- and
- writing, by a writing process in the data storage server, a fourth plurality of data blocks to the mass storage device as a result of a cache flush, the fourth plurality of data blocks comprising a subset of the third plurality of data blocks that had been delivered to the cache memory prior to the cache flush, wherein if fewer than all of the second plurality of data blocks have been delivered to the cache memory before the cache flush, then the fourth plurality of data blocks does not include any of the second plurality of data blocks.
A system comprising:
- a data storage server comprising a cache memory, the data storage server operative to:
- identify, by a filesystem process in the data storage server, a first plurality of optimizable data blocks during a read operation on a related data block;
- identify, by the filesystem process, a second plurality of optimizable data blocks during a write operation on a related data block;
- post, by the filesystem process, a plurality of read requests to a queue, the read requests prepared by the filesystem process to read a third plurality of data blocks into a cache memory from a mass storage device, the third plurality of data blocks comprising a subset of the first plurality of optimizable data blocks identified during the read operation and a subset of the second plurality of optimizable data blocks identified during the write operation;
- retrieve, by a reading process in the data storage server, a read request from the queue;
- deliver, by the reading process, data blocks corresponding to the retrieved read request to the cache memory;
- and
- write, by a writing process in the data storage server, a fourth plurality of data blocks to a mass storage device as a result of a cache flush, the fourth plurality of data blocks comprising a subset of the third plurality of data blocks that had been delivered to the cache memory prior to the cache flush, wherein if fewer than all of the second plurality of data blocks have been delivered to the cache memory before the cache flush, then the fourth plurality of data blocks does not include any of the second plurality of data blocks.
A method, comprising:
- identifying, by a data storage server, in response to receiving a read request for a first block, a first set of optimizable data blocks logically related to the first block;
- identifying, by the data storage server, in response to receiving a write request for a second block, a second set of optimizable data blocks logically related to the second block;
- loading a third set of blocks from a mass storage device into a cache memory, wherein the third set of blocks comprises a subset of the first set of optimizable data blocks and a subset of the second set of optimizable data blocks;
- and
- writing a plurality of data blocks to the mass storage device as a result of a cache flush, wherein the plurality of data blocks comprise a subset of the third set of blocks, and wherein the plurality of blocks does not include any of the second set of optimizable data blocks unless all of the second set of optimizable data blocks have been loaded into the cache memory at the time of the cache flush.
Dependencies are inferred from the claim text.