US20060212625A1 - Storage system - Google Patents
Storage system Download PDFInfo
- Publication number
- US20060212625A1 US20060212625A1 US11/129,552 US12955205A US2006212625A1 US 20060212625 A1 US20060212625 A1 US 20060212625A1 US 12955205 A US12955205 A US 12955205A US 2006212625 A1 US2006212625 A1 US 2006212625A1
- Authority
- US
- United States
- Prior art keywords
- block
- data
- block set
- updated
- version
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1435—Saving, restoring, recovering or retrying at system level using file system or storage system metadata
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0623—Securing storage systems in relation to content
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/84—Using snapshots, i.e. a logical point-in-time copy of the data
Definitions
- the present invention relates to storage systems that provide data storage areas to host computers.
- the host computer does not merely store the application data to the storage system. But rather the host computer additionally performs a variety of data processes. For example, the host computer additionally performs compressing the data, storing the compressed data to the storage system, and controlling the compressed data. In another example, the host computer performs storing backup data to the storage system, and controlling the backup data that has been stored. (See, for example, U.S. Pat. No. 5,649,152, U.S. Pat. No. 5,555,389, and JP7-72981A.)
- An object of the present invention is to provide a technology to reduce the overhead on the host computer through the use of a storage system that stores data after data processing that changes the size of the data.
- a storage system for providing a storage area that stores data to a host computer.
- the storage system has a data storage unit having a storage area for storing data, and a control unit configured to control data transfer between the host computer and the storage area.
- the control unit performs: receiving data from and sending data to the host computer according to a logical storage location expressed in units of first blocks of a specific size, the logical storage location being specified by the host computer; and storing data to and reading data from the storage area in units of second blocks of a specific size.
- control unit has a conversion storage mode for performing a data conversion process on data of interest for each first block set in the data-of interest to generate a second block set corresponding to each first block set, and storing the second block set in the storage area, the data conversion process changing size of the data of interest, the first block set including N first blocks where N is an integer greater than or equal to 1, the second block set including one or more second blocks.
- storage system further has a correspondence relationship memory unit configured to store a block correspondence relationship that indicates correspondence relationship between a plurality of the first block sets and a plurality of the second block sets.
- control unit When the control unit has received a data read request for a specific first block from the host computer, the control unit executes: referencing the block correspondence relationship to identify a second block set to be read associated with a particular first block set that includes the requested first block; reading out the second block set to be read; performing a reverse conversion process of the data conversion process on the readout second block set; and sending data of the requested first block to the host computer.
- the correspondence relationship memory unit stores the block correspondence relationships that indicate the correspondence relationships of the block sets before and after the data conversion processing
- the control unit in response to a read request from the host computer, references the block correspondence relationships to read out the data from after the conversion processing from the storage area, and performs the reverse conversion process for the data that has been read out, and sends the requested data to the host computer, using the data that has been obtained, thus making it possible to reduce the load on the host computer through the use of a storage system that stores the data after the data processing that changes the size of the data itself has been performed.
- the present invention may be implemented in a variety of forms; for example, embodied in the form of a method and a device that provide a storage area, embodied in the form of a computer program for executing the functions of such method and device, embodied in the form of a recording medium on which is recorded this computer program, or embodied in a form of a data signal embodied in a carrier wave that includes this computer programs.
- FIG. 1 is a drawing of the structure of a storage system as a first embodiment according to the present invention
- FIG. 2 is a schematic diagram showing the internal structure of a local memory 344 ;
- FIG. 3 is a figure showing one example of a set up screen displayed on a control terminal 120 ;
- FIG. 4 is a drawing showing the overview of the compression/migration process
- FIG. 5 is a flowchart showing the procedures for the compression/migration process
- FIGS. 6 (A)- 6 (C) are drawings showing one example of tables 500 , 510 , and 520 ;
- FIG. 7 is a flowchart showing the procedures for the data read process for the storage system 200 ;
- FIG. 8 is a drawing showing an overview of the read process
- FIG. 12 is a flowchart showing the procedures for the compression restore process
- FIG. 14 is a drawing showing an example of the update status control table 530 and the generation/compression control table 540 ;
- FIG. 16 is a drawing showing an overview of the write process in Step S 2 ;
- FIG. 17 is a drawing showing an example of the update status control table 530 and the generation/compression control table 540 in the write process in Step S 2 ;
- FIG. 19 is a drawing showing an example of the update status control table 530 and the generation/compression control table 540 in the write process in Step S 5 ;
- FIG. 20 is a flowchart showing the procedures for the write process for data to past generation
- FIG. 21 is a drawing showing an example of the update status control table 530 and the generation/compression control table 540 in Case A;
- FIG. 22 is a drawing showing an example of the update status control table 530 and the generation/compression control table 540 in Case B;
- FIG. 23 is a drawing showing an example of the update status control table 530 and the generation/compression control table 540 in Case C;
- FIG. 24 is a drawing showing the structure of a storage system 200 c in a third embodiment.
- FIG. 25 is a drawing showing an overview of the write process in the third embodiment.
- FIG. 1 is a drawing showing the structure of a storage system as a first embodiment according to the present invention.
- This storage system 200 has a host interface 210 , a control interface 220 , a disk interface 230 , a disk array control unit 300 connected to each of the interfaces 210 , 220 , and 230 , and a disk array 250 that is connected to the disk interface 230 .
- the disk array 250 has a plurality of disk devices.
- the host interface 210 is connected to a host computer 110 .
- This host computer 110 uses the data storage area provided by the storage system 200 , and achieves specific functions.
- functions of the host computer 110 there are, for example, functions as a file server to provide data files to a client device (not shown), and functions as a database server to control a variety of data.
- the control interface 220 is connected to a control terminal 120 .
- An administrator (operator) of the storage system 200 can control operational settings of the storage system 200 by operating this control terminal 120 .
- the disk array control unit 300 has a CPU 310 , a data compression circuit 320 , a data decompression circuit 330 , and a memory unit 340 . All of the structural elements are connected to each other through a bus 390 .
- the memory unit 340 has a cache memory 342 and a local memory 344 .
- the cache memory 342 stores, temporarily, the data that is sent between the disk array 250 and the host computer 110 .
- the local memory 344 stores the data and programs used when the CPU 310 performs a variety of data processes (described below).
- FIG. 2 is a schematic diagram showing the internal structure of the local memory 344 .
- the local memory 344 has a compressed LBA control table 500 , a logical volume control table 310 , a volume status control table 520 , and a data relay module 600 .
- the data relay module 600 has a function that relays data transmissions between the host computer 110 and the disk array 250 (described in detail below). The functions of the data relay module 600 are achieved by a computer program executed by the CPU 310 ( FIG. 1 ).
- the data relay module 600 configures a RAID (Redundant Array of Inexpensive Disks) system that uses the disk array 250 .
- RAID Redundant Array of Inexpensive Disks
- the data relay module 600 forms five logical volumes LDEV 0 through LDEV 4 by configuring a RAID system.
- a logical volume is a data storage area that includes a plurality of logical blocks.
- a logical block is the smallest unit for data transmission to or from the logical volume.
- the data sizes in the logical blocks are identical for each of the logical volumes LDEV 0 through LDEV 4 .
- a logical block within one logical volume is identified by a unique logical block address (hereinafter termed “LBA”) for each of the logical blocks.
- LBA unique logical block address
- serial numbers starting with “0” are used for the LBAs.
- the data relay module 600 specifies a logical block to be accessed by using the LBA.
- a logical volume may be referred to as a “logical device,” or simple a “volume.”
- a logical block may be referred to simply as a “block.”
- the data relay module 600 in order to identify each of the logical volumes, assigns a unique number (hereinafter termed the “LDEVN”) to each of the logical volumes (logical devices).
- LEVN unique number
- each of the five logical volumes are assigned numbers 0 through 4, respectively.
- the data relay module 600 selectively causes the logical volumes to be used by the host computer 110 .
- the data relay module 600 provides two logical volumes LDEV 0 and LDEV 4 to the host computer 110 .
- the logical volumes that can be used by the host computer 110 in this way are termed the “logical units.”
- the data relay module 600 assigns a unique logical unit number (hereinafter termed “LUN”) to each of the logical units.
- LUN unique logical unit number
- the 0th logical volume LDVE 0 is assigned “No. 0,”
- the fourth logical volume LDEV 4 is assigned “No. 1.”
- This type of correspondence relationship between the LUNs and the LDEVNs is stored in the logical volume control table 510 .
- the minimum unit for data transfer between the host computer 110 and the data relay module 600 is the logical block, which is the same as the minimum unit (the logical block) for data transfer between the data relay module 600 and the logical volume.
- the host computer 110 requests data transfer to/from a logical unit by specifying the LUN and the LBA.
- the data relay module 600 relays the data transfer for a logical volume according to a request from the host computer 110 .
- the data to be stored in multiple logical blocks is gathered together, compressed, and stored in smaller logical blocks. Consequently, there are cases wherein the LBA specified by the host computer 110 will be different from the LBA of the actual logical block that is used in the data transfer. In this way, the correspondence relationship between the specified LBA and the actual LBA is stored in the compressed LBA control table 500 (explained in detail below).
- the LBA specified by the host computer 110 is called the “specified LBA.”
- FIG. 3 is an explanatory figure showing one example of a setup screen displayed on a control terminal 120 .
- This setup screen is a setup screen for performing the compression/migration of the logical volume.
- “Compression/migration” refers to the process for compressing the data that has been stored on a logical volume, and then re-storing. In the first embodiment, all of the data for a first logical volume is compressed, and migrated to another logical volume.
- the operator by operating the setup screen shown in FIG. 3 , is able to select the logical volume that will be processed (the migration origin), the contents to be processed, and the processing algorithm. In FIG. 3 , the “0th logical volume LDEV 0 ” is selected.
- “Compression” is selected as the process to be performed at the time of migration, and “LHA” is selected as the algorithm for the compression process. “Encryption” may also be selected instead of “compression” as the process to be performed at the time migration, and described below. “ZIP” can also be selected instead of “LHA” as the algorithm for the compression process.
- the disk array control unit 300 FIG. 1 ) commences the compression/migration process. Note that the data relay module 600 selects automatically an empty logical volume to be the logical volume for the migration destination. In FIG. 3 , the first logical volume LDEV 1 is selected as the migration destination. Note also that this selection may be made by the operator.
- FIG. 4 is a diagram showing an overview of the compression/migration process.
- FIG. 4 shows the 0th logical volume LDEV 0 and the first logical volume LDEV 1 .
- Each of these logical volumes LDEV 0 and LDEV 1 has a plurality of logical blocks LB.
- the 0th logical volume LDEV 0 is partitioned into a non-compressed area A 1 and a compressed area A 2 . These partitions are set up in advance. Moreover, the correspondence relationship between each of the logical blocks and each area is stored in advance in the local memory 344 . For example, when a file system is structured in a logical volume, the logical volume may be partitioned into a data area, wherein data files are stored, and a control area, wherein information for controlling the data files (such as the correspondence relationships between the file names and the LBAs) is stored. In such a case, the control area is set up in the non-compressed area A 1 , and the data area is set up in the compressed area A 2 .
- the part of the area wherein is stored data that is accessed relatively frequently should be used as the non-compressed area A 1
- the part of the area wherein is stored data that is accessed relatively infrequently should be used as the compressed area A 2 .
- all areas of a logical volume may be used as compressed areas. Note that the operator may set up such areas.
- FIG. 5 is a flow chart showing the procedures for the compression/migration process.
- the data relay module 600 ( FIG. 2 ) migrates data, in compression units, sequentially from the front (from the side wherein the LBA is the lowest).
- the compression unit is a block set comprising ten logical blocks with sequential LBAs.
- the logical volume LDEV 0 is partitioned into multiple block sets.
- Step S 100 the data relay module 600 reads out the data from one block set within the migration origin logical volume LDEV 0 .
- the data relay module 600 reads out the data DBS 1 from the first block set BS 1 within the non-compressed area A 1 .
- Step S 105 the data relay module 600 determines whether or not the read origin block set is within the compressed area A 2 .
- the first block set BS 1 is in the non-compressed area A 1 . Consequently, the data relay module 600 moves to Step S 140 .
- Step S 140 the data relay module 600 stores as is the data that has been read out, storing this data to the migration destination logical volume LDEV 1 .
- the “stores as is” means that the contents of the data are stored without modification.
- the data relay module 600 selects the migration destination logical blocks sequentially from the front (from the side wherein the LBA is the lowest).
- the data DBS 1 is stored to the first block set BS 11 .
- Each block set BS 1 and BS 11 has the same number of logical blocks.
- FIG. 6 (A) is a figure showing an example of the compressed LBA control table 500 .
- the compressed LBA control table 500 stores the correspondence relationships between the pairs of block sets before and after migration, and information regarding whether or not compression was performed at the time of migration.
- the block set is specified by a combination of the starting LBA and the size (number of blocks).
- the data relay module 600 stores in the compressed LBA control table 500 the correspondence relationship between the first block set BS 1 prior to migration and the first block set BS 11 after migration.
- the starting LBA for the first block set BS 1 is “0000,” and the size is “10.”
- the starting LBA is “0000” for the block set BS 11 after migration as well, and the size is also “10.”
- the information stored in the compressed LBA control table 500 is not limited to combinations of starting LBAs and sizes, but rather can also use any given information that can be used for specifying the block set. For example, combinations of the starting LBAs and the ending LBAs may be used instead.
- the data relay module 600 determines whether or not migration has been completed for all of the data. If not completed, then the data relay module 600 returns to Step S 100 .
- the data relay module 600 reads out the data DBS 5 from the 5th block set BS 5 in the compressed area A 2 (Step S 100 ).
- Step S 100 the data relay module 600 moves to Step S 105 . Because the 5th block set BS 5 is within the compressed area A 2 , the data relay module 600 moves to Step S 110 .
- Step S 110 the data relay module 600 compresses the read out data in the data compression circuit 320 ( FIG. 1 ).
- the algorithm set in the set up screen in FIG. 3 is used.
- the data compression circuit 320 generates the data DBS 15 c through compressing the data DBS 5 .
- the size of the data DBS 15 c after compression is five blocks.
- the data relay module 600 stores the post-compression data into the migration destination logical volume LDEV 1 .
- the data relay module 600 selects the migration destination blocks sequentially from the front (the side wherein the LBA is the smallest).
- the data DBS 15 c is stored in the 5th block set BS 15 c .
- the size of this block set BS 15 c is five blocks.
- the data relay module 600 stores into the compressed LBA control table 500 the correspondence relationship between the pre-migration and post-migration block sets BS 5 and BS 15 c .
- the starting LBA for the pre-migration 5th block set BS 5 is “7990,” and the size is “10.”
- the starting LBA is “5808,” and the size is “5.”
- the second block set BS 2 is migrated to the second block set BS 12
- the third block set BS 3 after compression, is migrated to the third block set BS 13 c
- the 4th block set BS 4 after compression, is migrated to the 4th block set BS 14 c .
- the series of processes from Step S 100 to Step S 125 are performed for each individual block set, but instead, this series of processes can be performed for each plurality of block sets.
- FIG. 6 (B) is a diagram showing an example of a volume status control table 520 .
- the volume status control table 520 stores the correspondence relationships of the LDEVNs, whether or not the data is compressed, whether or not the data is encrypted, and the algorithm used.
- the data relay module 600 stores, as information regarding the migration destination logical volume LDEV 1 , “Compression: enabled,” “Encryption: disabled,” and “Algorithm: LHA.”
- FIG. 6 (C) is a drawing showing an example of a logical volume control table 510 .
- the data relay module 600 updates the LDEVN corresponding to the 0th logical unit LU 0 from “0” to “1.”
- the disk array control unit 300 terminates the compression/migration process.
- the result is that a non-compressed area A 11 , a compressed area A 12 and an open area A 13 are formed in the migration destination logical volume LDEV 1 .
- FIG. 7 is a flowchart showing the procedures for the process for reading data from the storage system 200 .
- a LUN and a LBA are specified by the host computer 110 to the storage system 200 to request that the data be read.
- FIG. 8 is a drawing showing an overview of the read process.
- the top shows the case of reading data from the non-compressed area A 11
- the bottom shows the case of reading data from the compressed area A 12 .
- Step S 200 the data relay module 600 looks up from the compressed LBA control table 500 ( FIG. 6 (A)) the combination of pre-migration block set and post-migration block set that includes the specified logical block.
- the specified LBAs are “0005” through “0009.”
- a combination of the first block set BS 1 and the first block set BS 11 is looked up.
- the data relay module 600 determines whether or not the looked up block set has been subjected to a compression process. This determination is performed by referencing the compressed LBA control table 500 . In the example at the top of FIG. 8 , the decision is “no.”
- the data relay module 600 reads the data from the post-migration block set looked up in Step S 200 , within the first logical volume LDEV 1 .
- the data DBS 1 is read from the first block set BS 11 .
- the data relay module 600 obtains, from the data that has been read, the data associated with the specified LBA, and transfers this data to the host computer 110 .
- the data relay module 600 determines whether or not the transfer of data has been completed for all of the specified LBAs. If not complete, then the data relay module 600 returns to the Step S 200 , and iterates the series of steps from S 200 through S 230 for the specified LBAs for which data transfer has not yet been completed. This series of processes is performed for each individual block set. However, this series of processes may be performed for each plurality of block sets instead.
- FIG. 8 shows the case wherein the specified LBAs are “7990” through “7994.”
- the data relay module 600 looks up the combination of the 5th block set BS 5 and the 5th block set BS 15 c in Step 200 . ( FIG. 6 (A))
- Step S 200 the data relay module 600 moves to the next step, S 205 .
- the decision is “yes.”
- Step S 210 the data relay module 600 reads the data from the post-migration block set specified in Step S 200 .
- data DBS 15 c is read from the 5th block set BS 15 c associated with the 5th block set BS 5 .
- the pre-migration 5th block set BS 5 that includes the specified LBAs corresponds to the “first block set” in the present invention.
- the post-migration 5th block set BS 15 c corresponds to the “second block set” in the present invention.
- the LUN, pre-compression starting LBA, and pre-compression size, as a whole correspond to information indicating the “first block set logical storage location” in the present invention.
- the LDEVN, the post-compression starting LBA, and post-compression size, as a whole correspond to the information indicating the “second block set physical storage location” in the present invention.
- the data relay module 600 decompresses, in the data decompression circuit 330 ( FIG. 1 ), the data that has been read.
- This decompression process is the reverse conversion process of the compression process that had been performed by the data compression circuit 320 .
- the data decompression circuit 330 references the volume status control table 520 ( FIG. 6 (B)) to select a decompression process with the appropriate algorithm.
- the data decompression circuit 330 produces data DBS 5 through decompressing the data DBS 15 c.
- the data relay module 600 obtains, from this data that has been generated, the data associated with the specified LBAs, and transfers this data to the host computer 110 .
- the disk array control unit 300 terminates the data read process.
- FIG. 9 is a flow chart showing the procedures for the process of writing data to the storage system 200 .
- the host computer 110 specifies the LUN and the LBA to the storage system 200 in order to request that data be written.
- FIG. 10 is a drawing showing an overview of the write process.
- FIG. 10 shows an overview of the process in the case of writing data to the compressed area A 12 .
- the data relay module 600 determines whether or not the specified LBAs include all of the logical blocks in a single compressed unit (block set). This decision is made by referencing the compressed LBA control table 500 ( FIG. 6 (A)).
- FIG. 10 shows the case where the specified LBAs are from “7990” through “7995.”
- the specified blocks are the logical blocks for only a portion (6 logical blocks) of the 5th block set BS 5 .
- the data relay module 600 decides “no.”
- the specified LBAs may contain blocks from a plurality of compressed unit (block sets).
- the data relay module 600 performs the series of processes, for each block set, following Step S 300 (explained below).
- Step S 305 the data relay module 600 references the compressed LBA control table 500 ( FIG. 6 (A)) to look up the combination of pre-migration block set and post-migration block set that includes the specified logical blocks.
- This process is the same as the process in Step S 200 in FIG. 7 .
- FIG. 10 the combination of the 5th block set BS 5 and the 5th block set BS 15 c is looked up.
- the data relay module 600 decompresses, in data decompression circuit 330 ( FIG. 1 ), the data that has been read. This process is the same as in Step S 225 in FIG. 7 .
- the data compression circuit 330 generates the data DBS 5 through decompressing the data DBS 15 c . The data that is generated in this way is used as the pre-update data for the block set to be updated.
- the data relay module 600 compresses the post-update data in the data compression circuit 320 ( FIG. 1 ). This process is the same as the process in Step S 110 in FIG. 5 .
- the data compression circuit 320 generates the post-compression data DBS 15 uc by compressing the post-update data DBS 5 u .
- the size of this new post-compression data DBS 15 uc is six blocks.
- the data relay module 600 selects a logical block in an unused area of the open area A 13 .
- Any given method may be used for the method of discriminating between the used area and the unused area of the open area A 13 .
- a method can be employed, in which the data relay module 600 stores in the local memory 344 an LBA that indicates the boundary between the used area and the unused area, and performs referencing and updating the LBA as appropriate.
- FIG. 11 is a drawing showing an example of a post-update compressed LBA control table 500 .
- the data relay module 600 updates the information for the post-migration block set associated with the 5th block set BS 5 , doing so from the old 5th block set BS 15 c to the new 5th block set BS 15 uc .
- the starting LBA is “5813,” and the size is “6.”
- the data relay module 600 receives a read request for the 5th block set BS 5 , the data is read from the new 5th block set BS 15 uc . After this point, the data in the old 5th block set BS 15 c is not used.
- the data relay module 600 determines whether or not the write process has been completed for all of the specified LBAs. If not complete, the data relay module 600 returns to Step S 300 , and repeats the series of processes from Step S 300 through Step S 335 for those specified LBAs for which the writing has not been completed. This series of processes is repeated for each individual block set. But instead, this series of processes may be performed for each plurality of block sets.
- the data relay module 600 sends to the host computer 110 a notification that the writing of the data has been completed.
- the data relay module 600 compresses and stores data when the data relay module 600 has received a data write request from the host computer 110 , and also write, to the compressed LBA control table 500 , a new correspondence relationship between the pre-compression and post-compressing (pre-migration and post-migration) block sets. Consequently, even when the storage system 200 compresses and stores the data, the host computer 110 can write the data through specifying the pre-compression LBAs without performing the compression process and without controlling the compressed data.
- the data relay module 600 when there is not a request to update all of the blocks in the pre-compression block set that includes the specified LBAs, the data relay module 600 overwrite the pre-update data within the block set with the requested data to perform the compression process using the block set as the unit. This makes it possible to prevent the control of the post-compression data from becoming excessively complex.
- the post-update post-compression data may be stored in a logical volume that is different from the logical volume in which the pre-update post-compression data was stored. Doing so makes it possible to write the post-update data to a logical volume that has a recording area larger than the open area A 13 , and makes it possible to accommodate the updating of large amounts of data.
- the LDEVN that includes the post-migration block set may be added to the correspondence relationships for the pre-compression and post-compression (pre-migration and post-migration) block sets in the compressed LBA control 500 ( FIG. 6 (A)).
- the post-update compressed data may be stored in the logical block wherein the pre-update compressed data had been stored. Doing so makes it possible to increase the efficiency with which the logical blocks are used.
- FIG. 12 is a flowchart for the procedures for the compression restore processes.
- the “compression restore processes” are the processes that decompress and re-store the compressed data stored in a logical volume. In the first embodiment, a single logical volume's worth of data is migrated to another logical volume while decompressing.
- the compression restore process is performed by the disk array control unit 300 following instructions from the control terminal 120 ( FIG. 1 ). In the below, the explanation will be of migrating a first logical volume LDEV 1 to a second logical volume LDEV 2 . Note that, for the decompression destination (the migration destination) logical volume, the data relay module 600 automatically selects from among the open logical volumes. Note that this selection may instead be done by an operator.
- the disk array control unit 300 reads out data for each block set and further decompresses the read-out data as appropriate, in the same manner as the read process shown in FIG. 7 .
- the first difference is that a single logical volume's worth of data is read, instead of the data specified by the host computer 110 .
- the second difference is that a process is performed (in Step S 250 ) to write to the decompression-destination (migration-destination) logical volume instead of a process to transfer the read-out data to the host computer 11 ( FIG. 7 : Step S 230 ).
- the third difference is that, when the migration has been completed, the volume status control table 520 ( FIG. 6 (B)) and the logical volume control table 510 ( FIG. 6 (C)) are updated (in Steps S 260 and S 265 ).
- Steps S 200 through S 250 are the same as the read processes in FIG. 7 .
- the data relay module 600 stores the read data in the decompression-destination (migration-destination) logical volume.
- the data relay module 600 selects the decompression-destination logical blocks so that the decompression-destination logical block LBA is the same as the pre-compression logical block LBA.
- the data relay module 600 determines whether or not data migration has been completed for all of the pre-compression LBAs. If not complete, then the data relay module 600 returns to Step S 200 , and repeats the processes in the series of steps from S 200 through S 250 for the block sets for which data transfer is not complete. This series of processes is performed for each single block set. However, this series of processes may be performed for each plurality of block sets.
- the data relay module 600 updates the information regarding the decompression-destination logical volume in the volume status control table 520 ( FIG. 6 (B)). For example, “Compression: Disabled,” “Encryption: Disabled,” and “Algorithm: None,” are set for the decompression-destination second logical volume LDEV 2 .
- the data relay module 600 switches the LDEVN in the logical volume control table 510 .
- the data relay module 600 changes the LDEVN corresponding to the 0th logical unit LU 0 from “1” to “2.” Note that the switching of the LDEVN may be performed with timing according to an instruction from the control terminal 120 .
- the data relay module 600 receives a data transfer request (such as a read request or a write request) for the 0th logical unit LU 0 , the data transfer is performed regarding the new second logical volume LDEV 2 .
- the specified LBA (the pre-compression LBA) is used as is for the LBA for the logical volume.
- the disk array control unit 300 performs the data decompression without placing an additional load on the host computer 110 .
- the data relay module 600 selects logical blocks for storing the post-decompression data so that the pre-compression LBAs are the same as the decompression-destination LBAs. Consequently, even when the storage system 200 has decompressed the compressed data, the host computer 110 is able to perform data transfer requests through specifying the pre-compression LBAs, without having to control the decompression process or the decompressed data.
- the correspondence relationships between the pre-compression LBAs and the post-decompression LBAs should be stored in the storage system 200 . Doing so makes it possible to have appropriate data transfer, through referencing these types of correspondence relationships when the data relay module 600 receives a data transfer request.
- the disk array control unit 300 ( FIG. 1 ) performs the compression/migration process independently from the host computer 110 , making it possible to economize the storage area without putting an additional load on the host computer 110 .
- the logical volume data is split between multiple block sets and compressed. Consequently, when compared to the case wherein the entire logical volume is compressed as a single data, it is possible for the speed of the data transfer process on partial areas of the logical volume to prevent excessive delays.
- the storage system 200 not only stores control data regarding the correspondence relationships of the pre-compression and post-compression block sets (the compressed LBA control table 500 , the logical volume control table 510 , and the volume status control table 520 ), but also performs data compression and decompression, and updating of control data, independently from the host computer 110 . Consequently, it is possible to perform the data compression and decompression without placing an additional load on the host computer 110 .
- the storage system 200 has a compressed LBA control table 500 that stores the correspondence relationship between the LBA specified by the host computer 110 (the pre-compression LBA) and the actual LBA (the post-compression LBA).
- the disk array control unit 300 is able to receive a data transfer request that specified the pre-compression LBA from the host computer 110 in a consistent manner regardless of the data compression status (i.e., regardless of whether or not the data is compressed, and regardless of whether or not there have been changes in the LBAs in the blocks wherein the data is stored).
- the disk array control unit 300 can hide the data compression status from the host computer 110 . This makes it possible for the host computer 110 to request a data transfer using a specific pre-compression LBA without having to control the data compression status.
- each computer is able to perform data transfer requests using the shared pre-compression LBA regardless of the data compression status.
- the storage system 200 in the first embodiment makes it possible to provide storage areas without constraining the host computers, regardless of the data compression status. This ability to operate without constraints on the host computers will be termed “host transparent,” below.
- the compressed LBA control table 500 and the logical volume control table 510 correspond to the “block correspondence relationships” in the present invention.
- FIG. 13 is a drawing showing the structure of a storage system 200 b in a second embodiment.
- the data relay module 600 b not only stores a data update history, but also performs generation control of the update history.
- the local memory 344 b stores an update status control table 530 and a generation/compression control table 540 instead of the compressed LBA control table 500 . These tables 530 and 540 are used in generation control.
- the other structures are the same as in the storage system 200 of FIG. 1 and FIG. 2 . Note that in FIG. 13 , only the local memory 344 b of the disk array control unit 300 b is shown as a structural element of the storage system 200 b , and the other structural elements are omitted in the drawings.
- the 0th logical unit LU 0 is assigned as corresponding to the 0th logical volume LDEV 0 ( FIG. 13 : Logical volume control table 510 ). Moreover, the data of the 0th logical volume LDEV 0 is not compressed. Given this, the data relay module 600 b uses the specified LBA as is as the LBA corresponding to the 0th logical volume LDEV 0 .
- the data relay module 600 b holds the update history of the data in the 0th logical volume LDEV 0 , and performs generation control on the update history. This makes it possible to provide to the host computer 110 not just the most recent data, but also data for the 0th logical volume LDEV 0 from some point in the past. This data backup for some point in the past is called a “point-in-time copy” or a “snapshot(trademark of Network Appliance, Inc.).”
- the data relay module 600 b receives an instruction, from the host computer 110 , from the control terminal 120 , etc. to create a “point-in-time copy.” In response, the data relay module 600 b stores backup data to make it possible to provide, later, the data of any given logical block from the point in time at which the instruction was received (hereinafter termed “point in time of the instruction”). At this time, the data relay module 600 b stores the pre-update data of only those partial areas that are updated after the point in time of the instruction as the backup data.
- a process that copies only the updated part (the modified part) is known as “copy-on-write.”
- the data relay module 600 b stores the backup data into a first logical volume LDEV 1 that is different from the origin 0th logical volume LDEV 0 .
- the backup data is compressed and stored (as will be described in detail below).
- FIG. 14 is a drawing showing an update status control table 530 and a generation/compression control table 540 .
- These tables 530 and 540 are examples showing the case wherein data updating is performed following the procedures in Steps S 1 through S 7 shown at the bottom of FIG. 14 .
- the update status control table 530 stores the correspondence relationships between the block sets in the 0th logical volume LDEV 0 and whether or not there is backup data.
- the data relay module 600 b partitions the 0th logical volume LDEV 0 into a plurality of block sets. Furthermore, the data relay module 600 b performs storing and generation controlling of the update history by using the block set as the processing unit.
- the processing unit is the block set comprising 100 (hexadecimal) logical blocks with continuous LBAs.
- the update status control table 530 the block sets are identified by a combination of starting LBAs and ending LBAs.
- four block sets BS 100 through BS 130 are shown for illustration.
- a pointer that references information (described in detail below) that indicates the backup status of the pre-update data is used as the backup information. Pointers are not set up for block sets wherein the data has not been updated.
- the generation/compression control table 540 stores the backup status of the pre-update data. Specifically, this table stores the correspondence relationships between the block sets that store the pre-update data, the generation numbers of the pre-update data, and the pointers that reference the information for pre-update data of other generations. The pointers that reference the information for other generations reference one other correspondence relationship in the generation/compression control table 540 . Moreover, the “pointer” in the update status control table 530 , described above, references one correspondence relationship within this generation/compression control table 540 . The “generation number” will be described below.
- the control terminal 120 sends to the disk array control unit 300 b an instruction to create a point-in-time copy. This type of instruction is sent in response to an operation by the operator. Note that the disk array control unit 300 b or the control terminal 120 may instead generate the instruction automatically with a timing that is set up in advance, or may generate the instruction automatically following some other set of conditions.
- the disk array control unit 300 b can generate multiple point-in-time copies at different points in time.
- the point-in-time copy is identified by a unique generation number for each individual point-in-time copy.
- serial numbers, beginning with “0” are used as the generation numbers.
- the data relay module 600 b assigns “0” to the point-in-time copy indicated in Step S 1 . Note that the generation (point in time) corresponds to the “version” in the present invention.
- Step S 2 the host computer 110 requests that data be written to the storage system 200 b .
- the specified LBAs are assumed to be “00000(h)” through “00050(h).”
- FIG. 15 is a flowchart showing the procedures for the data write process.
- the data relay module 600 b determines whether or not a data backup is necessary.
- the writing to the block set that includes the specified LBAs (hereinafter termed the “specified block set”) is determined to “require backup” when it is the first writing of the specified block set since the most recent specified point in time, or in other words, if no data has been written to the specified block set since the most recent specified point in time.
- the decision is “backup not required” if the data in the specified block set has already been backed up since the most recent specified point in time. In the write process in Step S 2 ( FIG. 14 ), the decision is “backup required.”
- the specified LBAs may include blocks in a plurality of processing units (block sets).
- the data relay module 600 b performs a series of processes (described below) following Step S 400 for each of the block sets.
- FIG. 16 is a drawing showing an overview of the write process in Step S 2 ( FIG. 14 ).
- the data relay module 600 b reads out the data DBS 200 from the first block set BS 100 including the specified LBAs.
- the data that is read out is pre-update data of the specified block set.
- one square symbol SQ does not indicate one block, but rather the number of square symbols SQ provides a rough representation of the number of blocks.
- the data relay module 600 b compresses, in the data compression circuit 320 ( FIG. 1 ) the pre-update data that has been read out.
- the data compression circuit 320 generates post-compression pre-update data DBS 200 c through compressing the pre-update data DBS 200 .
- the number of blocks in this post-compression data DBS 200 c is less than the number of blocks in the pre-compression data DBS 200 .
- the data relay module 600 b sends a notification to the host computer 110 that the data writing has been completed.
- the data relay module 600 b in response to a read request wherein the generation is specified, the data relay module 600 b will reference the update status control table 530 and the generation/compression control table 540 to read data from the block set wherein is stored the data associated with the specified generation in order to send the requested data. For example, an explanation will be given regarding the transmission of data for a read request that specifies the 0th generation first block set BS 100 .
- the data relay module 600 b first reads out the post-compression pre-update data DBS 200 c from the 0th generation block set BS 200 .
- the data that has been read out is then decompressed in the data decompression circuits 330 ( FIG. 1 ).
- the data decompression circuit 330 generates the pre-compression pre-update data DBS 200 .
- the data relay module 600 b uses the pre-update data DBS 200 that has been generated to send the data for the specified LBAs to the host computer 110 .
- the data stored in the 0th logical volume LDEV 0 is sent as is.
- Case B When data for the specified generation has been backed up, and the backed up data is not shared with another generation.
- FIG. 21 is a drawing showing an example of the update status control table 530 and the generation/compression control table 540 in Case A.
- a part of the content of tables 530 and 540 is shown after Step S 7 in FIG. 14 .
- Step S 510 the data relay module 600 b uses the new data obtained from the host computer 110 to generate compressed data for the specified block set.
- the data for all blocks in a single specified block set is obtained in the same way as in the procedures in Steps S 300 through S 325 in FIG. 9 .
- the data relay module 600 b compresses the data in the data compression circuit 310 ( FIG. 1 ) and stores (backups) the compressed data in the first logical volume LDEV 1 .
- the post-compression data is stored in block set BS 230 c . At this time, the original data in the 0th logical volume LDEV 0 is not updated.
- the data relay module 600 b has completed the process of writing to an earlier generation in Case A.
- FIG. 22 is a drawing showing an example of the update status control table 530 and the generation/compression control table 540 in Case B.
- FIG. 22 shows an example of the case wherein, following Step S 7 in FIG. 14 , the host computer 110 performs a write request, for the same specified generation, of the same specified block set, as in Step S 7 .
- Step S 520 the data relay module 600 b generates the data for the specified generation using the new data obtained from the host computer 110 , and stores (backs up) the data for the specified generation to the first logical volume LDEV 1 .
- This process is the same as the process in Step S 510 , described above.
- the data for the blocks that are not specified, within the specified block set are readout from the backup-destination block set in the first logical volume LDEV 1 , rather than the 0th logical volume LDEV 0 .
- This backup-destination block set is the block set associated with the specified generation.
- the data relay module 600 b obtains the backup-destination block set by referencing the pre-update generation/compression control table 540 .
- the data relay module 600 b selects, from the open logical blocks in the first logical volume LDEV 1 , the logical block wherein to store the new post-compression data for the specified generation.
- the block set BS 240 c is selected.
- the new post-compression data for the specified generation is smaller than the old (previously backed up) post-compression data for the specified generation, then it is preferable to store the new data for the specified generation to the logical block wherein the old data for the specified generation had been stored.
- the data relay module 600 b updates the generation/compression control table 540 . Specifically, the information for the backup-destination block set is replaced with the information for the block set wherein the new post-compression data is stored. According to FIG. 22 , the starting LBA is updated to “00310(h),” and the ending LBA is updated to “003A5(h).”
- FIG. 23 is a drawing showing an example of the update status control table 530 and the generation/compression control table 540 in Case C.
- FIG. 23 shows an example of the case wherein, following Step S 7 in FIG. 14 , the host computer 110 then performs a write request for the first generation LBA “00100(h).”
- the host computer 110 then performs a write request for the first generation LBA “00100(h).”
- backups have already been completed for the data for generations 0 through 2, in the block set BS 220 c , for the block set BS 110 , which includes “00100(h).”
- a host computer 110 requests the writing of new data to only the first generation.
- Step S 530 the data relay module 600 b generates the data for the specified generation using the new data obtained from the host computer 110 , and then stores (backs up) the data for the specified generation to the first volume LDEV 1 .
- This process is the same as the process in Step S 520 , described above.
- the new data is written to the open logical blocks while maintaining the data in the block set for which the backup has already been completed.
- the new post-compression data is stored to the open block set BS 250 c while maintaining the data in the block set BS 220 c for which the backup has already been completed.
- the data relay module 600 b updates the generation/compression control table 540 .
- the specified generation is deleted from the information for the block for which the backup has already been completed, and information is added regarding the backup-destination block set wherein the new post-compression data is stored.
- the specified generation (1) is deleted from the generation information for the block set BS 220 c , and information is added regarding the new block set BS 250 c .
- the generation is the same as the specified generation, (1) where the starting LBA is “0051A(h),” and the ending LBA is “00590(h).”
- a pointer is added to the other generation information of the block set for which the backup has been completed. This pointer references information regarding the block set BS 250 c.
- the storage system 200 b stores the post-update data while backing up the pre-update data, so it is possible to provide easily both the most recent data and the data for a specified point in time.
- the disk array control unit 300 b FIG. 13 ) performs this backup process independently from the host computer 110 , making it possible to perform the backup without applying a load to the host computer 110 .
- the data for the logical volume is divided over a plurality of block sets, and the pre-update data is backed up only for those block sets that are updated.
- the storage system 200 b not only stores the control data regarding the correspondence relationships between the pre-compression (pre-backup) and post-compression (post-backup) (i.e., the logical volume control table 510 , the volume status control table 520 , the update status control table 530 , and the generation/compression control table 540 ), but also performs data compression and decompression, and updating of the control data, independently from the host computer 110 .
- pre-backup the logical volume control table 510 , the volume status control table 520 , the update status control table 530 , and the generation/compression control table 540
- the storage system 200 b not only stores the control data regarding the correspondence relationships between the pre-compression (pre-backup) and post-compression (post-backup) (i.e., the logical volume control table 510 , the volume status control table 520 , the update status control table 530 , and the generation/compression control table 540 ), but also performs data compression and decompression, and
- the correspondence relationships between the pre-compression and post-compression block sets are defined by a combination of the update status control table 530 and the generation/compression control table 540 .
- the result is that the disk array control unit 300 b is able to receive a data transfer request, from the host computer 110 , specifying pre-compression (pre-backup) LBAs in a consistent manner.
- the disk array control unit 300 b is able to receive data transfer requests using shared pre-compression (pre-backup) LBAs.
- the storage system 200 b is “host transparent.”
- the disk array control unit 300 b stores the correspondence relationship between the block sets and the generations in the generation/compression control table 540 . Consequently, the disk array control unit 300 b is able to receive, from the host computer 110 , data transfer requests that specify the generation.
- the storage system 200 b stores the newest data without compression, making it possible to suppress any decrease in processing speed when the newest data is read out.
- the logical volume control table 510 the update status control table 530 , and the generation/compression control table 540 , as a whole, correspond to the “block correspondence relationships” in the present invention.
- FIG. 24 is a drawing showing the structure of a storage system 200 c in a third embodiment.
- the difference from the storage system 200 shown in FIG. 1 is that the data relay module 600 c controls data updating after the compression/migration process by using a log method.
- the other structures are the same as for the storage system 200 shown in FIG. 1 and FIG. 2 . Note that in FIG. 24 , only the local memory 344 c of the disk array control unit 300 c is shown as a structural element of the storage system 200 c , and the other structural elements are omitted from the figure.
- the data relay module 600 c performs a compression/migration process.
- the details of the compression/migration process are the same as in the first embodiment, shown in FIGS. 3 through 6 .
- FIG. 25 is a drawing showing an overview of the write process in the third embodiment.
- This write process is a process following the compression/migration.
- the specified LBAs are “7990” through “7995.”
- the data relay module 600 c compresses the new data DULB 300 , obtained from the host computer 110 , in the data compression circuit 320 ( FIG. 1 ).
- the data compression circuit 320 generates the post-compression data DULB 300 c through compressing the new data DULB 300 .
- the data relay module 600 c generates log information DLOG 300 associated with the post-compression (post-update) data DULB 300 c .
- This log information DLOG 300 includes the pre-compression LBAs (specified LBAs), the actual LBAs that identify the block set wherein the post-compression data DULB 300 c is stored, and the date and time on which the data was written.
- the data relay module 600 c stores the log information DLOG 300 and the post-compression data DULB 300 c into an unused area in the open area A 13 .
- the log information DLOG 300 is stored in the logical volume in the same manner as is the data.
- a method is employed, wherein it is possible to distinguish between the block storing the log information DLOG 300 and other blocks.
- a variety of well-known methods may be used as this type of storage method. For example, a method may be used wherein data that would not be found in other blocks is stored at the beginning block and end block for the log information DLOG 300 .
- log information DLOG 300 and the post-compression data DULB 300 c may be stored in different logical volumes.
- the data DBS 300 c together with the log information DLOG 300 and the post-compression data DULB 300 c is stored in the block set BS 300 c .
- the post-compression data DULB 300 c is stored in the data block set BSD 300 c , within the block set BS 300 c .
- the actual LBAs for the log information DLOG 300 show the LBAs for this data block set BSD 300 c.
- the data relay module 600 c adds post-update data and log information to the open area A 13 each time a write request is received from the host computer 110 .
- the block set identified by the actual LBAs includes the data of each of the blocks in the block set identified by the pre-compression LBAs (the pre-compression block set). Consequently, the post-compression block set can be said to be associated with each of the blocks of the pre-compression LBAs. This point is similar for the other examples of embodiments as well.
- the number of blocks in the pre-compression block set is a number that varies according to the write request from the host computer 110 .
- the data relay module 600 c performs data transfers in the same manner as in the first embodiment in FIGS. 7 and 8 , in response to a read request from the host computer 110 . However, the data relay module 600 c looks up, from the log information in the open area A 13 , the log information containing the specified LBA (hereinafter termed the “specified log information”). After the specified log information is found, the data relay module 600 c reads the data from the block set indicated by the actual LBAs in the specified log information, and decompresses the data that has been read in the data decompression circuit 330 ( FIG. 1 ). The data relay module 600 c uses the data that has been generated by the decompression to send the data for the specified LBAs to the host computer 110 .
- the data relay module 600 c uses the data that has been generated by the decompression to send the data for the specified LBAs to the host computer 110 .
- the data relay module 600 c uses the log information with the most recent write date and time when a plurality of specified log information has been found. Moreover, the data relay module 600 c can receive, from the host computer 110 , read requests specifying a past date and time. In this case, the newest specified log information at the specified date and time is used. In other words, from all of the log information since the specified date and time, the log information that is the newest is looked up. In this way, the “date and time” corresponds to the “a version” in the present invention.
- the storage system 200 c stores the post-update data while still leaving the pre-update data behind, thus making it possible to provide easily the newest data and the pre-update data. Moreover, because the post-update data is compressed and stored, it is possible to conserve the storage area.
- the disk array control unit 300 c not only stores log information regarding the updating and compression of data, but also performs the data compression and decompression independently from the host computer 110 . Consequently, it is possible to perform the data compression and decompression without putting a load on the host computer 110 .
- the correspondence relationship between the pre-update and post-update block sets is established by the log information.
- the disk array control unit 300 c is able to receive, in a consistent manner, data transfer requests from the host computer 110 specifying the pre-update (pre-compression) LBAs.
- the compressed LBA control table 500 , the logical volume control table 510 , and the log information, as a whole, corresponds to the “block correspondence relationships” in the present invention.
- the local memory 344 c wherein this information is stored, and the migration-destination logical volume LDEV 1 (or in other words, the disk array 250 ), as a whole, correspond to the “correspondence relationship memory unit” in the present invention.
- the logical volume for the migration destination may be the same as the logical volume for the migration origin.
- the post-compression data may overwrite the logical blocks wherein the pre-compression data has been stored.
- the reading and writing of data is preformed using the block set as the unit for the non-compressed area A 11 as well; however, the reading and writing may be performed using a single logical block as the unit. This is also true for the other processes and other examples of embodiments as well.
- the size of the unit for the compression process is fixed at “10 blocks.” Consequently, it is possible to identify the block set by identifying the starting LBA for a pre-compression block set. Given this, the pre-compression size data may be omitted in the compressed LBA control table 500 . Furthermore, when it comes to the non-compressed area A 1 (or the non-compressed area A 11 ), the pre-compression (pre-migration)LBAs and the post-compression (post-migration) LBAs are identical, and so data regarding the non-compressed area A 1 (non-compressed area A 11 ) in the compressed LBA control table 500 may be omitted. On the other hand, even in the second embodiment according to FIG.
- the size of the compression processing unit is fixed at “100 (h)” blocks. Consequently, the ending LBA data may be omitted from the update status control table 530 . Note that when it comes to post-compression block set, the size is variable, and so the size data or the ending LBA data should be used, without omission.
- the sizes of the units for the compression processing may be variable.
- the size of the compression processing unit may vary depending on the location within the storage area.
- the enabling/disabling of compression and the compression algorithm is set for each logical volume; however, any unit desired can be used as a unit for setting up the enabling/disabling of the compression or setting up the compression algorithm.
- the compression and the algorithm may be set up for each individual logical block, may be set up for each individual RAID group, or the same settings may be used for the storage system as a whole.
- a settings memory unit (such as a memory unit 340 or the disk array 250 ) should be provided in the storage system, and the details of the settings should be stored in advance for each of the set up units. This is not limited to the case wherein compression processing is performed, but is also true for cases wherein other processes (such as encryption processes) are performed.
- the pre-update data is compressed and backed up (stored); however, the post-update data may be compressed and backed up (stored) instead.
- the information about the block set wherein the post-update data has been stored may be stored in the compression control table 540 , in the same manner as according to FIG. 14 .
- a compression/migration process is performed; however, this process need not be performed.
- the post-update data may be compressed and stored along with the log information.
- the post-update data and the log information may be stored to a logical volume that is different from the logical volume for the original data.
- the compressing and storing of the post-update data may be performed for each block set of a specific size, in the same manner as is done in the second embodiment.
- a point-in-time copy may be saved. For example, only the post-update data immediately prior to the specified point in time may be saved as the post-update data for each pre-compression LBA, while the other post-compression data may be destroyed.
- the data for the specified LBAs, read out from the logical volume may be stored temporarily in a cache memory 342 , and then later gathered and sent to the host computer 110 .
- the data sent from the host computer 110 may be stored temporarily in the cache memory 342 , and then, after a notification of data writing completion has been sent to the host computer 110 , actually be written to the logical volume.
- the LBAs specified by the host computer i.e., the “specified LBAs”
- the LBAs hereinafter termed “the physical LBAs”
- a settings memory unit for example, a memory unit 340 or disk array 250
- the LBA correspondence relationships between the specified LBAs and the physical LBAs should be stored in the settings memory unit.
- the sizes of the minimum units for data transfer between the disk array control units 300 , 300 b , or 300 c and the host computer 110 (hereinafter termed the “host blocks”) is the same as the sizes of the minimum units for data transfer within the logical volumes (hereinafter termed the “volume blocks”).
- the size of the host blocks may be different from the size of the volume blocks.
- the size of the volume blocks may be set to a value that is smaller than the size of the host blocks (for example, 1/L times the size of the host blocks, where L is an integer equal or greater than 2). Doing so makes it possible to prevent the storage area used in storing data from becoming excessively large when the size of the data is changed by the data conversion process, because a single host block is represented by multiple volume blocks.
- this type of LBA correspondence relationship, the structural information, and the tables 500 , 510 , 520 , 530 , and 540 , described above, may be stored in any given memory unit in the storage system.
- these may be stored in the local memory (for example, the local memory 344 ( FIG. 1 )) or a cache memory (for example, the cache memory 342 ), or may be stored in a disk array (for example, the disk array 250 ).
- a method that uses the RAID system is used as the method for forming a logical volume; however, other methods may be used instead.
- the storage area provided by a single disk device may be used as is as a single logical volume.
- a data compression process is performed; however, the data conversion process may use any given process that converts the size of the data itself.
- an encryption process may be used instead.
- the encryption process any of a variety of well-known processes, such as DES encryption processing, may be used.
- the password should be specified by the control terminal 120 or by the host computer 110 .
- both compression processing and encryption processing may be performed.
- a portion of structures embodied in software may be replaced into hardware, and, conversely, a portion of the structure that is embodied in hardware may be replaced by software.
- the functions of the data compression unit 320 ( FIG. 1 ) and the data decompression unit 330 may be embodied in a program.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Library & Information Science (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US12/123,148 US7747799B2 (en) | 2005-03-16 | 2008-05-19 | Storage system |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2005-074375 | 2005-03-16 | ||
| JP2005074375A JP4615337B2 (ja) | 2005-03-16 | 2005-03-16 | ストレージシステム |
Related Child Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US12/123,148 Continuation US7747799B2 (en) | 2005-03-16 | 2008-05-19 | Storage system |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| US20060212625A1 true US20060212625A1 (en) | 2006-09-21 |
Family
ID=37011702
Family Applications (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US11/129,552 Abandoned US20060212625A1 (en) | 2005-03-16 | 2005-05-16 | Storage system |
| US12/123,148 Expired - Lifetime US7747799B2 (en) | 2005-03-16 | 2008-05-19 | Storage system |
Family Applications After (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US12/123,148 Expired - Lifetime US7747799B2 (en) | 2005-03-16 | 2008-05-19 | Storage system |
Country Status (2)
| Country | Link |
|---|---|
| US (2) | US20060212625A1 (enExample) |
| JP (1) | JP4615337B2 (enExample) |
Cited By (19)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20070073941A1 (en) * | 2005-09-29 | 2007-03-29 | Brink Peter C | Data storage using compression |
| US20090150477A1 (en) * | 2007-12-07 | 2009-06-11 | Brocade Communications Systems, Inc. | Distributed file system optimization using native server functions |
| US20090216832A1 (en) * | 2008-02-26 | 2009-08-27 | Quinn Steven C | Array-based distributed storage system with parity |
| US20090249010A1 (en) * | 2008-03-27 | 2009-10-01 | Fujitsu Limited | Apparatus and method for controlling copying |
| US20100070702A1 (en) * | 2008-09-12 | 2010-03-18 | Prakash Palanisamy | Unused capacity utilization |
| US20100306498A1 (en) * | 2009-01-30 | 2010-12-02 | Hitachi, Ltd. | Storage system and storage control method that compress and store data elements |
| WO2010148201A2 (en) | 2009-06-19 | 2010-12-23 | Sybase, Inc. | Data compression for reducing storage requirements in a database system |
| US20110145486A1 (en) * | 2009-12-16 | 2011-06-16 | Tsutomu Owa | Memory management device and method |
| US20130290281A1 (en) * | 2012-04-27 | 2013-10-31 | Hitachi, Ltd. | Storage apparatus and data management method |
| CN103838525A (zh) * | 2009-01-30 | 2014-06-04 | 株式会社日立制作所 | 存储系统 |
| US20140173035A1 (en) * | 2011-08-02 | 2014-06-19 | Nec Corporation | Distributed storage system and method |
| US20150012697A1 (en) * | 2013-07-05 | 2015-01-08 | Fujitsu Limited | Storage control apparatus and storage control method |
| US20150180936A1 (en) * | 2012-08-07 | 2015-06-25 | Nec Corporation | Data transfer device, data transfer method, and program storage medium |
| US20180275896A1 (en) * | 2017-03-21 | 2018-09-27 | International Business Machines Corporation | Method of enhancing the performance of storage system through optimization in compressed volume migration |
| US10120601B2 (en) * | 2014-03-24 | 2018-11-06 | Hitachi, Ltd. | Storage system and data processing method |
| US10296229B2 (en) * | 2015-06-18 | 2019-05-21 | Hitachi, Ltd. | Storage apparatus |
| US10346064B1 (en) * | 2016-12-30 | 2019-07-09 | EMC IP Holding Company LLC | Managing compression based on a compression profile of host data initially residing on a source storage array |
| US10521122B2 (en) * | 2018-01-26 | 2019-12-31 | Hitachi, Ltd. | Storage apparatus and method of controlling same |
| US11507537B2 (en) | 2018-04-28 | 2022-11-22 | EMC IP Holding Company LLC | Method, apparatus and computer storage medium for file storage |
Families Citing this family (16)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP4764701B2 (ja) * | 2005-11-01 | 2011-09-07 | 株式会社日立製作所 | ログ情報を管理する計算機システム及びログ情報の管理方法 |
| KR101345386B1 (ko) * | 2007-09-19 | 2013-12-24 | 삼성전자주식회사 | 멀티미디어 데이터 편집 방법 및 장치 |
| US8131927B2 (en) | 2007-11-30 | 2012-03-06 | Hitachi, Ltd. | Fast accessible compressed thin provisioning volume |
| JP5203762B2 (ja) * | 2008-03-24 | 2013-06-05 | 日立メディカルコンピュータ株式会社 | 医用画像診断支援装置及び医用画像診断支援プログラム |
| US8359444B2 (en) | 2008-09-24 | 2013-01-22 | Hitachi, Ltd. | System and method for controlling automated page-based tier management in storage systems |
| JP5367086B2 (ja) * | 2009-05-25 | 2013-12-11 | 株式会社日立製作所 | 計算機システムとそのデータ制御方法 |
| US8566540B2 (en) * | 2010-02-02 | 2013-10-22 | International Business Machines Corporation | Data migration methodology for use with arrays of powered-down storage devices |
| US8798262B1 (en) * | 2010-12-23 | 2014-08-05 | Emc Corporation | Preserving LBA information between layers of a storage I/O stack for LBA-dependent encryption |
| US8751828B1 (en) | 2010-12-23 | 2014-06-10 | Emc Corporation | Sharing encryption-related metadata between multiple layers in a storage I/O stack |
| WO2014061067A1 (en) | 2012-10-18 | 2014-04-24 | Hitachi, Ltd. | Method for generating data in storage system having compression function |
| US9612770B2 (en) * | 2014-07-03 | 2017-04-04 | Infinidat Ltd. | Snapshot management using extended data units |
| US9946462B1 (en) * | 2016-02-15 | 2018-04-17 | Seagate Technology Llc | Address mapping table compression |
| WO2018061161A1 (ja) * | 2016-09-29 | 2018-04-05 | 株式会社日立製作所 | ストレージ装置およびその制御方法 |
| US10831935B2 (en) * | 2017-08-31 | 2020-11-10 | Pure Storage, Inc. | Encryption management with host-side data reduction |
| JP6933809B2 (ja) * | 2017-12-07 | 2021-09-08 | 富士通株式会社 | ストレージ制御装置およびプログラム |
| US11244008B1 (en) * | 2019-08-30 | 2022-02-08 | Quantcast Corporation | Accelerated operations on compressed data stores |
Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5542082A (en) * | 1990-12-06 | 1996-07-30 | Tandberg Data A/S | Data storage system connected to a host computer system and having removable data storage media and equipped to read a control program from the removable media into storage employing ID comparison scheme |
| US5555389A (en) * | 1993-07-07 | 1996-09-10 | Hitachi, Ltd. | Storage controller for performing dump processing |
| US5649152A (en) * | 1994-10-13 | 1997-07-15 | Vinca Corporation | Method and system for providing a static snapshot of data stored on a mass storage system |
| US5787487A (en) * | 1993-11-30 | 1998-07-28 | Fuji Xerox Co., Ltd. | Information storage system for converting data at transfer |
| US5819292A (en) * | 1993-06-03 | 1998-10-06 | Network Appliance, Inc. | Method for maintaining consistent states of a file system and for creating user-accessible read-only copies of a file system |
| US20030225981A1 (en) * | 2002-05-30 | 2003-12-04 | International Business Machines Corporation | Direct addressed shared compressed memory system |
| US6721823B2 (en) * | 1998-12-16 | 2004-04-13 | Hitachi, Ltd. | Storage system |
Family Cites Families (17)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5410671A (en) * | 1990-05-01 | 1995-04-25 | Cyrix Corporation | Data compression/decompression processor |
| JPH0772981A (ja) | 1993-07-07 | 1995-03-17 | Hitachi Ltd | 記憶制御装置及びその制御方法 |
| US5812817A (en) * | 1994-10-17 | 1998-09-22 | International Business Machines Corporation | Compression architecture for system memory application |
| US5623701A (en) * | 1995-06-06 | 1997-04-22 | International Business Machines Corporation | Data compression method and structure for a direct access storage device |
| JP2000010844A (ja) * | 1998-06-22 | 2000-01-14 | Nec Corp | 更新ログ出力方式および出力方法 |
| US6374266B1 (en) * | 1998-07-28 | 2002-04-16 | Ralph Shnelvar | Method and apparatus for storing information in a data processing system |
| US6757699B2 (en) * | 2000-10-06 | 2004-06-29 | Franciscan University Of Steubenville | Method and system for fragmenting and reconstituting data |
| US7151831B2 (en) * | 2001-06-06 | 2006-12-19 | Sony Corporation | Partial encryption and PID mapping |
| JP4220726B2 (ja) * | 2002-06-05 | 2009-02-04 | 株式会社日立製作所 | 外部記憶装置システム及び記憶制御装置 |
| US7334099B2 (en) * | 2002-06-28 | 2008-02-19 | Microsoft Corporation | Method and system for managing image files |
| US6956507B2 (en) * | 2002-12-12 | 2005-10-18 | International Business Machines Corporation | Method and apparatus for morphing memory compressed machines |
| JP2004206269A (ja) * | 2002-12-24 | 2004-07-22 | Sony Corp | 情報処理装置および方法 |
| JP3953986B2 (ja) * | 2003-06-27 | 2007-08-08 | 株式会社日立製作所 | ストレージ装置、及びストレージ装置の制御方法 |
| JP2005293224A (ja) * | 2004-03-31 | 2005-10-20 | Hitachi Computer Peripherals Co Ltd | バックアップシステム及びバックアップ方法 |
| US7302543B2 (en) * | 2004-06-16 | 2007-11-27 | Nec Laboratories America, Inc. | Compressed memory architecture for embedded systems |
| US7474750B2 (en) * | 2004-06-16 | 2009-01-06 | Nec Laboratories America, Inc. | Dynamic content-aware memory compression and encryption architecture |
| US7428642B2 (en) * | 2004-10-15 | 2008-09-23 | Hitachi, Ltd. | Method and apparatus for data storage |
-
2005
- 2005-03-16 JP JP2005074375A patent/JP4615337B2/ja not_active Expired - Fee Related
- 2005-05-16 US US11/129,552 patent/US20060212625A1/en not_active Abandoned
-
2008
- 2008-05-19 US US12/123,148 patent/US7747799B2/en not_active Expired - Lifetime
Patent Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5542082A (en) * | 1990-12-06 | 1996-07-30 | Tandberg Data A/S | Data storage system connected to a host computer system and having removable data storage media and equipped to read a control program from the removable media into storage employing ID comparison scheme |
| US5819292A (en) * | 1993-06-03 | 1998-10-06 | Network Appliance, Inc. | Method for maintaining consistent states of a file system and for creating user-accessible read-only copies of a file system |
| US5555389A (en) * | 1993-07-07 | 1996-09-10 | Hitachi, Ltd. | Storage controller for performing dump processing |
| US5787487A (en) * | 1993-11-30 | 1998-07-28 | Fuji Xerox Co., Ltd. | Information storage system for converting data at transfer |
| US5649152A (en) * | 1994-10-13 | 1997-07-15 | Vinca Corporation | Method and system for providing a static snapshot of data stored on a mass storage system |
| US6721823B2 (en) * | 1998-12-16 | 2004-04-13 | Hitachi, Ltd. | Storage system |
| US20030225981A1 (en) * | 2002-05-30 | 2003-12-04 | International Business Machines Corporation | Direct addressed shared compressed memory system |
Cited By (35)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20070073941A1 (en) * | 2005-09-29 | 2007-03-29 | Brink Peter C | Data storage using compression |
| US20090150477A1 (en) * | 2007-12-07 | 2009-06-11 | Brocade Communications Systems, Inc. | Distributed file system optimization using native server functions |
| US20090216832A1 (en) * | 2008-02-26 | 2009-08-27 | Quinn Steven C | Array-based distributed storage system with parity |
| US8510370B2 (en) * | 2008-02-26 | 2013-08-13 | Avid Technology, Inc. | Array-based distributed storage system with parity |
| US8112598B2 (en) | 2008-03-27 | 2012-02-07 | Fujitsu Limited | Apparatus and method for controlling copying |
| US20090249010A1 (en) * | 2008-03-27 | 2009-10-01 | Fujitsu Limited | Apparatus and method for controlling copying |
| US20100070702A1 (en) * | 2008-09-12 | 2010-03-18 | Prakash Palanisamy | Unused capacity utilization |
| US8261015B2 (en) * | 2008-09-12 | 2012-09-04 | Lsi Corporation | Utilizing more capacity of a physical disk through multiple logical drives on the physical disk |
| US20100306498A1 (en) * | 2009-01-30 | 2010-12-02 | Hitachi, Ltd. | Storage system and storage control method that compress and store data elements |
| US8108646B2 (en) | 2009-01-30 | 2012-01-31 | Hitachi Ltd. | Storage system and storage control method that compress and store data elements |
| US8291189B2 (en) | 2009-01-30 | 2012-10-16 | Hitachi, Ltd. | Storage system and storage control method that compress and store data elements |
| US8677096B2 (en) | 2009-01-30 | 2014-03-18 | Hitachi, Ltd. | Storage system and storage control method that compress and store data elements |
| CN103838525A (zh) * | 2009-01-30 | 2014-06-04 | 株式会社日立制作所 | 存储系统 |
| US9208067B2 (en) | 2009-01-30 | 2015-12-08 | Hitachi, Ltd. | Storage system and storage control method that compress and store data elements |
| WO2010148201A2 (en) | 2009-06-19 | 2010-12-23 | Sybase, Inc. | Data compression for reducing storage requirements in a database system |
| EP2443564A4 (en) * | 2009-06-19 | 2016-05-11 | Sybase Inc | DATA COMPROMISING TO REDUCE THE STORAGE REQUIREMENTS IN A DATABASE SYSTEM |
| US20110145486A1 (en) * | 2009-12-16 | 2011-06-16 | Tsutomu Owa | Memory management device and method |
| US10310747B2 (en) | 2009-12-16 | 2019-06-04 | Toshiba Memory Corporation | Memory management device and method |
| US8880836B2 (en) * | 2009-12-16 | 2014-11-04 | Kabushiki Kaisha Toshiba | Memory management device and method |
| US9235507B2 (en) | 2009-12-16 | 2016-01-12 | Kabushiki Kaisha Toshiba | Memory management device and method |
| US20140173035A1 (en) * | 2011-08-02 | 2014-06-19 | Nec Corporation | Distributed storage system and method |
| US9609060B2 (en) * | 2011-08-02 | 2017-03-28 | Nec Corporation | Distributed storage system and method |
| US20130290281A1 (en) * | 2012-04-27 | 2013-10-31 | Hitachi, Ltd. | Storage apparatus and data management method |
| US9098202B2 (en) * | 2012-04-27 | 2015-08-04 | Hitachi, Ltd. | Storage apparatus and data management method |
| US20150180936A1 (en) * | 2012-08-07 | 2015-06-25 | Nec Corporation | Data transfer device, data transfer method, and program storage medium |
| US9769241B2 (en) * | 2012-08-07 | 2017-09-19 | Nec Corporation | Data transfer device, data transfer method, and program storage medium |
| US20150012697A1 (en) * | 2013-07-05 | 2015-01-08 | Fujitsu Limited | Storage control apparatus and storage control method |
| US9841930B2 (en) * | 2013-07-05 | 2017-12-12 | Fujitsu Limited | Storage control apparatus and storage control method |
| US10120601B2 (en) * | 2014-03-24 | 2018-11-06 | Hitachi, Ltd. | Storage system and data processing method |
| US10296229B2 (en) * | 2015-06-18 | 2019-05-21 | Hitachi, Ltd. | Storage apparatus |
| US10346064B1 (en) * | 2016-12-30 | 2019-07-09 | EMC IP Holding Company LLC | Managing compression based on a compression profile of host data initially residing on a source storage array |
| US20180275896A1 (en) * | 2017-03-21 | 2018-09-27 | International Business Machines Corporation | Method of enhancing the performance of storage system through optimization in compressed volume migration |
| US10481806B2 (en) * | 2017-03-21 | 2019-11-19 | International Business Machines Corporation | Method of enhancing the performance of storage system through optimization in compressed volume migration |
| US10521122B2 (en) * | 2018-01-26 | 2019-12-31 | Hitachi, Ltd. | Storage apparatus and method of controlling same |
| US11507537B2 (en) | 2018-04-28 | 2022-11-22 | EMC IP Holding Company LLC | Method, apparatus and computer storage medium for file storage |
Also Published As
| Publication number | Publication date |
|---|---|
| JP2006259962A (ja) | 2006-09-28 |
| US20080288678A1 (en) | 2008-11-20 |
| US7747799B2 (en) | 2010-06-29 |
| JP4615337B2 (ja) | 2011-01-19 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US7747799B2 (en) | Storage system | |
| JP4550541B2 (ja) | ストレージシステム | |
| US7634627B1 (en) | System and method for performing extent level backups that support single file restores | |
| US8352426B2 (en) | Computing system and data management method | |
| US7827368B2 (en) | Snapshot format conversion method and apparatus | |
| US9176853B2 (en) | Managing copy-on-writes to snapshots | |
| US9098202B2 (en) | Storage apparatus and data management method | |
| US20130311429A1 (en) | Method for controlling backup and restoration, and storage system using the same | |
| US9026754B2 (en) | Storage apparatus and data management method | |
| JP5984151B2 (ja) | データの復旧方法、プログラムおよびデータ処理システム | |
| US20120260038A1 (en) | Storage apparatus and volume management method | |
| US10409520B1 (en) | Replication of content-based storage using address space slices | |
| JP2004127294A (ja) | 仮想記憶システムおよびその動作方法 | |
| US20230376385A1 (en) | Reducing bandwidth during synthetic restores from a deduplication file system | |
| US9075755B1 (en) | Optimizing data less writes for restore operations | |
| US9063892B1 (en) | Managing restore operations using data less writes | |
| US20140215149A1 (en) | File-system aware snapshots of stored data | |
| JP4419884B2 (ja) | データ複製装置、方法及びプログラム並びに記憶システム | |
| US20120066466A1 (en) | Storage system storing electronic modules applied to electronic objects common to several computers, and storage control method for the same | |
| US7313724B1 (en) | Method and apparatus for synchronizing redundant data with a volume | |
| US10089125B2 (en) | Virtual machines accessing file data, object data, and block data | |
| JP4394467B2 (ja) | ストレージシステム、サーバ装置及び先行コピーデータ生成方法 | |
| JP6579149B2 (ja) | ストレージ制御装置、及びストレージ制御プログラム | |
| US7409512B1 (en) | Method and apparatus for maintaining information that indicates valid regions of a working volume and using that information to delay volume initialization | |
| US7536507B1 (en) | Methods, systems, and computer program products for preserving atomic writes using leaves and bitmaps |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| AS | Assignment |
Owner name: HITACHI, LTD., JAPAN Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:NAKAGAWA, YUTAKA;ARAI, MASAHIRO;REEL/FRAME:016572/0973 Effective date: 20050428 |
|
| STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |