Patent ID: 8108646
Filing Date: 2012-01-31
Classification: G06F

Abstract:
1. A storage system, comprising: a plurality of storage devices based on a pool; and a controller; and wherein: said pool consists of a plurality of real pages; real pages of different lengths are included in said plurality of real pages; said controller comprises: a compression part which compresses a write data element for a write destination virtual page, among a plurality of virtual pages in a virtual volume; a pool management part which selects a real page satisfying (Condition A) and (Condition B) described below, and allocates the selected real page to the write destination virtual page; (Condition A): the real page length of the selected real page is a real page length which is based on the data length of a first data unit included in the compressed write data element; (Condition B): the selected real page is a real page which is not allocated to any virtual page; and an I/O processing part which stores said first data unit in the real page which has been selected; each virtual page is a virtual storage region; each real page is a physical storage region; said first data unit consists of said compressed write data element itself, or of specific information and said compressed write data element; said controller comprises an expansion part which expands compressed data elements; said pool consists of a plurality of pool sub-regions; a real page length is defined for each pool sub-region; a maximum real page length, among a plurality of real page lengths, is the same as a virtual page length; real page read processing and real page write processing are included in write processing for said write destination virtual page, and said real page write processing is performed after said real page read processing; in said real page read processing: (A1) said pool management part decides whether a real page is already allocated to said write destination virtual page; (A2) if the result of the above decision (A1) is affirmative, said pool management part decides whether the length of the write data element for said write destination virtual page is the same as the virtual page length; and (A3) if the result of the above decision (A2) is negative, said I/O processing part reads a second data unit from a real page which is allocated to said write destination virtual page, said expansion part expands a compressed data element included in said second data unit which has been read, and said pool management part overwrites the write data element for said write destination virtual page with said expanded data element; if the result of the decision in (A2) above is negative, the write data element for said write destination virtual page in said real page write processing is the overwritten data element for said write destination virtual page, while, if the result of the decision in (A2) above is affirmative, the write data element for said write destination virtual page in said real page write processing is the write data element for said write destination virtual page itself; in said real page write processing: (B1) said compression part compresses said write data element; (B2) said pool management part decides whether the length of a third data unit included in the compressed write data element is greater than or equal to that of the virtual page; (B3) if the result of the decision in (B2) above is affirmative, the (Condition A) above is that the real page length is the same as the virtual page length; and said I/O processing part stores, in said real page which has been selected, not said third data unit, but another data unit which includes the write data element before compression; and (B4) if the result of the decision in (B2) above is negative, the (Condition A) above is that the real page length is that one, among the plurality of real page lengths, which is greater than or equal to the length of said third data unit, and for which the difference from the length of said third data unit is a minimum; and said I/O processing part stores said third data unit in said real page which has been selected; and said another data unit is the write data element before compression itself, or consists of specific information and said write data element before compression.