[go: up one dir, main page]

WO2014038016A1 - 制御プログラム、制御方法及び制御装置 - Google Patents

制御プログラム、制御方法及び制御装置 Download PDF

Info

Publication number
WO2014038016A1
WO2014038016A1 PCT/JP2012/072630 JP2012072630W WO2014038016A1 WO 2014038016 A1 WO2014038016 A1 WO 2014038016A1 JP 2012072630 W JP2012072630 W JP 2012072630W WO 2014038016 A1 WO2014038016 A1 WO 2014038016A1
Authority
WO
WIPO (PCT)
Prior art keywords
information
recording device
data
memory
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
PCT/JP2012/072630
Other languages
English (en)
French (fr)
Inventor
鈴木 啓之
法男 黒羽
壮吉 藤田
建平 李
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to PCT/JP2012/072630 priority Critical patent/WO2014038016A1/ja
Priority to JP2014534083A priority patent/JPWO2014038016A1/ja
Publication of WO2014038016A1 publication Critical patent/WO2014038016A1/ja
Priority to US14/614,791 priority patent/US9513824B2/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/0614Improving the reliability of storage systems
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • G06F2212/284Plural cache memories being distributed

Definitions

  • the present invention relates to a control program, a control method, and a control device.
  • SSD Solid State Drive
  • a nonvolatile semiconductor memory such as a NAND flash memory
  • data of a disk device on the network is cached in an SSD in a server device that can be accessed at a higher speed than the disk device.
  • the information access performance is improved by using information such as the storage location and data size of cached data as tag information.
  • the data is cached in the SSD, and the tag information of all cached data is stored in the memory in the server device by the control program. Then, the presence or absence of data on the cache is determined by referring to the tag information stored in the memory.
  • the above-described conventional technology has a problem that it is not possible to improve access performance while suppressing memory usage.
  • the tag information of all data cached in the SSD is stored in the memory, so that the memory usage amount increases.
  • an object of the present invention is to provide a control program, a control method, and a control device that can improve access performance while suppressing memory usage.
  • the control program causes the computer to execute a process of accepting an access request to the recording device that stores data.
  • the control program determines whether or not the index information corresponding to the access request received by the receiving process exists in the memory storing the index information obtained by shortening the identification information for identifying the data cached in the nonvolatile memory from the recording device.
  • the control program accesses the non-volatile memory when it is determined that the index information exists by the determining process, and causes the computer to execute the process of accessing the recording device when it is determined that the index information does not exist.
  • FIG. 1 is a block diagram illustrating a functional configuration of the information processing system according to the first embodiment.
  • FIG. 2 is a schematic diagram illustrating an example of tag information and index information according to the first embodiment.
  • FIG. 3 is a schematic diagram illustrating an example of tag information and index information according to the first embodiment.
  • FIG. 4 is a block diagram illustrating an example of a functional configuration of the I / O processing unit according to the first embodiment.
  • FIG. 5 is a flowchart of the process procedure of the data reading process according to the first embodiment.
  • FIG. 6 is a flowchart of the process procedure of the data writing process according to the first embodiment.
  • FIG. 7 is a flowchart illustrating the processing procedure of the reconstruction process according to the first embodiment.
  • FIG. 1 is a block diagram illustrating a functional configuration of the information processing system according to the first embodiment.
  • FIG. 2 is a schematic diagram illustrating an example of tag information and index information according to the first embodiment.
  • FIG. 3 is a schematic diagram illustrating an
  • FIG. 8 is a schematic diagram illustrating an example of tag information and index information according to the second embodiment.
  • FIG. 9 is a schematic diagram illustrating an example of history information according to the second embodiment.
  • FIG. 10 is a schematic diagram illustrating an example of history information according to the second embodiment.
  • FIG. 11 is a block diagram illustrating an example of a functional configuration of an I / O processing unit according to the second embodiment.
  • FIG. 12 is a flowchart illustrating the processing procedure of the data reading process according to the second embodiment.
  • FIG. 13 is a schematic diagram illustrating an example of tag information and index information according to the third embodiment.
  • FIG. 14 is a flowchart illustrating a processing procedure for updating version information according to the third embodiment.
  • FIG. 15 is a flowchart of the data read process according to the third embodiment.
  • FIG. 16 is a schematic diagram illustrating an example of tag information and index information according to the fourth embodiment.
  • FIG. 17 is a flowchart illustrating a processing procedure of data reading processing according to the fourth embodiment.
  • FIG. 18 is a block diagram illustrating a functional configuration of the information processing system according to the fourth embodiment.
  • FIG. 19 is a block diagram illustrating a functional configuration of the information processing system according to the fourth embodiment.
  • FIG. 20 is a diagram illustrating an example of a computer that executes a control program.
  • FIG. 1 is a block diagram illustrating a functional configuration of the information processing system according to the first embodiment.
  • the system includes a recording device 30 and server devices 50a, 50b, and 50c.
  • the recording device 30 and the server devices 50a, 50b, and 50c are connected to each other via the network 5.
  • the network 5 may be any type of communication network such as the Internet (Internet) or LAN (Local Area Network) regardless of whether it is wired or wireless.
  • Internet Internet
  • LAN Local Area Network
  • the recording device 30 is a device that stores data. For example, the recording device 30 transmits / receives data stored in the own device in response to an access request from the server device 50. As an example, the recording device 30 receives a read request for reading data from the server device 50. The recording device 30 transmits the data related to the received read request to the server device 50. For example, the recording device 30 receives a write request for writing data from the server device 50. The recording device 30 stores the data related to the received write request in the physical DISK 31 in the own device. Read requests and write requests are examples of access requests.
  • the recording device 30 includes physical DISKs 31a, 31b, 31c and a controller module 33.
  • the physical DISKs 31a, 31b, and 31c are disk devices such as a hard disk device and an optical disk device, for example.
  • the physical DISKs 31a, 31b, and 31c are accessed from applications as VDISKs 32a, 32b, 32c, and 32d, which are virtual storage media.
  • the VDISKs 32 a, 32 b, 32 c, and 32 d are virtual storage media that are realized using one or a plurality of physical DISKs 31 mounted on the recording device 30.
  • the VDISKs 32a, 32b, 32c, and 32d are constructed for each VM 54 described later.
  • the controller module 33 is a device that controls input / output of data to / from the physical DISK 31.
  • the controller module 33 includes an interface that transmits and receives data to and from the server device 50 and the physical DISK 31 and a CPU (Central Processing Unit) that analyzes an access request from the server device 50.
  • a CPU Central Processing Unit
  • the server device 50 is a device that performs information processing. For example, the server device 50 reads and writes data stored in the recording device 30 by transmitting an access request to the recording device 30.
  • the server device 50a includes an SSD (Solid State Drive) 51a, memories 52a and 52b, and a hypervisor 53a. Further, the server device 50 a implements virtual machines (VMs) 54 a and 54 b that are virtual machines by the hypervisor 53. Since the server devices 50a, 50b, and 50c have the same functional configuration, the server device 50a will be described here, and the description of the server devices 50b and 50c will be omitted.
  • the SSDs 51a, 51b, and 51c are collectively referred to as the SSD 51 when collectively referred to without distinction, and the memories 52a, 52b, 52c, and 52d are collectively referred to as the memory 52 when collectively referred to without distinction.
  • hypervisor 53a, 53b, and 53c are collectively referred to as the hypervisor 53 when collectively referred to without distinction
  • VMs 54a, 54b, 54c, and 54d are collectively referred to as VM54 when collectively referred to without distinction.
  • the SSD 51 is a storage drive device including a nonvolatile memory, for example.
  • the SSD 51 caches the data transmitted from the recording device 30 and stores tag information of the cached data.
  • the memory 52 stores index information obtained by shortening the tag information stored in the SSD 51.
  • the hypervisor 53 realizes a virtual machine by logically dividing or integrating the physical computer resources of the server device 50.
  • the hypervisor 53a includes an I / O processing unit 100a.
  • the I / O processing unit 100a controls data transmission / reception between the server device 50a and the recording device 30.
  • the VM 54 is a virtual machine realized by the hypervisor 53.
  • the VM 54 provides various services by executing predetermined software on the VM 54.
  • the VM 54 transmits an access request to the recording device 30 in accordance with the operation of the user who uses the service.
  • the I / O processing units 100a, 100b, and 100c are collectively referred to as the I / O processing unit 100 when collectively referred to.
  • the I / O processing unit 100 when receiving an access request transmitted from the VM 54a, the I / O processing unit 100 refers to the index information stored in the memory 52a and determines whether to access the SSD 51a or the recording device 30. judge.
  • FIGS. 2 and 3 are diagrams for explaining an example of tag information and index information according to the first embodiment.
  • the tag information 2a stored on the SSD 51 includes a recording device identifier 2b, a relative position 2c in the recording device, and a validity flag 2d.
  • the recording device identifier 2 b is information for identifying the physical DISK 31 included in the recording device 30.
  • the in-recording device relative position 2c is information indicating in which position in the recording device 30 the data related to the access request exists. For example, a logical block from the head allocated to the storage area of the recording device 30 Number.
  • the validity flag 2d is information indicating whether the data on the SSD 51 identified by the tag information 2a is valid or invalid. For example, if the validity flag 2d is “1”, the validity flag 2d is valid, and the validity flag 2d is “0”. Is invalid.
  • an entry in the hash table is determined by the recording device identifier 2b and the relative position 2c in the recording device.
  • the index information 2e stored on the memory 52 includes a shortened recording device identifier 2f, a shortened recording device relative position 2g, and a valid flag 2d.
  • the shortened recording device identifier 2f is information obtained by shortening the recording device identifier 2b by a hash function.
  • the shortened recording device relative position 2g is information obtained by shortening the recording device relative position 2c by a hash function.
  • the recording device identifier 2b and the recording device relative position 2c are shortened by the index management unit 104 described later. Further, here, it has been described that the recording device identifier 2b and the relative position 2c in the recording device are each shortened by the hash function, but the present invention is not limited to this.
  • the recording device identifier 2b and the recording device relative position 2c may be shortened by cutting out only the information behind the recording device identifier 2b and the recording device relative position 2c.
  • FIG. 3 illustrates the tag name / index name, the type of shortening method, the recording device identifier / shortened recording device identifier, the relative position in recording device / the relative position in shortened recording device, and the valid flag in association with each other.
  • the tag name / index name indicates a name for identifying tag information or index information.
  • the type of shortening method indicates the type of method for shortening the recording device identifier and the relative position in the recording device.
  • the recording device identifier / shortened recording device identifier indicates an example of a recording device identifier or a shortened recording device identifier.
  • the relative position in the recording apparatus / the relative position in the shortened recording apparatus indicates an example of the relative position in the recording apparatus or the relative position in the shortened recording apparatus.
  • the valid flag indicates an example of a valid flag. Note that the hyphen in FIG. 3 indicates that the corresponding information is not included.
  • the tag information “tag A” includes a recording device identifier “abE0a1-5dPX-ITpk-4AmA-azC2-4zzC-0m0cLX”, a relative position “1355746864” in the recording device, and a valid flag “1”. Indicates that it contains.
  • the tag information “tag B” includes the recording device identifier “cdE0a2-6dXX-IRkm-3LcQ-qrC2-4zzC-0m0cPY”, the relative position in the recording device “246813587987”, and the valid flag “1”. "Is included.
  • the tag information “tag C” includes the recording device identifier “acQ0a7-1eOL-INxi-3PzM-plW4-4zzC-0m0cLX”, the relative position “39157246864” in the recording device, and the valid flag “1”. "Is included.
  • the fourth to sixth lines in FIG. 3 are index information obtained by shortening the “tag A”, “tag B”, and “tag C” shown in the first to third lines by a hash function, respectively.
  • a hash function for shortening the “tag A”, “tag B”, and “tag C” shown in the first to third lines by a hash function.
  • the fourth line in FIG. 3 indicates that the index information “index of tag A” includes the shortened recording device identifier “d879c335adcdef3031f1cb633c5b8811”. Further, the fourth line in FIG.
  • index information “index of tag A” includes the relative position “4 fce 9 ebe 3353 bd 976 aa 708 bb 3 d 7 ba 75 f” and the valid flag “1” in the shortened recording apparatus.
  • the fifth line in FIG. 3 indicates that the index information “index of tag B” includes the shortened recording device identifier “c4ac4aab86e5a67c0bc483b438f97456”. Further, the fifth line in FIG. 3 indicates that the index information “index of tag B” includes the relative position “dcfa064dd03ba207fc9bd8ab70a438c6” in the shortened recording apparatus and the valid flag “1”.
  • index information “index of tag C” includes the shortened recording device identifier “ecb2249915960c98b69667fef3159e1ce”.
  • the sixth line in FIG. 3 indicates that the index information “index of tag C” includes the relative position “b554a0cacfbbcd3175d51fa6a679eb61” and the valid flag “1” in the shortened recording apparatus.
  • the seventh to ninth lines in FIG. 3 are shortened by cutting out only the information behind “Tag A”, “Tag B” and “Tag C” shown in the first to third lines. Index information.
  • the last 11 digits of the recording device identifier and the last 8 digits of the relative position in the recording device are cut out.
  • the seventh line in FIG. 3 indicates that the index information “index of tag A” includes a shortened recording device identifier “4zzC-0m0cLX”, a shortened recording device relative position “572246864”, and a valid flag “1”.
  • the index information “index of tag B” includes the shortened recording device identifier “4zzC-0m0cPY”, the relative position in the shortened recording device “81359879”, and the validity flag “1”.
  • the index information “index of tag C” includes the shortened recording device identifier “4zzC-0m0cLX”, the relative position in the shortened recording device “572246864”, and the validity flag “1”.
  • the index information obtained by cutting out only a part of the tag information is also referred to as “partial tag”.
  • FIG. 4 is a block diagram illustrating an example of a functional configuration of the I / O processing unit 100 according to the first embodiment.
  • the I / O processing unit 100 includes a request extraction unit 101, a data reading unit 102, a data writing unit 103, an index management unit 104, a memory access unit 105, and a tag information management unit. 106, an SSD access unit 107, a recording device management unit 108, and a recording device access unit 109. Further, the function of the I / O processing unit 100 can be realized by, for example, a CPU (Central Processing Unit) executing a predetermined program.
  • a CPU Central Processing Unit
  • the request extraction unit 101 extracts an access request from information input / output between the application operating on the VM 54 and the I / O processing unit 100. For example, the request extraction unit 101 receives a read request for data of a recording device. The request extraction unit 101 outputs the received read request to the data reading unit 102. Further, the request extraction unit 101 accepts a write request for data in the recording device. The request extraction unit 101 outputs the accepted write request to the data writing unit 103.
  • the read request and the write request are examples of access requests.
  • the access request includes tag information 2a.
  • the request extraction unit 101 accepts the restart of the VM 54 when the VM 54 is restarted.
  • the request extraction unit 101 outputs information indicating that the VM 54a has been restarted to the index management unit 104 described later.
  • the data reading unit 102 controls reading of data from the storage device 30.
  • the data reading unit 102 receives a read request from the request extraction unit 101.
  • the data reading unit 102 controls the index management unit 104, the tag information management unit 106, and the recording device management unit 108, which will be described later, to output data related to the read request to the application on the VM 54 that has output the read request. .
  • the data reading unit 102 when receiving a read request from the request extraction unit 101, causes the index management unit 104 to access the index information 2e in the memory 52.
  • the data reading unit 102 outputs a read request to the index management unit 104, and causes the index management unit 104 to determine whether or not the index information 2e corresponding to the read request exists in the memory 52.
  • the data reading unit 102 performs access control to access the SSD 51 when it is determined that the index information 2e exists in the memory 52, and to access the recording device 30 when it is determined that the index information 2e does not exist.
  • the data reading unit 102 acquires data related to the reading request from the recording device 30 via the recording device management unit 108.
  • the data reading unit 102 outputs the acquired data to the application on the VM 54 that has output the read request.
  • the data reading unit 102 outputs the acquired data, the recording device identifier 2b of the data, and the relative position 2c in the recording device to the tag information management unit 106.
  • the data reading unit 102 causes the tag information management unit 106 to cache the acquired data in the SSD 51 and store the tag information 2a of the cached data.
  • the data reading unit 102 outputs the tag information 2a of the cached data to the index management unit 104.
  • the data reading unit 102 causes the index management unit 104 to store the index information 2e corresponding to the tag information 2a of the cached data in the memory 52.
  • the data reading unit 102 When accessing the SSD 51, the data reading unit 102 outputs a read request to the tag information management unit 106, and causes the tag information management unit 106 to determine whether or not the cached data exists on the SSD 51. If there is cached data on the SSD 51, the tag information management unit 106 is made to acquire data related to the read request from the SSD 51. The data reading unit 102 outputs the acquired data to the application on the VM 54 that has output the read request. If there is no cached data on the SSD 51, the recording device management unit 108 is made to acquire data related to the read request from the recording device 30.
  • the data reading unit 102 controls the index management unit 104, the tag information management unit 106, and the recording device management unit 108, respectively, to transfer the data related to the read request to the application on the VM 54 that has output the read request. Output.
  • the data writing unit 103 controls data writing to the storage device 30.
  • the data writing unit 103 receives a write request from the request extraction unit 101.
  • the data writing unit 103 controls the index management unit 104, the tag information management unit 106, and the recording device management unit 108 to write data related to the write request to the recording device 30.
  • the data writing unit 103 when receiving a write request from the request extraction unit 101, the data writing unit 103 causes the index management unit 104 to access the index information 2e in the memory 52.
  • the data writing unit 103 outputs a write request to the index management unit 104, and causes the index management unit 104 to determine whether or not the index information 2e corresponding to the write request exists in the memory 52.
  • the data writing unit 103 performs access control to access the SSD 51 when it is determined that the index information 2e exists in the memory 52, and to access the recording device 30 when it is determined that the index information 2e does not exist.
  • the data writing unit 103 writes data to the recording device 30.
  • the data writing unit 103 When accessing the SSD 51, the data writing unit 103 outputs a write request to the tag information management unit 106, and causes the tag information management unit 106 to determine whether or not cached data exists on the SSD 51. If there is cached data on the SSD 51, the data writing unit 103 outputs information indicating that the validity flag 2d of the tag information 2a is changed from valid to invalid to the tag information management unit 106. The data writing unit 103 causes the tag information management unit 106 to change the validity flag 2d of the tag information 2a on the SSD 51 from valid to invalid. The data writing unit 103 outputs information indicating that the validity flag 2d of the index information 2e is changed from valid to invalid to the index management unit 104. The data writing unit 103 causes the index management unit 104 to change the validity flag 2d of the index information 2e on the memory 52 from valid to invalid. If there is no cached data on the SSD 51, the data writing unit 103 writes the data to the recording device 30.
  • the data writing unit 103 writes the data related to the write request to the recording device 30 by controlling the index management unit 104, the tag information management unit 106, and the recording device management unit 108, respectively.
  • the index management unit 104 accesses the index information 2e on the memory 52 via the memory access unit 105 described later, and manages the index information 2e. For example, when there is an access request for data of the recording device 30, the index management unit 104 determines whether or not the index information 2 e corresponding to the data exists in the memory 52.
  • the index management unit 104 receives an access request and determines whether or not the index information 2e corresponding to the access request exists in the memory 52.
  • the process when the index management unit 104 receives a read request will be described, but the process when a write request is received is the same.
  • the index management unit 104 receives a read request from the data reading unit 102.
  • the index management unit 104 extracts the recording device identifier 2b and the relative position 2c in the recording device of the data related to the read request from the received read request.
  • the index management unit 104 shortens the recording device identifier 2b and the recording device relative position 2c, respectively, and generates the shortened recording device identifier 2f and the shortened recording device relative position 2g.
  • the index management unit 104 shortens the recording device identifier 2b and the relative position 2c in the recording device of the “tag A” on the first line in FIG.
  • the index management unit 104 generates the shortened recording device identifier 2f and the relative position 2g within the shortened recording device of the “tag A index” on the fourth line in FIG.
  • the index management unit 104 cuts out and shortens only the information behind the recording device identifier 2b and the relative position 2c in the recording device of the “tag A” in the first row of FIG.
  • the index management unit 104 generates the shortened recording device identifier 2f and the relative position 2g in the shortened recording device of the “index of tag A” on the seventh line in FIG.
  • the index management unit 104 executes the process. That is, the index management unit 104 outputs a determination result indicating that the index information 2e corresponding to the read request exists in the memory 52 to the data reading unit 102.
  • the index management unit 104 executes the process. That is, the index management unit 104 outputs a determination result indicating that the index information 2e corresponding to the read request does not exist in the memory 52 to the data reading unit 102.
  • the index management unit 104 executes the following processing. That is, the index management unit 104 outputs a determination result indicating that the index information 2e corresponding to the read request does not exist in the memory 52 to the data reading unit 102.
  • the index management unit 104 determines whether or not the index information 2e corresponding to the read request exists in the memory 52, and the determination result is sent to the data reading unit 102. Output.
  • the index management unit 104 determines whether or not the index information 2e corresponding to the write request exists in the memory 52, and the determination result is stored in the data Output to the writing unit 103.
  • the index management unit 104 stores the index information 2e corresponding to the tag information 2a of the cached data in the memory 52.
  • the index management unit 104 receives the tag information 2 a of cached data from the data reading unit 102.
  • the index management unit 104 extracts the recording device identifier 2b and the recording device relative position 2c from the received tag information 2a.
  • the index management unit 104 shortens the recording device identifier 2b and the recording device relative position 2c, respectively, and generates the shortened recording device identifier 2f and the shortened recording device relative position 2g.
  • the index management unit 104 associates the generated shortened recording device identifier 2f and the shortened recording device relative position 2g with the valid flag 2d “1” and stores them in the memory 52 as index information 2e.
  • the index management unit 104 changes the validity flag 2d of the index information 2e on the memory 52 from valid to invalid when data is written to the recording device 30. For example, the index management unit 104 receives information indicating that the validity flag 2 d of the index information 2 e is changed from valid to invalid from the data writing unit 103. The index management unit 104 changes the validity flag 2d of the index information 2e on the memory 52 from valid to invalid.
  • the index management unit 104 reconstructs the index information 2e on the memory 52 from the tag information 2a of all entries on the SSD 51. For example, when receiving information indicating that the VM 54 a has been restarted from the request extraction unit 101, the index management unit 104 acquires the tag information 2 a of all entries stored in the SSD 51 a via the memory access unit 105. The index management unit 104 shortens the recording device identifier 2b and the recording device relative position 2c included in the acquired tag information 2a, respectively, and generates the shortened recording device identifier 2f and the shortened recording device relative position 2g. The index management unit 104 associates the generated shortened recording device identifier 2f and the shortened recording device relative position 2g with the valid flag 2d “1” and stores them in the memory 52 as index information 2e.
  • the memory access unit 105 accesses the memory 52 in accordance with the processing of the index management unit 104. For example, the memory access unit 105 acquires the index information 2e on the memory 52 when the index management unit 104 determines whether or not the index information 2e corresponding to the access request exists in the memory 52. Send to 104. Further, when the index management unit 104 generates the index information 2e, the memory access unit 105 stores the generated index information 2e in the memory 52.
  • the tag information management unit 106 accesses the tag information 2a on the SSD 51 via the SSD access unit 107 described later, and manages the tag information 2a. For example, the tag information management unit 106 receives an access request and determines whether or not the tag information 2 a corresponding to the access request exists on the SSD 51.
  • the tag information management unit 106 receives a read request from the data reading unit 102.
  • the tag information management unit 106 extracts the recording device identifier 2b and the relative position 2c in the recording device of the data related to the reading request from the received reading request. If the tag information 2a including the extracted recording device identifier 2b and the relative position 2c in the recording device is on the SSD 51, the tag information management unit 106 acquires data related to the read request from the SSD 51. Then, the tag information management unit 106 outputs the acquired data to the data reading unit 102.
  • the tag information management unit 106 determines that the tag information 2a corresponding to the read request does not exist on the SSD 51. The result is output to the data reading unit 102.
  • the tag information management unit 106 receives a write request from the data writing unit 103.
  • the tag information management unit 106 extracts the recording device identifier 2b and the relative position 2c in the recording device of the data related to the writing request from the received writing request. If the tag information 2a including the extracted recording device identifier 2b and the relative position 2c in the recording device is on the SSD 51, the tag information management unit 106 executes the following processing. That is, the tag information management unit 106 changes the validity flag 2d of the tag information 2a on the SSD 51 from valid to invalid, and displays the determination result that the tag information 2a corresponding to the access request exists in the SSD 51 as the data writing unit. To 103.
  • the tag information management unit 106 indicates that the tag information 2a corresponding to the write request does not exist on the SSD 51.
  • the determination result is output to the data writing unit 103.
  • the tag information management unit 106 determines whether or not the tag information 2a corresponding to the access request exists on the SSD 51, and outputs the determination result to the data reading unit 102 or the data writing unit 103.
  • the tag information management unit 106 caches data in the SSD 51.
  • the tag information management unit 106 receives data related to the read request, the recording device identifier 2 b of the data, and the relative position 2 c in the recording device from the data reading unit 102.
  • the tag information management unit 106 caches the received data in the SSD 51 and updates the tag information 2a of the cached data.
  • the SSD access unit 107 accesses the SSD 51 according to the processing of the tag information management unit 106. For example, when the tag information management unit 106 determines whether the tag information 2a corresponding to the access request exists in the SSD 51, the SSD access unit 107 acquires the tag information 2a on the SSD 51, and the tag information management unit 106 106. In addition, when data is cached by the tag information management unit 106, the SSD access unit 107 stores the cached data and its tag information 2a in the SSD 51.
  • the recording device management unit 108 manages data of the recording device 30 via a recording device access unit 109 described later.
  • the recording device management unit 108 receives a read request from the data reading unit 102.
  • the recording device management unit 108 extracts the recording device identifier 2b and the relative position 2c in the recording device of the data related to the read request from the received read request.
  • the recording device management unit 108 accesses the recording device 30 identified by the recording device identifier 2b.
  • the recording device management unit 108 acquires data in the storage location identified by the relative position 2 c in the recording device in the recording device 30. Then, the recording device management unit 108 outputs the acquired data to the data reading unit 102.
  • the recording device management unit 108 receives a write request from the data writing unit 103.
  • the recording device management unit 108 extracts the recording device identifier 2b and the relative position 2c in the recording device of the data related to the write request from the accepted write request.
  • the recording device management unit 108 accesses the recording device 30 identified by the recording device identifier 2b.
  • the recording device management unit 108 writes data in the storage location identified by the relative position 2 c in the recording device in the recording device 30.
  • the recording device access unit 109 accesses the recording device 30 according to the processing of the recording device management unit 108. For example, when data is read from the storage unit 30 by the recording device management unit 108, the recording device access unit 109 acquires data related to the read request from the recording device 30 and sends the acquired data to the recording device management unit 108. . Further, when data is written to the storage unit 30 by the recording device management unit 108, the recording device access unit 109 receives data related to the write request from the recording device management unit 108 and writes the received data to the recording device 30. .
  • FIG. 5 is a flowchart of the process procedure of the data reading process according to the first embodiment.
  • the process illustrated in FIG. 5 is executed, for example, when the request extraction unit receives a read request from an application operating on the VM 54.
  • the I / O processing unit 100 accepts a read request from an application operating on the VM 54 (step S101).
  • the I / O processing unit 100 accesses the index information in the memory 52 (step S102).
  • the I / O processing unit 100 determines whether there is a possibility that the data related to the read request is cached in the SSD 51 (step S103). For example, the I / O processing unit 100 determines whether or not the index information 2e corresponding to the received read request exists in the memory 52.
  • the I / O processing unit 100 accesses the data of the recording device 30 (Step S104). For example, the I / O processing unit 100 acquires data relating to the read request from the recording device 30 and outputs the data to the application on the VM 54.
  • the I / O processing unit 100 caches the data acquired from the recording device 30 in the SSD 51, and updates the tag information 2a (step S105).
  • the I / O processing unit 100 updates the index information 2e on the memory 52 (step S106) and ends the process.
  • the I / O processing unit 100 accesses the tag information 2a on the SSD 51 (Step S107).
  • the I / O processing unit 100 determines whether there is cached data on the SSD 51 (step S108). If there is cached data on the SSD 51 (Yes at Step S108), the I / O processing unit 100 acquires data related to the read request from the SSD 51 (Step S109), and ends the process. For example, the I / O processing unit 100 acquires data related to the read request from the SSD 51 and outputs the data to an application operating on the VM 54.
  • the I / O processing unit 100 proceeds to the process at Step S104.
  • FIG. 6 is a flowchart of the process procedure of the data writing process according to the first embodiment.
  • the process illustrated in FIG. 6 is executed, for example, when the request extraction unit receives a write request for data in the recording device 30 from an application operating on the VM 54.
  • the I / O processing unit 100 accepts a write request from an application operating on the VM 54 (step S201).
  • the I / O processing unit 100 accesses the index information in the memory 52 (step S202).
  • the I / O processing unit 100 determines whether there is a possibility that data related to the write request is cached in the SSD 51 (step S203). For example, the I / O processing unit 100 determines whether or not the index information 2e corresponding to the received read request exists in the memory 52.
  • the I / O processing unit 100 writes the data to the recording device 30 (Step S204) and ends the process. .
  • the I / O processing unit 100 accesses the tag information on the SSD 51 (Step S205).
  • the I / O processing unit 100 determines whether there is cached data on the SSD 51 (step S206). If the cached data exists on the SSD 51 (Yes at Step S206), the I / O processing unit 100 changes the valid flag of the tag information of the data related to the write request to invalid (Step S207). Then, the I / O processing unit 100 changes the validity flag of the index information of the data related to the write request to invalid (step S208), and proceeds to the process of step S204.
  • the I / O processing unit 100 proceeds to the process at Step S204.
  • FIG. 7 is a flowchart illustrating the processing procedure of the reconstruction process according to the first embodiment.
  • the process illustrated in FIG. 7 is executed, for example, when the request extraction unit receives a restart of the VM 54.
  • the I / O processing unit 100 accepts the restart of the VM 54 (step S301).
  • the I / O processing unit 100 reconstructs the index information on the memory 52 from the tag information 2a of all entries on the SSD 51 (step S302), and ends the process.
  • the I / O processing unit 100a acquires the tag information 2a of all entries stored in the SSD 51a.
  • the I / O processing unit 100a shortens the recording device identifier 2b and the recording device relative position 2c included in the acquired tag information 2a, and generates the shortened recording device identifier 2f and the shortened recording device relative position 2g. .
  • the I / O processing unit 100a associates the generated shortened recording device identifier 2f and the shortened recording device relative position 2g with the valid flag 2d and stores them in the memory 52 as index information 2e.
  • the I / O processing unit 100 receives an access request for data.
  • the I / O processing unit 100 determines whether or not index information corresponding to the received access request exists in the memory.
  • the I / O processing unit 100 performs access control to access the non-volatile memory when it is determined that the index information exists, and to access the recording device 30 when it is determined that the index information does not exist. For this reason, the I / O processing unit 100 can improve access performance while suppressing memory usage.
  • the I / O processing unit 100 stores, in the memory 52, the index information 2e obtained by shortening the tag information 2a for identifying the data cached in the SSD 51 from the recording device 30. For this reason, the I / O processing unit 100 can suppress the memory usage.
  • the I / O processing unit 100 can improve access performance by reducing the number of accesses to the SSD 51 when there is no data related to the access request on the SSD 51. For example, in the prior art, even when data related to an access request does not exist on the SSD 51, the SSD 51 is accessed every time an access request is received. On the other hand, the I / O processing unit 100 determines whether or not the index information 2e corresponding to the access request exists in the memory 52. When the index information 2e does not exist in the memory 52, the I / O processing unit 100 determines that the data related to the access request does not exist on the SSD 51, and accesses the recording device 30 without accessing the SSD 51. . For this reason, since the I / O processing unit 100 can reduce the number of accesses to the SSD 51, the access performance can be improved.
  • the I / O processing unit 100 generates the index information 2e based on the tag information 2a of the data cached in the SSD 51 from the recording device 30. Therefore, the I / O processing unit 100 can easily generate the index information 2e when the memory 52 is reset.
  • the index information 2e may become the same information due to, for example, collision of hash values.
  • the “tag A index” shortened by cutting out only the information behind “tag A”
  • the “tag C” shortened by cutting out only the information behind “tag C”.
  • the “index of” is information in which the index information 2e is the same. In this case, there is a possibility that a Hit miss in which cached data does not exist on the SSD 51 may occur even though it is determined that the index information 2e on the memory 52 matches. (No in step S108) Further, when access requests relating to these two different tag information 2a are alternately generated, the cache on the SSD 51 is rewritten alternately and hit misses are also increased.
  • FIG. 8 is a schematic diagram illustrating an example of tag information and index information according to the second embodiment.
  • the index information 8a stored on the memory 52 includes a shortened recording device identifier 2f, a shortened recording device relative position 2g, a valid flag 2d, and overflow information 8b.
  • the overflow information 8 b is information indicating whether or not the data identified by the tag information 2 a is in the overflow area of the memory 52. For example, in the overflow information 8b, “1” is stored when it is in the overflow area, and “0” is stored when there is no overflow information.
  • the cache data 8c represents data cached in the overflow area.
  • the tag information 2a is the same as that in the above embodiment, and the description thereof is omitted.
  • the information processing system according to the second embodiment has the same functional configuration as the information processing system illustrated in FIG.
  • the memory 52 further stores history information.
  • This history information is information for recording a Hit miss.
  • the history information is updated by the index management unit 104 when the tag information management unit 106 outputs a determination result that the tag information 2 a corresponding to the read request does not exist in the SSD 51.
  • the history information is referred to by the index management unit 104.
  • FIGS. 9 and 10 are diagrams for explaining an example of history information according to the second embodiment.
  • the history information shown in FIGS. 9 and 10 is stored in the memory 52.
  • the history information includes the total length and the last pointer.
  • the total length is information representing the total length of the history information.
  • the last pointer is information indicating the position of the pointer when information is registered in the previous history information.
  • the history information includes information in which the time, the recording device identifier, and the relative position in the recording device are associated. Among these, the time is information indicating the time when the corresponding entry is registered.
  • FIG. 10 illustrates information stored as history information.
  • the history information includes the total length “2048” and the last pointer “1024”. Also, as shown in the second line of FIG. 10, the history information includes the time “2012030108510318”, the recording device identifier “abE0a1-5dPX-ITpk-4AmA-azC2-4zzC-0m0cLX”, and the relative position “13557246864” in the recording device. Including.
  • the recording device identifier “abE0a1-5dPX-ITpk-4AmA-azC2-4zzC-0m0cLX” and the relative position “1355726864” in the recording device correspond to the tag information 2a “tag A” in FIG. That is, the second line in FIG. 10 indicates that it is determined that there is no data related to the tag A on the SSD 51 at the time “2012030108510318”, that is, there is a Hit miss of the tag A.
  • the tag information 2a having Hit miss is stored in the chronological order after the second line in FIG. When information is stored in all entries of history information, the history information is updated in order from the oldest entry.
  • FIG. 11 is a block diagram illustrating an example of a functional configuration of the I / O processing unit 100 according to the second embodiment.
  • the I / O processing unit 100 according to the second embodiment further includes a history information management unit 110 and an overflow management unit 111.
  • the data reading unit 102 further determines whether or not data corresponding to the access request exists in the memory 52. For example, when receiving the read request from the request extraction unit 101, the data reading unit 102 causes the index management unit 104 to access the index information 2e in the memory 52. The data reading unit 102 outputs a read request to the index management unit 104, and determines whether or not the data related to the read request exists in the overflow area. When it is determined that the data related to the read request exists in the overflow area, the data reading unit 102 accesses the cache data in the overflow area via the overflow management unit 111 described later. The data reading unit 102 acquires data related to the reading request from the overflow area via the overflow management unit 111. The data reading unit 102 outputs the acquired data to an application that operates on the VM 54.
  • the data reading unit 102 when it is determined that the data related to the read request exists in the overflow area, the data reading unit 102 causes the index management unit 104 to determine whether or not the corresponding SSD entry is valid. The data reading unit 102 performs access control to access the SSD 51 when it is determined that the data corresponding to the read request exists in the memory 52, and to access the recording device 30 when it is determined that the data does not exist.
  • the data reading unit 102 acquires data related to the reading request from the recording device 30 via the recording device management unit 108.
  • the data reading unit 102 outputs the acquired data to the application on the VM 54 that has output the read request.
  • the data reading unit 102 outputs the acquired data, the recording device identifier 2b of the data, and the relative position 2c in the recording device to the tag information management unit 106.
  • the data reading unit 102 causes the tag information management unit 106 to cache the acquired data in the SSD 51 and store the tag information 2a of the cached data.
  • the data reading unit 102 outputs the tag information 2a of the cached data to the index management unit 104.
  • the data reading unit 102 causes the index management unit 104 to store the index information 2e corresponding to the tag information 2a of the cached data in the memory 52.
  • the data reading unit 102 When accessing the SSD 51, the data reading unit 102 outputs a read request to the tag information management unit 106, and causes the tag information management unit 106 to determine whether or not the cached data exists on the SSD 51. If there is cached data on the SSD 51, the tag information management unit 106 is made to acquire data related to the read request from the SSD 51. The data reading unit 102 outputs the acquired data to the application on the VM 54 that has output the read request.
  • the data reading unit 102 causes the history information management unit 110 to update the history information.
  • the data reading unit 102 outputs the time when it is determined that the cached data does not exist on the SSD 51 and the tag information 2 a to the history information management unit 110.
  • the data reading unit 102 causes the history information management unit 110 to store, in the history information of the memory 52, the time when the cached data is determined not to exist on the SSD 51 and the tag information 2a.
  • the data reading unit 102 causes the history information management unit 110 to determine whether or not there is a similar hit miss in the history information over a predetermined frequency.
  • the data reading unit 102 performs access control to access the recording device 30 when the history information management unit 110 determines that a similar hit miss is less than a predetermined frequency.
  • the data reading unit 102 causes the overflow management unit 111 to cache the data of the recording device 30 in the overflow area when the history information management unit 110 determines that the same hit miss is a predetermined frequency or more.
  • the data reading unit 102 causes the recording device management unit 108 to acquire data related to the reading request from the recording device 30.
  • the data reading unit 102 caches the acquired data in the overflow area on the memory 52 together with the tag information 2a.
  • the data reading unit 102 controls the index management unit 104, the tag information management unit 106, the recording device management unit 108, the history information management unit 110, and the overflow management unit 111, respectively. As a result, the data reading unit 102 outputs the data related to the read request to the application on the VM 54 that has output the read request.
  • the index management unit 104 determines whether or not the data related to the read request exists in the overflow area. For example, the index management unit 104 determines that the data exists in the overflow area when the index information 2e corresponding to the read request exists in the memory 52 and the overflow information 8b of the corresponding index information 2e is “1”. judge. Further, the index management unit 104 does not have the data in the overflow area when the index information 2e corresponding to the read request does not exist in the memory 52 or when the overflow information 8b of the corresponding index information 2e is “0”. Is determined. Then, the index management unit 104 outputs the determination result to the data reading unit 102.
  • the index management unit 104 determines whether or not the corresponding SSD entry is valid. For example, the index management unit 104 determines that the SSD entry is valid when the validity flag 2d of the index information 2e related to the read request is “1”, and when the validity flag 2d is “0”. It is determined that the SSD entry is invalid.
  • the history information management unit 110 accesses the history information on the memory 52 via the memory access unit 105 and manages the history information.
  • the history information management unit 110 When the index management unit 104 determines that the data related to the read request does not exist in the SSD 51, the history information management unit 110 records the history of the tag information 2a related to the read request in the memory 52. For example, the history information management unit 110 receives from the index management unit 104 the time when it is determined that there is no cached data on the SSD 51 and the tag information 2a. The history information management unit 110 associates the time when it is determined that the cached data does not exist on the SSD 51 and the tag information 2 a and stores them in the history information of the memory 52.
  • the history information management unit 110 determines whether or not there is a similar hit miss in the history information at a predetermined frequency or more. For example, the history information management unit 110 refers to the history information, and when there are a predetermined number or more of the same tag information 2a within a predetermined time, the history information management unit 110 determines that the Hit miss is a predetermined frequency or more and is less than the predetermined number. In some cases, it is determined that the Hit miss is less than a predetermined frequency. Then, the history information management unit 110 outputs the determination result to the data reading unit 102.
  • the history information indicates that there is a Hit error of tag C at time “2012030108511205”.
  • the history information also indicates that there was a Hit error of Tag C at the time “2012030108512836”. Further, the history information indicates that there is a Hit error of the tag C at the time “2012030108514001”.
  • the history information management unit 110 determines that the hit miss has a predetermined frequency or more.
  • the predetermined time and the predetermined number are merely examples, and may be arbitrarily set by an administrator who manages the information processing system.
  • the overflow management unit 111 accesses the overflow area on the memory 52 via the memory access unit 105 and manages information stored in the overflow area.
  • the overflow management unit 111 stores data corresponding to the tag information 2a in the memory 52.
  • the overflow management unit 111 receives data related to the read request from the data writing unit 103.
  • the overflow management unit 111 caches the received data in the overflow area on the memory 52 together with the tag information 2a.
  • the overflow management unit 111 accesses the cache data in the overflow area. For example, when it is determined that the data related to the read request exists in the overflow area, the overflow management unit 111 receives the read request from the data reading unit 102. The overflow management unit 111 acquires data relating to the received read request from the overflow area, and outputs the acquired data to the data reading unit 102.
  • FIG. 12 is a flowchart illustrating the processing procedure of the data reading process according to the second embodiment.
  • the process illustrated in FIG. 12 is executed, for example, when the request extraction unit receives a read request from an application operating on the VM 54.
  • the I / O processing unit 100 accepts a read request from an application operating on the VM 54 (step S401).
  • the I / O processing unit 100 accesses the index information in the memory 52 (step S402).
  • the I / O processing unit 100 determines whether the data related to the read request exists in the overflow area (step S403). For example, the I / O processing unit 100 overflows data when the index information 2e corresponding to the received read request exists in the memory 52 and the overflow information 8b of the corresponding index information 2e is “1”. It is determined that it exists in the area. Further, the I / O processing unit 100 overflows the data when the index information 8a corresponding to the received read request does not exist in the memory 52 or the overflow information 8b of the corresponding index information 8a is “0”. It is determined that it does not exist in the area.
  • the I / O processing unit 100 accesses the cache data in the overflow area (Step S404) and ends the process. For example, the I / O processing unit 100 acquires data related to the read request from the overflow area, and outputs the data to an application operating on the VM 54.
  • the I / O processing unit 100 determines whether or not the corresponding SSD entry is valid (Step S405). For example, the I / O processing unit 100 determines that the SSD entry is valid when the corresponding valid flag 2d is “1”, and determines that the SSD entry is valid when the corresponding valid flag 2d is “0”. Is determined to be invalid.
  • the I / O processing unit 100 acquires data from the recording device 30 (Step S406). For example, the I / O processing unit 100 acquires data relating to the read request from the recording device 30 and outputs the data to the application on the VM 54.
  • the I / O processing unit 100 caches the data acquired from the recording device in the SSD 51 and stores the tag information 2a (step S407).
  • the I / O processing unit 100 stores the index information 8a on the memory 52 (step S408) and ends the process.
  • the I / O processing unit 100 accesses the tag information 2a on the SSD 51 (Step S409).
  • the I / O processing unit 100 determines whether there is cached data on the SSD 51 (step S410). If the cached data exists on the SSD 51 (Yes at Step S410), the I / O processing unit 100 acquires the data related to the read request from the SSD 51 (Step S411), and ends the process. For example, the I / O processing unit 100 acquires data related to the read request from the SSD 51 and outputs the data to an application operating on the VM 54.
  • the I / O processing unit 100 updates the history information (Step S412). For example, the I / O processing unit 100 associates the time when it is determined that the cached data does not exist on the SSD 51 and the tag information 2a, and stores them in the history information.
  • the I / O processing unit 100 determines whether or not a hit error similar to the history information has a predetermined frequency or more (step S413). For example, the I / O processing unit 100 refers to the history information, and when a predetermined number or more of the same tag information 2a as the stored tag information 2a exists within a predetermined time, the Hit miss is determined to be a predetermined frequency or more. If the number is less than the predetermined number, it is determined that the Hit miss is less than the predetermined frequency.
  • the I / O processing unit 100 caches the data of the recording device 30 in the overflow area (step S414), and proceeds to the process of step S408. For example, the I / O processing unit 100 acquires data related to the read request from the recording device 30, and caches the acquired data in the overflow area on the memory 52 together with the tag information 2a.
  • the I / O processing unit 100 proceeds to the process at Step S406.
  • the I / O processing unit 100 When it is determined that the tag information 2 a does not exist in the SSD 51, the I / O processing unit 100 records the history of the tag information 2 a in the history information on the memory 52. When the frequency of the tag information 2a recorded in the history information is equal to or higher than a predetermined frequency, the I / O processing unit 100 stores the data related to the tag information 2a in the overflow area on the memory 52. The I / O processing unit 100 determines whether data corresponding to the received access request exists in the overflow area on the memory 52. The I / O processing unit 100 performs access control to access the memory 52 when it is determined that the data related to the read request exists in the overflow area.
  • the I / O processing unit 100 performs access control to access the SSD 51 when it is determined that the index information 8 a exists in the memory 52. As a result, the I / O processing unit 100 can perform frequent access to the SSD by frequently rewriting the cache on the SSD 51 even when access requests for the two different tag information 2a occur alternately. Access and hit mistakes can be suppressed.
  • the I / O processing unit 100 stores the data related to one tag information 2a in the overflow area. Therefore, the I / O processing unit 100 can separately cache data related to two different pieces of tag information 2a. For this reason, the I / O processing unit 100 can cope with the case where different tag information 2a becomes the same index information 8a due to shortening.
  • the above embodiment can also be applied to managing version information in order to prevent an old version of data from being updated in the recording device 30.
  • the I / O processing unit 100 manages version information will be described.
  • points that are different from the first embodiment will be described, and the same points as those in the first embodiment will be denoted by the same reference numerals and description thereof will be omitted.
  • the information processing system according to the third embodiment has the same functional configuration as the information processing system illustrated in FIG.
  • FIG. 13 is a schematic diagram illustrating an example of tag information and index information according to the third embodiment.
  • the tag information 13a stored on the SSD 51 includes a recording device identifier 2b, an in-recording device relative position 2c, version information 13b, and a validity flag 2d.
  • the version information 13b is information indicating the version of data stored in the recording device.
  • the version information 13b is represented by the number of times the data on the recording device 30 has been updated.
  • the version information 13b is also stored in the recording device 30.
  • the index information 13c stored on the memory 52 includes a shortened recording device identifier 2f, a relative position in the shortened recording device 2g, shortened version information 13d, and a valid flag 2d.
  • the shortened version information 13d is information obtained by shortening the version information 13b by a hash function.
  • the version information 13 b is shortened by the index management unit 104. Further, the version information 13b may be shortened by cutting out only information behind the version information 13b.
  • the version information 13b “1023” becomes the shortened version information 13d “ce5140df15d046a666883807d18d0264b” when shortened by the hash function.
  • the version information 13b “1023” becomes the shortened version information 13d “23” when shortened by backward clipping.
  • the shortened version information 13d is shortened by the index management unit 104.
  • the I / O processing unit 100 according to the third embodiment has the same functional configuration as the I / O processing unit 100 illustrated in FIG.
  • the request extraction unit 101 further accepts that the recording device 30 is mounted on the VM 54. For example, when the VM 54 is activated, the request extraction unit 101 accepts that the VDISK 32 that stores data to be processed by the VM 54 is mounted. When the VDISK 32 is mounted, the request extraction unit 101 outputs information indicating that the recording device 30 is mounted on the VM 54 to the recording device management unit 108.
  • the data reading unit 102 accesses the recording device 30 and acquires the data related to the reading request from the recording device 30 via the recording device management unit 108, the data reading unit 102 further reduces the version information 13b on the SSD 51 and the shortening on the memory 52.
  • the version information 13d is updated.
  • the data reading unit 102 caches the data acquired from the recording device 30 in the SSD 51 and updates the version information 13b on the SSD 51 to the version information 13b acquired from the recording device 30 when updating the tag information 2a. To do.
  • the data reading unit 102 updates the shortened version information 13 d on the memory 52 using the version information 13 b acquired from the recording device 30.
  • the data reading unit 102 shortens the version information 13b acquired from the recording device 30 in the index management unit 104 and generates the shortened version information 13d. Then, the data reading unit 102 causes the index management unit 104 to update the shortened version information 13d on the memory 52 to the generated shortened version information 13d.
  • the data reading unit 102 accesses the SSD 51 and there is cached data on the SSD 51, the data reading unit 102 further outputs a reading request to the tag information management unit 106, and determines whether or not the version information 13b on the SSD 51 is the latest.
  • the tag information management unit 106 makes a determination.
  • the data reading unit 102 causes the tag information management unit 106 to acquire data related to the reading request from the SSD 51.
  • the data reading unit 102 outputs the acquired data to the application on the VM 54 that has output the read request. If the version information 13b on the SSD 51 is not up-to-date, the recording device management unit 108 is made to acquire data related to the read request from the recording device 30.
  • the recording device management unit 108 further updates the version information stored in the recording device 30. For example, the recording device management unit 108 receives information indicating that the recording device 30 is mounted on the VM 54 from the request extraction unit 101. The recording device management unit 108 increments the version information 13b of the data in the VDISK 32 storing the data processed by the VM 54 by one.
  • FIG. 14 is a flowchart illustrating a processing procedure for updating version information according to the third embodiment. The process illustrated in FIG. 14 is executed, for example, when the request extraction unit receives a mount of the recording device 30.
  • the I / O processing unit 100 accepts that the recording device 30 is mounted on the VM 54 (step S501).
  • the I / O processing unit 100 updates the version information 13b of the recording device 30 (step S502) and ends the process.
  • the I / O processing unit 100 may update the version information of the corresponding data every time data is written.
  • the I / O processing unit 100 may increment the version information 13b of the data corresponding to the written data by 1 when the process of step S204 in FIG. 6 is performed.
  • FIG. 15 is a flowchart of the data read process according to the third embodiment. The process illustrated in FIG. 15 is executed, for example, when the request extraction unit receives a read request from an application operating on the VM 54.
  • the I / O processing unit 100 accepts a read request from an application operating on the VM 54 (step S601).
  • the I / O processing unit 100 accesses the index information in the memory 52 (step S602).
  • the I / O processing unit 100 determines whether there is a possibility that the data related to the read request is cached in the SSD 51 (step S603). For example, the I / O processing unit 100 determines whether or not the index information 13 c corresponding to the received read request exists in the memory 52.
  • the I / O processing unit 100 accesses the data in the recording device 30 (step S604). For example, the I / O processing unit 100 acquires data relating to the read request from the recording device 30 and outputs the data to the application on the VM 54.
  • the I / O processing unit 100 caches the data acquired from the recording device 30 in the SSD 51, and updates the tag information 2a (step S605). At this time, the I / O processing unit 100 updates the version information 13b on the SSD 51 to the version information 13b acquired from the recording device 30.
  • the I / O processing unit 100 updates the index information 2e on the memory 52 (step S606) and ends the process. At this time, the I / O processing unit 100 updates the shortened version information 13 d on the memory 52 using the version information 13 b acquired from the recording device 30.
  • the I / O processing unit 100 accesses the tag information on the SSD 51 (step S607).
  • the I / O processing unit 100 determines whether or not cached data exists on the SSD 51 (step S608). If cached data exists on the SSD 51 (Yes at Step S608), the I / O processing unit 100 determines whether or not the version information 13b on the SSD 51 is the latest (Step S609). For example, the I / O processing unit 100 determines whether or not the version information 13b on the SSD 51 matches the version information 13b included in the read request.
  • the I / O processing unit 100 acquires data related to the read request from the SSD 51 (Step S610), and ends the process. For example, the I / O processing unit 100 acquires data related to the read request from the SSD 51 and outputs the data to an application operating on the VM 54.
  • the I / O processing unit 100 proceeds to the process at Step S604. If the version information 13b on the SSD 51 is not the latest (No at Step S609), the I / O processing unit 100 proceeds to the process at Step S604.
  • the I / O processing unit 100 receives information indicating that the recording device 30 is mounted. When the information indicating that the recording device 30 is mounted is received, the I / O processing unit 100 updates the version information stored in the recording device 30. When the I / O processing unit 100 accepts a read request for data as an access request, the version information corresponding to the read request stored in the SSD 51 and the version information corresponding to the read request stored in the recording device 30 Is matched. The I / O processing unit 100 performs access control to access the SSD 51 when it is determined that the version information matches, and to access the recording device 30 when they do not match. For this reason, the I / O processing unit 100 can prevent an old version of data from being updated in the recording device 30.
  • the above embodiments can be appropriately combined within a range in which the processing contents do not contradict each other.
  • the above-described first to third embodiments may be combined, and the I / O processing unit 100 may use index information including the overflow information 8b and the shortened version information 13d.
  • FIG. 16 is a schematic diagram illustrating an example of tag information and index information according to the fourth embodiment.
  • the tag information 16a stored on the SSD 51 includes a recording device identifier 2b, an in-recording device relative position 2c, version information 13b, and a validity flag 2d.
  • the index information 16b stored on the memory 52 includes a shortened recording device identifier 2f, a shortened recording device relative position 2g, a shortened version information 13d, a valid flag 2d, and overflow information 8b. In the overflow area of the memory 52, information associated with the tag information 2a and the cache data 8c is stored.
  • FIG. 17 is a flowchart illustrating a processing procedure of data reading processing according to the fourth embodiment. The process illustrated in FIG. 17 is executed, for example, when the request extraction unit receives a read request from an application operating on the VM 54.
  • the I / O processing unit 100 accepts a read request from an application operating on the VM 54 (step S701).
  • the I / O processing unit 100 accesses the index information in the memory 52 (step S702).
  • the I / O processing unit 100 determines whether or not the data related to the read request exists in the overflow area (step S703). If the data exists in the overflow area (Yes at step S703), the I / O processing unit 100 accesses the cache data in the overflow area (step S704) and ends the process. For example, the I / O processing unit 100 acquires data related to the read request from the overflow area, and outputs the data to an application operating on the VM 54.
  • the I / O processing unit 100 determines whether or not the corresponding SSD entry is valid (Step S705). For example, the I / O processing unit 100 determines that the SSD entry is valid when the corresponding valid flag 2d is “1”, and determines that the SSD entry is valid when the corresponding valid flag 2d is “0”. Is determined to be invalid.
  • the I / O processing unit 100 acquires data from the recording device 30 (Step S706). For example, the I / O processing unit 100 acquires data relating to the read request from the recording device 30 and outputs the data to the application on the VM 54.
  • the I / O processing unit 100 caches the data acquired from the recording device 30 in the SSD 51 and stores the tag information 2a (step S707).
  • the I / O processing unit 100 stores the index information 2e on the memory 52 (step S708) and ends the process.
  • Step S705 if the SSD entry is valid (Yes at Step S705), the I / O processing unit 100 accesses the tag information 2a on the SSD 51 (Step S709).
  • the I / O processing unit 100 determines whether or not cached data exists on the SSD 51 (step S710). If cached data exists on the SSD 51 (Yes at Step S710), it is determined whether or not the version information on the SSD 51 is the latest (Step S711). If the version information is the latest (Yes at Step S711), the I / O processing unit 100 acquires data related to the read request from the SSD 51 (Step S712), and ends the process. If the version information is not the latest (No at Step S711), the I / O processing unit 100 proceeds to the process at Step S706.
  • the I / O processing unit 100 updates the history information (Step S713).
  • the I / O processing unit 100 determines whether or not a hit error similar to history information has a predetermined frequency or more (step S714). If the hit miss is greater than or equal to the predetermined frequency (Yes at step S714), the I / O processing unit 100 caches the data of the recording device 30 in the overflow area (step S715), and proceeds to the process of step S708.
  • the I / O processing unit 100 proceeds to the process at Step S706.
  • the I / O processing unit 100 can use index information including the overflow information 8b and the shortened version information 13d.
  • I / O processing unit 100 may be applied to an information processing system different from the information processing system applied in the above embodiment.
  • FIGS. 18 and 19 are block diagrams illustrating the functional configuration of the information processing system according to the fourth embodiment.
  • the information processing system includes a recording device 30, server devices 60a, 60b, and 60c, and a cache SSD storage server 70.
  • the recording device 30, the server devices 60a, 60b, and 60c and the cache SSD storage server 70 are connected via the network 5, respectively.
  • the information processing system includes three server devices 60a, 60b, and 60c.
  • the configuration is not limited to the illustrated configuration. That is, an arbitrary number of server devices 60 may be connected to this information processing system.
  • the server devices 60a, 60b, and 60c are collectively referred to as the server device 60 when collectively referred to without distinction.
  • the cache SSD storage server 70 includes a plurality of SSDs 51, and is a server device for caching data transmitted from the recording device 30 to the server device 60 in the information processing system of FIG.
  • the server device 60 basically has the same configuration as the server device 50 and is different in that it does not include the SSD 51. Note that the I / O processing unit 100 functions in the hypervisor 53 of the server device 60.
  • the information processing system includes a recording device 80 and server devices 90a, 90b, 90c.
  • the recording device 80 and the server devices 90a, 90b, and 90c are connected to each other via the network 5.
  • the information processing system includes three server devices 90a, 90b, and 90c.
  • the configuration is not limited to the illustrated configuration. That is, an arbitrary number of server devices 90 may be connected to this information processing system.
  • the server devices 90a, 90b, and 90c are collectively referred to as the server device 90 when collectively referred to without distinction.
  • the recording device 80 basically has the same configuration as that of the recording device 30, and further includes a controller module 81, one or more SSDs 51, and one or more memories 52.
  • the controller module 81 basically has the same configuration as the controller module 33 and is different in that it includes an I / O processing unit 100.
  • the I / O processing unit 100 when the I / O processing unit 100 receives an access request transmitted from the VM 54 a, the I / O processing unit 100 refers to the index information stored in the memory 52 a and accesses the SSD 51 a or stores it in the recording device 30. Determine whether to access. Therefore, the I / O processing unit 100a can improve the access performance while suppressing the usage amount of the memory 52.
  • FIG. 20 is a diagram illustrating an example of a computer that executes a control program.
  • the computer 300 includes a CPU 301 that executes various arithmetic processes, an input device 302 that receives data input from a user, and a monitor 303.
  • the computer 300 also includes a medium reading device 304 that reads a program or the like from a storage medium, an interface device 305 for connecting to another device, and a wireless communication device 306 for connecting to another device wirelessly.
  • the computer 300 also includes a RAM (Random Access Memory) 307 that temporarily stores various information and a hard disk device 308. Each device 301 to 308 is connected to a bus 309.
  • RAM Random Access Memory
  • the hard disk device 308 stores medical information input programs having the same functions as the processing units of the request extraction unit 101, the data reading unit 102, the data writing unit 103, and the index management unit 104 shown in FIG.
  • the hard disk device 308 stores various data for realizing the control program.
  • the CPU 301 reads out each program stored in the hard disk device 308, develops it in the RAM 307, and executes it to perform various processes.
  • these programs can cause the computer to function as the request extraction unit 101, the data reading unit 102, the data writing unit 103, and the index management unit 104 illustrated in FIG.
  • the above control program does not necessarily have to be stored in the hard disk device 308.
  • the computer 300 may read and execute a program stored in a computer-readable recording medium.
  • the computer-readable recording medium corresponds to, for example, a portable recording medium such as a CD-ROM, a DVD disk, a USB (Universal Serial Bus) memory, a semiconductor memory such as a flash memory, a hard disk drive, and the like.
  • the program may be stored in a device connected to a public line, the Internet, a LAN (Local Area Network), a WAN (Wide Area Network), etc., and the computer 300 may read and execute the program therefrom. good.
  • the hypervisor 53 and the VM 54 are realized in the server device 50.
  • the server device 50 may be a physical computer that is not virtualized.

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)

Abstract

 本願の開示する制御プログラムは、一つの態様において、データを記憶する記録装置に対するアクセス要求を受け付ける処理をコンピュータに実行させる(S101)。制御プログラムは、記録装置から不揮発性メモリにキャッシュしたデータを識別する識別情報を短縮したインデックス情報を記憶するメモリに、受け付ける処理によって受け付けたアクセス要求に対応するインデックス情報が存在するか否かを判定する処理をコンピュータに実行させる(S103)。制御プログラムは、判定する処理によってインデックス情報が存在すると判定された場合に、不揮発性メモリにアクセスし、存在しないと判定された場合に、記録装置にアクセスする処理をコンピュータに実行させる(S104、S107)。

Description

制御プログラム、制御方法及び制御装置
 本発明は、制御プログラム、制御方法及び制御装置に関する。
 従来、NAND型フラッシュメモリなどの不揮発性半導体メモリを搭載したSSD(Solid State Drive)を、ストレージシステムのキャッシュとして利用する技術が存在する。例えば、ネットワーク上のディスク装置のデータを、ディスク装置より高速なアクセスが可能なサーバ装置内のSSDにデータをキャッシュする。そして、キャッシュしたデータの格納場所やデータサイズなどの情報をタグ情報として用いることで、データへのアクセス性能を改善することが行われている。
 また、例えば、SSDにデータをキャッシュするとともに、キャッシュした全てのデータのタグ情報をサーバ装置内のメモリに制御プログラムが記憶させる。そして、メモリに記憶したタグ情報を参照することで、キャッシュ上のデータの有無を判定する。
特開平10-40170号公報 特開2003-223284号公報
 しかしながら、上記の従来技術では、メモリ使用量を抑えつつアクセス性能を高めることができないという問題がある。例えば、上記の従来技術では、SSDにキャッシュした全てのデータのタグ情報をメモリに記憶させることとなるので、メモリ使用量が多くなってしまう。
 また、例えば、上記の従来技術において、キャッシュしたデータのタグ情報をメモリに記憶させず、SSDにアクセスしてキャッシュ上のデータの有無を判定する態様も考えられる。この場合、メモリの使用量は少なくすることができるが、データへのアクセスが発生するたびに、SSDにアクセスする。SSDにキャッシュされたデータが無い場合は、ディスク装置に記憶されたデータにアクセスすることとなるが、このとき、ディスク装置へのアクセスの前に、SSDへのアクセスが発生するため、データへのアクセス性能が低くなってしまう。以上のように、従来技術においては、メモリの使用量を抑えつつデータへのアクセス性能を高めることができない。
 1つの側面では、本発明は、メモリ使用量を抑えつつアクセス性能を高めることができる制御プログラム、制御方法及び制御装置を提供することを目的とする。
 1つの案では、制御プログラムは、一つの態様において、データを記憶する記録装置に対するアクセス要求を受け付ける処理をコンピュータに実行させる。制御プログラムは、記録装置から不揮発性メモリにキャッシュしたデータを識別する識別情報を短縮したインデックス情報を記憶するメモリに、受け付ける処理によって受け付けたアクセス要求に対応するインデックス情報が存在するか否かを判定する処理をコンピュータに実行させる。制御プログラムは、判定する処理によってインデックス情報が存在すると判定された場合に、不揮発性メモリにアクセスし、存在しないと判定された場合に、記録装置にアクセスする処理をコンピュータに実行させる。
 本願の開示する技術の一つの態様によれば、メモリ使用量を抑えつつアクセス性能を高めることができるという効果を奏する。
図1は、実施例1に係る情報処理システムの機能構成を示すブロック図である。 図2は、実施例1に係るタグ情報及びインデックス情報の一例について説明するための図である。 図3は、実施例1に係るタグ情報及びインデックス情報の一例について説明するための図である。 図4は、実施例1に係るI/O処理部の機能構成の一例を示すブロック図である。 図5は、実施例1に係るデータ読込処理の処理手順を示すフローチャートである。 図6は、実施例1に係るデータ書込処理の処理手順を示すフローチャートである。 図7は、実施例1に係る再構築処理の処理手順を示すフローチャートである。 図8は、実施例2に係るタグ情報及びインデックス情報の一例について説明するための図である。 図9は、実施例2に係るヒストリ情報の一例について説明するための図である。 図10は、実施例2に係るヒストリ情報の一例について説明するための図である。 図11は、実施例2に係るI/O処理部の機能構成の一例を示すブロック図である。 図12は、実施例2に係るデータ読込処理の処理手順を示すフローチャートである。 図13は、実施例3に係るタグ情報及びインデックス情報の一例について説明するための図である。 図14は、実施例3に係るバージョン情報を更新する処理の処理手順を示すフローチャートである。 図15は、実施例3に係るデータ読込処理の処理手順を示すフローチャートである。 図16は、実施例4に係るタグ情報及びインデックス情報の一例について説明するための図である。 図17は、実施例4に係るデータ読込処理の処理手順を示すフローチャートである。 図18は、実施例4に係る情報処理システムの機能構成を示すブロック図である。 図19は、実施例4に係る情報処理システムの機能構成を示すブロック図である。 図20は、制御プログラムを実行するコンピュータの一例を示す図である。
 以下に、本願の開示する制御プログラム、制御方法及び制御装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
 実施例1に係る情報処理システムの機能構成の一例について説明する。図1は、実施例1に係る情報処理システムの機能構成を示すブロック図である。図1に示すように、このシステムは、記録装置30及びサーバ装置50a,50b,50cを有する。記録装置30及びサーバ装置50a,50b,50cは、ネットワーク5を介してそれぞれ接続される。ネットワーク5としては、有線又は無線を問わず、インターネット(Internet)、LAN(Local Area Network)などの任意の種類の通信網を採用して良い。なお、図1の例では、情報処理システムにサーバ装置50a,50b,50cの3つが含まれる場合を示したが、図示の構成に限定されるものではない。すなわち、この情報処理システムには任意数のサーバ装置50が接続されて良い。また、サーバ装置50a,50b,50cの各装置を区別無く総称する場合に、サーバ装置50と記載する。
 記録装置30は、データを記憶する装置である。例えば、記録装置30は、サーバ装置50からのアクセス要求に応じて、自装置に記憶したデータの送受信を行う。一例としては、記録装置30は、データを読み込む読込要求をサーバ装置50から受信する。記録装置30は、受信した読込要求にかかるデータをサーバ装置50へ送信する。また、例えば、記録装置30は、データを書き込む書込要求をサーバ装置50から受信する。記録装置30は、受信した書込要求にかかるデータを自装置内の物理DISK31に格納する。読込要求及び書込要求は、アクセス要求の一例である。
 記録装置30は、物理DISK31a,31b,31c及びコントローラモジュール33を有する。物理DISK31a,31b,31cは、例えば、ハードディスク装置や光ディスク装置などのディスク装置である。物理DISK31a,31b,31cは、アプリケーションからは仮想的な記憶媒体であるVDISK32a,32b,32c,32dとしてアクセスされる。VDISK32a,32b,32c,32dは、記録装置30に搭載された物理DISK31の1つ又は複数を用いて実現される仮想的な記憶媒体である。例えば、VDISK32a,32b,32c,32dは、後述のVM54ごとに構築される。
 コントローラモジュール33は、物理DISK31へのデータの入出力を制御する装置である。例えば、コントローラモジュール33は、サーバ装置50及び物理DISK31とのデータの送受信を行うインターフェースと、サーバ装置50からのアクセス要求を解析するCPU(Central Processing Unit)とを含む。
 サーバ装置50は、情報処理を行う装置である。例えば、サーバ装置50は、記録装置30へアクセス要求を送信することで、記録装置30に記憶されたデータの読み書きを行う。
 サーバ装置50aは、SSD(Solid State Drive)51a、メモリ52a,52b及びハイパーバイザ53aを有する。また、サーバ装置50aは、ハイパーバイザ53によって仮想マシンであるVM(virtual machine)54a,54bを実現する。なお、サーバ装置50a,50b,50cはそれぞれ同様の機能構成を有するので、ここではサーバ装置50aについて説明し、サーバ装置50b,50cの説明を省略する。また、SSD51a,51b,51cの各装置を区別無く総称する場合に、SSD51と記載し、メモリ52a,52b,52c,52dの各装置を区別無く総称する場合に、メモリ52と記載する。また、ハイパーバイザ53a,53b,53cの各装置を区別無く総称する場合に、ハイパーバイザ53と記載し、VM54a,54b,54c,54dの各装置を区別無く総称する場合に、VM54と記載する。
 SSD51は、例えば、不揮発性メモリを備えた記憶ドライブ装置である。SSD51は、記録装置30から送信されたデータをキャッシュするとともに、キャッシュしたデータのタグ情報を記憶する。メモリ52は、SSD51に記憶されたタグ情報を短縮したインデックス情報を記憶する。
 ハイパーバイザ53は、サーバ装置50の物理的な計算機資源を論理的に分割または統合して仮想マシンを実現する。ハイパーバイザ53aは、I/O処理部100aを有する。I/O処理部100aは、サーバ装置50aと記録装置30との間でデータの送受信を制御する。VM54は、ハイパーバイザ53によって実現された仮想マシンである。VM54は、VM54上で所定のソフトウェアを実行することにより、様々なサービスを提供する。VM54は、サービスを利用する利用者の操作に応じて、記録装置30へアクセス要求を送信する。なお、I/O処理部100a,100b,100cの各装置を区別無く総称する場合に、I/O処理部100と記載する。
 ここで、I/O処理部100は、例えば、VM54aから送信されたアクセス要求を受け付けると、メモリ52aに記憶されたインデックス情報を参照し、SSD51aにアクセスするか、記録装置30にアクセスするかを判定する。
 次に、図2及び図3を用いて、実施例1に係るタグ情報及びインデックス情報の一例について説明する。図2及び図3は、実施例1に係るタグ情報及びインデックス情報の一例について説明するための図である。
 図2に示すように、SSD51上に記憶されるタグ情報2aは、記録装置識別子2b、記録装置内相対位置2c及び有効フラグ2dを含む。このうち、記録装置識別子2bは、記録装置30に含まれる物理DISK31を識別する情報である。記録装置内相対位置2cは、アクセス要求にかかるデータが記録装置30内のどの位置に存在するかを表す情報であり、例えば、記録装置30の記憶領域に割り当てられた先頭からの論理的なブロック番号である。有効フラグ2dは、タグ情報2aによって識別されるSSD51上のデータが有効か無効かを表す情報であり、例えば、有効フラグ2dが「1」であれば有効、有効フラグ2dが「0」であれば無効であることを示す。SSD51上にキャッシュされたデータは、記録装置識別子2b及び記録装置内相対位置2cによってハッシュテーブルにおけるエントリが決定される。
 また、メモリ52上に記憶されるインデックス情報2eは、短縮化記録装置識別子2f、短縮化記録装置内相対位置2g及び有効フラグ2dを含む。このうち、短縮化記録装置識別子2fは、記録装置識別子2bがハッシュ関数によって短縮化された情報である。短縮化記録装置内相対位置2gは、記録装置内相対位置2cがハッシュ関数によって短縮化された情報である。なお、記録装置識別子2b及び記録装置内相対位置2cは、後述のインデックス管理部104によって短縮化される。また、ここでは、記録装置識別子2b及び記録装置内相対位置2cがそれぞれハッシュ関数によって短縮化されるものと説明したが、本発明はこれに限定されるものではない。例えば、記録装置識別子2b及び記録装置内相対位置2cは、記録装置識別子2b及び記録装置内相対位置2cそれぞれの後方の情報のみを切り出すことで、短縮化されても良い。
 図3には、タグ名・インデックス名、短縮化手法の種別、記録装置識別子/短縮化記録装置識別子、記録装置内相対位置/短縮化記録装置内相対位置及び有効フラグを対応付けて例示する。このうち、タグ名・インデックス名は、タグ情報又はインデックス情報を識別するための名称を示す。短縮化手法の種別は、記録装置識別子及び記録装置内相対位置を短縮化する手法の種別を示す。記録装置識別子/短縮化記録装置識別子は、記録装置識別子又は短縮化記録装置識別子の一例を示す。記録装置内相対位置/短縮化記録装置内相対位置は、記録装置内相対位置又は短縮化記録装置内相対位置の一例を示す。有効フラグは、有効フラグの一例を示す。なお、図3中のハイフンは、対応する情報を含まないことを示す。
 図3の1行目は、タグ情報「タグA」が、記録装置識別子「abE0a1-5dPX-ITpk-4AmA-azC2-4zzC-0m0cLX」、記録装置内相対位置「1357246864」及び有効フラグ「1」を含むことを示す。また、図3の2行目は、タグ情報「タグB」が、記録装置識別子「cdE0a2-6dXX-IRkm-3LcQ-qrC2-4zzC-0m0cPY」、記録装置内相対位置「24681357987」及び有効フラグ「1」を含むことを示す。また、図3の3行目は、タグ情報「タグC」が、記録装置識別子「acQ0a7-1eOL-INxi-3PzM-plW4-4zzC-0m0cLX」、記録装置内相対位置「39157246864」及び有効フラグ「1」を含むことを示す。
 また、図3の4行目から6行目は、1行目から3行目に示した「タグA」、「タグB」及び「タグC」をそれぞれハッシュ関数によって短縮化したインデックス情報である。ここでは一例として、md5と呼ばれるコマンドによってハッシュ化した場合を示す。図3の4行目は、インデックス情報「タグAのインデックス」が、短縮化記録装置識別子「d879c335adcdef3031f1cb633c5b8811」を含むことを示す。また、図3の4行目は、インデックス情報「タグAのインデックス」が、短縮化記録装置内相対位置「4fce9ebe3353bd976aa708bb3d7ba75f」及び有効フラグ「1」を含むことを示す。また、図3の5行目は、インデックス情報「タグBのインデックス」が、短縮化記録装置識別子「c4ac4aab86e5a67c0bc483b438f97456」を含むことを示す。また、図3の5行目は、インデックス情報「タグBのインデックス」が、短縮化記録装置内相対位置「dcfa064dd03ba207fc9bd8ab70a438c6」及び有効フラグ「1」を含むことを示す。また、図3の6行目は、インデックス情報「タグCのインデックス」が、短縮化記録装置識別子「ecb224915960c98b69667fef3159e1ce」を含むことを示す。また、図3の6行目は、インデックス情報「タグCのインデックス」が、短縮化記録装置内相対位置「b554a0cacfbbcd3175d51fa6a679eb61」及び有効フラグ「1」を含むことを示す。
 また、図3の7行目から9行目は、1行目から3行目に示した「タグA」、「タグB」及び「タグC」をそれぞれ後方の情報のみを切り出すことによって短縮化したインデックス情報である。ここでは一例として、記録装置識別子の下11桁と、記録装置内相対位置の下8桁とをそれぞれ切り出したものである。図3の7行目は、インデックス情報「タグAのインデックス」が、短縮化記録装置識別子「4zzC-0m0cLX」、短縮化記録装置内相対位置「57246864」及び有効フラグ「1」を含むことを示す。また、図3の8行目は、インデックス情報「タグBのインデックス」が、短縮化記録装置識別子「4zzC-0m0cPY」、短縮化記録装置内相対位置「81357987」及び有効フラグ「1」を含むことを示す。また、図3の9行目は、インデックス情報「タグCのインデックス」が、短縮化記録装置識別子「4zzC-0m0cLX」、短縮化記録装置内相対位置「57246864」及び有効フラグ「1」を含むことを示す。なお、タグ情報の一部の情報のみを切り出したインデックス情報を、「パーシャルタグ」とも称する。
 次に、図4を用いて、実施例1に係るI/O処理部100の機能構成の一例を説明する。図4は、実施例1に係るI/O処理部100の機能構成の一例を示すブロック図である。
 図4に示すように、I/O処理部100は、要求抽出部101と、データ読込部102と、データ書込部103と、インデックス管理部104と、メモリアクセス部105と、タグ情報管理部106と、SSDアクセス部107と、記録装置管理部108と、記録装置アクセス部109とを有する。また、I/O処理部100の機能は、例えば、CPU(Central Processing Unit)が所定のプログラムを実行することで実現することができる。
 要求抽出部101は、VM54上で動作するアプリケーションとI/O処理部100との間で入出力される情報から、アクセス要求を抽出する。例えば、要求抽出部101は、記録装置のデータに対する読込要求を受け付ける。要求抽出部101は、受け付けた読込要求をデータ読込部102へ出力する。また、要求抽出部101は、記録装置のデータに対する書込要求を受け付ける。要求抽出部101は、受け付けた書込要求をデータ書込部103へ出力する。なお、読込要求及び書込要求は、アクセス要求の一例である。また、アクセス要求は、タグ情報2aを含む。
 また、要求抽出部101は、VM54が再起動された場合に、VM54の再起動を受け付ける。要求抽出部101は、VM54aが再起動された旨を示す情報を後述のインデックス管理部104へ出力する。
 データ読込部102は、記憶装置30からのデータの読み込みを制御する。例えば、データ読込部102は、要求抽出部101から読込要求を受け付ける。データ読込部102は、後述のインデックス管理部104、タグ情報管理部106及び記録装置管理部108をそれぞれ制御することで、読込要求にかかるデータを、読込要求を出力したVM54上のアプリケーションへ出力する。
 例えば、データ読込部102は、要求抽出部101から読込要求を受け付けると、インデックス管理部104にメモリ52のインデックス情報2eにアクセスさせる。データ読込部102は、インデックス管理部104に読込要求を出力し、読込要求に対応するインデックス情報2eがメモリ52に存在するか否かをインデックス管理部104に判定させる。データ読込部102は、インデックス情報2eがメモリ52に存在すると判定された場合に、SSD51にアクセスし、存在しないと判定された場合に、記録装置30にアクセスするアクセス制御を行う。
 記録装置30にアクセスすると、データ読込部102は、記録装置30から読込要求にかかるデータを記録装置管理部108を介して取得する。データ読込部102は、取得したデータを、読込要求を出力したVM54上のアプリケーションへ出力する。データ読込部102は、取得したデータ、そのデータの記録装置識別子2b及び記録装置内相対位置2cをタグ情報管理部106に出力する。データ読込部102は、タグ情報管理部106に、取得したデータをSSD51にキャッシュさせ、キャッシュしたデータのタグ情報2aを格納させる。データ読込部102は、キャッシュしたデータのタグ情報2aをインデックス管理部104に出力する。データ読込部102は、インデックス管理部104に、キャッシュしたデータのタグ情報2aに対応するインデックス情報2eをメモリ52に格納させる。
 SSD51にアクセスすると、データ読込部102は、タグ情報管理部106に読込要求を出力し、SSD51上にキャッシュしたデータが存在するか否かをタグ情報管理部106に判定させる。SSD51上にキャッシュしたデータが存在する場合には、タグ情報管理部106にSSD51から読込要求にかかるデータを取得させる。データ読込部102は、取得されたデータを、読込要求を出力したVM54上のアプリケーションへ出力する。なお、SSD51上にキャッシュしたデータが存在しない場合には、記録装置管理部108に記録装置30から読込要求にかかるデータを取得させる。
 このように、データ読込部102は、インデックス管理部104、タグ情報管理部106及び記録装置管理部108をそれぞれ制御することで、読込要求にかかるデータを、読込要求を出力したVM54上のアプリケーションへ出力する。
 データ書込部103は、記憶装置30へのデータの書き込みを制御する。例えば、データ書込部103は、要求抽出部101から書込要求を受け付ける。データ書込部103は、インデックス管理部104、タグ情報管理部106及び記録装置管理部108をそれぞれ制御することで、書込要求にかかるデータを、記録装置30に書き込む。
 例えば、データ書込部103は、要求抽出部101から書込要求を受け付けると、インデックス管理部104にメモリ52のインデックス情報2eにアクセスさせる。データ書込部103は、インデックス管理部104に書込要求を出力し、書込要求に対応するインデックス情報2eがメモリ52に存在するか否かをインデックス管理部104に判定させる。データ書込部103は、インデックス情報2eがメモリ52に存在すると判定された場合に、SSD51にアクセスし、存在しないと判定された場合に、記録装置30にアクセスするアクセス制御を行う。記録装置30にアクセスすると、データ書込部103は、記録装置30にデータを書き込む。
 SSD51にアクセスすると、データ書込部103は、タグ情報管理部106に書込要求を出力し、SSD51上にキャッシュしたデータが存在するか否かをタグ情報管理部106に判定させる。SSD51上にキャッシュしたデータが存在する場合には、データ書込部103は、タグ情報2aの有効フラグ2dを有効から無効に変更する旨の情報をタグ情報管理部106に出力する。データ書込部103は、タグ情報管理部106に、SSD51上のタグ情報2aの有効フラグ2dを有効から無効に変更させる。データ書込部103は、インデックス情報2eの有効フラグ2dを有効から無効に変更する旨の情報をインデックス管理部104に出力する。データ書込部103は、インデックス管理部104に、メモリ52上のインデックス情報2eの有効フラグ2dを有効から無効に変更させる。なお、SSD51上にキャッシュしたデータが存在しない場合には、データ書込部103は、記録装置30にデータを書き込む。
 このように、データ書込部103は、インデックス管理部104、タグ情報管理部106及び記録装置管理部108をそれぞれ制御することで、書込要求にかかるデータを、記録装置30に書き込む。
 インデックス管理部104は、後述のメモリアクセス部105を介してメモリ52上のインデックス情報2eにアクセスし、インデックス情報2eを管理する。例えば、インデックス管理部104は、記録装置30のデータに対するアクセス要求があった際に、そのデータに対応するインデックス情報2eがメモリ52に存在するか否かを判定する。
 ここで、インデックス管理部104がアクセス要求を受け付けて、アクセス要求に対応するインデックス情報2eがメモリ52に存在するか否かを判定する処理について説明する。以下では、インデックス管理部104が読込要求を受け付けた場合の処理を説明するが、書込要求を受け付けた場合の処理も同様である。
 例えば、インデックス管理部104は、データ読込部102から読込要求を受け付ける。インデックス管理部104は、受け付けた読込要求から、読込要求にかかるデータの記録装置識別子2b及び記録装置内相対位置2cを抽出する。インデックス管理部104は、記録装置識別子2b及び記録装置内相対位置2cをそれぞれ短縮化し、短縮化記録装置識別子2f及び短縮化記録装置内相対位置2gを生成する。一態様としては、インデックス管理部104は、図3の1行目の「タグA」の記録装置識別子2b及び記録装置内相対位置2cをハッシュ関数によってそれぞれ短縮化する。これにより、インデックス管理部104は、図3の4行目の「タグAのインデックス」の短縮化記録装置識別子2f及び短縮化記録装置内相対位置2gを生成する。他の態様としては、インデックス管理部104は、図3の1行目の「タグA」の記録装置識別子2b及び記録装置内相対位置2cそれぞれの後方の情報のみを切り出して短縮化する。これにより、インデックス管理部104は、図3の7行目の「タグAのインデックス」の短縮化記録装置識別子2f及び短縮化記録装置内相対位置2gを生成する。
 インデックス管理部104は、生成した短縮化記録装置識別子2f及び短縮化記録装置内相対位置2gを含むインデックス情報2eがメモリ52上にあり、さらにその有効フラグ2dが「1」であれば、次の処理を実行する。つまり、インデックス管理部104は、読込要求に対応するインデックス情報2eがメモリ52に存在する旨の判定結果をデータ読込部102へ出力する。
 一方、インデックス管理部104は、生成した短縮化記録装置識別子2f及び短縮化記録装置内相対位置2gを含むインデックス情報2eがメモリ52上にあり、その有効フラグ2dが「0」であれば、次の処理を実行する。つまり、インデックス管理部104は、読込要求に対応するインデックス情報2eがメモリ52に存在しない旨の判定結果をデータ読込部102へ出力する。
 また、インデックス管理部104は、生成した短縮化記録装置識別子2f及び短縮化記録装置内相対位置2gを含むインデックス情報2eがメモリ52上になければ、次の処理を実行する。つまり、インデックス管理部104は、読込要求に対応するインデックス情報2eがメモリ52に存在しない旨の判定結果をデータ読込部102へ出力する。
 このように、インデックス管理部104は、データ読込部102から読込要求を受け付けると、読込要求に対応するインデックス情報2eがメモリ52に存在するか否かを判定し、判定結果をデータ読込部102へ出力する。また、同様に、インデックス管理部104は、データ書込部103から書込要求を受け付けると、書込要求に対応するインデックス情報2eがメモリ52に存在するか否かを判定し、判定結果をデータ書込部103へ出力する。
 また、インデックス管理部104は、キャッシュされたデータのタグ情報2aに対応するインデックス情報2eをメモリ52に格納する。例えば、インデックス管理部104は、キャッシュされたデータのタグ情報2aをデータ読込部102から受け付ける。インデックス管理部104は、受け付けたタグ情報2aから記録装置識別子2b及び記録装置内相対位置2cを抽出する。インデックス管理部104は、記録装置識別子2b及び記録装置内相対位置2cをそれぞれ短縮化し、短縮化記録装置識別子2f及び短縮化記録装置内相対位置2gを生成する。インデックス管理部104は、生成した短縮化記録装置識別子2f及び短縮化記録装置内相対位置2gと、有効フラグ2d「1」とを対応付けて、インデックス情報2eとしてメモリ52に格納する。
 また、インデックス管理部104は、記録装置30にデータが書き込まれる場合に、メモリ52上のインデックス情報2eの有効フラグ2dを有効から無効に変更する。例えば、インデックス管理部104は、インデックス情報2eの有効フラグ2dを有効から無効に変更する旨の情報をデータ書込部103から受け付ける。インデックス管理部104は、メモリ52上のインデックス情報2eの有効フラグ2dを有効から無効に変更する。
 また、インデックス管理部104は、VM54が再起動された場合に、SSD51上の全エントリのタグ情報2aからメモリ52上のインデックス情報2eを再構築する。例えば、インデックス管理部104は、VM54aが再起動された旨を示す情報を要求抽出部101から受け付けると、SSD51aに記憶された全エントリのタグ情報2aを、メモリアクセス部105を介して取得する。インデックス管理部104は、取得したタグ情報2aに含まれる記録装置識別子2b及び記録装置内相対位置2cをそれぞれ短縮化し、短縮化記録装置識別子2f及び短縮化記録装置内相対位置2gを生成する。インデックス管理部104は、生成した短縮化記録装置識別子2f及び短縮化記録装置内相対位置2gと、有効フラグ2d「1」とを対応付けて、インデックス情報2eとしてメモリ52に格納する。
 メモリアクセス部105は、インデックス管理部104の処理に応じてメモリ52にアクセスする。例えば、メモリアクセス部105は、インデックス管理部104によってアクセス要求に対応するインデックス情報2eがメモリ52に存在するか否か判定される場合に、メモリ52上のインデックス情報2eを取得し、インデックス管理部104へ送る。また、メモリアクセス部105は、インデックス管理部104によってインデックス情報2eが生成された場合に、生成されたインデックス情報2eをメモリ52に格納する。
 タグ情報管理部106は、後述のSSDアクセス部107を介してSSD51上のタグ情報2aにアクセスし、タグ情報2aを管理する。例えば、タグ情報管理部106は、アクセス要求を受け付けて、アクセス要求に対応するタグ情報2aがSSD51上に存在するか否かを判定する。
 例えば、タグ情報管理部106は、データ読込部102から読込要求を受け付ける。タグ情報管理部106は、受け付けた読込要求から、読込要求にかかるデータの記録装置識別子2b及び記録装置内相対位置2cを抽出する。タグ情報管理部106は、抽出した記録装置識別子2b及び記録装置内相対位置2cを含むタグ情報2aがSSD51上にあれば、読込要求にかかるデータをSSD51から取得する。そして、タグ情報管理部106は、取得したデータをデータ読込部102へ出力する。
 一方、タグ情報管理部106は、抽出した記録装置識別子2b及び記録装置内相対位置2cを含むタグ情報2aがSSD51上になければ、読込要求に対応するタグ情報2aがSSD51に存在しない旨の判定結果をデータ読込部102へ出力する。
 また、例えば、タグ情報管理部106は、データ書込部103から書込要求を受け付ける。タグ情報管理部106は、受け付けた書込要求から、書込要求にかかるデータの記録装置識別子2b及び記録装置内相対位置2cを抽出する。タグ情報管理部106は、抽出した記録装置識別子2b及び記録装置内相対位置2cを含むタグ情報2aがSSD51上にあれば、次の処理を実行する。つまり、タグ情報管理部106は、SSD51上のタグ情報2aの有効フラグ2dを有効から無効に変更するとともに、アクセス要求に対応するタグ情報2aがSSD51に存在する旨の判定結果をデータ書込部103へ出力する。
 一方、タグ情報管理部106は、抽出した記録装置識別子2b及び記録装置内相対位置2cを含むタグ情報2aがSSD51上になければ、書込要求に対応するタグ情報2aがSSD51に存在しない旨の判定結果をデータ書込部103へ出力する。
 このように、タグ情報管理部106は、アクセス要求に対応するタグ情報2aがSSD51上に存在するか否かを判定し、判定結果をデータ読込部102又はデータ書込部103へ出力する。
 また、タグ情報管理部106は、SSD51にデータをキャッシュする。例えば、タグ情報管理部106は、読込要求にかかるデータ、そのデータの記録装置識別子2b及び記録装置内相対位置2cをデータ読込部102から受け付ける。タグ情報管理部106は、受け付けたデータをSSD51にキャッシュして、キャッシュしたデータのタグ情報2aを更新する。
 SSDアクセス部107は、タグ情報管理部106の処理に応じてSSD51にアクセスする。例えば、SSDアクセス部107は、タグ情報管理部106によってアクセス要求に対応するタグ情報2aがSSD51に存在するか否か判定される場合に、SSD51上のタグ情報2aを取得し、タグ情報管理部106へ送る。また、SSDアクセス部107は、タグ情報管理部106によってデータがキャッシュされる場合に、キャッシュされるデータ及びそのタグ情報2aをSSD51に格納する。
 記録装置管理部108は、後述の記録装置アクセス部109を介して記録装置30のデータを管理する。
 例えば、記録装置管理部108は、データ読込部102から読込要求を受け付ける。記録装置管理部108は、受け付けた読込要求から、読込要求にかかるデータの記録装置識別子2b及び記録装置内相対位置2cを抽出する。記録装置管理部108は、記録装置識別子2bで識別される記録装置30にアクセスする。記録装置管理部108は、記録装置30内の記録装置内相対位置2cで識別される格納場所にあるデータを取得する。そして、記録装置管理部108は、取得したデータをデータ読込部102へ出力する。
 また、記録装置管理部108は、データ書込部103から書込要求を受け付ける。記録装置管理部108は、受け付けた書込要求から、書込要求にかかるデータの記録装置識別子2b及び記録装置内相対位置2cを抽出する。記録装置管理部108は、記録装置識別子2bで識別される記録装置30にアクセスする。記録装置管理部108は、記録装置30内の記録装置内相対位置2cで識別される格納場所にデータを書き込む。
 記録装置アクセス部109は、記録装置管理部108の処理に応じて記録装置30にアクセスする。例えば、記録装置アクセス部109は、記録装置管理部108によって記憶部30からデータが読み込まれる場合に、読込要求にかかるデータを記録装置30から取得し、取得したデータを記録装置管理部108へ送る。また、記録装置アクセス部109は、記録装置管理部108によって記憶部30にデータが書き込まれる場合に、書込要求にかかるデータを記録装置管理部108から受け付け、受け付けたデータを記録装置30に書き込む。
 次に、図5を用いて、実施例1に係るデータ読込処理の処理手順について説明する。図5は、実施例1に係るデータ読込処理の処理手順を示すフローチャートである。図5に示す処理は、例えば、要求抽出部が、VM54上で動作するアプリケーションからの読込要求を受け付けたことを契機として実行される。
 I/O処理部100は、VM54上で動作するアプリケーションからの読込要求を受け付ける(ステップS101)。I/O処理部100は、メモリ52のインデックス情報にアクセスする(ステップS102)。
 I/O処理部100は、読込要求にかかるデータがSSD51にキャッシュされている可能性があるか否かを判定する(ステップS103)。例えば、I/O処理部100は、受け付けた読込要求に対応するインデックス情報2eがメモリ52に存在するか否かを判定する。
 読込要求にかかるデータがSSD51にキャッシュされている可能性がない場合には(ステップS103否定)、I/O処理部100は、記録装置30のデータにアクセスする(ステップS104)。例えば、I/O処理部100は、読込要求にかかるデータを記録装置30から取得し、VM54上のアプリケーションへ出力する。
 I/O処理部100は、記録装置30から取得したデータをSSD51にキャッシュして、タグ情報2aを更新する(ステップS105)。I/O処理部100は、メモリ52上のインデックス情報2eを更新し(ステップS106)、処理を終了する。
 一方、読込要求にかかるデータがSSD51にキャッシュされている可能性がある場合には(ステップS103肯定)、I/O処理部100は、SSD51上のタグ情報2aにアクセスする(ステップS107)。
 I/O処理部100は、SSD51上にキャッシュしたデータが存在するか否かを判定する(ステップS108)。SSD51上にキャッシュしたデータが存在する場合には(ステップS108肯定)、I/O処理部100は、読込要求にかかるデータをSSD51から取得し(ステップS109)、処理を終了する。例えば、I/O処理部100は、読込要求にかかるデータをSSD51から取得し、VM54上で動作するアプリケーションへ出力する。
 一方、SSD51上にキャッシュしたデータが存在しない場合には(ステップS108否定)、I/O処理部100は、ステップS104の処理へ移行する。
 次に、図6を用いて、実施例1に係るデータ書込処理の処理手順について説明する。図6は、実施例1に係るデータ書込処理の処理手順を示すフローチャートである。図6に示す処理は、例えば、要求抽出部が、VM54上で動作するアプリケーションから記録装置30のデータに対する書込要求を受け付けたことを契機として実行される。
 I/O処理部100は、VM54上で動作するアプリケーションからの書込要求を受け付ける(ステップS201)。I/O処理部100は、メモリ52のインデックス情報にアクセスする(ステップS202)。
 I/O処理部100は、書込要求にかかるデータがSSD51にキャッシュされている可能性があるか否かを判定する(ステップS203)。例えば、I/O処理部100は、受け付けた読込要求に対応するインデックス情報2eがメモリ52に存在するか否かを判定する。
 書込要求にかかるデータがSSD51にキャッシュされている可能性がない場合には(ステップS203否定)、I/O処理部100は、記録装置30にデータを書き込み(ステップS204)、処理を終了する。
 一方、書込要求にかかるデータがSSD51にキャッシュされている可能性がある場合には(ステップS203肯定)、I/O処理部100は、SSD51上のタグ情報にアクセスする(ステップS205)。
 I/O処理部100は、SSD51上にキャッシュしたデータが存在するか否かを判定する(ステップS206)。SSD51上にキャッシュしたデータが存在する場合には(ステップS206肯定)、I/O処理部100は、書込要求にかかるデータのタグ情報の有効フラグを無効に変更する(ステップS207)。そして、I/O処理部100は、書込要求にかかるデータのインデックス情報の有効フラグを無効に変更し(ステップS208)、ステップS204の処理へ移行する。
 一方、SSD51上にキャッシュしたデータが存在しない場合には(ステップS206否定)、I/O処理部100は、ステップS204の処理へ移行する。
 次に、図7を用いて、実施例1に係る再構築処理の処理手順について説明する。図7は、実施例1に係る再構築処理の処理手順を示すフローチャートである。図7に示す処理は、例えば、要求抽出部が、VM54の再起動を受け付けたことを契機として実行される。
 I/O処理部100は、VM54の再起動を受け付ける(ステップS301)。I/O処理部100は、SSD51上の全エントリのタグ情報2aからメモリ52上のインデックス情報を再構築し(ステップS302)、処理を終了する。例えば、I/O処理部100aは、VM54aが再起動された旨を示す情報を要求抽出部101から受け付けると、SSD51aに記憶された全エントリのタグ情報2aを取得する。I/O処理部100aは、取得したタグ情報2aに含まれる記録装置識別子2b及び記録装置内相対位置2cをそれぞれ短縮化し、短縮化記録装置識別子2f及び短縮化記録装置内相対位置2gを生成する。そして、I/O処理部100aは、生成した短縮化記録装置識別子2f及び短縮化記録装置内相対位置2gと、有効フラグ2dとを対応付けて、インデックス情報2eとしてメモリ52に格納する。
 次に、実施例1に係るI/O処理部100の効果について説明する。I/O処理部100は、データに対するアクセス要求を受け付ける。I/O処理部100は、受け付けたアクセス要求に対応するインデックス情報がメモリに存在するか否かを判定する。I/O処理部100は、インデックス情報が存在すると判定した場合に、不揮発性メモリにアクセスし、存在しないと判定した場合に、記録装置30にアクセスするアクセス制御を行う。このため、I/O処理部100は、メモリ使用量を抑えつつアクセス性能を高めることができる。
 例えば、I/O処理部100は、記録装置30からSSD51にキャッシュしたデータを識別するタグ情報2aを短縮したインデックス情報2eをメモリ52上に記憶する。このため、I/O処理部100は、メモリ使用量を抑えることができる。
 また、例えば、I/O処理部100は、アクセス要求にかかるデータがSSD51上に存在しない場合に、SSD51へのアクセス回数を減らすことで、アクセス性能を高めることができる。例えば、従来技術では、アクセス要求にかかるデータがSSD51上に存在しない場合にも、アクセス要求を受け付ける度にSSD51へアクセスしていた。これに対して、I/O処理部100は、アクセス要求に対応するインデックス情報2eがメモリ52に存在するか否かを判定する。そして、I/O処理部100は、インデックス情報2eがメモリ52に存在しない場合には、アクセス要求にかかるデータがSSD51上に存在しないと判定し、SSD51へアクセスすることなく記録装置30へアクセスする。このため、I/O処理部100は、SSD51へのアクセス回数を減らすことができるので、アクセス性能を高めることができる。
 また、例えば、I/O処理部100は、記録装置30からSSD51にキャッシュされたデータのタグ情報2aに基づいて、インデックス情報2eを生成する。このため、I/O処理部100は、メモリ52がリセットされた場合に、容易にインデックス情報2eを生成することができる。
 上記の実施例1では、例えば、異なる2つのタグ情報2aが短縮化された場合に、例えばハッシュ値の衝突によってインデックス情報2eが同一の情報になってしまうことがある。図3に示す例では、「タグA」の後方の情報のみを切り出すことによって短縮化した「タグAのインデックス」と、「タグC」の後方の情報のみを切り出すことによって短縮化した「タグCのインデックス」とは、インデックス情報2eが同一の情報である。この場合、メモリ52上のインデックス情報2eが一致すると判定されたにもかかわらず、SSD51上にはキャッシュしたデータが存在しないHitミスが発生する恐れがある。(ステップS108否定)また、これら異なる2つのタグ情報2aにかかるアクセス要求が交互に発生する場合には、SSD51上のキャッシュが交互に書き換えられてしまう上に、Hitミスも増加してしまう。
 そこで、実施例2では、上記の理由によるHitミスを抑止するために、Hitミスの多いタグ情報2aにかかるデータをメモリ52上のオーバーフロー領域に記憶する場合を説明する。なお、実施例2では、実施例1と相違する点について説明し、実施例1と同様の点については同一の符号を付して説明を省略する。
 図8を用いて、実施例2に係るタグ情報及びインデックス情報の一例について説明する。図8は、実施例2に係るタグ情報及びインデックス情報の一例について説明するための図である。
 図8に示すように、メモリ52上に記憶されるインデックス情報8aは、短縮化記録装置識別子2f、短縮化記録装置内相対位置2g、有効フラグ2d及びオーバーフロー情報8bを含む。このうち、オーバーフロー情報8bは、タグ情報2aによって識別されるデータがメモリ52のオーバーフロー領域に有るか否かを表す情報である。例えば、オーバーフロー情報8bには、オーバーフロー領域に有る場合には「1」が格納され、無い場合には「0」が格納される。
 また、図8に示すように、メモリ52のオーバーフロー領域には、タグ情報2a及びキャッシュデータ8cが対応付けられた情報が格納される。キャッシュデータ8cは、オーバーフロー領域にキャッシュされたデータを表す。なお、タグ情報2aは、上記の実施例と同様であるので説明を省略する。
 実施例2に係る情報処理システムの機能構成の一例について説明する。実施例2に係る情報処理システムは、図1に示した情報処理システムと同様の機能構成を有する。
 メモリ52は、さらに、ヒストリ情報をさらに記憶する。このヒストリ情報は、Hitミスを記録するための情報である。例えば、ヒストリ情報は、読込要求に対応するタグ情報2aがSSD51に存在しない旨の判定結果がタグ情報管理部106によって出力された場合に、インデックス管理部104によって更新される。また、ヒストリ情報は、インデックス管理部104によって参照される。
 図9及び図10を用いて、実施例2に係るヒストリ情報の一例について説明する。図9及び図10は、実施例2に係るヒストリ情報の一例について説明するための図である。図9及び図10に示すヒストリ情報は、メモリ52に記憶される。
 図9の1行目に示すように、ヒストリ情報は、全長及び最後のポインターを含む。このうち、全長は、ヒストリ情報の全長を表す情報である。また、最後のポインターは、前回ヒストリ情報に情報が登録された際のポインターの位置を表す情報である。また、図9の2行目以降に示すように、ヒストリ情報は、時刻、記録装置識別子及び記録装置内相対位置が対応付けられた情報を含む。このうち、時刻は、該当のエントリが登録された時刻を表す情報である。
 図10には、ヒストリ情報として記憶される情報を例示する。図10の1行目に示すように、ヒストリ情報は、全長「2048」及び最後のポインター「1024」を含む。また、図10の2行目に示すように、ヒストリ情報は、時刻「2012030108510318」、記録装置識別子「abE0a1-5dPX-ITpk-4AmA-azC2-4zzC-0m0cLX」及び記録装置内相対位置「1357246864」を含む。この記録装置識別子「abE0a1-5dPX-ITpk-4AmA-azC2-4zzC-0m0cLX」及び記録装置内相対位置「1357246864」は、図3のタグ情報2a「タグA」に対応する。つまり、図10の2行目は、時刻「2012030108510318」に、SSD51上にタグAにかかるデータが存在しないと判定されたこと、すなわちタグAのHitミスがあったことを示す。また、図10の2行目以降には、時系列順に、Hitミスがあったタグ情報2aを記憶する。なお、ヒストリ情報の全てのエントリに情報が格納された場合には、ヒストリ情報は、最も古いエントリから順に更新される。
 次に、図11を用いて、実施例2に係るI/O処理部100の機能構成の一例を説明する。図11は、実施例2に係るI/O処理部100の機能構成の一例を示すブロック図である。図11に示すように、実施例2に係るI/O処理部100は、さらに、ヒストリ情報管理部110及びオーバーフロー管理部111を有する。
 データ読込部102は、さらに、アクセス要求に対応するデータがメモリ52に存在する否かを判定する。例えば、データ読込部102は、要求抽出部101から読込要求を受け付けると、インデックス管理部104にメモリ52のインデックス情報2eにアクセスさせる。データ読込部102は、インデックス管理部104に読込要求を出力し、読込要求にかかるデータがオーバーフロー領域に存在するか否かを判定させる。データ読込部102は、読込要求にかかるデータがオーバーフロー領域に存在すると判定された場合に、後述のオーバーフロー管理部111を介してオーバーフロー領域のキャッシュデータにアクセスさせる。データ読込部102は、読込要求にかかるデータをオーバーフロー領域からオーバーフロー管理部111を介して取得する。データ読込部102は、取得したデータを、VM54上で動作するアプリケーションへ出力する。
 一方、データ読込部102は、読込要求にかかるデータがオーバーフロー領域に存在すると判定された場合に、該当するSSDエントリが有効か否かをインデックス管理部104に判定させる。データ読込部102は、読込要求に対応するデータがメモリ52に存在すると判定された場合に、SSD51にアクセスし、存在しないと判定された場合に、記録装置30にアクセスするアクセス制御を行う。
 記録装置30にアクセスすると、データ読込部102は、記録装置30から読込要求にかかるデータを記録装置管理部108を介して取得する。データ読込部102は、取得したデータを、読込要求を出力したVM54上のアプリケーションへ出力する。データ読込部102は、取得したデータ、そのデータの記録装置識別子2b及び記録装置内相対位置2cをタグ情報管理部106に出力する。データ読込部102は、タグ情報管理部106に、取得したデータをSSD51にキャッシュさせ、キャッシュしたデータのタグ情報2aを格納させる。データ読込部102は、キャッシュしたデータのタグ情報2aをインデックス管理部104に出力する。データ読込部102は、インデックス管理部104に、キャッシュしたデータのタグ情報2aに対応するインデックス情報2eをメモリ52に格納させる。
 SSD51にアクセスすると、データ読込部102は、タグ情報管理部106に読込要求を出力し、SSD51上にキャッシュしたデータが存在するか否かをタグ情報管理部106に判定させる。SSD51上にキャッシュしたデータが存在する場合には、タグ情報管理部106にSSD51から読込要求にかかるデータを取得させる。データ読込部102は、取得されたデータを、読込要求を出力したVM54上のアプリケーションへ出力する。
 一方、データ読込部102は、SSD51上にキャッシュしたデータが存在しない場合には、ヒストリ情報をヒストリ情報管理部110に更新させる。データ読込部102は、SSD51上にキャッシュしたデータが存在しないと判定された時刻及びタグ情報2aをヒストリ情報管理部110へ出力する。データ読込部102は、ヒストリ情報管理部110に、SSD51上にキャッシュしたデータが存在しないと判定された時刻及びタグ情報2aをメモリ52のヒストリ情報に格納させる。
 データ読込部102は、ヒストリ情報管理部110に、ヒストリ情報に同様のHitミスが所定頻度以上あるか否かを判定させる。データ読込部102は、ヒストリ情報管理部110によって同様のHitミスが所定頻度未満であると判定された場合には、記録装置30にアクセスするアクセス制御を行う。
 一方、データ読込部102は、ヒストリ情報管理部110によって同様のHitミスが所定頻度以上であると判定された場合には、オーバーフロー管理部111に、記録装置30のデータをオーバーフロー領域にキャッシュさせる。例えば、データ読込部102は、読込要求にかかるデータを記録装置30から記録装置管理部108に取得させる。データ読込部102は、取得させたデータをタグ情報2aとともにメモリ52上のオーバーフロー領域にキャッシュさせる。
 このように、データ読込部102は、インデックス管理部104、タグ情報管理部106、記録装置管理部108、ヒストリ情報管理部110及びオーバーフロー管理部111をそれぞれ制御する。これにより、データ読込部102は、読込要求にかかるデータを、読込要求を出力したVM54上のアプリケーションへ出力する。
 インデックス管理部104は、さらに、読込要求をデータ読込部102から受け付けると、読込要求にかかるデータがオーバーフロー領域に存在するか否かを判定する。例えば、インデックス管理部104は、読込要求に対応するインデックス情報2eがメモリ52に存在し、かつ、該当のインデックス情報2eのオーバーフロー情報8bが「1」である場合に、データがオーバーフロー領域に存在すると判定する。また、インデックス管理部104は、読込要求に対応するインデックス情報2eがメモリ52に存在しない、又は、該当のインデックス情報2eのオーバーフロー情報8bが「0」である場合に、データがオーバーフロー領域に存在しないと判定する。そして、インデックス管理部104は、判定結果をデータ読込部102へ出力する。
 また、インデックス管理部104は、該当するSSDエントリが有効か否かを判定する。例えば、インデックス管理部104は、読込要求にかかるインデックス情報2eの有効フラグ2dが「1」である場合に、SSDエントリが有効であると判定し、有効フラグ2dが「0」である場合に、SSDエントリが無効であると判定する。
 ヒストリ情報管理部110は、メモリアクセス部105を介してメモリ52上のヒストリ情報にアクセスし、ヒストリ情報を管理する。
 ヒストリ情報管理部110は、読込要求にかかるデータがSSD51に存在しないとインデックス管理部104によって判定された場合に、その読込要求にかかるタグ情報2aの履歴をメモリ52に記録する。例えば、ヒストリ情報管理部110は、SSD51上にキャッシュしたデータが存在しないと判定された時刻及びタグ情報2aをインデックス管理部104から受け付ける。ヒストリ情報管理部110は、SSD51上にキャッシュしたデータが存在しないと判定された時刻及びタグ情報2aを対応付けて、メモリ52のヒストリ情報に格納する。
 また、ヒストリ情報管理部110は、ヒストリ情報に同様のHitミスが所定頻度以上あるか否かを判定する。例えば、ヒストリ情報管理部110は、ヒストリ情報を参照し、所定時間内に、同一のタグ情報2aのエントリが所定数以上存在する場合に、Hitミスが所定頻度以上と判定し、所定数未満である場合に、Hitミスが所定頻度未満と判定する。そして、ヒストリ情報管理部110は、判定結果をデータ読込部102へ出力する。
 図10に示した例では、ヒストリ情報は、時刻「2012030108511205」に、タグCのHitミスがあったことを示す。また、ヒストリ情報は、時刻「2012030108512836」にも、タグCのHitミスがあったことを示す。さらに、ヒストリ情報は、時刻「2012030108514001」にも、タグCのHitミスがあったことを示す。この場合、時刻「2012030108511205」から「2012030108514001」の間に、同一のエントリが3つ存在するので、ヒストリ情報管理部110は、Hitミスが所定頻度以上あると判定する。なお、上記の所定時間及び所定数は一例であり、情報処理システムを管理する管理者によって任意に設定されて良い。
 オーバーフロー管理部111は、メモリアクセス部105を介してメモリ52上のオーバーフロー領域にアクセスし、オーバーフロー領域に記憶される情報を管理する。
 オーバーフロー管理部111は、ヒストリ情報管理部110によってヒストリ情報に記憶されたタグ情報2aの頻度が所定頻度以上である場合に、そのタグ情報2aに対応するデータをメモリ52に格納する。例えば、オーバーフロー管理部111は、読込要求にかかるデータをデータ書込部103から受け付ける。オーバーフロー管理部111は、受け付けたデータをタグ情報2aとともにメモリ52上のオーバーフロー領域にキャッシュする。
 また、例えば、オーバーフロー管理部111は、データがオーバーフロー領域に存在する場合には、オーバーフロー領域のキャッシュデータにアクセスする。例えば、オーバーフロー管理部111は、読込要求にかかるデータがオーバーフロー領域に存在すると判定された場合に、その読込要求をデータ読込部102から受け付ける。オーバーフロー管理部111は、受け付けた読込要求にかかるデータをオーバーフロー領域から取得し、取得したデータをデータ読込部102へ出力する。
 次に、図12を用いて、実施例2に係るデータ読込処理の処理手順について説明する。図12は、実施例2に係るデータ読込処理の処理手順を示すフローチャートである。図12に示す処理は、例えば、要求抽出部が、VM54上で動作するアプリケーションからの読込要求を受け付けたことを契機として実行される。
 I/O処理部100は、VM54上で動作するアプリケーションからの読込要求を受け付ける(ステップS401)。I/O処理部100は、メモリ52のインデックス情報にアクセスする(ステップS402)。
 I/O処理部100は、読込要求にかかるデータがオーバーフロー領域に存在するか否かを判定する(ステップS403)。例えば、I/O処理部100は、受け付けた読込要求に対応するインデックス情報2eがメモリ52に存在し、かつ、該当のインデックス情報2eのオーバーフロー情報8bが「1」である場合に、データがオーバーフロー領域に存在すると判定する。また、I/O処理部100は、受け付けた読込要求に対応するインデックス情報8aがメモリ52に存在しない、又は、該当のインデックス情報8aのオーバーフロー情報8bが「0」である場合に、データがオーバーフロー領域に存在しないと判定する。
 データがオーバーフロー領域に存在する場合には(ステップS403肯定)、I/O処理部100は、オーバーフロー領域のキャッシュデータにアクセスし(ステップS404)、処理を終了する。例えば、I/O処理部100は、読込要求にかかるデータをオーバーフロー領域から取得し、VM54上で動作するアプリケーションへ出力する。
 一方、データがオーバーフロー領域に存在しない場合には(ステップS403否定)、I/O処理部100は、該当するSSDエントリが有効か否かを判定する(ステップS405)。例えば、I/O処理部100は、該当の有効フラグ2dが「1」である場合に、SSDエントリが有効であると判定し、該当の有効フラグ2dが「0」である場合に、SSDエントリが無効であると判定する。
 SSDエントリが無効である場合には(ステップS405否定)、I/O処理部100は、記録装置30からデータを取得する(ステップS406)。例えば、I/O処理部100は、読込要求にかかるデータを記録装置30から取得し、VM54上のアプリケーションへ出力する。
 I/O処理部100は、記録装置から取得したデータをSSD51にキャッシュして、タグ情報2aを格納する(ステップS407)。I/O処理部100は、メモリ52上にインデックス情報8aを格納し(ステップS408)、処理を終了する。
 一方、SSDエントリが有効である場合には(ステップS405肯定)、I/O処理部100は、SSD51上のタグ情報2aにアクセスする(ステップS409)。
 I/O処理部100は、SSD51上にキャッシュしたデータが存在するか否かを判定する(ステップS410)。SSD51上にキャッシュしたデータが存在する場合には(ステップS410肯定)、I/O処理部100は、読込要求にかかるデータをSSD51から取得し(ステップS411)、処理を終了する。例えば、I/O処理部100は、読込要求にかかるデータをSSD51から取得し、VM54上で動作するアプリケーションへ出力する。
 一方、SSD51上にキャッシュしたデータが存在しない場合には(ステップS410否定)、I/O処理部100は、ヒストリ情報を更新する(ステップS412)。例えば、I/O処理部100は、SSD51上にキャッシュしたデータが存在しないと判定した時刻及びタグ情報2aを対応付けて、ヒストリ情報に格納する。
 I/O処理部100は、ヒストリ情報に同様のHitミスが所定頻度以上か否かを判定する(ステップS413)。例えば、I/O処理部100は、ヒストリ情報を参照し、所定時間内に、格納したタグ情報2aと同一のタグ情報2aのエントリが所定数以上存在する場合に、Hitミスが所定頻度以上と判定し、所定数未満である場合に、Hitミスが所定頻度未満と判定する。
 Hitミスが所定頻度以上である場合には(ステップS413肯定)、I/O処理部100は、記録装置30のデータをオーバーフロー領域にキャッシュし(ステップS414)、ステップS408の処理へ移行する。例えば、I/O処理部100は、読込要求にかかるデータを記録装置30から取得し、取得したデータをタグ情報2aとともにメモリ52上のオーバーフロー領域にキャッシュする。
 一方、Hitミスが所定頻度未満である場合には(ステップS413否定)、I/O処理部100は、ステップS406の処理へ移行する。
 次に、実施例2に係るI/O処理部100の効果について説明する。I/O処理部100は、SSD51にタグ情報2aが存在しないと判定された場合に、タグ情報2aの履歴をメモリ52上のヒストリ情報に記録する。I/O処理部100は、ヒストリ情報に記録されたタグ情報2aの頻度が所定頻度以上である場合に、そのタグ情報2aにかかるデータをメモリ52上のオーバーフロー領域に格納する。I/O処理部100は、受け付けたアクセス要求に対応するデータがメモリ52上のオーバーフロー領域に存在する否かを判定する。I/O処理部100は、読込要求にかかるデータがオーバーフロー領域に存在すると判定された場合に、メモリ52にアクセスするアクセス制御を行う。そして、I/O処理部100は、インデックス情報8aがメモリ52に存在すると判定された場合に、SSD51にアクセスするアクセス制御を行う。これにより、I/O処理部100は、これら異なる2つのタグ情報2aにかかるアクセス要求が交互に発生する場合であっても、SSD51上のキャッシュが頻繁に書き換えられることによる、SSDへの頻繁なアクセスやHitミスを抑止することができる。
 例えば、I/O処理部100は、異なる2つのタグ情報2aが短縮化によって同一のインデックス情報8aになってしまう場合に、一方のタグ情報2aにかかるデータをオーバーフロー領域に格納する。このため、I/O処理部100は、異なる2つのタグ情報2aにかかるデータをそれぞれ別途キャッシュすることができる。このため、I/O処理部100は、異なるタグ情報2aが短縮化によって同一のインデックス情報8aになってしまう場合にも、対応することができる。
 上記の実施例は、古いバージョンのデータが記録装置30に更新されてしまうことを防ぐために、バージョン情報を管理する場合にも適用することができる。そこで、実施例3では、I/O処理部100がバージョン情報を管理する場合を説明する。なお、実施例3では、実施例1と相違する点について説明し、実施例1と同様の点については同一の符号を付して説明を省略する。
 実施例3に係る情報処理システムの機能構成の一例について説明する。実施例3に係る情報処理システムは、図1に示した情報処理システムと同様の機能構成を有する。
 図13を用いて、実施例3に係るタグ情報及びインデックス情報の一例について説明する。図13は、実施例3に係るタグ情報及びインデックス情報の一例について説明するための図である。
 図13に示すように、SSD51上に記憶されるタグ情報13aは、記録装置識別子2b、記録装置内相対位置2c、バージョン情報13b及び有効フラグ2dを含む。このうち、バージョン情報13bは、記録装置に記憶されるデータのバージョンを示す情報である。例えば、バージョン情報13bは、記録装置30上のデータが更新された更新回数で表される。なお、このバージョン情報13bは、記録装置30内にも記憶される。
 また、メモリ52上に記憶されるインデックス情報13cは、短縮化記録装置識別子2f、短縮化記録装置内相対位置2g、短縮化バージョン情報13d及び有効フラグ2dを含む。このうち、短縮化バージョン情報13dは、バージョン情報13bがハッシュ関数によって短縮化された情報である。なお、バージョン情報13bは、インデックス管理部104によって短縮化される。また、バージョン情報13bは、バージョン情報13bの後方の情報のみを切り出すことで、短縮化されても良い。
 一例として、バージョン情報13b「1023」は、ハッシュ関数によって短縮化されると短縮化バージョン情報13d「ce5140df15d046a66883807d18d0264b」となる。また、バージョン情報13b「1023」は、後方切り出しによって短縮化されると短縮化バージョン情報13d「23」となる。なお、短縮化バージョン情報13dは、インデックス管理部104によって短縮化される。
 次に、実施例3に係るI/O処理部100の機能構成の一例について説明する。実施例3に係るI/O処理部100は、図4に示したI/O処理部100と同様の機能構成を有する。
 要求抽出部101は、さらに、VM54に記録装置30がマウントされたことを受け付ける。例えば、要求抽出部101は、VM54が起動した場合に、VM54で処理されるデータが格納されるVDISK32がマウントされたことを受け付ける。要求抽出部101は、VDISK32がマウントされると、VM54に記録装置30がマウントされた旨の情報を記録装置管理部108に出力する。
 データ読込部102は、記録装置30にアクセスし、記録装置30から読込要求にかかるデータを記録装置管理部108を介して取得する場合に、さらに、SSD51上のバージョン情報13b及びメモリ52上の短縮化バージョン情報13dを最新化する。例えば、データ読込部102は、記録装置30から取得したデータをSSD51にキャッシュして、タグ情報2aを更新する際に、SSD51上のバージョン情報13bを、記録装置30から取得したバージョン情報13bに更新する。また、例えば、データ読込部102は、メモリ52上のインデックス情報13cを更新する際に、メモリ52上の短縮化バージョン情報13dを、記録装置30から取得したバージョン情報13bを用いて更新する。一例としては、データ読込部102は、記録装置30から取得したバージョン情報13bをインデックス管理部104に短縮化させて短縮化バージョン情報13dを生成する。そして、データ読込部102は、インデックス管理部104に、メモリ52上の短縮化バージョン情報13dを、生成した短縮化バージョン情報13dに更新させる。
 データ読込部102は、SSD51にアクセスし、SSD51上にキャッシュしたデータが存在する場合には、さらに、タグ情報管理部106に読込要求を出力し、SSD51上のバージョン情報13bが最新か否かをタグ情報管理部106に判定させる。SSD51上のバージョン情報13bが最新である場合には、データ読込部102は、タグ情報管理部106にSSD51から読込要求にかかるデータを取得させる。データ読込部102は、取得されたデータを、読込要求を出力したVM54上のアプリケーションへ出力する。なお、SSD51上のバージョン情報13bが最新でない場合には、記録装置管理部108に記録装置30から読込要求にかかるデータを取得させる。
 記録装置管理部108は、さらに、記録装置30に記憶されたバージョン情報を更新する。例えば、記録装置管理部108は、VM54に記録装置30がマウントされた旨の情報を要求抽出部101から受け付ける。記録装置管理部108は、VM54で処理されるデータが格納されるVDISK32内のデータのバージョン情報13bを1インクリメントする。
 次に、図14を用いて、実施例3に係るバージョン情報を更新する処理の処理手順について説明する。図14は、実施例3に係るバージョン情報を更新する処理の処理手順を示すフローチャートである。図14に示す処理は、例えば、要求抽出部が、記録装置30のマウントを受け付けたことを契機として実行される。
 I/O処理部100は、VM54に記録装置30がマウントされた旨を受け付ける(ステップS501)。I/O処理部100は、記録装置30のバージョン情報13bを更新し(ステップS502)、処理を終了する。
 なお、ここでは、I/O処理部100がVM54に記録装置30がマウントされた旨を受け付けたことを契機として、記録装置30に記憶された全てのバージョン情報13bを更新する場合を説明したが、本発明はこれに限定されるものではない。例えば、I/O処理部100は、データを書き込むたびに、該当のデータのバージョン情報を更新しても良い。一例としては、I/O処理部100は、図6のステップS204の処理が行われる際に、書き込まれたデータに該当するデータのバージョン情報13bを1インクリメントしても良い。
 次に、図15を用いて、実施例3に係るデータ読込処理の処理手順について説明する。図15は、実施例3に係るデータ読込処理の処理手順を示すフローチャートである。図15に示す処理は、例えば、要求抽出部が、VM54上で動作するアプリケーションからの読込要求を受け付けたことを契機として実行される。
 I/O処理部100は、VM54上で動作するアプリケーションからの読込要求を受け付ける(ステップS601)。I/O処理部100は、メモリ52のインデックス情報にアクセスする(ステップS602)。
 I/O処理部100は、読込要求にかかるデータがSSD51にキャッシュされている可能性があるか否かを判定する(ステップS603)。例えば、I/O処理部100は、受け付けた読込要求に対応するインデックス情報13cがメモリ52に存在するか否かを判定する。
 読込要求にかかるデータがSSD51にキャッシュされている可能性がない場合には(ステップS603否定)、I/O処理部100は、記録装置30のデータにアクセスする(ステップS604)。例えば、I/O処理部100は、読込要求にかかるデータを記録装置30から取得し、VM54上のアプリケーションへ出力する。
 I/O処理部100は、記録装置30から取得したデータをSSD51にキャッシュして、タグ情報2aを更新する(ステップS605)。このとき、I/O処理部100は、SSD51上のバージョン情報13bを、記録装置30から取得したバージョン情報13bに更新する。
 I/O処理部100は、メモリ52上のインデックス情報2eを更新し(ステップS606)、処理を終了する。このとき、I/O処理部100は、メモリ52上の短縮化バージョン情報13dを、記録装置30から取得したバージョン情報13bを用いて更新する。
 一方、読込要求にかかるデータがSSD51にキャッシュされている可能性がある場合には(ステップS603肯定)、I/O処理部100は、SSD51上のタグ情報にアクセスする(ステップS607)。
 I/O処理部100は、SSD51上にキャッシュしたデータが存在するか否かを判定する(ステップS608)。SSD51上にキャッシュしたデータが存在する場合には(ステップS608肯定)、I/O処理部100は、SSD51上のバージョン情報13bが最新か否かを判定する(ステップS609)。例えば、I/O処理部100は、SSD51上のバージョン情報13bと、読込要求に含まれるバージョン情報13bとが一致するか否かを判定する。
 SSD51上のバージョン情報13bが最新である場合には(ステップS609肯定)、I/O処理部100は、読込要求にかかるデータをSSD51から取得し(ステップS610)、処理を終了する。例えば、I/O処理部100は、読込要求にかかるデータをSSD51から取得し、VM54上で動作するアプリケーションへ出力する。
 一方、SSD51上にキャッシュしたデータが存在しない場合には(ステップS608否定)、I/O処理部100は、ステップS604の処理へ移行する。また、SSD51上のバージョン情報13bが最新でない場合には(ステップS609否定)、I/O処理部100は、ステップS604の処理へ移行する。
 次に、実施例3に係るI/O処理部100の効果について説明する。I/O処理部100は、記録装置30がマウントされた旨の情報を受け付ける。I/O処理部100は、記録装置30がマウントされた旨の情報を受け付けた場合に、その記録装置30に記憶されたバージョン情報を更新する。I/O処理部100は、アクセス要求として、データに対する読込要求を受け付けた場合に、SSD51に記憶された読込要求に対応するバージョン情報と、記録装置30に記憶された読込要求に対応するバージョン情報とが一致するか否かを判定する。I/O処理部100は、バージョン情報が一致すると判定した場合に、SSD51にアクセスし、一致しない場合に、記録装置30にアクセスするアクセス制御を行う。このため、I/O処理部100は、古いバージョンのデータが記録装置30に更新されてしまうことを防ぐことができる。
 さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、その他の実施例にて実施されても良い。そこで、以下では、その他の実施例について説明する。
 上記の各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。例えば、上記の実施例1~3を組み合わせ、I/O処理部100が、オーバーフロー情報8b及び短縮化バージョン情報13dを含むインデックス情報を用いることとしても良い。
 図16を用いて、実施例4に係るタグ情報及びインデックス情報の一例について説明する。図16は、実施例4に係るタグ情報及びインデックス情報の一例について説明するための図である。
 図16に示すように、SSD51上に記憶されるタグ情報16aは、記録装置識別子2b、記録装置内相対位置2c、バージョン情報13b及び有効フラグ2dを含む。また、メモリ52上に記憶されるインデックス情報16bは、短縮化記録装置識別子2f、短縮化記録装置内相対位置2g、短縮化バージョン情報13d、有効フラグ2d及びオーバーフロー情報8bを含む。また、メモリ52のオーバーフロー領域には、タグ情報2a及びキャッシュデータ8cが対応付けられた情報が格納される。
 次に、図17を用いて、実施例4に係るデータ読込処理の処理手順について説明する。図17は、実施例4に係るデータ読込処理の処理手順を示すフローチャートである。図17に示す処理は、例えば、要求抽出部が、VM54上で動作するアプリケーションからの読込要求を受け付けたことを契機として実行される。
 I/O処理部100は、VM54上で動作するアプリケーションからの読込要求を受け付ける(ステップS701)。I/O処理部100は、メモリ52のインデックス情報にアクセスする(ステップS702)。
 I/O処理部100は、読込要求にかかるデータがオーバーフロー領域に存在するか否かを判定する(ステップS703)。データがオーバーフロー領域に存在する場合には(ステップS703肯定)、I/O処理部100は、オーバーフロー領域のキャッシュデータにアクセスし(ステップS704)、処理を終了する。例えば、I/O処理部100は、読込要求にかかるデータをオーバーフロー領域から取得し、VM54上で動作するアプリケーションへ出力する。
 一方、データがオーバーフロー領域に存在しない場合には(ステップS703否定)、I/O処理部100は、該当するSSDエントリが有効か否かを判定する(ステップS705)。例えば、I/O処理部100は、該当の有効フラグ2dが「1」である場合に、SSDエントリが有効であると判定し、該当の有効フラグ2dが「0」である場合に、SSDエントリが無効であると判定する。
 SSDエントリが無効である場合には(ステップS705否定)、I/O処理部100は、記録装置30からデータを取得する(ステップS706)。例えば、I/O処理部100は、読込要求にかかるデータを記録装置30から取得し、VM54上のアプリケーションへ出力する。
 I/O処理部100は、記録装置30から取得したデータをSSD51にキャッシュして、タグ情報2aを格納する(ステップS707)。I/O処理部100は、メモリ52上にインデックス情報2eを格納し(ステップS708)、処理を終了する。
 一方、SSDエントリが有効である場合には(ステップS705肯定)、I/O処理部100は、SSD51上のタグ情報2aにアクセスする(ステップS709)。
 I/O処理部100は、SSD51上にキャッシュしたデータが存在するか否かを判定する(ステップS710)。SSD51上にキャッシュしたデータが存在する場合には(ステップS710肯定)、SSD51上のバージョン情報が最新か否かを判定する(ステップS711)。バージョン情報が最新である場合には(ステップS711肯定)、I/O処理部100は、読込要求にかかるデータをSSD51から取得し(ステップS712)、処理を終了する。なお、バージョン情報が最新でない場合には(ステップS711否定)、I/O処理部100は、ステップS706の処理に移行する。
 一方、SSD51上にキャッシュしたデータが存在しない場合には(ステップS710否定)、I/O処理部100は、ヒストリ情報を更新する(ステップS713)。I/O処理部100は、ヒストリ情報に同様のHitミスが所定頻度以上か否かを判定する(ステップS714)。Hitミスが所定頻度以上である場合には(ステップS714肯定)、I/O処理部100は、記録装置30のデータをオーバーフロー領域にキャッシュし(ステップS715)、ステップS708の処理へ移行する。
 一方、Hitミスが所定頻度未満である場合には(ステップS714否定)、I/O処理部100は、ステップS706の処理へ移行する。
 このように、上記の実施例1~3を組み合わせ、I/O処理部100が、オーバーフロー情報8b及び短縮化バージョン情報13dを含むインデックス情報を用いることもできる。
 また、I/O処理部100は、上記の実施例で適用された情報処理システムとは異なる情報処理システムに適用されても良い。
 図18及び図19を用いて、実施例4に係る情報処理システムの機能構成の一例について説明する。図18及び図19は、実施例4に係る情報処理システムの機能構成を示すブロック図である。
 図18に示す例では、情報処理システムは、記録装置30、サーバ装置60a,60b,60c及びキャッシュ用SSDストレージサーバ70を含む。記録装置30、サーバ装置60a,60b,60c及びキャッシュ用SSDストレージサーバ70は、ネットワーク5を介してそれぞれ接続される。なお、図18の例では、情報処理システムにサーバ装置60a,60b,60cの3つが含まれる場合を示したが、図示の構成に限定されるものではない。すなわち、この情報処理システムには任意数のサーバ装置60が接続されて良い。また、サーバ装置60a,60b,60cの各装置を区別無く総称する場合に、サーバ装置60と記載する。
 キャッシュ用SSDストレージサーバ70は、複数のSSD51を備え、図18の情報処理システムにおいて、記録装置30からサーバ装置60へ送信されたデータをキャッシュするためのサーバ装置である。サーバ装置60は、基本的にはサーバ装置50と同様の構成を有し、SSD51を含まない点が相違する。なお、I/O処理部100は、サーバ装置60のハイパーバイザ53で機能する。
 図19に示す例では、情報処理システムは、記録装置80及びサーバ装置90a,90b,90cを含む。記録装置80及びサーバ装置90a,90b,90cは、ネットワーク5を介してそれぞれ接続される。なお、図19の例では、情報処理システムにサーバ装置90a,90b,90cの3つが含まれる場合を示したが、図示の構成に限定されるものではない。すなわち、この情報処理システムには任意数のサーバ装置90が接続されて良い。また、サーバ装置90a,90b,90cの各装置を区別無く総称する場合に、サーバ装置90と記載する。
 記録装置80は、基本的には記録装置30と同様の構成を有し、さらに、コントローラモジュール81、1つ以上のSSD51及び1つ以上のメモリ52を備える点が相違する。このコントローラモジュール81は、基本的にはコントローラモジュール33と同様の構成を有し、I/O処理部100を備える点が相違する。
 図18及び図19において、I/O処理部100は、例えば、VM54aから送信されたアクセス要求を受け付けると、メモリ52aに記憶されたインデックス情報を参照し、SSD51aにアクセスするか、記録装置30にアクセスするかを判定する。このため、I/O処理部100aは、メモリ52の使用量を抑えつつアクセス性能を高めることができる。
 図20は、制御プログラムを実行するコンピュータの一例を示す図である。図20に示すように、コンピュータ300は、各種演算処理を実行するCPU301と、ユーザからデータの入力を受け付ける入力装置302と、モニタ303とを有する。また、コンピュータ300は、記憶媒体からプログラム等を読み取る媒体読み取り装置304と、他の装置と接続するためのインターフェース装置305と、他の装置と無線により接続するための無線通信装置306とを有する。また、コンピュータ300は、各種情報を一時記憶するRAM(Random Access Memory)307と、ハードディスク装置308とを有する。また、各装置301~308は、バス309に接続される。
 ハードディスク装置308には、図4に示した要求抽出部101、データ読込部102、データ書込部103及びインデックス管理部104の各処理部と同様の機能を有する診療情報入力プログラムが記憶される。また、ハードディスク装置308には、制御プログラムを実現するための各種データが記憶される。
 CPU301は、ハードディスク装置308に記憶された各プログラムを読み出して、RAM307に展開して実行することで、各種の処理を行う。また、これらのプログラムは、コンピュータを図4に示した要求抽出部101、データ読込部102、データ書込部103及びインデックス管理部104として機能させることができる。
 なお、上記の制御プログラムは、必ずしもハードディスク装置308に記憶されている必要はない。例えば、コンピュータが読み取り可能な記録媒体に記憶されたプログラムを、コンピュータ300が読み出して実行するようにしても良い。コンピュータが読み取り可能な記録媒体は、例えば、CD-ROMやDVDディスク、USB(Universal Serial Bus)メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)等に接続された装置にこのプログラムを記憶させておき、コンピュータ300がこれらからプログラムを読み出して実行するようにしても良い。また、各実施例においては、サーバ装置50に、ハイパーバイザ53およびVM54が実現されることとしたが、サーバ装置50が仮想化されない物理計算機の態様であっても構わない。
100   I/O処理部
101   要求抽出部
102   データ読込部
103   データ書込部
104   インデックス管理部
105   メモリアクセス部
106   タグ情報管理部
107   SSDアクセス部
108   記録装置管理部
109   記録装置アクセス部
110   ヒストリ情報管理部
111   オーバーフロー管理部
300   コンピュータ
301   CPU
302   入力装置
303   モニタ
304   媒体読み取り装置
305   インターフェース装置
306   無線通信装置
307   RAM
308   ハードディスク装置
309   バス

Claims (15)

  1.  コンピュータに、
     データを記憶する記録装置に対するアクセス要求を受け付け、
     前記記録装置から不揮発性メモリにキャッシュしたデータを識別する識別情報を短縮したインデックス情報を記憶するメモリに、前記受け付ける処理によって受け付けたアクセス要求に対応するインデックス情報が存在するか否かを判定し、
     前記判定する処理によって前記インデックス情報が存在すると判定された場合に、前記不揮発性メモリにアクセスし、存在しないと判定された場合に、前記記録装置にアクセスする
     各処理を実行させることを特徴とする制御プログラム。
  2.  前記識別情報は、データの記憶された記録装置を識別する情報と、前記記録装置の記録領域におけるデータの記録された位置を特定する情報とを含むことを特徴とする請求項1に記載の制御プログラム。
  3.  前記コンピュータに、
     前記判定する処理によって前記不揮発性メモリに前記識別情報が存在しないと判定された場合に、当該識別情報を履歴として前記メモリに記録し、
     前記記録する処理によって前記履歴として記録された識別情報の頻度が所定頻度以上である場合に、当該識別情報により識別されるデータを前記メモリに格納する各処理をさらに実行させ、
     前記判定する処理は、前記受け付ける処理によって受け付けたアクセス要求に対応するデータが前記メモリに存在する否かを判定し、
     前記アクセス制御を行う処理は、前記判定する処理によって前記データが前記メモリに存在すると判定された場合に、当該メモリにアクセスし、前記インデックス情報が存在すると判定された場合に、前記不揮発性メモリにアクセスし、前記インデックス情報が存在しないと判定された場合に、前記記録装置にアクセスするアクセス制御を行う各処理を実行させることを特徴とする請求項1または2に記載の制御プログラム。
  4.  前記コンピュータに、
     前記記録装置に記憶されるデータのバージョンを示すバージョン情報を更新する処理をさらに実行し、
     前記受け付ける処理は、前記記録装置がマウントされた旨の情報を受け付けし、
     前記更新する処理は、前記受け付ける処理によって前記記録装置がマウントされた旨の情報を受け付けた場合に、前記記録装置に記憶されたバージョン情報を更新し、
     前記判定する処理は、前記アクセス要求として、前記データに対する読込要求を前記受け付ける処理によって受け付けた場合に、前記不揮発性メモリに記憶された当該読込要求に対応するバージョン情報と、前記記録装置に記憶された当該読込要求に対応するバージョン情報とが一致するか否かを判定し、
     前記アクセス制御を行う処理は、前記判定する処理によって前記バージョン情報が一致すると判定された場合に、前記不揮発性メモリにアクセスし、一致しない場合に、前記記録装置にアクセスするアクセス制御を行う各処理を実行させることを特徴とする請求項1~3のいずれか一つに記載の制御プログラム。
  5.  前記コンピュータに、
     前記アクセス要求を出力するアプリケーションが実行される仮想マシンが再起動された場合に、前記記録装置から前記不揮発性メモリにキャッシュされたデータの前記識別情報に基づいて、インデックス情報を生成する処理をさらに実行させることを特徴とする請求項1または2に記載の制御プログラム。
  6.  コンピュータによって実行される制御方法であって、
     前記コンピュータが、
     データを記憶する記録装置に対するアクセス要求を受け付け、
     前記記録装置から不揮発性メモリにキャッシュしたデータを識別する識別情報を短縮したインデックス情報を記憶するメモリに、前記受け付ける処理によって受け付けたアクセス要求に対応するインデックス情報が存在するか否かを判定し、
     前記判定する処理によって前記インデックス情報が存在すると判定された場合に、前記不揮発性メモリにアクセスし、存在しないと判定された場合に、前記記録装置にアクセスするアクセス制御を行う
     各処理を実行することを特徴とする制御方法。
  7.  前記識別情報は、データの記憶された記録装置を識別する情報と、前記記録装置の記録領域におけるデータの記録された位置を特定する情報とを含むことを特徴とする請求項6に記載の制御方法。
  8.  前記コンピュータが、
     前記判定する処理によって前記不揮発性メモリに前記識別情報が存在しないと判定された場合に、当該識別情報を履歴として前記メモリに記録し、
     前記記録する処理によって前記履歴として記録された識別情報の頻度が所定頻度以上である場合に、当該識別情報により識別されるデータを前記メモリに格納する各処理をさらに実行し、
     前記判定する処理は、前記受け付ける処理によって受け付けたアクセス要求に対応するデータが前記メモリに存在する否かを判定し、
     前記アクセス制御を行う処理は、前記判定する処理によって前記データが前記メモリに存在すると判定された場合に、当該メモリにアクセスし、前記インデックス情報が存在すると判定された場合に、前記不揮発性メモリにアクセスし、前記インデックス情報が存在しないと判定された場合に、前記記録装置にアクセスするアクセス制御を行うことを特徴とする請求項6または7に記載の制御方法。
  9.  前記コンピュータが、
     前記記録装置に記憶されるデータのバージョンを示すバージョン情報を更新する処理をさらに実行し、
     前記受け付ける処理は、前記記録装置がマウントされた旨の情報を受け付け、
     前記更新する処理は、前記受け付ける処理によって前記記録装置がマウントされた旨の情報を受け付けた場合に、前記記録装置に記憶されたバージョン情報を更新し、
     前記判定する処理は、前記アクセス要求として、前記データに対する読込要求を前記受け付ける処理によって受け付けた場合に、前記不揮発性メモリに記憶された当該読込要求に対応するバージョン情報と、前記記録装置に記憶された当該読込要求に対応するバージョン情報とが一致するか否かを判定し、
     前記アクセス制御を行う処理は、前記判定する処理によって前記バージョン情報が一致すると判定された場合に、前記不揮発性メモリにアクセスし、一致しない場合に、前記記録装置にアクセスするアクセス制御を行うことを特徴とする請求項6~8のいずれか一つに記載の制御方法。
  10.  前記コンピュータが、
     前記アクセス要求を出力するアプリケーションが実行される仮想マシンが再起動された場合に、前記記録装置から前記不揮発性メモリにキャッシュされたデータの前記識別情報に基づいて、インデックス情報を生成する処理をさらに実行することを特徴とする請求項6または7に記載の制御方法。
  11.  データに対するアクセス要求を受け付ける受付部と、
     データを記憶する記録装置から不揮発性メモリにキャッシュしたデータを識別する識別情報を短縮したインデックス情報を記憶するメモリに、前記受付部によって受け付けたアクセス要求に対応するインデックス情報が存在するか否かを判定する判定部と、
     前記判定部によって前記インデックス情報が存在すると判定された場合に、前記不揮発性メモリにアクセスし、存在しないと判定された場合に、前記記録装置にアクセスするアクセス制御を行うアクセス制御部と
     を有することを特徴とする制御装置。
  12.  前記識別情報は、データの記憶された記録装置を識別する情報と、前記記録装置の記録領域におけるデータの記録された位置を特定する情報とを含むことを特徴とする請求項11に記載の制御装置。
  13.  前記判定部によって前記不揮発性メモリに前記識別情報が存在しないと判定された場合に、当該識別情報の履歴を前記メモリに記録する記録部と、
     前記記録部によって前記履歴に記録された識別情報の頻度が所定頻度以上である場合に、当該識別情報により識別されるデータを前記メモリに格納する格納部とをさらに備え、
     前記判定部は、前記受付部によって受け付けたアクセス要求に対応するデータが前記メモリに存在する否かを判定し、
     前記アクセス制御部は、前記判定部によって前記データが前記メモリに存在すると判定された場合に、当該メモリにアクセスし、前記インデックス情報が存在すると判定された場合に、前記不揮発性メモリにアクセスし、前記インデックス情報が存在しないと判定された場合に、前記記録装置にアクセスするアクセス制御を行うことを特徴とする請求項11または12に記載の制御装置。
  14.  前記記録装置に記憶されるデータのバージョンを示すバージョン情報を更新する更新部をさらに備え、
     前記受付部は、前記記録装置がマウントされた旨の情報を受け付け、
     前記更新部は、前記受付部によって前記記録装置がマウントされた旨の情報を受け付けた場合に、前記記録装置に記憶されたバージョン情報を更新し、
     前記判定部は、前記アクセス要求として、前記データに対する読込要求を前記受付部が受け付けた場合に、前記不揮発性メモリに記憶された当該読込要求に対応するバージョン情報と、前記記録装置に記憶された当該読込要求に対応するバージョン情報とが一致するか否かを判定し、
     前記アクセス制御部は、前記判定部によって前記バージョン情報が一致すると判定された場合に、前記不揮発性メモリにアクセスし、一致しない場合に、前記記録装置にアクセスするアクセス制御を行うことを特徴とする請求項11~13のいずれか一つに記載の制御装置。
  15.  前記アクセス要求を出力するアプリケーションが実行される仮想マシンが再起動された場合に、前記記録装置から前記不揮発性メモリにキャッシュされたデータの前記識別情報に基づいて、インデックス情報を生成する生成部をさらに有することを特徴とする請求項11または12に記載の制御装置。
PCT/JP2012/072630 2012-09-05 2012-09-05 制御プログラム、制御方法及び制御装置 Ceased WO2014038016A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
PCT/JP2012/072630 WO2014038016A1 (ja) 2012-09-05 2012-09-05 制御プログラム、制御方法及び制御装置
JP2014534083A JPWO2014038016A1 (ja) 2012-09-05 2012-09-05 制御プログラム、制御方法及び制御装置
US14/614,791 US9513824B2 (en) 2012-09-05 2015-02-05 Control method, control device, and recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2012/072630 WO2014038016A1 (ja) 2012-09-05 2012-09-05 制御プログラム、制御方法及び制御装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US14/614,791 Continuation US9513824B2 (en) 2012-09-05 2015-02-05 Control method, control device, and recording medium

Publications (1)

Publication Number Publication Date
WO2014038016A1 true WO2014038016A1 (ja) 2014-03-13

Family

ID=50236668

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2012/072630 Ceased WO2014038016A1 (ja) 2012-09-05 2012-09-05 制御プログラム、制御方法及び制御装置

Country Status (3)

Country Link
US (1) US9513824B2 (ja)
JP (1) JPWO2014038016A1 (ja)
WO (1) WO2014038016A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10922228B1 (en) * 2015-03-31 2021-02-16 EMC IP Holding Company LLC Multiple location index
US10210087B1 (en) 2015-03-31 2019-02-19 EMC IP Holding Company LLC Reducing index operations in a cache
US10268413B2 (en) 2017-01-27 2019-04-23 Samsung Electronics Co., Ltd. Overflow region memory management

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0916474A (ja) * 1995-06-30 1997-01-17 Fujitsu Ltd 入出力制御装置及び方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5761531A (en) 1995-06-30 1998-06-02 Fujitsu Limited Input/output control apparatus and method for transfering track data from cache module to channel unit during the staging of the data track from device adapter
JPH1040170A (ja) 1996-07-26 1998-02-13 Toshiba Corp ディスクキャッシュシステム
US6000006A (en) * 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
US6732221B2 (en) 2001-06-01 2004-05-04 M-Systems Flash Disk Pioneers Ltd Wear leveling of static areas in flash memory
JP3702231B2 (ja) 2002-01-31 2005-10-05 株式会社東芝 ディスクアレイ装置及び同装置における動的記憶容量拡張方法
US20080016274A1 (en) * 2006-07-13 2008-01-17 Xing-Jia Wang Method of protecting cache memory data in storage system
JP2008097132A (ja) 2006-10-06 2008-04-24 Matsushita Electric Ind Co Ltd メモリコントローラ、不揮発性記憶装置、及び不揮発性記憶システム
JP2011060055A (ja) * 2009-09-11 2011-03-24 Fujitsu Ltd 仮想計算機システム、仮想マシンの復旧処理方法及びそのプログラム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0916474A (ja) * 1995-06-30 1997-01-17 Fujitsu Ltd 入出力制御装置及び方法

Also Published As

Publication number Publication date
US9513824B2 (en) 2016-12-06
JPWO2014038016A1 (ja) 2016-08-08
US20150149720A1 (en) 2015-05-28

Similar Documents

Publication Publication Date Title
JP5640845B2 (ja) ストレージシステム、ストレージ制御装置およびストレージ制御方法
TWI606340B (zh) 用於資料快取之方法、電腦可讀取儲存媒體及系統
US9280478B2 (en) Cache rebuilds based on tracking data for cache entries
JP6020159B2 (ja) 情報処理装置、及び情報処理方法
US10409717B2 (en) Data storage device and method for operating data storage device
JP6106028B2 (ja) サーバ及びキャッシュ制御方法
WO2016050112A1 (zh) 一种数据存储方法、存储装置及存储系统
JP2013533991A (ja) 記憶装置の間で移動されるトラックのエクステントへの書込み動作の管理方法、システム、及びコンピュータ・プログラム
US20140244901A1 (en) Metadata management for a flash drive
US9971520B2 (en) Processing read and write requests
JP5821744B2 (ja) データ有無判定装置、データ有無判定方法及びデータ有無判定プログラム
CN116974491A (zh) 固态硬盘的存储优化方法、装置、计算机设备及存储介质
CN110414245B (zh) 用于在存储系统中管理加密密钥的方法、装置和计算机程序产品
JPWO2009066611A1 (ja) 仮想マシン向けデータ格納システム、データ格納方法およびデータ格納用プログラム
WO2014038016A1 (ja) 制御プログラム、制御方法及び制御装置
JP2016170471A (ja) 電子制御装置
CN107810499B (zh) 用于内容存储和检索的系统和方法
US9477613B2 (en) Position-based replacement policy for address synonym management in shared caches
US20190236076A1 (en) Computer and cache control method
CN111857547B (zh) 用于管理数据存储的方法、设备和计算机可读介质
CN109088913B (zh) 请求数据的方法和负载均衡服务器
US10318888B2 (en) Pre-backing virtual storage using historical learned data
US12298868B2 (en) Prioritized recovery of files during failback
CN112988034B (zh) 一种分布式系统数据写入方法及装置
US10152334B2 (en) Network boot system

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: 12884080

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2014534083

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 12884080

Country of ref document: EP

Kind code of ref document: A1