WO2019124320A1 - ストレージコントローラ、ストレージアレイ装置、データ格納方法、および記憶媒体 - Google Patents

ストレージコントローラ、ストレージアレイ装置、データ格納方法、および記憶媒体 Download PDF

Info

Publication number
WO2019124320A1
WO2019124320A1 PCT/JP2018/046388 JP2018046388W WO2019124320A1 WO 2019124320 A1 WO2019124320 A1 WO 2019124320A1 JP 2018046388 W JP2018046388 W JP 2018046388W WO 2019124320 A1 WO2019124320 A1 WO 2019124320A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
cache
group
storage
adjacent
Prior art date
Application number
PCT/JP2018/046388
Other languages
English (en)
French (fr)
Inventor
稔典 福永
Original Assignee
Necプラットフォームズ株式会社
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Necプラットフォームズ株式会社 filed Critical Necプラットフォームズ株式会社
Priority to US16/772,433 priority Critical patent/US11099985B2/en
Publication of WO2019124320A1 publication Critical patent/WO2019124320A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/312In storage controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Definitions

  • the present disclosure relates to techniques for reading and writing data to storage areas.
  • Patent Document 1 there are several known techniques for suppressing the decrease in access speed due to discrete arrangement.
  • the technique of Patent Document 1 when the compressed data to be stored does not fit in a specific allocation area on the disk, an unused portion near the allocation area is searched for and a physical block in the vicinity is secured. By not allocating compressed data as much as possible to physical blocks that are not near, the number of seek operations is reduced.
  • the technique of Patent Document 1 is not a technique for causing data stored once discretely to be continuous on a disk.
  • re-fragmentation to rearrange data to be continuous As a method to reduce the discrete arrangement of data, a method called re-fragmentation to rearrange data to be continuous is generally known, but general de-fragmentation requires time for execution . In particular, defragmentation of frequently accessed data restricts access to the data during defragmentation, which may reduce the speed of access as a whole.
  • Patent documents 2 and 3 are documents disclosing another technique for reducing the discrete arrangement of data.
  • Patent Document 3 data is managed in a compressible unit called a segment.
  • the disk controller of Patent Document 3 determines the physical address of compressed data according to an algorithm that maintains the order between the logical address and the physical address that can be seen from the host computer as much as possible.
  • Patent Document 4 discloses a technique of collecting a plurality of compressed data to form a fixed length compression group.
  • the disk control unit increases the disk utilization rate by selecting compressed data that configures a logical group so that a logical group of a size having a certain logical sector size is generated.
  • Patent Document 5 when transmitting a copy of data to a copy destination storage apparatus, the data is rearranged so that the moving time of the magnetic head of the disk when the storage apparatus records the copy on the disk is shortened. Discloses a technique of transmitting data to a storage device.
  • Patent Document 6 discloses a technique of performing prefetching of compressed data that may be processed in the future.
  • Patent No. 3419538 gazette Japanese Patent Application Publication No. 08-328749 Japanese Patent Application Laid-Open No. 07-129470 Patent No. 3426385 gazette JP, 2013-073388, A JP, 2013-246646, A
  • compression group” in Patent Documents 2 and 4 and the “segment” in Patent Document 3 are groups in which the total length or range of the data to be configured is fixedly determined in advance. However, there may be data where the groups are different but highly relevant (eg, likely to be used simultaneously). In the above technique, such highly relevant data is not always stored continuously on the physical disk.
  • An object of the present invention is to provide a storage array device with improved performance with respect to reading and writing of data.
  • a storage controller is a cache processing unit that performs cache processing for storing data stored in a physical disk in a cache storage unit, and adjacent to a logical disk among data stored in the cache storage unit.
  • Setting means for specifying sets of data which are not adjacent to each other on the physical disk and setting a group including the set of specified data, and all the cached data among the data belonging to the group.
  • the data to be deleted on the physical disk is arranged so that all the data belonging to the group are continuously arranged on the physical disk in response to the object being deleted from the cache storage unit.
  • Determining means for determining the range of storing the In, and a writing means for writing the data as the object to be the deletion.
  • a data storage method performs cache processing for storing data stored in a physical disk in a cache storage unit, and among data stored in the cache storage unit, adjacent in a logical disk, and A set of data not adjacent to each other on the physical disk is specified, a group including the specified data set is set, and all cached data among the data belonging to the group are deleted from the cache storage unit
  • the range for storing the data to be deleted in the physical disk is determined so that all the data belonging to the group are continuously arranged in the physical disk. And writes the data to be deleted in the determined range.
  • a storage medium includes cache processing for storing data stored in a physical disk in a cache storage unit, and adjacent to one another in a logical disk among data stored in the cache storage unit and the physical
  • a setting process for specifying a data set not adjacent to each other in the disk and setting a group including the specified data set, and deleting all cached data among the data belonging to the group from the cache storage unit
  • the range for storing the data to be deleted is stored so that all the data belonging to the group are continuously arranged on the physical disk, triggered by the fact that
  • the determination process to determine and the data to be deleted in the determined range Stores a program to be executed and write operations, to the computer to be written.
  • the performance of reading and writing data of the storage array device is improved.
  • FIG. 1 It is a figure which shows another example of arrangement
  • FIG. 1 is a block diagram showing the configuration of a storage array device 300 according to the first embodiment.
  • the storage array device 300 is configured to be able to exchange signals with the host computer 100 by wired or wireless communication.
  • the storage array device 300 includes a storage controller 310 and a disk drive 320.
  • the disk drive 320 stores data handled by the host computer 100.
  • the storage controller 310 reads and writes data in the disk drive 320.
  • the disk drive 320 comprises a physical disk 800 which is an entity for storing data.
  • the physical disk 800 is, for example, an HDD (Hard Disk Drive).
  • the physical disk 800 may be another storage device such as a solid state drive (SSD).
  • FIG. 1 an example of the arrangement of data on the physical disk 800 is shown in a solid balloon.
  • one cell represents an area of 4 KB (kilobyte).
  • data C is stored in the area of numbers 16 to 31 in the physical address.
  • a logical disk 321 is constructed, which is an object to which the host computer 100 performs an operation (read (read) and write (write)) on data.
  • An example of the arrangement of data on the logical disk 321 is shown in FIG. 1 in dashed balloon.
  • “data C” is data in which the logical address number in the logical disk occupies a range of 64 to 95.
  • the storage controller 310 includes a cache management unit 311, a compression / decompression control unit 312, and a write back unit 313.
  • the compression / decompression control unit 312 compresses data and decompresses (i.e., decompresses) the compressed data.
  • the compression and decompression control unit 312 compresses data when it is stored in the disk drive 320.
  • the compression / decompression control unit 312 decompresses the read data when caching data, that is, when reading the data from the disk drive 320 and storing the data in the cache storage unit 400 (described later) of the cache management unit 311.
  • the write back unit 313 performs a process of writing back data to a disk, that is, a process of storing data stored in the cache storage unit 400 in the disk drive 320.
  • the cache management unit 311 manages cache data.
  • the cache management unit 311 is roughly divided into a cache storage unit 400 and a control information storage unit 500.
  • the cache storage unit 400 stores cache data.
  • the cache storage unit 400 manages cache data using the cache table 410.
  • the cache table 410 stores, for example, cache data, a page ID which is an ID (Identifier) for identifying the cache data, information on a logical address of the cache data, and Least Recently Used (LRU) bits.
  • the LRU bit is information indicating that the smaller the number, the longer the time since the cache data to which the LRU bit is assigned is last used.
  • the control information storage unit 500 stores information for controlling data caching and storage of data in the disk drive.
  • the control information storage unit 500 holds an address conversion table 510, a discard target management table 520, an adjacent group management table 530, and an adjacent group link 540.
  • these tables are described as separate ones, but one table may serve as a plurality of tables.
  • the address conversion table 510 is a table storing information representing the correspondence between logical addresses and physical addresses.
  • the table 510 a and the table 510 b of FIG. 4 referred to in the following description are examples of the address conversion table 510.
  • the discard target management table 520 is a table that manages information on discarding of cache data (that is, deletion from the cache storage unit 400). Specifically, the discard target management table 520 stores, for each cache data, information associated with a “discard target flag” indicating whether the cache data is a target of discard. In the description of the present disclosure, for example, when the value of the discard target flag is “1”, it means that the cache data is to be discarded. Tables 520a, 520b and 520c in FIG. 5 which are referred to in the following description are examples of the discard target management table 520.
  • the adjacent group management table 530 stores information on adjacent groups.
  • the adjacent group is a group of data set by the storage controller 310.
  • the members of the adjacent group are compressed data or a group of data that can be compressed into one compressed data (hereinafter referred to as "compression unit data").
  • compression unit data data constituting an adjacent group
  • data belonging to adjacent group since the adjacent group is conceptual, when referring to the adjacent group, it does not matter whether the data belonging to the adjacent group is in a compressed state or in a expanded state.
  • the adjacent group management table 530 like the table 530a and the table 530b in FIG. 6, for each set adjacent group, an adjacent group number which is a number identifying the adjacent group, and a start physical address which is a start position in the physical address. , And a block length indicating the length of the storage range in the physical disk 800, a head logical address which is the start position in the logical address, and information indicating the logical range which is the length in the logical disk.
  • the adjacent group link 540 stores information indicating the relationship between the adjacent group and the cache data.
  • the table 540 a and the table 540 b of FIG. 7 referred to in the following description are examples of the adjacent group link 540.
  • the page ID of the cached data is associated with the adjacent group number of the adjacent group to which the data belongs. Note that, in the following, that the data is associated with the adjacent group number in the adjacent group link 540 is particularly referred to as “data is linked to the adjacent group”.
  • the adjacent group link 540 stores the value of the storage flag for each adjacent group.
  • the storage flag is a binary variable and takes, for example, a value of "0" or "1".
  • the fact that the storage flag is “1” means that the data linked to the adjacent group to which the storage flag is given is stored in the physical disk when it is discarded from the cache storage unit 400.
  • FIG. 2 is a flowchart showing the flow of the operation of the storage array device 300, which is started when the host computer 100 issues a read request or a write request to the storage array device 300.
  • the storage array device 300 When the storage array device 300 receives a request from the host computer 100 (step S1), the storage array device 300 performs different processing depending on whether the received request is a read request or a write request.
  • the read request is a request to read data
  • the write request is a request to write data (that is, update data in a target range).
  • step S3 the storage array device 300 checks whether a cache hit occurs (step S3).
  • a cache hit is that data targeted for a read request is found out from the cache storage unit 400. If a cache hit has occurred (YES in step S3), the storage controller 310 may read cache data corresponding to data targeted for a read request from the cache storage unit 400 and transmit the cache data to the host computer 100. (Step S91). In this case, the storage array device 300 ends the process for the request with the process of step S91.
  • step S3 storage controller 310 determines whether an adjacent group is set for compression unit data (hereinafter referred to as "read data") including data to be a target of a read request (hereinafter "read data"). In other words, it is checked whether the read data belongs to any adjacent group). Specifically, the storage controller 310 may refer to the adjacent group management table 530 to check which of the existing adjacent group ranges the range of the logical address of the read data is included. When the adjacent group is not set for the read data (NO in step S4), the storage controller 310 performs the process of the first case (step S10). When the adjacent group is set for the read data (YES in step S4), the storage controller 310 performs the process of the fourth case (step S40).
  • read data data to be a target of a read request
  • the storage controller 310 may refer to the adjacent group management table 530 to check which of the existing adjacent group ranges the range of the logical address of the read data is included.
  • the storage controller 310 When performing the process of the first case or the process of the fourth case, transmits the data to be the target of the read request to the host computer 100 as a response to the request from the host computer 100 (step S5) ).
  • the storage controller 310 may perform the process of step S5 in the middle of the process of the first case or the process of the fourth case.
  • the storage controller 310 updates data in the range of the target of the write request according to the write request (step S6). If the data in the range of the write request target is already in the cache storage unit 400 as cache data, the storage controller 310 may update the cache data. If there is no data in the target range of the write request in the cache storage unit 400 and the target of the write request is the partial range of the compressed data stored in the physical disk 800, the storage controller 310 performs physical The compressed data is cached from the disk 800, and then the target range of the write request in the cached data is updated. When the target of the write request is all of the compressed data stored in the physical disk 800, the storage controller 310 does not cache the compressed data from the physical disk 800, and the data for which the write request requires writing is It may be only recorded in the cache storage unit 400.
  • write data the compression unit data including the range updated by the write data.
  • the storage controller 310 checks whether an adjacent group is set for the write data (step S7). When the adjacent group is not set for the write data (NO in step S7), the storage controller 310 performs the process of the third case (step S30). When the adjacent group is set for the write data (YES in step S7), the storage controller 310 performs the process of the fifth case (step S50).
  • the processing of the first case to the processing of the fifth case will be described in detail below.
  • the processing in the second case is processing in the case where the need for discarding the cache arises.
  • the first case is a case where the storage array device 300 receives a read request for part or all of data not belonging to any adjacent group.
  • the physical disk 800 stores compressed data “A”, “B” and “C” (arrangement example 800 a in FIG. 8).
  • Compressed data “A”, “B” and “C” are each compressed as compression data “A”, “B” and “C” which are a group of data that can be compressed into one compressed data. State data.
  • the compressed data "A” and the compression unit data “A” are referred to as data "A” without distinction.
  • Data “A”, “B” and “C” are stored in the physical disk 800 in a compressed state at a compression rate of 50%.
  • the symbols “A”, “B” and “C” attached to the data are symbols attached for explanation.
  • the storage array device 300 only needs to recognize the range of each compressed set of data, and does not necessarily identify the data by name.
  • the data "A” and the data “B” are located apart from each other.
  • the address range of data “A” is 0 to 31
  • the address range of data "B” is 32 to 63
  • the address range of data "C” is 64 to 95.
  • the address conversion table 510 stores information on the range of logical addresses and the range of physical addresses of data “A”, “B”, and “C” (table 510 a in FIG. 4).
  • the “data name” is shown for the convenience of the description of the present embodiment, it is not necessary that the address conversion table 510 actually has the information of “data name”.
  • the “number of storage blocks” in the address conversion table 510 is information representing the length of the range in which data is stored in the physical disk 800 in units of 4 KB.
  • the adjacency group management table 530 and the adjacency group link 540 represent an initial state (that is, a state in which no adjacency group is set) (table 530a in FIG. 6 and table 540a in FIG. 7). Further, the value of the discard target flag of each page ID in the discard target management table 520 is “0” (initial value) (table 520 a in FIG. 5).
  • FIG. 9 is a flowchart showing the process flow of the first case.
  • the storage controller 310 caches read data (step S11). Specifically, the storage controller 310 reads the read data from the physical disk 800 and decompresses it by the compression / decompression controller 312. Then, the storage controller 310 stores the decompressed data in the cache storage unit 400.
  • the cache storage unit 400 updates the cache table 410 to a state indicating that the read data “B” is cached as data whose page ID is “1”, for example (table 410 b in FIG. 3).
  • the storage controller 310 may transmit data “B” to the host computer 100 as a response to the read request after the process of step S11 (step S5 in FIG. 2).
  • the storage controller 310 checks whether there is cache data adjacent to the read data in the logical disk (step S12). That is, the storage controller 310 identifies data located immediately before or after the range of logical addresses of read data, and checks whether the identified data is stored in the cache storage unit 400. According to the address conversion table 510 (table 510a in FIG. 4), the data “A” is immediately before the read data "B", and the data “C” is immediately after the read data "B". Then, according to the cache table 410, the data “A” is stored in the cache storage unit 400, and the data “C” is not stored in the cache storage unit 400.
  • the storage controller 310 detects that data "A" exists as cache data adjacent to read data in the logical disk (YES in step S12). In this case, the process proceeds to step S13.
  • the data detected in step S12 is referred to as “adjacent data”.
  • step S12 When there is no adjacent data (NO in step S12), the storage controller 310 ends the process without performing the process of step S13 and subsequent steps.
  • step S13 the storage controller 310 checks whether the read data and the adjacent data are adjacent on the physical disk 800.
  • the physical address range of the read data “B” and the physical address range of the adjacent data “A” are continuous. do not do. That is, the read data "B” and the adjacent data "A” are not adjacent in the physical disk 800 (NO in step S13). In this case, the process proceeds to step S14.
  • the storage controller 310 may end the process without performing the process in step S14 and subsequent steps.
  • step S14 the storage controller 310 checks whether an adjacent group is set to adjacent data. In the first situation example, since neither adjacent group is set to the adjacent data “A” (NO in step S14), the process proceeds to step S15.
  • step S15 the storage controller 310 sets a new adjacent group including read data and adjacent data. Specifically, the storage controller 310 selects an unused adjacent group number (for example, the number “0”) as an adjacent group number of a new adjacent group to which the read data and the adjacent data belong. Then, in the adjacent group link 540, the storage controller 310 links the page ID of the read data and the page ID of the adjacent data to the selected adjacent group number (table 540b in FIG. 7).
  • an unused adjacent group number for example, the number “0”
  • the storage controller 310 links the page ID of the read data and the page ID of the adjacent data to the selected adjacent group number (table 540b in FIG. 7).
  • the storage controller 310 determines the start logical address (the start logical address of the start data of the data constituting the adjacent group) and the logical range ( From the first logical address, the length of the last data of the data constituting the adjacent group to the last of the logical address may be written.
  • step S16 the storage controller 310 adds the read data to the adjacent group to which the adjacent data belongs. That is, in the adjacent group link 540, the storage controller 310 links the page ID of the read data to the adjacent group number of the adjacent group to which the adjacent data belongs. Further, if there is uncached data among the data of the adjacent group to which the adjacent data belongs, the data is cached (step S17).
  • step S18 the storage controller 310 sets, in the adjacent group link 540, the value of the storage flag of the adjacent group to which the read data belongs to “1” (step S18).
  • the storage controller 310 ends the processing of the first case.
  • Two adjacent data may be detected in the process of step S12.
  • the storage controller 310 may select any one of the two detected adjacent data as adjacent data to be handled in the process after step S13.
  • the storage controller 310 may set a new adjacent group including the two adjacent data and the read data when the adjacent group is not set to the two adjacent data. Further, when the adjacent group is set to one of the two adjacent data, the storage controller 310 may add the read data and the other adjacent data to the adjacent group. In addition, when the adjacent group is set to both of the two adjacent data, the storage controller 310 integrates the two adjacent groups and is configured by data belonging to the original adjacent group and read data, 1 Two adjacent groups may be set.
  • the storage controller 310 may set separate adjacent groups for each of two adjacent data. In this case, two adjacent groups including read data are set.
  • the storage controller 310 may set a new adjacent group consisting of only two adjacent data and read data.
  • the two adjacent data may belong to two adjacent groups (ie, the original adjacent group and the new adjacent group).
  • the storage controller 310 may be configured to detect only adjacent data either immediately before or immediately after in step S12.
  • step S13 may not be necessary. That is, the storage controller 310 may be configured to perform the processing of step S14 and subsequent steps regardless of whether the read data and the adjacent data are adjacent in the physical disk 800. However, when the read data and the adjacent data are adjacent on the physical disk 800, the process of step S18 may be omitted.
  • the need to discard the cache means, for example, a case where an area for storing new cache data in the cache storage unit 400 is insufficient.
  • the storage controller 310 first determines a deletion target from cache data in which the value of the destruction target flag is “0” (step S21).
  • the storage controller 310 determines a deletion target according to, for example, a Least Recently Used (LRU) method. That is, the storage controller 310 determines, as a deletion target, cache data that has the longest elapsed time since it was last used (including, for example, being read and updated).
  • LRU Least Recently Used
  • the storage controller 310 checks whether an adjacent group is set as the deletion target (step S22). For example, if the page ID to be deleted is linked to any of the adjacent group numbers in the adjacent group link 540 (table 540b in FIG. 7), it is known that the adjacent group is set to the deletion target.
  • the storage controller 310 may delete the deletion target from the cache storage unit 400 (step S92), and the process may end.
  • the storage controller 310 sets the value of the deletion target discard target flag in the deletion target management table 520 to “1” (step S23). ). The storage controller 310 does not delete the cache data constituting the adjacent group until the value of the discard target flag of all the cache data linked to the adjacent group in the adjacent group link 540 becomes “1”.
  • the storage controller 310 may perform the process of step S21 again to determine a new deletion target (NO in step S24).
  • the storage controller 310 sets the value of the discard target flag to “0”. You may
  • the table 520 b of FIG. 5 illustrates an example of the discard target management table 520 when the cache data having the page ID “0” and the cache data having the page ID “1” are to be deleted.
  • the value of the discard target flag associated with the two page IDs is “1”.
  • step S24 when the value of the discard target flag of all cache data linked to a certain adjacent group in the discard target management table 520 becomes “1” (YES in step S24), the storage controller 310 In the adjacent group link 540, it is checked whether the storage flag of the adjacent group is "1" (step S25).
  • step S25 If the storage flag of the adjacent group is "1" (YES in step S25), the storage controller 310 performs a write back process for cache data associated with the adjacent group (step S26). The write back process will be described in detail later. If the storage flag of the adjacent group is not “1” (NO in step S25), the storage controller 310 may not perform the process of step S26.
  • step S26 the storage controller 310 deletes the cache data subjected to the write back process from the cache storage unit 400 (step S27). ) (Table 410c of FIG. 3).
  • the storage controller 310 erases the information of the deleted cache data from the discard target management table 520 and the adjacent group link 540 (step S28). That is, the storage controller 310 sets the value of the discard target flag of the page ID of the deleted cache data in the discard target management table 520 to the initial value “0” (table 520 c in FIG. 5). In addition, the storage controller 310 sets the adjacent group link 540 in such a state that the value of the storage flag of the target adjacent group is “0” as the initial value, and that no data is associated with the target adjacent group. (Table 540a in FIG. 7).
  • the storage controller 310 ends the processing of the second case.
  • the write back unit 313 in the storage controller 310 arranges cache data to be subjected to the write back process in the order of logical addresses (step S261).
  • the write back unit 313 starts the top of the address conversion table 510 (table 510 a in FIG. 4). Two data are arranged in the order of data “A” and data “B” based on the logical address information.
  • the write back unit 313 checks whether the storage range of the adjacent group to which the target cache data belongs is set (step S262). That is, the write back unit 313 checks in the adjacent group management table 530 whether the head block address and the block length of the adjacent group to which the target cache data belongs (hereinafter also referred to as “target adjacent group”) are set.
  • target adjacent group the head block address and the block length of the adjacent group to which the target cache data belongs.
  • step S262 If the result of the determination in step S262 is "NO", the write-back unit 313 performs the process of step S264 (described later).
  • step S262 If the result of the determination in step S262 is "YES”, the write back unit 313 compresses the compressed cache data to be subjected to the write back processing (hereinafter referred to as “compressed post write back data") It is determined whether it falls within the storage range of the original compressed data (step S263).
  • the original compressed data is compressed data that is stored in the disk drive 320 and corresponds to the data before caching the target cache data.
  • the storage range of the original compressed data is indicated by the “head physical address” and the “number of storage blocks” of the address conversion table 510.
  • the storage range of the original compressed data “A” is a range for four blocks (16 KB) from the number “112”.
  • the size of the compressed post-write back data is the same as the size of the original compressed data when the target cache data is not updated from the original compressed data.
  • the storage controller 310 may compress the target cache data by the compression / decompression control unit 312 and specify the size of the compressed data. There is no limitation on the timing of processing for specifying the size of data after compression.
  • the write back unit 313 determines the block length of the adjacent group indicated in the adjacent group management table 530 and the compression write It may be compared with the size of the return data.
  • step S263 If the result of the determination in step S263 is "NO", the write-back unit 313 performs the process of step S264.
  • the write back unit 313 determines a new storage range of post-compression write back data.
  • the write-back unit 313 may arbitrarily specify an empty area in the physical disk where the post-compression write-back data fits, and may determine the area as a new storage range. If at least one of immediately before and / or after the storage range of the original compressed data of the compressed post-write back data is empty, and it is possible to extend the storage range to a length that the compressed post-write back data fits, the write back unit In 313, a range obtained by extending the storage range may be determined as a new storage range.
  • the storage controller 310 updates the adjacent group management table 530 (step S265). Specifically, the storage controller 310 determines, based on the determined new storage range, the information on the head physical address of the adjacent group to which the target cache data belongs and the information on the block length in the adjacent group management table 530. Write. If all the data constituting the target adjacent group is post-compression write back data, for example, the storage controller 310 writes the top address of the determined storage range as the top physical address and determines the length as the block length. Write the length of the storage range. The block length may exceed the length of the determined storage range as long as it does not overlap with the storage range of other data. When the information of the head physical address and the information of the block length have already been written, the storage controller 310 changes only the information that changes as the storage range of the compressed post-writeback data changes from the original storage range. , Should be updated.
  • the storage controller 310 occupies the top logical address (the top logical address of the top data of the data constituting the target adjacent group) and the logical range (each of the data constituting the target adjacent group) on the logical disk. Write or update the sum of the range)
  • step S263 determines the storage range of the original compressed data as the storage range of post-compression write-back data (step S266). In this case, the write-back unit 313 does not have to perform the process of step S264 and step S265.
  • the write-back unit 313 releases the area in the physical disk 800 where the original compressed data is stored (step S 267). That is, the write back unit 313 erases the original compressed data from the physical disk 800. In other words, the write back unit 313 writes invalid data in the area where the original compressed data is stored.
  • the compression / decompression control unit 312 compresses the target cache data (step S268). Then, the write-back unit 313 stores the post-compression write-back data, which is data after compression, in the storage range determined in step S264 or step S266 (step S269).
  • the arrangement of data on the physical disk 800 is as shown in the arrangement example 800b of FIG.
  • the storage controller 310 updates the address conversion table 510 according to the storage range of the compressed post-write back data (step S270).
  • the storage controller 310 determines the “head physical address” of the data “A” and the data “B” in the address conversion table 510. Is updated to the number of the new start position of each data (table 510b in FIG. 4).
  • the third case is a case where the storage array device 300 receives a write request for part or all of data that does not form an adjacent group. For example, in the initial state of the first case, the case where the storage array device 300 receives a write request for part or all of the data “B” corresponds to the third case.
  • step S30 The flow of the process of the third case (step S30) will be described with reference to the flowchart of FIG.
  • the process flow of the third case is similar to the process of the first case.
  • the storage controller 310 After updating the target data according to the write request (step S6 in FIG. 2), the storage controller 310 checks whether there is cache data adjacent to the updated data in the logical disk (step S31). Hereinafter, the data detected in step S31 will be referred to as "adjacent data”.
  • step S31 If there is no adjacent data (NO in step S31), the storage controller 310 ends the process without performing the process of step S32 and subsequent steps.
  • step S31 the storage controller 310 checks whether the updated data and the adjacent data are adjacent in the physical disk 800 (step S32).
  • step S32 If the post-update data and the adjacent data are adjacent in the physical disk 800 (YES in step S32), the storage controller 310 ends the process without performing the process in step S33 and subsequent steps.
  • the storage controller 310 next checks whether an adjacent group is set in the adjacent data (step S33).
  • the storage controller 310 sets a new adjacent group including the write data and the adjacent data (step S34).
  • the storage controller 310 adds the write data to the adjacent group to which the adjacent data belongs (step S35). That is, in the adjacent group link 540, the storage controller 310 links the page ID of the write data to the adjacent group number of the adjacent group to which the adjacent data belongs. The storage controller 310 also caches uncached data among data belonging to the adjacent group to which the adjacent data belongs (step S36).
  • step S35 the storage controller 310 sets the value of the storage flag of the adjacent group to which the write data belongs in the adjacent group link 540 to "1" (step S37).
  • the storage controller 310 completes the processing of the third case.
  • the fourth case is a case where the storage array device 300 receives a read request for part or all of data forming an adjacent group.
  • the fourth example of the situation As an example of the situation immediately before the occurrence of the fourth case (hereinafter also referred to as “the fourth example of the situation”), the situation after the series of processing exemplified in the second case is finished is assumed. That is, data “A” and data “B” belong to an adjacent group whose adjacent group number is “0”, and are stored side by side on physical disk 800.
  • the cache table 410 is in the state of the table 410c in FIG. 3, the address conversion table 510 is in the state of the table 510b in FIG. 4, and the discard target management table 520 is in the state of the table 520c in FIG. Is the state of the table 530b of FIG. 6, the adjacent group link 540 is the state of the table 540a of FIG. 7, and the arrangement of data in the physical disk 800 is the state of the arrangement example 800b of FIG.
  • the storage controller 310 caches data belonging to the adjacent group to which the read data belongs (step S41).
  • the storage controller 310 may read from the physical disk 800 the range indicated by the “head address” information and the “block length” information in the adjacent group management table 530. In the fourth situation example, thereby, data “A” which is data belonging to the same adjacent group as the read data “B” is stored in the cache storage unit 400.
  • the storage controller 310 may transmit data “B” to the host computer 100 as a response to the read request after the process of step S41 (step S5 in FIG. 2).
  • the storage controller 310 updates the adjacent group link 540 (step S42). Specifically, the storage controller 310 links the data (read data) constituting the adjacent group to the adjacent group number of the adjacent group to which the read data belongs in the adjacent group link 540.
  • the value of the storage flag may remain "0".
  • the storage controller 310 may set the value of the discard target flag to “1” for data other than the read data cached in the process of step S42.
  • step S41 When Read Data Belongs to Multiple Groups, multiple adjacent groups to which the read data belong may be detected in step S41.
  • the storage controller 310 may select any one of the detected adjacent groups as an adjacent group to be processed in the fourth case.
  • the selection of the adjacent group may be made based on an arbitrary algorithm for determining the priority.
  • the above algorithm for example, is an algorithm that evaluates the priority of the group with higher average use frequency of constituent data higher, and the elapsed time from the last used data among constituent data is shorter It may be an algorithm that highly evaluates priority, an algorithm that evaluates priority higher as data length is shorter (or longer), or a combination of these algorithms.
  • the storage controller 310 may narrow the read range in the process of step S42. For example, the storage controller 310 may read a set of continuous compressed data within a predetermined length range among the compressed data constituting the adjacent group.
  • the storage controller 310 may read data of a predetermined length range including read data and data prior to the read data.
  • the storage range of the read data and the data of the range of a predetermined length before the read data may be read out.
  • the fifth case is a case where the storage array device 300 receives a write request for part or all of data forming an adjacent group.
  • the flow of the process of the fifth case (step S50) will be described with reference to the flowchart of FIG.
  • the storage controller 310 updates data subject to the write request (hereinafter referred to as “write data”) according to the write request (step S6 in FIG. 2), and then compresses the data after the update of the write data.
  • the size is identified (step S51).
  • the storage controller 310 may compress the updated data by the compression / decompression control unit 312 and specify the size of the compressed data.
  • the storage controller 310 may temporarily store the compressed data in the cache storage unit 400.
  • the storage controller 310 checks whether the data after compression of the updated data exceeds the size of the original compressed data (step S52).
  • step S52 If the data after compression of the data after update does not exceed the size of the original compressed data, the data after update should fall within the storage range of the original compressed data. In such a case (NO in step S52), the contents of the adjacent group management table 530 may not be changed. In addition, the storage controller 310 does not have to rearrange the data forming the adjacent group to which the write data belongs. Therefore, the process proceeds to step S57 described later.
  • the storage controller 310 determines that the free space of the compressed data of the updated data exceeds the size of the original compressed data (hereinafter, “excess”) immediately before the original compressed data storage range or It is checked whether it is immediately after (step S53).
  • the storage controller 310 may extend the storage range of the compressed data later. In this case, it is not necessary to move data earlier (earlier or earlier) on the physical disk than the write data.
  • the storage controller 310 caches, among the data belonging to the same adjacent group as the write data, uncached data following the data after the update on the logical disk (step S54).
  • the storage controller 310 may extend the storage range of the compressed data to the front. In this case, there is no need to move data behind the write data on the physical disk.
  • the storage controller 310 caches, among the data belonging to the same adjacent group as the write data, uncached data that precedes (preceding or earlier) the data after updating on the logical disk (step S55).
  • the storage controller 310 caches non-cached data belonging to the same adjacent group as the write data (step S56).
  • step S54 After the process of step S54, step S55 or step S56, the process proceeds to step S57.
  • step S57 the storage controller 310 writes the write data and the data cached in the process of steps S54 to S56 (if any) in the adjacent group number of the adjacent group to which the write data belongs in the adjacent group link 540, Attach.
  • the storage controller 310 sets the value of the storage flag of the adjacent group to which the write data belongs in the adjacent group link 540 to “1” (step S 58).
  • the cache table 410 is the table 410c of FIG. 15, the address conversion table 510 is the table 510c of FIG. 16, the adjacent group management table 530 is the table 530c of FIG. 17, the adjacent group link 540 is the table 540c of FIG.
  • the arrangement is assumed to be in the state of the arrangement example 800c of FIG.
  • the storage controller 310 caches the data "B” and updates the cached data "B” (step S6).
  • the adjacency group management table 530 the adjacency group having the adjacency group number “0” is set to the data “B” (YES in step S7).
  • the size of the data when "B" is compressed is specified (step S51).
  • the storage controller 310 compresses the data after the update by the compression / decompression control unit 312, and stores the data “B ′” after compression in the cache table 410 as data having a page ID of “1” (see FIG. 15 tables 410d). Then, the storage controller 310 specifies the size of the compressed data "B '".
  • the size of the compressed data "B '" is 24 KB.
  • storage controller 310 determines the excess, that is, data "B '" and the original compressed data "B". It is checked whether there is a vacant area for the difference (8 KB) of the difference between before and after the storage range of the original compressed data (step S53).
  • step S53 it is assumed that an 8-KB free space is immediately after the original compressed data area ("immediately after" in step S53). In this case, the process proceeds to step S54, but there is no data to be cached because the data "B" is the last data of the adjacent group.
  • the storage controller 310 links the page ID of the data "B" to the adjacent group number "0" (step S57). Also, the storage controller 310 sets the value of the storage flag of the adjacent group whose adjacent group number is “0” to “1” (step S 58).
  • the adjacent group link 540 is in the state of the table 540d of FIG.
  • the data “B” is compressed by the write-back processing in step S26 and the physical disk 800 Stored.
  • the storage controller 310 determines, for example, the range from physical address numbers “144” to “167” as a new storage range of data “B” by the process of step S 264.
  • the adjacent group management table 530 is updated, for example, to the state of the table 530d of FIG.
  • the compressed data "B” is stored in the physical disk 800 as shown in the arrangement example 800d of FIG.
  • the address conversion table 510 is brought into the state of the table 510d of FIG. 16 by the process of step S270.
  • step S53 the flow of the process when the result of the determination in step S53 is "absent" will be described.
  • the process moves to step S56, and the storage controller 310 caches the data "A".
  • the storage controller 310 links the page ID of the data “B” and the page ID of the data “A” to the adjacent group number “0” (step S57). Also, the storage controller 310 sets the value of the storage flag of the adjacent group whose adjacent group number is “0” to “1” (step S 58).
  • step S 264 the range of physical address numbers “1056” to “1071” is determined as a new storage range of data “A”, and the range of “1072” to “1095” is a new range of data “B”. It is decided as a proper storage range.
  • ⁇ Effect> According to the storage array device 300 of the first embodiment, among the cached data, data whose logical addresses are adjacent to each other also becomes adjacent to each other in the physical address by the write back processing. This improves the performance associated with data read. The reason is that multiple data with adjacent logical addresses (that is, there is a high possibility of being simultaneously subject to a read request) can be read at one time (that is, continuously in one seek). It is from.
  • the write back process is performed based on the LRU method at the timing when any of the target data is to be discarded, so the write back process does not compete with the request from the host computer 100 which is the upper apparatus. That is, data reordering is performed without degrading the performance of responses to requests.
  • the storage controller 310 also performs write back processing on data for which only a read request has been made, so compared to the case where write back is performed only on dirty data, It is considered that data adjacent to either the logical address or the physical address will be more.
  • the data adjacent to the read data is cached before a request for an operation on data adjacent to the read data is issued.
  • the cache hit rate is improved because adjacent data on the logical address is highly likely to be related.
  • the storage controller 31 is a module that reads data from the storage in which the logical disk is built and writes data to the storage.
  • FIG. 20 is a block diagram showing the configuration of the storage controller 31. As shown in FIG.
  • the storage controller 31 includes a cache processing unit 32, a setting unit 33, a determination unit 34, and a writing unit 35.
  • the cache processing unit 32 performs cache processing for storing data stored in the physical disk in the cache storage unit.
  • a physical disk is an entity that stores data in storage.
  • the cache storage unit is a storage area for storing data as a cache.
  • the compression and decompression control unit 312 in the first embodiment is an example of the cache processing unit 32.
  • the setting unit 33 specifies a set of data adjacent to each other on the logical disk and not adjacent to each other on the physical disk among the data stored in the cache storage unit. Then, the setting unit 33 sets a group including the specified data set.
  • Two pieces of data adjacent in the logical disk means that the range of logical addresses set in each of the two pieces of data is continuous.
  • the process of the first case in the first embodiment is an example of the process described above by the setting unit 33.
  • the determination unit 34 performs a determination process triggered by the fact that all cached data among the data belonging to the group are targets to be deleted from the cache storage unit. In the determination process, the determination unit 34 determines the range in which the data to be deleted is stored in the physical disk so that all the data belonging to the group are continuously arranged in the physical disk.
  • the processing from step S261 to step S266 of the "rewrite processing" in the first embodiment is an example of the determination processing.
  • the writing unit 35 writes the data to be deleted in the range determined by the determining unit 34.
  • the processes of step S268 and step S269 of the “write back process” in the first embodiment are an example of the process of the writing unit 35.
  • the cache processing unit 32 performs cache processing for storing data stored in the physical disk in the cache storage unit (step S101).
  • a trigger for performing cache processing is, for example, receiving a read request or a write request from a host device such as a host computer.
  • the setting unit 33 specifies a set of data adjacent to each other in the logical disk and not adjacent to each other in the physical disk among the data stored in the cache storage unit (step S102). Then, the setting unit 33 sets a group including the specified data set (step S103).
  • the determining unit 34 belongs to the group in the physical disk In order to arrange all the data continuously, the range for storing the data to be deleted in the physical disk is determined.
  • the writing unit 35 writes the data to be deleted in the range determined by the determining unit 34 (step S105).
  • the processing of each component may be realized, for example, by the computer system reading and executing a program stored in a computer readable storage medium that causes the computer system to execute the processing.
  • the “computer-readable storage medium” is, for example, a portable medium such as an optical disc, a magnetic disc, a magneto-optical disc, and a nonvolatile semiconductor memory, and a ROM (Read Only Memory) and a hard disc incorporated in a computer system. It is a storage device.
  • the "computer-readable storage medium” is one that can temporarily hold a program, such as volatile memory in a computer system, and one that transmits a program, such as a communication line such as a network or a telephone line.
  • the program may be for realizing a part of the functions described above, and may be capable of realizing the functions described above in combination with a program already stored in the computer system. .
  • the "computer system” is, as an example, a system including a computer 900 as shown in FIG.
  • the computer 900 includes the following configuration. ⁇ One or more CPUs (Central Processing Unit) 901 ROM 902 RAM (Random Access Memory) 903 ⁇ Program 904A loaded into RAM 903 and stored information 904B A storage device 905 for storing the program 904A and the stored information 904B . Drive device 907 for reading and writing the storage medium 906 Communication interface 908 connected to communication network 909 ⁇ Input / output interface 910 for data input / output .Bus 911 connecting each component For example, each component of each device in each embodiment is realized by the CPU 901 loading and executing a program 904A that implements the function of the component to the RAM 903.
  • a program 904A for realizing the function of each component of each device is stored in advance in, for example, the storage device 905 or the ROM 902. Then, the CPU 901 reads the program 904A as necessary.
  • the storage device 905 is, for example, a hard disk.
  • the program 904A may be supplied to the CPU 901 via the communication network 909, may be stored in advance in the storage medium 906, may be read by the drive device 907, and may be supplied to the CPU 901.
  • the storage medium 906 is, for example, a portable medium such as an optical disc, a magnetic disc, a magneto-optical disc, and a nonvolatile semiconductor memory.
  • each device may be realized by possible combination of separate computer 900 and program for each component.
  • a plurality of components included in each device may be realized by a possible combination of one computer 900 and a program.
  • each component of each device may be realized by another general purpose or dedicated circuit, a computer or the like, or a combination thereof. These may be configured by a single chip or may be configured by a plurality of chips connected via a bus.
  • each component of each device When a part or all of each component of each device is realized by a plurality of computers, circuits, etc., the plurality of computers, circuits, etc. may be centralized or distributed.
  • a computer, a circuit, etc. may be realized as a form in which each is connected via a communication network, such as a client and server system, a cloud computing system, and the like.
  • Cache processing means for performing cache processing for storing data stored in a physical disk in a cache storage unit; Setting means for specifying a group of data adjacent in the logical disk and not adjacent in the physical disk among the data stored in the cache storage unit, and setting a group including the specified group of data; , All data belonging to the group are continuously arranged on the physical disk, triggered by all cached data among the data belonging to the group being targeted for deletion from the cache storage unit.
  • a determination unit configured to determine a range in the physical disk for storing the data to be deleted. Writing means for writing the data to be deleted in the determined range; Storage controller.
  • Each of the data is a unit of data that can be compressed separately;
  • the writing means individually compresses each of the data to be deleted, and stores each compressed data in the determined range.
  • the storage controller according to appendix 1.
  • the cache processing unit When the storage controller receives a read request to read part of data belonging to the group, the cache processing unit also stores data not belonging to the read request that belongs to the group in the cache storage unit. , The storage controller according to appendix 1 or 2.
  • the setting unit receives a read request for reading data that does not belong to any of the groups, the storage controller stores the read request target data stored in the cache storage unit adjacent to the logical disk.
  • the storage controller may identify adjacent data on the physical disk, and setting a group including the identified data and the target data of the read request.
  • the storage controller according to any one of appendices 1 to 3.
  • the cache processing unit may The data to be cached from the data included in the group is compared based on the comparison of the size of the data after updating the data of the write request and the size of the data before updating of the data of the write request. Determine and cache the determined data, The storage controller according to any one of appendices 1 to 4.
  • a storage controller according to any one of appendices 1 to 5; Cache storage means functioning as the cache storage unit; A disk drive that includes the physical disk and on which the logical disk is built; Storage array device.
  • Cache storage means functioning as the cache storage unit
  • a disk drive that includes the physical disk and on which the logical disk is built
  • Storage array device [Supplementary Note 7] Perform cache processing for storing data stored in a physical disk in a cache storage unit; Among the data stored in the cache storage unit, a set of data adjacent in the logical disk and not adjacent in the physical disk is specified, and a group including the specified data set is set. All data belonging to the group are continuously arranged on the physical disk, triggered by all cached data among the data belonging to the group being targeted for deletion from the cache storage unit.
  • the target data of the read request stored in the cache storage unit is adjacent in the logical disk and adjacent in the physical disk, Identify the data and set up a group that includes the identified data and the target data of the read request, The data storage method according to any one of appendices 7 to 9.
  • Cache processing for performing cache processing for storing data stored on a physical disk in a cache storage unit; Setting processing for specifying a group of data adjacent in the logical disk and not adjacent in the physical disk among the data stored in the cache storage unit, and setting a group including the specified group of data; , All data belonging to the group are continuously arranged on the physical disk, triggered by all cached data among the data belonging to the group being targeted for deletion from the cache storage unit.
  • a computer readable storage medium storing a program that causes a computer to execute the program.
  • Each of the data is a unit of data that can be compressed and decompressed individually; The write process individually compresses each of the data to be deleted and stores each compressed data in the determined range.
  • the cache processing When the computer receives a read request to read part of data belonging to the group, the cache processing also stores data not belonging to the read request that belongs to the group in the cache storage unit.
  • the target data of the read request stored in the cache storage unit is adjacent to the data in the logical disk; And identifying adjacent data on the physical disk, and setting up a group including the identified data and the target data of the read request.
  • the storage medium according to any one of appendices 12-14.
  • the cache process is performed when the computer receives a write request for updating part of data belonging to the group.
  • the data to be cached from the data included in the group is compared based on the comparison of the size of the data after updating the data of the write request and the size of the data before updating of the data of the write request. Determine and cache the determined data,

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

データの読み出しおよび書き込みに関する性能が向上したストレージアレイ装置を提供する。本発明の一態様に係るストレージコントローラは、物理ディスクに記憶されたデータをキャッシュ記憶部に格納するキャッシュ処理を行うキャッシュ処理部と、前記キャッシュ記憶部に記憶されたデータのうち、論理ディスクにおいて隣り合い、かつ前記物理ディスクにおいて隣り合っていない、データの組を特定し、特定されたデータの組を含むグループを設定する設定部と、前記グループに属するデータのうちキャッシュされているデータ全てが前記キャッシュ記憶部から削除される対象となったことを契機として、前記物理ディスクにおいて前記グループに属するデータ全てが連続的に配置されるように、前記物理ディスクにおける、前記削除される対象となったデータを格納する範囲を決定する決定部と、前記決定された範囲に、前記削除される対象となったデータを書き込む書き込み部と、を備える。

Description

ストレージコントローラ、ストレージアレイ装置、データ格納方法、および記憶媒体
 本開示は、記憶領域に対するデータの読み出しおよび書き込みの技術に関する。
 様々な種類のデータを利用する技術の発展に伴い、扱われるデータの量は急速に増加している。大容量のデータを扱う場合、データを圧縮する技術が有用である。データを圧縮後にディスク等の記憶装置に保存する技術において、データが格納される領域を仮想化し、上位装置は仮想的なディスクである論理ディスクを対象にデータの操作を行う技術がある。
 ライトバック等によりデータが実在の物理ディスクへ格納される際、論理ディスク上では連続するデータが、物理ディスク上では離散して格納される場合がある。頻繁に更新が行われるほど、離散の度合いは強くなる。離散の度合いが強いと、物理ディスクからのデータの読み出しにかかる時間は増加し、その結果、アクセスの速さが低下する。
 アクセスの速さが離散的な配置によって低下することを抑制する技術は、いくつか知られている。特許文献1の技術では、格納される圧縮データがディスク上の特定の割り当て領域に収まらない場合、その割り当て領域の近傍の未使用部分を探し、近傍の物理ブロックを確保する。近傍でない物理ブロックには圧縮データを極力割り当てないようにすることで、シーク動作の回数を抑える。しかし、特許文献1の技術は、一度離散して格納されたデータをディスク上で連続させる技術ではない。
 データの離散的な配置を少なくする方法としては、デフラグメンテーションと呼ばれる、データが連続になるように並べ替えを行う方法が一般に知られているが、一般的なデフラグメンテーションは、実行に時間を要する。特に頻繁にアクセスされるデータに対してデフラグメンテーションを行うと、デフラグメンテーション中におけるそのデータへのアクセスが制限されるため、総合的にはアクセスの速さが低下する場合がある。
 他に、データの離散的な配置を少なくする技術を開示する文献として、特許文献2および3がある。
 特許文献2の技術では、固定のサイズを有する複数の圧縮グループが定義される。圧縮グループ内の圧縮データを論理アドレスの昇順に再配列するステップや、圧縮グループにデータ領域を割り当てるステップが、記載されている。更新により元のデータ領域を超えるサイズになった圧縮データに対しては、例外領域が割り当てられる。特許文献2には、データが例外領域に書き込まれることによるデータの断片化を修正する処理も記載されるが、この処理は定期的に行われる処理であり、デフラグメンテーションと同様の処理である。
 特許文献3の技術では、データはセグメントという、圧縮できる単位で管理される。特許文献3のディスク制御装置は、ホストコンピュータから見える論理的なアドレスと物理アドレスとの間の順序性ができるだけ保たれるようなアルゴリズムにより、圧縮したデータの物理アドレスを決定する。
 以下は、本願発明に部分的に関連する発明を記載する文献である。
 特許文献4は、圧縮データを複数集めて固定長の圧縮グループを作る技術を開示している。この技術では、ディスク制御装置が、ある一定の論理セクタサイズを持つサイズの論理グループが生成されるように、論理グループを構成する圧縮データを選び取ることで、ディスク使用率が高まる。
 特許文献5は、データのコピーをコピー先のストレージ装置に送信する際に、ストレージ装置がコピーをディスクに記録する際におけるディスクの磁気ヘッドの移動時間が短縮されるように、データを並べ替えてから、データをストレージ装置に送信する、という技術を開示している。
 特許文献6は、将来処理対象となる可能性のある圧縮データの先読みを行うという技術を開示している。
特許第3419538号公報 特開平08-328749号公報 特開平07-129470号公報 特許第3426385号公報 特開2013-073388号公報 特開2013-246646号公報
 特許文献2および4における「圧縮グループ」、特許文献3における「セグメント」は、構成するデータの長さの合計または範囲が予め固定的に決められた、グループである。しかし、グループが異なっているが関連性が高い(例えば、同時に使用される可能性が高い)ようなデータが存在し得る。上記の技術では、そのような、関連性が高いデータが、必ずしも、物理ディスク上で連続して格納されるとは限らない。
 本発明は、データの読み出しおよび書き込みに関する性能が向上したストレージアレイ装置を提供することを目的の1つとする。
 本発明の一態様に係るストレージコントローラは、物理ディスクに記憶されたデータをキャッシュ記憶部に格納するキャッシュ処理を行うキャッシュ処理手段と、前記キャッシュ記憶部に記憶されたデータのうち、論理ディスクにおいて隣り合い、かつ前記物理ディスクにおいて隣り合っていない、データの組を特定し、特定されたデータの組を含むグループを設定する設定手段と、前記グループに属するデータのうちキャッシュされているデータ全てが前記キャッシュ記憶部から削除される対象となったことを契機として、前記物理ディスクにおいて前記グループに属するデータ全てが連続的に配置されるように、前記物理ディスクにおける、前記削除される対象となったデータを格納する範囲を決定する決定手段と、前記決定された範囲に、前記削除される対象となったデータを書き込む書き込み手段と、を備える。
 本発明の一態様に係るデータ格納方法は、物理ディスクに記憶されたデータをキャッシュ記憶部に格納するキャッシュ処理を行い、前記キャッシュ記憶部に記憶されたデータのうち、論理ディスクにおいて隣り合い、かつ前記物理ディスクにおいて隣り合っていない、データの組を特定し、特定されたデータの組を含むグループを設定し、前記グループに属するデータのうちキャッシュされているデータ全てが前記キャッシュ記憶部から削除される対象となったことを契機として、前記物理ディスクにおいて前記グループに属するデータ全てが連続的に配置されるように、前記物理ディスクにおける、前記削除される対象となったデータを格納する範囲を決定し、前記決定された範囲に、前記削除される対象となったデータを書き込む。
 本発明の一態様に係る記憶媒体は、物理ディスクに記憶されたデータをキャッシュ記憶部に格納するキャッシュ処理と、前記キャッシュ記憶部に記憶されたデータのうち、論理ディスクにおいて隣り合い、かつ前記物理ディスクにおいて隣り合っていない、データの組を特定し、特定されたデータの組を含むグループを設定する設定処理と、前記グループに属するデータのうちキャッシュされているデータ全てが前記キャッシュ記憶部から削除される対象となったことを契機として、前記物理ディスクにおいて前記グループに属するデータ全てが連続的に配置されるように、前記物理ディスクにおける、前記削除される対象となったデータを格納する範囲を決定する決定処理と、前記決定された範囲に、前記削除される対象となったデータを書き込む書き込み処理と、をコンピュータに実行させるプログラムを記憶する。
 本発明によれば、ストレージアレイ装置の、データの読み出しおよび書き込みに関する性能が向上する。
本発明の第1の実施形態に係るストレージアレイ装置の構成を示すブロック図である。 第1の実施形態のストレージアレイ装置の処理の流れの概要を示すフローチャートである。 キャッシュテーブルの一部の例を示す図である。 アドレス変換テーブルの例を示す図である。 破棄対象管理テーブルの例を示す図である。 隣接グループ管理テーブルの例を示す図である。 隣接グループリンクの例を示す図である。 物理ディスクにおけるデータの配置の例を示す図である。 第1のケースの処理の流れを示すフローチャートである。 第2のケースの処理の流れを示すフローチャートである。 第2のケースの処理における、書き戻し処理の詳細を示すフローチャートである。 第3のケースの処理の流れを示すフローチャートである。 第4のケースの処理の流れを示すフローチャートである。 第5のケースの処理の流れを示すフローチャートである。 キャッシュテーブルの一部の別の例を示す図である。 アドレス変換テーブルの別の例を示す図である。 隣接グループ管理テーブルの別の例を示す図である。 隣接グループリンクの別の例を示す図である。 物理ディスクにおけるデータの配置の別の例を示す図である。 本発明の一実施形態に係るストレージアレイ装置の機能構成を示すブロック図である。 本発明の一実施形態に係るストレージアレイ装置の動作の流れを示すフローチャートである。 本発明の各実施形態の各部を構成するハードウェアの例を示すブロック図である。
 以下、図面を参照しながら、本発明の実施形態を詳細に説明する。
 <<第1の実施形態>>
 まず、本発明の第1の実施形態について説明する。
 <構成>
 図1は、第1の実施形態に係るストレージアレイ装置300の構成を示すブロック図である。
 ストレージアレイ装置300は、ホスト計算機100との間で、有線または無線の通信により、相互に信号のやりとりが可能であるように構成される。
 ストレージアレイ装置300は、ストレージコントローラ310と、ディスクドライブ320と、を含む。ディスクドライブ320は、ホスト計算機100が扱うデータを記憶する。ストレージコントローラ310は、ディスクドライブ320におけるデータの読み出しおよび書き込みを行う。
 ディスクドライブ320は、データを記憶する実体である物理ディスク800を備える。物理ディスク800は、例えば、HDD(Hard Disk Drive)である。物理ディスク800は、SSD(Solid State Drive)等、他の記憶装置でもよい。
 図1において、物理ディスク800におけるデータの配置の例が、実線の吹き出しの中に示されている。図1で示される例において、1つのセルは4KB(キロバイト)分の領域を表している。例えば、「データC」は、物理アドレスにおける番号16から31までの領域に格納されている。
 また、ディスクドライブ320においては、ホスト計算機100による、データに対する操作(読み出し(リード)および書き込み(ライト))を行う対象である、論理ディスク321が構築されている。論理ディスク321におけるデータの配置の例が、図1において破線の吹き出しの中に示されている。例えば、「データC」は、論理ディスクにおいては論理アドレスの番号が64から95までの範囲を占めるデータである。
 ストレージコントローラ310は、キャッシュ管理部311と、圧縮伸長制御部312と、書き戻し部313とを備える。
 圧縮伸長制御部312は、データの圧縮、および圧縮されたデータの伸長(すなわち復元)を行う。圧縮伸長制御部312は、データを、ディスクドライブ320に格納する際には圧縮する。圧縮伸長制御部312は、データをキャッシュする際、すなわち、データをディスクドライブ320から読み出してキャッシュ管理部311のキャッシュ記憶部400(後述)へ格納する際には、読み出したデータを伸長する。
 書き戻し部313は、ディスクへのデータの書き戻し処理、すなわち、キャッシュ記憶部400に記憶されたデータをディスクドライブ320へ格納する処理を、行う。
 キャッシュ管理部311は、キャッシュデータを管理する。キャッシュ管理部311は、キャッシュ記憶部400と制御情報記憶部500とに大別される。
 キャッシュ記憶部400は、キャッシュデータを記憶する。キャッシュ記憶部400は、キャッシュテーブル410を用いてキャッシュデータを管理する。キャッシュテーブル410は、例えば、キャッシュデータと、キャッシュデータを識別するID(Identifier)であるページIDと、キャッシュデータの論理アドレスの情報と、LRU(Least Recently Used)ビットと、を記憶する。LRUビットは、数字が小さいほど、LRUビットが付与されたキャッシュデータが、最後に使用されてからの経過時間が長いデータであることを示す、情報である。
 制御情報記憶部500は、データのキャッシングとディスクドライブへのデータの格納に関する処理の制御を行うための情報を記憶する。制御情報記憶部500は、アドレス変換テーブル510と、破棄対象管理テーブル520と、隣接グループ管理テーブル530と、隣接グループリンク540と、を保持している。本実施形態ではこれらのテーブルは別々のものとして説明されるが、1つのテーブルが複数のテーブルの役割を担っていてもよい。
 アドレス変換テーブル510は、論理アドレスと物理アドレスとの対応関係を表す情報を記憶するテーブルである。後の説明で参照される図4のテーブル510aおよびテーブル510bが、アドレス変換テーブル510の例である。
 破棄対象管理テーブル520は、キャッシュデータの破棄(すなわち、キャッシュ記憶部400からの削除)についての情報を管理するテーブルである。具体的には、破棄対象管理テーブル520は、キャッシュデータの各々について、そのキャッシュデータが破棄の対象であるかを示す「破棄対象フラグ」が関連づけられた情報を記憶する。本開示の説明では、例えば、破棄対象フラグの値が「1」であるときは、そのキャッシュデータが破棄の対象であることを意味するとする。後の説明で参照される図5のテーブル520a、テーブル520bおよびテーブル520cが、破棄対象管理テーブル520の例である。
 隣接グループ管理テーブル530は、隣接グループの情報を記憶する。
 隣接グループとは、ストレージコントローラ310により設定される、データのグループである。隣接グループの構成員は、圧縮データ、または、1つの圧縮データに圧縮され得るひとまとまりのデータ(以下、「圧縮単位データ」と表記する)である。以下では、隣接グループを構成するデータを、「隣接グループに属するデータ」とも表記する。なお、隣接グループは概念上のものであるので、隣接グループについて言及する場合において、隣接グループに属するデータが圧縮されている状態であるか伸長されている状態であるかは、不問である。
 隣接グループ管理テーブル530は、図6のテーブル530aおよびテーブル530bのように、設定された隣接グループごとに、隣接グループを識別する番号である隣接グループ番号と、物理アドレスにおける開始位置である先頭物理アドレスと、物理ディスク800における格納範囲の長さを示すブロック長と、論理アドレスにおける開始位置である先頭論理アドレスと、論理ディスクにおける長さである論理範囲と、を示す情報を、記憶する。
 隣接グループリンク540は、隣接グループとキャッシュデータとの関係を表す情報を記憶する。後の説明で参照される図7のテーブル540aおよびテーブル540bが、隣接グループリンク540の例である。隣接グループリンク540において、キャッシュされているデータのページIDが、そのデータが属する隣接グループの隣接グループ番号に関連づけられる。なお、以下、隣接グループリンク540においてデータが隣接グループ番号に関連づけられることを、特に「データが隣接グループに紐付けられる」と称する。
 また、隣接グループリンク540は、隣接グループごとに格納フラグの値を記憶する。格納フラグは、二値の変数であり、例えば「0」または「1」の値をとる。本開示の説明では、格納フラグが「1」であることは、その格納フラグが付与された隣接グループに紐付けられているデータが、キャッシュ記憶部400から破棄される場合に物理ディスクへ格納される、ということを意味する。
 <動作>
 以下、ストレージアレイ装置300の動作を説明する。
 図2は、ホスト計算機100がストレージアレイ装置300にリード要求またはライト要求を発信した場合に開始される、ストレージアレイ装置300の動作の流れを示すフローチャートである。
 ストレージアレイ装置300は、ホスト計算機100から要求を受信すると(ステップS1)、受信した要求がリード要求であるかライト要求であるかによって異なる処理を行う。なお、リード要求は、データを読み出す要求であり、ライト要求は、データを書き込む(すなわち、対象の範囲のデータを更新する)要求である。
 受信した要求がリード要求である場合(ステップS2において「リード要求」)、ストレージアレイ装置300は、キャッシュヒットが起こるかを調べる(ステップS3)。キャッシュヒットとは、リード要求の対象となるデータがキャッシュ記憶部400から見つけ出されることである。キャッシュヒットが起こった場合(ステップS3においてYES)、ストレージコントローラ310は、キャッシュ記憶部400からリード要求の対象となるデータに対応するキャッシュデータを読み出し、そのキャッシュデータをホスト計算機100に送信すればよい(ステップS91)。この場合は、ストレージアレイ装置300は、要求に対する処理を、ステップS91の処理をもって終了する。
 キャッシュヒットが起こらなかった場合(ステップS3においてNO)、ストレージコントローラ310は、リード要求の対象となるデータを含む圧縮単位データ(以下、「リードデータ」)に対して隣接グループが設定されているか(言い換えれば、リードデータがいずれかの隣接グループに属するか)を調べる。具体的には、ストレージコントローラ310は、隣接グループ管理テーブル530を参照し、リードデータの論理アドレスの範囲が既存の隣接グループの範囲のいずれかに含まれるかを調べればよい。リードデータに対して隣接グループが設定されていない場合(ステップS4においてNO)、ストレージコントローラ310は、第1のケースの処理(ステップS10)を行う。リードデータに対して隣接グループが設定されている場合(ステップS4においてYES)、ストレージコントローラ310は、第4のケースの処理(ステップS40)を行う。
 第1のケースの処理または第4のケースの処理を行う場合は、ストレージコントローラ310は、ホスト計算機100からの要求に対する応答として、リード要求の対象となるデータをホスト計算機100に送信する(ステップS5)。なお、ストレージコントローラ310は、このステップS5の処理を、第1のケースの処理または第4のケースの処理の途中で行ってもよい。
 受信した要求がライト要求である場合(ステップS2において「ライト要求」)、ストレージコントローラ310は、ライト要求の対象の範囲のデータを、ライト要求に従って更新する(ステップS6)。ライト要求の対象の範囲のデータがキャッシュデータとして既にキャッシュ記憶部400にある場合は、ストレージコントローラ310は、そのキャッシュデータを更新すればよい。ライト要求の対象の範囲のデータがキャッシュ記憶部400に無い場合において、ライト要求の対象が、物理ディスク800に記憶されている圧縮データの一部の範囲であるときは、ストレージコントローラ310は、物理ディスク800からその圧縮データをキャッシュしてから、キャッシュされたデータにおけるライト要求の対象の範囲を更新する。ライト要求の対象が、物理ディスク800に記憶されている圧縮データの全部であるときは、ストレージコントローラ310は、物理ディスク800から圧縮データをキャッシュせず、ライト要求が書き込みを要求しているデータをキャッシュ記憶部400に記録するだけでもよい。
 以下、ライトデータによって更新された範囲を含む圧縮単位データを、「ライトデータ」と表記する。
 次に、ストレージコントローラ310は、ライトデータに対して隣接グループが設定されているかを調べる(ステップS7)。ライトデータに対して隣接グループが設定されていない場合(ステップS7においてNO)、ストレージコントローラ310は、第3のケースの処理(ステップS30)を行う。ライトデータに対して隣接グループが設定されている場合(ステップS7においてYES)、ストレージコントローラ310は、第5のケースの処理(ステップS50)を行う。
 以下、第1のケースの処理から第5のケースの処理について、詳細に説明する。なお、第2のケースの処理は、キャッシュの破棄の必要が生じたケースにおける処理である。
 [[第1のケースの処理]]
 第1のケースは、いずれの隣接グループにも属さないデータの一部または全部に対するリード要求を、ストレージアレイ装置300が受信するケースである。
 以下の説明において、キャッシュテーブル410、アドレス変換テーブル510、破棄対象管理テーブル520、隣接グループ管理テーブル530、隣接グループリンク540、および、物理ディスク800におけるデータの配置を、それぞれ図3から図8に示す。
 第1のケースが起こる直前の状況の例(以下、「第1の状況例」とも称す)として、以下の状況を想定する。物理ディスク800には、圧縮データ「A」、「B」および「C」が格納されている(図8の配置例800a)。圧縮データ「A」、「B」および「C」は、それぞれ、1つの圧縮データに圧縮され得るひとまとまりのデータである圧縮単位データ「A」、「B」および「C」のそれぞれが圧縮された状態のデータである。以下の説明では、圧縮データ「A」と圧縮単位データ「A」とを、区別せずにデータ「A」と呼ぶ。データ「B」およびデータ「C」も同様である。データ「A」、「B」および「C」は、物理ディスク800においては、圧縮率50%で圧縮された状態で格納されている。データに付された記号「A」、「B」および「C」は、説明のために付された記号である。ストレージアレイ装置300は、圧縮されたひとまとまりのデータの各々の範囲を認識できていればよく、必ずしもデータを名前によって識別しなくてもよい。
 物理ディスク800においては、図8の配置例800aの通り、データ「A」とデータ「B」とは、互いに離れた位置にある。一方、論理ディスク321においては、データ「A」のアドレスの範囲は0~31、データ「B」のアドレスの範囲は32~63、データ「C」のアドレスの範囲は64~95であるとする。アドレス変換テーブル510には、データ「A」、「B」、および「C」の論理アドレスの範囲と物理アドレスの範囲とに関する情報が記憶されている(図4のテーブル510a)。ただし、「データ名」は、本実施形態の説明の便宜のために示されているが、実際にアドレス変換テーブル510が「データ名」の情報を有している必要はない。また、アドレス変換テーブル510における「格納ブロック個数」とは、物理ディスク800においてデータが格納されている範囲の長さを、4KBを単位として表した情報である。
 キャッシュ記憶部400のキャッシュテーブル410には、圧縮伸長制御部312により伸長されたデータ「A」が、ページIDが「0」であるキャッシュデータとして、既に格納されているとする(図3のテーブル410a)。
 第1の状況例では、隣接グループは、まだ1つも設定されていないとする。隣接グループ管理テーブル530および隣接グループリンク540は初期状態(すなわち、隣接グループが1つも設定されていない状態)を表す(図6のテーブル530aおよび図7のテーブル540a)。また、破棄対象管理テーブル520における各ページIDの破棄対象フラグの値は、「0」(初期値)である(図5のテーブル520a)。
 以上説明された第1の状況例において、ストレージアレイ装置300はホスト計算機100からデータ「B」のリード要求を受信したとする。そのような場合、データ「B」には隣接グループが設定されていないので、ストレージコントローラ310は、第1のケースの処理(ステップS10)を行う。以下、第1のケースの処理の流れを、上記の第1の状況例に沿って説明する。図9は、第1のケースの処理の流れを示すフローチャートである。
 まず、ストレージコントローラ310は、リードデータをキャッシュする(ステップS11)。具体的には、ストレージコントローラ310は、リードデータを、物理ディスク800から読み出し、圧縮伸長制御部312により伸長する。そして、ストレージコントローラ310は、伸長された後のデータをキャッシュ記憶部400に格納する。キャッシュ記憶部400は、キャッシュテーブル410を、リードデータ「B」が例えばページIDが「1」であるデータとしてキャッシュされていることを示す状態に、更新する(図3のテーブル410b)。ストレージコントローラ310は、このステップS11の処理の後に、リード要求に対する応答としてデータ「B」をホスト計算機100に送信してもよい(図2のステップS5)。
 次に、ストレージコントローラ310は、論理ディスクにおいて、リードデータに隣接するキャッシュデータがあるかを調べる(ステップS12)。すなわち、ストレージコントローラ310は、リードデータの論理アドレスの範囲の直前または直後に位置するデータを特定し、特定されたデータがキャッシュ記憶部400に記憶されているかを調べる。アドレス変換テーブル510(図4のテーブル510a)によれば、リードデータ「B」の直前にはデータ「A」があり、直後にはデータ「C」がある。そして、キャッシュテーブル410によれば、データ「A」は、キャッシュ記憶部400に記憶されており、データ「C」は、キャッシュ記憶部400に記憶されていない。よって、このような状況例では、ストレージコントローラ310は、論理ディスクにおいてリードデータに隣接するキャッシュデータとして、データ「A」が存在することを検出する(ステップS12においてYES)。この場合、処理はステップS13に移る。以下、ステップS12で検出されるデータを「隣接データ」と呼ぶ。
 なお、隣接データが無かった場合(ステップS12においてNO)は、ストレージコントローラ310は、ステップS13以降の処理を行わずに処理を終了する。
 ステップS13では、ストレージコントローラ310は、リードデータと隣接データとが、物理ディスク800において隣接しているかを調べる。
 図8の配置例800a、および、アドレス変換テーブル510(図4のテーブル510a)で示される通り、リードデータ「B」の物理アドレスの範囲と隣接データ「A」の物理アドレスの範囲とは、連続しない。すなわち、リードデータ「B」と隣接データ「A」とは、物理ディスク800において隣接していない(ステップS13においてNO)。この場合、処理はステップS14に移る。
 なお、リードデータと隣接データとが物理ディスク800において隣接している場合(ステップS13においてNO)は、ストレージコントローラ310は、ステップS14以降の処理を行わずに処理を終了してもよい。
 ステップS14において、ストレージコントローラ310は、隣接データに隣接グループが設定されているかを調べる。第1の状況例では、隣接データ「A」にはいずれの隣接グループも設定されていないため(ステップS14においてNO)、処理はステップS15に移る。
 ステップS15において、ストレージコントローラ310は、リードデータと隣接データとを含む新たな隣接グループを設定する。具体的には、ストレージコントローラ310は、未使用の隣接グループ番号(たとえば番号「0」)を、リードデータと隣接データとが属する新たな隣接グループの隣接グループ番号として選択する。そして、ストレージコントローラ310は、隣接グループリンク540において、選択された隣接グループ番号にリードデータのページIDと隣接データのページIDとを紐付ける(図7のテーブル540b)。また、ストレージコントローラ310は、隣接グループ管理テーブル530の選択された隣接グループ番号の欄において、先頭論理アドレス(その隣接グループを構成するデータのうち先頭のデータの、先頭論理アドレス)と、論理範囲(先頭論理アドレスから、その隣接グループを構成するデータのうち最後尾のデータの、論理アドレスの最後尾までの、長さ)を書き込んでもよい。
 なお、隣接データが隣接グループに属している場合(ステップS14においてYES)は、処理はステップS16に移る。ステップS16では、ストレージコントローラ310は、隣接データが属する隣接グループにリードデータを追加する。すなわち、ストレージコントローラ310は、隣接グループリンク540において、隣接データが属する隣接グループの隣接グループ番号に、リードデータのページIDを紐付ける。また、隣接データが属する隣接グループのデータのうちキャッシュされていないデータがあれば、そのデータをキャッシュする(ステップS17)。
 ステップS15またはステップS17の処理の後、ストレージコントローラ310は、隣接グループリンク540において、リードデータが属することとなった隣接グループの格納フラグの値を「1」に設定する(ステップS18)。
 以上をもって、ストレージコントローラ310は、第1のケースの処理を終了する。
 [補足]
 ステップS12の処理で2つの隣接データが検出される場合があり得る。この場合、ストレージコントローラ310は、検出された2つの隣接データのうちいずれか1つを、ステップS13以降の処理で扱う隣接データとして選択してもよい。
 あるいは、ストレージコントローラ310は、2つの隣接データに隣接グループが設定されていない場合、2つの隣接データとリードデータとを含む新たな隣接グループを設定してもよい。また、ストレージコントローラ310は、2つの隣接データのうち一方に隣接グループが設定されている場合、その隣接グループにリードデータともう一方の隣接データとを追加してもよい。また、ストレージコントローラ310は、2つの隣接データの両方に隣接グループが設定されている場合、2つの隣接グループを統合して、元の隣接グループに属するデータと、リードデータとで構成される、1つの隣接グループを設定してもよい。
 あるいは、ストレージコントローラ310は、2つの隣接データそれぞれに対し、別々の隣接グループを設定してもよい。なお、この場合、リードデータを含む隣接グループが2つ設定されることとなる。
 あるいは、ストレージコントローラ310は、2つの隣接データとリードデータとのみで構成される新たな隣接グループを設定してもよい。なお、この場合、2つの隣接データは、それぞれ、2つの隣接グループ(すなわち、元の隣接グループと、新たな隣接グループ)に属することがあり得る。
 [変形例1]
 ストレージコントローラ310は、ステップS12において、直前または直後のどちらかの隣接データのみを検出するように構成されてもよい。
 [変形例2]
 ステップS13の分岐はなくてもよい。すなわち、ストレージコントローラ310は、リードデータと隣接データとが物理ディスク800において隣接しているか否かを問わず、ステップS14以降の処理を行うよう、構成されていてもよい。ただし、リードデータと隣接データとが物理ディスク800において隣接している場合は、ステップS18の処理が省略されてもよい。
 [[第2のケースの処理]]
 キャッシュの破棄の必要が生じたケースを第2のケースとして、第2のケースにおけるストレージアレイ装置300の動作の流れを、図10のフローチャートを参照しながら説明する。具体的な状況の例(以下、「第2の状況例」とも称す)として、上記第1のケースの説明で例示された一連の処理が終わった後の状況を想定する。
 キャッシュの破棄の必要が生じた場合とは、例えば、新たなキャッシュデータをキャッシュ記憶部400に記憶させるための領域が不足する場合である。この場合、ストレージコントローラ310は、まず、破棄対象フラグの値が「0」であるキャッシュデータの中から、削除対象を決定する(ステップS21)。
 ストレージコントローラ310は、例えば、LRU(Least Recently Used)方式に則り、削除対象を決定する。すなわち、ストレージコントローラ310は、最後に使用されて(例えば、読み出されることと更新されることとを含む)からの経過時間が最も長いキャッシュデータを、削除対象として決定する。
 削除対象を決定した後、ストレージコントローラ310は、削除対象に隣接グループが設定されているかを調べる(ステップS22)。例えば、隣接グループリンク540(図7のテーブル540b)において、削除対象のページIDが、いずれかの隣接グループ番号に紐付けられていたら、削除対象に隣接グループが設定されていることがわかる。
 削除対象に隣接グループが設定されていなければ(ステップS22においてNO)、ストレージコントローラ310は、削除対象をキャッシュ記憶部400から削除し(ステップS92)、処理を終了してよい。
 削除対象に隣接グループが設定されている場合は(ステップS22においてYES)、ストレージコントローラ310は、破棄対象管理テーブル520における、その削除対象の破棄対象フラグの値を「1」に設定する(ステップS23)。ストレージコントローラ310は、隣接グループリンク540において隣接グループに紐付くキャッシュデータ全ての破棄対象フラグの値が「1」になるまで、その隣接グループを構成するキャッシュデータの削除を行わない。
 破棄対象フラグの値が「1」に設定された削除対象が属する隣接グループに紐付くキャッシュデータのいずれかの破棄対象フラグの値が「0」である場合、その隣接グループに紐付くキャッシュデータはまだ削除されない。このような場合は、ストレージコントローラ310はステップS21の処理を再び行い、新たな削除対象を決定してもよい(ステップS24においてNO)。
 なお、破棄対象フラグの値が「1」であるキャッシュデータをリードの対象とするリード要求が新たにホスト計算機100によりなされた場合、ストレージコントローラ310は、破棄対象フラグの値を「0」に設定してもよい。
 図5のテーブル520bは、ページIDが「0」であるキャッシュデータと、ページIDが「1」であるキャッシュデータとが、削除対象になった場合の、破棄対象管理テーブル520の例を示す。上記2つのページIDに関連づけられる破棄対象フラグの値が「1」になっている。
 図5のテーブル520bのように、破棄対象管理テーブル520において或る隣接グループに紐付くキャッシュデータ全ての破棄対象フラグの値が「1」になった場合(ステップS24においてYES)、ストレージコントローラ310は、隣接グループリンク540においてその隣接グループの格納フラグが「1」であるかを調べる(ステップS25)。
 隣接グループの格納フラグが「1」であれば(ステップS25においてYES)、ストレージコントローラ310は、その隣接グループに紐付くキャッシュデータを対象とする、書き戻し処理を行う(ステップS26)。この書き戻し処理については後で詳述する。隣接グループの格納フラグが「1」でなければ(ステップS25においてNO)、ストレージコントローラ310は、ステップS26の処理を行わなくてよい。
 ステップS26の処理の後、またはステップS25の判定の結果が「NO」であった場合は、ストレージコントローラ310は、キャッシュ記憶部400から、書き戻し処理が行われたキャッシュデータを削除する(ステップS27)(図3のテーブル410c)。
 そして、ストレージコントローラ310は、破棄対象管理テーブル520、および隣接グループリンク540から、削除したキャッシュデータの情報を消去する(ステップS28)。つまり、ストレージコントローラ310は、破棄対象管理テーブル520において、削除したキャッシュデータのページIDの破棄対象フラグの値を初期値の「0」にする(図5のテーブル520c)。また、ストレージコントローラ310は、隣接グループリンク540を、対象の隣接グループの格納フラグの値が初期値の「0」である状態、および、対象の隣接グループにはどのデータも紐付けられていない状態にする(図7のテーブル540a)。
 以上をもって、ストレージコントローラ310は、第2のケースの処理を終了する。
 [書き戻し処理の詳細]
 ステップS26の、対象のキャッシュデータをディスクドライブ320へ格納する書き戻し処理について、図11のフローチャートを参照しながら詳述する。
 まず、ストレージコントローラ310内の書き戻し部313は、書き戻し処理の対象のキャッシュデータを論理アドレス順に並べる(ステップS261)。隣接グループ番号「0」に紐付くデータであるデータ「A」およびデータ「B」が書き戻し処理の対象である場合、書き戻し部313は、アドレス変換テーブル510(図4のテーブル510a)の先頭論理アドレスの情報に基づき、2つのデータを、データ「A」、データ「B」の順に並べる。
 次に、書き戻し部313は、対象のキャッシュデータが属する隣接グループの格納範囲が設定されているかを調べる(ステップS262)。すなわち、書き戻し部313は、隣接グループ管理テーブル530において、対象のキャッシュデータが属する隣接グループ(以下、「対象隣接グループ」とも表記する)の先頭ブロックアドレスとブロック長が設定されているかを調べる。本実施形態では、先頭ブロックアドレスとブロック長との情報は、後述するステップS265の処理で初めて入力される情報であるから、対象隣接グループの先頭ブロックアドレスとブロック長とが設定されている場合とは、すなわち、対象隣接グループに属する少なくとも一部のキャッシュデータが以前に対象隣接グループに属している状態で書き戻し処理を受けている場合に相当する。対象隣接グループの先頭ブロックアドレスとブロック長とが設定されていない場合とは、すなわち、対象隣接グループに属する全てのキャッシュデータが、対象隣接グループに属してからは一度も書き戻し処理を受けていない場合に相当する。第2の状況例では、隣接グループ管理テーブル530は図6のテーブル530aの状態であり、格納範囲は設定されていないので、ステップS262の判定の結果は「NO」となる。
 ステップS262の判定の結果が「NO」である場合、書き戻し部313はステップS264の処理(後述)を行う。
 なお、ステップS262の判定の結果が「YES」である場合、書き戻し部313は、書き戻し処理の対象となったキャッシュデータの圧縮後のデータ(以下、「圧縮後書き戻しデータ」と表記する)が、元の圧縮データの格納範囲に収まるかを判定する(ステップS263)。
 元の圧縮データとは、ディスクドライブ320に格納されている、対象のキャッシュデータのキャッシュ前のデータに相当する圧縮データのことである。元の圧縮データの格納範囲は、アドレス変換テーブル510の「先頭物理アドレス」および「格納ブロック個数」によって示されている。例えば、図4のテーブル510aを参照すると、元の圧縮データ「A」の格納範囲は、番号「112」から4ブロック分(16KB分)の範囲である。
 圧縮後書き戻しデータのサイズは、対象のキャッシュデータが元の圧縮データから更新されていない場合は、元の圧縮データのサイズと同じである。対象のキャッシュデータが元の圧縮データから更新されている場合は、ストレージコントローラ310は、圧縮伸長制御部312により対象のキャッシュデータを圧縮し、その圧縮後のデータのサイズを特定すればよい。圧縮後のデータのサイズを特定する処理を行うタイミングは問わない。
 一例として、圧縮後書き戻しデータが、或る隣接グループを構成するキャッシュデータの全部に相当する場合、書き戻し部313は、隣接グループ管理テーブル530において示されたその隣接グループのブロック長と、圧縮後書き戻しデータのサイズとを比較すればよい。
 ステップS263の判定の結果が「NO」である場合、書き戻し部313は、ステップS264の処理を行う。
 ステップS264では、書き戻し部313は、圧縮後書き戻しデータの新たな格納範囲を決定する。書き戻し部313は、例えば、物理ディスクにおける、圧縮後書き戻しデータが収まる空の領域を任意に特定し、その領域を新たな格納範囲として決定してもよい。圧縮後書き戻しデータの元の圧縮データの格納範囲の直前および直後の少なくともいずれかが空であり、圧縮後書き戻しデータが収まる長さまでその格納範囲を拡張することが可能である場合は、書き戻し部313は、その格納範囲を拡張した範囲を新たな格納範囲として決定してもよい。
 ステップS264の処理により新たな格納範囲が決定されたら、ストレージコントローラ310は、隣接グループ管理テーブル530を更新する(ステップS265)。具体的には、ストレージコントローラ310は、隣接グループ管理テーブル530における、対象のキャッシュデータが属する隣接グループの、先頭物理アドレスの情報と、ブロック長の情報とを、決定された新たな格納範囲に基づいて書き込む。対象の隣接グループを構成する全てのデータが圧縮後書き戻しデータである場合は、ストレージコントローラ310は、例えば、先頭物理アドレスとして、決定された格納範囲の先頭アドレスを書き込み、ブロック長として、決定された格納範囲の長さを書き込む。ブロック長は、他のデータの格納範囲に重ならない範囲であれば、決定された格納範囲の長さを超える長さでもよい。なお、既に、先頭物理アドレスの情報と、ブロック長の情報とが書き込まれている場合は、ストレージコントローラ310は、圧縮後書き戻しデータの格納範囲が元の格納範囲から変化することによって変化する情報のみを、更新すればよい。
 また、ストレージコントローラ310は、先頭論理アドレス(対象隣接グループを構成するデータのうち先頭のデータの、先頭論理アドレス)と、論理範囲(対象隣接グループを構成するデータの各々の、論理ディスク上で占める範囲の合計)を書き込み、または更新する。
 なお、ステップS263の判定の結果が「YES」である場合は、書き戻し部313は、元の圧縮データの格納範囲を、圧縮後書き戻しデータの格納範囲として決定する(ステップS266)。この場合、書き戻し部313は、ステップS264およびステップS265の処理を行わなくてよい。
 格納範囲が決定されたら、書き戻し部313は、物理ディスク800における、元の圧縮データが格納されている領域を解放する(ステップS267)。すなわち、書き戻し部313は、元の圧縮データを物理ディスク800から消去する。言い換えれば、書き戻し部313は、元の圧縮データが格納されている領域に、無効データを書き込む。
 圧縮伸長制御部312が対象のキャッシュデータを圧縮する(ステップS268)。そして、書き戻し部313は、圧縮後のデータである圧縮後書き戻しデータを、ステップS264またはステップS266にて決定された格納範囲に格納する(ステップS269)。例として、物理ディスク800におけるデータの配置は、図8の配置例800bのようになる。
 また、ストレージコントローラ310は、圧縮後書き戻しデータの格納範囲に従って、アドレス変換テーブル510を更新する(ステップS270)。第2の状況例では、データ「A」とデータ「B」との格納範囲が変化したので、ストレージコントローラ310は、アドレス変換テーブル510におけるデータ「A」およびデータ「B」の「先頭物理アドレス」の値を、それぞれのデータの新たな開始位置の番号に更新する(図4のテーブル510b)。
 以上が、ステップS26の書き戻し処理の詳細例である。
 [[第3のケースの処理]]
 第3のケースは、隣接グループを構成しないデータの一部または全部に対するライト要求を、ストレージアレイ装置300が受信するケースである。例えば、上記第1のケースの初期状態において、データ「B」の一部または全部に対するライト要求をストレージアレイ装置300が受信するケースが、この第3のケースに相当する。
 第3のケースの処理(ステップS30)の流れを、図12のフローチャートを参照しながら説明する。第3のケースの処理の流れは、第1のケースの処理に類似する。
 ストレージコントローラ310は、ライト要求に従って対象のデータを更新した後(図2のステップS6)、論理ディスクにおいて、更新後のデータに隣接するキャッシュデータがあるかを調べる(ステップS31)。以下、ステップS31で検出されるデータを「隣接データ」と呼ぶ。
 隣接データが無かった場合(ステップS31においてNO)は、ストレージコントローラ310は、ステップS32以降の処理を行わずに処理を終了する。
 隣接データがあった場合(ステップS31においてYES)は、ストレージコントローラ310は、更新後のデータと隣接データとが、物理ディスク800において隣接しているかを調べる(ステップS32)。
 更新後のデータと隣接データとが、物理ディスク800において隣接している場合(ステップS32においてYES)は、ストレージコントローラ310は、ステップS33以降の処理を行わずに処理を終了する。
 更新後のデータと隣接データとが、物理ディスク800において隣接していない場合(ステップS32においてNO)、次にストレージコントローラ310は、隣接データに隣接グループが設定されているかを調べる(ステップS33)。
 隣接データ「A」に隣接グループが設定されていない場合(ステップS33においてNO)、ストレージコントローラ310は、ライトデータと隣接データとを含む新たな隣接グループを設定する(ステップS34)。
 隣接データ「A」に隣接グループが設定されている場合(ステップS33においてYES)、ストレージコントローラ310は、隣接データが属する隣接グループにライトデータを追加する(ステップS35)。すなわち、ストレージコントローラ310は、隣接グループリンク540において、隣接データが属する隣接グループの隣接グループ番号に、ライトデータのページIDを紐付ける。また、ストレージコントローラ310は、隣接データが属する隣接グループに属するデータのうち、キャッシュされていないデータをキャッシュする(ステップS36)。
 ステップS35またはステップS36の処理の後、ストレージコントローラ310は、隣接グループリンク540において、ライトデータが属することとなった隣接グループの格納フラグの値を「1」に設定する(ステップS37)。
 以上をもって、ストレージコントローラ310は第3のケースの処理を完了する。
 [[第4のケースの処理]]
 第4のケースは、隣接グループを構成するデータの一部または全部に対するリード要求を、ストレージアレイ装置300が受信するケースである。
 第4のケースが発生する直前の状況の例(以下、「第4の状況例」とも称す)として、上記第2のケースで例示された一連の処理が終わった後の状況を想定する。すなわち、データ「A」およびデータ「B」は、隣接グループ番号が「0」である隣接グループに属し、物理ディスク800上で並んで格納されているとする。
 キャッシュテーブル410は図3のテーブル410cの状態であり、アドレス変換テーブル510は図4のテーブル510bの状態であり、破棄対象管理テーブル520は図5のテーブル520cの状態であり、隣接グループ管理テーブル530は図6のテーブル530bの状態であり、隣接グループリンク540は図7のテーブル540aの状態であり、物理ディスク800におけるデータの配置は図8の配置例800bの状態であるとする。
 上記のような第4の状況例で、ホスト計算機100から、データ「B」を読み出す要求を含むリード要求が発信されたとする。図4のテーブル510bおよび図6のテーブル530bに示されるように、データ「B」は、隣接グループ番号が「0」である隣接グループの格納範囲に含まれるので、ストレージコントローラ310は、第4のケースの処理(ステップS40)を行う。以下、図13のフローチャートを参照しながら第4のケースの処理の流れを説明する。
 まず、ストレージコントローラ310は、リードデータが属する隣接グループに属するデータをキャッシュする(ステップS41)。ストレージコントローラ310は、隣接グループ管理テーブル530において「先頭アドレス」の情報と「ブロック長」の情報とによって示される範囲を、物理ディスク800から読み出せばよい。第4の状況例では、これにより、リードデータ「B」と同一の隣接グループに属するデータであるデータ「A」が、キャッシュ記憶部400に記憶される。
 ストレージコントローラ310は、このステップS41の処理の後に、リード要求に対する応答としてデータ「B」をホスト計算機100に送信してもよい(図2のステップS5)。
 そして、ストレージコントローラ310は、隣接グループリンク540を更新する(ステップS42)。具体的には、ストレージコントローラ310は、隣接グループリンク540における、リードデータが属する隣接グループの隣接グループ番号に、その隣接グループを構成するデータ(読み出されたデータ)を紐付ける。
 なお、格納フラグの値は「0」のままでよい。
 また、ストレージコントローラ310は、ステップS42の処理でキャッシュされた、リードデータ以外のデータに対しては、破棄対象フラグの値を「1」に設定してもよい。
 以上をもって、第4のケースにおけるストレージアレイ装置300の処理は完了する。
 [補足1] リードデータが複数のグループに属している場合
 あるデータが複数のグループに属することがあり得る実施形態では、ステップS41においてリードデータが属する隣接グループが複数検出される場合があり得る。そのような場合、例えば、ストレージコントローラ310は、検出された隣接グループのうちいずれか1つを、第4のケースの処理の対象となる隣接グループとして選択すればよい。
 隣接グループの選択にあたっては、優先順位を決定する任意のアルゴリズムに基づいて選択すればよい。上記のアルゴリズムは、例えば、構成するデータの使用頻度の平均が高いグループほど優先度を高く評価するアルゴリズム、構成するデータのうち最後に使用されたデータが最後に使用されてからの経過時間が短いほど優先度を高く評価するアルゴリズム、データ長が短いほど(または長いほど)優先度を高く評価するアルゴリズム、またはそれらのアルゴリズムの組み合わせでもよい。
 [補足2] 読み出すデータの長さ
 隣り合うデータを際限なくグループ化すると、ステップS42の処理においてキャッシングの対象となるデータが長すぎる場合があり得る。
 そこで、ストレージコントローラ310は、ステップS42の処理において、読み出す範囲を絞ってもよい。例えば、ストレージコントローラ310は、隣接グループを構成する圧縮データのうち所定の長さの範囲以内の、連続する圧縮データの組を、読み出してもよい。
 例えば、ストレージコントローラ310は、リードデータとリードデータより前のデータとを含む、所定の長さの範囲のデータを読み出してもよい。あるいは、リードデータの格納範囲と、リードデータより前の所定の長さの範囲のデータを、読み出してもよい。
 [[第5のケースの処理]]
 第5のケースは、隣接グループを構成するデータの一部または全部に対するライト要求を、ストレージアレイ装置300が受信するケースである。第5のケースの処理(ステップS50)の流れを、図14のフローチャートを参照しながら説明する。
 ストレージコントローラ310は、ライト要求の対象のデータ(以下、「ライトデータ」と呼ぶ)をライト要求に従って更新した(図2のステップS6)後、ライトデータの更新後のデータを圧縮した場合のデータのサイズを特定する(ステップS51)。ストレージコントローラ310は、圧縮伸長制御部312により更新後のデータを圧縮し、圧縮後のデータのサイズを特定すればよい。ストレージコントローラ310は、圧縮後のデータをキャッシュ記憶部400に一時的に格納してもよい。
 次に、ストレージコントローラ310は、更新後のデータの圧縮後のデータが元の圧縮データのサイズを超えるかを調べる(ステップS52)。
 更新後のデータの圧縮後のデータが元の圧縮データのサイズを超えないならば、更新後のデータは、元の圧縮データの格納範囲に収まるはずである。そのような場合(ステップS52においてNO)、隣接グループ管理テーブル530の内容は変更されなくてよい。また、ストレージコントローラ310は、ライトデータが属する隣接グループを構成するデータを、並べ直す必要はない。したがって、処理は後述のステップS57に移る。
 更新後のデータの圧縮後のデータが元の圧縮データのサイズを超える場合(ステップS52においてYES)は、ライトデータが属する隣接グループの少なくとも一部のデータの格納範囲が変更される必要がある。この場合、ストレージコントローラ310は、更新後のデータの圧縮後のデータが元の圧縮データのサイズを超える分(以下、「超過分」)の空き領域が、元の圧縮データの格納範囲の直前または直後にあるかを調べる(ステップS53)。
 超過分の空き領域が元の圧縮データの領域の直後にある場合(ステップS53において「直後にある」)、ストレージコントローラ310は、圧縮データの格納範囲を、後ろに拡張すればよい。この場合、ライトデータよりも物理ディスク上で先(前、早い方)にあるデータを移動させる必要はない。ストレージコントローラ310は、ライトデータと同一の隣接グループに属するデータのうち、論理ディスク上で更新後のデータより後ろにある、キャッシュされていないデータをキャッシュする(ステップS54)。
 超過分の空き領域が元の圧縮データの領域の直前にある場合(ステップS53において「直前にある」)、ストレージコントローラ310は、圧縮データの格納範囲を、前側に拡張すればよい。この場合、ライトデータよりも物理ディスク上で後ろにあるデータを移動させる必要はない。ストレージコントローラ310は、ライトデータと同一の隣接グループに属するデータのうち、論理ディスク上で更新後のデータより先(前、早い方)にある、キャッシュされていないデータをキャッシュする(ステップS55)。
 超過分の空き領域が元の圧縮データの領域の直前にも直後にもない場合(ステップS53において「ない」)、ライトデータが属する隣接グループに属するデータ全体を移動させる必要がある。ストレージコントローラ310は、ライトデータと同一の隣接グループに属する、キャッシュされていないデータをキャッシュする(ステップS56)。
 ステップS54、ステップS55またはステップS56の処理の後は、処理はステップS57に移る。
 ステップS57では、ストレージコントローラ310は、隣接グループリンク540における、ライトデータが属する隣接グループの隣接グループ番号に、ライトデータと、ステップS54~ステップS56の処理でキャッシュされたデータ(ある場合)とを、紐付ける。
 そして、ストレージコントローラ310は、隣接グループリンク540における、ライトデータが属する隣接グループの格納フラグの値を「1」に設定する(ステップS58)。
 以上をもって、第5のケースにおけるストレージアレイ装置300の処理は完了する。
 [具体例]
 第5のケースが発生する状況の例として、上記第2のケースで例示された一連の処理が終わった後の状況を想定する。すなわち、データ「A」およびデータ「B」は、隣接グループ番号が「0」である隣接グループに属し、物理ディスク800上で並んで格納されているとする。
 キャッシュテーブル410は図15のテーブル410c、アドレス変換テーブル510は図16のテーブル510c、隣接グループ管理テーブル530は図17のテーブル530c、隣接グループリンク540は図18のテーブル540c、物理ディスク800におけるデータの配置は図19の配置例800c、の状態であるとする。
 上記のような状況で、ホスト計算機100から、データ「B」を更新する要求を含むライト要求が発信されたとする。この場合のストレージアレイ装置300の処理の流れを説明する。
 ストレージアレイ装置300がライト要求を受信する(ステップS1)と、ストレージコントローラ310は、データ「B」をキャッシュし、キャッシュされているデータ「B」を更新する(ステップS6)。隣接グループ管理テーブル530によれば、データ「B」に対して、隣接グループ番号が「0」である隣接グループが設定されているので(ステップS7においてYES)、ストレージコントローラ310は、更新後のデータ「B」を圧縮した場合のデータのサイズを特定する(ステップS51)。例として、ストレージコントローラ310は、圧縮伸長制御部312により更新後のデータを圧縮し、圧縮後のデータ「B’」を、キャッシュテーブル410に、ページIDが「1」のデータとして格納する(図15のテーブル410d)。そして、ストレージコントローラ310は、圧縮データ「B’」のサイズを特定する。圧縮データ「B’」のサイズは、24KBであるとする。
 更新後のデータの圧縮後のデータが元の圧縮データのサイズを超えるので(ステップS52においてYES)、ストレージコントローラ310は、超過分、すなわち、データ「B’」と元の圧縮データ「B」との差(8KB)の分の空き領域が、元の圧縮データの格納範囲の直前または直後にあるかを調べる(ステップS53)。
 8KBの空き領域が元の圧縮データの領域の直後にあるとする(ステップS53において「直後にある」)。この場合、処理はステップS54に移るが、データ「B」は隣接グループの最後尾のデータであるので、キャッシュすべきデータはない。
 そして、ストレージコントローラ310は、データ「B」のページIDを、隣接グループ番号「0」に紐付ける(ステップS57)。また、ストレージコントローラ310は、隣接グループ番号が「0」である隣接グループの格納フラグの値を「1」に設定する(ステップS58)。隣接グループリンク540は、図18のテーブル540dの状態になる。
 この後、データ「A」がキャッシュされることなく、データ「B」の破棄対象フラグが「1」になった場合、ステップS26の書き戻し処理により、データ「B」は圧縮され、物理ディスク800へ格納される。ストレージコントローラ310は、ステップS264の処理により、例えば物理アドレス番号「144」から「167」までの範囲を、データ「B」の新たな格納範囲として決定する。ステップS265の処理により、隣接グループ管理テーブル530は、例えば図17のテーブル530dの状態に更新される。ステップS269の処理により、圧縮されたデータ「B」が、図19の配置例800dで示されるように物理ディスク800へ格納される。また、ステップS270の処理により、アドレス変換テーブル510は、図16のテーブル510dの状態になる。
 [別の具体例]
 上記具体例において、ステップS53の判定の結果が「ない」であった場合の処理の流れを説明する。この場合、処理はステップS56に移り、ストレージコントローラ310は、データ「A」をキャッシュする。
 そして、ストレージコントローラ310は、データ「B」のページIDと、データ「A」のページIDとを、隣接グループ番号「0」に紐付ける(ステップS57)。また、ストレージコントローラ310は、隣接グループ番号が「0」である隣接グループの格納フラグの値を「1」に設定する(ステップS58)。
 この後、データ「A」およびデータ「B」の破棄対象フラグがいずれも「1」になった場合、ステップS26の書き戻し処理により、データ「A」およびデータ「B」は圧縮され、物理ディスク800へ格納される。ステップS264の処理により、例えば物理アドレス番号「1056」から「1071」の範囲がデータ「A」の新たな格納範囲として決定され、「1072」から「1095」までの範囲がデータ「B」の新たな格納範囲として決定される。
 <効果>
 第1の実施形態のストレージアレイ装置300によれば、書き戻し処理により、キャッシュされているデータのうち、論理アドレスが隣り合うデータ同士が、物理アドレスにおいても隣り合うようになる。これにより、データの読み出しに係る性能が向上する。その理由は、論理アドレスが隣り合う(いわば、同時にリード要求の対象となる可能性が高い)複数のデータを、一度に(すなわち、一回のシークで連続的に)読み出すことができるようになるからである。
 書き戻し処理は、LRU方式に基づいて、対象のデータのいずれも破棄対象となったタイミングで行われるので、この書き戻し処理は、上位装置であるホスト計算機100からの要求とは競合しない。すなわち、要求に対する応答の性能の低下を伴うことなくデータの並べ替えは行われる。
 なお、第1のケースで説明されたように、ストレージコントローラ310は、リード要求のみがなされたデータに対しても書き戻し処理を行うので、ダーティデータに対してのみライトバックを行う場合と比べ、論理アドレスと物理アドレスとのいずれでも隣り合うデータはより多くなると考えられる。
 第4のケースにおける処理によれば、リードデータと隣り合うデータが、リードデータと隣り合うデータに対する操作の要求が発せられる前に、キャッシュされる。これにより、論理アドレス上で隣り合うデータは関連性が高い可能性が高いので、キャッシュヒット率が向上する。
 特に、シンクライアントのような、頻繁に使用されるデータ群がある場合において、ホスト計算機100に対する応答の性能の向上は顕著となる。頻繁に使用されるデータ群に隣接グループが設定されることで、そのデータ群を構成するデータは物理ディスクにおいて連続的に配置されるようになり、そのデータ群を構成する複数のデータを一度に読み出す場合にかかる時間が、短くなる。そして、第4のケースの処理により、そのデータ群を構成するデータが、リード要求を受ける前に予め読み出されれば、要求に対する応答がさらに早くなる。
 <<第2の実施形態>>
 本発明の一実施形態に係るストレージコントローラ31について説明する。ストレージコントローラ31は、論理ディスクが構築されたストレージからのデータの読み出し、および該ストレージへのデータの書き込みを行うモジュールである。図20は、ストレージコントローラ31の構成を示すブロック図である。ストレージコントローラ31は、キャッシュ処理部32と、設定部33と、決定部34と、書き込み部35と、を備える。
 キャッシュ処理部32は、物理ディスクに記憶されたデータをキャッシュ記憶部に格納するキャッシュ処理を行う。物理ディスクはストレージにおいてデータを記憶している実体である。キャッシュ記憶部は、データをキャッシュとして記憶する記憶領域である。第1の実施形態における圧縮伸長制御部312は、キャッシュ処理部32の一例である。
 設定部33は、キャッシュ記憶部に記憶されたデータのうち、論理ディスクにおいて隣り合い、かつ物理ディスクにおいて隣り合っていない、データの組を特定する。そして、設定部33は、特定されたデータの組を含むグループを設定する。
 論理ディスクにおいて2つのデータが隣り合うとは、2つのデータのそれぞれに設定されている論理アドレスの範囲が連続することである。
 物理ディスクにおいて2つのデータが隣り合うとは、2つのデータのそれぞれが格納される場所として設定されているブロックの範囲が、連続することである。
 第1の実施形態における第1のケースの処理は、設定部33による上記の処理の一例である。
 決定部34は、グループに属するデータのうちキャッシュされているデータ全てがキャッシュ記憶部から削除される対象となったことを契機として、決定処理を行う。決定処理では、決定部34は、物理ディスクにおいて該グループに属するデータ全てが連続的に配置されるように、物理ディスクにおける、削除される対象となったデータを格納する範囲を決定する。第1の実施形態における「書き戻し処理」のステップS261からステップS266の処理は、上記決定処理の一例である。
 書き込み部35は、決定部34により決定された範囲に、削除される対象となったデータを書き込む。第1の実施形態における「書き戻し処理」のステップS268およびステップS269の処理は、書き込み部35による処理の一例である。
 ストレージコントローラ31による処理の流れを、図21のフローチャートを参照しながら説明する。
 まず、キャッシュ処理部32が、物理ディスクに記憶されたデータをキャッシュ記憶部に格納するキャッシュ処理を行う(ステップS101)。キャッシュ処理を行う契機は、例えば、ホスト計算機等の上位装置からリード要求またはライト要求を受けることである。
 次に、設定部33が、キャッシュ記憶部に記憶されたデータのうち、論理ディスクにおいて隣り合い、かつ物理ディスクにおいて隣り合っていない、データの組を特定する(ステップS102)。そして、設定部33は、特定されたデータの組を含むグループを設定する(ステップS103)。
 次に、グループに属するデータのうちキャッシュされているデータ全てがキャッシュ記憶部から削除される対象となったことを契機として(ステップS104においてYES)、決定部34が、物理ディスクにおいて該グループに属するデータ全てが連続的に配置されるように、物理ディスクにおける、削除される対象となったデータを格納する範囲を決定する。
 そして、書き込み部35が、決定部34により決定された範囲に、削除される対象となったデータを書き込む(ステップS105)。
 <実施形態の各部を実現するハードウェアの構成>
 以上で説明された本発明の各実施形態において、各装置の各構成要素を示すブロックは、機能単位で示されている。しかし、構成要素を示すブロックは、各構成要素が別個のモジュールにより構成されることを必ずしも意味していない。
 各構成要素の処理は、たとえば、コンピュータシステムが、コンピュータ読み取り可能な記憶媒体により記憶された、その処理をコンピュータシステムに実行させるプログラムを、読み出し、実行することによって、実現されてもよい。「コンピュータ読み取り可能な記憶媒体」は、たとえば、光ディスク、磁気ディスク、光磁気ディスク、および不揮発性半導体メモリ等の可搬媒体、ならびに、コンピュータシステムに内蔵されるROM(Read Only Memory)およびハードディスク等の記憶装置である。「コンピュータ読み取り可能な記憶媒体」は、コンピュータシステム内部の揮発性メモリのようにプログラムを一時的に保持可能なもの、および、ネットワークや電話回線等の通信回線のように、プログラムを伝送するものも含む。また、上記プログラムは、前述した機能の一部を実現するためのものであってもよく、更に前述した機能をコンピュータシステムにすでに記憶されているプログラムとの組み合わせで実現できるものであってもよい。
 「コンピュータシステム」とは、一例として、図22に示されるようなコンピュータ900を含むシステムである。コンピュータ900は、以下のような構成を含む。
・1つまたは複数のCPU(Central Processing Unit)901
・ROM902
・RAM(Random Access Memory)903
・RAM903へロードされるプログラム904Aおよび記憶情報904B
・プログラム904Aおよび記憶情報904Bを格納する記憶装置905
・記憶媒体906の読み書きを行うドライブ装置907
・通信ネットワーク909と接続する通信インタフェース908
・データの入出力を行う入出力インタフェース910
・各構成要素を接続するバス911
 たとえば、各実施形態における各装置の各構成要素は、その構成要素の機能を実現するプログラム904AをCPU901がRAM903にロードして実行することで実現される。各装置の各構成要素の機能を実現するプログラム904Aは、例えば、予め、記憶装置905やROM902に格納される。そして、必要に応じてCPU901がプログラム904Aを読み出す。記憶装置905は、たとえば、ハードディスクである。プログラム904Aは、通信ネットワーク909を介してCPU901に供給されてもよいし、予め記憶媒体906に格納されており、ドライブ装置907に読み出され、CPU901に供給されてもよい。なお、記憶媒体906は、たとえば、光ディスク、磁気ディスク、光磁気ディスク、および不揮発性半導体メモリ等の、可搬媒体である。
 各装置の実現方法には、様々な変形例がある。例えば、各装置は、構成要素毎にそれぞれ別個のコンピュータ900とプログラムとの可能な組み合わせにより実現されてもよい。また、各装置が備える複数の構成要素が、一つのコンピュータ900とプログラムとの可能な組み合わせにより実現されてもよい。
 また、各装置の各構成要素の一部または全部は、その他の汎用または専用の回路、コンピュータ等やこれらの組み合わせによって実現されてもよい。これらは、単一のチップによって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。
 各装置の各構成要素の一部または全部が複数のコンピュータや回路等により実現される場合には、複数のコンピュータや回路等は、集中配置されてもよいし、分散配置されてもよい。例えば、コンピュータや回路等は、クライアントアンドサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。
 上記実施形態の一部または全部は以下の付記のようにも記載され得るが、以下には限られない。
 <<付記>>
[付記1]
 物理ディスクに記憶されたデータをキャッシュ記憶部に格納するキャッシュ処理を行うキャッシュ処理手段と、
 前記キャッシュ記憶部に記憶されたデータのうち、論理ディスクにおいて隣り合い、かつ前記物理ディスクにおいて隣り合っていない、データの組を特定し、特定されたデータの組を含むグループを設定する設定手段と、
 前記グループに属するデータのうちキャッシュされているデータ全てが前記キャッシュ記憶部から削除される対象となったことを契機として、前記物理ディスクにおいて前記グループに属するデータ全てが連続的に配置されるように、前記物理ディスクにおける、前記削除される対象となったデータを格納する範囲を決定する決定手段と、
 前記決定された範囲に、前記削除される対象となったデータを書き込む書き込み手段と、
 を備えるストレージコントローラ。
[付記2]
 前記データの各々は、個別に圧縮されることが可能な単位のデータであり、
 前記書き込み手段は、前記削除される対象となったデータの各々を個別に圧縮し、圧縮された各々のデータを前記決定された範囲に格納する、
 付記1に記載のストレージコントローラ。
[付記3]
 前記キャッシュ処理手段は、前記ストレージコントローラが前記グループに属するデータの一部のデータを読み出すリード要求を受信した場合に、前記グループに属する、当該リード要求の対象でないデータも前記キャッシュ記憶部に格納する、
 付記1または2に記載のストレージコントローラ。
[付記4]
 前記設定手段は、前記ストレージコントローラがいずれの前記グループにも属さないデータを読み出すリード要求を受信した場合、前記キャッシュ記憶部に記憶された、当該リード要求の対象のデータと前記論理ディスクにおいて隣り合い、かつ前記物理ディスクにおいて隣り合う、データを特定し、特定されたデータと当該リード要求の対象のデータとを含むグループを設定する、
 付記1から3のいずれか一つに記載のストレージコントローラ。
[付記5]
 前記キャッシュ処理手段は、前記ストレージコントローラが前記グループに属するデータの一部のデータを更新するライト要求を受信した場合に、
 前記ライト要求の対象のデータを更新した後のデータのサイズと、当該ライト要求の対象のデータの更新前のデータのサイズと、の比較に基づいて、前記グループに含まれるデータからキャッシュするデータを決定し、決定されたデータをキャッシュする、
 付記1から4のいずれか一つに記載のストレージコントローラ。
[付記6]
 付記1から5のいずれか一つに記載のストレージコントローラと、
 前記キャッシュ記憶部として機能するキャッシュ記憶手段と、
 前記物理ディスクを含み、前記論理ディスクが構築されたディスクドライブと、
 を含むストレージアレイ装置。
[付記7]
 物理ディスクに記憶されたデータをキャッシュ記憶部に格納するキャッシュ処理を行い、
 前記キャッシュ記憶部に記憶されたデータのうち、論理ディスクにおいて隣り合い、かつ前記物理ディスクにおいて隣り合っていない、データの組を特定し、特定されたデータの組を含むグループを設定し、
 前記グループに属するデータのうちキャッシュされているデータ全てが前記キャッシュ記憶部から削除される対象となったことを契機として、前記物理ディスクにおいて前記グループに属するデータ全てが連続的に配置されるように、前記物理ディスクにおける、前記削除される対象となったデータを格納する範囲を決定し、
 前記決定された範囲に、前記削除される対象となったデータを書き込む、
 データ格納方法。
[付記8]
 前記データの各々は、個別に圧縮および伸長されることが可能な単位のデータであり、 前記データ格納方法は、前記削除される対象となったデータの各々を個別に圧縮し、圧縮された各々のデータを前記決定された範囲に格納する、
 付記7に記載のデータ格納方法。
[付記9]
 前記グループに属するデータの一部のデータを読み出すリード要求を受信した場合に、前記グループに属する、当該リード要求の対象でないデータも前記キャッシュ記憶部に格納する、
 付記7または8に記載のデータ格納方法。
[付記10]
 いずれの前記グループにも属さないデータを読み出すリード要求を受信した場合、前記キャッシュ記憶部に記憶された、当該リード要求の対象のデータと前記論理ディスクにおいて隣り合い、かつ前記物理ディスクにおいて隣り合う、データを特定し、特定されたデータと当該リード要求の対象のデータとを含むグループを設定する、
 付記7から9のいずれか一つに記載のデータ格納方法。
[付記11]
 前記グループに属するデータの一部のデータを更新するライト要求を受信した場合に、 前記ライト要求の対象のデータを更新した後のデータのサイズと、当該ライト要求の対象のデータの更新前のデータのサイズと、の比較に基づいて、前記グループに含まれるデータからキャッシュするデータを決定し、決定されたデータをキャッシュする、
 付記7から10のいずれか一つに記載のデータ格納方法。
[付記12]
 物理ディスクに記憶されたデータをキャッシュ記憶部に格納するキャッシュ処理を行うキャッシュ処理と、
 前記キャッシュ記憶部に記憶されたデータのうち、論理ディスクにおいて隣り合い、かつ前記物理ディスクにおいて隣り合っていない、データの組を特定し、特定されたデータの組を含むグループを設定する設定処理と、
 前記グループに属するデータのうちキャッシュされているデータ全てが前記キャッシュ記憶部から削除される対象となったことを契機として、前記物理ディスクにおいて前記グループに属するデータ全てが連続的に配置されるように、前記物理ディスクにおける、前記削除される対象となったデータを格納する範囲を決定する決定処理と、
 前記決定された範囲に、前記削除される対象となったデータを書き込む書き込み処理と、
 をコンピュータに実行させるプログラムを記憶した、コンピュータ読み取り可能な記憶媒体。
[付記13]
 前記データの各々は、個別に圧縮および伸長されることが可能な単位のデータであり、
 前記書き込み処理は、前記削除される対象となったデータの各々を個別に圧縮し、圧縮された各々のデータを前記決定された範囲に格納する、
 付記12に記載の記憶媒体。
[付記14]
 前記キャッシュ処理は、前記コンピュータが前記グループに属するデータの一部のデータを読み出すリード要求を受信した場合に、前記グループに属する、当該リード要求の対象でないデータも前記キャッシュ記憶部に格納する、
 付記12または13に記載の記憶媒体。
[付記15]
 前記設定処理は、前記コンピュータがいずれの前記グループにも属さないデータを読み出すリード要求を受信した場合、前記キャッシュ記憶部に記憶された、当該リード要求の対象のデータと前記論理ディスクにおいて隣り合い、かつ前記物理ディスクにおいて隣り合う、データを特定し、特定されたデータと当該リード要求の対象のデータとを含むグループを設定する、
 付記12から14のいずれか一つに記載の記憶媒体。
[付記16]
 前記キャッシュ処理は、前記コンピュータが前記グループに属するデータの一部のデータを更新するライト要求を受信した場合に、
 前記ライト要求の対象のデータを更新した後のデータのサイズと、当該ライト要求の対象のデータの更新前のデータのサイズと、の比較に基づいて、前記グループに含まれるデータからキャッシュするデータを決定し、決定されたデータをキャッシュする、
 付記12から15のいずれか一つに記載の記憶媒体。
 本願発明は以上に説明された実施形態に限定されるものではない。以上に説明された実施形態の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
 この出願は、2017年12月20日に出願された日本出願特願2017-244457を基礎とする優先権を主張し、その開示の全てをここに取り込む。
 31  ストレージコントローラ
 32  キャッシュ処理部
 33  設定部
 34  決定部
 35  書き込み部
 100  ホスト計算機
 300  ストレージアレイ装置
 310  ストレージコントローラ
 311  キャッシュ管理部
 312  圧縮伸長制御部
 313  書き戻し部
 320  ディスクドライブ
 321  論理ディスク
 400  キャッシュ記憶部
 410  キャッシュテーブル
 500  制御情報記憶部
 510  アドレス変換テーブル
 520  破棄対象管理テーブル
 530  隣接グループ管理テーブル
 540  隣接グループリンク
 800  物理ディスク
 900  コンピュータ
 901  CPU
 902  ROM
 903  RAM
 904A  プログラム
 904B  記憶情報
 905  記憶装置
 906  記憶媒体
 907  ドライブ装置
 908  通信インタフェース
 909  通信ネットワーク
 910  入出力インタフェース
 911  バス

Claims (16)

  1.  物理ディスクに記憶されたデータをキャッシュ記憶部に格納するキャッシュ処理を行うキャッシュ処理手段と、
     前記キャッシュ記憶部に記憶されたデータのうち、論理ディスクにおいて隣り合い、かつ前記物理ディスクにおいて隣り合っていない、データの組を特定し、特定されたデータの組を含むグループを設定する設定手段と、
     前記グループに属するデータのうちキャッシュされているデータ全てが前記キャッシュ記憶部から削除される対象となったことを契機として、前記物理ディスクにおいて前記グループに属するデータ全てが連続的に配置されるように、前記物理ディスクにおける、前記削除される対象となったデータを格納する範囲を決定する決定手段と、
     前記決定された範囲に、前記削除される対象となったデータを書き込む書き込み手段と、
     を備えるストレージコントローラ。
  2.  前記データの各々は、個別に圧縮されることが可能な単位のデータであり、
     前記書き込み手段は、前記削除される対象となったデータの各々を個別に圧縮し、圧縮された各々のデータを前記決定された範囲に格納する、
     請求項1に記載のストレージコントローラ。
  3.  前記キャッシュ処理手段は、前記ストレージコントローラが前記グループに属するデータの一部のデータを読み出すリード要求を受信した場合に、前記グループに属する、当該リード要求の対象でないデータも前記キャッシュ記憶部に格納する、
     請求項1または2に記載のストレージコントローラ。
  4.  前記設定手段は、前記ストレージコントローラがいずれの前記グループにも属さないデータを読み出すリード要求を受信した場合、前記キャッシュ記憶部に記憶された、当該リード要求の対象のデータと前記論理ディスクにおいて隣り合い、かつ前記物理ディスクにおいて隣り合う、データを特定し、特定されたデータと当該リード要求の対象のデータとを含むグループを設定する、
     請求項1から3のいずれか一項に記載のストレージコントローラ。
  5.  前記キャッシュ処理手段は、前記ストレージコントローラが前記グループに属するデータの一部のデータを更新するライト要求を受信した場合に、
     前記ライト要求の対象のデータを更新した後のデータのサイズと、当該ライト要求の対象のデータの更新前のデータのサイズと、の比較に基づいて、前記グループに含まれるデータからキャッシュするデータを決定し、決定されたデータをキャッシュする、
     請求項1から4のいずれか一項に記載のストレージコントローラ。
  6.  請求項1から5のいずれか一項に記載のストレージコントローラと、
     前記キャッシュ記憶部として機能するキャッシュ記憶手段と、
     前記物理ディスクを含み、前記論理ディスクが構築されたディスクドライブと、
     を含むストレージアレイ装置。
  7.  物理ディスクに記憶されたデータをキャッシュ記憶部に格納するキャッシュ処理を行い、
     前記キャッシュ記憶部に記憶されたデータのうち、論理ディスクにおいて隣り合い、かつ前記物理ディスクにおいて隣り合っていない、データの組を特定し、特定されたデータの組を含むグループを設定し、
     前記グループに属するデータのうちキャッシュされているデータ全てが前記キャッシュ記憶部から削除される対象となったことを契機として、前記物理ディスクにおいて前記グループに属するデータ全てが連続的に配置されるように、前記物理ディスクにおける、前記削除される対象となったデータを格納する範囲を決定し、
     前記決定された範囲に、前記削除される対象となったデータを書き込む、
     データ格納方法。
  8.  前記データの各々は、個別に圧縮および伸長されることが可能な単位のデータであり、
     前記データ格納方法は、前記削除される対象となったデータの各々を個別に圧縮し、圧縮された各々のデータを前記決定された範囲に格納する、
     請求項7に記載のデータ格納方法。
  9.  前記グループに属するデータの一部のデータを読み出すリード要求を受信した場合に、前記グループに属する、当該リード要求の対象でないデータも前記キャッシュ記憶部に格納する、
     請求項7または8に記載のデータ格納方法。
  10.  いずれの前記グループにも属さないデータを読み出すリード要求を受信した場合、前記キャッシュ記憶部に記憶された、当該リード要求の対象のデータと前記論理ディスクにおいて隣り合い、かつ前記物理ディスクにおいて隣り合う、データを特定し、特定されたデータと当該リード要求の対象のデータとを含むグループを設定する、
     請求項7から9のいずれか一項に記載のデータ格納方法。
  11.  前記グループに属するデータの一部のデータを更新するライト要求を受信した場合に、
     前記ライト要求の対象のデータを更新した後のデータのサイズと、当該ライト要求の対象のデータの更新前のデータのサイズと、の比較に基づいて、前記グループに含まれるデータからキャッシュするデータを決定し、決定されたデータをキャッシュする、
     請求項7から10のいずれか一項に記載のデータ格納方法。
  12.  物理ディスクに記憶されたデータをキャッシュ記憶部に格納するキャッシュ処理と、
     前記キャッシュ記憶部に記憶されたデータのうち、論理ディスクにおいて隣り合い、かつ前記物理ディスクにおいて隣り合っていない、データの組を特定し、特定されたデータの組を含むグループを設定する設定処理と、
     前記グループに属するデータのうちキャッシュされているデータ全てが前記キャッシュ記憶部から削除される対象となったことを契機として、前記物理ディスクにおいて前記グループに属するデータ全てが連続的に配置されるように、前記物理ディスクにおける、前記削除される対象となったデータを格納する範囲を決定する決定処理と、
     前記決定された範囲に、前記削除される対象となったデータを書き込む書き込み処理と、
     をコンピュータに実行させるプログラムを記憶した、コンピュータ読み取り可能な記憶媒体。
  13.  前記データの各々は、個別に圧縮および伸長されることが可能な単位のデータであり、
     前記書き込み処理は、前記削除される対象となったデータの各々を個別に圧縮し、圧縮された各々のデータを前記決定された範囲に格納する、
     請求項12に記載の記憶媒体。
  14.  前記キャッシュ処理は、前記コンピュータが前記グループに属するデータの一部のデータを読み出すリード要求を受信した場合に、前記グループに属する、当該リード要求の対象でないデータも前記キャッシュ記憶部に格納する、
     請求項12または13に記載の記憶媒体。
  15.  前記設定処理は、前記コンピュータがいずれの前記グループにも属さないデータを読み出すリード要求を受信した場合、前記キャッシュ記憶部に記憶された、当該リード要求の対象のデータと前記論理ディスクにおいて隣り合い、かつ前記物理ディスクにおいて隣り合う、データを特定し、特定されたデータと当該リード要求の対象のデータとを含むグループを設定する、
     請求項12から14のいずれか一項に記載の記憶媒体。
  16.  前記キャッシュ処理は、前記コンピュータが前記グループに属するデータの一部のデータを更新するライト要求を受信した場合に、
     前記ライト要求の対象のデータを更新した後のデータのサイズと、当該ライト要求の対象のデータの更新前のデータのサイズと、の比較に基づいて、前記グループに含まれるデータからキャッシュするデータを決定し、決定されたデータをキャッシュする、
     請求項12から15のいずれか一項に記載の記憶媒体。
PCT/JP2018/046388 2017-12-20 2018-12-17 ストレージコントローラ、ストレージアレイ装置、データ格納方法、および記憶媒体 WO2019124320A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US16/772,433 US11099985B2 (en) 2017-12-20 2018-12-17 Storage controller, storage array device, data depositing method, and storage medium

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2017244457A JP6760916B2 (ja) 2017-12-20 2017-12-20 ストレージコントローラ、ストレージアレイ装置、データ格納方法、およびプログラム
JP2017-244457 2017-12-20

Publications (1)

Publication Number Publication Date
WO2019124320A1 true WO2019124320A1 (ja) 2019-06-27

Family

ID=66992974

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2018/046388 WO2019124320A1 (ja) 2017-12-20 2018-12-17 ストレージコントローラ、ストレージアレイ装置、データ格納方法、および記憶媒体

Country Status (3)

Country Link
US (1) US11099985B2 (ja)
JP (1) JP6760916B2 (ja)
WO (1) WO2019124320A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115033175A (zh) * 2022-05-27 2022-09-09 阿里巴巴(中国)有限公司 数据读取方法和装置、存储介质及处理器

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000285022A (ja) * 1999-03-31 2000-10-13 Fujitsu Ltd ディスク制御装置
JP2001188658A (ja) * 1999-12-28 2001-07-10 Toshiba Corp ディスク制御システムおよびデータ再配置方法
JP2015125597A (ja) * 2013-12-26 2015-07-06 富士通株式会社 データ配置制御プログラム、データ配置制御方法およびデータ配置制御装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07129470A (ja) 1993-11-09 1995-05-19 Hitachi Ltd ディスク制御方法
JP3419538B2 (ja) 1994-03-24 2003-06-23 株式会社日立製作所 記憶制御方法及びそれを用いた圧縮機能付きディスクシステム
JP3426385B2 (ja) 1995-03-09 2003-07-14 富士通株式会社 ディスク制御装置
US5623701A (en) 1995-06-06 1997-04-22 International Business Machines Corporation Data compression method and structure for a direct access storage device
US8145865B1 (en) * 2006-09-29 2012-03-27 Emc Corporation Virtual ordered writes spillover mechanism
JP5923913B2 (ja) 2011-09-27 2016-05-25 富士通株式会社 ストレージ装置、ストレージ装置の制御方法及びストレージシステム
JP2013246646A (ja) 2012-05-25 2013-12-09 Toshiba Corp 情報処理装置及びデータ読出方法
US20150089132A1 (en) * 2013-09-23 2015-03-26 Lsi Corporation Dynamic storage volume configuration based on input/output requests

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000285022A (ja) * 1999-03-31 2000-10-13 Fujitsu Ltd ディスク制御装置
JP2001188658A (ja) * 1999-12-28 2001-07-10 Toshiba Corp ディスク制御システムおよびデータ再配置方法
JP2015125597A (ja) * 2013-12-26 2015-07-06 富士通株式会社 データ配置制御プログラム、データ配置制御方法およびデータ配置制御装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115033175A (zh) * 2022-05-27 2022-09-09 阿里巴巴(中国)有限公司 数据读取方法和装置、存储介质及处理器

Also Published As

Publication number Publication date
US20210073128A1 (en) 2021-03-11
JP6760916B2 (ja) 2020-09-23
US11099985B2 (en) 2021-08-24
JP2019113890A (ja) 2019-07-11

Similar Documents

Publication Publication Date Title
JP6553566B2 (ja) メモリシステムおよび制御方法
TWI596603B (zh) 用於快取壓縮資料之設備、系統及方法
US8645614B2 (en) Method and apparatus for managing data of flash memory via address mapping
US20050021900A1 (en) Magnetic disk unit, file management system, and file management method
TWI679538B (zh) 資料儲存系統之控制單元以及邏輯至物理映射表更新方法
US20180203637A1 (en) Storage control apparatus and storage control program medium
JP6139711B2 (ja) 情報処理装置
CN108459826A (zh) 一种处理io请求的方法及装置
JP5944502B2 (ja) 計算機システム及び制御方法
CN104503703B (zh) 缓存的处理方法和装置
JP6608468B2 (ja) ストレージ装置及びその制御方法
US8332575B2 (en) Data management systems, methods and computer program products using a phase-change random access memory for selective data maintenance
US20180307426A1 (en) Storage apparatus and storage control method
US20180307440A1 (en) Storage control apparatus and storage control method
US11327929B2 (en) Method and system for reduced data movement compression using in-storage computing and a customized file system
KR20170065427A (ko) Ssd의 데이터 프로세싱 방법 및 장치
JP2018169773A (ja) ストレージ装置、ストレージ装置の制御方法及びプログラム
US20240231657A1 (en) Data processing method and storage system
WO2015162755A1 (ja) データを圧縮して格納するストレージ装置
WO2019124320A1 (ja) ストレージコントローラ、ストレージアレイ装置、データ格納方法、および記憶媒体
CN108334457B (zh) 一种io处理方法及装置
JP2020086477A (ja) 大規模ストレージシステム及び大規模ストレージシステムにおけるデータ配置方法
WO2022021280A1 (zh) 存储控制器、存储控制方法、固态硬盘及存储系统
US11461225B2 (en) Storage device, control method of storage device, and storage medium
WO2017082323A1 (ja) 分散処理システム、分散処理装置、方法および記憶媒体

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 18891385

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 18891385

Country of ref document: EP

Kind code of ref document: A1