WO2015162766A1 - Storage system and semiconductor storage device - Google Patents

Storage system and semiconductor storage device Download PDF

Info

Publication number
WO2015162766A1
WO2015162766A1 PCT/JP2014/061611 JP2014061611W WO2015162766A1 WO 2015162766 A1 WO2015162766 A1 WO 2015162766A1 JP 2014061611 W JP2014061611 W JP 2014061611W WO 2015162766 A1 WO2015162766 A1 WO 2015162766A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
extent
drive
storage
semiconductor memory
Prior art date
Application number
PCT/JP2014/061611
Other languages
French (fr)
Japanese (ja)
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/JP2014/061611 priority Critical patent/WO2015162766A1/en
Publication of WO2015162766A1 publication Critical patent/WO2015162766A1/en

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/08Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers from or to individual record carriers, e.g. punched card, memory card, integrated circuit [IC] card or smart card

Definitions

  • the present invention relates to a storage system and a semiconductor storage device.
  • the storage system has a large number of drives for storing data (HDD (Hard Disk Drive), SSD (Solid State Drive), etc.) and a storage controller for controlling the drive, and the computer has a large capacity data storage space. It is intended to provide.
  • HDD Hard Disk Drive
  • SSD Solid State Drive
  • the storage system can perform high-speed I / O processing by using a plurality of drives in a RAID (Redundant Array of Independent (or Independent) Disks) configuration.
  • the storage system is characterized in that parity data is generated based on a plurality of user data and stored in the drive, and has high fault tolerance against a drive failure.
  • Capacity virtualization is a technique for providing a virtual capacity larger than the physical capacity of a storage system to a host computer as a virtual volume.
  • capacity virtualization a plurality of drives in a storage system are first created to create a pool, and storage areas in the pool are managed in units of extents of a predetermined size. Then, in response to a write request from the host computer to the virtual volume, the storage system allocates an extent to the area in the virtual volume specified by the write request. Accordingly, the user can suppress the physical capacity of the drive to the minimum necessary in accordance with the usage application from time to time, thereby realizing cost reduction.
  • data may be moved between drives for the purpose of appropriate data arrangement.
  • Data movement is performed in extent units.
  • the storage system switches the drive to which the extent is placed according to the access characteristics per unit time (I / O frequency or the like) for each extent.
  • I / O frequency access characteristics per unit time
  • extent data having a high I / O frequency is preferentially stored in a high-performance drive. This reduces the amount of high-performance drive required and reduces the cost of the storage system when designing a configuration that meets system performance and capacity requirements compared to storing data on a single type of drive. Reduction is possible.
  • data movement processing in units of extents is referred to as extent rearrangement processing.
  • the storage system changes the mapping of the extent and the virtual volume before the data movement to the mapping of the extent and the virtual volume after the data movement. Thereby, data movement can be performed without making the host computer recognize.
  • the extent rearrangement process is performed asynchronously with the host computer I / O process. Therefore, if the extent rearrangement takes time, the I / O processing performance of the host computer deteriorates. That is, extent rearrangement is performed to improve performance, but this processing also causes performance degradation. For this reason, it is better that the data movement time for extent rearrangement is short.
  • data pre-fetching is a technique for copying data in advance from a low-speed storage medium to a high-speed storage medium such as DRAM in the drive.
  • a host computer designates a logical address range to a storage device (for example, a flash memory card) and issues a prefetch command, and the flash memory card stores data corresponding to the logical address range in the flash memory
  • a storage device for example, a flash memory card
  • the flash memory card stores data corresponding to the logical address range in the flash memory
  • Patent Document 1 has the following problems.
  • the data movement between the drives performed by the storage controller cannot be recognized by the host computer and is executed asynchronously with the I / O processing by the host computer, so the host computer instructs the drive to read ahead. I cannot grasp the opportunity.
  • the host computer cannot recognize the data movement, it is impossible for the host computer to specify a logical address to be prefetched for a plurality of drives constituting the RAID group.
  • the storage system Since the storage system has a large number of drives, it is overhead to include the logical address range information in the prefetch command every time the storage controller sends the prefetch command to the drive.
  • an object of the present invention is to improve the response performance when the storage controller reads data from the drive by performing read-ahead in the drive while reducing the load on the storage controller that controls access to a large number of drives. is there.
  • a storage system includes a plurality of semiconductor storage devices and a storage controller.
  • Each of the plurality of semiconductor memory devices includes a plurality of nonvolatile semiconductor memory chips, a cache memory that temporarily stores data, and a processor that reads data from the plurality of nonvolatile semiconductor memory chips and stores the data in the cache memory.
  • the storage controller controls a plurality of semiconductor storage devices as a first RAID group, and stores a plurality of user data and parity data generated from the plurality of user data in the plurality of semiconductor storage devices.
  • the processor provides storage areas of the plurality of nonvolatile semiconductor memory chips to the storage controller in association with the logical address space.
  • the storage controller constitutes a plurality of extents that are logical storage areas.
  • the storage controller divides each logical address space of the plurality of semiconductor storage devices into a plurality of sub logical storage areas, and each of the plurality of extents includes one from the plurality of sub logical storage areas of the plurality of semiconductor storage devices. Match each one.
  • the storage controller transmits configuration information indicating the correspondence between the arrangement of user data and parity data in the logical address space and the plurality of extents to each of the plurality of semiconductor storage devices.
  • the storage controller transmits to each of the plurality of semiconductor storage devices a prefetch command that designates the first extent of the plurality of extents and instructs to store data in the cache memory.
  • the processor of the semiconductor storage device specifies user data and parity data corresponding to the first extent based on the configuration information in response to reception of the prefetch command, and the specified user data and parity data are stored in a plurality of nonvolatile semiconductor memories. Read from the chip and store in cache memory.
  • FIG. 10 is a schematic diagram illustrating extent migration processing in the storage system according to the first embodiment. It is a block diagram which shows the structural example of a storage system. It is a block diagram which shows the structural example of SSD (Solid State Drive). It is a schematic diagram explaining the example of the prefetch process in SSD. It is a schematic diagram explaining a virtual volume. It is a block diagram which shows the structural example of an extent. It is a block diagram which shows the example of the information hold
  • the structural example of a drive management table is shown. 3 shows an example of the configuration of a RAID management table. The structural example of a pool management table is shown. The structural example of an extent management table is shown.
  • the structural example of a virtual volume management table is shown.
  • the structural example of a structure information management table is shown. It is a flowchart which shows the example of a task process in a storage controller. It is a flowchart which shows the example of a structure change process. It is a flowchart which shows the example of a write process. It is a flowchart which shows the example of a read process. It is a flowchart which shows the example of an extent movement process. It is a flowchart which shows the example of the I / O process of a drive controller. It is a flowchart which shows the example of the extent prefetch process in a drive controller.
  • FIG. 10 is a schematic diagram for explaining a read process in an extent movement process in the second embodiment.
  • 12 is a flowchart illustrating an example of extent movement processing according to the second embodiment.
  • 12 is a flowchart illustrating an example of extent prefetch processing in the drive controller according to the second embodiment.
  • FIG. 1 is a schematic diagram for explaining extent migration processing in the storage system 10 according to the first embodiment.
  • the storage system 10 includes SSDs 701 to 704 and HDDs (Hard Disk Drives) 705 to 708, which are examples of drives (typically nonvolatile storage devices), and a storage controller 100 that controls these drives.
  • the SSDs 700 to 704 are combined to form a RAID 5 RAID group 500
  • the HDDs 705 to 708 are combined to form a RAID 5 RAID group 600.
  • the storage controller 100 manages the storage area of the RAID group 500 (600) by dividing it into partitions of a predetermined size. This partition is called an “extent”. Therefore, as shown in FIG. 1, the extent 70 (80) includes data held by each of the plurality of SSDs 701 to 704 (HDDs 705 to 708).
  • the storage system 10 is connected to the host computer 30 and provides the virtual volume 60 to the host computer 30.
  • the virtual volume 60 is a virtual volume configured according to thin provisioning, for example.
  • the storage controller 100 receives a write request for the virtual volume 60 from the host computer 30, the storage controller 100 allocates the extent 70 in the RAID group 500 to the virtual extent 610 of the virtual volume 60, and writes the data accompanying the write request to the extent 70.
  • this state is referred to as the extent 70 being the reference destination of the virtual extent 610.
  • the extent 70 includes a predetermined number of user data D1 to D12 and parity data P1 to P4.
  • the storage controller 100 executes extent movement processing for moving the data of the extent 70 in the RAID group 500 to the extent 80 in the RAID group 600 as necessary, for example.
  • the RAID group 500 is composed of SSDs with short I / O response time but small capacity
  • the RAID group 600 is composed of HDDs with long I / O response time but large capacity.
  • the migration source RAID group 500 and the migration destination RAID group 600 have the same RAID configuration and the same extent size.
  • the migration destination RAID group may be composed of a plurality of SSDs.
  • the storage controller 100 moves the data of the extent 70 in the RAID group 500, which is the reference destination of the virtual extent 610, to the extent 80 in the RAID group 600, Extent movement processing for switching the reference destination of the virtual extent 610 to the extent 80 is executed.
  • the storage controller 100 moves the data group held in the extent 80, which is the reference destination of the virtual extent 610, to the extent 70, and changes the reference destination of the virtual extent 610.
  • An extent movement process for switching to the extent 70 is executed.
  • the storage controller 100 executes extent migration processing in which a virtual extent having a high I / O frequency is referred to as a RAID group 500 configured with an SSD having a short I / O response time. Thereby, the response time with respect to the host computer 30 of the storage system 100 can be shortened.
  • the extent movement processing may be called “extent relocation processing”.
  • the size of one extent is generally relatively large from several MB to several GB. Therefore, the extent movement process for moving large data is a process that is heavy on the storage controller 100 and the drive and requires time.
  • the present embodiment is intended to shorten the time required for extent movement processing.
  • FIG. 2 is a schematic diagram for explaining an example of prefetching processing in the SSD 701. This process is the same for the SSDs 702 to 704.
  • the SSD 701 holds user data D1, D5, D9 and parity data P4. These data D1, D5, D9 and P4 belong to the extent 70.
  • the storage system 10 executes the following processing.
  • the storage controller 100 generates a prefetch command having an extent number that is information that can identify the extent 70 of the migration source, and transmits the prefetch command to the drive controller 710. Since the extent 70 is configured across a plurality of SSDs 701 to 704, the storage controller 100 transmits a prefetch command to each of the SSDs 701 to 704. When moving a plurality of extents, the storage controller 100 may generate a prefetch command having a plurality of extent numbers.
  • the drive controller 710 that has received the prefetch command refers to the configuration information management table 2100 (see FIG. 13) and identifies the data D1, D5, D9, and P4 included in the migration source extent 70.
  • the drive controller 710 transfers the identified data D1, D5, D9, and P4 from the flash memory chip (hereinafter “FM”) 780 to the cache area 2000 (see FIG. 4) of the memory 716.
  • FM flash memory chip
  • the storage controller 100 transmits, for example, a read command for the user data D1 to the drive controller 710 in the extent movement process.
  • the drive controller 710 that has received the read command transmits the user data D1 in the cache area 2000 to the storage controller 100 because the user data D1 has already been stored in the cache area 2000 (because of a cache hit). The same applies to the other data D5, D9 and P4.
  • Storage controller 100 transmits a prefetch command to drive controller 710 as described above before executing the extent movement process. Thereafter, the storage controller 100 executes extent migration processing. As a result, the drive controller 710 can store data that will be read later in the cache area 2000 based on the prefetch command. That is, the drive controller 710 can return read data in a short time in response to a read command received thereafter. That is, according to the present embodiment, the time required for the extent movement processing can be shortened.
  • FIG. 3 is a block diagram illustrating a configuration example of the storage system 10.
  • a host computer 30 is connected to the storage system 10 via a SAN (Storage Area Network) 20. There may be a plurality of host computers 30.
  • SAN Storage Area Network
  • the host computer 30 and the storage system 10 transmit and receive data via the SAN 20.
  • the SAN 20 is, for example, a Fiber Channel, a SCSI (Small Computer System Interface), an iSCSI (Internet Small System System SI), or a USB (Universal Serial Bus A 94), or a USB (Universal Serial Bus S 94).
  • the SAN 20 may be another communication network such as a LAN (Local Area Network).
  • the host computer 30 is a type of host device that uses the storage system 10.
  • the host computer 30 is, for example, an application server or a database server.
  • the host computer 30 transmits a read request or a write request to the storage system 10 to read data from the storage system 10 or write data to the storage system 10.
  • the host computer 30 may transmit a request regarding the storage configuration to the storage system 10 to cause the storage system 10 to configure a RAID group, change the configuration of the RAID group, or generate a virtual volume 80.
  • a request related to the storage configuration may be transmitted by a management computer (not shown) that manages the storage system 10 instead of the host computer 30.
  • the storage system 10 includes a storage controller 100, SSDs 701 to 704, and HDDs 705 to 708.
  • the SSDs 701 to 704 and the HDDs 705 to 708 may be stored in the drive box 110.
  • the storage controller 100 has a function of controlling the SSDs 701 to 704 and the HDDs 705 to 708.
  • the storage controller 100 includes a processor 104, a host I / F 101, a drive I / F 107, a memory 103, and an internal bus 102 that connects these elements 104, 101, 107, and 103.
  • Each of the processor 104, the memory 103, the host I / F 101, and the drive I / F 107 may be one, or two or more.
  • the processor 104 implements various functions of the storage system 10 by executing various operations according to an arithmetic circuit or a computer program and controlling the other elements 101, 103, and 107.
  • the memory 103 stores computer programs and data used by the processor 104.
  • the memory 103 includes, for example, a DDR3-DRAM, an MRAM (Magnetorative Random Access Memory), or a FeRAM (Ferroelectric Random Access Memory).
  • the host I / F 101 is an I / F device for connecting the storage controller 100 to the SAN 20.
  • the drive I / F 107 is an I / F device for connecting SSDs 701 to 704 and HDDs 705 to 708 as types of drives to the storage controller 100.
  • the internal bus 102 is a path for the elements 104, 101, 107 and 103 to transmit data bidirectionally.
  • the internal bus 102 is configured by, for example, PCI (Peripheral Component Interconnect).
  • the internal bus 102 may be connected to devices (none of which are shown) that realize a switch function, a DMA transfer function, a RAID calculation function, and the like related to data transmission. These devices may be configured by ASICs (Application Specific Integrated Circuits).
  • FIG. 4 is a block diagram illustrating a configuration example of the SSD 701. Note that the SSDs 702 to 704 also have similar configuration examples.
  • the SSD 701 includes a drive controller 710 and a plurality of FM 780 that are a kind of nonvolatile semiconductor storage media connected to the drive controller 710.
  • the FM780 is, for example, a NAND type or NOR type flash memory.
  • the FM 780 reads and writes data in units of pages that are a section of the storage area.
  • the FM 780 may be, for example, a phase change memory, an MRAM that is a magnetoresistive memory, a ReRAM (Resistance Random Access Memory) that is a resistance change type memory, or an FeRAM that is a ferroelectric memory.
  • the drive controller 710 includes a processor 713, a memory 716, a drive I / F 711, an FM controller 717, a compression / decompression circuit 718, and an internal bus 712 that connects these elements 713, 716, 711, 717, and 718. Is done.
  • Each of the processor 713, the memory 716, and the drive I / F 711 may be one, or two or more.
  • the processor 713 implements various operations according to an arithmetic circuit or a computer program, and controls other elements 711, 716, 718, 717, thereby realizing various functions of the SSD.
  • the memory 716 stores computer programs and data used by the processor 713.
  • the memory 716 is a storage medium that can read / write data at a higher speed than the FM 780, and is, for example, a DRAM.
  • the memory 716 has a cache area 2000. In the cache area 2000, data to be written to the FM 780 and data read from the FM 780 are temporarily stored.
  • the data read from the FM 780 includes data read in response to the pre-read command.
  • the memory 716 includes a configuration information management table 2100. Details of the configuration information management table 2100 will be described later.
  • the drive I / F 711 is an I / F device for connecting the drive controller 710 to the drive I / F 107 of the storage system 10.
  • the compression / decompression circuit 718 is a circuit for compressing data to be written to the FM 780 or decompressing data read from the FM 780.
  • the function of the compression / decompression circuit may be realized by the processor 713.
  • the FM controller 717 controls a plurality of FM 780 connected to the FM controller 717.
  • the FM controller 717 controls reading and writing of data with respect to the FM 780.
  • the internal bus 712 is a path for the elements 713, 716, 711, 717, and 718 to transmit data bidirectionally.
  • the internal bus 712 may be connected to a device (not shown) that implements a switch function related to data transmission. This device may be configured by ASICs.
  • the processor 713 provides the storage controller 100 with the physical storage areas of the plurality of FM 780s associated with a logical address space (corresponding to an LBA (Logical Block Address) described later).
  • the physical storage area is composed of a plurality of blocks, and the blocks are data erasure units.
  • the block is composed of a plurality of pages, and the page is a unit of data read / write.
  • the memory 716 stores information (logical-physical mapping table) indicating the correspondence between the logical address space and the physical storage area (a plurality of pages).
  • the storage controller 100 transmits a read command / write command by designating a logical address.
  • the processor 713 in the SSD 700 receives a read command or a write command, the processor 713 identifies a page on the physical storage area from a logical address specified by the command based on the logical-physical mapping table, and executes a read or write process.
  • the HDDs 705 to 708 include a drive controller 710 and a storage medium controlled by the drive controller 710, although the FM 780, the FM controller 717, and the like are different from the SSD 701 in FIG. Are the same and will not be described.
  • FIG. 5 is a schematic diagram illustrating virtual volumes and pools.
  • the storage controller 100 configures a pool 500 by collecting storage areas of a plurality of RAID groups 200, 300, and 400.
  • the pool 500 may be configured by different types of RAID groups.
  • the pool 500 includes a RAID group 200 configured by SSD, a RAID group 300 configured by SAS-HDD, and a RAID group 400 configured by SATA-HDD.
  • the I / O speed increases in the order of SATA-HDD, SAS-HDD, and SSD, but the cost per unit capacity (bit cost) increases in the order of SATA-HDD, SAS-HDD, and SSD.
  • tiers are set based on the types of drives that make up the RAID group. For example, in order of increasing I / O speed, the RAID group 200 composed of SSDs is tier 0, the RAID group 300 composed of SAS-HDDs is tier 1, and the RAID group 400 composed of SATA-HDDs is Tier 2 is set.
  • the virtual volume 600 is a virtual logical volume that the host computer 30 recognizes in order to store user data.
  • the virtual volume 600 has a virtual address (logical address constituting the virtual volume), and a virtual extent is configured by dividing the virtual address into a predetermined range.
  • the capacity defined as the capacity of the virtual volume 600 can be a storage capacity larger than the total capacity of the storage media included in the storage system 10.
  • the virtual volume 600 is assumed to be composed of an arbitrary number of virtual extents 601 to 607.
  • the storage controller 100 allocates extents constituting the pool 500 to the virtual extents of the virtual volume 600. For example, when the storage controller 100 receives a write request for a certain virtual address range in the virtual volume 600, the storage controller 100 specifies a virtual extent (for example, a virtual extent 602) that includes the virtual address range. Then, the storage controller 100 allocates the extent 242 of the RAID group 200 that constitutes the pool 500 to the specified virtual extent 602, and stores data associated with the write request. For example, none of the extents is allocated to the virtual extent 605 that does not include the address for which the write request has been made.
  • a virtual extent for example, a virtual extent 602
  • the storage controller 100 allocates the extent 242 of the RAID group 200 that constitutes the pool 500 to the specified virtual extent 602, and stores data associated with the write request. For example, none of the extents is allocated to the virtual extent 605 that does not include the address for which the write request has been made.
  • one extent is allocated to one virtual extent, but a configuration may be used in which a plurality of extents are allocated to one virtual extent.
  • the storage controller 100 may execute extent movement processing between RAID groups with different tiers. For example, when the I / O frequency for the virtual extent 602 is low, the storage controller 100 executes an extent migration process for migrating the reference extent 242 of the virtual extent 602 to the RAID group 300 of the tier 1. This is because maintaining extents with a low I / O frequency in a Tier 0 RAID group with a high bit cost results in poor cost performance.
  • FIG. 6 is a block diagram showing a configuration example of extents.
  • the RAID group 200 has a “3D + 1P” configuration of RAID 5 based on the SSDs 701 to 704.
  • user data and parity data are rotated to SSDs 701 to 704 and stored in order.
  • user data D1 is stored in SSD 711
  • user data D2 is stored in SSD 712
  • user data D3 is stored in SSD 713
  • parity data P1 generated from D1 to D3 is stored in SSD 714.
  • the set of D1, D2, D3, and P1 is called a stripe column 901.
  • D4 is stored in SSD 714
  • D5 is stored in SSD 711
  • D6 is stored in SSD 712
  • P2 generated from D4 to D6 is stored in SSD 713.
  • the SSD storing parity data is different.
  • parity data is generated by an exclusive OR operation (XOR operation) of a plurality of user data in each stripe column.
  • P1 is generated by an exclusive OR operation of D1, D2, and D3.
  • the storage controller 100 may include an exclusive OR circuit and generate parity data, or the processor 104 may generate parity data by a program.
  • the drive may include an exclusive OR operation circuit to generate parity data.
  • the cache area 1000 of the memory 103 is composed of a plurality of segments 500 having a predetermined size. Therefore, the size of data that can be stored in the cache area at a time is equal to or smaller than the size of the segment 500. For example, when the size of the segment and the stripe width are the same, the storage controller 100 stores D1 to D16 and P1 to P6 included in the extent 70 in the segment 500 of the cache area in 24 times.
  • the number of user data D until the parity data P first appears varies depending on the position (order) of the SSD in the RAID group 200.
  • the SSDs 701 to 704 have the following relationship.
  • the SSD 701 stores the first parity data P after the three user data D.
  • the SSD 702 stores the first parity data P after the two user data D.
  • the SSD 703 stores the first parity data P after one user data D.
  • the SSD 704 stores the first parity data P at the top.
  • each of the plurality of drives receives “n” and “m” (n and m are integers of 1 or more) of “nD + mP” indicating the RAID configuration, the stripe width size, and the RAID group from the storage controller 100.
  • the configuration information including the position of the drive, the size of the extent, and the extent number for uniquely identifying the extent, the extent number and the LBA (
  • a configuration information management table 2100 for specifying the correspondence with the drive LBA can be generated.
  • FIG. 7 is a block diagram illustrating an example of information held in the memory 103 included in the storage controller 100.
  • the memory 103 included in the storage controller 100 has a table area 1001 and a cache area 1000.
  • a drive management table 1100 In the table area 1001, a drive management table 1100, a RAID management table 1200, a pool management table 1300, an extent management table 1400, and a virtual volume management table 1500 are stored.
  • the drive management table 1100 holds information about drives.
  • the RAID management table 1200 holds information related to RAID groups.
  • the pool management table 1300 holds information regarding the pool.
  • the extent management table 1400 holds information related to extents.
  • the virtual volume management table 1500 holds information regarding virtual volumes. Details of these tables will be described later.
  • the cache area 1000 is composed of a plurality of segments 500.
  • the storage controller 100 reads data from the drive with a size equal to or smaller than the segment, and stores (caches) the data in the segment 500 of the cache area 1000.
  • the storage controller 100 divides the write data transmitted from the host computer 30 into a size equal to or smaller than the segment and stores (caches) it in the segment 500 of the cache area 1000.
  • FIG. 8 shows a configuration example of the drive management table 1100.
  • the drive management table 1100 has information regarding each drive controlled by the storage controller 100.
  • the drive management table 1100 has a record having a drive number 1101, a drive type 1102, and a logical capacity 1103 as attributes.
  • the drive number 1101 is information for uniquely identifying the drive.
  • the drive type 1102 is information indicating the type of drive corresponding to the drive number 1101.
  • the drive type 1102 is, for example, SSD, SAS-HDD, SATA-HDD, or the like.
  • the logical capacity 1103 is information representing the logical storage capacity of the drive.
  • a record 1110 indicates that the drive corresponding to the drive number 1101 “0” indicates that the drive type 1102 is “SSD” and the logical capacity 1103 is “800 GB”.
  • FIG. 9 shows a configuration example of the RAID management table 1200.
  • the RAID management table 1200 has information regarding RAID groups controlled by the storage controller 100.
  • the RAID management table 1200 includes a record having a RAID number 1201, a drive type 1202, a RAID level 1203, a RAID configuration 1204, a RAID configuration drive 1205, and a tier 1208 as attributes.
  • the RAID number 1201 is information for uniquely identifying a RAID group.
  • the drive type 1202 is the same information as the drive type 1102 in FIG. Since the RAID group is composed of the same type of drive, one drive type 1202 is associated with one RAID number 1201.
  • the RAID level 1203 is information representing the level of the RAID group. Examples of the RAID level include “RAID1 + 0”, “RAID1”, “RAID3”, “RAID4”, “RAID5”, “RAID6”, and the like.
  • the RAID configuration 1204 is information representing the configuration of a RAID group. “MD + nP” indicates that there are m pieces of data in the stripe column and n pieces of parity. For example, when three drives store user data and one drive stores parity data for one stripe column, the RAID configuration is expressed as “3D + 1P”.
  • the RAID configuration drive 1205 is information representing the drive number of each drive constituting the RAID group.
  • the tier 1206 is information representing a tier set in the RAID group. For example, a tier “0” is assigned to a RAID group configured with an SSD having the fastest I / O speed, a tier “1” is assigned to a RAID group configured with a SAS-HDD having the next fastest I / O speed, Tier “2” is set in the RAID group configured by the SATA-HDD having a low I / O speed.
  • the record 1210 includes a RAID group corresponding to the RAID number 1201 “0” composed of “SSD” (1202) corresponding to the drive numbers “1”, “10”,. Represents.
  • the RAID group corresponding to the RAID number 1201 “0” is configured by “RAID5” (1203) of “3D + 1P” (1204), and the RAID group has a tier “0” (1206). Indicates that is set.
  • FIG. 10 shows a configuration example of the pool management table 1300.
  • the pool management table 1300 has information regarding the pool controlled by the storage controller 100.
  • the pool management table 1300 includes a record having a pool number 1301, a RAID number 1302, a RAID remaining capacity 1303, and a pool remaining capacity 1304 as attributes.
  • the pool number 1301 is information for uniquely identifying the pool.
  • the RAID number 1302 is the same information as the RAID number 1201 of FIG. When one pool is composed of a plurality of RAID groups, a plurality of RAID numbers are associated with one pool number.
  • the RAID remaining capacity 1303 is information indicating the remaining capacity (usable capacity) of the RAID group.
  • the pool remaining capacity 1304 is information indicating the remaining capacity (usable capacity) of the pool. That is, the pool remaining capacity 1304 is a total value of the remaining capacity of the RAID groups included in the pool.
  • the record 1310 indicates that the pool corresponding to the pool number 1301 “0” is configured by the RAID group corresponding to the RAID numbers “0”, “1”,..., “N” (1302).
  • the remaining capacity 1303 of the RAID group corresponding to the RAID number 1302 “0” is “123 GB”
  • the remaining capacity 1304 of the pool corresponding to the pool number 1301 “0” is “3456 GB”.
  • FIG. 11 shows a configuration example of the extent management table 1400.
  • the extent management table 1400 has information regarding extents controlled by the storage controller 100.
  • the extent management table 1400 has a record having extent number 1401, RAID number 1402, extent size 1403, stripe width 1404, status 1405, extent LBA 1406, drive number 1407, and drive LBA 1408 as attributes.
  • the extent number 1401 is information for uniquely identifying an extent.
  • the RAID number 1402 is the same information as the RAID number 1201 of FIG.
  • the extent size 1403 is information representing the extent size (for example, Byte).
  • the stripe width 1404 is information representing the size of the extent stripe width (for example, Byte).
  • Status 1405 is information indicating the status of the extent.
  • the status 1405 records the virtual volume number to which the extent is allocated and the virtual extent number.
  • the status 1405 is “N / A”. “0, 3” of the status 1405 in FIG. 11 indicates that the virtual extent number “3” of the virtual volume number “0” is assigned.
  • the in-extent LBA 1406 is information representing an LBA indicating one section of the storage area configured by the RAID group.
  • the drive number 1407 is the same information as the drive number 1102 in FIG.
  • the in-drive LBA 1408 is information representing an LBA range indicating a section of the storage area of the drive.
  • a record 1410 has an extent corresponding to the extent number 1401 “0” belonging to the RAID group corresponding to the RAID number 1402 “1”, and the virtual extent number “3” (1405) of the virtual volume number “0”. Indicates that it is allocated to a virtual extent corresponding to.
  • the record 1410 represents that the extent size 1403 is “1 GB” and the stripe width 1404 is “256 KB” in the RAID group corresponding to the RAID number 1402 “1”.
  • the extent corresponding to the extent number 1401 “0” is the LBA in the extent corresponding to the RAID number 1402 “1” LBA 1406 “D1”, “D2”, “D3”, “P1”,. It represents that it is comprised by.
  • the record 1410 indicates that the range in the drive LBA 1408 “0 KB to 255 KB” of the drive corresponding to the drive number 1407 “0” is assigned to the in-extent LBA 1406 “D1”.
  • FIG. 12 shows a configuration example of the virtual volume management table 1500.
  • the virtual volume management table 1500 has information on the virtual volume 60 that the storage controller 100 provides to the host computer 30.
  • the virtual volume management table 1500 includes a virtual volume number 1501, a virtual capacity 1502, a real used capacity 1503, a virtual address 1510, a virtual extent number 1504, a RAID number 1505, an extent number 1506, a tier 1507, and a read. It has a record with IOPS 1508 and write IOPS 1509 as attributes.
  • the virtual volume 600 has a virtual address (logical address constituting the virtual volume), and a virtual extent is configured by dividing the virtual address into a predetermined range.
  • the virtual volume number 1501 is information for uniquely identifying the virtual volume.
  • the virtual capacity 1502 is information representing the entire capacity of the virtual volume.
  • the actual used capacity 1503 is information indicating the capacity actually used in the virtual volume.
  • the actual used capacity 1503 is equal to the capacity allocated from the pool to the virtual volume.
  • the virtual address 1510 indicates an address that uniquely identifies an area in the virtual volume.
  • the virtual extent number 1504 is information for uniquely identifying a virtual extent. As shown in FIG. 12, the virtual address of the virtual volume is divided for each predetermined virtual address range (1510) and associated with the virtual extent (1504).
  • the RAID number 1505, extent number 1506, and tier 1507 are the same information as the RAID number 1201, extent number 1401, and tier 1206 described above.
  • the read IOPS 1508 is information indicating the number of reads that have occurred per unit time for the extent.
  • the write IOPS 1509 is information indicating the number of writes that have occurred in unit time for the extent.
  • the read IOPS 1508 and the write IOPS 1509 may be collectively referred to as “statistical information”. That is, the statistical information is information representing the I / O frequency for the extent.
  • the statistical information is used to determine an extent to be subjected to extent movement processing. For example, the storage controller 100 sets an extent corresponding to an extent number for which the read IOPS 1508 or the write IOPS 1509 is smaller than a certain threshold as a migration target to a RAID group that is a lower tier (that is, the I / O speed is low). .
  • the storage controller 100 sets the extent corresponding to the extent number for which the read IOPS 1508 or the write IOPS 1509 is larger than a certain threshold as the transfer target to the RAID group that is the upper tier (that is, the I / O speed is high). To do.
  • a record 1520 indicates that the virtual capacity 1502 of the virtual volume corresponding to the virtual volume number 1501 “0” is “800 GB” and the actual used capacity 1503 is “150 GB”.
  • the virtual volume corresponding to the virtual volume number 1501 “0” is configured by virtual extents corresponding to the virtual extent numbers 1504 “0”, “1”, “2”,. For example, this indicates that the area of the virtual address 1510 “0 to 1024” of this virtual volume is associated with the virtual extent number 1504 “0”.
  • the extent corresponding to the extent number 1506 “0” of the RAID group corresponding to the RAID number 1505 “0” is allocated to the virtual extent corresponding to the virtual extent number 1504 “0”. Represents.
  • This record 1520 indicates that the extent corresponding to the extent number 1506 “0” belongs to the RAID group of the tier 1507 “0”. This record 1520 indicates that the read IOPS 1508 in the extent corresponding to the extent number 1506 “0” is “100” and the write IOPS 1509 is “0”.
  • the RAID number 1505, extent number 1506, tier 1507, read IOPS 1508, and write IOPS 1509 corresponding to a virtual extent to which no extent has been assigned is “N / A”.
  • FIG. 13 shows a configuration example of the configuration information management table 2100.
  • the configuration information management table 2100 stored in the memory of each drive has information indicating the relationship between each drive and the extent.
  • the configuration information management table 2100 includes a record having the attributes of the RAID configuration 2101, the in-RAID drive position 2102, the stripe width 2103, the extent size 2104, the in-drive LBA 2105, the in-extent LBA 2106, and the extent number. .
  • the RAID configuration 2101, the stripe width 2103, the extent size 2104, the in-drive LBA 2105, the in-extent LBA 2108, and the extent number 2107 are the RAID configuration 1204, the stripe width 1404, the extent size 1403, the in-drive LBA 1408, the in-extent LBA 1406, and the extent.
  • the information is the same as the number 1401.
  • the in-RAID drive position 2102 is information indicating the position (order) of the own drive in the RAID group. As illustrated in FIG. 6, the arrangement of user data and parity data for each drive differs depending on the drive position in the RAID group.
  • the intra-RAID drive position 2102 is used to determine the arrangement of user data and parity data.
  • a record 2110 indicates that its own drive (that is, the drive having the configuration information management table 2100) belongs to the RAID group configured by “3D + 1P” (2101), and “first” in the RAID group. (2102).
  • the record 2110 represents that the RAID group to which the drive belongs belongs to a stripe width 2103 “256 KB” and an extent size 2104 “1 GB”.
  • the record 2110 indicates that, for example, the in-drive LBA 2105 “0 KB to 255 KB” area of the own drive is allocated to the in-extent LBA 2106 “D1” having the extent number 2107 “1”.
  • each drive controller 710 cannot normally recognize that it is controlled as a RAID group. That is, each drive controller 710 cannot normally discriminate between user data and parity data. Since the extent is also managed by the storage controller 100, each drive controller 710 cannot normally recognize the extent configuration. For this reason, in this embodiment, the drive controller 710 receives the configuration information including the RAID configuration 2101, the RAID drive position 2102, the stripe width 2103, and the extent size 2104 from the storage controller 100, so that the RAID and extent configuration can be obtained. Can be recognized.
  • the drive controller 710 can calculate the correspondence relationship between the in-drive LBA 2105, the in-extent LBA 2106, and the extent number 2107 based on these pieces of information 2101, 1022, 2103, and 2104. That is, the range of the in-drive LBA 2105 and the size of the in-extent LBA 2106 can be calculated from the stripe width 2103. Further, from the extent size 2104 and the stripe width 2103, the number of in-extent LBAs 2108 (and in-drive LBAs 2105) belonging to one extent can be calculated. Further, it can be determined from the RAID configuration 2101 and the intra-RAID drive position 2102 whether each data in the in-extent LBA 2106 is user data or parity data.
  • FIG. 14 is a flowchart showing an example of task processing in the storage controller 100.
  • the storage controller 100 periodically executes this task process.
  • the storage controller 100 determines whether or not a request related to configuration setting (initial setting or configuration change) has been received from the host computer 30 (S100).
  • the configuration change request is a request that the host computer 30 sends to the storage controller 100 when the RAID group or extent configuration is changed. Also, when a RAID group is newly added to the pool, a request for a configuration change is issued for initial setting.
  • the storage controller 100 executes configuration change processing (S101). Details of the configuration change processing will be described later (see FIG. 15).
  • the storage controller 100 determines whether a read or write request has been received from the host computer 30 (S102). If no request has been received (S102: No), the storage controller 100 proceeds to S106.
  • the storage controller 100 determines whether this request is a read or a write (S103).
  • S103 If this request is a read (S103: Read), the storage controller 100 executes a read process (S104), and proceeds to S106. Details of the read process will be described later (see FIG. 17).
  • this request is a write (S103: write)
  • the storage controller 100 executes a write process (S105) and proceeds to S106. Details of the write process will be described later (see FIG. 16).
  • the storage controller 100 determines whether or not extent rearrangement is necessary (S106).
  • the storage controller 100 executes the extent migration process (S107), and proceeds to S108. Details of the extent movement processing will be described later (see FIG. 18).
  • the storage controller 100 determines whether or not a request for stopping the storage system 10 has been received (S108).
  • the storage controller 100 executes the stop process of the storage system 10 and ends the process (END).
  • the storage controller 100 returns to S100.
  • FIG. 15 is a flowchart showing an example of the configuration change process. This configuration change process corresponds to S101 in FIG.
  • the storage controller 100 generates a RAID group according to the content of the configuration change request and updates the RAID management table 1200 (S200).
  • the configuration change request includes contents recorded in the RAID management table 1200 such as the RAID level of the RAID group after the change.
  • the storage controller 100 registers the generated RAID group in the pool and updates the pool management table 1300 (S201).
  • the storage controller 100 generates an extent for the generated RAID group and updates the extent management table 1400 (S202).
  • the storage controller 100 transmits a configuration change command including initial setting or changed configuration information to each drive constituting the RAID group (S203).
  • the configuration information includes, for example, the RAID level of the RAID group after the change, the RAID configuration (nD + mP), the drive position in RAID of each drive, the stripe width, the extent size, and the like.
  • the drive controller 710 updates the configuration information management table 2100 based on the configuration information received from the storage controller 100 (S204).
  • the storage controller 100 creates a virtual volume as necessary when it is included in the request from the host computer 30, and updates the virtual volume management table 1500 (S205).
  • the host computer 30 is requesting generation of a virtual volume, the request includes at least the size of the virtual volume. Then, this process ends (END).
  • each drive controller 710 can generate the configuration information management table 2100.
  • FIG. 16 is a flowchart showing an example of the write process. This write process corresponds to S105 in FIG.
  • the host computer 30 transmits a write request and write data to the storage controller 100 (S300).
  • the storage controller 100 When the storage controller 100 receives a write request from the host computer 30, the storage controller 100 refers to the virtual volume management table 1500 and the extent management table 1400, and the extent is included in the virtual extent including the write destination address of the virtual volume specified by the write request. It is determined whether or not it has been assigned (S301).
  • the storage controller 100 assigns an extent to the virtual extent (S302), and proceeds to S303.
  • the storage controller 100 stores the write data in the cache area 1000 (S303), and transmits a write command and write data to the write destination drive (S304). Then, the storage controller 100 receives a write completion notification from the write destination drive (S305).
  • the storage controller 100 updates the write IOPS 1509 (S306).
  • the storage controller 100 transmits a completion response to the write request to the host computer 30 (S307).
  • the host computer 30 receives a completion response to the write request from the storage controller 100 (S308), and ends the processing (END).
  • the storage system 10 can store the write data transmitted from the host computer 30.
  • FIG. 17 is a flowchart showing an example of read processing. This read process corresponds to S104 in FIG.
  • the host computer 30 transmits a read request to the storage controller 100 (S400).
  • the storage controller 100 specifies a virtual extent including the address of the virtual volume specified by the read request, specifies an extent allocated to the virtual extent, and drives that constitute the extent.
  • the drive of the read destination is specified from among (S401).
  • the storage controller 100 transmits a read command to the specified drive (S402). Then, the storage controller 100 receives read data from the drive (S403).
  • the storage controller 100 stores the read data in the cache area 1000 (S404).
  • the storage controller 100 updates the read IOPS 1508 (S405).
  • the storage controller 100 transmits a completion response and read data to the read request to the host computer 30 (S406).
  • the host computer 30 receives a completion response and read data from the storage controller 100 (S407), and ends the processing (END).
  • the storage system 10 can respond to the read data in response to the read request from the host computer 30.
  • FIG. 18 is a flowchart showing an example of extent movement processing. This extent movement process corresponds to S107 in FIG.
  • the storage controller 100 determines the source extent (S500). For example, the storage controller 100 checks the extent number 1506 of the virtual volume management table 1500 and refers to the tier 1507 and IOPS (read IOPS 1508 and write IOPS 1509) corresponding to the allocated extent number. The storage controller 100 determines whether the tier where the extent is arranged is appropriate based on the referenced information. The storage controller 100 determines to move to a higher tier when an extent having a relatively large IOPS is arranged in the lower tier. A threshold may be provided for each tier, such as placing it at tier 0 if the IOPS is greater than or equal to a predetermined value.
  • the IOPS only the read IOPS 1508 or the write IOPS 1509 may be used, or the total value of the read IOPS 1508 and the write IOPS 1509 may be used. As a result, data with a high IOPS is stored in the SSD, and the I / O processing performance from the host computer 30 can be improved.
  • ⁇ Relocation of extents is performed periodically. The shorter this period, the better the extents are placed and the performance will be improved. However, if the data is frequently moved, the data movement itself becomes an overhead for the storage controller 100, and the performance of the storage system is degraded. In this embodiment, the storage controller 100 instructs the SSD to read ahead before moving the data, thereby suppressing the performance degradation.
  • the storage controller 100 determines the migration destination extent from among the statuses 1405 “unallocated” (S501). That is, in order to move data, an unallocated extent in which no data is stored is required. In order to maximize the performance of the storage system, it is desirable to use as much of the SSD tier (top tier) capacity as possible. For this reason, when an extent arranged in the HDD is arranged in the SSD, there is a possibility that an unallocated extent does not exist. In this case, the storage controller 100 selects the extent with the smallest IOPS from the SSD tier, and moves the data stored in the extent to the “unallocated” extent of the HDD tier.
  • the storage controller 100 updates the status 1405 of the SSD tier extent to “unallocated”.
  • the number of extent rearrangements using the SSD as a migration source increases. Therefore, the effect of improving the response performance when the storage controller reads data from the SSD by executing prefetching in the SSD before the rearrangement of extents as in the present embodiment is significant.
  • the storage controller 100 transmits a prefetch command to each drive after determining whether or not extent rearrangement is necessary.
  • the storage controller 100 secures the number of segments 500 necessary for migration of data belonging to the extent in the cache area 1000 (S502).
  • the storage controller 100 transmits a prefetch command to each of the plurality of drives holding the migration source data (S503).
  • the prefetch command is a command for instructing prefetching of data, and has one or more transfer source extent numbers to be prefetched.
  • the drive controller 710 prefetches data based on the extent number included in the prefetch command. Details of this processing will be described later (see FIG. 20).
  • the storage controller 100 notifies each drive of the extent number in advance, and each drive holds information on the correspondence between the extent number and the logical address provided by its own drive to the storage controller 100 (FIG. 13). ing.
  • the storage controller 100 can cause the drive to perform prefetching simply by notifying each drive of the extent number to be prefetched using the prefetch command. That is, the load on the storage controller 100 for transmitting the prefetch command is small, and the I / O processing performance of the host computer 30 does not need to be reduced.
  • the migration source and destination have the same RAID level, RAID configuration, and stripe width, prefetching of both user data and parity data is designated.
  • the extent includes one or more stripes including a plurality of user data and parity data generated from the plurality of user data.
  • the value of the parity data is not updated unless any of a plurality of user data included in the stripe is updated. That is, it is not necessary to update parity data in data movement that maintains a stripe. Therefore, it is efficient for the storage controller 100 to read from the drive including parity data and move both user data and parity data.
  • the storage controller 100 transmits a read command for data (user data and parity data) belonging to the migration source extent to each of the plurality of drives constituting the migration source extent (S504).
  • the read command includes at least information specifying an address range (first LBA and length) in which data to be read is stored.
  • the storage controller 100 reads data belonging to the migration source extent and stores it in the cache area 1000 (S505).
  • the storage controller 100 transmits a write command to each of the plurality of drives constituting the extent in order to write data to the migration destination extent (S506).
  • the write command includes information for designating the address range (first LBA and length) of the data write destination.
  • the storage controller 100 releases the segment of the cache area 100 (S507).
  • the storage controller 100 releases the migration source extent (S508). Specifically, the storage controller 100 deletes data stored in the migration source extent.
  • the storage controller 100 updates the virtual volume management table 1500 and the extent management table 1400 (S509).
  • the storage controller 100 can improve the response performance from the drive constituting the migration source extent without increasing the load on the storage controller 100, and shorten the time required for data migration. Can do.
  • FIG. 19 is a flowchart showing an example of I / O processing of the drive controller 710.
  • the drive controller 710 determines whether there is an unprocessed command (S600). If there is no unprocessed command (S600: No), the drive controller 710 ends the process (END).
  • the drive controller 710 selects a command to be processed and determines the content of the command (S601).
  • the drive controller 710 executes extent prefetch processing (S602), and returns to S600. Details of the extent prefetching process will be described later (see FIG. 20).
  • command is a read or write command (S601: read or write)
  • command is read or write (S603).
  • the drive controller 710 determines whether or not the read target data is already stored in the cache area 2000 (whether or not the cache is hit) (S604).
  • the drive controller 710 transmits the data stored in the cache area 2000 to the storage controller (S606), and returns to S600.
  • the drive controller 710 When the read target data is not stored in the cache area 2000 (S604: No), the drive controller 710 reads data from the FM 780 and stores it in the cache area 2000 (S605). Then, the drive controller 710 transmits the data stored in the cache area 2000 to the storage controller 100 (S606), and returns to S600.
  • the drive controller 710 stores the write data in the cache area 2000 (S607). Then, the drive controller 710 writes the write data stored in the cache area 2000 to the FM 780 (S608), and returns to S600.
  • the processor 713 reads the compressed data from the FM 780 and stores it in the cache area 2000. Then, the processor 713 reads the compressed data from the cache area 2000 and transfers it to the compression / decompression circuit 718. The compression / decompression circuit 718 decompresses the compressed data. The processor 713 stores the decompressed data in the cache area 2000.
  • the processor 713 After the write data is stored in the cache area 2000 in S607, the processor 713 reads the write data from the cache area 2000 and transfers it to the compression / decompression circuit 718. Then, the processor 713 transfers the compressed write data to the FM 780. Note that the processor 713 may temporarily store the write data in the FM 780 without compressing the data, and may compress the data in response to a reclamation process asynchronous with the write command.
  • the drive controller 710 can store the data in the cache area 2000 in advance based on the prefetch command received from the storage controller 100.
  • the drive controller 710 receives a read command from the storage controller 100, if the data corresponding to the read command has already been stored in the cache area 2000, the drive controller 710 can transmit the read data to the storage controller 100 at high speed.
  • FIG. 20 is a flowchart showing an example of extent prefetch processing in the drive controller 710. This extent prefetching process corresponds to S602 in FIG.
  • Data may be processed inside the drive, such as data compression.
  • the drive When the drive is instructed to prefetch data by the storage controller 100, it is required to respond at high speed to the subsequent read command. For this reason, in order to increase the response speed to the read command, the drive pre-reads the processed data by applying an appropriate process.
  • the drive controller 710 identifies the LBA in the drive to be prefetched based on the extent number included in the prefetch command received from the storage controller 100 and the configuration information management table 2100 that it has (S700). In other words, the drive controller 710 refers to the configuration information management table 2100 and sets data corresponding to the range of the in-drive LBA corresponding to the extent number as a prefetch target. In this embodiment, since the prefetch command specifies both user data and parity data, the drive controller 710 sets both user data and parity data as prefetch targets.
  • the drive controller 710 transfers the data stored in the physical storage area corresponding to the pre-read target LBA in the FM 780 to the cache area 2000 (S701). At this time, the drive controller 710 determines whether or not the prefetch target data is compressed data (S702).
  • the drive controller 710 decompresses the compressed data using the compression / decompression circuit 728 and stores it in the cache area 2000 (S703), and ends the processing (S703). END). Since this process is the same as the above-described read process, details are omitted.
  • the drive controller 710 ends the process as it is (END).
  • the drive controller 710 can store data to be read later in the cache area 2000 based on the pre-read command.
  • Example 1 has the following effects.
  • the storage controller 100 transmits a prefetch command to each of the drive controllers 710 of the plurality of drives that are the basis of the extent before executing the extent movement process (before transmitting the read command), the drive controller 710 Then, it is possible to pre-read data to be read in accordance with the read command in the extent movement process thereafter in its own cache area 2000. In other words, it is possible to cause each drive that is the basis of one extent to prefetch a plurality of data in the extent with one command. Thereby, the response performance of the storage controller 100 reading data from the drive is improved. Therefore, the time required for the extent movement process can be shortened.
  • the drive controller 710 stores data in the cache area 2000 based on the prefetch command, so that useless data is not stored in the cache area 2000. For example, when IOPS is measured inside the drive and data having a large IOPS is prefetched, a load is applied to the drive controller 710. Therefore, according to the present embodiment, the processing load on the drive controller 710 can be reduced and the finite cache area 2000 can be used efficiently.
  • the storage system 10 Since the storage system 10 has a RAID group, user data and parity data are stored in the drive.
  • the data to be prefetched may be user data or both user data and parity data.
  • the drive cannot discriminate whether the stored data type is user data or parity data, appropriate read-ahead cannot be performed only with the range of logical addresses. If unnecessary read-ahead occurs, the drive performance degrades, leading to performance degradation as a storage system.
  • it is overhead that the storage controller 100 designates the data type for each logical address for prefetching.
  • the storage controller 100 designates the data type in addition to the extent number and instructs the drive to prefetch.
  • the storage controller 100 generates parity data within the storage system 10. That is, the host computer 30 does not recognize parity data. In this embodiment, since the storage controller 100 instructs the drive to perform prefetching, it is possible to distinguish between user data and parity data and execute appropriate prefetching.
  • FIG. 21 is a schematic diagram for explaining the read process in the extent movement process in the second embodiment.
  • the storage controller 100 reads the user data D1, D2, and D3 from the SSD 701 to the cache area 1000 without reading the parity data P1. Then, the storage controller 100 generates parity data P1 from the read user data D1, D2, and D3 in the cache area 1000 (reference numeral 903).
  • the parity data P1 since the parity data P1 is not read, the consumption of I / O resources between the storage controller 100 and the SSD 701 can be reduced.
  • the above configuration is more effective when the extent migration source and migration destination RAID configurations (nD + mP configuration) are different. This is because if the extent migration source and the migration destination RAID configuration are different, the parity data of the migration source cannot be taken over, and it is necessary to regenerate the parity data. For this reason, it is not necessary to read the parity data, and the parity data pre-read by the source drive is wasted.
  • the storage controller 100 when the migration source RAID configuration is “3D + 1P” and the migration destination RAID configuration is “4D + 1P”, the storage controller 100 generates a new P1 ′ based on the read D1, D2, D3, and D5. To do.
  • FIG. 22 is a flowchart illustrating an example of extent movement processing (S107) according to the second embodiment. This extent movement process corresponds to S107 in FIG.
  • the storage controller 100 executes the same processing as S500 to S502 in FIG. 18 (S520 to S522).
  • the storage controller 100 transmits a prefetch command to the migration source drive (S523).
  • This prefetch command designates the data type to be prefetched in addition to the extent number of the movement source.
  • the data type is information indicating which of “user data and parity data” or “user data only” is prefetched.
  • the migration source drive prefetches either “user data and parity data” or “user data only” based on the extent number and data type included in the prefetch command.
  • the storage controller 100 designates the data type of “user data and parity data”, and the migration source RAID group If the RAID configuration differs from the RAID configuration of the migration destination RAID group, a data type of “user data only” may be designated. Details of this processing will be described later (see FIG. 23).
  • the storage controller 100 designates the data type of “user data only” even if the RAID configuration of the migration source RAID group and the RAID configuration of the migration destination RAID group are the same, and the storage controller 100 Parity data may be regenerated.
  • a data type of “user data only” may be designated.
  • the parity data read processing in the drive does not occur, and the load on the drive is reduced.
  • the load of the storage controller 100 for example, the operating rate of the processor 104
  • the load of the drive controller 710 for example, the operating rate of the processor 713
  • the data type of “user data and parity data” may be designated.
  • the processing performance (for example, performance based on IOPS or access frequency) of the storage controller 100 is larger than the third threshold and the I / O performance of the drive is lower than the fourth threshold, “user data only” May be specified.
  • the time for generating the parity data in the storage controller 100 can be shorter than the time for reading the parity data from the drive.
  • the storage controller 100 sends a read command for user data belonging to the migration source extent to the migration source drive (S524),
  • the storage controller 100 reads only the user data belonging to the migration source extent and stores it in the cache area 1000 (S525).
  • Storage controller 100 generates parity data from the user data after the user data in the stripe column is prepared in cache area 1000 (S526).
  • the storage controller 100 writes the user data and parity data to the extent of the movement destination (S527).
  • the storage controller 100 executes processing similar to S507 to S509 in FIG. 18 (S528 to S530).
  • the storage controller 100 can move the user data belonging to the migration source extent to the migration destination extent.
  • FIG. 23 is a flowchart illustrating an example of extent pre-read processing in the drive controller 710 regarding the second embodiment. This extent prefetching process corresponds to S602 in FIG.
  • the drive controller 710 identifies the LBA in the drive to be prefetched based on the extent number included in the prefetch command received from the storage controller 100 and the configuration information management table 2100 that it has (S720).
  • the drive controller 710 determines whether the prefetching method included in the prefetching command is “user data only” or “user data and parity data” (S721).
  • the drive controller 710 stores the user data and parity data stored in the pre-read target LBA in the FM 780 in the cache area 2000. (S723), and the process proceeds to S725.
  • the drive controller 710 transfers only the user data stored in the pre-read target LBA in the FM 780 to the cache area 2000 (S722). The process proceeds to S725.
  • the drive controller 710 executes the same processing as S702 to S703 in FIG. 20 (S725 to S726).
  • the drive controller 710 performs processing for prefetching only user data belonging to the extent and processing for prefetching all user data and parity data belonging to the extent based on the prefetching command transmitted from the storage controller 100. Can be switched.
  • Example 2 has the following effects in addition to the effects of Example 1.
  • the drive controller 710 determines whether or not the parity data is to be prefetched based on the prefetch command, so that useless data is not stored in the cache area 2000. That is, the load on the processor 713 for data caching is reduced, and the performance degradation for prefetching is suppressed. Further, the use efficiency of the cache area 2000 of the memory 716 is improved, and more necessary data can be stored in the cache area 2000 having a limited capacity.
  • the storage controller 100 may transmit a prefetch command including all the extent numbers of the migration source before transmitting the first read command associated with the extent migration processing. As a result, the storage controller 100 can reduce the number of times the command is issued. Alternatively, the storage controller 100 may include information related to the prefetch command in the first read command. In this case, the drive controller 710 performs prefetching based on information related to the prefetch command included in the first read command. The data specified by the first read command cannot be prefetched, but the number of commands issued can be further reduced. Alternatively, each time a predetermined number of read commands are transmitted, the storage controller 100 may transmit a prefetch command including the next one or two or more migration source extent numbers. Thereby, the cache area 2000 inside the drive can be used efficiently. This is because the capacity of the cache area 2000 is limited and is used in processes other than prefetching, and even if a large amount of prefetching is instructed at one time, the cache area 2000 may not be stored in the cache area.
  • the above-described configuration related to the prefetch command can be used for purposes other than extent movement processing between layers.
  • the configuration related to the prefetch command described above is applied to wear leveling processing between drives in extent units, which is executed for extending the life of SSD as described in the patent document “WO2013 / 118170”. May be.
  • the storage controller may set a data type indicating whether the write target data according to the write command is user data or parity data in the write command for the drive.
  • the drive may manage the data type set in the received write command in association with the write destination LBA (at least one of the in-extent LBA and the in-drive LBA). Thus, the drive can distinguish whether the stored data is user data or parity data for each LBA in the extent.
  • xxx table there is a description of information in the expression “xxx table”, but the information may be expressed in any data structure. That is, “xxx table” can be referred to as “xxx information” to indicate that the information does not depend on the data structure.
  • Storage system 30 Host computer 100: Storage controller 710: Drive controller 70, 80: Extent 500, 600: RAID group 1000: Cache area 2000: Cache area 1100: Drive management table 1200: RAID management table 1300: Pool management table 1400: Extent management table 1500: Virtual volume management table 2100: Configuration information management table

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)
  • Microelectronics & Electronic Packaging (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

 A storage system is provided with: a plurality of semiconductor storage devices having a plurality of nonvolatile semiconductor memory chips, cache memory, and a processor; and a storage controller for controlling the plurality of semiconductor storage devices as a RAID group and storing user data and parity data in the plurality of semiconductor storage devices. The storage controller correlates one from among a plurality of sub-logical storage areas in each of the plurality of semiconductor storage devices to each of a plurality of extents one by one, and transmits configuration information indicating correspondence between the arrangement of user data and parity data in a logical address space and the plurality of extents and then a lookahead command indicating that the data be stored in the cache memory to each of the plurality of semiconductor storage devices. In accordance with the lookahead command received, the processor of the semiconductor storage devices reads the user data and parity data corresponding to the extent from the plurality of nonvolatile semiconductor memory chips on the basis of the configuration information and stores the read data in the cache memory.

Description

ストレージシステム及び半導体記憶装置Storage system and semiconductor storage device
 本発明は、ストレージシステム及び半導体記憶装置に関する。 The present invention relates to a storage system and a semiconductor storage device.
 ストレージシステムは、データを格納する多数のドライブ(HDD(Hard Disk Drive)やSSD(Solid State Drive)など)とドライブを制御するストレージコントローラとを有しており、計算機に大容量のデータ格納空間を提供することを目的としている。 The storage system has a large number of drives for storing data (HDD (Hard Disk Drive), SSD (Solid State Drive), etc.) and a storage controller for controlling the drive, and the computer has a large capacity data storage space. It is intended to provide.
 また、ストレージシステムは、複数のドライブをRAID(Redundant Array of Independent (or Inexpensive) Disks)構成で使用することで、高速I/O処理が可能となる。また、ストレージシステムは、複数のユーザデータに基づいてパリティデータを生成してドライブに格納し、ドライブの故障に対する高い耐障害性を有することを特徴としている。 In addition, the storage system can perform high-speed I / O processing by using a plurality of drives in a RAID (Redundant Array of Independent (or Independent) Disks) configuration. Further, the storage system is characterized in that parity data is generated based on a plurality of user data and stored in the drive, and has high fault tolerance against a drive failure.
 ストレージシステムが有する機能の1つに容量仮想化機能がある。容量仮想化は、ストレージシステムの物理容量よりも大きな仮想容量を仮想ボリュームとして、ホスト計算機に提供する技術である。容量仮想化では、まずストレージシステム内の複数のドライブをまとめてプールが作成され、プール内の記憶領域は所定サイズのエクステントという単位で管理される。そして、ストレージシステムは、ホスト計算機から仮想ボリュームへのライト要求に応じて、ライト要求で指定された仮想ボリューム内の領域にエクステントを割り当てる。これにより、ユーザはその時々の使用用途に合わせて、ドライブの物理容量を必要最小限に抑えることができるため、コストの削減を実現することができる。 One of the functions of the storage system is the capacity virtualization function. Capacity virtualization is a technique for providing a virtual capacity larger than the physical capacity of a storage system to a host computer as a virtual volume. In capacity virtualization, a plurality of drives in a storage system are first created to create a pool, and storage areas in the pool are managed in units of extents of a predetermined size. Then, in response to a write request from the host computer to the virtual volume, the storage system allocates an extent to the area in the virtual volume specified by the write request. Accordingly, the user can suppress the physical capacity of the drive to the minimum necessary in accordance with the usage application from time to time, thereby realizing cost reduction.
 また、ストレージシステムでは、データ配置を適切にすることを目的としてドライブ間でデータを移動する場合がある。データの移動は、エクステント単位で行われる。例えば、ストレージシステムは、エクステント毎の単位時間当たりのアクセス特性(I/O頻度等)に応じて、エクステントの配置先のドライブを切り替える。例えば、I/O頻度が高いエクステントのデータは、高性能のドライブに優先的に格納される。これにより、単一種別のドライブにデータを格納する場合と比較して、システムの性能要件と容量要件を満たす構成を設計する際、必要な高性能ドライブの容量が少なくなり、ストレージシステムのコストの削減が可能となる。以下では、エクステント単位でのデータ移動処理を、エクステント再配置処理と呼ぶ。 Also, in a storage system, data may be moved between drives for the purpose of appropriate data arrangement. Data movement is performed in extent units. For example, the storage system switches the drive to which the extent is placed according to the access characteristics per unit time (I / O frequency or the like) for each extent. For example, extent data having a high I / O frequency is preferentially stored in a high-performance drive. This reduces the amount of high-performance drive required and reduces the cost of the storage system when designing a configuration that meets system performance and capacity requirements compared to storing data on a single type of drive. Reduction is possible. Hereinafter, data movement processing in units of extents is referred to as extent rearrangement processing.
 ここで、エクステント再配置処理において、ストレージシステムは、データ移動前のエクステントと仮想ボリュームのマッピングを、データ移動後のエクステントと仮想ボリュームのマッピングに変更する。これにより、ホスト計算機に認識させることなくデータ移動を行うことができる。 Here, in the extent relocation processing, the storage system changes the mapping of the extent and the virtual volume before the data movement to the mapping of the extent and the virtual volume after the data movement. Thereby, data movement can be performed without making the host computer recognize.
 エクステント再配置処理は、ホスト計算機のI/O処理とは非同期に実施されるため、エクステント再配置に時間がかかると、ホスト計算機のI/O処理性能が低下する。つまり、性能向上のためにエクステント再配置を行うが、この処理が性能低下の原因にもなる。このため、エクステントの再配置のためのデータ移動時間は短い方がよい。 The extent rearrangement process is performed asynchronously with the host computer I / O process. Therefore, if the extent rearrangement takes time, the I / O processing performance of the host computer deteriorates. That is, extent rearrangement is performed to improve performance, but this processing also causes performance degradation. For this reason, it is better that the data movement time for extent rearrangement is short.
 ここで、レスポンス性能を向上させることを目的に、ドライブ内において低速な記憶媒体からDRAMなどの高速な記憶媒体へ予めデータをコピーする技術として、データの先読み(プリフェッチ)がある。 Here, for the purpose of improving response performance, data pre-fetching (prefetch) is a technique for copying data in advance from a low-speed storage medium to a high-speed storage medium such as DRAM in the drive.
 特許文献1には、ホスト計算機が記憶装置(例えば、フラッシュメモリカード)に対して論理アドレスの範囲を指定して先読みコマンドを発行し、フラッシュメモリカードが論理アドレスの範囲に対応するデータをフラッシュメモリからDRAMにコピーし、ホスト計算機へのリード応答時間を短縮する技術が開示されている。 In Patent Document 1, a host computer designates a logical address range to a storage device (for example, a flash memory card) and issues a prefetch command, and the flash memory card stores data corresponding to the logical address range in the flash memory A technique is disclosed in which the read response time to the host computer is shortened by copying from the memory to the DRAM.
US2004/0205301US2004 / 0205301
 しかし、特許文献1の技術には次の課題がある。ストレージコントローラが行うドライブ間でのデータ移動は、ホスト計算機は認識することができず、ホスト計算機によるI/O処理とは非同期に実行されるため、ホスト計算機はドライブに対して先読みの指示をする契機を把握できない。また、当該データ移動は、ホスト計算機が認識することができないため、ホスト計算機がRAIDグループを構成する複数のドライブに対して先読みの対象となる論理アドレスを指定することは不可能である。 However, the technique of Patent Document 1 has the following problems. The data movement between the drives performed by the storage controller cannot be recognized by the host computer and is executed asynchronously with the I / O processing by the host computer, so the host computer instructs the drive to read ahead. I cannot grasp the opportunity. In addition, since the host computer cannot recognize the data movement, it is impossible for the host computer to specify a logical address to be prefetched for a plurality of drives constituting the RAID group.
 ストレージシステムは多数のドライブを搭載しているため、ストレージコントローラがドライブに先読みコマンドを送信するたびに先読みコマンドに論理アドレス範囲の情報を含めるのはオーバーヘッドである。 Since the storage system has a large number of drives, it is overhead to include the logical address range information in the prefetch command every time the storage controller sends the prefetch command to the drive.
 そこで、本発明の目的は、多数のドライブへのアクセスを制御するストレージコントローラの負荷を低減しつつ、ドライブ内で先読みを行い、ストレージコントローラがドライブからデータを読み出す際のレスポンス性能を向上させることである。 Accordingly, an object of the present invention is to improve the response performance when the storage controller reads data from the drive by performing read-ahead in the drive while reducing the load on the storage controller that controls access to a large number of drives. is there.
 一実施例に係るストレージシステムは、複数の半導体記憶装置と、ストレージコントローラとを備える。複数の半導体記憶装置のそれぞれは、複数の不揮発性半導体メモリチップと、データを一時的に格納するキャッシュメモリと、複数の不揮発性半導体メモリチップからデータを読み出してキャッシュメモリに格納するプロセッサと、を有する。ストレージコントローラは、複数の半導体記憶装置を第一RAIDグループとして制御し、複数のユーザデータとその複数のユーザデータから生成されるパリティデータのそれぞれを、複数の半導体記憶装置へ格納する。プロセッサは、複数の不揮発性半導体メモリチップの記憶領域を、論理アドレス空間に対応付けてストレージコントローラに提供する。ストレージコントローラは、論理的な記憶領域である複数のエクステントを構成する。ストレージコントローラは、複数の半導体記憶装置のそれぞれの論理アドレス空間を複数のサブ論理記憶領域に分割し、複数のエクステントのそれぞれに、複数の半導体記憶装置のそれぞれの複数のサブ論理記憶領域から1つずつ対応付ける。ストレージコントローラは、複数の半導体記憶装置のそれぞれに、論理アドレス空間におけるユーザデータ及びパリティデータの配置と、複数のエクステントとの対応関係を示す構成情報を送信する。ストレージコントローラは、複数の半導体記憶装置のそれぞれに、複数のエクステントのうちの第一エクステントを指定してデータをキャッシュメモリに格納することを指示する先読みコマンドを送信する。半導体記憶装置のプロセッサは、先読みコマンドの受信に応じて、構成情報に基づいて、第一エクステントに対応するユーザデータ及びパリティデータを特定し、特定したユーザデータ及びパリティデータを複数の不揮発性半導体メモリチップから読み出してキャッシュメモリに格納する。 A storage system according to an embodiment includes a plurality of semiconductor storage devices and a storage controller. Each of the plurality of semiconductor memory devices includes a plurality of nonvolatile semiconductor memory chips, a cache memory that temporarily stores data, and a processor that reads data from the plurality of nonvolatile semiconductor memory chips and stores the data in the cache memory. Have. The storage controller controls a plurality of semiconductor storage devices as a first RAID group, and stores a plurality of user data and parity data generated from the plurality of user data in the plurality of semiconductor storage devices. The processor provides storage areas of the plurality of nonvolatile semiconductor memory chips to the storage controller in association with the logical address space. The storage controller constitutes a plurality of extents that are logical storage areas. The storage controller divides each logical address space of the plurality of semiconductor storage devices into a plurality of sub logical storage areas, and each of the plurality of extents includes one from the plurality of sub logical storage areas of the plurality of semiconductor storage devices. Match each one. The storage controller transmits configuration information indicating the correspondence between the arrangement of user data and parity data in the logical address space and the plurality of extents to each of the plurality of semiconductor storage devices. The storage controller transmits to each of the plurality of semiconductor storage devices a prefetch command that designates the first extent of the plurality of extents and instructs to store data in the cache memory. The processor of the semiconductor storage device specifies user data and parity data corresponding to the first extent based on the configuration information in response to reception of the prefetch command, and the specified user data and parity data are stored in a plurality of nonvolatile semiconductor memories. Read from the chip and store in cache memory.
 ストレージコントローラに負荷をかけずに、ストレージコントローラがドライブからデータを読み出す際のレスポンス性能が向上する。これにより、データ移動に必要な時間が短縮され、データ移動を行ってもホスト計算機から要求されるI/O処理性能の低下が抑制される。 ∙ Improved response performance when the storage controller reads data from the drive without imposing a load on the storage controller. As a result, the time required for data movement is shortened, and even if data movement is performed, a decrease in I / O processing performance required from the host computer is suppressed.
実施例1に関し、ストレージシステムにおけるエクステント移動処理を説明する模式図である。FIG. 10 is a schematic diagram illustrating extent migration processing in the storage system according to the first embodiment. ストレージシステムの構成例を示すブロック図である。It is a block diagram which shows the structural example of a storage system. SSD(Solid State Drive)の構成例を示すブロック図である。It is a block diagram which shows the structural example of SSD (Solid State Drive). SSDにおける先読み処理の例を説明する模式図である。It is a schematic diagram explaining the example of the prefetch process in SSD. 仮想ボリュームを説明する模式図である。It is a schematic diagram explaining a virtual volume. エクステントの構成例を示すブロック図である。It is a block diagram which shows the structural example of an extent. ストレージコントローラの有するメモリに保持される情報の例を示すブロック図である。It is a block diagram which shows the example of the information hold | maintained at the memory which a storage controller has. ドライブ管理テーブルの構成例を示す。The structural example of a drive management table is shown. RAID管理テーブルの構成例を示す。3 shows an example of the configuration of a RAID management table. プール管理テーブルの構成例を示す。The structural example of a pool management table is shown. エクステント管理テーブルの構成例を示す。The structural example of an extent management table is shown. 仮想ボリューム管理テーブルの構成例を示す。The structural example of a virtual volume management table is shown. 構成情報管理テーブルの構成例を示す。The structural example of a structure information management table is shown. ストレージコントローラにおけるタスク処理例を示すフローチャートである。It is a flowchart which shows the example of a task process in a storage controller. 構成変更処理の例を示すフローチャートである。It is a flowchart which shows the example of a structure change process. ライト処理の例を示すフローチャートである。It is a flowchart which shows the example of a write process. リード処理の例を示すフローチャートである。It is a flowchart which shows the example of a read process. エクステント移動処理の例を示すフローチャートである。It is a flowchart which shows the example of an extent movement process. ドライブコントローラのI/O処理の例を示すフローチャートである。It is a flowchart which shows the example of the I / O process of a drive controller. ドライブコントローラにおけるエクステント先読み処理の例を示すフローチャートである。It is a flowchart which shows the example of the extent prefetch process in a drive controller. 実施例2に関し、エクステント移動処理におけるリード処理を説明する模式図である。FIG. 10 is a schematic diagram for explaining a read process in an extent movement process in the second embodiment. 実施例2に関し、エクステント移動処理の例を示すフローチャートである。12 is a flowchart illustrating an example of extent movement processing according to the second embodiment. 実施例2に関し、ドライブコントローラにおけるエクステント先読み処理の例を示すフローチャートである。12 is a flowchart illustrating an example of extent prefetch processing in the drive controller according to the second embodiment.
 図1は、実施例1に関し、ストレージシステム10におけるエクステント移動処理を説明する模式図である。 FIG. 1 is a schematic diagram for explaining extent migration processing in the storage system 10 according to the first embodiment.
 ストレージシステム10は、ドライブ(典型的には不揮発記憶装置)の一例であるSSD701~704及びHDD(Hard Disk Drive)705~708と、それらのドライブをコントロールするストレージコントローラ100とを備える。ストレージコントローラ100は、SSD700~704をまとめてRAID5のRAIDグループ500を構成し、HDD705~708をまとめてRAID5のRAIDグループ600を構成する。ストレージコントローラ100は、RAIDグループ500(600)の記憶領域を、所定サイズの区画に分割して管理する。この区画を「エクステント」と呼ぶ。よって図1に示すように、エクステント70(80)は、複数のSSD701~704(HDD705~708)の各々が保持するデータを含む。 The storage system 10 includes SSDs 701 to 704 and HDDs (Hard Disk Drives) 705 to 708, which are examples of drives (typically nonvolatile storage devices), and a storage controller 100 that controls these drives. In the storage controller 100, the SSDs 700 to 704 are combined to form a RAID 5 RAID group 500, and the HDDs 705 to 708 are combined to form a RAID 5 RAID group 600. The storage controller 100 manages the storage area of the RAID group 500 (600) by dividing it into partitions of a predetermined size. This partition is called an “extent”. Therefore, as shown in FIG. 1, the extent 70 (80) includes data held by each of the plurality of SSDs 701 to 704 (HDDs 705 to 708).
 ストレージシステム10は、ホスト計算機30に接続されており、ホスト計算機30に対して仮想ボリューム60を提供する。仮想ボリューム60は、例えば、シンプロビジョニングに従って構成される仮想的なボリュームである。ストレージコントローラ100は、ホスト計算機30から仮想ボリューム60に対するライト要求を受信すると、RAIDグループ500内のエクステント70を、仮想ボリューム60の仮想エクステント610に割り当て、ライト要求に伴うデータをエクステント70に書き込む。本実施例では、この状態を、仮想エクステント610の参照先が、エクステント70であるという。エクステント70は、所定の数のユーザデータD1~D12及びパリティデータP1~P4で構成される。 The storage system 10 is connected to the host computer 30 and provides the virtual volume 60 to the host computer 30. The virtual volume 60 is a virtual volume configured according to thin provisioning, for example. When the storage controller 100 receives a write request for the virtual volume 60 from the host computer 30, the storage controller 100 allocates the extent 70 in the RAID group 500 to the virtual extent 610 of the virtual volume 60, and writes the data accompanying the write request to the extent 70. In this embodiment, this state is referred to as the extent 70 being the reference destination of the virtual extent 610. The extent 70 includes a predetermined number of user data D1 to D12 and parity data P1 to P4.
 ストレージコントローラ100は、必要に応じて、例えば、RAIDグループ500内のエクステント70のデータを、RAIDグループ600内のエクステント80に移動させるエクステント移動処理を実行する。RAIDグループ500は、I/O応答時間は短いが容量の小さいSSDで構成されており、RAIDグループ600はI/O応答時間は長いが容量の大きいHDDで構成されている。実施例1では、移動元のRAIDグループ500と移動先のRAIDグループ600とは、同じRAID構成、且つ、同じエクステントサイズであるとする。ただし、移動先RAIDグループは複数のSSDで構成されていてもよい。 The storage controller 100 executes extent movement processing for moving the data of the extent 70 in the RAID group 500 to the extent 80 in the RAID group 600 as necessary, for example. The RAID group 500 is composed of SSDs with short I / O response time but small capacity, and the RAID group 600 is composed of HDDs with long I / O response time but large capacity. In the first embodiment, it is assumed that the migration source RAID group 500 and the migration destination RAID group 600 have the same RAID configuration and the same extent size. However, the migration destination RAID group may be composed of a plurality of SSDs.
 ストレージコントローラ100は、仮想エクステント610へのI/O頻度が少ない場合、その仮想エクステント610の参照先である、RAIDグループ500内のエクステント70のデータを、RAIDグループ600内のエクステント80に移動させ、仮想エクステント610の参照先をエクステント80に切り替えるエクステント移動処理を実行する。 When the I / O frequency to the virtual extent 610 is low, the storage controller 100 moves the data of the extent 70 in the RAID group 500, which is the reference destination of the virtual extent 610, to the extent 80 in the RAID group 600, Extent movement processing for switching the reference destination of the virtual extent 610 to the extent 80 is executed.
 反対に、ストレージコントローラ100は、仮想エクステント610へのアクセス頻度が多い場合、その仮想エクステント610の参照先であるエクステント80の保持するデータ群を、エクステント70に移動させ、仮想エクステント610の参照先をエクステント70に切り替えるエクステント移動処理を実行する。 On the other hand, when the access frequency to the virtual extent 610 is high, the storage controller 100 moves the data group held in the extent 80, which is the reference destination of the virtual extent 610, to the extent 70, and changes the reference destination of the virtual extent 610. An extent movement process for switching to the extent 70 is executed.
 すなわち、ストレージコントローラ100は、I/O頻度の多い仮想エクステントの参照先を、I/O応答時間の短いSSDで構成されたRAIDグループ500とするエクステント移動処理を実行する。これにより、ストレージシステム100のホスト計算機30に対する応答時間を短縮することができる。エクステント移動処理は「エクステント再配置処理」と呼んでもよい。 That is, the storage controller 100 executes extent migration processing in which a virtual extent having a high I / O frequency is referred to as a RAID group 500 configured with an SSD having a short I / O response time. Thereby, the response time with respect to the host computer 30 of the storage system 100 can be shortened. The extent movement processing may be called “extent relocation processing”.
 1つのエクステントのサイズは、一般的に数MBから数GBと比較的大きい。よって、大きなデータを移動させるエクステント移動処理は、ストレージコントローラ100及びドライブにとって負荷が高く、時間を要する処理である。本実施例は、エクステント移動処理に要する時間を短縮することを目的の1つとする。 The size of one extent is generally relatively large from several MB to several GB. Therefore, the extent movement process for moving large data is a process that is heavy on the storage controller 100 and the drive and requires time. The present embodiment is intended to shorten the time required for extent movement processing.
 図2は、SSD701における先読み処理の例を説明する模式図である。この処理は、SSD702~704においても同様である。 FIG. 2 is a schematic diagram for explaining an example of prefetching processing in the SSD 701. This process is the same for the SSDs 702 to 704.
 SSD701は、ユーザデータD1、D5、D9及びパリティデータP4を保持している。これらのデータD1、D5、D9及びP4は、エクステント70に属する。エクステント70を移動させる場合、ストレージシステム10は、次のような処理を実行する。 The SSD 701 holds user data D1, D5, D9 and parity data P4. These data D1, D5, D9 and P4 belong to the extent 70. When moving the extent 70, the storage system 10 executes the following processing.
 (S1)ストレージコントローラ100は、移動元のエクステント70を識別可能な情報であるエクステント番号を有する先読みコマンドを生成し、その先読みコマンドをドライブコントローラ710へ送信する。エクステント70は、複数のSSD701~704にまたがって構成されるため、ストレージコントローラ100は、SSD701~704のそれぞれに対して先読みコマンドを送信する。複数のエクステントを移動させる場合、ストレージコントローラ100は、複数のエクステント番号を有する先読みコマンドを生成してもよい。 (S1) The storage controller 100 generates a prefetch command having an extent number that is information that can identify the extent 70 of the migration source, and transmits the prefetch command to the drive controller 710. Since the extent 70 is configured across a plurality of SSDs 701 to 704, the storage controller 100 transmits a prefetch command to each of the SSDs 701 to 704. When moving a plurality of extents, the storage controller 100 may generate a prefetch command having a plurality of extent numbers.
 (S2)先読みコマンドを受信したドライブコントローラ710は、構成情報管理テーブル2100(図13参照)を参照し、移動元のエクステント70に含まれるデータD1、D5、D9及びP4を特定する。 (S2) The drive controller 710 that has received the prefetch command refers to the configuration information management table 2100 (see FIG. 13) and identifies the data D1, D5, D9, and P4 included in the migration source extent 70.
 (S3)ドライブコントローラ710は、その特定したデータD1、D5、D9及びP4を、Flash Memory Chip(以下「FM」)780からメモリ716のキャッシュ領域2000(図4参照)へ転送する。 (S3) The drive controller 710 transfers the identified data D1, D5, D9, and P4 from the flash memory chip (hereinafter “FM”) 780 to the cache area 2000 (see FIG. 4) of the memory 716.
 (S4)ストレージコントローラ100は、エクステント移動処理において、ドライブコントローラ710に、例えば、ユーザデータD1を対象とするリードコマンドを送信する。 (S4) The storage controller 100 transmits, for example, a read command for the user data D1 to the drive controller 710 in the extent movement process.
 (S5)リードコマンドを受信したドライブコントローラ710は、ユーザデータD1がキャッシュ領域2000に格納済みであるので(キャッシュヒットしたので)、キャッシュ領域2000のユーザデータD1をストレージコントローラ100へ送信する。他のデータD5、D9及びP4についても同様である。 (S5) The drive controller 710 that has received the read command transmits the user data D1 in the cache area 2000 to the storage controller 100 because the user data D1 has already been stored in the cache area 2000 (because of a cache hit). The same applies to the other data D5, D9 and P4.
 ストレージコントローラ100は、エクステント移動処理を実行する前に、上述のように先読みコマンドをドライブコントローラ710へ送信する。その後、ストレージコントローラ100は、エクステント移動処理を実行する。これにより、ドライブコントローラ710は、先読みコマンドに基づいて、その後にリードされるであろうデータを予めキャッシュ領域2000に格納しておくことができる。つまり、ドライブコントローラ710は、その後に受信するリードコマンドに対して、短時間でリードデータを返すことができる。すなわち、本実施例によれば、エクステント移動処理に要する時間を短縮することができる。 Storage controller 100 transmits a prefetch command to drive controller 710 as described above before executing the extent movement process. Thereafter, the storage controller 100 executes extent migration processing. As a result, the drive controller 710 can store data that will be read later in the cache area 2000 based on the prefetch command. That is, the drive controller 710 can return read data in a short time in response to a read command received thereafter. That is, according to the present embodiment, the time required for the extent movement processing can be shortened.
 図3は、ストレージシステム10の構成例を示すブロック図である。 FIG. 3 is a block diagram illustrating a configuration example of the storage system 10.
 ストレージシステム10には、SAN(Storage Area Network)20を通じて、ホスト計算機30が接続されている。ホスト計算機30は、複数であってもよい。 A host computer 30 is connected to the storage system 10 via a SAN (Storage Area Network) 20. There may be a plurality of host computers 30.
 ホスト計算機30とストレージシステム10とは、SAN20を経由してデータを送受信する。SAN20は、例えば、FibreChannel、SCSI(Small Computer System Interface)、iSCSI(internet Small Computer  System Interface)、USB(Universal Serial Bus)、IEEE1394バス、又はSAS(Serial Attached SCSI)などで構成されてもよい。SAN20は、例えば、LAN(Local Area Network)などの他の通信ネットワークであってもよい。 The host computer 30 and the storage system 10 transmit and receive data via the SAN 20. The SAN 20 is, for example, a Fiber Channel, a SCSI (Small Computer System Interface), an iSCSI (Internet Small System System SI), or a USB (Universal Serial Bus A 94), or a USB (Universal Serial Bus S 94). The SAN 20 may be another communication network such as a LAN (Local Area Network).
 ホスト計算機30は、ストレージシステム10を利用する上位装置の一種である。ホスト計算機30は、例えば、アプリケーションサーバ又はデータベースサーバなどである。ホスト計算機30は、ストレージシステム10にリード要求又はライト要求を送信して、ストレージシステム10からデータをリード又はストレージシステム10にデータをライトする。 The host computer 30 is a type of host device that uses the storage system 10. The host computer 30 is, for example, an application server or a database server. The host computer 30 transmits a read request or a write request to the storage system 10 to read data from the storage system 10 or write data to the storage system 10.
 ホスト計算機30は、ストレージシステム10にストレージ構成に関する要求を送信して、ストレージシステム10にRAIDグループを構成させたり、RAIDグループの構成を変更させたり、仮想ボリューム80を生成させたりしてもよい。なお、ストレージ構成に関する要求は、ホスト計算機30に代えて、ストレージシステム10を管理する管理計算機(不図示)が送信してもよい。 The host computer 30 may transmit a request regarding the storage configuration to the storage system 10 to cause the storage system 10 to configure a RAID group, change the configuration of the RAID group, or generate a virtual volume 80. Note that a request related to the storage configuration may be transmitted by a management computer (not shown) that manages the storage system 10 instead of the host computer 30.
 ストレージシステム10は、ストレージコントローラ100と、SSD701~704と、HDD705~708とを有する。SSD701~704及びHDD705~708は、ドライブボックス110に格納されてもよい。 The storage system 10 includes a storage controller 100, SSDs 701 to 704, and HDDs 705 to 708. The SSDs 701 to 704 and the HDDs 705 to 708 may be stored in the drive box 110.
 ストレージコントローラ100は、SSD701~704及びHDD705~708を制御する機能を有する。ストレージコントローラ100は、プロセッサ104と、ホストI/F101と、ドライブI/F107と、メモリ103と、これらの要素104、101、107及び103を繋ぐ内部バス102とによって構成される。プロセッサ104、メモリ103、ホストI/F101及びドライブI/F107の各々は、1つでもよいし、2以上でもよい。 The storage controller 100 has a function of controlling the SSDs 701 to 704 and the HDDs 705 to 708. The storage controller 100 includes a processor 104, a host I / F 101, a drive I / F 107, a memory 103, and an internal bus 102 that connects these elements 104, 101, 107, and 103. Each of the processor 104, the memory 103, the host I / F 101, and the drive I / F 107 may be one, or two or more.
 プロセッサ104は、演算回路又はコンピュータプログラムに従って様々な演算を実行し、他の要素101、103、107を制御することにより、ストレージシステム10の有する様々な機能を実現する。 The processor 104 implements various functions of the storage system 10 by executing various operations according to an arithmetic circuit or a computer program and controlling the other elements 101, 103, and 107.
 メモリ103は、プロセッサ104が使用するコンピュータプログラム及びデータなどを記憶する。メモリ103は、例えば、DDR3-DRAM、MRAM(Magnetoresistive Random Access Memory)又はFeRAM(Ferroelectric Random Access Memory)などで構成される。 The memory 103 stores computer programs and data used by the processor 104. The memory 103 includes, for example, a DDR3-DRAM, an MRAM (Magnetorative Random Access Memory), or a FeRAM (Ferroelectric Random Access Memory).
 ホストI/F101は、ストレージコントローラ100をSAN20に接続するためのI/F装置である。 The host I / F 101 is an I / F device for connecting the storage controller 100 to the SAN 20.
 ドライブI/F107は、ストレージコントローラ100にドライブの一種であるSSD701~704及びHDD705~708を接続するためのI/F装置である。 The drive I / F 107 is an I / F device for connecting SSDs 701 to 704 and HDDs 705 to 708 as types of drives to the storage controller 100.
 内部バス102は、要素104、101、107及び103がデータを双方向に伝送するための経路である。内部バス102は、例えば、PCI(Peripheral Component Interconnect)などで構成される。内部バス102には、データ伝送に係るスイッチ機能、DMA転送機能、RAID演算機能などを実現するデバイス(何れも不図示)が接続されてもよい。これらのデバイスは、ASICs(Application Specific Integrated Circuit)によって構成されてもよい。 The internal bus 102 is a path for the elements 104, 101, 107 and 103 to transmit data bidirectionally. The internal bus 102 is configured by, for example, PCI (Peripheral Component Interconnect). The internal bus 102 may be connected to devices (none of which are shown) that realize a switch function, a DMA transfer function, a RAID calculation function, and the like related to data transmission. These devices may be configured by ASICs (Application Specific Integrated Circuits).
 図4は、SSD701の構成例を示すブロック図である。なお、SSD702~704も同様の構成例を有する。 FIG. 4 is a block diagram illustrating a configuration example of the SSD 701. Note that the SSDs 702 to 704 also have similar configuration examples.
 SSD701は、ドライブコントローラ710と、そのドライブコントローラ710に接続されている不揮発性の半導体記憶媒体の一種である複数のFM780とを有する。 The SSD 701 includes a drive controller 710 and a plurality of FM 780 that are a kind of nonvolatile semiconductor storage media connected to the drive controller 710.
 FM780は、例えば、NAND型又はNOR型のフラッシュメモリである。FM780は、記憶領域の一区画であるページ単位で、データのリード及びライトが行われる。FM780は、例えば、相変化メモリ、磁気抵抗メモリであるMRAM、抵抗変化型メモリであるReRAM(Resistance Random Access Memory)、又は強誘電体メモリであるFeRAMなどであってもよい。 FM780 is, for example, a NAND type or NOR type flash memory. The FM 780 reads and writes data in units of pages that are a section of the storage area. The FM 780 may be, for example, a phase change memory, an MRAM that is a magnetoresistive memory, a ReRAM (Resistance Random Access Memory) that is a resistance change type memory, or an FeRAM that is a ferroelectric memory.
 ドライブコントローラ710は、プロセッサ713と、メモリ716と、ドライブI/F711と、FMコントローラ717と、圧縮伸張回路718と、これらの要素713、716、711、717、718を繋ぐ内部バス712とによって構成される。プロセッサ713、メモリ716及びドライブI/F711の各々は、1つでもよいし、2以上でもよい。 The drive controller 710 includes a processor 713, a memory 716, a drive I / F 711, an FM controller 717, a compression / decompression circuit 718, and an internal bus 712 that connects these elements 713, 716, 711, 717, and 718. Is done. Each of the processor 713, the memory 716, and the drive I / F 711 may be one, or two or more.
 プロセッサ713は、演算回路又はコンピュータプログラムに従って様々な演算を実行し、他の要素711、716、718、717を制御することにより、SSDの有する様々な機能を実現する。 The processor 713 implements various operations according to an arithmetic circuit or a computer program, and controls other elements 711, 716, 718, 717, thereby realizing various functions of the SSD.
 メモリ716は、プロセッサ713が使用するコンピュータプログラム及びデータなどを記憶する。メモリ716は、FM780と比べて高速にデータのリード/ライトをすることができる記憶媒体であり、例えばDRAMである。メモリ716は、キャッシュ領域2000を有する。キャッシュ領域2000には、FM780にライトするデータや、FM780からリードされたデータが一時的に格納される。FM780からリードされたデータには、先読みコマンドに応じてリードされたデータも含まれる。メモリ716は、構成情報管理テーブル2100を有する。構成情報管理テーブル2100の詳細については後述する。 The memory 716 stores computer programs and data used by the processor 713. The memory 716 is a storage medium that can read / write data at a higher speed than the FM 780, and is, for example, a DRAM. The memory 716 has a cache area 2000. In the cache area 2000, data to be written to the FM 780 and data read from the FM 780 are temporarily stored. The data read from the FM 780 includes data read in response to the pre-read command. The memory 716 includes a configuration information management table 2100. Details of the configuration information management table 2100 will be described later.
 ドライブI/F711は、ドライブコントローラ710をストレージシステム10のドライブI/F107に接続するためのI/F装置である。 The drive I / F 711 is an I / F device for connecting the drive controller 710 to the drive I / F 107 of the storage system 10.
 圧縮伸張回路718は、FM780にライトするデータを圧縮、又はFM780からリードしたデータを伸長するための回路である。圧縮伸張回路の機能は、プロセッサ713で実現されてもよい。 The compression / decompression circuit 718 is a circuit for compressing data to be written to the FM 780 or decompressing data read from the FM 780. The function of the compression / decompression circuit may be realized by the processor 713.
 FMコントローラ717は、このFMコントローラ717に接続されている複数のFM780を制御する。例えば、FMコントローラ717は、FM780に対するデータのリード及びライトを制御する。 The FM controller 717 controls a plurality of FM 780 connected to the FM controller 717. For example, the FM controller 717 controls reading and writing of data with respect to the FM 780.
 内部バス712は、要素713、716、711、717、718がデータを双方向に伝送するための経路である。内部バス712には、データ伝送に係るスイッチ機能などを実現するデバイス(不図示)が接続されてもよい。このデバイスは、ASICsによって構成されてもよい。 The internal bus 712 is a path for the elements 713, 716, 711, 717, and 718 to transmit data bidirectionally. The internal bus 712 may be connected to a device (not shown) that implements a switch function related to data transmission. This device may be configured by ASICs.
 プロセッサ713は、複数のFM780の物理記憶領域を論理アドレス空間(後述のドライブ内LBA(Logical Block Address)に相当)に対応付けて、ストレージコントローラ100に提供する。物理記憶領域は、複数のブロックから構成され、ブロックはデータの消去単位である。また、ブロックは複数のページから構成され、ページはデータのリード/ライトの単位である。メモリ716には、論理アドレス空間と物理記憶領域(複数のページ)との対応関係を示す情報(論理-物理マッピングテーブル)が格納されている。ストレージコントローラ100は、論理アドレスを指定してリードコマンド/ライトコマンドを送信する。SSD700内部のプロセッサ713は、リードコマンド又はライトコマンドを受信すると、論理-物理マッピングテーブルに基づいて、コマンドが指定する論理アドレスから物理記憶領域上のページを特定し、リード又はライト処理を実行する。 The processor 713 provides the storage controller 100 with the physical storage areas of the plurality of FM 780s associated with a logical address space (corresponding to an LBA (Logical Block Address) described later). The physical storage area is composed of a plurality of blocks, and the blocks are data erasure units. The block is composed of a plurality of pages, and the page is a unit of data read / write. The memory 716 stores information (logical-physical mapping table) indicating the correspondence between the logical address space and the physical storage area (a plurality of pages). The storage controller 100 transmits a read command / write command by designating a logical address. When the processor 713 in the SSD 700 receives a read command or a write command, the processor 713 identifies a page on the physical storage area from a logical address specified by the command based on the logical-physical mapping table, and executes a read or write process.
 なお、HDD705~708については、図3のSSD701と比較して、FM780及びFMコントローラ717などの一部は異なるものの、ドライブコントローラ710と、そのドライブコントローラ710から制御される記憶媒体とを有するという構成は同様であるので、説明を省略する。 The HDDs 705 to 708 include a drive controller 710 and a storage medium controlled by the drive controller 710, although the FM 780, the FM controller 717, and the like are different from the SSD 701 in FIG. Are the same and will not be described.
 図5は、仮想ボリュームとプールを説明する模式図である。 FIG. 5 is a schematic diagram illustrating virtual volumes and pools.
 ストレージコントローラ100は、複数のRAIDグループ200、300及び400の記憶領域をまとめてプール500を構成する。プール500は、異なる種類のRAIDグループによって構成されてもよい。例えば、プール500は、SSDによって構成されるRAIDグループ200と、SAS-HDDによって構成されるRAIDグループ300と、SATA-HDDによって構成されるRAIDグループ400と、によって構成されている。例えば、I/O速度はSATA-HDD、SAS-HDD、SSDの順に速くなるが、単位容量当たりのコスト(ビットコスト)はSATA-HDD、SAS-HDD、SSDの順に高くなる。 The storage controller 100 configures a pool 500 by collecting storage areas of a plurality of RAID groups 200, 300, and 400. The pool 500 may be configured by different types of RAID groups. For example, the pool 500 includes a RAID group 200 configured by SSD, a RAID group 300 configured by SAS-HDD, and a RAID group 400 configured by SATA-HDD. For example, the I / O speed increases in the order of SATA-HDD, SAS-HDD, and SSD, but the cost per unit capacity (bit cost) increases in the order of SATA-HDD, SAS-HDD, and SSD.
 RAIDグループには、それを構成するドライブのタイプに基づいて、ティア(階層)が設定される。例えば、I/O速度の速い順に、SSDで構成されているRAIDグループ200にティア0、SAS-HDDで構成されているRAIDグループ300にティア1、SATA-HDDで構成されているRAIDグループ400にティア2が設定される。 In a RAID group, tiers (layers) are set based on the types of drives that make up the RAID group. For example, in order of increasing I / O speed, the RAID group 200 composed of SSDs is tier 0, the RAID group 300 composed of SAS-HDDs is tier 1, and the RAID group 400 composed of SATA-HDDs is Tier 2 is set.
 仮想ボリューム600は、ホスト計算機30がユーザデータを格納するために認識する仮想的な論理ボリュームである。仮想ボリューム600は、仮想アドレス(仮想ボリュームを構成する論理アドレス)を有し、仮想アドレスを所定の範囲に区切って仮想エクステントが構成される。なお、仮想ボリューム600の容量として定義される容量は、ストレージシステム10が有する記憶媒体の容量の合計よりも大きな記憶容量とすることができる。また、仮想ボリューム600は任意の数の仮想エクステント601から607によって構成されているものとする。 The virtual volume 600 is a virtual logical volume that the host computer 30 recognizes in order to store user data. The virtual volume 600 has a virtual address (logical address constituting the virtual volume), and a virtual extent is configured by dividing the virtual address into a predetermined range. Note that the capacity defined as the capacity of the virtual volume 600 can be a storage capacity larger than the total capacity of the storage media included in the storage system 10. The virtual volume 600 is assumed to be composed of an arbitrary number of virtual extents 601 to 607.
 ストレージコントローラ100は、プール500を構成するエクステントを、仮想ボリューム600の仮想エクステントに割り当てる。例えば、ストレージコントローラ100は、仮想ボリューム600内の或る仮想アドレス範囲に対するライト要求を受信すると、その仮想アドレス範囲を含む仮想エクステント(一例として仮想エクステント602)を特定する。そして、ストレージコントローラ100は、特定した仮想エクステント602に、プール500を構成するRAIDグループ200のエクステント242を割り当て、ライト要求に伴うデータを格納する。例えば、未だライト要求の対象となったアドレスを含まない仮想エクステント605には、何れのエクステントも割り当てられていない。 The storage controller 100 allocates extents constituting the pool 500 to the virtual extents of the virtual volume 600. For example, when the storage controller 100 receives a write request for a certain virtual address range in the virtual volume 600, the storage controller 100 specifies a virtual extent (for example, a virtual extent 602) that includes the virtual address range. Then, the storage controller 100 allocates the extent 242 of the RAID group 200 that constitutes the pool 500 to the specified virtual extent 602, and stores data associated with the write request. For example, none of the extents is allocated to the virtual extent 605 that does not include the address for which the write request has been made.
 図5では、1つの仮想エクステントに1つのエクステントを割り当てているが、1つの仮想エクステントに複数のエクステントを割り当てる構成であってもよい。 In FIG. 5, one extent is allocated to one virtual extent, but a configuration may be used in which a plurality of extents are allocated to one virtual extent.
 ストレージコントローラ100は、ティアの異なるRAIDグループ間でエクステント移動処理を実行してよい。例えば、仮想エクステント602に対するI/O頻度が低い場合、ストレージコントローラ100は、仮想エクステント602の参照先のエクステント242を、ティア1のRAIDグループ300に移動させるエクステント移動処理を実行する。ビットコストの高いティア0のRAIDグループに、I/O頻度の低いエクステントを保持しておくことは、コストパフォーマンスが悪いからである。 The storage controller 100 may execute extent movement processing between RAID groups with different tiers. For example, when the I / O frequency for the virtual extent 602 is low, the storage controller 100 executes an extent migration process for migrating the reference extent 242 of the virtual extent 602 to the RAID group 300 of the tier 1. This is because maintaining extents with a low I / O frequency in a Tier 0 RAID group with a high bit cost results in poor cost performance.
 図6は、エクステントの構成例を示すブロック図である。 FIG. 6 is a block diagram showing a configuration example of extents.
 RAIDグループ200は、SSD701~SSD704によるRAID5の「3D+1P」構成を有する。RAID5の場合、ユーザデータ及びパリティデータが、SSD701~704にローテーションされて順番に格納される。例えば、図6に示すように、ユーザデータD1はSSD711に、ユーザデータD2はSSD712に、ユーザデータD3はSSD713に格納され、D1~D3から生成されるパリティデータP1はSSD714に格納される。このD1、D2、D3及びP1のセットをストライプ列901という。Dn及びPn(nは1以上の整数であり、データの順番を示す)のサイズは全て等しく、このサイズを「ストライプ幅」という。例えば、ストライプ幅が「256KB」の場合、D1、D2、D3及びP1のサイズはそれぞれ「256KB」であり、ストライプ列のサイズは「256KB×4=1024KB」となる。 The RAID group 200 has a “3D + 1P” configuration of RAID 5 based on the SSDs 701 to 704. In the case of RAID 5, user data and parity data are rotated to SSDs 701 to 704 and stored in order. For example, as shown in FIG. 6, user data D1 is stored in SSD 711, user data D2 is stored in SSD 712, user data D3 is stored in SSD 713, and parity data P1 generated from D1 to D3 is stored in SSD 714. The set of D1, D2, D3, and P1 is called a stripe column 901. The sizes of Dn and Pn (n is an integer of 1 or more and indicates the order of data) are all equal, and this size is referred to as “strip width”. For example, when the stripe width is “256 KB”, the sizes of D1, D2, D3, and P1 are “256 KB”, and the stripe column size is “256 KB × 4 = 1024 KB”.
 2つめのストライプ列では、D4がSSD714に、D5がSSD711に、D6がSSD712に、D4~D6から生成されるP2がSSD713に格納される。1つめのストライプ列と比較すると、パリティデータの格納されるSSDが異なっている。このように、エクステント70には、ストライプ列901ごとに、ユーザデータD1~D16及びパリティデータP1~P6がローテーションされて順番に格納されている。RAID5では、パリティデータは、各ストライプ列の複数のユーザデータの排他的論理和演算(XOR演算)によって生成される。例えば、P1はD1、D2及びD3の排他的論理和演算によって生成される。ストレージコントローラ100が排他的論理和演算回路を備えてパリティデータを生成してもよいし、プロセッサ104がプログラムによりパリティデータを生成してもよい。又は、ドライブが排他的論理和演算回路を備えて、パリティデータを生成してもよい。 In the second stripe row, D4 is stored in SSD 714, D5 is stored in SSD 711, D6 is stored in SSD 712, and P2 generated from D4 to D6 is stored in SSD 713. Compared to the first stripe row, the SSD storing parity data is different. Thus, in the extent 70, the user data D1 to D16 and the parity data P1 to P6 are rotated and stored in order for each stripe column 901. In RAID5, parity data is generated by an exclusive OR operation (XOR operation) of a plurality of user data in each stripe column. For example, P1 is generated by an exclusive OR operation of D1, D2, and D3. The storage controller 100 may include an exclusive OR circuit and generate parity data, or the processor 104 may generate parity data by a program. Alternatively, the drive may include an exclusive OR operation circuit to generate parity data.
 このようにパリティデータを生成し、ドライブに格納することで、ドライブの障害時にデータを復元することができる。例えば、ドライブ701に障害が発生した場合、D1は、D2、D3及びP1の排他的論理和演算により復元される。 * By generating parity data and storing it in the drive in this way, the data can be restored in the event of a drive failure. For example, when a failure occurs in the drive 701, D1 is restored by an exclusive OR operation of D2, D3, and P1.
 メモリ103のキャッシュ領域1000は、所定サイズの複数のセグメント500によって構成されている。したがって、キャッシュ領域に一度に格納可能なデータのサイズは、セグメント500のサイズ以下となる。例えば、セグメントとストライプ幅のサイズが同じ場合、ストレージコントローラ100は、エクステント70に含まれるD1~D16及びP1~P6を、24回に分けてキャッシュ領域のセグメント500に格納する。 The cache area 1000 of the memory 103 is composed of a plurality of segments 500 having a predetermined size. Therefore, the size of data that can be stored in the cache area at a time is equal to or smaller than the size of the segment 500. For example, when the size of the segment and the stripe width are the same, the storage controller 100 stores D1 to D16 and P1 to P6 included in the extent 70 in the segment 500 of the cache area in 24 times.
 図6において、SSD701には、D1→D5→D9→P4→D13→D17の順にユーザデータ及びパリティデータが格納されている。よって、SSD701は、3つのユーザデータの後に1つのパリティデータが格納されているという規則性を有する。また、SSD701のユーザデータのみに着目すると、D1→D5→D9→D13→D17の順に格納されている。よって、SSD701は、ユーザデータの順番が4つずつ(つまり、1024KBずつ)増えるという規則性を有する。 6, user data and parity data are stored in the SSD 701 in the order of D1, D5, D9, P4, D13, and D17. Therefore, the SSD 701 has regularity that one parity data is stored after three user data. When attention is paid only to the user data of the SSD 701, the data is stored in the order of D1, D5, D9, D13, and D17. Therefore, the SSD 701 has regularity that the order of user data increases by four (that is, by 1024 KB).
 この規則性は、他のSSD702~704でも同様である。しかし、RAIDグループ200内のSSDの位置(順序)によってパリティデータPが初回に出現するまでのユーザデータDの数が異なる。例えば、SSD701~704は、以下のような関係性を有する。 This regularity is the same for the other SSDs 702 to 704. However, the number of user data D until the parity data P first appears varies depending on the position (order) of the SSD in the RAID group 200. For example, the SSDs 701 to 704 have the following relationship.
SSD701には、3つのユーザデータDの後に初回のパリティデータPが格納されている。
SSD702には、2つのユーザデータDの後に初回のパリティデータPが格納されている。
SSD703には、1つのユーザデータDの後に初回のパリティデータPが格納されている。
SSD704には、先頭に初回のパリティデータPが格納されている。
The SSD 701 stores the first parity data P after the three user data D.
The SSD 702 stores the first parity data P after the two user data D.
The SSD 703 stores the first parity data P after one user data D.
The SSD 704 stores the first parity data P at the top.
 したがって、複数のドライブの各々は、ストレージコントローラ100から、RAID構成を示す「nD+mP」の「n」及び「m」(n、mは1以上の整数)と、ストライプ幅のサイズと、RAIDグループ内でのドライブの位置と、エクステントのサイズと、エクステントを一意に識別するためのエクステント番号とを含む構成情報を受信することにより、この構成情報に基づいて、エクステント番号と、自分のドライブのLBA(ドライブ内LBA)との対応関係を特定するための構成情報管理テーブル2100(図13参照)を生成することができる。 Therefore, each of the plurality of drives receives “n” and “m” (n and m are integers of 1 or more) of “nD + mP” indicating the RAID configuration, the stripe width size, and the RAID group from the storage controller 100. By receiving the configuration information including the position of the drive, the size of the extent, and the extent number for uniquely identifying the extent, the extent number and the LBA ( A configuration information management table 2100 (see FIG. 13) for specifying the correspondence with the drive LBA can be generated.
 図7は、ストレージコントローラ100の有するメモリ103に保持される情報の例を示すブロック図である。 FIG. 7 is a block diagram illustrating an example of information held in the memory 103 included in the storage controller 100.
 ストレージコントローラ100の有するメモリ103は、テーブル領域1001及びキャッシュ領域1000を有する。 The memory 103 included in the storage controller 100 has a table area 1001 and a cache area 1000.
 テーブル領域1001には、ドライブ管理テーブル1100と、RAID管理テーブル1200と、プール管理テーブル1300と、エクステント管理テーブル1400と、仮想ボリューム管理テーブル1500とが格納される。 In the table area 1001, a drive management table 1100, a RAID management table 1200, a pool management table 1300, an extent management table 1400, and a virtual volume management table 1500 are stored.
 ドライブ管理テーブル1100は、ドライブに関する情報を保持する。RAID管理テーブル1200は、RAIDグループに関する情報を保持する。プール管理テーブル1300は、プールに関する情報を保持する。エクステント管理テーブル1400は、エクステントに関する情報を保持する。仮想ボリューム管理テーブル1500は、仮想ボリュームに関する情報を保持する。これらのテーブルの詳細については後述する。 The drive management table 1100 holds information about drives. The RAID management table 1200 holds information related to RAID groups. The pool management table 1300 holds information regarding the pool. The extent management table 1400 holds information related to extents. The virtual volume management table 1500 holds information regarding virtual volumes. Details of these tables will be described later.
 キャッシュ領域1000は、複数のセグメント500によって構成されている。ストレージコントローラ100は、セグメント以下のサイズでドライブからデータをリードし、キャッシュ領域1000のセグメント500に格納(キャッシュ)する。ストレージコントローラ100は、ホスト計算機30から送信されたライトデータをセグメント以下のサイズに分割して、キャッシュ領域1000のセグメント500に格納(キャッシュ)する。 The cache area 1000 is composed of a plurality of segments 500. The storage controller 100 reads data from the drive with a size equal to or smaller than the segment, and stores (caches) the data in the segment 500 of the cache area 1000. The storage controller 100 divides the write data transmitted from the host computer 30 into a size equal to or smaller than the segment and stores (caches) it in the segment 500 of the cache area 1000.
 図8は、ドライブ管理テーブル1100の構成例を示す。 FIG. 8 shows a configuration example of the drive management table 1100.
 ドライブ管理テーブル1100は、ストレージコントローラ100が制御する各ドライブに関する情報を有する。ドライブ管理テーブル1100は、ドライブ番号1101と、ドライブタイプ1102と、論理容量1103と、を属性とするレコードを有する。 The drive management table 1100 has information regarding each drive controlled by the storage controller 100. The drive management table 1100 has a record having a drive number 1101, a drive type 1102, and a logical capacity 1103 as attributes.
 ドライブ番号1101は、ドライブを一意に識別するための情報である。ドライブタイプ1102は、ドライブ番号1101に対応するドライブのタイプを表す情報である。ドライブタイプ1102は、例えば、SSD、SAS-HDD、SATA-HDDなどである。論理容量1103は、ドライブの有する論理的な記憶容量を表す情報である。 The drive number 1101 is information for uniquely identifying the drive. The drive type 1102 is information indicating the type of drive corresponding to the drive number 1101. The drive type 1102 is, for example, SSD, SAS-HDD, SATA-HDD, or the like. The logical capacity 1103 is information representing the logical storage capacity of the drive.
 図8において、レコード1110は、ドライブ番号1101「0」に対応するドライブは、ドライブタイプ1102が「SSD」であり、論理容量1103が「800GB」であることを表す。 8, a record 1110 indicates that the drive corresponding to the drive number 1101 “0” indicates that the drive type 1102 is “SSD” and the logical capacity 1103 is “800 GB”.
 図9は、RAID管理テーブル1200の構成例を示す。 FIG. 9 shows a configuration example of the RAID management table 1200.
 RAID管理テーブル1200は、ストレージコントローラ100が制御するRAIDグループに関する情報を有する。RAID管理テーブル1200は、RAID番号1201と、ドライブタイプ1202と、RAIDレベル1203と、RAID構成1204と、RAID構成ドライブ1205と、ティア1208と、を属性とするレコードを有する。 The RAID management table 1200 has information regarding RAID groups controlled by the storage controller 100. The RAID management table 1200 includes a record having a RAID number 1201, a drive type 1202, a RAID level 1203, a RAID configuration 1204, a RAID configuration drive 1205, and a tier 1208 as attributes.
 RAID番号1201は、RAIDグループを一意に識別するための情報である。 The RAID number 1201 is information for uniquely identifying a RAID group.
 ドライブタイプ1202は、図8のドライブタイプ1102と同様の情報である。RAIDグループは同じタイプのドライブから構成されるので、1つのRAID番号1201に対して1つのドライブタイプ1202が対応付けられる。 The drive type 1202 is the same information as the drive type 1102 in FIG. Since the RAID group is composed of the same type of drive, one drive type 1202 is associated with one RAID number 1201.
 RAIDレベル1203は、RAIDグループのレベルを表す情報である、RAIDレベルには、例えば、「RAID1+0」、「RAID1」、「RAID3」、「RAID4」、「RAID5」、「RAID6」などがある。 The RAID level 1203 is information representing the level of the RAID group. Examples of the RAID level include “RAID1 + 0”, “RAID1”, “RAID3”, “RAID4”, “RAID5”, “RAID6”, and the like.
 RAID構成1204は、RAIDグループの構成を表す情報である。「mD+nP」は、ストライプ列内のデータがm個、パリティがn個であることを示す。例えば、1つのストライプ列に対して、3つのドライブがユーザデータを格納し、1つのドライブがパリティデータを格納する場合、RAID構成は「3D+1P」と表現される。 The RAID configuration 1204 is information representing the configuration of a RAID group. “MD + nP” indicates that there are m pieces of data in the stripe column and n pieces of parity. For example, when three drives store user data and one drive stores parity data for one stripe column, the RAID configuration is expressed as “3D + 1P”.
 RAID構成ドライブ1205は、RAIDグループを構成する各ドライブのドライブ番号を表す情報である。 The RAID configuration drive 1205 is information representing the drive number of each drive constituting the RAID group.
 ティア1206は、RAIDグループに設定されたティアを表す情報である。例えば、最もI/O速度の速いSSDによって構成されているRAIDグループにはティア「0」、次にI/O速度の速いSAS-HDDによって構成されているRAIDグループにはティア「1」、最もI/O速度の遅いSATA-HDDによって構成されているRAIDグループにはティア「2」が設定される。 The tier 1206 is information representing a tier set in the RAID group. For example, a tier “0” is assigned to a RAID group configured with an SSD having the fastest I / O speed, a tier “1” is assigned to a RAID group configured with a SAS-HDD having the next fastest I / O speed, Tier “2” is set in the RAID group configured by the SATA-HDD having a low I / O speed.
 図9において、レコード1210は、RAID番号1201「0」に対応するRAIDグループが、ドライブ番号「1」、「10」、…(1205)に対応する「SSD」(1202)によって構成されていることを表す。そして、レコード1210は、RAID番号1201「0」に対応するRAIDグループが、「3D+1P」(1204)の「RAID5」(1203)で構成されており、そのRAIDグループにはティア「0」(1206)が設定されていることを表す。 In FIG. 9, the record 1210 includes a RAID group corresponding to the RAID number 1201 “0” composed of “SSD” (1202) corresponding to the drive numbers “1”, “10”,. Represents. In the record 1210, the RAID group corresponding to the RAID number 1201 “0” is configured by “RAID5” (1203) of “3D + 1P” (1204), and the RAID group has a tier “0” (1206). Indicates that is set.
 図10は、プール管理テーブル1300の構成例を示す。 FIG. 10 shows a configuration example of the pool management table 1300.
 プール管理テーブル1300は、ストレージコントローラ100が制御するプールに関する情報を有する。プール管理テーブル1300は、プール番号1301と、RAID番号1302と、RAID残容量1303と、プール残容量1304と、を属性とするレコードを有する。 The pool management table 1300 has information regarding the pool controlled by the storage controller 100. The pool management table 1300 includes a record having a pool number 1301, a RAID number 1302, a RAID remaining capacity 1303, and a pool remaining capacity 1304 as attributes.
 プール番号1301は、プールを一意に識別するための情報である。RAID番号1302は、上記図9のRAID番号1201と同様の情報である。1つのプールが複数のRAIDグループで構成されている場合、1つのプール番号に複数のRAID番号が対応付けられる。 The pool number 1301 is information for uniquely identifying the pool. The RAID number 1302 is the same information as the RAID number 1201 of FIG. When one pool is composed of a plurality of RAID groups, a plurality of RAID numbers are associated with one pool number.
 RAID残容量1303は、RAIDグループの残容量(使用可能容量)を表す情報である。プール残容量1304は、プールの残容量(使用可能容量)を表す情報である。つまり、プール残容量1304は、プールに含まれるRAIDグループの残容量の合計値である。 The RAID remaining capacity 1303 is information indicating the remaining capacity (usable capacity) of the RAID group. The pool remaining capacity 1304 is information indicating the remaining capacity (usable capacity) of the pool. That is, the pool remaining capacity 1304 is a total value of the remaining capacity of the RAID groups included in the pool.
 図10において、レコード1310は、プール番号1301「0」に対応するプールが、RAID番号「0」、「1」、…、「n」(1302)に対応するRAIDグループによって構成されていることを表す。そして、例えば、RAID番号1302「0」に対応するRAIDグループの残容量1303は「123GB」であり、プール番号1301「0」に対応するプールの残容量1304は「3456GB」であることを表す。 10, the record 1310 indicates that the pool corresponding to the pool number 1301 “0” is configured by the RAID group corresponding to the RAID numbers “0”, “1”,..., “N” (1302). To express. For example, the remaining capacity 1303 of the RAID group corresponding to the RAID number 1302 “0” is “123 GB”, and the remaining capacity 1304 of the pool corresponding to the pool number 1301 “0” is “3456 GB”.
 図11は、エクステント管理テーブル1400の構成例を示す。 FIG. 11 shows a configuration example of the extent management table 1400.
 エクステント管理テーブル1400は、ストレージコントローラ100が制御するエクステントに関する情報を有する。エクステント管理テーブル1400は、エクステント番号1401と、RAID番号1402と、エクステントサイズ1403と、ストライプ幅1404と、ステータス1405と、エクステント内LBA1406と、ドライブ番号1407と、ドライブ内LBA1408と、を属性とするレコードを有する。 The extent management table 1400 has information regarding extents controlled by the storage controller 100. The extent management table 1400 has a record having extent number 1401, RAID number 1402, extent size 1403, stripe width 1404, status 1405, extent LBA 1406, drive number 1407, and drive LBA 1408 as attributes. Have
 エクステント番号1401は、エクステントを一意に識別するための情報である。RAID番号1402は、上記図9のRAID番号1201と同様の情報である。エクステントサイズ1403は、エクステントのサイズ(例えば、Byte)を表す情報である。ストライプ幅1404は、エクステントのストライプ幅のサイズ(例えば、Byte)を表す情報である。 The extent number 1401 is information for uniquely identifying an extent. The RAID number 1402 is the same information as the RAID number 1201 of FIG. The extent size 1403 is information representing the extent size (for example, Byte). The stripe width 1404 is information representing the size of the extent stripe width (for example, Byte).
 ステータス1405は、エクステントのステータスを表す情報である。そのエクステントが仮想ボリュームの仮想エクステントに割り当て済みの場合、ステータス1405には、エクステントが割当てられている仮想ボリューム番号と、仮想エクステント番号とが記録される。そのエクステントが仮想エクステントに未割り当ての場合、ステータス1405は「N/A」となる。図11におけるステータス1405の「0,3」は、仮想ボリューム番号「0」の仮想エクステント番号「3」に割り当てられていることを表す。 Status 1405 is information indicating the status of the extent. When the extent has already been allocated to the virtual extent of the virtual volume, the status 1405 records the virtual volume number to which the extent is allocated and the virtual extent number. When the extent is not allocated to the virtual extent, the status 1405 is “N / A”. “0, 3” of the status 1405 in FIG. 11 indicates that the virtual extent number “3” of the virtual volume number “0” is assigned.
 エクステント内LBA1406は、RAIDグループによって構成される記憶領域の一区画を示すLBAを表す情報である。ドライブ番号1407は、上記図8のドライブ番号1102と同様の情報である。ドライブ内LBA1408は、ドライブの記憶領域の一区画を示すLBAの範囲を表す情報である。 The in-extent LBA 1406 is information representing an LBA indicating one section of the storage area configured by the RAID group. The drive number 1407 is the same information as the drive number 1102 in FIG. The in-drive LBA 1408 is information representing an LBA range indicating a section of the storage area of the drive.
 図11において、レコード1410は、エクステント番号1401「0」に対応するエクステントが、RAID番号1402「1」に対応するRAIDグループに属し、仮想ボリューム番号「0」の仮想エクステント番号「3」(1405)に対応する仮想エクステントに割り当てられていることを表す。そして、レコード1410は、RAID番号1402「1」に対応するRAIDグループにおいて、エクステントサイズ1403は「1GB」であり、ストライプ幅1404は「256KB」であることを表す。そして、レコード1410は、エクステント番号1401「0」に対応するエクステントが、RAID番号1402「1」に対応するRAIDグループのエクステント内LBA1406「D1」、「D2」、「D3」、「P1」、…、によって構成されていることを表す。そして、レコード1410は、エクステント内LBA1406「D1」には、ドライブ番号1407「0」に対応するドライブのドライブ内LBA1408「0KB~255KB」の範囲が割り当てられていることを表す。 In FIG. 11, a record 1410 has an extent corresponding to the extent number 1401 “0” belonging to the RAID group corresponding to the RAID number 1402 “1”, and the virtual extent number “3” (1405) of the virtual volume number “0”. Indicates that it is allocated to a virtual extent corresponding to. The record 1410 represents that the extent size 1403 is “1 GB” and the stripe width 1404 is “256 KB” in the RAID group corresponding to the RAID number 1402 “1”. In the record 1410, the extent corresponding to the extent number 1401 “0” is the LBA in the extent corresponding to the RAID number 1402 “1” LBA 1406 “D1”, “D2”, “D3”, “P1”,. It represents that it is comprised by. The record 1410 indicates that the range in the drive LBA 1408 “0 KB to 255 KB” of the drive corresponding to the drive number 1407 “0” is assigned to the in-extent LBA 1406 “D1”.
 図12は、仮想ボリューム管理テーブル1500の構成例を示す。 FIG. 12 shows a configuration example of the virtual volume management table 1500.
 仮想ボリューム管理テーブル1500は、ストレージコントローラ100がホスト計算機30に提供する仮想ボリューム60に関する情報を有する。仮想ボリューム管理テーブル1500は、仮想ボリューム番号1501と、仮想容量1502と、実使用容量1503と、仮想アドレス1510と、仮想エクステント番号1504と、RAID番号1505と、エクステント番号1506と、ティア1507と、リードIOPS1508と、ライトIOPS1509と、を属性とするレコードを有する。 The virtual volume management table 1500 has information on the virtual volume 60 that the storage controller 100 provides to the host computer 30. The virtual volume management table 1500 includes a virtual volume number 1501, a virtual capacity 1502, a real used capacity 1503, a virtual address 1510, a virtual extent number 1504, a RAID number 1505, an extent number 1506, a tier 1507, and a read. It has a record with IOPS 1508 and write IOPS 1509 as attributes.
 仮想ボリューム600は、仮想アドレス(仮想ボリュームを構成する論理アドレス)を有し、仮想アドレスを所定の範囲に区切って仮想エクステントが構成される。 The virtual volume 600 has a virtual address (logical address constituting the virtual volume), and a virtual extent is configured by dividing the virtual address into a predetermined range.
 仮想ボリューム番号1501は、仮想ボリュームを一意に識別するための情報である。仮想容量1502は、仮想ボリュームの全体の容量を表す情報である。実使用容量1503は、仮想ボリュームのうち実際に使用されている容量を表す情報である。実使用容量1503は、プールから仮想ボリュームに割り当てられている容量に等しい。仮想アドレス1510は、仮想ボリューム内の領域を一意に識別するアドレスを示す。仮想エクステント番号1504は、仮想エクステントを一意に識別するための情報である。図12に示されるように、仮想ボリュームの仮想アドレスは、所定の仮想アドレスの範囲(1510)ごとに区切られ、仮想エクステント(1504)と対応付けられる。 The virtual volume number 1501 is information for uniquely identifying the virtual volume. The virtual capacity 1502 is information representing the entire capacity of the virtual volume. The actual used capacity 1503 is information indicating the capacity actually used in the virtual volume. The actual used capacity 1503 is equal to the capacity allocated from the pool to the virtual volume. The virtual address 1510 indicates an address that uniquely identifies an area in the virtual volume. The virtual extent number 1504 is information for uniquely identifying a virtual extent. As shown in FIG. 12, the virtual address of the virtual volume is divided for each predetermined virtual address range (1510) and associated with the virtual extent (1504).
 RAID番号1505、エクステント番号1506、及びティア1507は、上記のRAID番号1201、エクステント番号1401、及びティア1206と同様の情報である。 The RAID number 1505, extent number 1506, and tier 1507 are the same information as the RAID number 1201, extent number 1401, and tier 1206 described above.
 リードIOPS1508は、エクステントに対して単位時間に発生したリードの回数を表す情報である。ライトIOPS1509は、エクステントに対して単位時間に発生したライトの回数を表す情報である。リードIOPS1508及びライトIOPS1509をまとめて「統計情報」といってもよい。つまり、統計情報は、エクステントに対するI/O頻度を表す情報である。統計情報は、エクステント移動処理の対象とするエクステントを決定するために使用される。例えば、ストレージコントローラ100は、リードIOPS1508又はライトIOPS1509が或る閾値よりも小さいエクステント番号に対応するエクステントを、下位のティアである(つまり、I/O速度の遅い)RAIDグループへの移動対象とする。反対に、ストレージコントローラ100は、リードIOPS1508又はライトIOPS1509が或る閾値よりも大きいエクステント番号に対応するエクステントを、上位のティアである(つまり、I/O速度の速い)RAIDグループへの移動対象とする。 The read IOPS 1508 is information indicating the number of reads that have occurred per unit time for the extent. The write IOPS 1509 is information indicating the number of writes that have occurred in unit time for the extent. The read IOPS 1508 and the write IOPS 1509 may be collectively referred to as “statistical information”. That is, the statistical information is information representing the I / O frequency for the extent. The statistical information is used to determine an extent to be subjected to extent movement processing. For example, the storage controller 100 sets an extent corresponding to an extent number for which the read IOPS 1508 or the write IOPS 1509 is smaller than a certain threshold as a migration target to a RAID group that is a lower tier (that is, the I / O speed is low). . On the other hand, the storage controller 100 sets the extent corresponding to the extent number for which the read IOPS 1508 or the write IOPS 1509 is larger than a certain threshold as the transfer target to the RAID group that is the upper tier (that is, the I / O speed is high). To do.
 図12において、レコード1520は、仮想ボリューム番号1501「0」に対応する仮想ボリュームの仮想容量1502が「800GB」であり、実使用容量1503が「150GB」であることを表す。そして、レコード1520は、仮想ボリューム番号1501「0」に対応する仮想ボリュームが、仮想エクステント番号1504「0」、「1」、「2」、…、「n」に対応する仮想エクステントによって構成されており、例えば、この仮想ボリュームの仮想アドレス1510「0~1024」の領域が仮想エクステント番号1504「0」と対応付けられていることを表す。そして、このレコード1520は、仮想エクステント番号1504「0」に対応する仮想エクステントには、RAID番号1505「0」に対応するRAIDグループのエクステント番号1506「0」に対応するエクステントが割り当てられていることを表す。そして、このレコード1520は、エクステント番号1506「0」に対応するエクステントが、ティア1507「0」のRAIDグループに属していることを表す。そして、このレコード1520は、エクステント番号1506「0」に対応するエクステントにおけるリードIOPS1508が「100」、ライトIOPS1509が「0」であることを表す。 12, a record 1520 indicates that the virtual capacity 1502 of the virtual volume corresponding to the virtual volume number 1501 “0” is “800 GB” and the actual used capacity 1503 is “150 GB”. In the record 1520, the virtual volume corresponding to the virtual volume number 1501 “0” is configured by virtual extents corresponding to the virtual extent numbers 1504 “0”, “1”, “2”,. For example, this indicates that the area of the virtual address 1510 “0 to 1024” of this virtual volume is associated with the virtual extent number 1504 “0”. In this record 1520, the extent corresponding to the extent number 1506 “0” of the RAID group corresponding to the RAID number 1505 “0” is allocated to the virtual extent corresponding to the virtual extent number 1504 “0”. Represents. This record 1520 indicates that the extent corresponding to the extent number 1506 “0” belongs to the RAID group of the tier 1507 “0”. This record 1520 indicates that the read IOPS 1508 in the extent corresponding to the extent number 1506 “0” is “100” and the write IOPS 1509 is “0”.
 また、エクステントが未割り当ての仮想エクステントに対応するRAID番号1505、エクステント番号1506、ティア1507、リードIOPS1508及びライトIOPS1509は、「N/A」とする。 Also, the RAID number 1505, extent number 1506, tier 1507, read IOPS 1508, and write IOPS 1509 corresponding to a virtual extent to which no extent has been assigned is “N / A”.
 図13は、構成情報管理テーブル2100の構成例を示す。 FIG. 13 shows a configuration example of the configuration information management table 2100.
 各ドライブのメモリに格納される構成情報管理テーブル2100は、各ドライブと、エクステントとの関係を示す情報を有する。構成情報管理テーブル2100は、RAID構成2101と、RAID内ドライブ位置2102と、ストライプ幅2103と、エクステントサイズ2104と、ドライブ内LBA2105と、エクステント内LBA2106と、エクステント番号と、を属性とするレコードを有する。 The configuration information management table 2100 stored in the memory of each drive has information indicating the relationship between each drive and the extent. The configuration information management table 2100 includes a record having the attributes of the RAID configuration 2101, the in-RAID drive position 2102, the stripe width 2103, the extent size 2104, the in-drive LBA 2105, the in-extent LBA 2106, and the extent number. .
 RAID構成2101、ストライプ幅2103、エクステントサイズ2104、ドライブ内LBA2105、エクステント内LBA2108、及びエクステント番号2107は、上記のRAID構成1204、ストライプ幅1404、エクステントサイズ1403、ドライブ内LBA1408、エクステント内LBA1406、及びエクステント番号1401と同様の情報である。 The RAID configuration 2101, the stripe width 2103, the extent size 2104, the in-drive LBA 2105, the in-extent LBA 2108, and the extent number 2107 are the RAID configuration 1204, the stripe width 1404, the extent size 1403, the in-drive LBA 1408, the in-extent LBA 1406, and the extent. The information is the same as the number 1401.
 RAID内ドライブ位置2102は、自分のドライブのRAIDグループ内における位置(順序)を表す情報である。図6に例示されるように、RAIDグループ内のドライブ位置によってドライブ毎のユーザデータとパリティデータの配置が異なる。RAID内ドライブ位置2102は、ユーザデータとパリティデータの配置を決定するために用いられる。 The in-RAID drive position 2102 is information indicating the position (order) of the own drive in the RAID group. As illustrated in FIG. 6, the arrangement of user data and parity data for each drive differs depending on the drive position in the RAID group. The intra-RAID drive position 2102 is used to determine the arrangement of user data and parity data.
 図13において、レコード2110は、自分のドライブ(つまり、構成情報管理テーブル2100を有するドライブ)が、「3D+1P」(2101)で構成されたRAIDグループに属しており、そのRAIDグループにおいて「1番目」(2102)に位置することを表す。そして、レコード2110は、自分のドライブが属するRAIDグループが、ストライプ幅2103「256KB」、エクステントサイズ2104「1GB」で構成されていることを表す。そして、レコード2110は、例えば、自分のドライブにおけるドライブ内LBA2105「0KB~255KB」の領域が、エクステント番号2107「1」のエクステント内LBA2106「D1」に割り当てられていることを表す。 In FIG. 13, a record 2110 indicates that its own drive (that is, the drive having the configuration information management table 2100) belongs to the RAID group configured by “3D + 1P” (2101), and “first” in the RAID group. (2102). The record 2110 represents that the RAID group to which the drive belongs belongs to a stripe width 2103 “256 KB” and an extent size 2104 “1 GB”. The record 2110 indicates that, for example, the in-drive LBA 2105 “0 KB to 255 KB” area of the own drive is allocated to the in-extent LBA 2106 “D1” having the extent number 2107 “1”.
 ストレージコントローラ100によって複数のドライブがRAIDグループとして制御されるものであるから、各ドライブコントローラ710は通常はRAIDグループとして制御されていることを認識することはできない。つまり、各ドライブコントローラ710は通常はユーザデータとパリティデータを判別することはできない。また、エクステントもストレージコントローラ100によって管理されるものであるから各ドライブコントローラ710は通常はエクステントの構成を認識することができない。このため、本実施例では、ドライブコントローラ710が、ストレージコントローラ100からRAID構成2101、RAID内ドライブ位置2102、ストライプ幅2103、及びエクステントサイズ2104を含む構成情報を受信することでRAIDやエクステントの構成を認識することができる。そして、ドライブコントローラ710は、これらの情報2101、2102、2103及び2104に基づいて、ドライブ内LBA2105と、エクステント内LBA2106と、エクステント番号2107との対応関係を算出することができる。つまり、ストライプ幅2103から、ドライブ内LBA2105の範囲及びエクステント内LBA2106のサイズを算出することができる。また、エクステントサイズ2104とストライプ幅2103から、1つのエクステントに属するエクステント内LBA2108(及びドライブ内LBA2105)の数を算出することができる。また、RAID構成2101とRAID内ドライブ位置2102から、エクステント内LBA2106の各データが、ユーザデータ又はパリティデータの何れであるかを判定することができる。 Since a plurality of drives are controlled as a RAID group by the storage controller 100, each drive controller 710 cannot normally recognize that it is controlled as a RAID group. That is, each drive controller 710 cannot normally discriminate between user data and parity data. Since the extent is also managed by the storage controller 100, each drive controller 710 cannot normally recognize the extent configuration. For this reason, in this embodiment, the drive controller 710 receives the configuration information including the RAID configuration 2101, the RAID drive position 2102, the stripe width 2103, and the extent size 2104 from the storage controller 100, so that the RAID and extent configuration can be obtained. Can be recognized. The drive controller 710 can calculate the correspondence relationship between the in-drive LBA 2105, the in-extent LBA 2106, and the extent number 2107 based on these pieces of information 2101, 1022, 2103, and 2104. That is, the range of the in-drive LBA 2105 and the size of the in-extent LBA 2106 can be calculated from the stripe width 2103. Further, from the extent size 2104 and the stripe width 2103, the number of in-extent LBAs 2108 (and in-drive LBAs 2105) belonging to one extent can be calculated. Further, it can be determined from the RAID configuration 2101 and the intra-RAID drive position 2102 whether each data in the in-extent LBA 2106 is user data or parity data.
 図14は、ストレージコントローラ100におけるタスク処理例を示すフローチャートである。ストレージコントローラ100は、定期的にこのタスク処理を実行する。 FIG. 14 is a flowchart showing an example of task processing in the storage controller 100. The storage controller 100 periodically executes this task process.
 ストレージコントローラ100は、ホスト計算機30から構成の設定(初期設定や、構成変更)に関する要求を受信済みであるか否かを判定する(S100)。構成変更に関する要求とは、RAIDグループやエクステントの構成が変更される場合に、ホスト計算機30がストレージコントローラ100に送信する要求である。また、RAIDグループが新たにプールに追加される場合も初期設定のために構成変更に関する要求が発行される。 The storage controller 100 determines whether or not a request related to configuration setting (initial setting or configuration change) has been received from the host computer 30 (S100). The configuration change request is a request that the host computer 30 sends to the storage controller 100 when the RAID group or extent configuration is changed. Also, when a RAID group is newly added to the pool, a request for a configuration change is issued for initial setting.
 構成変更に関する要求を受信済みの場合(S100:Yes)、ストレージコントローラ100は、構成変更処理を実行する(S101)。構成変更処理の詳細については後述する(図15参照)。 If a request for configuration change has been received (S100: Yes), the storage controller 100 executes configuration change processing (S101). Details of the configuration change processing will be described later (see FIG. 15).
 構成変更に関する要求を未受信の場合(S100:No)、ストレージコントローラ100は、ホスト計算機30からリード又はライトの要求を受信済みであるか否かを判定する(S102)。何れの要求も受けていない場合(S102:No)、ストレージコントローラ100は、S106へ進む。 If no request for configuration change has been received (S100: No), the storage controller 100 determines whether a read or write request has been received from the host computer 30 (S102). If no request has been received (S102: No), the storage controller 100 proceeds to S106.
 リード又はライトの要求を受信済みの場合(S102:Yes)、ストレージコントローラ100は、この要求がリード又はライトの何れであるかを判定する(S103)。 When a read or write request has been received (S102: Yes), the storage controller 100 determines whether this request is a read or a write (S103).
 この要求がリードであった場合(S103:リード)、ストレージコントローラ100は、リード処理を実行し(S104)、S106へ進む。リード処理の詳細については後述する(図17参照)。 If this request is a read (S103: Read), the storage controller 100 executes a read process (S104), and proceeds to S106. Details of the read process will be described later (see FIG. 17).
 この要求がライトであった場合(S103:ライト)、ストレージコントローラ100は、ライト処理を実行し(S105)、S106へ進む。ライト処理の詳細については後述する(図16参照)。 If this request is a write (S103: write), the storage controller 100 executes a write process (S105) and proceeds to S106. Details of the write process will be described later (see FIG. 16).
 S106において、ストレージコントローラ100は、エクステントの再配置が必要であるか否かを判定する(S106)。 In S106, the storage controller 100 determines whether or not extent rearrangement is necessary (S106).
 エクステントの再配置が必要と判定した場合(S106:Yes)、ストレージコントローラ100は、エクステント移動処理を実行し(S107)、S108へ進む。エクステント移動処理の詳細については後述する(図18参照)。 When it is determined that the extent rearrangement is necessary (S106: Yes), the storage controller 100 executes the extent migration process (S107), and proceeds to S108. Details of the extent movement processing will be described later (see FIG. 18).
 エクステントの再配置が不要と判定した場合(S106:No)、ストレージコントローラ100は、S108へと進む。 When it is determined that the extent rearrangement is unnecessary (S106: No), the storage controller 100 proceeds to S108.
 S108において、ストレージコントローラ100は、ストレージシステム10の停止の要求を受信済みであるか否かを判定する(S108)。 In S108, the storage controller 100 determines whether or not a request for stopping the storage system 10 has been received (S108).
 停止の要求を受信済みの場合(S108:Yes)、ストレージコントローラ100は、ストレージシステム10の停止処理を実行し、処理を終了する(END)。停止の要求を未受信の場合(S108:No)、ストレージコントローラ100は、S100へ戻る。 When the stop request has been received (S108: Yes), the storage controller 100 executes the stop process of the storage system 10 and ends the process (END). When the stop request has not been received (S108: No), the storage controller 100 returns to S100.
 図15は、構成変更処理の例を示すフローチャートである。この構成変更処理は、図14のS101に対応する。 FIG. 15 is a flowchart showing an example of the configuration change process. This configuration change process corresponds to S101 in FIG.
 ストレージコントローラ100は、構成変更の要求の内容に従ってRAIDグループを生成し、RAID管理テーブル1200を更新する(S200)。構成変更の要求には、変更後のRAIDグループのRAIDレベルなど、RAID管理テーブル1200に記録される内容が含まれる。 The storage controller 100 generates a RAID group according to the content of the configuration change request and updates the RAID management table 1200 (S200). The configuration change request includes contents recorded in the RAID management table 1200 such as the RAID level of the RAID group after the change.
 ストレージコントローラ100は、その生成したRAIDグループをプールに登録し、プール管理テーブル1300を更新する(S201)。 The storage controller 100 registers the generated RAID group in the pool and updates the pool management table 1300 (S201).
 ストレージコントローラ100は、その生成したRAIDグループに対するエクステントを生成し、エクステント管理テーブル1400を更新する(S202)。 The storage controller 100 generates an extent for the generated RAID group and updates the extent management table 1400 (S202).
 ストレージコントローラ100は、RAIDグループを構成する各ドライブに、初期設定又は変更後の構成情報を含む構成変更コマンドを送信する(S203)。構成情報には、例えば、変更後のRAIDグループの、RAIDレベル、RAID構成(nD+mP)、各ドライブのRAID内ドライブ位置、ストライプ幅、及びエクステントサイズなどが含まれる。 The storage controller 100 transmits a configuration change command including initial setting or changed configuration information to each drive constituting the RAID group (S203). The configuration information includes, for example, the RAID level of the RAID group after the change, the RAID configuration (nD + mP), the drive position in RAID of each drive, the stripe width, the extent size, and the like.
 ドライブコントローラ710は、ストレージコントローラ100から受信した構成情報に基づき、構成情報管理テーブル2100を更新する(S204)。 The drive controller 710 updates the configuration information management table 2100 based on the configuration information received from the storage controller 100 (S204).
 ストレージコントローラ100は、ホスト計算機30からの要求に含まれる場合は必要に応じて仮想ボリュームを生成し、仮想ボリューム管理テーブル1500を更新する(S205)。ホスト計算機30が仮想ボリュームの生成を要求している場合は、その要求には少なくとも仮想ボリュームのサイズが含まれる。そして、この処理を終了する(END)。 The storage controller 100 creates a virtual volume as necessary when it is included in the request from the host computer 30, and updates the virtual volume management table 1500 (S205). When the host computer 30 is requesting generation of a virtual volume, the request includes at least the size of the virtual volume. Then, this process ends (END).
 以上の処理により、各ドライブコントローラ710は、構成情報管理テーブル2100を生成することができる。 Through the above processing, each drive controller 710 can generate the configuration information management table 2100.
 図16は、ライト処理の例を示すフローチャートである。このライト処理は、図14のS105に対応する。 FIG. 16 is a flowchart showing an example of the write process. This write process corresponds to S105 in FIG.
 ホスト計算機30は、ストレージコントローラ100に、ライト要求及びライトデータを送信する(S300)。 The host computer 30 transmits a write request and write data to the storage controller 100 (S300).
 ストレージコントローラ100は、ホスト計算機30からライト要求を受信すると、仮想ボリューム管理テーブル1500及びエクステント管理テーブル1400を参照し、そのライト要求が指定する仮想ボリュームのライト先のアドレスを含む仮想エクステントに、エクステントが割り当て済みであるか否かを判定する(S301)。 When the storage controller 100 receives a write request from the host computer 30, the storage controller 100 refers to the virtual volume management table 1500 and the extent management table 1400, and the extent is included in the virtual extent including the write destination address of the virtual volume specified by the write request. It is determined whether or not it has been assigned (S301).
 そのライト先の仮想エクステントにエクステントが未割り当ての場合(S301:No)、ストレージコントローラ100は、その仮想エクステントにエクステントを割り当て(S302)、S303へ進む。 If no extent is assigned to the write-destination virtual extent (S301: No), the storage controller 100 assigns an extent to the virtual extent (S302), and proceeds to S303.
 ライト先の仮想エクステントにエクステントが割り当て済みである場合(S301:Yes)、ストレージコントローラ100は、そのままS303へ進む。 If the extent has already been allocated to the write-destination virtual extent (S301: Yes), the storage controller 100 proceeds directly to S303.
 S303において、ストレージコントローラ100は、ライトデータをキャッシュ領域1000に格納し(S303)、ライト先のドライブへライトコマンド及びライトデータを送信する(S304)。そして、ストレージコントローラ100は、ライト先のドライブからライト完了通知を受信する(S305)。 In S303, the storage controller 100 stores the write data in the cache area 1000 (S303), and transmits a write command and write data to the write destination drive (S304). Then, the storage controller 100 receives a write completion notification from the write destination drive (S305).
 ストレージコントローラ100は、ライトIOPS1509を更新する(S306)。ストレージコントローラ100は、ホスト計算機30に、ライト要求に対する完了応答を送信する(S307)。 The storage controller 100 updates the write IOPS 1509 (S306). The storage controller 100 transmits a completion response to the write request to the host computer 30 (S307).
 ホスト計算機30は、ストレージコントローラ100からライト要求に対する完了応答を受信し(S308)、処理を終了する(END)。 The host computer 30 receives a completion response to the write request from the storage controller 100 (S308), and ends the processing (END).
 以上の処理により、ストレージシステム10は、ホスト計算機30から送信されたライトデータを格納することができる。 Through the above processing, the storage system 10 can store the write data transmitted from the host computer 30.
 図17は、リード処理の例を示すフローチャートである。このリード処理は、図14のS104に対応する。 FIG. 17 is a flowchart showing an example of read processing. This read process corresponds to S104 in FIG.
 ホスト計算機30は、ストレージコントローラ100に、リード要求を送信する(S400)。ストレージコントローラ100は、ホスト計算機30からリード要求を受信すると、そのリード要求が指定する仮想ボリュームのアドレスを含む仮想エクステントを特定し、仮想エクステントに割り当てられているエクステントを特定し、エクステントを構成するドライブの中から、リード先のドライブを特定する(S401)。 The host computer 30 transmits a read request to the storage controller 100 (S400). When the storage controller 100 receives a read request from the host computer 30, the storage controller 100 specifies a virtual extent including the address of the virtual volume specified by the read request, specifies an extent allocated to the virtual extent, and drives that constitute the extent. The drive of the read destination is specified from among (S401).
 ストレージコントローラ100は、その特定したドライブにリードコマンドを送信する(S402)。そして、ストレージコントローラ100は、そのドライブからリードデータを受信する(S403)。 The storage controller 100 transmits a read command to the specified drive (S402). Then, the storage controller 100 receives read data from the drive (S403).
 ストレージコントローラ100は、そのリードデータをキャッシュ領域1000に格納する(S404)。ストレージコントローラ100は、リードIOPS1508を更新する(S405)。 The storage controller 100 stores the read data in the cache area 1000 (S404). The storage controller 100 updates the read IOPS 1508 (S405).
 ストレージコントローラ100は、ホスト計算機30に、リード要求に対する完了応答及びリードデータを送信する(S406)。ホスト計算機30は、ストレージコントローラ100から完了応答及びリードデータを受信し(S407)、処理を終了する(END)。 The storage controller 100 transmits a completion response and read data to the read request to the host computer 30 (S406). The host computer 30 receives a completion response and read data from the storage controller 100 (S407), and ends the processing (END).
 以上の処理により、ストレージシステム10は、ホスト計算機30からのリード要求に対して、リードデータを応答することができる。 Through the above processing, the storage system 10 can respond to the read data in response to the read request from the host computer 30.
 図18は、エクステント移動処理の例を示すフローチャートである。このエクステント移動処理は、図14のS107に対応する。 FIG. 18 is a flowchart showing an example of extent movement processing. This extent movement process corresponds to S107 in FIG.
 ストレージコントローラ100は、移動元のエクステントを決定する(S500)。例えば、ストレージコントローラ100は、仮想ボリューム管理テーブル1500のエクステント番号1506をチェックし、割当済みのエクステント番号に対応するティア1507及びIOPS(リードIOPS1508及びライトIOPS1509)を参照する。ストレージコントローラ100は、参照した情報に基づき、エクステントが配置されているティアが適切かを判定する。ストレージコントローラ100は、相対的にIOPSが大きいエクステントが下位のティアに配置されている場合、より上位のティアに移動することを決定する。所定値以上のIOPSであればティア0に配置するなど、ティア毎に閾値が設けられてもよい。IOPSはリードIOPS1508のみ又はライトIOPS1509のみ用いてもよいし、リードIOPS1508とライトIOPS1509の合計値を用いてもよい。これにより、IOPSが高いデータはSSDに格納され、ホスト計算機30からのI/O処理性能を向上させることが可能となる。 The storage controller 100 determines the source extent (S500). For example, the storage controller 100 checks the extent number 1506 of the virtual volume management table 1500 and refers to the tier 1507 and IOPS (read IOPS 1508 and write IOPS 1509) corresponding to the allocated extent number. The storage controller 100 determines whether the tier where the extent is arranged is appropriate based on the referenced information. The storage controller 100 determines to move to a higher tier when an extent having a relatively large IOPS is arranged in the lower tier. A threshold may be provided for each tier, such as placing it at tier 0 if the IOPS is greater than or equal to a predetermined value. As the IOPS, only the read IOPS 1508 or the write IOPS 1509 may be used, or the total value of the read IOPS 1508 and the write IOPS 1509 may be used. As a result, data with a high IOPS is stored in the SSD, and the I / O processing performance from the host computer 30 can be improved.
 エクステントの再配置は周期的に行われる。この周期が短いほど、エクステントが適切に配置され、性能は向上することになる。しかし、頻繁にデータを移動するとデータ移動そのものがストレージコントローラ100にとってオーバーヘッドとなり、ストレージシステムの性能低下を招く。本実施例は、ストレージコントローラ100がデータ移動前にSSDに先読みを指示することで性能低下を抑制する。  Relocation of extents is performed periodically. The shorter this period, the better the extents are placed and the performance will be improved. However, if the data is frequently moved, the data movement itself becomes an overhead for the storage controller 100, and the performance of the storage system is degraded. In this embodiment, the storage controller 100 instructs the SSD to read ahead before moving the data, thereby suppressing the performance degradation.
 ストレージコントローラ100は、ステータス1405が「未割当て」の中から、移動先のエクステントを決定する(S501)。つまり、データを移動するためにはデータが格納されていない未割当のエクステントが必要となる。ストレージシステムの性能を最大限に引き出すためには、SSDのティア(最上位のティア)の容量は、できる限り多く利用していることが望ましい。このため、HDDに配置されているエクステントをSSDに配置する際に、未割当のエクステントが存在しない可能性がある。この場合、ストレージコントローラ100は、SSDのティアの中からIOPSが最も小さいエクステントを選択し、そのエクステントに格納されているデータをHDDのティアの「未割当て」のエクステントに移動する。そして、ストレージコントローラ100は、SSDのティアのエクステントのステータス1405を「未割当て」に更新する。このように、エクステント再配置を頻繁に実施すると、SSDを移動元とするエクステント再配置の回数が増加する。このため、本実施例のようにエクステントの再配置前にSSD内で先読みを実行させることで、ストレージコントローラがSSDからデータを読み出す際のレスポンス性能を改善することによる効果は大きい。 The storage controller 100 determines the migration destination extent from among the statuses 1405 “unallocated” (S501). That is, in order to move data, an unallocated extent in which no data is stored is required. In order to maximize the performance of the storage system, it is desirable to use as much of the SSD tier (top tier) capacity as possible. For this reason, when an extent arranged in the HDD is arranged in the SSD, there is a possibility that an unallocated extent does not exist. In this case, the storage controller 100 selects the extent with the smallest IOPS from the SSD tier, and moves the data stored in the extent to the “unallocated” extent of the HDD tier. Then, the storage controller 100 updates the status 1405 of the SSD tier extent to “unallocated”. As described above, when the extent rearrangement is frequently performed, the number of extent rearrangements using the SSD as a migration source increases. Therefore, the effect of improving the response performance when the storage controller reads data from the SSD by executing prefetching in the SSD before the rearrangement of extents as in the present embodiment is significant.
 この例では、IOPSが閾値以上であっても、よりIOPSが大きいエクステントが存在すると、SSDからHDDにデータが移動されることになる。このため、SSDの内部でIOPSを計測して、計測したIOPSに基づいて予測による先読みを行うことは困難である。よって、ストレージコントローラ100は、エクステント再配置の要否が決定した後に、先読みコマンドを各ドライブに送信する。 In this example, even if the IOPS is equal to or greater than the threshold, if there is an extent with a larger IOPS, data is transferred from the SSD to the HDD. For this reason, it is difficult to measure IOPS inside the SSD and perform prefetching by prediction based on the measured IOPS. Therefore, the storage controller 100 transmits a prefetch command to each drive after determining whether or not extent rearrangement is necessary.
 ストレージコントローラ100は、キャッシュ領域1000に、エクステントに属するデータの移行に必要となる数のセグメント500を確保する(S502)。 The storage controller 100 secures the number of segments 500 necessary for migration of data belonging to the extent in the cache area 1000 (S502).
 ストレージコントローラ100は、移動元のデータを保持する複数のドライブのそれぞれに、先読みコマンドを送信する(S503)。先読みコマンドは、データの先読みを指示するコマンドであり、先読みの対象となる1又は2以上の移動元のエクステント番号を有する。ここで、ドライブコントローラ710は、先読みコマンドに含まれるエクステント番号に基づいて、データを先読みする。この処理の詳細については後述する(図20参照)。
ストレージコントローラ100は、各ドライブに予めエクステント番号を通知しており、各ドライブは、エクステント番号と自らのドライブがストレージコントローラ100に提供している論理アドレスの対応関係の情報(図13)を保持している。これにより、ストレージコントローラ100は、先読みコマンドを用いて先読み対象のエクステント番号を各ドライブに通知するだけでドライブに先読みを実行させることができる。つまり、先読みコマンドを送信するためのストレージコントローラ100の負荷は小さく、ホスト計算機30のI/O処理性能を低下させずにすむ。
The storage controller 100 transmits a prefetch command to each of the plurality of drives holding the migration source data (S503). The prefetch command is a command for instructing prefetching of data, and has one or more transfer source extent numbers to be prefetched. Here, the drive controller 710 prefetches data based on the extent number included in the prefetch command. Details of this processing will be described later (see FIG. 20).
The storage controller 100 notifies each drive of the extent number in advance, and each drive holds information on the correspondence between the extent number and the logical address provided by its own drive to the storage controller 100 (FIG. 13). ing. As a result, the storage controller 100 can cause the drive to perform prefetching simply by notifying each drive of the extent number to be prefetched using the prefetch command. That is, the load on the storage controller 100 for transmitting the prefetch command is small, and the I / O processing performance of the host computer 30 does not need to be reduced.
 本実施例では移動元と移動先のRAIDレベル、RAID構成、ストライプ幅が同じであるため、ユーザデータとパリティデータの両方の先読みを指定するものとする。エクステントは、複数のユーザデータと、その複数のユーザデータから生成されるパリティデータとを含むストライプを1つ以上含む。ストライプに含まれる複数のユーザデータのいずれかが更新されない限りパリティデータの値も更新されない。つまり、ストライプを維持したデータ移動では、パリティデータの更新は不要である。このため、ストレージコントローラ100は、パリティデータも含めてドライブから読み出し、ユーザデータとパリティデータの両方を移動するのが効率的である。 In this embodiment, since the migration source and destination have the same RAID level, RAID configuration, and stripe width, prefetching of both user data and parity data is designated. The extent includes one or more stripes including a plurality of user data and parity data generated from the plurality of user data. The value of the parity data is not updated unless any of a plurality of user data included in the stripe is updated. That is, it is not necessary to update parity data in data movement that maintains a stripe. Therefore, it is efficient for the storage controller 100 to read from the drive including parity data and move both user data and parity data.
 ストレージコントローラ100は、移動元のエクステントを構成する複数のドライブのそれぞれに、移動元のエクステントに属するデータ(ユーザデータ及びパリティデータ)を対象とするリードコマンドを送信する(S504)。リードコマンドは、少なくともリード対象のデータが格納されているアドレスの範囲(先頭LBAとレングス)を指定する情報を含む。 The storage controller 100 transmits a read command for data (user data and parity data) belonging to the migration source extent to each of the plurality of drives constituting the migration source extent (S504). The read command includes at least information specifying an address range (first LBA and length) in which data to be read is stored.
 ストレージコントローラ100は、移動元のエクステントに属するデータをリードし、キャッシュ領域1000に格納する(S505)。ストレージコントローラ100は、移動先のエクステントにデータをライトするためにエクステントを構成する複数のドライブのそれぞれに対してライトコマンドを送信する(S506)。ライトコマンドには、データのライト先のアドレス範囲(先頭LBAとレングス)を指定する情報を含む。 The storage controller 100 reads data belonging to the migration source extent and stores it in the cache area 1000 (S505). The storage controller 100 transmits a write command to each of the plurality of drives constituting the extent in order to write data to the migration destination extent (S506). The write command includes information for designating the address range (first LBA and length) of the data write destination.
 ストレージコントローラ100は、キャッシュ領域100のセグメントを解放する(S507)。ストレージコントローラ100は、移動元のエクステントを解放する(S508)。具体的には、ストレージコントローラ100は、移動元のエクステントに格納されているデータを削除する。ストレージコントローラ100は、仮想ボリューム管理テーブル1500及びエクステント管理テーブル1400を更新する(S509)。 The storage controller 100 releases the segment of the cache area 100 (S507). The storage controller 100 releases the migration source extent (S508). Specifically, the storage controller 100 deletes data stored in the migration source extent. The storage controller 100 updates the virtual volume management table 1500 and the extent management table 1400 (S509).
 以上の処理により、ストレージコントローラ100は、ストレージコントローラ100の負荷を増加させずに、移動元のエクステントを構成するドライブからのレスポンス性能を向上させることができ、データ移動に必要な時間を短縮することができる。 With the above processing, the storage controller 100 can improve the response performance from the drive constituting the migration source extent without increasing the load on the storage controller 100, and shorten the time required for data migration. Can do.
 図19は、ドライブコントローラ710のI/O処理の例を示すフローチャートである。 FIG. 19 is a flowchart showing an example of I / O processing of the drive controller 710.
 ドライブコントローラ710は、未処理のコマンドが存在するか否かを判定する(S600)。未処理のコマンドが存在しない場合(S600:No)、ドライブコントローラ710は、処理を終了する(END)。 The drive controller 710 determines whether there is an unprocessed command (S600). If there is no unprocessed command (S600: No), the drive controller 710 ends the process (END).
 未処理のコマンドが存在する場合(S600:Yes)、ドライブコントローラ710は、処理対象のコマンドを選択し、そのコマンドの内容を判定する(S601)。 When there is an unprocessed command (S600: Yes), the drive controller 710 selects a command to be processed and determines the content of the command (S601).
 そのコマンドが先読みコマンドである場合(S601:先読み)、ドライブコントローラ710は、エクステントの先読み処理を実行し(S602)、S600へ戻る。このエクステントの先読み処理の詳細については後述する(図20参照)。 If the command is a prefetch command (S601: prefetch), the drive controller 710 executes extent prefetch processing (S602), and returns to S600. Details of the extent prefetching process will be described later (see FIG. 20).
 そのコマンドがリード又はライトコマンドである場合(S601:リード又はライト)、そのコマンドがリード又はライトの何れであるか判定する(S603)。 If the command is a read or write command (S601: read or write), it is determined whether the command is read or write (S603).
 そのコマンドがリードコマンドである場合(S603:リード)、ドライブコントローラ710は、リード対象のデータがキャッシュ領域2000に格納済みであるか否か(キャッシュがヒットした否か)を判定する(S604)。 When the command is a read command (S603: Read), the drive controller 710 determines whether or not the read target data is already stored in the cache area 2000 (whether or not the cache is hit) (S604).
 リード対象のデータがキャッシュ領域2000に格納済みである場合(S604:Yes)、ドライブコントローラ710は、そのキャッシュ領域2000に格納済みのデータを、ストレージコントローラへ送信し(S606)、S600へ戻る。 When the read target data has been stored in the cache area 2000 (S604: Yes), the drive controller 710 transmits the data stored in the cache area 2000 to the storage controller (S606), and returns to S600.
 リード対象のデータがキャッシュ領域2000に未格納である場合(S604:No)、ドライブコントローラ710は、FM780からデータをリードしてキャッシュ領域2000に格納する(S605)。そして、ドライブコントローラ710は、キャッシュ領域2000に格納したデータを、ストレージコントローラ100へ送信し(S606)、S600へ戻る。 When the read target data is not stored in the cache area 2000 (S604: No), the drive controller 710 reads data from the FM 780 and stores it in the cache area 2000 (S605). Then, the drive controller 710 transmits the data stored in the cache area 2000 to the storage controller 100 (S606), and returns to S600.
 そのコマンドがライトコマンドである場合(S603:ライト)、ドライブコントローラ710は、ライトデータをキャッシュ領域2000に格納する(S607)。そして、ドライブコントローラ710は、キャッシュ領域2000に格納したライトデータを、FM780にライトし(S608)、S600へ戻る。 If the command is a write command (S603: write), the drive controller 710 stores the write data in the cache area 2000 (S607). Then, the drive controller 710 writes the write data stored in the cache area 2000 to the FM 780 (S608), and returns to S600.
 ここで、SSDが圧縮機能を有している場合のリード/ライト処理について説明する。 Here, the read / write process when the SSD has a compression function will be described.
 まず、リードの場合を説明する。プロセッサ713は、圧縮データをFM780から読み出し、キャッシュ領域2000に格納する。そして、プロセッサ713は、圧縮データをキャッシュ領域2000から読み出して圧縮伸張回路718に転送する。圧縮伸張回路718は、圧縮データを伸長する。プロセッサ713は、伸張されたデータをキャッシュ領域2000に格納する。 First, the case of lead will be described. The processor 713 reads the compressed data from the FM 780 and stores it in the cache area 2000. Then, the processor 713 reads the compressed data from the cache area 2000 and transfers it to the compression / decompression circuit 718. The compression / decompression circuit 718 decompresses the compressed data. The processor 713 stores the decompressed data in the cache area 2000.
 次にライトの場合を説明する。S607でライトデータがキャッシュ領域2000に格納された後、プロセッサ713は、ライトデータをキャッシュ領域2000から読み出し、圧縮伸張回路718に転送する。そして、プロセッサ713は、圧縮されたライトデータをFM780に転送する。なお、プロセッサ713は、ライトデータを圧縮せずに一旦FM780に格納し、ライトコマンドとは非同期のリクラメーション処理を契機にデータの圧縮を行ってもよい。 Next, the case of light will be explained. After the write data is stored in the cache area 2000 in S607, the processor 713 reads the write data from the cache area 2000 and transfers it to the compression / decompression circuit 718. Then, the processor 713 transfers the compressed write data to the FM 780. Note that the processor 713 may temporarily store the write data in the FM 780 without compressing the data, and may compress the data in response to a reclamation process asynchronous with the write command.
 以上の処理により、ドライブコントローラ710は、ストレージコントローラ100から受信した先読みコマンドに基づいて、データを予めキャッシュ領域2000に格納しておくことができる。そして、ドライブコントローラ710は、ストレージコントローラ100からリードコマンドを受信した際、そのリードコマンドに対応するデータがキャッシュ領域2000に格納済みならば、高速にリードデータをストレージコントローラ100へ送信することができる。 Through the above processing, the drive controller 710 can store the data in the cache area 2000 in advance based on the prefetch command received from the storage controller 100. When the drive controller 710 receives a read command from the storage controller 100, if the data corresponding to the read command has already been stored in the cache area 2000, the drive controller 710 can transmit the read data to the storage controller 100 at high speed.
 図20は、ドライブコントローラ710におけるエクステント先読み処理の例を示すフローチャートである。このエクステントの先読み処理は、図19のS602に対応する。 FIG. 20 is a flowchart showing an example of extent prefetch processing in the drive controller 710. This extent prefetching process corresponds to S602 in FIG.
 本実施例では、ドライブの内部でデータが加工されている場合を例に説明する。ドライブの内部ではデータの圧縮など、データが加工されている場合がある。ドライブがストレージコントローラ100からデータの先読みを指示された場合、続くリードコマンドに対して高速に応答することが求められる。このため、ドライブは、リードコマンドに対しての応答速度を高めるために、加工されたデータには適切な処理を加えて先読みする。 In this embodiment, a case where data is processed inside the drive will be described as an example. Data may be processed inside the drive, such as data compression. When the drive is instructed to prefetch data by the storage controller 100, it is required to respond at high speed to the subsequent read command. For this reason, in order to increase the response speed to the read command, the drive pre-reads the processed data by applying an appropriate process.
 ドライブコントローラ710は、ストレージコントローラ100から受信した先読みコマンドに含まれるエクステント番号と、自分の有する構成情報管理テーブル2100とに基づいて、先読み対象のドライブ内LBAを特定する(S700)。すなわち、ドライブコントローラ710は、構成情報管理テーブル2100を参照し、エクステント番号に対応するドライブ内LBAの範囲に対応するデータを先読み対象とする。本実施例では、先読みコマンドはユーザデータとパリティデータの両方を指定しているため、ドライブコントローラ710は、ユーザデータとパリティデータの両方を先読み対象とする。 The drive controller 710 identifies the LBA in the drive to be prefetched based on the extent number included in the prefetch command received from the storage controller 100 and the configuration information management table 2100 that it has (S700). In other words, the drive controller 710 refers to the configuration information management table 2100 and sets data corresponding to the range of the in-drive LBA corresponding to the extent number as a prefetch target. In this embodiment, since the prefetch command specifies both user data and parity data, the drive controller 710 sets both user data and parity data as prefetch targets.
 ドライブコントローラ710は、FM780における先読み対象のドライブ内LBAに対応する物理記憶領域に格納されているデータを、キャッシュ領域2000へ転送する(S701)。この際、ドライブコントローラ710は、先読み対象のデータが圧縮データであるか否か判定する(S702)。 The drive controller 710 transfers the data stored in the physical storage area corresponding to the pre-read target LBA in the FM 780 to the cache area 2000 (S701). At this time, the drive controller 710 determines whether or not the prefetch target data is compressed data (S702).
 先読み対象のデータが圧縮データである場合(S702:Yes)、ドライブコントローラ710は、圧縮伸張回路728を用いてこの圧縮データを伸長してキャッシュ領域2000に格納し(S703)、処理を終了する(END)。この処理は上述のリード処理と同様のため、詳細は省略する。先読み対象のデータが圧縮データでない場合(S702:No)、ドライブコントローラ710は、そのまま処理を終了する(END)。 When the prefetch target data is compressed data (S702: Yes), the drive controller 710 decompresses the compressed data using the compression / decompression circuit 728 and stores it in the cache area 2000 (S703), and ends the processing (S703). END). Since this process is the same as the above-described read process, details are omitted. When the prefetch target data is not compressed data (S702: No), the drive controller 710 ends the process as it is (END).
 以上の処理により、ドライブコントローラ710は、先読みコマンドに基づいて、その後リードされるデータをキャッシュ領域2000へ予め格納しておくことができる。 Through the above processing, the drive controller 710 can store data to be read later in the cache area 2000 based on the pre-read command.
 実施例1は、以下の作用効果を奏する。 Example 1 has the following effects.
 (1)ストレージコントローラ100は、エクステントの基になっている複数のドライブの各々のドライブコントローラ710に、エクステント移動処理の実行前(リードコマンド送信前)に先読みコマンドを送信すれば、ドライブコントローラ710は、自分のキャッシュ領域2000に、その後のエクステント移動処理においてリードコマンドに従うリード対象となるデータを先読みすることができる。つまり、1つのエクステントの基になっている各ドライブに、エクステント内の複数のデータを1つのコマンドで先読みさせることができる。これにより、ストレージコントローラ100が、ドライブからデータをリードするレスポンス性能が向上する。よって、エクステント移動処理に要する時間を短縮することができる。 (1) If the storage controller 100 transmits a prefetch command to each of the drive controllers 710 of the plurality of drives that are the basis of the extent before executing the extent movement process (before transmitting the read command), the drive controller 710 Then, it is possible to pre-read data to be read in accordance with the read command in the extent movement process thereafter in its own cache area 2000. In other words, it is possible to cause each drive that is the basis of one extent to prefetch a plurality of data in the extent with one command. Thereby, the response performance of the storage controller 100 reading data from the drive is improved. Therefore, the time required for the extent movement process can be shortened.
 (2)ドライブコントローラ710は、先読みコマンドに基づいてデータをキャッシュ領域2000に格納することにより、無駄なデータをキャッシュ領域2000に格納することがない。例えば、ドライブ内部でIOPSを計測してIOPSが大きいデータを先読みする場合、ドライブコントローラ710に負荷がかかる。よって、本実施例によれば、ドライブコントローラ710における処理負荷を低減させると共に、有限なキャッシュ領域2000を効率的に使用することができる。 (2) The drive controller 710 stores data in the cache area 2000 based on the prefetch command, so that useless data is not stored in the cache area 2000. For example, when IOPS is measured inside the drive and data having a large IOPS is prefetched, a load is applied to the drive controller 710. Therefore, according to the present embodiment, the processing load on the drive controller 710 can be reduced and the finite cache area 2000 can be used efficiently.
 本実施例では、ストレージコントローラがドライブに選択的にデータの先読みを指示する場合を説明する。 In this embodiment, a case will be described in which the storage controller selectively instructs the drive to prefetch data.
 ストレージシステム10ではRAIDグループが構成されているため、ドライブにはユーザデータ及びパリティデータが格納されている。先読みすべきデータは、ユーザデータである場合や、ユーザデータとパリティデータの両方である場合がある。しかし、ドライブは格納しているデータ種別がユーザデータかパリティデータかを判別することができないため、論理アドレスの範囲のみでは適切な先読みができない。不要な先読みが発生するとドライブの性能が低下し、ストレージシステムとしての性能低下にもつながる。しかし、ストレージコントローラ100が先読みのために論理アドレス毎にデータ種別を指定するのはオーバーヘッドである。 Since the storage system 10 has a RAID group, user data and parity data are stored in the drive. The data to be prefetched may be user data or both user data and parity data. However, since the drive cannot discriminate whether the stored data type is user data or parity data, appropriate read-ahead cannot be performed only with the range of logical addresses. If unnecessary read-ahead occurs, the drive performance degrades, leading to performance degradation as a storage system. However, it is overhead that the storage controller 100 designates the data type for each logical address for prefetching.
 そこで、本実施例では、ストレージコントローラ100は、エクステントの番号に加えてデータ種別を指定してドライブに先読みを指示する。 Therefore, in this embodiment, the storage controller 100 designates the data type in addition to the extent number and instructs the drive to prefetch.
 また、前述のように、ストレージシステム10の内部でストレージコントローラ100がパリティデータを生成する。つまり、ホスト計算機30は、パリティデータを認識することはない。本実施例では、ストレージコントローラ100がドライブに先読みを指示するため、ユーザデータとパリティデータを区別して適切な先読みを実行することができる。 As described above, the storage controller 100 generates parity data within the storage system 10. That is, the host computer 30 does not recognize parity data. In this embodiment, since the storage controller 100 instructs the drive to perform prefetching, it is possible to distinguish between user data and parity data and execute appropriate prefetching.
 図21は、実施例2に関し、エクステント移動処理におけるリード処理を説明する模式図である。 FIG. 21 is a schematic diagram for explaining the read process in the extent movement process in the second embodiment.
 実施例1と比較して実施例2では、ストレージコントローラ100は、SSD701から、パリティデータP1をリードせずにユーザデータD1、D2及びD3をキャッシュ領域1000にリードする。そして、ストレージコントローラ100は、キャッシュ領域1000において、そのリードしたユーザデータD1、D2及びD3からパリティデータP1を生成する(符号903)。 In the second embodiment as compared with the first embodiment, the storage controller 100 reads the user data D1, D2, and D3 from the SSD 701 to the cache area 1000 without reading the parity data P1. Then, the storage controller 100 generates parity data P1 from the read user data D1, D2, and D3 in the cache area 1000 (reference numeral 903).
 上記の構成によれば、パリティデータP1をリードしないので、ストレージコントローラ100とSSD701との間のI/Oリソースの消費量を削減することができる。また、上記の構成は、エクステントの移動元と移動先のRAID構成(nD+mPの構成)が異なっている場合においてより効果を発揮する。なぜなら、エクステントの移動元と移動先のRAID構成が異なっている場合、移動元のパリティデータを引き継げないため、パリティデータの再生成が必要になる。このため、パリティデータをリードする必要はないし、移動元のドライブに先読みさせたパリティデータは無駄になってしまう。例えば、移動元のRAID構成が「3D+1P」で、移動先のRAID構成が「4D+1P」である場合は、ストレージコントローラ100は、読み出したD1、D2、D3及びD5に基づいて新たなP1´を生成する。 According to the above configuration, since the parity data P1 is not read, the consumption of I / O resources between the storage controller 100 and the SSD 701 can be reduced. The above configuration is more effective when the extent migration source and migration destination RAID configurations (nD + mP configuration) are different. This is because if the extent migration source and the migration destination RAID configuration are different, the parity data of the migration source cannot be taken over, and it is necessary to regenerate the parity data. For this reason, it is not necessary to read the parity data, and the parity data pre-read by the source drive is wasted. For example, when the migration source RAID configuration is “3D + 1P” and the migration destination RAID configuration is “4D + 1P”, the storage controller 100 generates a new P1 ′ based on the read D1, D2, D3, and D5. To do.
 図22は、実施例2に関するエクステント移動処理(S107)の例を示すフローチャートである。このエクステント移動処理は、図14のS107に対応する。 FIG. 22 is a flowchart illustrating an example of extent movement processing (S107) according to the second embodiment. This extent movement process corresponds to S107 in FIG.
 ストレージコントローラ100は、図18のS500~S502と同様の処理を実行する(S520~S522)。 The storage controller 100 executes the same processing as S500 to S502 in FIG. 18 (S520 to S522).
 ストレージコントローラ100は、移動元のドライブに、先読みコマンドを送信する(S523)。この先読みコマンドは、移動元のエクステント番号に加えて、先読みするデータ種別を指定する。データ種別は、「ユーザデータ及びパリティデータ」又は「ユーザデータのみ」の何れを先読みするのかを示す情報である。ここで、移動元のドライブは、先読みコマンドに含まれるエクステント番号及びデータ種別に基づいて、「ユーザデータ及びパリティデータ」又は「ユーザデータのみ」の何れかを先読みする。例えば、ストレージコントローラ100は、移動元のRAIDグループのRAID構成と、移動先のRAIDグループのRAID構成とが同じ場合は、「ユーザデータ及びパリティデータ」のデータ種別を指定し、移動元のRAIDグループのRAID構成と、移動先のRAIDグループのRAID構成とが異なる場合は、「ユーザデータのみ」のデータ種別を指定してもよい。この処理の詳細については後述する(図23参照)。 The storage controller 100 transmits a prefetch command to the migration source drive (S523). This prefetch command designates the data type to be prefetched in addition to the extent number of the movement source. The data type is information indicating which of “user data and parity data” or “user data only” is prefetched. Here, the migration source drive prefetches either “user data and parity data” or “user data only” based on the extent number and data type included in the prefetch command. For example, when the RAID configuration of the migration source RAID group is the same as the RAID configuration of the migration destination RAID group, the storage controller 100 designates the data type of “user data and parity data”, and the migration source RAID group If the RAID configuration differs from the RAID configuration of the migration destination RAID group, a data type of “user data only” may be designated. Details of this processing will be described later (see FIG. 23).
 また、ストレージコントローラ100は、移動元のRAIDグループのRAID構成と、移動先のRAIDグループのRAID構成とが同じ場合であっても、「ユーザデータのみ」のデータ種別を指定し、ストレージコントローラ100にてパリティデータを再生成してもよい。 Further, the storage controller 100 designates the data type of “user data only” even if the RAID configuration of the migration source RAID group and the RAID configuration of the migration destination RAID group are the same, and the storage controller 100 Parity data may be regenerated.
 例えば、ストレージコントローラ100の負荷(例えば、プロセッサ104の稼働率)が第1の閾値よりも小さく、ドライブコントローラ710の負荷(例えば、プロセッサ713の稼働率)が第2の閾値よりも大きい場合は、「ユーザデータのみ」のデータ種別が指定されてもよい。これにより、ドライブにおけるパリティデータのリード処理が発生しなくなり、ドライブの負荷が低減する。例えば、ストレージコントローラ100の負荷(例えば、プロセッサ104の稼働率)が第1の閾値以上であり、ドライブコントローラ710の負荷(例えば、プロセッサ713の稼働率)が第2の閾値以下である場合は、「ユーザデータ及びパリティデータ」のデータ種別が指定されてもよい。 For example, when the load of the storage controller 100 (for example, the operating rate of the processor 104) is smaller than the first threshold and the load of the drive controller 710 (for example, the operating rate of the processor 713) is larger than the second threshold, A data type of “user data only” may be designated. As a result, the parity data read processing in the drive does not occur, and the load on the drive is reduced. For example, when the load of the storage controller 100 (for example, the operating rate of the processor 104) is equal to or higher than the first threshold and the load of the drive controller 710 (for example, the operating rate of the processor 713) is equal to or lower than the second threshold, The data type of “user data and parity data” may be designated.
 例えば、ストレージコントローラ100の処理性能(例えば、IOPS又はアクセス頻度に基づく性能)が第3の閾値よりも大きく、ドライブのI/O性能が第4の閾値よりも低い場合は、「ユーザデータのみ」のデータ種別が指定されてもよい。この場合、パリティデータをドライブからリードする時間よりも、ストレージコントローラ100でパリティデータを生成する時間の方が短くなり得るからである。 For example, when the processing performance (for example, performance based on IOPS or access frequency) of the storage controller 100 is larger than the third threshold and the I / O performance of the drive is lower than the fourth threshold, “user data only” May be specified. In this case, the time for generating the parity data in the storage controller 100 can be shorter than the time for reading the parity data from the drive.
 ストレージコントローラ100は、移動元のドライブに、移動元のエクステントに属するユーザデータを対象とするリードコマンドを送信する(S524)、 The storage controller 100 sends a read command for user data belonging to the migration source extent to the migration source drive (S524),
 ストレージコントローラ100は、移動元のエクステントに属するユーザデータのみをリードし、キャッシュ領域1000に格納する(S525)。 The storage controller 100 reads only the user data belonging to the migration source extent and stores it in the cache area 1000 (S525).
 ストレージコントローラ100は、キャッシュ領域1000にストライプ列のユーザデータが揃ったら、そのユーザデータからパリティデータを生成する(S526)。 Storage controller 100 generates parity data from the user data after the user data in the stripe column is prepared in cache area 1000 (S526).
 ストレージコントローラ100は、そのユーザデータ及びパリティデータを、移動先のエクステントにライトする(S527)。ストレージコントローラ100は、図18のS507~S509と同様の処理を実行する(S528~S530)。 The storage controller 100 writes the user data and parity data to the extent of the movement destination (S527). The storage controller 100 executes processing similar to S507 to S509 in FIG. 18 (S528 to S530).
 以上の処理により、ストレージコントローラ100は、移動元のエクステントに属するユーザデータを、移動先のエクステントに移動させることができる。 Through the above processing, the storage controller 100 can move the user data belonging to the migration source extent to the migration destination extent.
 図23は、実施例2に関し、ドライブコントローラ710におけるエクステントの先読み処理の例を示すフローチャートである。このエクステントの先読み処理は、図19のS602に対応する。 FIG. 23 is a flowchart illustrating an example of extent pre-read processing in the drive controller 710 regarding the second embodiment. This extent prefetching process corresponds to S602 in FIG.
 ドライブコントローラ710は、ストレージコントローラ100から受信した先読みコマンドに含まれるエクステント番号と、自分の有する構成情報管理テーブル2100とに基づいて、先読み対象のドライブ内LBAを特定する(S720)。 The drive controller 710 identifies the LBA in the drive to be prefetched based on the extent number included in the prefetch command received from the storage controller 100 and the configuration information management table 2100 that it has (S720).
 ドライブコントローラ710は、先読みコマンドに含まれる先読み方法が「ユーザデータのみ」又は「ユーザデータ及びパリティデータ」の何れであるかを判定する(S721)。 The drive controller 710 determines whether the prefetching method included in the prefetching command is “user data only” or “user data and parity data” (S721).
 データ種別が「ユーザデータ及びパリティデータ」の場合(S721:ユーザデータ及びパリティデータ)、ドライブコントローラ710は、FM780における先読み対象のドライブ内LBAに格納されているユーザデータ及びパリティデータを、キャッシュ領域2000へ転送し(S723)、S725へ進む。 When the data type is “user data and parity data” (S721: user data and parity data), the drive controller 710 stores the user data and parity data stored in the pre-read target LBA in the FM 780 in the cache area 2000. (S723), and the process proceeds to S725.
 データ種別が「ユーザデータのみ」の場合(S721:ユーザデータのみ)、ドライブコントローラ710は、FM780における先読み対象のドライブ内LBAに格納されているユーザデータのみを、キャッシュ領域2000へ転送し(S722)、S725へ進む。 When the data type is “user data only” (S721: user data only), the drive controller 710 transfers only the user data stored in the pre-read target LBA in the FM 780 to the cache area 2000 (S722). The process proceeds to S725.
 ドライブコントローラ710は、図20のS702~S703と同様の処理を実行する(S725~S726)。 The drive controller 710 executes the same processing as S702 to S703 in FIG. 20 (S725 to S726).
 以上の処理により、ドライブコントローラ710は、ストレージコントローラ100から送信された先読みコマンドに基づいて、エクステントに属するユーザデータのみを先読みする処理と、エクステントに属する全ユーザデータ及びパリティデータを先読みする処理とを切り替えることができる。 With the above processing, the drive controller 710 performs processing for prefetching only user data belonging to the extent and processing for prefetching all user data and parity data belonging to the extent based on the prefetching command transmitted from the storage controller 100. Can be switched.
 実施例2は、実施例1の作用効果に加え、以下の作用効果を奏する。 Example 2 has the following effects in addition to the effects of Example 1.
 (1)ストレージコントローラ100は、ドライブからパリティデータをリードしないので、ストレージコントローラ100とドライブとの間のI/Oリソースの消費量を抑制することができる。 (1) Since the storage controller 100 does not read parity data from the drive, it is possible to suppress consumption of I / O resources between the storage controller 100 and the drive.
 (2)ドライブコントローラ710は、先読みコマンドに基づいてパリティデータを先読みの対象とするか否かを判断することにより、無駄なデータをキャッシュ領域2000に格納してしまうことがない。つまり、データのキャッシングのためのプロセッサ713の負荷が低減され、先読みのための性能低下が抑制される。また、メモリの716のキャッシュ領域2000の利用効率が向上し、限られた容量のキャッシュ領域2000に必要なデータをより多く格納することができる。 (2) The drive controller 710 determines whether or not the parity data is to be prefetched based on the prefetch command, so that useless data is not stored in the cache area 2000. That is, the load on the processor 713 for data caching is reduced, and the performance degradation for prefetching is suppressed. Further, the use efficiency of the cache area 2000 of the memory 716 is improved, and more necessary data can be stored in the cache area 2000 having a limited capacity.
 上述した本発明の実施例は、本発明の説明のための例示であり、本発明の範囲をそれらの実施例にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。 The above-described embodiments of the present invention are examples for explaining the present invention, and are not intended to limit the scope of the present invention only to those embodiments. Those skilled in the art can implement the present invention in various other modes without departing from the gist of the present invention.
 ストレージコントローラ100は、エクステント移動処理に伴う初回のリードコマンドを送信する前に、移動元のエクステント番号を全て含む先読みコマンドを送信してもよい。これにより、ストレージコントローラ100はコマンドの発行回数を削減できる。又は、ストレージコントローラ100は、初回のリードコマンドに先読みコマンドに係る情報を含めてもよい。この場合、ドライブコントローラ710は、初回のリードコマンドに含まれる先読みコマンドに係る情報に基づいて先読みを実行する。初回のリードコマンドが指定するデータを先読みできないが、さらにコマンドの発行回数を削減できる。又は、ストレージコントローラ100は、所定数のリードコマンドを送信するごとに、次の1又は2以上の移動元のエクステント番号を含む先読みコマンドを送信してもよい。これにより、ドライブ内部のキャッシュ領域2000を効率よく利用できる。キャッシュ領域2000の容量は限られており、先読み以外の処理でも利用されているため、一度に大量の先読みを指示されてもキャッシュ領域に格納しきれない場合があるためである。 The storage controller 100 may transmit a prefetch command including all the extent numbers of the migration source before transmitting the first read command associated with the extent migration processing. As a result, the storage controller 100 can reduce the number of times the command is issued. Alternatively, the storage controller 100 may include information related to the prefetch command in the first read command. In this case, the drive controller 710 performs prefetching based on information related to the prefetch command included in the first read command. The data specified by the first read command cannot be prefetched, but the number of commands issued can be further reduced. Alternatively, each time a predetermined number of read commands are transmitted, the storage controller 100 may transmit a prefetch command including the next one or two or more migration source extent numbers. Thereby, the cache area 2000 inside the drive can be used efficiently. This is because the capacity of the cache area 2000 is limited and is used in processes other than prefetching, and even if a large amount of prefetching is instructed at one time, the cache area 2000 may not be stored in the cache area.
 上述の先読みコマンドに係る構成は、階層間でのエクステント移動処理以外にも利用可能である。例えば、特許文献「WO2013/118170」に記載されているようなSSDの長寿命化のために実行されるエクステント単位でのドライブ間のウェアレベリング処理などに、上述の先読みコマンドに係る構成を適用してもよい。 The above-described configuration related to the prefetch command can be used for purposes other than extent movement processing between layers. For example, the configuration related to the prefetch command described above is applied to wear leveling processing between drives in extent units, which is executed for extending the life of SSD as described in the patent document “WO2013 / 118170”. May be.
 また、実施例1及び2の少なくとも一方において、ストレージコントローラが、ドライブに対するライトコマンドに、そのライトコマンドに従うライト対象データがユーザデータであるかパリティデータであるかを表すデータ種別を設定してもよい。ドライブは、受信したライトコマンドに設定されているデータ種別を、ライト先LBA(エクステント内LBA及びドライブ内LBAのうちの少なくとも一方)に関連付けて管理してよい。これにより、ドライブは、エクステントにおけるLBA毎に、格納されているデータがユーザデータであるかパリティデータであるかを区別することができる。 In at least one of the first and second embodiments, the storage controller may set a data type indicating whether the write target data according to the write command is user data or parity data in the write command for the drive. . The drive may manage the data type set in the received write command in association with the write destination LBA (at least one of the in-extent LBA and the in-drive LBA). Thus, the drive can distinguish whether the stored data is user data or parity data for each LBA in the extent.
 以上の説明では、「×××テーブル」の表現にて情報を説明したものがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「×××テーブル」を「×××情報」と呼ぶことができる。 In the above description, there is a description of information in the expression “xxx table”, but the information may be expressed in any data structure. That is, “xxx table” can be referred to as “xxx information” to indicate that the information does not depend on the data structure.
 10:ストレージシステム 30:ホスト計算機 100:ストレージコントローラ 710:ドライブコントローラ 70、80:エクステント 500、600:RAIDグループ 1000:キャッシュ領域 2000:キャッシュ領域 1100:ドライブ管理テーブル 1200:RAID管理テーブル 1300:プール管理テーブル 1400:エクステント管理テーブル 1500:仮想ボリューム管理テーブル 2100:構成情報管理テーブル

 
10: Storage system 30: Host computer 100: Storage controller 710: Drive controller 70, 80: Extent 500, 600: RAID group 1000: Cache area 2000: Cache area 1100: Drive management table 1200: RAID management table 1300: Pool management table 1400: Extent management table 1500: Virtual volume management table 2100: Configuration information management table

Claims (12)

  1.  それぞれが、複数の不揮発性半導体メモリチップと、データを一時的に格納するキャッシュメモリと、前記複数の不揮発性半導体メモリチップからデータを読み出して前記キャッシュメモリに格納するプロセッサと、を有する複数の半導体記憶装置と、
     前記複数の半導体記憶装置を第一RAIDグループとして制御し、複数のユーザデータ及び前記複数のユーザデータから生成されるパリティデータのそれぞれを前記複数の半導体記憶装置へ格納するストレージコントローラと、を備え、
     前記プロセッサは、前記複数の不揮発性半導体メモリチップの記憶領域を、論理アドレス空間に対応付けて前記ストレージコントローラに提供し、
     前記ストレージコントローラは、
     論理的な記憶領域である複数のエクステントを構成し、
     前記複数の半導体記憶装置のそれぞれの論理アドレス空間を複数のサブ論理記憶領域に分割し、
     前記複数のエクステントのそれぞれに、前記複数の半導体記憶装置のそれぞれの前記複数のサブ論理記憶領域から1つずつ対応付け、
     前記複数の半導体記憶装置のそれぞれに、前記論理アドレス空間におけるユーザデータ及びパリティデータの配置と、前記複数のエクステントとの対応関係を示す構成情報を送信し、
     前記複数の半導体記憶装置のそれぞれに、前記複数のエクステントのうちの第一エクステントを指定してデータを前記キャッシュメモリに格納することを指示する先読みコマンドを送信し、
     前記半導体記憶装置の前記プロセッサは、前記先読みコマンドの受信に応じて、前記構成情報に基づいて、前記第一エクステントに対応するユーザデータ及びパリティデータを特定し、前記特定したユーザデータ及びパリティデータを前記複数の不揮発性半導体メモリチップから読み出して前記キャッシュメモリに格納する
     ことを特徴とするストレージシステム。
     
    A plurality of semiconductors each having a plurality of nonvolatile semiconductor memory chips, a cache memory that temporarily stores data, and a processor that reads data from the plurality of nonvolatile semiconductor memory chips and stores the data in the cache memory A storage device;
    A storage controller that controls the plurality of semiconductor memory devices as a first RAID group and stores each of a plurality of user data and parity data generated from the plurality of user data in the plurality of semiconductor memory devices;
    The processor provides storage areas of the plurality of nonvolatile semiconductor memory chips in association with a logical address space to the storage controller;
    The storage controller
    Configure multiple extents that are logical storage areas,
    Dividing each logical address space of the plurality of semiconductor memory devices into a plurality of sub-logical storage areas;
    Each of the plurality of extents is associated one by one from the plurality of sub-logical storage areas of each of the plurality of semiconductor storage devices,
    The configuration information indicating the correspondence between the arrangement of user data and parity data in the logical address space and the plurality of extents is transmitted to each of the plurality of semiconductor storage devices,
    A pre-read command is sent to each of the plurality of semiconductor memory devices to designate the first extent of the plurality of extents and to store data in the cache memory,
    The processor of the semiconductor memory device identifies user data and parity data corresponding to the first extent based on the configuration information in response to receiving the prefetch command, and identifies the identified user data and parity data. A storage system that reads from the plurality of nonvolatile semiconductor memory chips and stores them in the cache memory.
  2.  前記ストレージコントローラは、
     前記複数の半導体記憶装置のそれぞれに、前記複数のエクステントのうちの第二エクステントを指定してユーザデータを前記キャッシュメモリに格納することを指示する前記先読みコマンドを送信し、
     前記半導体記憶装置の前記プロセッサは、前記先読みコマンドの受信に応じて、前記構成情報に基づいて、指定されたエクステントに対応するユーザデータを特定し、前記特定したユーザデータを前記複数の不揮発性半導体メモリチップから読み出して前記キャッシュメモリに格納する
     ことを特徴とする請求項1記載のストレージシステム。
     
    The storage controller
    Transmitting each of the plurality of semiconductor memory devices to the prefetch command instructing to store user data in the cache memory by designating a second extent of the plurality of extents;
    The processor of the semiconductor memory device identifies user data corresponding to a specified extent based on the configuration information in response to receiving the prefetch command, and identifies the identified user data as the plurality of nonvolatile semiconductors The storage system according to claim 1, wherein the storage system is read from a memory chip and stored in the cache memory.
  3.  前記ストレージコントローラは、
     さらに、前記第一RAIDグループとはRAID構成が異なる第二RAIDグループを制御し、
     前記第一RAIDグループに属する前記第二エクステントに格納されているデータを前記第二RAIDグループに移動する場合に、前記ユーザデータを前記キャッシュメモリに格納することを指示する前記先読みコマンドを送信する
     ことを特徴とする請求項2記載のストレージシステム。
     
    The storage controller
    And controlling a second RAID group having a different RAID configuration from the first RAID group,
    When the data stored in the second extent belonging to the first RAID group is moved to the second RAID group, the prefetch command instructing to store the user data in the cache memory is transmitted. The storage system according to claim 2.
  4.  前記ストレージコントローラは、
     前記複数のエクステントのそれぞれのアクセス頻度を計測し、前記アクセス頻度に基づいてデータを移動する対象のエクステントを決定する
     ことを特徴とする請求項3記載のストレージシステム。
     
    The storage controller
    The storage system according to claim 3, wherein the access frequency of each of the plurality of extents is measured, and the extent to which data is to be moved is determined based on the access frequency.
  5.  前記プロセッサは、前記先読みコマンドに基づいてデータを前記キャッシュメモリに格納する際に、前記データが圧縮されているか否かを判定し、前記データが圧縮されている場合は、前記データを伸張して前記キャッシュメモリに格納する
     ことを特徴とする請求項4記載のストレージシステム。
     
    The processor determines whether the data is compressed when storing the data in the cache memory based on the prefetch command. If the data is compressed, the processor decompresses the data. The storage system according to claim 4, wherein the storage system is stored in the cache memory.
  6.  前記構成情報は、前記エクステントのサイズと、前記パリティデータを生成する単位のサイズと、前記RAIDグループのRAIDレベルと、前記RAIDグループ内での前記半導体記憶装置の位置と、を含む
     ことを特徴とする請求項5記載のストレージシステム。
     
    The configuration information includes a size of the extent, a size of a unit for generating the parity data, a RAID level of the RAID group, and a position of the semiconductor memory device in the RAID group. The storage system according to claim 5.
  7.  前記キャッシュメモリは、前記不揮発性半導体メモリチップより高速にアクセス可能な記憶媒体で構成される
     ことを特徴とする請求項6記載のストレージシステム。
     
    The storage system according to claim 6, wherein the cache memory is configured by a storage medium that can be accessed at a higher speed than the nonvolatile semiconductor memory chip.
  8.  複数の不揮発性半導体メモリチップと、データを一時的に格納するキャッシュメモリと、前記複数の不揮発性半導体メモリチップからデータを読み出して前記キャッシュメモリに格納するプロセッサと、を有し、
     前記プロセッサは、前記複数の不揮発性半導体メモリチップの記憶領域を、論理アドレス空間に対応付けて外部装置に提供し、
     前記外部装置から、前記論理アドレス空間におけるユーザデータ及びパリティデータの配置と、前記外部装置によって管理されている前記論理アドレス空間を分割した複数のサブ論理記憶領域との対応関係を示す構成情報を受信し、
     前記外部装置から、前記複数のサブ論理記憶領域のうちの第一サブ論理記憶領域を指定したデータを前記キャッシュメモリに格納することを指示する先読みコマンドを受信すると、前記第一サブ論理記憶領域に対応するユーザデータ及びパリティデータを特定し、前記特定したユーザデータ及びパリティデータを前記複数の不揮発性半導体メモリチップから読み出して前記キャッシュメモリに格納する
     ことを特徴とする半導体記憶装置。
     
    A plurality of nonvolatile semiconductor memory chips, a cache memory that temporarily stores data, and a processor that reads data from the plurality of nonvolatile semiconductor memory chips and stores the data in the cache memory,
    The processor provides a storage area of the plurality of nonvolatile semiconductor memory chips to an external device in association with a logical address space;
    Configuration information indicating correspondence between the arrangement of user data and parity data in the logical address space and a plurality of sub logical storage areas obtained by dividing the logical address space managed by the external device is received from the external device. And
    When receiving a prefetch command for instructing to store in the cache memory the data specifying the first sub logical storage area of the plurality of sub logical storage areas, the first sub logical storage area Corresponding user data and parity data are specified, and the specified user data and parity data are read from the plurality of nonvolatile semiconductor memory chips and stored in the cache memory.
  9.  前記プロセッサは、前記先読みコマンドが第二サブ論理記憶領域を指定し、かつ、ユーザデータを前記キャッシュメモリに格納することを指定している場合、前記構成情報に基づいて、指定された第二サブ論理記憶領域に対応するユーザデータを特定し、前記特定したユーザデータを前記複数の不揮発性半導体メモリチップから読み出して前記キャッシュメモリに格納する
     ことを特徴とする請求項8記載の半導体記憶装置。
     
    If the prefetch command designates a second sub logical storage area and designates storing user data in the cache memory, the processor determines the designated second sub logical storage area based on the configuration information. 9. The semiconductor memory device according to claim 8, wherein user data corresponding to a logical storage area is specified, and the specified user data is read from the plurality of nonvolatile semiconductor memory chips and stored in the cache memory.
  10.  前記プロセッサは、前記先読みコマンドに基づいてデータを前記キャッシュメモリに格納する際に、前記データが圧縮されているか否かを判定し、前記データが圧縮されている場合は、前記データを伸張して前記キャッシュメモリに格納する
     ことを特徴とする請求項9記載の半導体記憶装置。
     
    The processor determines whether the data is compressed when storing the data in the cache memory based on the prefetch command. If the data is compressed, the processor decompresses the data. The semiconductor memory device according to claim 9, wherein the semiconductor memory device is stored in the cache memory.
  11.  前記構成情報は、前記エクステントのサイズと、前記パリティデータのサイズと、前記RAIDグループのRAIDレベルと、前記RAIDグループ内での前記半導体記憶装置の位置と、を含む
     ことを特徴とする請求項10記載の半導体記憶装置。
     
    The configuration information includes a size of the extent, a size of the parity data, a RAID level of the RAID group, and a position of the semiconductor memory device in the RAID group. The semiconductor memory device described.
  12.  前記キャッシュメモリは、前記不揮発性半導体メモリチップより高速にアクセス可能な記憶媒体で構成される
     ことを特徴とする請求項11記載の半導体記憶装置。

     
    The semiconductor memory device according to claim 11, wherein the cache memory is configured by a storage medium that can be accessed at a higher speed than the nonvolatile semiconductor memory chip.

PCT/JP2014/061611 2014-04-24 2014-04-24 Storage system and semiconductor storage device WO2015162766A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/061611 WO2015162766A1 (en) 2014-04-24 2014-04-24 Storage system and semiconductor storage device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/061611 WO2015162766A1 (en) 2014-04-24 2014-04-24 Storage system and semiconductor storage device

Publications (1)

Publication Number Publication Date
WO2015162766A1 true WO2015162766A1 (en) 2015-10-29

Family

ID=54331953

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/061611 WO2015162766A1 (en) 2014-04-24 2014-04-24 Storage system and semiconductor storage device

Country Status (1)

Country Link
WO (1) WO2015162766A1 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017167819A (en) * 2016-03-16 2017-09-21 株式会社東芝 Hierarchization storage system, storage controller and hierarchization control method
JP6253752B1 (en) * 2016-11-29 2017-12-27 株式会社東芝 Tiered storage system
JP6443572B1 (en) * 2018-02-02 2018-12-26 富士通株式会社 Storage control device, storage control method, and storage control program

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003337722A (en) * 2002-03-13 2003-11-28 Hitachi Ltd Computer system
US20060271740A1 (en) * 2005-05-31 2006-11-30 Mark Timothy W Performing read-ahead operation for a direct input/output request
JP2012133416A (en) * 2010-12-17 2012-07-12 Toshiba Corp Memory system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003337722A (en) * 2002-03-13 2003-11-28 Hitachi Ltd Computer system
US20060271740A1 (en) * 2005-05-31 2006-11-30 Mark Timothy W Performing read-ahead operation for a direct input/output request
JP2012133416A (en) * 2010-12-17 2012-07-12 Toshiba Corp Memory system

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017167819A (en) * 2016-03-16 2017-09-21 株式会社東芝 Hierarchization storage system, storage controller and hierarchization control method
US9891828B2 (en) 2016-03-16 2018-02-13 Kabushiki Kaisha Toshiba Tiered storage system, storage controller, and tiering control method
JP6253752B1 (en) * 2016-11-29 2017-12-27 株式会社東芝 Tiered storage system
CN108121501A (en) * 2016-11-29 2018-06-05 株式会社东芝 Hierarchical stor, storage control and hierarchical control method
US10235071B2 (en) 2016-11-29 2019-03-19 Kabushiki Kaisha Toshiba Tiered storage system, storage controller and tiering control method
JP6443572B1 (en) * 2018-02-02 2018-12-26 富士通株式会社 Storage control device, storage control method, and storage control program
JP2019133601A (en) * 2018-02-02 2019-08-08 富士通株式会社 Storage controller, storage control method, and storage control program
US20190243563A1 (en) * 2018-02-02 2019-08-08 Fujitsu Limited Storage control device, storage control method, and recording medium
KR20190094108A (en) * 2018-02-02 2019-08-12 후지쯔 가부시끼가이샤 Storage control device, storage control method, and recording medium
US10866743B2 (en) * 2018-02-02 2020-12-15 Fujitsu Limited Storage control device using index indicating order of additional writing of data, storage control method using index indicating order of additional writing of data, and recording medium recording program using index indicating order of additional writing of data
KR102245113B1 (en) 2018-02-02 2021-04-26 후지쯔 가부시끼가이샤 Storage control device, storage control method, and recording medium

Similar Documents

Publication Publication Date Title
JP6073471B2 (en) Storage device
US10222988B2 (en) Efficient management storage system via defining of several size units in advance
US20180173632A1 (en) Storage device and method for controlling storage device
US10176212B1 (en) Top level tier management
JP5792313B2 (en) Storage system
JP5937697B2 (en) Storage system
US9092336B2 (en) Write admittance policy for a memory cache
JP5944587B2 (en) Computer system and control method
JP6007332B2 (en) Storage system and data write method
JP5816303B2 (en) Storage system including flash memory and storage control method
US20150095696A1 (en) Second-level raid cache splicing
US20130138884A1 (en) Load distribution system
US9606734B2 (en) Two-level hierarchical log structured array architecture using coordinated garbage collection for flash arrays
WO2015162758A1 (en) Storage system
US9009395B2 (en) Storage subsystem and its data processing method for reducing the amount of data to be stored in nonvolatile memory
JP6513888B2 (en) Computer system having data volume reduction function, and storage control method
US8954658B1 (en) Method of LUN management in a solid state disk array
US20130346723A1 (en) Method and apparatus to protect data integrity
US10579540B2 (en) Raid data migration through stripe swapping
US10049042B2 (en) Storage device, semiconductor memory device, and method for controlling same
KR102347841B1 (en) Memory management apparatus and control method thereof
JP5802283B2 (en) Storage system and logical unit management method thereof
WO2015162766A1 (en) Storage system and semiconductor storage device
WO2019026221A1 (en) Storage system and storage control method
JP6163588B2 (en) Storage system

Legal Events

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

Ref document number: 14890371

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP