WO2018051446A1 - オプショナルなデータ処理機能を有するストレージシステムを含んだ計算機システム、および、記憶制御方法 - Google Patents

オプショナルなデータ処理機能を有するストレージシステムを含んだ計算機システム、および、記憶制御方法 Download PDF

Info

Publication number
WO2018051446A1
WO2018051446A1 PCT/JP2016/077209 JP2016077209W WO2018051446A1 WO 2018051446 A1 WO2018051446 A1 WO 2018051446A1 JP 2016077209 W JP2016077209 W JP 2016077209W WO 2018051446 A1 WO2018051446 A1 WO 2018051446A1
Authority
WO
WIPO (PCT)
Prior art keywords
hint
command
data
information
data processing
Prior art date
Application number
PCT/JP2016/077209
Other languages
English (en)
French (fr)
Inventor
昭夫 中嶋
智大 川口
Original Assignee
株式会社日立製作所
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 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to PCT/JP2016/077209 priority Critical patent/WO2018051446A1/ja
Publication of WO2018051446A1 publication Critical patent/WO2018051446A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers

Definitions

  • the present invention generally relates to storage control, and more particularly to storage control of a storage system having an optional data processing function.
  • An optional data processing function means a data processing function in which execution / non-execution is selective.
  • An example of an optional data processing function is a data amount reduction function.
  • at least one of a compression function and a deduplication function is employed as the data amount reduction function.
  • Patent Document 1 discloses a technique in which a storage determines whether or not to perform deduplication on a file by referring to the file type and header of the file to be stored.
  • the processing load of data amount reduction processing can affect storage I / O (Input / Output) performance. For this reason, it is preferable to avoid performing the data amount reduction process even on data having a low data capacity reduction effect.
  • background processing such as garbage collection processing for deduplication is performed asynchronously with the host I / O (I / O according to an I / O request from the host).
  • asynchronous processing processing performed asynchronously with host I / O
  • Patent Document 1 it can be expected to avoid performing deduplication on data having a low deduplication effect.
  • This processing load may reduce I / O performance.
  • the storage is a so-called block storage, a high load of scanning the write target data in order to specify the reference target data is generated, so that the possibility of reducing the I / O performance increases.
  • This type of problem is not limited to the data amount reduction function, but may be another type of optional data processing function, for example, a data processing function for processing data to be written with a specific algorithm.
  • the computer system accepts an I / O command associated with I / O characteristic information that is information representing the I / O characteristic.
  • the computer system controls an optional data processing function for executing predetermined data processing based on I / O characteristic information associated with the received I / O command.
  • Optional data processing functions can be controlled while reducing the decrease in I / O performance.
  • FIG. 1 is a diagram illustrating a configuration of an information system according to a first embodiment and an overview of the first embodiment. It is the figure which showed the internal structure of the host. It is the figure which showed the internal structure of the storage system. It is the figure which showed the structure of the I / O hint profile table. It is the figure which showed the structure of the pool table. It is the figure which showed the structure of the allocation table.
  • FIG. 3 is a diagram illustrating a correspondence relationship between a virtual volume and a capacity pool. It is the figure which showed the structure of the I / O hint rule table. It is the figure which showed an example of the format of hint information. It is a ladder chart in which a host notifies hint information to a storage system.
  • FIG. 10 is a diagram illustrating a configuration of an information system according to a third embodiment.
  • the “interface part” includes one or more interfaces.
  • the one or more interfaces may be one or more similar interface devices (for example, one or more NIC (Network Interface Card)) or two or more different interface devices (for example, NIC and HBA (Host Bus Adapter)). There may be.
  • NIC Network Interface Card
  • HBA Home Bus Adapter
  • the “storage unit” includes one or more memories.
  • the at least one memory may be a volatile memory or a non-volatile memory.
  • the storage unit is mainly used during processing by the processor unit.
  • the “processor unit” includes one or more processors.
  • the at least one processor is typically a CPU (Central Processing Unit).
  • the processor may include a hardware circuit that performs part or all of the processing.
  • information may be described using an expression such as “xxx table”, but the information may be expressed in any data structure. That is, in order to show that the information does not depend on the data structure, the “xxx table” can be referred to as “xxx information”.
  • the configuration of each table is an example, and one table may be divided into two or more tables, or all or part of the two or more tables may be a single table. Good.
  • the “computer system” may be at least one of a host system and a storage system.
  • the “host system” may be one or more physical host computers (for example, a cluster of host computers), and may include at least one virtual host computer (for example, a VM (Virtual Machine)).
  • the “storage system” may be one or more physical storage devices, and may include at least one virtual storage device (for example, SDS (Software Defined Storage)).
  • PDEV means a physical storage device (for example, an auxiliary storage device), and is typically a nonvolatile storage device.
  • the PDEV may be, for example, an HDD (Hard Disk Drive) or an SSD (Solid State Drive).
  • HDD Hard Disk Drive
  • SSD Solid State Drive
  • Different types of PDEVs may be mixed in a computer system (for example, a storage system).
  • RAID is an abbreviation for Redundant “Array” of “Independent” (or “Inexpensive)” Disks.
  • the RAID group is composed of a plurality of PDEVs (typically the same kind of PDEVs), and stores data according to the RAID level associated with the RAID group.
  • the RAID group may be referred to as a parity group.
  • FIG. 1 is a diagram illustrating a configuration of an information system according to the first embodiment and an overview of the first embodiment.
  • the information system has a host system (hereinafter referred to as a host) 1 and a storage system 2.
  • a host 1 and a storage system 2 are connected to each other via a network 3. Communication is performed via the network 3 using a protocol such as Fiber Channel SAN (Storage Area Network) or iSCSI IP SAN, or a file protocol such as NFS or CIFS.
  • the host 1 and the storage system 2 may be directly connected instead of via the network 3.
  • the host 1 and the storage system 2 are connected via the management console 4 and the network 3.
  • An administrator 5 (an administrator for at least one of the host 1 and the storage system 2) manages the host 1 and the storage system 2 via the management console 4.
  • the management console 4 may be an example of an input / output console for the host 1 and the storage system 2.
  • the network 3 may be a single communication network, a first communication network (for example, SAN) that connects the host 1 and the storage system 2, and a second communication network that connects the host 1, the storage system 2, and the management console 4. It may be a plurality of communication networks including (for example, LAN (Local Area Network)).
  • the host 1 includes an application program 11 and an I / O hint generator program 12.
  • the storage system 2 includes an I / O hint processing program 21, a data amount reduction program 22, and a capacity pool 23.
  • the data amount reduction program 22 may be on-the-fly (inline) operation or post-process operation.
  • the data amount reduction program 22 is an example of a data amount reduction function, and is one or both of the deduplication function and the compression function.
  • the data amount reduction function may be a function realized by a hardware circuit instead of or in addition to the function realized by executing the program by the processor unit. For example, compression and decompression are performed by a compression function, and the compression function may be a hardware circuit such as an ASIC (Application Specific Integrated Circuit) or an FPGA (Field-Programmable Gate Array).
  • ASIC Application Specific Integrated Circuit
  • FPGA Field-Programmable Gate Array
  • the capacity pool 23 is a logical storage space, and may be one or more logical volumes, for example.
  • the capacity pool 23 may be a virtual capacity pool that is a capacity pool associated with a virtual volume (see FIG. 7) that is a virtual logical volume according to Thin Provisioning.
  • the virtual volume is composed of a plurality of segments (virtual segments) which are a plurality of virtual storage areas.
  • the virtual capacity pool is composed of a plurality of segments (physical segments) which are a plurality of physical storage areas. A segment in the virtual capacity pool is assigned to a segment in the virtual volume.
  • the capacity pool 23 includes a reduced data area 24 that is an area for storing data that has been reduced in data volume via the data volume reduction program 22, and plain data that is an area in which data that does not pass through the data volume reduction program 22 is stored. Region 25.
  • the I / O hint is associated with the write I / O command from the host 1 to the storage system 2 by the I / O hint generator program 12.
  • the “I / O hint” may be hint information itself or hint # that is an identification number of hint information.
  • the I / O hint is embedded in the write I / O command, but may be associated with the write I / O command by some method. For example, a related command that is a command related to the write I / O command is issued before or after the write I / O command, and an I / O hint may be embedded in the related command.
  • Hint information may be associated in advance by the administrator 5 (or the user of the host 1) in units of at least one of each application program 11 and each logical volume provided to the host 1.
  • the I / O hint processing program 21 refers to the hint information specified from the I / O hint in the write I / O command in order to determine whether to reduce or execute the data amount.
  • Data to be written according to the write I / O command (for example, data including file data and file metadata) is finally written in the capacity pool 23 (PDEV), but both the I / O hint and hint information are There is no need to finally write to the capacity pool 23.
  • the hint information is information including characteristics relating to an I / O pattern, for example, information including at least one of information indicating sequential I / O or random I / O and information indicating I / O frequency. is there.
  • the hint information for example, information standardized by a predetermined organization or the like (for example, Logical Block Markup Descriptor in SCSI) may be employed.
  • the I / O hint generator program 12 of the host 1 embeds an I / O hint in a write I / O command issued by the application program 11.
  • the storage system 2 receives the write I / O command 6 including the I / O hint 7 from the host 1 and stores the write target data according to the write I / O command in the cache memory area.
  • the cache memory area is an area provided in a memory 302 (see FIG. 3) described later.
  • the cache memory area is an area in which data input / output to / from the capacity pool 23 is temporarily stored.
  • the I / O hint processing program 21 determines whether there is a data amount reduction effect based on the hint information specified from the I / O hint in the received write I / O command.
  • the I / O hint may be received before the write I / O command is received, or may be received after the write I / O command is received.
  • the “determination of whether or not there is a data amount reduction effect” is an example of determining whether or not the data amount reduction effect is high, in other words, an example of determining whether or not to execute an optional data processing function.
  • the write target data is stored in the reduced data area 24 via the data amount reduction program 22 and the write target data is stored in the capacity pool 23. Proceed with the writing process. As a result, the write target data in the cache memory area is stored in the reduced data area 24.
  • the I / O hint processing program 21 determines that there is no effect of reducing the data amount, Assuming that the write target data is stored in the plane data area 25, the process of writing the write target data into the capacity pool 23 is advanced. As a result, the write target data in the cache memory area is stored in the plane data area 25.
  • the presence / absence of a data amount reduction effect is determined by referring to hint information specified from an I / O hint that is a part of a write I / O command, in other words, execution of data amount reduction is performed.
  • / Non-execution via / non-via data amount reduction program 22 is determined. Since it is only necessary to refer to a part of the command and there is no need to refer to the contents of the write target data, the influence on the write I / O performance is low. This is particularly useful when the storage system 2 is a block storage system (a storage system that receives and stores block data as write target data).
  • the I / O hint is specified by the host 1. For this reason, the accuracy of the execution / non-execution determination of the data amount reduction is high. Specifically, for example, even if at least one of the application program and the write destination logical volume remains the same, depending on the convenience of the host 1 It can be expected to change execution / non-execution of data reduction.
  • the hint information set by the administrator 5 is associated with at least one of the application program unit and the logical volume unit. Any logical volume is associated with the application program 11.
  • hint information related to at least one of the write source application program and the write destination logical volume Is done. For this reason, it can be expected that the accuracy of determination of execution / non-execution of data amount reduction is higher. For example, even if the hint # is the same, the execution / non-execution of data amount reduction may be different if the write source application program or the write destination logical volume is different.
  • the capacity pool 23 includes a reduction data area 24 in which data that has passed through the data amount reduction program 22 is stored, and a plain data area 25 in which data that has not passed through the data amount reduction program 22 is stored. including. Even in the case of data via the data amount reduction program 22, data that is not reduced is stored in the reduced data area 24 if there is no data amount reduction effect. For this reason, it can be determined whether the data is in the area 24 or 25 and whether the data is via the data amount reduction program 22 or not. In other words, the storage system 2 can manage whether the data stored in the capacity pool 23 is data that has passed or not passed through the data amount reduction program 22 without having to maintain separate management information.
  • FIG. 2 is a diagram showing the internal configuration of the host 1.
  • the host 1 has a memory 202, a PDEV 205, an NI / F 201, a PI / F 204, and a CPU 203 connected to them.
  • the NI-F 201 is an interface device for communicating via the network 3.
  • the P-I / F 204 is an interface device for communicating with the PDEV 205.
  • the memory 202 stores programs such as the application program 11 and the I / O hint generator program 12, and tables such as the I / O hint profile table 40.
  • the application program 11 issues an I / O command specifying a virtual volume, which will be described later, which is an example of a logical volume provided to the host 1.
  • the I / O hint generator program 12 embeds an I / O hint in at least a write I / O command among the issued I / O commands. There may be no I / O hint generator program 12, and the application program 11 may embed an I / O hint in a write I / O command.
  • the I / O hint profile table 40 holds an I / O hint profile that is an example of information related to an I / O hint.
  • FIG. 3 is a diagram showing the internal configuration of the storage system 2.
  • the storage system 2 includes a plurality of PDEVs 305 including one or more types of PDEVs, and a storage controller 310 connected to the PDEVs 305.
  • a plurality of PDEVs 305 may constitute one or more RAID groups.
  • the storage controller 310 includes a memory 302, an NI / F 301, a PI / F 304, and a CPU 303 connected thereto.
  • the memory 302 includes programs such as the I / O program 20, the I / O hint processing program 21, and the data amount reduction program 22, and tables such as the pool table 50, the allocation table 60, and the I / O hint rule table 70.
  • the I / O program 20 processes an I / O command from the host 1.
  • the I / O hint processing program 21 processes an I / O hint embedded in an I / O command from the host 1.
  • the data amount reduction program 22 performs data amount reduction such as compression and deduplication.
  • the pool table 50 holds information regarding the capacity pool 23.
  • the allocation table 60 holds information representing the mapping relationship between the segments in the capacity pool 23 and the segments in the virtual volume.
  • the I / O hint rule table 70 holds information regarding I / O hint rules.
  • the memory 302 includes a cache memory area as described above.
  • the I / O program 20 temporarily stores I / O data for the capacity pool 23 (PDEV 305) in the cache memory area.
  • the data amount reduction function may be implemented by hardware, but in the present embodiment, it is implemented by software such as the data amount reduction program 22.
  • the NI / F 301 is an interface device for communicating via the network 3.
  • the NI / F 301 communicates with a protocol such as FiberFiChannel SAN, iSCSI SAN, NFS, or CIFS.
  • the PI / F 304 is an interface device for communicating with the PDEV 305.
  • the PI / F 304 communicates with a protocol such as SAS (Serial Attached SCSI), SATA (Serial Advanced Technology Attachment), NVM Express (TM), or TCP / IP.
  • SAS Serial Attached SCSI
  • SATA Serial Advanced Technology Attachment
  • TM NVM Express
  • TCP / IP TCP / IP
  • PDEV types for example, high-speed SAS HDD (Hard Disk Drive), low-speed SAS HDD, SATA HDD, SSD (Solid State Drive), and a data amount reduction function (for example, compression function)
  • FMD Flash Memory Drive
  • the flash memory used for both SSD and FMD is an example of a non-volatile memory
  • non-volatile memories include cells such as SLC (Single Level Cell), MLC (Multiple Level Cell), and TLC (Triple Level Cell).
  • a memory having a different number of storable bits may be used, or a memory having a different upper limit of the rewrite amount may be used.
  • the external storage 330 may be under the storage system 2.
  • the external storage 330 may be a storage system connected via a network such as a SAN, or may be a cloud storage in a data center connected via a network.
  • Such an external storage 330 may also be one of the PDEV types.
  • the capacity pool 23 is configured based on at least one of the PDEV types. That is, the capacity pool 23 is configured based on at least one of the PDEV 305 and the external storage 330.
  • the external storage 330 may also be handled as one of the PDEVs.
  • FIG. 4 shows the configuration of the I / O hint profile table 40.
  • the I / O hint profile table 40 stores hint # 41 and hint information 42 for each hint information.
  • the hint # 41 is an identification number of hint information.
  • the hint information 42 may be hint information itself or a link to hint information.
  • the hint information 42 is the hint information itself.
  • An entry including a set of hint # 41 and hint information 42 may be set, for example, for each data type or I / O accessed by the application program 11. An example of the format of hint information will be described later with reference to FIG.
  • the application program 11 or the administrator 5 may register information in the I / O hint profile table 40.
  • the application program 11 or the administrator 5 performs I / O on the type of data accessed by the application program 11 and the access range (for example, an LBA (Logical Block Address) range or a part of a file extent).
  • Entries in the hint profile table 40 can be associated.
  • an entry including a set of data ID 43 and hint # 44 is employed.
  • the data ID 43 indicates one or a combination of the identification number of the application program 11 and the data access range.
  • Hint # 44 is an identification number of hint information, similar to hint # 41.
  • the hint # 44 corresponding to the application program 11 (the type of data to be accessed) and the access range can be specified, and matches the hint # 44.
  • the hint # 41 can be specified, and the hint information 42 corresponding to the hint # 41 can be specified.
  • the DBMS manages, as object types, a data object that stores user data, an index object that speeds up search, a light log object that guarantees consistency of user data in the event of a failure, and the like.
  • the hint information when the DBMS performs I / O access to each object or a part of the object, the hint # 44 related to the data ID 43 and the hint information corresponding to the hint # 44 (static Information).
  • the DBMS administrator registers hint information corresponding to a workload such as batch processing in the I / O hint profile table 40.
  • the DBMS recognizes the change in the workload by the information from the above-mentioned administrator, and associates it with the corresponding data ID 43 when performing I / O access to each object or a part of the object. Change hint # 44.
  • the hint information can be dynamically changed following the change in the workload.
  • the DBMS log is a write-once type write of a continuous area, and new data is overwritten on old data that is no longer needed after rotation. Since a log is used for a DBMS rollback or the like in the event of a failure, each log entry includes information such as a DBMS processing number. For this reason, for example, even if deduplication is performed, the data including the process number does not match and there is no deduplication effect.
  • the DBMS data area may be initialized to zero for future transaction writing (zero data with all bits zero may be written), and this initialization operation is supported. It is desirable to apply compression to the data to be processed (zero data).
  • the data amount reduction effect may change statically or dynamically.
  • hint information for making the above-described determination with respect to an I / O command (at least a write I / O command of a write I / O command and a read I / O command) from the host 1 is provided.
  • Such cooperation between the application program 11 and the storage system 2 enables the storage system 2 to determine whether the data amount reduction is valid (executed) / invalidated (non-executed) in units of I / O commands.
  • the host 1 may already encrypt the data.
  • the write I / O command is associated with the storage system 2 by associating the I / O hint corresponding to the hint information indicating that the write target data is encrypted. Data volume reduction can be made non-executable.
  • FIG. 5 shows the configuration of the pool table 50.
  • the pool table 50 stores pool # 51, tier # 52, PDEV type 53, capacity 54, profile 55, and function 56 for each tier in the capacity pool 23. There is one or more tiers # 52 for one pool # 51. One PDEV type 53 corresponds to one tier # 52.
  • Pool # 51 is an identification number of the capacity pool 23.
  • Tier # is the identification number of the tier.
  • the PDEV type 53 is information representing the PDEV type described above.
  • the capacity 54 represents the logical capacity of the corresponding tier.
  • data redundancy techniques such as RAID, Erasure Coding, and triple copy may be applied for data protection.
  • Profile 55 is information representing a profile such as the performance of the corresponding tier.
  • the profile 55 is based on information such as PDEV type, applied data redundancy technology, PDEV capacity, FM (flash memory) life, FM spare area (Over Provisioning ⁇ ratio), number of bits per FM cell to be used, etc. For example, it is registered by a program of the storage system 2 or a storage administrator.
  • the function 56 indicates whether or not the PDEV 305 (or the external storage 330) according to the PDEV type that is the basis of the corresponding tier has a data amount reduction function.
  • the storage system 2 can query the PDEV 305 and the external storage 330 to identify the presence / absence of the data amount reduction function, and register the identified information as the function 56.
  • the data amount reduction function is provided, at least one of “Compress” meaning the compression function and “Deduplication” meaning the deduplication function is registered as the function 56.
  • FIG. 6 shows the configuration of the allocation table 60.
  • the allocation table 60 holds an LU ## 61, a virtual segment # 62, an allocation flag 63, a physical segment # 64, a processing flag 65, and a hint rule # 66 for each virtual segment.
  • LU # 61 is a virtual volume identification number and represents a number recognized by the host 1 (a virtual volume is an example of a logical volume provided to the host 1).
  • Virtual segment # 62 is the identification number of the segment of the virtual volume.
  • the allocation flag 63 indicates whether the virtual segment is allocated to the physical segment.
  • the physical segment # 64 is an identification number of an allocation destination physical segment of the virtual segment, specifically, a pool # of the capacity pool having the allocation destination physical segment, a tier # of the tier having the allocation destination physical segment, and the allocation destination physical This is a combination of segment # of segments.
  • the processing flag 65 indicates whether or not the data segment is a virtual segment to which data amount reduction is applied. For example, when compression is performed on data written to a virtual segment, the processing flag 65 is “Yes-Comp”. When deduplication is executed for data written to the virtual segment, the processing flag 65 is “Yes-Dedup.”. When data amount reduction is not executed for the data written to the virtual segment, the processing flag 65 is “No”.
  • Hint rule # 66 is an identification number of the hint rule. The hint rule will be described later with reference to FIG.
  • FIG. 6 illustrates the effectiveness of the data amount reduction function
  • the present invention can also be applied to an optional data processing function other than the data amount reduction function.
  • / Processing flag 65 is determined by determining whether or not there is an effect on a function that processes heavy data that has an effect on the performance of O and the like (that is, a data processing function execution target area (virtual segment)) and a non-execution target area Can also be applied.
  • the hint information associated with the write I / O command was associated with the write I / O command issued before the write I / O command was issued. It may be different from the hint information. That is, the I / O hint associated with the write I / O command may be changed dynamically. When the I / O person embedded in the write I / O command is different from the hint information indicated by the processing flag 65 and hint rule # 66 associated with the write destination virtual segment according to the write I / O command.
  • the I / O hint processing program 21 includes a processing flag 65, a hint rule # 66, and At least one of the allocation destination tiers of the write destination virtual segment is dynamically changed. When such a change is made, data moves between tiers (between physical segments) within the storage system 2.
  • FIG. 7 is a diagram showing a correspondence relationship between the virtual volume 26 and the capacity pool 23.
  • the capacity pool 23 is composed of, for example, three tiers 1 to 3.
  • Tier 1 is composed of a plurality of physical segments based on one or more FMDs.
  • Tier 2 is composed of a plurality of physical segments based on one or more SSDs.
  • the tier 3 is composed of a plurality of physical segments based on one or more HDDs.
  • the virtual volume 26 is provided to the host 1 by the storage controller 310.
  • the host 1 mounts (recognizes) the virtual volume 26 and issues an I / O command specifying the virtual volume 26.
  • the storage controller 310 stores the write target data according to the write I / O command from the host 1 in the reduced data area 24 or the plain data area 25.
  • the storage controller 310 allocates an unallocated physical segment from the capacity pool 23 to the area 24 or 25 where the capacity is insufficient.
  • the areas 24 and 25 may be logical storage spaces between the virtual volume 26 and the capacity pool 23. Which physical segment belongs to which of the areas 24 and 25 is represented by, for example, the processing flag 65 corresponding to the physical segment to which the virtual segment is assigned.
  • FIG. 7 there are a data storage area 24 via the data amount reduction program 22 and a data storage area 25 not via the data amount reduction program 22.
  • the present invention is not limited to this configuration.
  • There may be an area for each type of data amount reduction for example, compression area, deduplication area, compression and deduplication area, data amount reduction non-execution area).
  • FIG. 8 shows the configuration of the I / O hint rule table 80.
  • the I / O hint rule table 80 has LU # 81 and one or more hint rules # 62 for each logical volume (virtual volume 26). For each of the one or more hint rules # 62, the I / O hint rule table 80 holds hint information 83, a tier position 84, and validity 85.
  • the LU # 81 is a logical volume identification number.
  • the hint rule # 62 is a hint rule identification number. According to FIG. 8, the hint rule is a combination of hint information 83, tier position 84, and effectiveness 85.
  • the hint information 83 is hint information itself (or a link to hint information).
  • the tier position 84 is the placement tier of data stored in the virtual segment associated with the hint rule including the tier position 84 (in other words, the tier including the physical segment to which the virtual segment is assigned). Information representing a profile.
  • the tier profile can be specified from the profile 55 of the pool table 50.
  • Effectiveness 85 represents the presence or absence of a data amount reduction effect. “No” means that neither compression nor deduplication has any effect. “Yes” means that both compression and deduplication effects are provided. “No-Compress” means that there is no compression effect, and “Yes-Compress” means that there is a compression effect. “No-Dedup.” Means that there is no deduplication effect, and “Yes--Dedup.” Means that there is a deduplication effect.
  • the hint rule # 81 has a correspondence relationship with the hint rule # 66 shown in FIG.
  • the hint information 83 is hint information set by the application program 11 or the administrator 5.
  • the hint information 83 may be information transmitted from the host 1 to the storage system 2 in advance by Mode Select or other means and registered in the table 80, or information registered by the administrator 5 via the management console 4. .
  • the I / O hint processing program 21 may interpret the hint information received from the host 1 and set the hint information 83, the tier position 84, and the validity 85 based on the interpretation result.
  • FIG. 9 shows an example of the format of hint information.
  • the hint information may be that in which another format is newly defined for Logical Block Markup Descriptor or a new field 99 is added to the spare area.
  • the host 1 can set SCSI mode page information for each logical volume (LU) of the storage system by using a mode select command.
  • the application program 11 uses this hint information as an optional data processing function (in this embodiment, a data amount reducing function, but instead of or in addition to other data such as a function for copying the same data from the host 1). Whether or not the validity of the processing function may be specified can be specified in the spare area 99.
  • Such hint information itself or hint # is embedded as an I / O hint in the write I / O command.
  • the I / O hint processing program 21 interprets the hint information specified from the I / O hint, and sets or sets the processing flag 65 corresponding to the write destination virtual segment based on the interpretation result. Can be updated.
  • Hint information indicating that a sequential write is frequently performed is associated with a write I / O command of an appending log to be rotated such as a DBMS transaction log.
  • the storage controller 310 identifies the write information, the storage controller 310 disables deduplication in segment units. As a result, it is not necessary to add data to the data to be overwritten and updated in the additional log, and as a result, it can be expected to eliminate the cause of occurrence of garbage collection.
  • Example 3 When the host 1 executes the copying process, hint information indicating copying is associated with the write I / O command. For write I / O commands associated with such hint information, the storage controller 310 can perform deduplication on the fly.
  • FIG. 10 is a ladder chart in which the host 1 notifies the storage system 2 of hint information. Instead of sending the hint information and pointer number list in advance, a method of storing the hint information in the command reserve area may be adopted.
  • the host 1 sets the I / O hint profile table 40 for each logical volume, and transmits the I / O hint profile table 40 for each logical volume to the storage system 2.
  • the I / O hint processing program 21 registers the information held in the I / O hint profile table 40 from the host 1 in the I / O hint rule table 80. For example, for the I / O hint profile table 40 corresponding to a certain logical volume, the LU # of that logical volume is registered as LU # 81. The hint # 41 and the hint information 42 in the I / O hint profile table 40 are registered as the hint rule # 82 and the hint information 83 for the LU ⁇ ⁇ # 81, respectively.
  • the host program 1 sends an I / O command from the application program 11 to the storage system 2.
  • the I / O command transmitted to the storage system 2 includes an I / O hint embedded by the I / O hint generator program 12.
  • the I / O hint is at least one of hint # 41 and hint information 42 in the I / O hint profile table 40 corresponding to LU # specified by the I / O command.
  • the I / O command may be any of a write I / O command, a read I / O command, an Unmap / Trim command for releasing a data area, a Pre / fetch / Synchronization / Cache command for changing an attribute of the data area, and the like.
  • the storage system 2 receives the I / O command in S1003.
  • the I / O program 20 returns a response to the I / O command in S1003 to the host 1.
  • step S1007 the host 1 receives the response in step S1006 and ends the I / O command in step S1003.
  • S1003 to S1007 may be performed each time an I / O command is issued.
  • FIG. 11 is a flowchart of the allocation process (S1005 in FIG. 10).
  • This process may be performed on a segment basis. It should be noted that the processing order for determining the allocation and determining the effectiveness of the data amount reduction function may be an order other than the order disclosed in FIG.
  • the I / O hint processing program 21 reads the LU # 81 that matches the I / O target LU # (LU # specified by the I / O command) and the I / O included in the I / O command.
  • the hint information 83 corresponding to the hint rule # 82 matching the hint # as the O hint is referred to.
  • the I / O hint processing program 21 determines that the I / O command is a write I / O command and the I / O target virtual segment is an unallocated virtual segment (virtual segment not allocated to any physical segment). It is determined with reference to the allocation table 60 whether or not the segment is a segment)).
  • the “I / O target virtual segment” is a virtual segment specified from I / O destination information specified by the I / O command (for example, a logical address such as LBA (Logical Block Address)).
  • the I / O hint processing program 21 performs a hint corresponding to the LU # 81 that matches the I / O target LU # and the I / O target virtual segment.
  • the current state (tier position 84 and validity 85) corresponding to the hint rule # 82 that matches the rule # 66 is set as the previous state as a temporary region (for example, a region in the memory 302 such as a cache memory region). To store.
  • the I / O hint processing program 21 provides hint information specified from the I / O hint embedded in the I / O command received in S1004. Then, referring to the I / O hint rule table 80, an appropriate tier (PDEV) is selected, and the I / O target virtual segment is assigned to a free physical segment in the selected tier. As a result, the allocation flag 63 “Yes” and the physical segment # 64 indicating the identification information of the allocated physical segment are registered in the allocation table 60 as information corresponding to the I / O target virtual segment.
  • PDEV physical tier
  • the I / O hint processing program 21 corresponds to the LU # 81 that matches the I / O target LU # and the hint rule # 82 that matches the I / O hint embedded in the I / O command. Based on the effectiveness 85, it is determined whether or not the data amount reduction function is effective.
  • the I / O hint processing program 21 sets the processing flag 65 corresponding to the I / O target virtual segment to a value according to the validity 85, that is, “No”. Update to (value meaning no need to reduce data volume).
  • the I / O hint processing program 21 sets the processing flag 65 corresponding to the I / O target virtual segment to a value according to the validity 85, that is, “Yes” ”,“ Yes-Dedup. ”Or“ Yes-Compress ”.
  • the I / O hint processing program 21 performs data movement processing.
  • FIG. 12 is a flowchart of the data movement process (S1108 in FIG. 11). Note that the processing order for each determination procedure can be performed in a manner other than the order disclosed in FIG.
  • the I / O hint processing program 21 determines whether or not the tier position 84 in the previous state held in the temporary area is different from the tier position 84 in the current state.
  • the “current state” includes the tier position 84 corresponding to the LU rule # 81 matching the I / O target LU segment ## and the hint rule # 82 matching the hint rule # 66 corresponding to the I / O target virtual segment, and the valid state. It is sex 85.
  • the I / O hint processing program 21 maintains the tier in the same state. That is, data in the allocation destination physical segment of the I / O target virtual segment is not moved.
  • the I / O hint processing program 21 If the determination result in S1201 is true (S1201: Yes), in S1203, the I / O hint processing program 21 generates an instruction to execute the tier movement from the previous state to the current state.
  • the process executed in response to this instruction includes a process of allocating the migration destination physical segment and releasing the migration source physical segment.
  • data moves from the migration source physical segment to the migration destination physical segment.
  • the migration source physical segment is a physical segment in the tier corresponding to the previous state (particularly the tier position 84), and is an allocation destination physical segment of the I / O target virtual segment.
  • the movement destination physical segment is a physical segment in the tier corresponding to the current state (in particular, the tier position 84), and is a free physical segment.
  • the I / O hint processing program 21 determines whether or not the validity 85 in the previous state held in the temporary area is different from the validity 85 in the current state.
  • the I / O hint processing program 21 specifies the tier (PDEV type) that can be used in the I / O target LU by referring to the pool table 50. To do.
  • the tier according to the current state is a tier having a data amount reduction function (a tier based on PDEV having a data amount reduction function), or vice versa, and is a tier that does not have a data amount reduction function.
  • the I / O hint processing program 21 moves from the source physical segment according to the previous state to the destination physical segment according to the current state (free space in the tier according to the current state).
  • An instruction to execute a tier transfer to (physical segment) is generated. If an instruction is generated in S1203, the instruction is replaced with the instruction generated in S1206.
  • step S1207 the I / O hint processing program 21 performs storage control processing.
  • FIG. 13 is a flowchart of the storage control process (S1207 in FIG. 12).
  • the I / O hint processing program 21 determines whether the processing of the I / O command received in S1004 corresponds to Case 1 to Case 4.
  • Case 1 is a case where the current state is the same as the previous state and the data amount is not reduced.
  • the I / O hint processing program 21 sets the plane data area 25 as the storage destination in the same manner as in the previous state.
  • Case 2 is a case where the current state is the same as the previous state and the data amount is reduced.
  • the I / O hint processing program 21 in S1322, the I / O hint processing program 21 generates a data amount reduction instruction (instruction for the data amount reduction program 22) as in the previous state, and as in the previous state.
  • the reduced data area 24 is the storage destination.
  • Case 3 is a case where the current state is different from the previous state and the data amount is reduced.
  • the I / O hint processing program 21 generates a data amount reduction instruction for data that has already been stored (data that has not been reduced in data amount).
  • the I / O hint processing program 21 sets the allocation destination physical segment in the storage destination tier as a segment belonging to the reduced data area 24.
  • the I / O hint processing program 21 changes the allocation destination physical segment from the segment belonging to the plane data area 25 to the segment belonging to the reduced data area 24. That is, the processing flag 65 corresponding to the I / O target virtual segment is set or changed.
  • Case 4 is a case where the current state is different from the previous state and the data amount is reduced.
  • the I / O hint processing program 21 generates a data amount reduction cancellation instruction for data that has already been stored (data that has been reduced in data amount).
  • the I / O hint processing program 21 sets the allocation destination physical segment in the storage destination tier as a segment belonging to the plane data area 25.
  • the I / O hint processing program 21 sets or changes the processing flag 65 corresponding to the reduced data area, that is, the I / O target virtual segment, as the allocation destination physical segment.
  • the I / O hint processing program 21 determines whether to execute the instructions generated in S1322, S1332, and S1342 synchronously or asynchronously.
  • An example of determining whether the implementation of data reduction is good for background implementation or on-the-fly implementation is as follows, for example.
  • the hint rule table 80 in FIG. 8 may be provided with a determination flag for triggering data amount reduction (synchronous or asynchronous), or this information may be given from the host 1.
  • the host I / O I / O command
  • deduplication is performed in order to actively prevent deduplication in order to prevent the data capacity from temporarily overflowing. Synchronous execution is selected.
  • Example 2 When the I / O target data is data having a high compression effect, but compression has an effect on I / O performance, asynchronous execution of compression is selected.
  • the I / O hint processing program 21 causes the data amount reduction program 22 to perform data amount reduction synchronously or asynchronously according to the determination result of S1351.
  • Data storage is performed based on at least one of the generated data amount reduction instruction (or data amount reduction release instruction) and the tier movement instruction.
  • the I / O hint processing program 21 (or the data amount reduction program 22) can execute post-processing in S1352 when the data amount reduction is compression. For example, when the compressed data becomes larger than the write target data, the compression is released and the write target data (typically uncompressed original data) actor is stored in the reduced data area 24.
  • Example 2 will be described. At that time, differences from the first embodiment will be mainly described, and description of common points with the first embodiment will be omitted or simplified.
  • FIG. 14 is a diagram illustrating a configuration of the information system according to the second embodiment.
  • the storage controller 1400 notifies the hint information to the PDEV having the data amount reduction function.
  • the storage controller 1400 executes the I / O hint generator program 12.
  • An I / O hint is embedded by the I / O hint generator program 12 in an I / O command issued from the I / O program 1411 to the PDEV 1402.
  • the PDEV 1402 executes the I / O hint processing program 21 and the data amount reduction program 22.
  • the I / O hint rule table 80 may exist in the PDEV 1402.
  • the I / O hint generator program 12 embeds an I / O hint in the I / O command for the PDEV 1402 having the data amount reduction function.
  • the I / O hint processing program 21 performs a determination process similar to that in the first embodiment based on the hint information specified from the I / O hint embedded in the received I / O command.
  • the PDEV 1402 includes an interface unit that accepts an I / O command, and a processor unit that is connected to the interface unit and processes the I / O command (executes a program such as the I / O hint processing program 21). Have.
  • Example 3 will be described. At that time, the differences from the first and second embodiments will be mainly described, and the description of the common points with the first and second embodiments will be omitted or simplified.
  • FIG. 15 is a diagram illustrating a configuration of the information system according to the third embodiment.
  • the computer system 1500 executes the I / O program 1411, the I / O hint generator program 12, the I / O hint processing program 21, and the data reduction program 22.
  • the computer system 1500 has a PDEV that is the basis of the capacity pool 23 inside or outside.
  • the host 1 may be executed as a virtual server, and the storage system 2 may be a virtual storage. (E.g., SDS).
  • the computer system 1500 includes an interface unit that receives an I / O command, and a processor that is connected to the interface unit and processes the I / O command (executes a program such as the I / O hint processing program 21). Part.
  • Example 4 will be described. At that time, differences from the first to third embodiments will be mainly described, and description of common points with the first to third embodiments will be omitted or simplified.
  • I / O hints representing hint information for suspending or lowering the housekeeping process that adversely affects host performance are embedded in I / O commands (for example, read I / O commands).
  • Housekeeping is, for example, garbage collection (read / write processing accompanying relocation for reusing discontinuous free areas) and internal copy processing (transfer processing such as local copy)).
  • the housekeeping process is an example of an optional data processing function.
  • the controller 310 When the controller 310 receives an I / O command including such an I / O hint from the host 1, if the housekeeping process is being executed, the controller 310 (I / O hint processing program 21) Suspend the keeping process or make it a low priority. Thereby, the priority of host I / O (I / O processing according to the received I / O command) can be increased.
  • the I / O hint processing program replaces the I / O hint with reference to the I / O hint every time an I / O command is received. Whether or not to reduce the data amount may be determined according to the processing flag 65 corresponding to the same I / O target area within a certain period after the processing flag 65 is updated for the / O target area.
  • the logical volume provided to the host 1 may be a logical volume other than a virtual volume, for example, a logical volume based on one or more PDEVs such as a RAID group.
  • Host system 2 Storage system

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

計算機システムは、I/O特性を表す情報であるI/O特性情報が関連付けられたI/Oコマンドを受け付ける。計算機システムは、受け付けたI/Oコマンドに関連付けられているI/O特性情報に基づいて、定められたデータ処理を実行するオプショナルなデータ処理機能を制御する。

Description

オプショナルなデータ処理機能を有するストレージシステムを含んだ計算機システム、および、記憶制御方法
 本発明は、概して、記憶制御に関し、特に、オプショナルなデータ処理機能を有するストレージシステムの記憶制御に関する。
 「オプショナルなデータ処理機能」とは、実行/非実行が選択的であるデータ処理機能を意味する。オプショナルなデータ処理機能の一例として、データ量削減機能がある。データ量削減機能として、一般に、圧縮機能および重複排除機能うちの少なくとも1つが採用される。例えば、特許文献1は、ストレージが、格納対象のファイルのファイル種別やヘッダを参照してそのファイルについて重複排除を実行するか否かを決定する技術を開示している。
US8,660,994
 データ量削減処理の処理負荷は、ストレージのI/O(Input/Output)性能に影響を与え得る。そのため、データ容量削減効果が低いデータに対してまでデータ量削減処理を実行することは避けることが好ましい。また、重複排除のガベージコレクション処理のようなバックグラウンド処理は、ホストI/O(ホストからのI/O要求に従うI/O)とは非同期に行われる。同期処理(ホストI/Oに同期して行われる処理(例えば重複排除処理))の負荷削減だけではなく、その同期処理の延長上で行われる非同期処理(ホストI/Oと非同期で行われる処理)、言い換えれば、その同期処理に関連して行われる非同期処理についても、無駄な実行を避けることが好ましい。
 特許文献1によれば、重複排除効果が低いデータに対して重複排除を実行することを避けることが期待できる。しかし、重複排除を実行するか否かの判断のために、最終的に記憶デバイスに書き込まれるライト対象データ(ファイル)の一部を参照しなければならない。この処理の負荷が、I/O性能を低下させる可能性がある。特に、ストレージがいわゆるブロックストレージの場合、参照対象のデータを特定するためにライト対象データをスキャンするといった高い負荷が生じ、故に、I/O性能を低下させる可能性が高まる。
 この種の課題は、データ量削減機能に限定されず、他種のオプショナルなデータ処理機能、例えば、ライト対象のデータを特定のアルゴリズムなどで加工するデータ処理の機能についてもあり得る。
 計算機システムは、I/O特性を表す情報であるI/O特性情報が関連付けられたI/Oコマンドを受け付ける。計算機システムは、受け付けたI/Oコマンドに関連付けられているI/O特性情報に基づいて、定められたデータ処理を実行するオプショナルなデータ処理機能を制御する。
 I/O性能の低下を軽減しつつオプショナルなデータ処理機能を制御できる。
実施例1に係る情報システムの構成と実施例1の概要とを示した図である。 ホストの内部構成を示した図である。 ストレージシステムの内部構成を示した図である。 I/Oヒントプロファイルテーブルの構成を示した図である。 プールテーブルの構成を示した図である。 割当てテーブルの構成を示した図である。 仮想ボリュームと容量プールの対応関係を示した図である。 I/Oヒントルールテーブルの構成を示した図である。 ヒント情報のフォーマットの一例を示した図である。 ホストがストレージシステムにヒント情報を通知するラダーチャートである。 割当て処理(図10のS1005)のフローチャートである。 データ移動処理(図11のS1108)のフローチャートである。 格納制御処理(図12のS1207)のフローチャートである。 実施例2に係る情報システムの構成を示した図である。 実施例3に係る情報システムの構成を示した図である。
 以下、幾つかの実施例を説明する。
 なお、以下の説明では、「インターフェース部」は、1以上のインターフェースを含む。1以上のインターフェースは、1以上の同種のインターフェースデバイス(例えば1以上のNIC(Network Interface Card))であってもよいし2以上の異種のインターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
 また、以下の説明では、「記憶部」は、1以上のメモリを含む。少なくとも1つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。記憶部は、主に、プロセッサ部による処理の際に使用される。
 また、以下の説明では、「プロセッサ部」は、1以上のプロセッサを含む。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)である。プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。
 また、以下の説明では、「xxxテーブル」といった表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「xxxテーブル」を「xxx情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部または一部が1つのテーブルであってもよい。
 また、以下の説明では、「計算機システム」は、ホストシステムおよびストレージシステムのうちの少なくとも1つであってよい。「ホストシステム」は、1以上の物理的なホスト計算機(例えばホスト計算機のクラスタ)であってもよいし、少なくとも1つの仮想的なホスト計算機(例えばVM(Virtual Machine))を含んでもよい。「ストレージシステム」は、1以上の物理的なストレージ装置であってもよいし、少なくとも1つの仮想的なストレージ装置(例えばSDS(Software Defined Storage))を含んでもよい。
 また、以下の説明では、「PDEV」は、物理的な記憶デバイス(例えば補助記憶デバイス)を意味し、典型的には、不揮発性の記憶デバイスである。PDEVは、例えば、HDD(Hard Disk Drive)またはSSD(Solid State Drive)でよい。計算機システム(例えばストレージシステム)に異なる種類のPDEVが混在していてもよい。
 また、以下の説明では、「RAID」は、Redundant Array of Independent (or Inexpensive) Disksの略である。RAIDグループは、複数のPDEV(典型的には同種のPDEV)で構成され、そのRAIDグループに関連付けられたRAIDレベルに従いデータを記憶する。RAIDグループは、パリティグループと呼ばれてもよい。
 図1は、実施例1に係る情報システムの構成と実施例1の概要とを示した図である。
 情報システムは、ホストシステム(以下、ホスト)1とストレージシステム2とを有する。ホスト1およびストレージシステム2がネットワーク3を経由して互いに接続されている。ネットワーク3経由で、Fibre Channel SAN(Storage Area Network)やiSCSI IP SANといったプロトコル、または、NFSやCIFSのようなファイルプロトコルで通信が行われる。ホスト1およびストレージシステム2はネットワーク3経由に代えて直接接続されてもよい。
 また、ホスト1とストレージシステム2は、管理コンソール4とネットワーク3を経由して接続される。管理者5(ホスト1およびストレージシステム2の少なくとも1つについての管理者)は管理コンソール4を介してホスト1およびストレージシステム2を管理する。管理コンソール4は、ホスト1及びストレージシステム2に対する入出力コンソールの一例でよい。ネットワーク3は、1つの通信ネットワークでもよいし、ホスト1およびストレージシステム2を接続する第1の通信ネットワーク(例えばSAN)と、ホスト1、ストレージシステム2及び管理コンソール4を接続する第2の通信ネットワーク(例えばLAN(Local Area Network))とを含んだ複数の通信ネットワークでもよい。
 ホスト1は、アプリケーションプログラム11およびI/Oヒントジェネレータプログラム12を含む。ストレージシステム2は、I/Oヒント処理プログラム21、データ量削減プログラム22、および、容量プール23を含む。
 データ量削減プログラム22は、オンザフライ(インライン)動作でもポストプロセス動作でもよい。また、データ量削減プログラム22は、データ量削減機能の一例であり、重複排除機能および圧縮機能のいずれか、または両方である。データ量削減機能は、プログラムをプロセッサ部で実行することにより実現される機能に代えてまたは加えて、ハードウェア回路により実現される機能でもよい。例えば、圧縮機能により、圧縮および伸長が行われるが、圧縮機能は、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)のようなハードウェア回路であってよい。
 容量プール23は、論理的な記憶空間であり、例えば1以上の論理ボリュームでよい。本実施例では、容量プール23は、Thin Provisioningに従う仮想的な論理ボリュームである仮想ボリューム(図7参照)に関連付けられる容量プールである仮想容量プールでよい。仮想ボリュームは、複数の仮想記憶領域である複数のセグメント(仮想セグメント)で構成されている。仮想容量プールは、複数の物理記憶領域である複数のセグメント(物理セグメント)で構成されている。仮想容量プールにおけるセグメントが仮想ボリュームにおけるセグメントに割り当てられる。
 容量プール23は、データ量削減プログラム22を経由したデータ量削減済みのデータが格納される領域である削減データ領域24と、データ量削減プログラム22を経由しないデータが格納される領域であるプレーンデータ領域25とを含む。
 本実施例では、ホスト1からストレージシステム2へのライトI/Oコマンドに、I/Oヒントジェネレータプログラム12によって、I/Oヒントが関連付けられる。「I/Oヒント」は、ヒント情報それ自体であってもよいし、ヒント情報の識別番号であるヒント#であってもよい。本実施例では、I/Oヒントは、ライトI/Oコマンドに埋め込まれるが、何らかの方法で、ライトI/Oコマンドに関連付けられればよい。例えば、ライトI/Oコマンドの前又は後にそのライトI/Oコマンドに関連付いたコマンドである関連コマンドが発行されるようになっていて、その関連コマンドにI/Oヒントが埋め込まれてもよい。アプリケーションプログラム11毎、および、ホスト1に提供される論理ボリューム毎、のうちの少なくとも1つの単位で、事前に、管理者5(又はホスト1のユーザ)によってヒント情報が関連付けられてよい。
 ストレージシステム2において、I/Oヒント処理プログラム21が、データ量削減の実行/非実行の判定のために、ライトI/Oコマンド内のI/Oヒントから特定されるヒント情報を参照する。ライトI/Oコマンドに従うライト対象データ(例えばファイルデータとファイルメタデータとを含んだデータ)は、最終的に容量プール23(PDEV)に書き込まれるが、I/Oヒント及びヒント情報は、いずれも、容量プール23に最終的に書き込まれる必要は無い。ヒント情報は、I/Oパターンに関する特性を表す情報、例えば、シーケンシャルI/OかランダムI/Oかを表す情報と、I/O頻度を表す情報とのうちの少なくとも1つを含んだ情報である。ヒント情報として、例えば、所定の団体等によって標準化されている情報(例えば、SCSIでのLogical Block Markup Descriptor)が採用されてもよい。
 本実施例における処理の概要を説明する。
 ホスト1のI/Oヒントジェネレータプログラム12は、アプリケーションプログラム11により発行されるライトI/Oコマンドに、I/Oヒントを埋め込む。
 ストレージシステム2は、ホスト1から、I/Oヒント7を含んだライトI/Oコマンド6を受信し、ライトI/Oコマンドに従うライト対象データをキャッシュメモリ領域に格納する。なお、キャッシュメモリ領域は、後述のメモリ302(図3参照)に設けられた領域である。キャッシュメモリ領域は、容量プール23に入出力されるデータが一時格納される領域である。
 ストレージシステム2において、I/Oヒント処理プログラム21は、受信したライトI/Oコマンド内のI/Oヒントから特定されるヒント情報に基づき、データ量削減効果の有無を判定する。なお、I/Oヒントは、ライトI/Oコマンドを受信するよりも前に受信済みであってもよいし、ライトI/Oコマンドを受信したよりも後に受信してもよい。なお、「データ量削減効果の有無の判定」とは、データ量削減効果が高いか否かの判定の一例、言い換えれば、オプショナルなデータ処理機能を実行するか否かの判定の一例である。
 I/Oヒント処理プログラム21は、データ量削減効果があると判定した場合、データ量削減プログラム22を経由してライト対象データを削減データ領域24に格納するとして、ライト対象データを容量プール23に書き込む処理を進める。結果として、キャッシュメモリ領域内のライト対象データが削減データ領域24に格納される。
 一方、I/Oヒント処理プログラム21は、データ量削減の効果がないと判定した場合、
ライト対象データをプレーンデータ領域25に格納するとして、ライト対象データを容量プール23に書き込む処理を進める。結果として、キャッシュメモリ領域内のライト対象データがプレーンデータ領域25に格納される。
 本実施例によれば、ライトI/Oコマンドの一部であるI/Oヒントから特定されるヒント情報を参照することで、データ量削減効果の有無が判定、言い換えれば、データ量削減の実行/非実行(データ量削減プログラム22の経由/非経由)が判定される。コマンドの一部を参照すればよく、ライト対象データの中身を参照する必要が無いので、ライトI/O性能に与える影響は低い。これは、特に、ストレージシステム2がブロックストレージシステム(ブロックデータをライト対象データとして受信し格納するストレージシステム)である場合に有用である。
 また、本実施例によれば、ヒント情報として標準化されている情報の採用が可能であり、故に、実装が容易であることが期待できる。
 また、本実施例によれば、I/Oヒントは、ホスト1により指定される。このため、データ量削減の実行/非実行の判定の正確性が高いこと、具体的には、例えば、アプリケーションプログラムおよびライト先論理ボリュームの少なくとも1つが同一のままであってもホスト1の都合によってデータ量削減の実行/非実行を変更することが期待できる。
 また、本実施例によれば、後述するように、アプリケーションプログラム単位および論理ボリューム単位のうちの少なくとも1つの単位で、管理者5により設定されたヒント情報が関連付けられている。アプリケーションプログラム11にいずれかの論理ボリュームが関連付けられている。ライトI/Oコマンドに関連付いているI/Oヒントに関連付いていることに加えて、ライト元のアプリケーションプログラムおよびライト先の論理ボリュームのうちの少なくとも1つに関連付いているヒント情報が参照される。このため、データ量削減の実行/非実行の判定の正確性が一層高いことが期待できる。例えば、ヒント#が同じでもライト元アプリケーションプログラムまたはライト先論理ボリュームが異なればデータ量削減の実行/非実行が異なり得る。
 また、本実施例によれば、容量プール23が、データ量削減プログラム22経由のデータが格納される削減データ領域24と、データ量削減プログラム22非経由のデータが格納されるプレーンデータ領域25とを含む。データ量削減プログラム22経由のデータであっても、データ量削減効果が無かった場合には、データ量削減がされないデータが、削減データ領域24に格納される。このため、領域24及び25のいずれの領域におけるデータであるかによって、データ量削減プログラム22経由及び非経由のいずれのデータであるかがわかる。つまり、ストレージシステム2は、容量プール23に格納されたデータについて、別段の管理情報を保持すること無しに、データ量削減プログラム22経由及び非経由のいずれのデータであるかを管理できる。
 以下、本実施例を詳細に説明する。なお、以下の説明では、圧縮と重複排除とのうちの少なくとも1つの実施を、データ量削減の実施、とする。
 図2は、ホスト1の内部構成を示した図である。
 ホスト1は、メモリ202、PDEV205、N-I/F201、P-I/F204、および、それらに接続されたCPU203を有する。N-I/F201は、ネットワーク3を介して通信するためのインターフェースデバイスである。P-I/F204は、PDEV205と通信するためのインターフェースデバイスである。
 メモリ202は、アプリケーションプログラム11およびI/Oヒントジェネレータプログラム12のようなプログラム、および、I/Oヒントプロファイルテーブル40のようなテーブルを格納する。アプリケーションプログラム11は、ホスト1に提供された論理ボリュームの一例である後述の仮想ボリュームを指定したI/Oコマンドを発行する。I/Oヒントジェネレータプログラム12は、発行されたI/Oコマンドのうちの少なくともライトI/Oコマンドに、I/Oヒントを埋め込む。I/Oヒントジェネレータプログラム12が無く、アプリケーションプログラム11が、I/OヒントをライトI/Oコマンドに埋め込むようになっていてもよい。I/Oヒントプロファイルテーブル40は、I/Oヒントに関する情報の一例であるI/Oヒントプロファイルを保持する。
 図3は、ストレージシステム2の内部構成を示した図である。
 ストレージシステム2は、1種類以上のPDEVを含んだ複数のPDEV305、および、それらのPDEV305に接続されたストレージコントローラ310を有する。複数のPDEV305は、1以上のRAIDグループを構成してよい。
 ストレージコントローラ310は、メモリ302、N-I/F301、P-I/F304およびそれらに接続されたCPU303を有する。
 メモリ302は、I/Oプログラム20、I/Oヒント処理プログラム21およびデータ量削減プログラム22のようなプログラム、および、プールテーブル50、割当てテーブル60およびI/Oヒントルールテーブル70のようなテーブルを格納する。I/Oプログラム20は、ホスト1からのI/Oコマンドを処理する。I/Oヒント処理プログラム21は、ホスト1からのI/Oコマンドに埋め込まれているI/Oヒントを処理する。データ量削減プログラム22は、圧縮および重複排除のようなデータ量削減を実行する。プールテーブル50は、容量プール23に関する情報を保持する。割当てテーブル60は、容量プール23内のセグメントと仮想ボリューム内のセグメントとのマッピング関係を表す情報を保持する。I/Oヒントルールテーブル70は、I/Oヒントルールに関する情報を保持する。
 また、メモリ302は、上述したように、キャッシュメモリ領域を含む。I/Oプログラム20は、容量プール23(PDEV305)に対するI/Oデータを、キャッシュメモリ領域に一時格納する。
 データ量削減機能は、ハードウェアによる実装でもよいが、本実施例では、データ量削減プログラム22のようなソフトウェアによる実装である。
 N-I/F301は、ネットワーク3を介して通信するためのインターフェースデバイスである。N-I/F301は、Fibre Channel SAN、iSCSI SAN、NFS、またはCIFSのようなプロトコルで通信する。
 P-I/F304は、PDEV305と通信するためのインターフェースデバイスである。P-I/F304は、SAS(Serial Attached SCSI)、SATA(Serial Advanced Technology Attachment)、NVM Express (TM)、またはTCP/IPのようなプロトコルで通信する。
 また、PDEV種類として、例えば、高い回転数のSAS HDD (Hard Disk Drive)、低い回転数のSAS HDD、SATA HDD、SSD (Solid State Drive)、および、データ量削減機能(例えば圧縮機能)を持つFMD(Flash Memory Drive)のうちの少なくとも1つを採用することができる。また、SSDおよびFMDのいずれにも採用されるフラッシュメモリは、不揮発メモリの一例であり、不揮発メモリは、SLC(Single Level Cell)、MLC(Multiple Level Cell)、TLC(Triple Level Cell)等のセル毎の記憶可能ビット数の異なるメモリでもよいし、書き換え量の上限値が異なるメモリでもよい。
 また、ストレージシステム2の配下に、外部ストレージ330があってもよい。外部ストレージ330は、SANのようなネットワークを経由して接続されたストレージシステムでもよいし、ネットワークを経由して接続されたデータセンタ内のクラウドストレージでもよい。このような外部ストレージ330も、PDEV種別の1つとされてよい。これらPDEV種別のうちの少なくとも1つのPDEV種類に基づき容量プール23が構成される。つまり、PDEV305及び外部ストレージ330のうちの少なくとも1つに基づき容量プール23が構成される。分かり易く言えば、外部ストレージ330もPDEVの1つとして扱われてよい。
 図4は、I/Oヒントプロファイルテーブル40の構成を示す。
 I/Oヒントプロファイルテーブル40は、ヒント情報毎にヒント#41とヒント情報42を格納する。ヒント#41は、ヒント情報の識別番号である。ヒント情報42は、ヒント情報それ自体であってもよいし、ヒント情報へのリンクであってもよい。ここでは、ヒント情報42は、ヒント情報それ自体である。ヒント#41およびヒント情報42の組を含むエントリは、例えば、アプリケーションプログラム11がアクセスするデータの種別やI/O毎に設定されてよい。ヒント情報のフォーマットの一例については図9にて後述する。
 アプリケーションプログラム11、または、管理者5が、I/Oヒントプロファイルテーブル40に情報を登録してよい。例えば、アプリケーションプログラム11、または、管理者5は、アプリケーションプログラム11がアクセスするデータの種別や、アクセス範囲(例えば、LBA(Logical Block Address)範囲やファイルのエクステントの一部分)に対して、I/Oヒントプロファイルテーブル40におけるエントリを関連付けることができる。関連付けの一例として、データID43およびヒント#44の組を含んだエントリが採用される。データID43は、アプリケーションプログラム11の識別番号とデータのアクセス範囲とのうちの一方又はその組合せを示す。ヒント#44は、ヒント#41と同様、ヒント情報の識別番号である。
 I/Oヒントプロファイルテーブル40のこのような構成により、例えば、アプリケーションプログラム11(アクセス対象のデータの種別)やアクセス範囲に対応したヒント#44を特定することができ、そのヒント#44に一致するヒント#41を特定することができ、そのヒント#41に対応したヒント情報42を特定することができる。
 例えば、アプリケーションプログラム11の一例として、DBMS(Database Management System)があるとする。一般的に、DBMSは、オブジェクトの種別として、ユーザデータを格納するデータオブジェクト、検索を高速化するインデクスオブジェクト、障害時にユーザデータの一貫性を保証するためのライトログオブジェクト等を管理する。ヒント情報の設定の一例として、DBMSは、オブジェクト毎、またはオブジェクトの一部に対してI/Oアクセスする際に、データID43に関連するヒント#44と、ヒント#44に対応するヒント情報(静的な情報)とを登録する。
 別の例として、DBMSの管理者が、バッチ処理などのワークロードに対応したヒント情報をI/Oヒントプロファイルテーブル40に登録する。次に、DBMSは、ワークロードの変化を前述の管理者からの情報にて認識して、オブジェクト毎、またはオブジェクトの一部に対してI/Oアクセスする際に、対応するデータID43に関連付いているヒント#44を変更する。これにより、ワークロードの変化に追随して動的にヒント情報を変更できる。
 一般的に、DBMSのログは、連続領域の追記型ライトであり、ローテーションして必要なくなった古いデータに新たなデータを上書き処理する。障害時に、DBMSのロールバック等のためにログを用いるため、ログの各エントリはDBMSの処理番号などの情報を含む。このため、例えば、重複排除を実施しても、処理番号を含むデータが一致することはなく、重複排除効果はない。
 また、重複排除を実施した場合、今後連続領域の上書き処理される可能性が高いにもかかわらず、重複排除未割当てブロックを回収するガベージコレクション処理を必要とする。このため、DBMSのログ領域は重複排除を適用しない方が望ましい。
 対して、DBMSのデータ領域がコピーされることで新規のDBMS複製が作成される場合は、重複排除を適用する方が望ましい。
 また、DBMSのデータ領域は、今後のトランザクションを書き込む領域としてゼロ初期化されている場合があり(全ビットがゼロのゼロデータが書き込まれている場合があり)、このような初期化動作に対応するデータ(ゼロデータ)については圧縮を適用することが望ましい。
 DBMSのデータ領域にデータがトランザクションにおいて書き込まれた場合、データ領域におけるデータがゼロデータではなくなるため、圧縮効果がなくなる可能性がある。この場合は、動的に圧縮を解除してストレージシステム2のデータ量削減負荷を軽減することが望ましい。
 これらのように、静的または動的にデータ量削減効果の有無が変化することがある。本実施例では、ホスト1からのI/Oコマンド(ライトI/OコマンドおよびリードI/Oコマンドのうちの少なくともライトI/Oコマンド)に対して上記のような判定をするためのヒント情報が関連付けられる。アプリケーションプログラム11とストレージシステム2のこのような協働が、データ量削減の有効化(実行)/無効化(非実行)をI/Oコマンド単位でストレージシステム2が判定することを可能にする。
 別の例で、ホスト1が既にデータを暗号化している場合がある。この場合、ストレージシステム2でデータ量削減を実行してもデータ量削減効果がないため、データ量削減を非実行とすることが望ましい。そのような場合、本実施例によれば、ライトI/Oコマンドに、ライト対象データが暗号化されていることを意味するヒント情報に対応したI/Oヒントを関連付けることで、ストレージシステム2にデータ量削減を非実行とさせることができる。
 図5は、プールテーブル50の構成を示す。
 プールテーブル50は、容量プール23におけるティア毎に、プール#51、ティア#52、PDEV種別53、容量54、プロファイル55、および、機能56を格納する。
1つのプール#51に対して、1つまたは複数のティア#52がある。1つのティア#52に対して1つのPDEV種別53が対応する。
 プール#51は、容量プール23の識別番号である。ティア#は、ティアの識別番号である。PDEV種別53は、前述で説明したPDEV種別を表す情報である。
 容量54は、対応するティアの論理容量を表す。各ティアでは、データ保護のために、RAID、Erasure Coding、トリプルコピー等のデータ冗長化技術が適用されている場合がある。
 プロファイル55は、対応するティアの性能等のプロファイルを表す情報である。プロファイル55は、PDEV種別、適用されているデータ冗長化技術、PDEV容量、FM(フラッシュメモリ)寿命、FMの予備領域(Over Provisioning ratio)、用いるFMのセル毎のビット数、などの情報に基づき、例えば、ストレージシステム2のプログラムまたはストレージ管理者により登録される。
 機能56は、対応するティアの基になっているPDEV種別に従うPDEV305(または外部ストレージ330)がデータ量削減機能を持つか否かを表す。ストレージシステム2が、PDEV305や外部ストレージ330に問い合わせて、データ量削減機能の有無を特定し、特定した情報を機能56として登録できる。データ量削減機能が有る場合、圧縮機能を意味する“Compress”と重複排除機能を意味する“Deduplication”とのうちの少なくとも1つが、機能56として登録される。
 図6は、割当てテーブル60の構成示す。
 割当てテーブル60は、仮想セグメント毎に、LU # 61、仮想セグメント#62、割当てフラグ63、物理セグメント#64、処理フラグ65、および、ヒントルール#66を保持する。
 LU # 61は、仮想ボリュームの識別番号であってホスト1が認識する番号を表す(仮想ボリュームは、ホスト1に提供される論理ボリュームの一例である)。仮想セグメント#62は、仮想ボリュームのセグメントの識別番号である。割当てフラグ63は、仮想セグメントが物理セグメントに割り当てられているか否かを表す。物理セグメント#64は、仮想セグメントの割当て先物理セグメントの識別番号、具体的には、割当て先物理セグメントを有する容量プールのプール#、割当て先物理セグメントを有するティアのティア#、および、割当て先物理セグメントのセグメント#の組合せである。
 処理フラグ65は、データ量削減が適用された仮想セグメントであるか否かを表す。例えば、仮想セグメントにライトされるデータについて、圧縮が実行された場合、処理フラグ65は、“Yes-Comp”である。仮想セグメントにライトされるデータについて、重複排除が実行された場合、処理フラグ65は、“Yes-Dedup.”である。仮想セグメントにライトされるデータについて、データ量削減が非実行の場合、処理フラグ65は、“No”である。
 ヒントルール#66は、ヒントルールの識別番号である。ヒントルールについては図8を用いて後述する。
 なお、図6では、データ量削減機能の有効性有無を例示しているが、本発明は、データ量削減機能以外のオプショナルなデータ処理機能にも適用でき、故に、例えば、一般的にホストI/O性能などに影響する処理の重たいデータを加工する機能について効果の有無を判定して処理フラグ65を設定すること(つまり、データ処理機能の実行対象領域(仮想セグメント))と非実行対象領域とを区別すること)にも適用可能である。
 ライト先仮想セグメントが同一であっても、ライトI/Oコマンドに関連付けられるヒント情報は、そのライトI/Oコマンドが発行されるよりも前に発行されたライトI/Oコマンドに関連付けられていたヒント情報と異なっていることがあり得る。すなわち、ライトI/Oコマンドに関連付けられるI/Oヒントは、動的に変更されることがある。ライトI/Oコマンドに埋め込まれているI/O人が、そのライトI/Oコマンドに従うライト先仮想セグメントに対応付けられている処理フラグ65およびヒントルール#66が表すヒント情報と異なっている場合(つまり、ライト先仮想セグメントに対するライトI/Oコマンドに埋め込まれるI/Oヒントが動的に変更された場合)、I/Oヒント処理プログラム21は、処理フラグ65、ヒントルール#66、および、ライト先仮想セグメントの割当て先ティアのうちの少なくとも1つを動的に変更する。このような変更が行われると、ストレージシステム2の内部で、データがティア間(物理セグメント間)で移動する。
 図7は、仮想ボリューム26と容量プール23の対応関係を示した図である。
 容量プール23が、例えば、3つのティア1~3で構成されているとする。ティア1は、1以上のFMDに基づく複数の物理セグメントで構成されている。ティア2は、1以上のSSDに基づく複数の物理セグメントで構成されている。ティア3は、1以上のHDDに基づく複数の物理セグメントで構成されている。
 ストレージコントローラ310によりホスト1に仮想ボリューム26が提供される。ホスト1は、仮想ボリューム26をマウントし(認識し)、仮想ボリューム26を指定したI/Oコマンドを発行する。ストレージコントローラ310は、ホスト1からのライトI/Oコマンドに従うライト対象データを、削減データ領域24またはプレーンデータ領域25に格納する。削減データ領域24またはプレーンデータ領域25のいずれかの空き容量が不足している場合、ストレージコントローラ310は、容量が不足している領域24または25に、容量プール23から未割り当ての物理セグメントを割り当てる。つまり、領域24および25は、仮想ボリューム26と容量プール23間の論理的な記憶空間でよい。いずれの物理セグメントが領域24および25のいずれに属するかは、例えば、仮想セグメントの割当先とされている物理セグメントに対応した処理フラグ65が表す。
 なお、図7では、データ量削減プログラム22経由のデータの格納領域24と、データ量削減プログラム22非経由のデータの格納領域25とがあるが、この構成に限定されることはなく、例えば、データ量削減の種別毎の領域(例えば、圧縮領域、重複排除領域、圧縮かつ重複排除領域、データ量削減非実行領域)があってもよい。
 図8は、I/Oヒントルールテーブル80の構成を示す。
 I/Oヒントルールテーブル80は、論理ボリューム(仮想ボリューム26)毎に、LU # 81と、1以上のヒントルール#62を有する。その1以上のヒントルール#62の各々について、I/Oヒントルールテーブル80は、ヒント情報83、ティア位置84および有効性85を保持する。
 LU # 81は、論理ボリュームの識別番号である。ヒントルール#62は、ヒントルールの識別番号である。図8によれば、ヒントルールは、ヒント情報83、ティア位置84および有効性85の組合せである。
 ヒント情報83は、ヒント情報それ自体(またはヒント情報へのリンク)である。ティア位置84は、そのティア位置84を含んだヒントルールが関連付けられた仮想セグメントに格納されるデータの配置先ティア(言い換えれば、その仮想セグメントの割当て先とされる物理セグメントを含んだティア)のプロファイルを表す情報である。ティアのプロファイルは、プールテーブル50のプロファイル55から特定可能である。有効性85は、データ量削減効果の有無を表す。“No”は、圧縮および重複排除のいずれの効果も無いことを意味する。“Yes”は、圧縮および重複排除のいずれの効果もあることを意味する。“No-Compress”は、圧縮効果が無いことを意味し、“Yes-Compress”は、圧縮効果があることを意味する。“No-Dedup.”は、重複排除効果が無いことを意味し、“Yes--Dedup.”は、重複排除効果があることを意味する。
 ヒントルール#81は、図6に示したヒントルール#66と対応関係にある。ヒント情報83は、アプリケーションプログラム11または管理者5が設定したヒント情報である。ヒント情報83は、ホスト1からストレージシステム2にMode Selectや他の手段にて事前に送信されテーブル80に登録された情報でもよいし、管理コンソール4経由で管理者5から登録された情報でもよい。I/Oヒント処理プログラム21は、例えば、ホスト1から受領したヒント情報を解釈し、その解釈結果を基に、ヒント情報83、ティア位置84および有効性85を設定してよい。
 図9は、ヒント情報のフォーマットの一例を示す。
 一例として、SCSIでは、ヒント情報は、Logical Block Markup Descriptorについて別フォーマットが新たに定義されたもの、または、予備領域に新たなフィールド99が追加されたものでよい。ホスト1は、SCSIのmode page情報を、ストレージシステムの論理ボリューム(LU)毎に、mode selectコマンドを用いて設定することができる。アプリケーションプログラム11は、このヒント情報に、オプショナルなデータ処理機能(本実施例ではデータ量削減機能であるが、それに代えてまたは加えて、ホスト1からの同一データの複製機能のような他のデータ処理機能でもよい)の有効性有無または不明を、予備領域99に指定できる。このようなヒント情報それ自体またはヒント#が、ライトI/OコマンドにI/Oヒントとして埋め込まれる。ストレージシステム2において、I/Oヒント処理プログラム21は、このI/Oヒントから特定されるヒント情報を解釈し、その解釈の結果を基に、ライト先仮想セグメントに対応した処理フラグ65を設置または更新できる。
 なお、特別なフィールド99を定義する例に代えて、下記の例が採用されてもよい。
 (例1)DBMSのトランザクションログのようなローテーションする追記ログのライトI/Oコマンドに対して、シーケンシャルライトが高頻度で行われることを表すヒント情報が関連付けられる。ストレージコントローラ310は、そのライト情報を特定した場合、セグメント単位で重複排除を無効にする。これにより、追記ログで上書き更新されるデータに対して追記する必要がなくなり、結果として、ガベージコレクション発生要因を無くすことが期待できる。
 (例2)データベースの索引データやカラム圧縮されたデータのライトI/Oコマンドに、I/O分類=メタデータ且つI/Oアクセス頻度=高いを表すヒント情報が関連付けられる。この場合、重複排除をセグメント単位で無効にし、圧縮を実行しないようにデータを分類することが期待できる。
 (例3)ホスト1がコピーのプロセスを実行した場合に、ライトI/Oコマンドに、コピーであることを表すヒント情報が関連付けられる。そのようなヒント情報が関連付けられたライトI/Oコマンドに対しては、ストレージコントローラ310は、オンザフライで重複排除を実行できる。
 以下、本実施例で行われる処理を説明する。
 図10は、ホスト1がストレージシステム2にヒント情報を通知するラダーチャートである。なお、事前にヒント情報とポインタ番号のリストを送付する方式に代えて、コマンドの予備領域にヒント情報を格納する方式が採用されてもよい。
 S1001で、ホスト1は、I/Oヒントプロファイルテーブル40を論理ボリューム毎に設定し、論理ボリューム毎のI/Oヒントプロファイルテーブル40をストレージシステム2に送信する。
 S1002で、I/Oヒント処理プログラム21は、ホスト1からのI/Oヒントプロファイルテーブル40が有する情報を、I/Oヒントルールテーブル80に登録する。例えば、或る論理ボリュームに対応したI/Oヒントプロファイルテーブル40について、その論理ボリュームのLU #が、LU # 81として登録される。そのI/Oヒントプロファイルテーブル40内のヒント#41およびヒント情報42が、そのLU # 81について、ヒントルール#82およびヒント情報83としてそれぞれ登録される。
 S1003で、ホスト1において、アプリケーションプログラム11からI/Oコマンドがストレージシステム2に送信される。ストレージシステム2に送信されたI/Oコマンドには、I/Oヒントジェネレータプログラム12によって埋め込まれたI/Oヒントが含まれている。I/Oヒントは、I/Oコマンドで指定されたLU #に対応したI/Oヒントプロファイルテーブル40におけるヒント#41およびヒント情報42のうちの少なくとも1つである。I/Oコマンドは、ライトI/Oコマンド、リードI/Oコマンド、データ領域の開放するUnmap/Trimコマンド、データ領域の属性を変更するPre fetch/Synchronization Cacheコマンド等のうちのいずれでもよい。
 S1004で、ストレージシステム2がS1003のI/Oコマンドを受信する。
 S1005で、割当て処理(図11)が実行される。
 S1006で、I/Oプログラム20は、S1003のI/Oコマンドに対する応答をホスト1に返す。
 S1007で、ホスト1は、S1006の応答を受信し、S1003のI/Oコマンドを終了する。
 S1001およびS1002の後、S1003~S1007は、I/Oコマンドの発行の都度に行われてよい。
 図11は、割当て処理(図10のS1005)のフローチャートである。
 本処理は、セグメント単位で実施されてよい。なお、割当ての判定手順やデータ量削減機能の有効性判定についての処理順序は、図11で開示した順序以外の順序でもよい。
 S1101で、I/Oヒント処理プログラム21は、I/O対象LU # (I/Oコマンドで指定されているLU #)に一致するLU # 81と、I/Oコマンドに含まれているI/Oヒントとしてのヒント#に一致するヒントルール#82とに対応するヒント情報83を参照する。
 S1102で、I/Oヒント処理プログラム21は、I/OコマンドがライトI/Oコマンドであり、且つ、I/O対象仮想セグメントが未割り当て仮想セグメント(いずれの物理セグメントにも割り当てられていない仮想セグメント))であるか否かを、割当てテーブル60を参照して判定する。「I/O対象仮想セグメント」とは、I/Oコマンドで指定されているI/O先情報(例えばLBA(Logical Block Address)のような論理アドレス)から特定される仮想セグメントである。
 S1102の判定結果が偽の場合(S1102:No)、S1103で、I/Oヒント処理プログラム21は、I/O対象LU #に一致するLU #81と、I/O対象仮想セグメントに対応したヒントルール#66に一致するヒントルール#82とに対応した現在の状態(ティア位置84および有効性85)を、以前の状態として、一時領域(例えば、キャッシュメモリ領域のような、メモリ302における領域)に格納する。
 S1102の判定結果が真の場合(S1102:Yes)、S1104で、I/Oヒント処理プログラム21は、S1004で受信したI/Oコマンドに埋め込まれているI/Oヒントから特定されるヒント情報、および、I/Oヒントルールテーブル80を参照して、適切なティア(PDEV)を選択し、I/O対象仮想セグメントを、選択したティアにおける空き物理セグメントに割り当てる。結果として、I/O対象仮想セグメントに対応した情報として、割当てフラグ63“Yes”と、割り当てられた物理セグメントの識別情報を表す物理セグメント#64とが、割当てテーブル60に登録される。
 S1105で、I/Oヒント処理プログラム21は、I/O対象LU #に一致するLU #81と、I/Oコマンドに埋め込まれているI/Oヒントに一致するヒントルール#82とに対応した有効性85を基に、データ量削減機能が有効か否かを判定する。
 S1105の判定結果が偽の場合(S1105:No)、S1106で、I/Oヒント処理プログラム21は、I/O対象仮想セグメントに対応した処理フラグ65を、有効性85に従う値、つまり“No”(データ量削減不要を意味する値)に更新する。
 S1105の判定結果が偽の場合(S1105:No)、S1107で、I/Oヒント処理プログラム21は、I/O対象仮想セグメントに対応した処理フラグ65を、有効性85に従う値、つまり、“Yes”、“Yes-Dedup.”または“Yes-Compress”に更新する。
 S1108で、I/Oヒント処理プログラム21は、データ移動処理を実施する。
 図12は、データ移動処理(図11のS1108)のフローチャートである。なお、各判定手順についての処理順序は図12で開示した順序以外でも実施可能である。
 S1201で、I/Oヒント処理プログラム21は、上記一時領域で保持されている以前の状態におけるティア位置84と、現在の状態におけるティア位置84とが違うか否かを判定する。「現在の状態」は、I/O対象LU #に一致するLU #81と、I/O対象仮想セグメントに対応したヒントルール#66に一致するヒントルール#82とに対応したティア位置84および有効性85である。
 S1201の判定結果が偽の場合(S1201:No)、S1202で、I/Oヒント処理プログラム21は、ティアを同一の状態に維持する。つまり、I/O対象仮想セグメントの割当先物理セグメント内のデータは移動しないこととなる。
 S1201の判定結果が真の場合(S1201:Yes)、S1203で、I/Oヒント処理プログラム21は、以前の状態から現在の状態へのティア移動を実施する指示を生成する。この指示に応答して実行される処理は、移動先物理セグメントを割り当てて移動元物理セグメントを解放する処理を含む。この指示に応答して実行される処理では、移動元物理セグメントから移動先物理セグメントにデータが移動する。移動元物理セグメントは、以前の状態(特にティア位置84)に対応したティア内の物理セグメントであって、I/O対象仮想セグメントの割当先物理セグメントである。移動先物理セグメントは、現在の状態(特にティア位置84)に対応したティア内の物理セグメントであって、空き物理セグメントである。
 S1204で、I/Oヒント処理プログラム21は、上記一時領域で保持されている以前の状態における有効性85と、現在の状態における有効性85とが違うか否かを判定する。
 S1204の判定結果が偽の場合(S1204:No)、S1205で、I/Oヒント処理プログラム21は、S1202またはS1203にて作成済みの指示を維持する。
 S1204の判定結果が真の場合(S1204:Yes)、S1206で、I/Oヒント処理プログラム21は、I/O対象LUで利用可能なティア(PDEV種別)を、プールテーブル50より参照して特定する。現在の状態に従うティアは、データ量削減機能を持つティア(データ量削減機能を持つPDEVに基づくティア)、または、その逆で、データ量削減機能を持たないティアである。I/Oヒント処理プログラム21は、特定されたティアに、現在の状態に従うティアがあれば、以前の状態に従う移動元物理セグメントから現在の状態に従う移動先物理セグメント(現在の状態に従うティア内の空き物理セグメント)へのティア移動を実施する指示を生成する。S1203で指示が生成されている場合、その指示は、S1206で生成された指示に差し替えられる。 
 S1207で、I/Oヒント処理プログラム21は、格納制御処理を実施する。
 図13は、格納制御処理(図12のS1207)のフローチャートである。
 S1301で、I/Oヒント処理プログラム21は、S1004で受信したI/Oコマンドの処理がケース1~ケース4のいずれに該当するかを判定する。
 ケース1は、現在の状態が以前の状態と同一で、且つ、データ量削減を実施しないケースである。このケースについて、S1312で、:I/Oヒント処理プログラム21は、以前の状態のときと同様に、プレーンデータ領域25を格納先とする。
 ケース2は、現在の状態が以前の状態と同一で、且つ、データ量削減を実施するケースである。このケースについて、S1322で、I/Oヒント処理プログラム21は、以前の状態ときと同様にデータ量削減指示(データ量削減プログラム22に対する指示)を生成し、且つ、以前の状態のときと同様に削減データ領域24を格納先とする。
 ケース3は、現在の状態が以前の状態と異なり、且つ、データ量削減を実施するケースである。このケースについて、S1332で、I/Oヒント処理プログラム21は、既に格納済みのデータ(データ量削減がされていないデータ)についてデータ量削減指示を生成する。格納先ティアが変更されている場合、I/Oヒント処理プログラム21は、格納先ティア内の割当て先物理セグメントを、削減データ領域24に属するセグメントとする。
一方、格納先ティアが変更されていない場合、I/Oヒント処理プログラム21は、割当先物理セグメントを、プレーンデータ領域25に属するセグメントから削減データ領域24に属するセグメントに変更する。つまり、I/O対象仮想セグメントに対応した処理フラグ65が設定または変更される。
 ケース4は、現在の状態が以前の状態と異なり、データ量削減を実施するケースである。このケースについて、S1342で、I/Oヒント処理プログラム21は、既に格納済みのデータ(データ量削減がされているデータ)についてデータ量削減解除指示を生成する。格納先ティアが変更されている場合、I/Oヒント処理プログラム21は、格納先ティア内の割当て先物理セグメントを、プレーンデータ領域25に属するセグメントとする。格納先ティアが変更されていない場合、I/Oヒント処理プログラム21は、割当先物理セグメントを、削減データ領域つまり、I/O対象仮想セグメントに対応した処理フラグ65が設定または変更される。
 S1351で、I/Oヒント処理プログラム21は、S1322、S1332、S1342で生成された指示を同期実行するか非同期実行するかを判定する。データ量削減の実施が、バックグランド実施がよいかオンザフライ実施がよいかの判定の一例は、例えば下記の通りである。必要に応じて、図8のヒントルールテーブル80に、データ量削減の契機(同期または非同期)の判定フラグが設けられてもよいし、ホスト1からこの情報が付与されてもよい。
(例1)ホストI/O(I/Oコマンド)がデータ複製のコマンドの場合は、一時的にデータ容量が溢れてしまうことを抑止するべく積極的に重複排除を実施するために、重複排除の同期実行が選択される。
(例2)I/O対象データが圧縮効果の高いデータであるが圧縮がI/O性能に影響がある場合は、圧縮の非同期実行が選択される。
 S1352で、I/Oヒント処理プログラム21は、S1351の判定結果に応じて、データ量削減プログラム22に対し、データ量削減を同期または非同期で実施させる。生成されたデータ量削減指示(またはデータ量削減解除指示)と、ティア移動の指示とのうちの少なくとも1つの指示に基づきデータ格納が行われる。
 一般的にデータ量の増減がデータ処理後にしか判断できない。I/Oヒント処理プログラム21(またはデータ量削減プログラム22)は、データ量削減が圧縮の場合にS1352で、後処理を実行できる。例えば、圧縮データがライト対象データより大きくなる場合、圧縮が解除され、ライト対象データ(典型的には、非圧縮のオリジナルのデータ)エータが削減データ領域24に格納される。
 実施例2を説明する。その際、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略又は簡略する。
 図14は、実施例2に係る情報システムの構成を示した図である。
 実施例2では、ストレージコントローラ1400が、データ量削減機能を持つPDEVに対してヒント情報を通知する。
 具体的には、実施例2では、ストレージコントローラ1400が、I/Oヒントジェネレータプログラム12を実行する。I/Oプログラム1411からPDEV1402に発行されるI/Oコマンドに、I/Oヒントジェネレータプログラム12によってI/Oヒントが埋め込まれる。PDEV1402が、I/Oヒント処理プログラム21およびデータ量削減プログラム22を実行する。この場合、I/Oヒントルールテーブル80はPDEV1402に存在してよい。
 例えば、ストレージコントローラ1400がデータ量削減機能が有効ではないと判断した場合に、I/Oヒントジェネレータプログラム12は、データ量削減機能を持つPDEV1402に対するI/OコマンドにI/Oヒントを埋め込む。そのPDEV1402では、I/Oヒント処理プログラム21が、受信したI/Oコマンドに埋め込まれているI/Oヒントから特定されるヒント情報を基に、実施例1と同様の判定処理を実施する。
 なお、PDEV1402は、図示しないが、I/Oコマンドを受け付けるインターフェース部、および、インターフェース部に接続されI/Oコマンドを処理する(I/Oヒント処理プログラム21等のプログラムを実行する)プロセッサ部を有する。
 実施例3を説明する。その際、実施例1および2との相違点を主に説明し、実施例1および2との共通点については説明を省略又は簡略する。
 図15は、実施例3に係る情報システムの構成を示した図である。
 実施例3では、計算機システム1500において、I/Oプログラム1411、I/Oヒントジェネレータプログラム12、I/Oヒント処理プログラム21、およびデータ削減プログラム22を実行する。別の言い方をすれば、計算機システム1500が、容量プール23の基になるPDEVを内部または外部に有し、計算機システム1500では、ホスト1が仮想サーバとして実行されてよく、ストレージシステム2が仮想ストレージ(例えばSDS)として実行されてよい。
 なお、計算機システム1500は、図示しないが、I/Oコマンドを受け付けるインターフェース部、および、インターフェース部に接続されI/Oコマンドを処理する(I/Oヒント処理プログラム21等のプログラムを実行する)プロセッサ部を有する。
 実施例4を説明する。その際、実施例1~3との相違点を主に説明し、実施例1~3との共通点については説明を省略又は簡略する。
 ホスト性能に悪影響のあるハウスキーピングのプロセスを一時停止または低優先度にするためのヒント情報を表すI/OヒントがI/Oコマンド(例えば、リードI/Oコマンドなど)にヒント情報が埋め込まれる。ハウスキーピングは、例えば、ガベージコレクション(不連続な空き領域を使い回すための再配置にともなうリードライト処理)、および、内部コピー処理(ローカルコピーなどの転送処理))である。ハウスキーピングのプロセスは、オプショナルなデータ処理機能の一例である。
 そのようなI/Oヒントを含んだI/Oコマンドをホスト1からコントローラ310が受けた場合、ハウスキーピング処理の実行中であれば、コントローラ310(I/Oヒント処理プログラム21)は、そのハウスキーピング処理を一時停止または低優先度にする。これにより、ホストI/O(受信したI/Oコマンドに従うI/O処理)の優先度を高めることができる。
 以上、幾つかの実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実行することが可能である。
 例えば、同一I/O対象領域(上記の例では仮想セグメント)について、I/Oヒント処理プログラムは、I/Oコマンドを受信する都度にI/Oヒントを参照することに代えて、その同一I/O対象領域について処理フラグ65を更新してから一定期間内であればその同一I/O対象領域に対応した処理フラグ65に従いデータ量削減を実施するか否かを判定してもよい。
 また、例えば、ホスト1に提供される論理ボリュームは、仮想ボリューム以外の論理ボリューム、例えば、RAIDグループのような1以上のPDEVに基づく論理ボリュームであってもよい。
1:ホストシステム 2:ストレージシステム

Claims (12)

  1.  I/O特性を表す情報であるI/O特性情報が関連付けられたI/Oコマンドを受け付ける1以上のインターフェースであるインターフェース部と
     前記インターフェース部に接続された1以上のプロセッサであるプロセッサ部と、
     定められたデータ処理を実行するオプショナルなデータ処理機能と
    を有し、
     前記プロセッサ部は、
      前記受け付けたI/Oコマンドに関連付けられている前記I/O特性情報に基づいて、前記オプショナルなデータ処理機能を制御する、
    計算機システム。
  2.  前記I/Oコマンドは、そのI/Oコマンドに関連付けられているI/O特性情報またはその情報の識別情報であり、そのI/Oコマンドの一部であるI/Oヒントを含み、
     前記受け付けたI/Oコマンドに関連付けられている前記I/O特性情報は、そのI/Oコマンドに含まれているI/Oヒントから特定される情報である、
    請求項1記載の計算機システム。
  3.  前記プロセッサ部は、
      1以上の論理領域の各々についてI/Oヒントとオプショナルなデータ処理機能の有効性である機能有効性との対応関係を表す情報であるI/Oヒントルール情報を参照して、前記受け付けたI/Oコマンドに含まれているI/Oヒントと、そのI/Oコマンドに従うI/O先とに対応した機能有効性を基に、前記処理対象について前記オプショナルなデータ処理機能を制御する、
    請求項2記載の計算機システム。
  4.  前記受け付けたI/Oコマンドには、それぞれ容量プールから動的に物理セグメントが割り当てられ得る複数の仮想セグメントで構成された論理ボリュームである仮想ボリュームが指定されており、
     前記容量プールは、異なる種類の複数の記憶デバイス群にそれぞれ対応した複数のティアを有し、
     前記複数のティアの各々は、そのティアの基になっている記憶デバイス群に基づく複数の物理セグメントで構成されており、
     前記複数の記憶デバイス群の各々は、その記憶デバイス群に対応した種類の1以上の記憶デバイスであり、
     前記I/Oヒントルール情報は、前記複数の仮想セグメントの各々について、I/Oヒントとオプショナルなデータ処理機能の有効性とティア位置との対応関係を表す情報であり、
     前記ティア位置は、ティアの種類を意味し、
     前記受け付けたI/Oコマンドに従うI/O対象仮想セグメントに割り当てられる物理セグメントは、前記I/Oヒント及び前記I/O先に対応したティア位置に従うティア内の物理セグメントである、
    請求項3記載の計算機システム。
  5.  前記プロセッサ部は、
      前記I/O対象仮想セグメントについて、前回のティア位置および機能有効性のうちの少なくともティア位置が今回のティア位置および機能有効性のうちの少なくともティア位置と異なっていれば、前記I/O対象仮想セグメントの割当先を、前回のティア位置および機能有効性に従うティア内の物理セグメントから今回のティア位置および機能有効性に従うティア内の物理セグメントに変更する、
    請求項4記載の計算機システム。
  6.  前記受け付けたI/Oコマンドに含まれているI/Oヒントは、アプリケーションプログラムおよびアドレスのうちの少なくとも1つとI/Oヒントとの対応関係を表す情報であるI/Oヒントプロファイル情報から特定されたI/Oヒントであって、そのI/Oコマンドの発行元アプリケーションプログラムとそのI/Oコマンドに従うI/O先アドレスとのうちの少なくとも1つに対応するI/Oヒントである、
    請求項5記載の計算機システム。
  7.  前記1以上の論理領域は、1以上の論理ボリュームである、
    請求項3記載の計算機システム。
  8.  前記受け付けたI/Oコマンドに含まれているI/Oヒントは、アプリケーションプログラムおよびアドレスのうちの少なくとも1つとI/Oヒントとの対応関係を表す情報であるI/Oヒントプロファイル情報から特定されたI/Oヒントであって、そのI/Oコマンドの発行元アプリケーションプログラムとそのI/Oコマンドに従うI/O先アドレスとのうちの少なくとも1つに対応するI/Oヒントである、
    請求項1記載の計算機システム。
  9.  前記オプショナルなデータ処理機能は、圧縮機能および重複排除機能のうちの少なくとも1つであるデータ量削減機能である、
    請求項1記載の計算機システム。
  10.  前記オプショナルなデータ処理機能の制御とは、前記I/Oコマンドを受け付けたときに前記オプショナルなデータ処理機能の実行中であり、且つ、そのI/Oコマンドに関連付けられたI/O特性情報がそのオプショナルなデータ処理機能の実行を一時停止又は低優先度とすることを意味する情報であれば、そのオプショナルなデータ処理機能の実行を一時停止又は低優先度とすることである、
    請求項1記載の計算機システム。
  11.  前記オプショナルなデータ処理機能の制御とは、前記I/Oコマンドに従う処理対象について前記オプショナルなデータ処理機能を実行するか否かを判定することである、
    請求項1記載の計算機システム。
  12.  I/O特性を表す情報であるI/O特性情報が関連付けられたI/Oコマンドを受け付け、
     前記受け付けたI/Oコマンドに関連付けられている前記I/O特性情報に基づいて、定められたデータ処理を実行するオプショナルなデータ処理機能を制御する、
    記憶制御方法。
PCT/JP2016/077209 2016-09-15 2016-09-15 オプショナルなデータ処理機能を有するストレージシステムを含んだ計算機システム、および、記憶制御方法 WO2018051446A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/077209 WO2018051446A1 (ja) 2016-09-15 2016-09-15 オプショナルなデータ処理機能を有するストレージシステムを含んだ計算機システム、および、記憶制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/077209 WO2018051446A1 (ja) 2016-09-15 2016-09-15 オプショナルなデータ処理機能を有するストレージシステムを含んだ計算機システム、および、記憶制御方法

Publications (1)

Publication Number Publication Date
WO2018051446A1 true WO2018051446A1 (ja) 2018-03-22

Family

ID=61619057

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2016/077209 WO2018051446A1 (ja) 2016-09-15 2016-09-15 オプショナルなデータ処理機能を有するストレージシステムを含んだ計算機システム、および、記憶制御方法

Country Status (1)

Country Link
WO (1) WO2018051446A1 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005157711A (ja) * 2003-11-26 2005-06-16 Hitachi Ltd アクセスパターンを学習する記憶装置
JP2008269015A (ja) * 2007-04-16 2008-11-06 Hitachi Ltd 記憶システム及びその制御方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005157711A (ja) * 2003-11-26 2005-06-16 Hitachi Ltd アクセスパターンを学習する記憶装置
JP2008269015A (ja) * 2007-04-16 2008-11-06 Hitachi Ltd 記憶システム及びその制御方法

Similar Documents

Publication Publication Date Title
US20210157523A1 (en) Storage system
US9946642B2 (en) Distributed multimode storage management
US10133511B2 (en) Optimized segment cleaning technique
US9009437B1 (en) Techniques for shared data storage provisioning with thin devices
US20200073586A1 (en) Information processor and control method
US10503424B2 (en) Storage system
US10359967B2 (en) Computer system
CN108604165B (zh) 存储装置
US9778860B2 (en) Re-TRIM of free space within VHDX
WO2015114809A1 (ja) 階層化ストレージシステム、ストレージコントローラ、及び階層間のデータ移動を代替する方法
WO2015162758A1 (ja) ストレージシステム
KR20150105323A (ko) 데이터 스토리지 방법 및 시스템
GB2536514A (en) Storage device and method for controlling storage device
JP2013532862A (ja) ストレージシステム及びその制御情報の管理方法
US8694563B1 (en) Space recovery for thin-provisioned storage volumes
JP2019079113A (ja) ストレージ装置、データ管理方法、及びデータ管理プログラム
US20150363134A1 (en) Storage apparatus and data management
JP2019079448A (ja) ストレージシステム及びストレージシステムの制御方法
US11144202B2 (en) Volume management apparatus, volume management method, and volume management program
US20190095132A1 (en) Computer system having data amount reduction function and storage control method
US20190243758A1 (en) Storage control device and storage control method
CN113918087B (zh) 存储装置以及用于管理存储装置中的命名空间的方法
JP7190421B2 (ja) ストレージシステム及びボリューム複製方法
US11079956B2 (en) Storage system and storage control method
US10853257B1 (en) Zero detection within sub-track compression domains

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 16916229

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP