Claims
- 1. A method of providing multiple users with concurrent access to stored data, comprising the steps of:
- receiving a user request to modify a first data part, said first data part being stored in cache memory and corresponding to a first data item stored in nonvolatile memory;
- storing in cache memory a second data part comprising a modified version of the first data part; and
- after completion of the storing step, applying a predetermined set of merge rules to consolidate the second data part with other data parts contained in the cache memory that correspond to the first data item.
- 2. The method of claim 1, the step of applying the predetermined set of merge rules comprising the steps of:
- locating a partner data part contained in the cache memory that corresponds to the first data item; and
- determining whether the partner is undergoing destaging to nonvolatile storage or staging from nonvolatile storage, and if not, merging the partner with the modified data part.
- 3. The method of claim 1, further comprising the steps of:
- receiving a user request to destage the first data part by copying the first data part from cache memory to nonvolatile memory; and
- concurrently with the storing step, copying the data part from cache memory to nonvolatile memory.
- 4. The method of claim 3, wherein the copying step further includes steps of making the data part unavailable to other processes during said copying.
- 5. A method of writing data to storage, said method comprising the steps of:
- receiving a request to modify an original data item in a storage subsystem;
- staging the original data item to a cache memory to create a data part;
- initially assigning the data part a Primary-Write status;
- modifying the data part;
- changing the data part's status to Primary-Modified status; and
- applying predetermined merge rules to merge the data part with other data parts corresponding to the original data part.
- 6. A method of destaging data from a cache memory to storage, said method comprising the steps of:
- receiving a request to destage a data part from cache memory to storage, said data part corresponding to an original data part contained in nonvolatile storage;
- determining whether the data part is present in the cache memory, and if not staging the missing data part from storage to cache memory;
- initially assigning the data part in cache memory a Destage-Pending status;
- initiating destaging of the data part to storage and changing the data part's status to Primary-In-Destage;
- completing destaging of the data part to storage thereby updating the original data part in nonvolatile storage;
- applying predetermined merge rules to merge the data part with other data parts corresponding to the original data part; and
- changing the data part's status.
- 7. A method of staging data from storage to a cache memory, said method comprising the steps of:
- receiving a request to stage an original item of data from storage to cache memory;
- initiating staging of the original data item to cache memory to initiate creation of a data part, and during staging assigning the data part in cache memory a Stage status;
- completing staging of the data item from storage to cache memory to create the data item;
- applying predetermined merge rules to merge the data part with other data parts corresponding to the original data item; and
- changing the data part's status to Primary.
- 8. A method for a user to read data from a storage system, said method comprising the steps of:
- maintaining in cache memory multiple different data parts corresponding to original data items contained in nonvolatile storage in response to write, destage, and stage processes, and ranking all data parts corresponding to a common data item with respect to each other;
- receiving a request to read a data block including multiple data items contained in nonvolatile storage and identified by the request;
- for each identified data item, determining whether the identified data item has at least one corresponding data part present in the cache memory, and
- if so, providing an output of a highest ranked data part corresponding to the identified data item from cache memory to the user;
- otherwise, staging the data item from nonvolatile storage to cache memory and providing an output of the staged data item to the user;
- applying predetermined merge rules to merge data parts corresponding to the data block; and
- re-ranking the merged data parts.
- 9. A method of accessing data in a storage system, comprising the steps of:
- maintaining in cache memory multiple different parts corresponding to original data items contained in nonvolatile storage in response to write, destage, and stage processes, and ranking each data part corresponding to a common data item with respect to each other;
- receiving from a first host a request to modify a first original data item; said first original data item being represented in cache by a first data part;
- receiving from a second host a request to destage the first part;
- in response to the request to modify, recognizing that the first original data item is represented in cache memory by the first data part, and then initiating creation of a modified version of the first data part in cache memory separate from the first data item; and
- concurrently with the initiating step, initiating destaging of the first data part by commencing copying of the first data part to the storage.
- 10. A method of providing multiple processes with concurrent data access to stored data comprising the steps of:
- maintaining, multiple data items in a nonvolatile storage medium;
- in response to different storage operations, maintaining multiple data parts in a cache memory corresponding to each data item;
- maintaining, for each data item, a listing of ranked status for the corresponding data parts;
- receiving a request from one of the processes for access to a specified data item;
- consulting the listing to identify all parts corresponding to the requested data item;
- identifying in response to the request one of the data parts having a predetermined relationship in status to the other data parts; and
- providing the requesting user with access to the identified data part while making all remaining data parts corresponding to the specified data item available to other processes.
- 11. The method of claim 10, further comprising the steps of merging selected data parts corresponding to the specified data item.
- 12. The method of claim 10, the nonvolatile storage medium comprising a RAID array.
- 13. The method of claim 10, the nonvolatile storage medium comprising a hard disk drive.
- 14. The method of claim 10, the nonvolatile storage medium comprising at least one optical disk.
- 15. The method of claim 10, the nonvolatile storage medium comprising at least one magnetic recording disk.
- 16. The method of claim 10, the nonvolatile storage medium comprising at least one optical tape.
- 17. The method of claim 10, the nonvolatile storage medium comprising at least one magnetic recording tape.
- 18. A method of providing multiple processes with concurrent data access to stored data, comprising the steps of:
- maintaining a first data item in a nonvolatile storage medium;
- staging to the first item of data in a cache memory to create a first data part;
- creating a second data part in cache memory comprising a modified version of the first data part;
- in response to a destage request, initiating an operation to destage the second data part to the nonvolatile storage medium;
- during the destage operation, receiving a write request to modify the first data item, and in response to the request, creating a third data part in cache memory duplicating the second data part and then modifying the third data part in accordance with the write request.
- 19. A method of providing multiple processes with concurrent data access to stored data, comprising the steps of:
- maintaining in cache memory different data parts corresponding to an original data item contained in nonvolatile storage, and ranking the data parts relative to each other;
- in response to a destage request, initiating an operation to destage a first one of the data parts to the nonvolatile storage medium;
- during the destage operation, receiving a Read request to read the original data item; and
- in response to the Read request, identifying a highest ranked data part corresponding to the original data item and providing an output of the identified data part from the cache memory.
- 20. The method of claim 19, further comprising the steps of applying predetermined merge rules to merge all data parts corresponding to the original data item, and then re-ranking all data parts, including the merged data parts, that correspond to the original data item.
- 21. The method of claim 19, wherein the step of initiating an operation to destage the first data part further comprises the steps of temporarily changing the ranking of the first data part during the destage operation.
- 22. A method of providing multiple processes with concurrent data access to stored data, comprising the steps of:
- maintaining in cache memory different data parts corresponding to an original data item contained in nonvolatile storage, and ranking the data parts relative to each other;
- in response to a destage request, initiating an operation to destage a first one of the data parts to the nonvolatile storage medium;
- during the destage operation, receiving a Read request to read a data block including multiple items that are contained in nonvolatile storage and identified by the request, said data items including the original data item; and
- in response to the Read request, for each identified data item, determining whether the identified data item has at least one corresponding data part present in the cache memory, and
- if so, providing an output for each identified data item of a highest ranked corresponding data part from cache memory to the user;
- otherwise, staging the data item from nonvolatile storage to cache memory and providing an output of the staged data item.
- 23. The method of claim 22, further comprising the steps of applying predetermined merge rules to merge data parts corresponding to the data block, and re-ranking the merged data parts.
Parent Case Info
This application is a division of application Ser. No. 08/570,280 filed on Dec. 11, 1995 and now U.S. Pat. No. 5,774,682.
US Referenced Citations (8)
Divisions (1)
|
Number |
Date |
Country |
Parent |
570280 |
Dec 1995 |
|