Method for virtual to physical mapping in a mapped compressed virtual storage subsystem
First Claim
1. In a virtual mass storage subsystem having a plurality of physical storage blocks, a method for storing virtual clusters received from a host computer system in said physical storage blocks of said mass storage subsystem, said method comprising the steps of:
- (a) mapping a virtual cluster number associated with a received virtual cluster to a first physical storage block number corresponding to a first physical storage block of a plurality of physical storage blocks corresponding to a physical cluster, wherein said mapping consists essentially of an arithmetic calculation devoid of memory table lookup functions;
(b) compressing said virtual cluster to generate a compressed physical cluster,(c) identifying available physical storage blocks of said plurality of physical storage blocks in said physical cluster;
(d) storing a portion of said compressed physical cluster in said available physical storage blocks of said physical cluster wherein said available physical storage blocks includes said first physical storage block;
(e) determining whether a remaining portion of said compressed physical cluster can not be stored in said available physical storage blocks; and
(f) storing said remaining portion in additional physical storage blocks of another physical cluster.
5 Assignments
0 Petitions
Accused Products
Abstract
A method and corresponding controller apparatus for creating, updating and maintaining mapping information in a virtual mass storage subsystem. A request to manipulate a virtual block or cluster identifies a particular virtual block number. The virtual block number is mapped to a first physical block number by a direct calculation. A header data structure contained in the first physical block contains mapping information to locate other physical blocks associated with the virtual cluster. In addition to the header data structure, the first physical block contains a portion of the stored data for the corresponding virtual cluster. Additional physical blocks which stored the data of the virtual cluster are located from the mapping information in the header of the first physical block. The methods of the present invention provide improved performance and reduced buffer memory requirements in the virtual mass storage controller circuits of the subsystem as compared to prior approaches.
203 Citations
28 Claims
-
1. In a virtual mass storage subsystem having a plurality of physical storage blocks, a method for storing virtual clusters received from a host computer system in said physical storage blocks of said mass storage subsystem, said method comprising the steps of:
-
(a) mapping a virtual cluster number associated with a received virtual cluster to a first physical storage block number corresponding to a first physical storage block of a plurality of physical storage blocks corresponding to a physical cluster, wherein said mapping consists essentially of an arithmetic calculation devoid of memory table lookup functions; (b) compressing said virtual cluster to generate a compressed physical cluster, (c) identifying available physical storage blocks of said plurality of physical storage blocks in said physical cluster; (d) storing a portion of said compressed physical cluster in said available physical storage blocks of said physical cluster wherein said available physical storage blocks includes said first physical storage block; (e) determining whether a remaining portion of said compressed physical cluster can not be stored in said available physical storage blocks; and (f) storing said remaining portion in additional physical storage blocks of another physical cluster. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. In a virtual mass storage subsystem having a plurality of physical storage blocks, a method for retrieving virtual clusters previously stored in the physical storage blocks of said mass storage subsystem, said method comprising the steps of:
-
(a) receiving a request from a host computer system to retrieve a virtual cluster identified by a virtual cluster number; (b) mapping said virtual cluster number to a first physical storage block number corresponding to a first physical storage block at which said virtual cluster was previously stored, wherein said mapping consists essentially of an arithmetic calculation to the exclusion of memory table lookup functions; (c) reading the physical cluster containing said first physical storage block to retrieve a header data structure contained in said first physical storage block and having information regarding all physical storage blocks corresponding to said virtual cluster in said physical cluster; (d) determining whether additional physical storage blocks need be read to retrieve the virtual cluster requested by said host computer system; (e) skipping to step (h) responsive to a determination by step (d) that no additional physical storage blocks need be read; f) determining, from said header data structure, additional physical storage block numbers corresponding to additional physical storage blocks used to store said virtual cluster and said header data structure; (g) reading said additional physical storage blocks used to store said virtual cluster; (h) decompressing compressed data contained in the read physical storage blocks to regenerate said virtual cluster; and (i) returning said virtual cluster to said host computer system. - View Dependent Claims (12, 13, 14, 15)
-
-
16. A compressed virtual storage subsystem for storage of a virtual cluster in said compressed virtual storage subsystem, said subsystem comprising:
-
at least one storage device containing a plurality of physical storage clusters, each of said plurality of physical storage clusters including a plurality of physical storage blocks; a storage controller coupled to said at least one storage device and coupled to a host system for processing an 1/O write request received from said host system wherein said storage controller includes; means for compressing data of said virtual cluster to generate a compressed cluster; means for determining a required number of physical storage blocks to store said compressed cluster in said storage medium; mapping means for calculating a physical cluster number from a virtual cluster number associated with said virtual cluster; means for identifying available physical storage blocks in said desired physical storage cluster from information in a header portion of a first physical storage block of said physical storage cluster; and means for storing said compressed cluster in the identified available physical storage blocks of said desired physical storage cluster. - View Dependent Claims (17, 18)
-
-
19. A compressed virtual storage subsystem for retrieval of a virtual cluster previously stored in said compressed virtual storage subsystem, said subsystem comprising:
-
at least one storage device containing a plurality of physical storage clusters, each of said plurality of physical storage clusters including a plurality of physical storage blocks; a storage controller coupled to said at least one storage device and coupled to a host system for processing an I/O write request received from said host system wherein said storage controller includes; mapping means for calculating a physical cluster number from a virtual cluster number associated with said virtual cluster; means for identifying physical storage blocks in said desired physical storage cluster containing portions of said virtual cluster from information in a header portion of a first physical storage block of said physical storage cluster; means for retrieving compressed data from the identified physical storage blocks of said desired physical storage cluster; and means for decompressing the compressed data. - View Dependent Claims (20, 21)
-
-
22. In a compressed virtual storage subsystem having a storage medium consisting of a plurality of physical storage clusters each having a plurality of physical storage blocks, a method for storing a virtual cluster provided by an attached host system comprising the steps of:
-
compressing data of said virtual cluster to generate a compressed cluster; determining a required number of physical storage blocks to store said compressed cluster in said storage medium; mapping a virtual cluster number associated with said virtual cluster into a physical cluster number associated with a desired physical storage cluster wherein the mapping step consists essentially of arithmetic calculations devoid of memory lookup functions; identifying available physical storage blocks in said desired physical storage cluster; and storing said compressed cluster in the identified available physical storage blocks of said desired physical storage cluster. - View Dependent Claims (23, 24, 25)
-
-
26. In a compressed virtual storage subsystem having a storage medium consisting of a plurality of physical storage clusters each having a plurality of physical storage blocks, a method for retrieving a compressed virtual cluster provided by an attached host system comprising the steps of:
-
mapping a virtual cluster number associated with said compressed virtual cluster into a physical cluster number associated with a desired physical storage cluster wherein the mapping step consists essentially of arithmetic calculations devoid of memory lookup functions; reading said physical storage cluster wherein said physical storage cluster includes a header data structure in a first physical storage block of the plurality of physical storage blocks of said physical storage cluster and wherein; determining from said header data structure which of said plurality of physical storage blocks correspond to said compressed virtual storage; decompressing said virtual cluster from data stored in said plurality of physical blocks corresponding to said compressed virtual cluster; and returning the decompressed virtual cluster to said host system. - View Dependent Claims (27, 28)
-
Specification