WO2014076735A1 - Storage apparatus and control method for storage apparatus - Google Patents
Storage apparatus and control method for storage apparatus Download PDFInfo
- Publication number
- WO2014076735A1 WO2014076735A1 PCT/JP2012/007303 JP2012007303W WO2014076735A1 WO 2014076735 A1 WO2014076735 A1 WO 2014076735A1 JP 2012007303 W JP2012007303 W JP 2012007303W WO 2014076735 A1 WO2014076735 A1 WO 2014076735A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- block
- cache
- data
- file
- area
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0626—Reducing size or complexity of storage systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/28—Using a specific disk cache architecture
- G06F2212/282—Partitioned cache
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/46—Caching storage objects of specific type in disk cache
- G06F2212/461—Sector or disk block
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/46—Caching storage objects of specific type in disk cache
- G06F2212/463—File
Definitions
- This invention relates to a storage apparatus and a control method for the storage apparatus.
- SAN storage area network
- NAS network attached storage
- the SAN connects a plurality of storage apparatuses to a plurality of hosts by a network dedicated to communication among the hosts and the storage apparatuses to achieve high-speed and low-latency input/output (I/O).
- I/O between a host and a storage apparatus is performed by blocks.
- the block is a management unit for fixed-length data, which is obtained by dividing the whole storage space of a storage apparatus into units having a predetermined size and identified by an address.
- a typical application suitable for block-based I/O is database. Consolidating volumes of a plurality of database servers into a single storage apparatus and unifying the management can reduce the management cost of the computer system.
- the SAN is a highly reliable dedicated network to perform efficient communication, it is effective to use the SAN as a communication channel for volume-based data transfer.
- the volume-based data transfer is used to replicate a volume at a remote storage apparatus for the purposes of backup and disaster planning.
- the NAS is a storage apparatus having a file server capability to provide file services to a plurality of hosts in a local area network (LAN).
- the I/O between the NAS and a host is performed by files.
- the file is a management unit for variable-length data, which is typically identified by a text identifier.
- a typical application suitable for file-based I/O is file sharing by a plurality of hosts, which achieves a service that a plurality of web servers distribute the same contents or document sharing by a plurality of office personal computers.
- the SAN and the NAS are technologies that complement each other. Therefore, the following idea comes up: integrating a storage apparatus supporting the SAN and a NAS into a single apparatus will achieve further reduction in the management cost.
- the technique disclosed in the following PTL 1, US 2005/0172043 A configures the control program for a storage apparatus so as to control both of the SAN and the NAS; consequently, a storage apparatus supporting both of the SAN and the NAS can be attained.
- the storage apparatus employing this technique has interfaces for the SAN and the NAS, so that it can allocate the storage space to the SAN and the NAS without restriction.
- a program (block processing program) for processing I/O from a SAN host, which accesses a storage apparatus via a SAN, and a program (file processing program) for processing I/O from a NAS host, which uses a NAS, are independent from each other to cache data for the programs independently.
- An aspect of this invention is a storage apparatus for receiving block I/O commands and file I/O commands, the storage apparatus including a plurality of storage devices for storing data of block I/O commands and file I/O commands and a controller including a block cache area and a file cache area.
- the controller creates block I/O commands from file I/O commands and accesses the plurality of storage devices in accordance with the created block I/O commands.
- the file cache area caches data of file I/O commands.
- the block cache area caches data of block I/O commands.
- the controller chooses one of a first cache method that newly creates a free area in the file cache area to cache the first data in the file cache area and a second cache method that caches the first data in the block cache area without caching the first data in the file cache area.
- cache areas of a storage apparatus can be used efficiently.
- Fig. 1 is a block diagram illustrating an overall configuration of a computer system in Embodiment 1.
- Fig. 2 illustrates an exemplary configuration of an MPU memory in Example 1.
- Fig. 3 illustrates an exemplary configuration of a block processing memory in Example 1.
- Fig. 4 illustrates an exemplary configuration of a file processing memory in Example 1.
- Fig. 5 illustrates an exemplary configuration of a shared memory in Example 1.
- Fig. 6 illustrates an exemplary configuration of a file cache information table in Example 1.
- Fig. 7 illustrates an exemplary configuration of a block cache information table in Example 1.
- Fig. 8 illustrates an exemplary configuration of a cache cooperation information table in Example 1.
- FIG. 9 illustrates a first exemplary process flow of issuing a read command by a block command issuing program in the file processing program in Example 1.
- Fig. 10 illustrates a second exemplary process flow of issuing a read command by the block command issuing program in Example 1.
- Fig. 11 illustrates a third exemplary process flow of issuing a read command by the block command issuing program in Example 1.
- Fig. 12 is a flowchart illustrating an exemplary process of cache layer determination by the file cache control program in Example 1.
- Fig. 13 illustrates another exemplary process of cache layer determination in Example 1.
- Fig. 14 illustrates an exemplary process flow of processing a block read command by a block command processing program in Example 1.
- FIG. 15 illustrates an exemplary process flow of processing a block write command by the block command processing program in Example 1.
- Fig. 16 illustrates an exemplary process flow of allocating a free area in the block cache area (a block cache free area allocating process) by a block cache control program in Example 1.
- Fig. 17 illustrates a second exemplary process flow of the block cache free area allocating process by the block cache control program in Example 1.
- Fig. 18 illustrates an exemplary configuration of a block cache information table in Example 2.
- Fig. 19 illustrates an exemplary process flow of processing a block write command in Example 2.
- Fig. 20 illustrates an exemplary process flow of the block cache free area allocating process in Example 2.
- Fig. 21 illustrates another exemplary process flow of the block cache free area allocating process in Example 2.
- Fig. 16 illustrates an exemplary process flow of allocating a free area in the block cache area (a block cache free area allocating process) by a block cache control program in Example 1.
- Fig. 17 illustrates a
- FIG. 22 illustrates yet another exemplary process flow of the block cache free area allocating process in Example 2.
- Fig. 23 illustrates an exemplary process flow of issuing a write command by the block command issuing program in Example 3.
- Fig. 24 illustrates an exemplary process flow of the block cache free area allocating process in Example 3.
- Fig. 25 illustrates an exemplary configuration of an MPU memory in Example 4.
- Fig. 26 illustrates an exemplary configuration of a virtual server memory in Example 4.
- Fig. 27 illustrates an exemplary configuration of a block processing memory in Example 5.
- Fig. 28 illustrates an exemplary process flow of changing space allocation by a cache space coordination program in Example 5.
- SAN storage area network
- NAS network attached storage
- Fig. 1 is a block diagram illustrating an overall configuration of a computer system in this embodiment.
- the computer system 1 in Fig. 1 includes a SAN host 2, a NAS host 3, a management terminal 8, and a storage apparatus 4.
- the SAN host 2 is an example of a host that uses a block storage apparatus; it issues block I/O requests (block I/O commands) and accesses data by blocks.
- the NAS host 3 is an example of a host that uses a file storage apparatus; it issues file I/O requests (file I/O commands) and accesses data by files.
- the storage apparatus 4 has capabilities of both of the block storage apparatus and the file storage apparatus.
- the computer system 1 further includes data networks for block storage and file storage, such as a storage area network (SAN) 5 and a local area network (LAN) 6.
- SAN storage area network
- LAN local area network
- the computer system 1 includes a management LAN 7.
- the SAN 5 may be a network that supports a protocol such as Fibre Channel, FCoE, or iSCSI; the LAN 6 may be a TCP/IP network.
- the SAN host 2 is communicably connected to the storage apparatus 4 via the SAN 5.
- the NAS host 3 is communicably connected to the storage apparatus 4 via the LAN 6.
- the management terminal 8 is communicably connected to the storage apparatus 4 via the management LAN 7.
- the SAN host 2 and the NAS host 3 may be mainframes, servers, or client terminals.
- the SAN host 2 and the NAS host 3 may be directly connected to the storage apparatus 4 without the SAN 5 and the LAN 6.
- the management terminal 8 may be directly connected to the storage apparatus 4 without the management LAN 7.
- the storage apparatus 4 in Fig. 1 includes a storage controller (CTL) 100 and storage drives 109 controlled by the CTL 100.
- the CTL 100 includes an MPU 101, which is a processor, an MPU memory 102, which is a primary storage device, a block interface (I/F) 104, a file I/F 105, a drive I/F 106, and a management I/F 107.
- the CTL 100 communicates with the SAN host 2 via the block I/F 104, communicates with the NAS host 3 via the file I/F 105, communicates with the storage drives 109 via the drive I/F 106, and communicates with the management terminal 8 via the management I/F 107.
- the storage drives 109 are composed of storage drives such as magnetic disk drives and solid state drives.
- the storage drives 109 are configured to have logical storage areas (called logical volumes) each allocated a plurality of continuous address spaces.
- the SAN host 2 issues I/O commands for blocks (hereinafter, referred to as block commands), which are to use the address spaces of the logical volumes, to the storage apparatus 4 via the block I/F 104.
- the NAS host 3 issues I/O commands for files (hereinafter, referred to as file commands) to the storage apparatus 4 via the file I/F 105.
- file commands can designate partial data in a file.
- the storage apparatus in this example has one CTL, the storage apparatus may have a plurality of CTLs to achieve redundancy, which can enhance the availability of the system.
- Fig. 2 is a configuration diagram of the MPU memory 102 in this example.
- the MPU memory 102 has three areas: a file processing memory 10, a block processing memory 11, and a shared memory 12.
- Fig. 3 illustrates an exemplary configuration of the block processing memory 11.
- the block processing memory 11 has a block processing text area 300, a block control information area 310, and a block cache area 320, which respectively store programs, control information, and various kinds of data.
- the block processing text area 300 stores programs to perform processing and functions of the storage apparatus for reading and writing data upon receipt of a block command issued by the SAN host 2; the MPU 101 accesses this area as necessary to execute the programs.
- the block processing text area 300 stores a block command processing program 301 and a block cache control program 302.
- the programs to be stored in the block processing text area 300 are collectively called a block processing program.
- the block command processing program 301 is a program for receiving block commands issued by the SAN host 2 or a later-described file processing program (refer to Fig. 4) and executing a read/write of data.
- the block command processing program 301 executes a block read or a block write responsive to a block command from the SAN host 2 or the file processing program.
- the process flows of the block read and the block write will be described with reference to Figs. 14 and 15.
- the block command processing program 301 invokes the block cache control program 302 as necessary and makes it perform a part of the processing.
- the block control information area 310 stores a block cache information table 311.
- the block cache area 320 is an area to temporarily hold user data to be read or written in accordance with a block command from the SAN host 2 or the later-described file processing program.
- the block cache area 320 plays a role to expedite a write access to the storage apparatus 4.
- the CTL 100 uses the stored blocks while replacing them one after another.
- the algorithm to select a block to be replaced is important.
- This example employs a method called least recently used (LRU) by way of example.
- LRU is an algorithm that determines to replace the data that has not been accessed for the longest time.
- the block cache control program 302 determines whether the object data is held in the block cache area 320.
- the condition that the block cache area 320 includes the object data is called a hit or a cache hit; the condition that it does not include the data is called a miss or a cache miss.
- the block cache control program 302 retrieves the data from the block cache area 320 and returns the data to the SAN host 2 or the file command processing program 201 that has issued the block command. In the case of a cache miss, the block cache control program 302 retrieves the data from the storage drives 109.
- the block cache control program 302 In processing a block command for a write, the block cache control program 302 stores object data in the block cache area 320.
- the block cache control program 302 can return a response to the SAN host 2 or the file command processing program 201 that has issued the block command upon storing the data in the block cache area 320 to reduce the response time.
- the data written in the block cache area 320 is asynchronously written to the storage drives 109.
- Fig. 4 illustrates an exemplary configuration of the file processing memory 10.
- the file processing memory 10 has a file processing text area 200, a file control information area 210, and a file cache area 220, which respectively store programs, control information, or various kinds of data.
- the file processing text area 200 stores programs to perform processing and functions of the storage apparatus for reading and writing data; the MPU 101 accesses this area as necessary to execute the programs. Specifically, the file processing text area 200 stores a file command processing program 201, a file cache control program 202, and a block command issuing program 203. The programs to be stored in the file processing text area 200 are collectively called a file processing program.
- the file processing program In order to access data, the file processing program issues block I/O commands for logical volumes, like the SAN host 2, internally to the block processing program.
- the file command processing program 201 is a program to receive file commands issued by the NAS host 3 and execute read and write of data.
- the file command processing program performs a read or a write of a designated file responsive to a file command from the NAS host 3.
- the target that the NAS host 3 designates for data read/write in a file command is provided in the form of a file, which is identified by a file name and has a variable length.
- the file command processing program 201 converts the file command into a block command based on the file system. That is to say, the program converts the format of the file command into the format of a block command which designates the logical volume containing the data of the file system the designated file belongs to and the logical addresses of the blocks corresponding to the object file.
- the obtained block command is issued by the method suitable for the target logical volume, by invoking the block command issuing program 203.
- the block command issuing program 203 issues a block command to the block command processing program 301 in the same enclosure via the shared memory 13.
- the block command is issued to the external storage apparatus through the block I/F 104 via the SAN 5.
- the data to be read or written by the issued block command includes metadata, such as i-node and journal data in a journaling file system, in addition to the substance of the file and is read or written as one or more continued fixed-length areas (blocks) indicating the data.
- metadata such as i-node and journal data in a journaling file system
- the block command issuing program 203 invokes the file cache control program 202 as necessary and makes it execute a part of the processing.
- the file cache control program 202 performs caching of blocks to the file cache area 220. It stores a retrieved block in the file cache area 220 and retrieves the stored block for a future read of the same block to achieve a high-speed access.
- the file cache control program 202 employs the LRU method as an algorithm to select a block to be replaced, like the block cache control program 302.
- the details of the block command issuing program 203 will be described with reference to Figs. 9 to 11.
- the file control information area 210 stores a file cache information table 211.
- the file cache area 220 is to temporarily hold user data read or written by the NAS host 3 in accordance with a file command.
- Fig. 5 illustrates an exemplary configuration of the shared memory 12.
- the shared memory 12 is an area readable and writable by both of the block processing program and the file processing program and is used for communication between them.
- the block processing memory 11 is accessed only by the block processing program and the file processing memory 10 is accessed only by the file processing program.
- the shared memory 12 is used to store information to be accessed by the both.
- the shared memory 12 has a shared control information area 401 and a communication area 402.
- the shared control information area 401 stores control information required to be shared by a block processing program and a file processing program.
- a cache cooperation information table 401 is exemplified.
- the communication area 402 is an area to be used when a block processing program communicates with a file processing program and can be read or written by both of them.
- the cache cooperation information table 401 stores control information required for the file cache control program 202 and the block cache control program 302 to cooperate.
- the block command issuing program 203 uses the block file communication area 402 to issue a command to the block command processing program 301 or to receive a response from the block command processing program 301.
- the file processing program can communicate necessary information with the block processing program without using the shared memory 12.
- the file processing program and the block processing program may ask each other for necessary information and respond to each other without using the cache cooperation information table 401.
- the MPU 101 executes programs retained in the MPU memory 102 to implement predetermined functions.
- the programs are executed by the MPU 101 to perform predetermined processing using the storage devices and communication interfaces. Therefore, a description in this example or the other examples made with a subject of a program may be a description with a subject of the MPU 101.
- processing performed by a program is processing performed by the storage apparatus 4 on which the program runs or the system including the storage apparatus 4.
- the MPU 101 operates in accordance with programs to operate as functional parts (means) for realizing predetermined functions.
- the MPU 101 functions as a block command processor and a file command processor.
- the storage apparatus 4 is an apparatus including these functional parts. At least some of the programs may be realized by dedicated hardware.
- the programs are shown in the MPU memory 102, but typically, the programs are loaded from the storage area of a secondary storage device to the MPU memory 102.
- the secondary storage device is a storage device including a non-volatile non-transitory storage medium for storing programs and data necessary to realize the predetermined functions, and is mounted on the storage apparatus 4 or connected to the storage apparatus 4 via a network.
- information to be used by the system does not depend on the data structure but may be expressed in any data structure.
- a data structure appropriately selected from a table, a list, a database and a queue can store information.
- terms such as identification information, identifier, name, and ID are used, but they can be replaced with one another.
- Fig. 6 is an exemplary configuration of the file cache information table 211.
- the file cache information table 211 is a table to manage information on pieces of cache data stored in the file cache area 220 and includes a plurality of entries each having a cache address field 2110, a volume number field 2111, a volume address field 2112, an attribute information field 2113, and a last access time field 2114.
- the cache address field 2110 stores a value indicating the address of a particular cache area in the file cache area 220.
- the volume number field 2111 and the volume address field 2112 store the logical volume number of the cached data and its address in the logical volume, respectively.
- the attribute information field 2113 stores information to specify the characteristic of the data and its behavior in caching. For example, information indicating whether the data is user data or metadata such as i-node is stored in the form of one or more character strings.
- the last access time field 2114 stores a value indicating the latest time of the access to the data for a read or a write. For a free area (an unoccupied cache area which holds no data), each field contains no value (denoted by "-" in the drawing).
- Pieces of information about the cache area are updated by the file cache control program 202 when new cache data is stored, when cache data is replaced, when cache data is deleted and the area is released (becomes a free area), or when the cache area is accessed for a cache hit, to indicate the latest information every time.
- Fig. 7 is an exemplary configuration of the block cache information table 311.
- the block cache information table 311 is a table to manage information on pieces of cache data stored in the block cache area 320 and includes a plurality of entries each having a cache address field 3110, a volume number field 3111, a volume address field 3112, an attribute information field 3113, and a last access time field 3114.
- the cache address field 3110 stores a value indicating the address of a cache area in the block cache area 320.
- the volume number field 3111 and the volume address field 3112 store the logical volume number of the cached data and its address in the logical volume, respectively.
- the attribute information field 3113 stores information to specify the characteristic of the data and its behavior in caching. For example, information such as HIGH-PRIORITY RELEASE, which indicates that the cached data should be preferentially released, is stored in the form of one or more character strings.
- the last access time field 3114 stores a value indicating the latest time of the access to the data for a read or a write. For a free area (an unoccupied cache area which holds no data), each field contains no value (denoted by "-" in the drawing).
- Pieces of information about the cache area are updated by the block cache control program 302 when new cache data is stored, when cache data is replaced, when cache data is deleted and the area is released (becomes a free area), or when the cache area is accessed for a cache hit, to indicate the latest information every time.
- Fig. 8 is an exemplary configuration of the cache cooperation information table 403.
- the cache cooperation information table 403 is a table of information necessary for the block cache control program 302 and the file cache control program 202 to cooperate in operation.
- the cache cooperation information table 403 has a file cache earliest last access time field 4030, a file cache average last access time field 4034, a file cache hit rate field 4031, a file cache free area field 4036, a block cache earliest last access time field 4032, a block cache average last access time field 4035, a block cache hit rate field 4033, and a block cache free area field 4037.
- the file cache earliest last access time field 4030 stores the last access time of the cache area of the data that has the earliest last access time in the pieces of data held in the file cache area 220.
- the file cache average last access time field 4034 stores an average value of the last access times of the pieces of data held in the file cache area 220.
- the file cache hit rate field 4031 stores a hit rate in the file cache area 220 (a rate of the number of cache hits to the total number of accesses).
- the file cache free area field 4036 stores the number of free areas in the file cache area 220. The values of the fields are updated by the file cache control program 202 as needed.
- the block cache earliest last access time field 4032 stores the last access time of the cache area of the data that has the earliest last access time in the pieces of data held in the block cache area 320.
- the block cache average last access time field 4035 stores an average value of the last access times of the pieces of data held in the block cache area 320.
- the block cache hit rate field 4033 stores a hit rate in the block cache area 320 (a rate of the number of cache hits to the total number of accesses).
- the block cache free area field 4037 stores the number of free areas in the block cache area 320. The values of the fields are updated by the block cache control program 302 as needed.
- Fig. 9 is a first exemplary process flow of issuing a read command by the block command issuing program 203 of the file processing program. Some of the steps are executed using other programs.
- This process (the block command issuing program 203) is typically invoked by the file command processing program 201 and executed to read a block allocated for a file or metadata related thereto.
- the process is invoked with information indicating the logical volume number indicating the read target block and the logical block address in the volume, namely the values themselves or information leading to the values.
- the block command issuing program 203 first invokes the file cache control program 202 (Step S5111).
- the file cache control program 202 determines whether the requested data is in the file cache area 220 (a cache hit) or not (a cache miss), with reference to the file cache information table 211.
- the file cache control program 202 retrieves the object data from the file cache area 220 and updates the file cache information table 211.
- the file cache control program 202 returns the object data to the command originator (NAS host 3) (Step S5109).
- Step S5100 the block command issuing program 203 proceeds to Step S5113.
- the block command issuing program 203 determines whether the logical volume holding the object data is in the same apparatus enclosure or in an external storage apparatus (S5113).
- the file control information area 210 retains a not-shown volume information table, which includes information indicating the storage location of volume data.
- the block command issuing program 203 can make the determination of Step S5113 with reference to this volume information table.
- Step S5113 If the object data is in the same apparatus enclosure (YES at Step S5113), the block command issuing program 203 proceeds to Step S5101. If the object data is held in an external storage apparatus (NO at Step S5113), the block command issuing program 203 issues a command to the external storage apparatus via the block I/F 104 (Step S5112), retrieves data from the response thereto, and returns it to the invocator of the block command issuing program 203 without storing it in the file cache area 220 (Step S5110).
- the block command issuing program 203 issues a block command to the block command processing program 301 via the communication area 402.
- the block command processing program 301 executes later-described block read command processing (refer to Fig. 14) in accordance with the received block command.
- the block command issuing program 203 receives a response from the block command processing program 301 via the communication area 402 (Step S5102).
- the response information includes the object data and information indicating whether a cache hit has occurred in the block cache area 320.
- the block command issuing program 203 determines whether a cache hit has occurred in the block cache area 320 with reference to the response information (Step S5103). In the case of a cache hit (YES at Step S5103), the block command issuing program 203 proceeds to Step S5110 to return the data to the invocator.
- the block command issuing program 203 invokes a cache layer determination process of the file cache control program 202 (S5104).
- the cache layer determination process will be described with reference to Figs. 12 and 13; it determines in which cache area (layer) to store the data, the file cache area 220 or the block cache area 320.
- Step S510 retrieves the data from the response to the block command, returns the data to the invocator, and ends. This data is not stored in the file cache area 220.
- the block command issuing program 203 first invokes a file cache allocating process in the file cache control program 202 to allocate a free area in the file cache area 220 (Step S5106).
- the area to be allocated may be determined in accordance with the LRU algorithm. For example, the cache data having the earliest access time in the last access time field of the file cache information table 211 is deleted to allocate a free area.
- the block command issuing program 203 stores the data in the area allocated this way by the file cache control program 202 (Step S5107).
- the file cache control program 202 stores the data in the file cache area 220, creates a new entry in the file cache information table 211, and updates the entry with the information on this data.
- Step S5108 the block command issuing program 203 invokes a block cache control program 302 via the communication area 402 and makes it delete the data from the block cache area 320 (hereinafter, this operation is referred to as purge) (Step S5108). Then, the block command issuing program 203 returns the data from the file cache area 220 to the invocator of the block command issuing program 203 (S5109). These steps eliminate the same data from being cached in the two cache areas 220 and 320.
- the block command issuing program 203 may provide information to preferentially release the data.
- the block command issuing program 203 instructs the block cache control program 302 to add HIGH-PRIORITY RELEASE to the attribute information field 3113 of the entry corresponding to this data in the block cache information table 311.
- This operation enables deletion of doubled cache data within the scope of the original cache control by the block cache control program 302, without implementing a purge function to the block cache control program 302.
- Fig. 10 is a second exemplary process flow of issuing a read command by the block command issuing program 203.
- the block command issuing program 203 first invokes the file cache control program 202 (Step S5014).
- the file cache control program 202 determines whether the requested data is in the file cache area 220 (a cache hit), with reference to the file cache information table 211 (Step S5000).
- the file cache control program 202 retrieves the data from the file cache area 220 and returns the data to the command originator (Step S5008).
- the block command issuing program 203 determines whether the object data is held in a logical volume in the same apparatus enclosure or in a logical volume in an external storage apparatus (S5013). Since the operations at Steps S5013 and S5112 are the same as Steps 5113 and S5112 in Fig. 9, the explanations thereof are omitted.
- the block command issuing program 203 invokes a cache layer determination process of the file cache control program 202 (Step S5002).
- the cache layer determination process will be described with reference to Figs. 12 and 13.
- the block command issuing program 203 determines whether the result of the foregoing determination is the file layer (the file cache area 220) or the block layer (the block cache area 320) (Step S5003) and if the result of the determination indicates the file layer (YES at Step S5003), the block command issuing program 203 invokes a file cache allocating process of the file cache control program 202 to allocate a free area in the file cache area 220 (S5004).
- the block command issuing program 203 issues a block command to the block command control program 302 via the communication area 402 after attaching attribute information of NO CACHE to the block command (S5005). This step can prevent the data from being cached in the file cache area 220.
- the attribute to be assigned at this step may be NO CACHE indicating not to be cached or HIGH-PRIORITY RELEASE indicating to release the data preferentially even though it is cached.
- the attribute information may be stored in the block command or stored in an area in the communication area 402. Storing the attribute information in the block command promotes efficiency in processing for instructions on the attribute.
- the block command processing program 301 performs later-described block read command processing (refer to Fig. 14), in accordance with the received block command.
- the block command issuing program 203 receives a response from the block command processing program 301 (S5006).
- the block command issuing program 203 invokes the file cache control program 202 and the file cache control program 202 stores the received data in the file cache area 220, creates a new entry in the file cache information table 211, and updates the entry with the information on the data (S5007).
- the file cache control program 202 acquires data from the file cache area and returns it to the command originator (S5008).
- the block command issuing program 203 issues a block command to the block command control program 302 via the communication area 402 after attaching attribute information of CACHE REQUIRED to the block command (Step S5009).
- the block command control program 302 performs later-described block read command processing (refer to Fig. 14) in accordance with the received block command.
- the block command issuing program 203 receives a response from the block command processing program 301 (Step S5010) and returns the data to the command originator (S5011).
- the received data is not stored in the file cache area 220. It should be noted that the attaching attribute at Step S5009 is not necessarily required. This is because the block cache control program 302 usually caches read data.
- Fig. 11 is a third exemplary process flow of issuing a read command by the block command issuing program 203.
- Step S5015 the oldest data (the data having the earliest last access time) in the file cache area is moved to the block cache area 302.
- the block command issuing program 203 communicates with the block cache control program 302 via the communication area 402 and issues an instruction to cache the particular bloc k in the block cache area 320.
- the block command issuing program 203 proceeds to Step S5004. This step allows managing across the file cache area 220 and the block cache area 320.
- Fig. 12 is a flowchart illustrating an exemplary process of cache layer determination by the file cache control program 202. This process determines whether to use the file cache area 220 or the block cache area 320. In other words, it is a process of choosing the area (layer) from which to allocate a free area by discarding a part of the existing cache data to newly cache data.
- the file cache control program 202 refers to the cache cooperation table 403 for the file cache free area field 4036 to determine whether any free area exists in the file cache area 320 (the value in the file cache free area field 4036 is not 0) (Step S5200). If a free area exists (YES at Step S5200), the file cache control program 202 returns "file cache area" as the result of the determination (Step S5203).
- File-based caching is more space-efficient than block-based caching and provides shorter response time because the file cache area 220 is closer to the NAS host 3 than the block cache area 320.
- the file cache control program 202 refers to the cache cooperation table 403 for the block cache free area field 4037 to determine whether any free area exists in the block cache area 320 (the value in the block cache free area field 4037 is not 0) (Step S5201). If a free area exists (YES at Step S5201), the file cache control program 202 returns "block cache area" as the result of the determination (Step S5204). This result means that data can be cached without creating a new free area.
- the file cache control program 202 refers to the cache cooperation table 403 for the file cache earliest last access time field 4030 and the block cache earliest last access time field 4032 to compare the last access times of the oldest data in the file cache area 220 and the block cache area 320, and chooses the older one (Step S5202 to S5204).
- the file cache control program 202 chooses the file cache area 220 (Step S5203). If the result is contrary or the last access times are the same (NO at Step S5202), the file cache control program 202 chooses the block cache area 320 (Step S5203). In the case of the same last access time, either cache area can be chosen.
- the file cache control program 202 refers to the cache cooperation table 403 for the file cache average last access time field 4034 and the block cache average last access time field 4035 to compare the average last access times of the file cache area 220 and the block cache area 320.
- the data to be released from the cache data can be chosen from both of the file cache area 220 and the block cache area 320, so that a higher cache hit rate can be attained.
- Fig. 13 illustrates another exemplary process of cache layer determination. This process is the same as the cache layer determination illustrated in Fig. 12, except that Step S5202 has been replaced by Step S5205.
- the file cache control program 202 refers to the cache cooperation table 403 for the file cache hit rate field 4031 and the block cache hit rate field 4033 to compare the cache hit rates of the file cache area 220 and the block cache area 320, and chooses the one having the lower hit rate (Steps S5205, S5203, and S5204).
- the file cache control program 202 chooses the file cache area 220 (Step S5203). If the result is contrary or the cache hit rates are the same (NO at Step S5205), the file cache control program 202 chooses the block cache area 320 (Step S5203). In the case of the same cache hit rate, either cache area can be chosen.
- the data to be released from the cache data can be selected from both of the file cache area 220 and the block cache area 320, so that a higher cache hit rate can be attained.
- Fig. 14 illustrates an exemplary process flow of processing a block read command by the block command processing program 301. This process is executed upon receipt of a block command for a read.
- the block command processing program 301 is invoked with designation of the logical volume to be read and the logical address in the volume.
- the block command issued via the communication area 402 by the block command issuing program 203 of the file processing program may be accompanied by attribute information on caching operation in the read or the data, such as the NO CACHE attribute or the HIGH-PRIORITY RELEASE attribute.
- the block command processing program 301 first invokes the block cache control program 302 and determines whether the object data is held in the block cache area 320 (hit/miss determination) (Step S5300).
- the block cache control program 302 can check whether the object data is held in the block cache area 320, with reference to the block cache information table 311.
- the block cache control program 302 In the case of a cache hit (YES at Step S5300), the block cache control program 302 returns the data to the command originator and updates the block cache information table 311 (Step S5307).
- the block command processing program 301 determines whether the command has designation of the NO CACHE attribute (Step S5301). If the NO CACHE attribute is designated (YES at Step S5301), the block command processing program 301 retrieves the data from the storage drives 109 (Step S5302) and returns the data to the command originator without storing it in the block cache area 320 (Step S5307).
- the block command processing program 301 invokes a later-described block cache free area allocating process in the block cache control program 302 and allocates a free area in the block cache area 320 (Step S5303).
- the block command processing program 301 invokes the block cache control program 302, retrieves the data from the storage drives 109 (Step S5304), stores the retrieved data in the block cache area 320 (Step S5305), updates the block cache information table 311 (Step S5306), and returns the data to the command originator (Step S5307).
- Fig. 15 illustrates an exemplary process flow of processing a block write command by the block command processing program 301. This process is executed upon receipt of a block command for a write.
- the block command processing program 301 is invoked with designation of the logical volume to be written and the logical address in the volume.
- the write command may be accompanied by attribute information, like a read command.
- the block command processing program 301 first invokes the block cache control program 302 and performs hit/miss determination on the block cache with reference to the block cache information table 311 (Step S5400). In the case of a cache miss (NO at Step S5400), the block command processing program 301 invokes the later-described block cache free area allocating process in the block cache control program 302, allocates a free area, and allocates the free area for the data (Step S5401).
- the block command processing program 301 In the case of a cache hit (YES at Step S5400), the block command processing program 301 skips this step to proceed to the next Step S5402.
- the block command processing program 301 invokes the block cache control program 302, writes the write data to the allocated area (Step S5402), and updates the block cache information table 311 (Step S5403). If attribute information has been attached, the block cache control program 302 includes this information in the block cache information table 311 (Step S5404).
- the block cache control program 302 returns a report of completion of write to the command originator (Step S5405); thereafter, the block cache control program 302 invoked by the block command processing program 301 writes the data to the storage drives 109 (Step S5406).
- this Step S5406 is not necessarily performed immediate after the completion report, but may be performed in a batch for a plurality of commands. As a result, efficient write to the drives can be achieved.
- Fig. 16 illustrates an exemplary process flow of allocating a free area in the block cache area 320 (a block cache free area allocating process) by the block cache control program 302.
- the block cache control program 302 determines whether a free area for storing the object data exists with reference to the block cache information table 311 (Step S5500), and if such an area exists (YES at Step S5500), the program 302 allocates the area (Step S5502) and ends. If such an area does not exist (NO at Step S5500), the block cache control program 302 releases an area (Step S5501), for example by deleting the oldest data (having the earliest last access time), to allocate the area (Step S5502).
- Fig. 17 illustrates a second exemplary process flow of the block cache free area allocating process by the block cache control program 302. The difference from Fig. 16 is that Steps S5503 and S5504 are added between Steps S5500 and S5501.
- the block cache control program 302 determines whether data assigned the HIGH-PRIORITY RELEASE attribute exists with reference to the block cache information table 311. If such data exists (YES at Step S5503), the block cache control program 302 deletes the oldest piece of data (having the earliest last access time) from the data (Step S5504). If such data does not exist (NO at Step S5503), the block cache control program proceeds to Step S5501.
- This example provides cooperation of two cache controls for files and blocks to achieve space-efficient cache control. Specifically, cooperation in cache control by the block processing program and the file processing program prevents the same data from being doubly cached, so that higher cache space efficiency is achieved.
- this example can select appropriate cache data to be replaced from the cache data of the block processing program and the cache data of the file processing program. This achieves high cache space efficiency to improve the performance, like in the case where the cache control is performed in accordance with a specific algorithm for the overall storage apparatus.
- An example described above caches data in the file cache area 220 and does not cache the data in the block cache area 320.
- Another example described above after storing the data in the block cache area 320, purges the data or preferentially discards the data by the block cache control using cache information.
- the CTL 100 may cache at least a part of the data already in the file cache area 220 into the block cache area 320, like the data of a block command from an external.
- Fig. 18 is an exemplary configuration of the block cache information table 311 in this example.
- the only difference from the block cache information table 311 of Example 1 shown in Fig. 7 is that the table 311 in this example includes an accessing host field 3115.
- the accessing host field 3115 stores information to identify whether the host accessing the data is an internal host or an external host.
- the information is a text of INTERNAL or EXTERNAL. If a plurality of internal/external hosts exist, numbers to individually identify them may be additionally included.
- the accessing host field 3115 contains a text of INTERNAL
- the attribute of the data is called internal attribute
- the accessing host field 3115 contains a text of EXTERNAL
- the attribute of the data is called external attribute.
- Fig. 19 illustrates an exemplary process flow of processing a block write command in this example.
- the only difference from Fig 15 is addition of Steps S5407 to S5409.
- the block cache control program 302 invoked by the block command processing program 301 determines whether the volume has been defined for an internal host (Step S5407). For example, not-shown volume information table has this information.
- the block cache control program 302 assigns the internal attribute to the cache data (Step S5408). If the result of the determination is negative (NO at Step S5407), the block cache control program 302 assigns the external attribute (Step S5409).
- the block cache control program 302 stores a text either INTERNAL or EXTERNAL, or a text additionally inclusive of a number to identify the host in a plurality of hosts in the accessing host field 3115 of the block cache information table 311.
- the block command issuing program 203 may attach information indicating an internal host to a write command to issue.
- an identifier indicating the accessing host may be included in the command itself or advised via another area in the communication area 402.
- Fig. 20 illustrates an exemplary process flow of allocating a block cache free area in this example.
- Step S5501 has been replaced by Steps S5506, S5507, and S5508.
- Step S5506 the block cache control program 302 determines whether the cache data having the internal attribute exists in the block cache area 320, with reference to the block cache information table 311.
- the block cache control program 302 releases the oldest data (having the earliest last access time) in the cache data having the internal attribute (Step S5507) and allocates a free area (Step S5502). If no cache data having the internal attribute exists (NO at Step S5506), the block cache control program 302 releases the oldest data in the data having the external attribute (Step S5508).
- Fig. 21 illustrates another exemplary process flow of allocating a block cache free area. Compared with Fig. 20, the difference is that Step S5506 has been replaced by Step S5509.
- the block cache control program 302 refers to the block cache information table 311 and compares a value obtained by deducting a predetermined value from the last access time of the oldest data having the internal attribute with the last access time of the oldest data having the external attribute.
- Step S5509 If the last access time of the oldest data having the external attribute is greater (later) (YES at Step S5509), the block cache control program 302 proceeds to Step S5507. If the last access time of the oldest data having the external attribute is smaller (earlier) (NO at Step S5509), the block cache control program 302 proceeds to Step S5508. In this example, if they are the same value, the block cache control program 302 proceeds to Step S5508, but it may be configured to proceed to either step.
- Fig. 22 illustrates yet another exemplary process flow of allocating a block cache free area. Compared with Fig. 20, the difference is that Steps S5510 and S5511 have been added between Steps S5506 and S5507.
- the block cache control program 302 compares the last access times between the oldest data having the internal attribute in the block cache area 320 and the oldest data having the internal attribute in the file cache area 220 in the same internal host.
- the file cache information table 211 includes an accessing host field indicating the accessing host of the entry, like the block cache information table 311 shown in Fig. 18.
- the block cache control program 302 can acquire information on the oldest block cache data having the internal attribute from the block cache information table 311 and information on the oldest file cache data in the same internal host from the file cache information table 211.
- Step S5510 the block cache control program 302 moves the oldest data having the internal attribute in the block cache area 320 to the file cache area 220 (Step S5511) and proceeds to Step S5507.
- the block cache control program 302 identifies the internal hosts with the internal host numbers in the accessing host field 3115 in the block cache information table 311 and performs the foregoing process on the individual file cache areas (file cache data) for the internal hosts.
- Fig. 22 is also effective if the original drawing is assumed to be Fig. 21, instead of Fig. 20, namely, if Step S5506 has been replaced by Step S5509.
- the block processing program is reported by the file processing program that the data belongs to an internal host. Consequently, the cache data of the external host is not unnecessarily pressurized and efficient cache control for the overall system can be achieved.
- This example manages information indicating accessing hosts in caching by the block processing program, so that the data to be preferentially in the cache can be retained in the cache area. As described with reference to Figs. 20 to 22, discarding data of the internal host prior to data of the external host can increase the cache usage efficiency in the storage apparatus 4.
- the block cache free area allocating processes in this example can be applied to the storage apparatuses having the configurations in the other examples and further, aside from the configurations of the other examples, can be applied to storage apparatuses, for example, a storage apparatus which does not perform cache control inclusive of cache layer determination.
- FIG. 23 illustrates an exemplary process flow of issuing a write command by the block command issuing program 203.
- the block command issuing program 203 determines whether the data is i-node (Step S5701); second, it determines whether the data is user data (Step S5700); and third, it determines whether the data is journal data (Step S5702). If the result of each determination is YES, the block command issuing program 203 proceeds to Step S5705, S5706, or S5707.
- not-shown volume information table has information to associate a volume and an address in the volume with the attribute of the data (any one kind of i-node, user data, and journal data).
- the block command issuing program 203 can determine the attribute of the object data from the volume and the address in the volume of the object data.
- the block command issuing program 203 sets USER DATA in the attribute information field of the block command at Step S5705, sets i-node at Step S5706, and JOURNAL at Step S5707. Furthermore, the block command issuing program 203 sets the internal attribute for the accessing host information (Step S5703) and issues a block command (Step S5704).
- the block cache information table 311 stores the value indicating which attribute the entry has, i-node, user data, or journal data, in the attribute information field 3113.
- one block may include i-node and user data together, or user data and journal data together.
- This example performs determinations in accordance with the priority level of caching, namely, in order of i-node, which is most likely to be requested to be retained in the cache, user data, and lastly journal data, which is least likely to be referred to again. Consequently, if at least a part of the data is data having a higher priority level, the data is given priority.
- the block command issuing program 203 may set a plurality of attributes such as "USER DATA, i-node" in the attribute information field of the block command.
- Fig. 24 illustrates an exemplary process of allocating a block cache free area in this example. The difference from Fig.16 is that Step S5501 has been replaced by Steps 5515 to S5519.
- the block cache control program 302 refers to the block cache information table 311 and determines whether cache data (entry) having the attribute information (the value in the attribute information field 3113) of JOURNAL exists (Step S5515). If such data exists (YES at Step S5515), the program 302 releases the oldest data having the JOURNAL attribute (Step S5516).
- the block cache control program 302 determines whether cache data (entry) having the USER DATA attribute exists (Step S5517). If such data exists (YES at S5517), the program 302 releases the oldest data having the USER DATA attribute (Step S5518). If such data does not exist either (NO at S5517), the block cache control program 302 releases data having the i-node attribute (S5519).
- This example manages the kinds of information for the file processing program in the cache for the block processing program, so that information to be preferentially in the cache can be retained in the cache.
- i-node which is more likely to be referred to again and has great effect of remaining in the cache, is preferentially retained in the cache and conversely, data having the journal attribute, which is less likely to be referred to again, is preferentially released.
- This configuration increases the cache usage efficiency in the system.
- the block cache free area allocating process in this example can be applied to the storage apparatuses having the configurations in the other examples and, aside from the configurations of the other examples, can be applied to storage apparatuses.
- Fig. 25 illustrates an exemplary memory configuration in this example.
- This configuration includes a virtual server memory 13 in addition to the configuration of Fig. 2.
- Fig. 26 is an exemplary configuration of the virtual server memory 13, which has a virtual server text area 900 including a block command issuing program 901.
- a virtual server is configured because a user wants to operate some application.
- the storage apparatus may have a logical volume including the data accessed by this application.
- the virtual server can be treated as an internal host, like the file processing program in Examples 1, 2, or 3. That is to say, the block processing program assigns the INTERNAL attribute for the accessing host information on the stored data, based on the target of definition of the volume or the attached information of the block command, as described in Example 2.
- the virtual server is distinguished from the file processing program.
- the number of virtual servers may be plural.
- information indicating a virtual server and a number such as INTERNAL SERVER1
- INTERNAL SERVER1 may be assigned to distinguish the virtual server from the others.
- Fig. 27 is an exemplary configuration of the block processing memory 11 in this example.
- the difference from Fig. 3 is that a block-file cache space coordination program 303 is added to the block processing text area 300.
- the cache space coordination program 303 is periodically executed to coordinate the balance between the file cache area 220 and the block cache area 320. This program provides appropriate control of the cache space for the both areas to increase the hit rate.
- Fig. 28 is an exemplary process flow of changing space allocation by the cache space coordination program 303.
- the cache space coordination program 303 determines whether the difference obtained by deducting the file cache earliest last access time from the block cache earliest last access time is greater than a predetermined threshold value (Step S5800). Specifically, the cache space coordination program 303 performs the determination by referring to the cache cooperation information table 403 for file cache earliest last access time field 4030 and the block cache earliest last access time field 4032.
- the cache space coordination program 303 determines the size of the space to be shifted from the file cache area 220 to the block cache area 320 (Step S5801).
- the size to be shifted may be a fixed size or a size calculated by multiplying the difference between the earliest last access times by a given coefficient.
- the cache space coordination program 303 determines whether the difference obtained by deducting the block cache earliest last access time from the file cache earliest last access time is greater than a predetermined threshold value (Step S5802).
- the cache space coordination program 303 determines the size of the space to be shifted from the block cache area 320 to the file cache area 220 (Step S5803). If the result of the determination at Step S5802 is NO, the cache space coordination program 303 terminates its processing. After the determination of the size to be shifted at Step S5801 or S5803, the cache space coordination program 303 proceeds to Step S5804 and changes the space allocation.
- the cache space coordination program 303 allocates free areas in the size to be shifted in the file cache area 220 by the free area allocating process by the file cache control program 202 and adds them to the block cache area 320.
- Some management method of the file processing memory 10 and the block processing memory 11 may not allow the change of the allocation only by specific size of continuous space units. In such a case, relocate the cache data in the cache area so that the allocated free areas will be physically continuous areas (which is equivalent to exchange the free areas with areas holding cache data) to obtain a unit size enough to allow the change of the allocation.
- the block cache free area allocating process in this example can be applied to the storage apparatuses having the configurations in the other examples and further, aside from the configurations of the other examples, can be applied to storage apparatuses.
- the above-described configurations, functions, processing modules, and means for processing, for all or a part of them, may be implemented by hardware: for example, by designing integrated circuits.
- the information of programs, tables, and files to implement the functions may be stored in a storage device such as a non-volatile semiconductor memory, a hard disk drive, or an SSD (Solid State Drive), or a computer-readable non-transitory data storage medium such as an IC card, an SD card, or a DVD.
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)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
Claims (15)
- A storage apparatus for receiving block I/O commands and file I/O commands, the storage apparatus comprising:
a plurality of storage devices for storing data of block I/O commands and file I/O commands; and
a controller including a block cache area and a file cache area,
wherein the controller creates block I/O commands from file I/O commands and accesses the plurality of storage devices in accordance with the created block I/O commands;
wherein the file cache area caches data of file I/O commands;
wherein the block cache area caches data of block I/O commands;
wherein, in a case where the file cache area is lacking an area to cache first data of a received first file I/O command, the controller chooses one of a first cache method that newly creates a free area in the file cache area to cache the first data in the file cache area and a second cache method that caches the first data in the block cache area without caching the first data in the file cache area. - A storage apparatus according to claim 1, wherein the controller chooses the second cache method in a case where a free area in the block cache area can cache the first data.
- A storage apparatus according to claim 1,
wherein the controller refers to access time information on data held in the file cache area and access time information on data held in the block cache area;
wherein the controller chooses the first cache method in a case where the access time information on the file cache area indicates an access time earlier than the access time information on the block cache area; and
wherein the controller chooses the second cache method in a case where the access time information on the block cache area indicates an access time earlier than the access time information on the file cache area. - A storage apparatus according to claim 3, wherein the access time information is either one of an earliest last access time and an average value of last access times in each of the file cache area and the block cache area.
- A storage apparatus according to claim 1, wherein the controller caches the first data in the file cache area without caching the first data in the block cache area in the first cache method.
- A storage apparatus according to claim 1, wherein, after storing the first data in the block cache area, the controller discards the first data from the block cache area with a highest priority of discarding in the first cache method.
- A storage apparatus according to claim 6, wherein, in the discarding the first data from the block cache area with the highest priority of discarding, the controller purges the first data after storing the first data in the block cache area or assigns the highest priority of discarding to the first data in the management information for the block cache area.
- A storage apparatus according to claim 1, wherein the controller includes data indicating a cache control method for the first data in the block I/O command created from the first file I/O command.
- A storage apparatus according to claim 1, wherein the controller discards data of block I/O commands converted from file I/O commands from the block cache area prior to data of block I/O commands received from an external.
- A storage apparatus according to claim 1, wherein the controller manages kinds of data of the block I/O commands converted from the file I/O commands and determines priority levels of discarding from the block cache area depending on the kinds of data.
- A storage apparatus according to claim 1, wherein the controller shifts a cache area between the file cache area and the block cache area.
- A control method for a storage apparatus for receiving block I/O commands and file I/O commands, the control method comprising the steps of:
creating a block I/O command from a file I/O command and accessing a storage device in accordance with the created block I/O command;
caching data of file I/O commands in a file cache area;
caching data of block I/O commands in a block cache area; and
choosing, in a case where the file cache area is lacking an area to cache first data of a received first file I/O command, one of a first cache method that newly creates a free area in the file cache area to cache the first data in the file cache area and a second cache method that caches the first data in the block cache area without caching the first data in the file cache area. - A control method for the storage apparatus according to claim 12, wherein, in a case where a free area in the block cache area can cache the first data, the choosing step chooses the second cache method.
- A control method for the storage apparatus according to claim 12, wherein the choosing step comprises:
referring to access time information on data held in the file cache area and access time information on data held in the block cache area;
choosing the first cache method in a case where the access time information on the file cache area indicates an access time earlier than the access time information on the block cache area,; and
choosing the second cache method in a case where the access time information on the block cache area indicates an access time earlier than the access time information on the file cache area. - A control method for the storage apparatus according to claim 12, wherein the first cache method caches the first data in the file cache area without caching the first data in the block cache area.
Priority Applications (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/JP2012/007303 WO2014076735A1 (en) | 2012-11-14 | 2012-11-14 | Storage apparatus and control method for storage apparatus |
| JP2015527067A JP5938528B2 (en) | 2012-11-14 | 2012-11-14 | Storage device and storage device control method |
| US13/701,656 US8984235B2 (en) | 2012-11-14 | 2012-11-14 | Storage apparatus and control method for storage apparatus |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/JP2012/007303 WO2014076735A1 (en) | 2012-11-14 | 2012-11-14 | Storage apparatus and control method for storage apparatus |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2014076735A1 true WO2014076735A1 (en) | 2014-05-22 |
Family
ID=47278935
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/JP2012/007303 Ceased WO2014076735A1 (en) | 2012-11-14 | 2012-11-14 | Storage apparatus and control method for storage apparatus |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US8984235B2 (en) |
| JP (1) | JP5938528B2 (en) |
| WO (1) | WO2014076735A1 (en) |
Families Citing this family (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10095431B2 (en) * | 2015-06-18 | 2018-10-09 | John Edward Benkert | Device controller and method of enforcing time-based sector level security |
| KR102610846B1 (en) * | 2016-05-13 | 2023-12-07 | 한국전자통신연구원 | Apparatus and method for distributed storage having a high performance |
| US10318423B2 (en) * | 2016-12-14 | 2019-06-11 | Macronix International Co., Ltd. | Methods and systems for managing physical information of memory units in a memory device |
| US10817220B2 (en) | 2019-01-31 | 2020-10-27 | EMC IP Holding Company LLC | Sharing processor cores in a multi-threading block i/o request processing data storage system |
| CN112491963B (en) * | 2020-11-03 | 2023-11-24 | 泰康保险集团股份有限公司 | Data transmission method, device, equipment and readable storage medium |
Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20050172043A1 (en) | 2004-01-29 | 2005-08-04 | Yusuke Nonaka | Storage system having a plurality of interfaces |
Family Cites Families (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2002108704A (en) * | 2000-10-02 | 2002-04-12 | Nec Corp | Disk cache control system |
| JP2003216491A (en) * | 2002-01-23 | 2003-07-31 | Hitachi Ltd | Hierarchical cache control method |
| US8214596B2 (en) * | 2008-09-30 | 2012-07-03 | Intel Corporation | Apparatus and method for segmented cache utilization |
-
2012
- 2012-11-14 US US13/701,656 patent/US8984235B2/en not_active Expired - Fee Related
- 2012-11-14 WO PCT/JP2012/007303 patent/WO2014076735A1/en not_active Ceased
- 2012-11-14 JP JP2015527067A patent/JP5938528B2/en not_active Expired - Fee Related
Patent Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20050172043A1 (en) | 2004-01-29 | 2005-08-04 | Yusuke Nonaka | Storage system having a plurality of interfaces |
Also Published As
| Publication number | Publication date |
|---|---|
| US8984235B2 (en) | 2015-03-17 |
| US20140281244A1 (en) | 2014-09-18 |
| JP2015526818A (en) | 2015-09-10 |
| JP5938528B2 (en) | 2016-06-22 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11372544B2 (en) | Write type based crediting for block level write throttling to control impact to read input/output operations | |
| US10082972B2 (en) | Method and system for pooling, partitioning, and sharing network storage resources | |
| US8069191B2 (en) | Method, an apparatus and a system for managing a snapshot storage pool | |
| JP5771280B2 (en) | Computer system and storage management method | |
| US10977124B2 (en) | Distributed storage system, data storage method, and software program | |
| US9086820B2 (en) | System and methods for managing storage space allocation | |
| US9454317B2 (en) | Tiered storage system, storage controller and method of substituting data transfer between tiers | |
| US20170212691A1 (en) | Block storage device | |
| EP2302500A2 (en) | Application and tier configuration management in dynamic page realloction storage system | |
| US7797487B2 (en) | Command queue loading | |
| US20150154216A1 (en) | System and methods for prioritizing data in a cache | |
| US7694103B1 (en) | Efficient use of memory and accessing of stored records | |
| US9635123B2 (en) | Computer system, and arrangement of data control method | |
| JP5531091B2 (en) | Computer system and load equalization control method thereof | |
| WO2013121460A1 (en) | File server apparatus, information system, and method for controlling file server apparatus | |
| JP5944502B2 (en) | Computer system and control method | |
| JP2015517697A (en) | Storage system and storage control method using storage area based on secondary storage as cache area | |
| US9361033B2 (en) | Compound storage system and storage control method | |
| WO2012164627A1 (en) | Information storage system, snapshot acquisition method, and data storage medium | |
| WO2014076735A1 (en) | Storage apparatus and control method for storage apparatus | |
| JP4175083B2 (en) | Storage device management computer and program | |
| US20140304226A1 (en) | Storage system | |
| US10089125B2 (en) | Virtual machines accessing file data, object data, and block data | |
| US8478936B1 (en) | Spin down of storage resources in an object addressable storage system | |
| US9606938B1 (en) | Managing caches in storage systems |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| WWE | Wipo information: entry into national phase |
Ref document number: 13701656 Country of ref document: US |
|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 12795089 Country of ref document: EP Kind code of ref document: A1 |
|
| ENP | Entry into the national phase |
Ref document number: 2015527067 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: 12795089 Country of ref document: EP Kind code of ref document: A1 |