WO2016113831A1 - ストレージシステム、及び、記憶制御方法 - Google Patents

ストレージシステム、及び、記憶制御方法 Download PDF

Info

Publication number
WO2016113831A1
WO2016113831A1 PCT/JP2015/050582 JP2015050582W WO2016113831A1 WO 2016113831 A1 WO2016113831 A1 WO 2016113831A1 JP 2015050582 W JP2015050582 W JP 2015050582W WO 2016113831 A1 WO2016113831 A1 WO 2016113831A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
logical
storage
controller
area
Prior art date
Application number
PCT/JP2015/050582
Other languages
English (en)
French (fr)
Inventor
美保 今崎
山本 彰
野中 裕介
朋宏 吉原
俊二 川村
Original Assignee
株式会社日立製作所
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to PCT/JP2015/050582 priority Critical patent/WO2016113831A1/ja
Priority to JP2016569139A priority patent/JP6425740B2/ja
Priority to US15/540,681 priority patent/US10067882B2/en
Publication of WO2016113831A1 publication Critical patent/WO2016113831A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • G06F2212/262Storage comprising a plurality of storage devices configured as RAID
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Definitions

  • the present invention generally relates to a technology of a storage system and a storage control method.
  • a storage system is known in which a parity group is formed by a plurality of flash memory packages (hereinafter referred to as “FM packages”) to increase data redundancy.
  • An FM package is a storage device equipped with a plurality of flash memory chips (hereinafter referred to as “FM chips”).
  • Patent Document 1 describes a storage system that causes a parity generation process to be executed by an FM package when data related to a write request received from a host is stored in the FM package.
  • file data is fragmented while the data constituting the file (hereinafter “file data”) is repeatedly written and erased.
  • file data When file data is fragmented, the speed of file write processing and read processing decreases.
  • the defragmentation process is a process of organizing a plurality of fragment data constituting file data, typically a process of continuously rearranging a plurality of fragment data.
  • a storage system has a parity group (also called a RAID (Redundant Array of Independent) (or Independent) Disks) group) configured by a plurality of storage devices, and a storage controller that controls the parity group.
  • the parity group has a plurality of stripe groups. Each stripe group spans a plurality of storage devices, and specifically includes a plurality of stripes that each of the plurality of storage devices has.
  • the storage controller needs to update the parity by reading a plurality of data in the stripe group to which the moved data belongs in the defragmentation process. is there.
  • the stripe group can also be said to be a group to which a data group (a plurality of data) serving as a unit of parity generation belongs.
  • the storage controller needs to transfer the updated parity to the storage device having the parity before update, and replace the parity before update with the parity after update. Therefore, when the defragmentation process is executed, the processing load on the storage controller increases, and the communication load between the storage controller and the storage device may increase. Note that an increase in the processing load of the storage controller or an increase in the communication load between the storage controller and the storage device is not limited to the defragmentation process, and may occur in a process in which data movement occurs.
  • an object of the present invention is to provide a storage system and a storage control method that suppress an increase in the processing load of the storage controller in processing in which data movement occurs. It is another object of the present invention to provide a storage system and a storage control method that suppress an increase in communication load between a storage controller and a storage device in a process in which data movement occurs.
  • a storage system includes a plurality of storage devices and a storage controller that controls the plurality of storage devices.
  • Each of the plurality of storage devices provides a sub logical space to the storage controller, and manages the correspondence between the logical address and the physical address in the storage device.
  • the storage controller manages a logical space that is a space based on a plurality of sub-logical spaces provided by a plurality of storage devices.
  • the storage device changes the physical address of the physical area in which the first data is stored and the physical address of the physical area in which the second data is stored. Instead, the logical address corresponding to the first data and the logical address corresponding to the second data are switched.
  • an increase in the processing load of the storage controller can be suppressed in a process in which data movement occurs. Further, according to the present invention, it is possible to suppress an increase in communication load between the storage controller and the storage device in a process in which data movement occurs.
  • FIG. 1 is a schematic diagram showing an outline of Example 1.
  • FIG. 1 is a schematic diagram illustrating a configuration example of a storage system according to Embodiment 1.
  • FIG. 3 is a schematic diagram illustrating a configuration example of an FM package according to the first embodiment. It is a figure which shows the data structural example of PG management information which concerns on Example 1.
  • FIG. It is a figure which shows the data structural example of the logical VOL management table which concerns on Example 1.
  • FIG. FIG. 6 is a diagram illustrating a data configuration example of physical block information, logical block information, and a logical physical map according to the first embodiment. 6 is a flowchart illustrating an example of defragmentation processing according to the first embodiment.
  • FIG. 6 is a flowchart illustrating an example of data movement processing according to the first embodiment.
  • 6 is a flowchart illustrating an example of parity update processing according to the first embodiment.
  • 7 is a flowchart illustrating an example of a data movement confirmation process according to the first embodiment.
  • 10 is a flowchart illustrating an example of defragmentation processing in units of stripe groups according to the second embodiment. It is a figure which shows the data structural example of the defragmentation management information which concerns on Example 3.
  • FIG. 12 is a flowchart illustrating an example of defragmentation processing according to a third embodiment.
  • 10 is a flowchart illustrating an example of an I / O process according to the third embodiment.
  • FIG. 10 is a schematic diagram illustrating an outline of a write process when applying a differential snapshot according to a fourth embodiment. It is a figure which shows the data structural example of the pool management information which concerns on Example 4. FIG. It is a figure which shows the data structural example of the primary VOL management information which concerns on Example 4, and secondary VOL management information. 14 is a flowchart illustrating an example of a write process according to the fourth embodiment. 14 is a flowchart illustrating an example of a virtual copy process and a write process according to the fourth embodiment.
  • FIG. 10 is a schematic diagram illustrating an overview of data movement processing and parity update processing between FM packages according to a fifth embodiment.
  • information may be described in terms of “xxx table”, “xxx queue”, or “xxx list”, but the information may be expressed in any data structure. That is, in order to show that the information does not depend on the data structure, the “xxx table”, “xxx queue”, or “xxx list” can be called “xxx information”.
  • the process may be described using “program” as a subject.
  • the program is executed by a processor (for example, a CPU (Central Processing Unit)), so that a predetermined process is appropriately performed. Since the processing is performed using at least one of a storage resource (for example, a memory) and a communication interface device, the subject of the processing may be a processor and an apparatus having the processor. Part or all of the processing performed by the processor may be performed by a hardware circuit.
  • the computer program may be installed from a program source.
  • the program source may be a program distribution server or a storage medium (for example, a portable storage medium).
  • an FM package is adopted as an example of a storage device.
  • the FM package has an FM (flash memory), and the FM is composed of a plurality of “physical blocks”, and each physical block is composed of a plurality of “physical pages”.
  • a physical block or a physical page is an example of a physical area.
  • data is accessed (read and written) in physical page units, and data is erased in physical block units.
  • the sub logical space provided by the FM package may be composed of a plurality of “logical blocks”, and each logical block may be composed of a plurality of “logical pages”.
  • a logical block or logical page may be an example of a logical area.
  • FM is a write-once type.
  • page a logical area to which a physical page (hereinafter referred to as “page”) is assigned
  • page a logical area to which a physical page (hereinafter referred to as “page”) is assigned
  • the FM is replaced with the assigned page.
  • a new empty page is allocated, and data is written to the newly allocated page.
  • the data written to the newly assigned page is “valid data”
  • the page to which valid data is written is the “valid page”
  • the invalid data is “invalid data”
  • the page where invalid data is written is “invalid page”.
  • a physical page that can store new data without being a valid page or an invalid page is an “empty page”.
  • non-volatile semiconductor memory other than FM, for example, PRAM (Phase Change Random Access Memory), MRAM (Magnetogenic Random Access Memory) ReRAM (Resistance Random Access Memory) or FeRAM (Ferroelectric Random Access Memory) may be employed.
  • PRAM Phase Change Random Access Memory
  • MRAM Magnetic Random Access Memory
  • ReRAM Resistance Random Access Memory
  • FeRAM Feroelectric Random Access Memory
  • an external device (a device external to the storage controller) that transmits a defragment request (hereinafter referred to as a host system) that transmits an I / O (Input / Output) request (write request or read request) to the storage system.
  • a host system a device external to the storage controller
  • I / O Input / Output
  • the file controller is interposed between the “host”) and the storage system.
  • the external device may be a host instead of or in addition to the file controller, or may be a management system connected to the storage system and managing at least the storage system. At least one of the host, the file controller, and the management system may be one or more computers.
  • FIG. 1 is a schematic diagram for explaining an outline of the first embodiment.
  • the FM package 80 is an example of a storage device and is an FM device including a plurality of FM chips. Write data for the FM package 80 (data to be written) is written by the appending method, not the overwriting method.
  • the FM package 80 manages a physical space (FM, specifically, a plurality of FM chips) 38 composed of a plurality of physical pages, and stores data in the physical pages.
  • the FM package 80 manages a sub logical space 36 composed of a plurality of logical pages.
  • the FM package 80 may have a logical physical map that manages the correspondence between the logical pages in the sub logical space 36 and the physical pages in the physical space 38.
  • the physical page associated with the logical page is a valid page.
  • the storage controller 62 manages a space (for example, a set of a plurality of sub logical spaces) based on the plurality of sub logical spaces 36 respectively provided by the plurality of FM packages 80 as one logical space, and manages all of one logical space or A part is managed as a logical VOL (logical volume) 22.
  • the sub logical space has a plurality of logical pages, and thus the logical space also has a plurality of logical pages.
  • the logical VOL 22 may be divided into a plurality of VOL areas.
  • One VOL area may be one logical page or a set of two or more logical pages (or one logical page may have two or more VOL areas). .
  • An I / O destination area (all or a part of one or more VOL areas) in the logical VOL 22 can be specified by a logical address (for example, LBA (Logical Block Address)), and in the sub logical space 36 provided by the FM package 80
  • the I / O destination area (all or a part of one or more logical pages) can also be specified by a logical address (for example, LBA).
  • the LBA specified by the host (file controller) for the storage system is the LBA for the logical VOL 22, and the LBA specified by the storage controller 62 for the FM package 80 is the LBA for the sub logical space 36.
  • the LBA for the logical VOL 22 and the LBA for the sub logical space 36 may be the same or different. In the latter case, the storage controller 62 may have information for managing the correspondence relationship between the LBA for the logical VOL 22 and the LBA for the sub logical space 36.
  • data C is stored in the FM package 80b
  • data D is stored in the FM package 80c.
  • a logical page (logical page provided by the FM package 80b) 28-2 belonging to the FM package 80b is associated with a physical page in which the data C is stored.
  • the logical page 30-2 belonging to the FM package 80c is associated with the physical page in which the data D is stored.
  • data A and data B are stored in the same FM package 80a.
  • the logical page 24-2 belonging to the FM package 80a is associated with the physical page in which the data A is stored.
  • the logical page 26-2 is associated with the physical page in which the data B is stored.
  • the storage controller 62 executes the defragmentation process for the logical VOL 22, the following process is executed.
  • the storage controller 62 sets the LBA of the first data and the LBA of the second data for each set of data to be exchanged (one data is referred to as “first data” and the other data is referred to as “second data”).
  • the first determination is made to determine whether or not each belongs to the same FM package.
  • the storage controller 62 performs a first determination for determining whether the LBA 28-1 (logical page 28-2) and the LBA 30-1 (logical page 30-2) belong to the same FM package.
  • the result of the first determination is negative, specifically, the determination result is that the logical page 28-2 and the logical page 30-2 belong to different FM packages 80b and 80c, respectively.
  • the storage controller 62 performs inter-device exchange processing including the following (A2) to (A4).
  • the storage controller 62 copies the data C from the FM package 80b to the buffer memory 58. Similarly, the storage controller 62 copies the data D from the FM package 80c to the buffer memory 58.
  • the storage controller 62 transmits a write request for data C in the buffer memory 58, which specifies the LBA of data D, to the FM package 80c.
  • the FM package 80c stores the data C according to the write request in an empty page in the FM package 80c, and the physical page in which the data D is stored in the logical page 30-2 to which the LBA specified by the write request belongs. Instead of a page, a physical page in which data C is stored is allocated. As a result, the physical page associated with the logical page 30-2 is changed from the physical page in which the data D is stored to the physical page in which the data C is stored. Therefore, for the logical page 30-2, the data D becomes invalid data and the data C becomes valid data.
  • the storage controller 62 transmits a write request for data D in the buffer memory 58 and designating the LBA of data C to the FM package 80b.
  • the FM package 80b stores the data D according to the write request in an empty page in the FM package 80b, and the physical page in which the data C is stored in the logical page 28-2 to which the LBA specified by the write request belongs. Instead of a page, a physical page in which data D is stored is allocated. As a result, the physical page associated with the logical page 28-2 is changed from the physical page in which the data C is stored to the physical page in which the data D is stored. Therefore, for the logical page 28-2, data C becomes invalid data and data D becomes valid data.
  • the storage controller 62 performs a first determination to determine whether the LBA 24-1 (logical page 24-2) and the LBA 26-1 (logical page 26-2) belong to the same FM package.
  • the result of the first determination is affirmative, specifically, the determination result is that the logical page 24-2 and the logical page 26-2 belong to the same FM package 80a. Therefore, the storage controller 62 performs the intra-device exchange process including the following (B2) to (B3).
  • the storage controller 62 instructs the FM package 80a to exchange the physical page associated with the logical page 24-2 and the physical page associated with the logical page 26-2.
  • Send exchange instructions is an exchange instruction including the LBA of data A and the LBA of data B.
  • Each LBA is an LBA for the sub logical space 36a provided by the FM package 80a.
  • the FM package 80a that has received the exchange instruction stores the physical page associated with the logical page 24-2 to which the LBA of the data A belongs from the physical page in which the data A is stored. Change to a physical page (a physical page associated with the logical page 26-2 to which the LBA of data B belongs). Similarly, the FM package 80a changes the physical page associated with the logical page 26-2 to which the LBA of the data B belongs, from the physical page in which the data B is stored (the data A in the data A To the logical page 24-2 to which the LBA belongs).
  • data B is stored in the physical page corresponding to the logical page 24-2 after the exchange, and data is stored in the physical page corresponding to the logical page 26-2 after the exchange.
  • A is stored. That is, in this intra-device exchange process, the process of actually copying (moving) data A and data B does not occur.
  • the intra-device exchange process when the first data (first logical page) and the second data (second logical page) belong to the same FM package 80, the first and second data
  • the data exchange data relocation
  • the storage controller 62 and the FM package 80 can suppress an increase in communication load between the storage controller 62 and the FM package 80.
  • FIG. 2 is a schematic diagram illustrating a configuration example of the storage system according to the first embodiment.
  • the storage system 52 includes a storage package 54 and an FM package box 76.
  • the storage system 52 may include a plurality of FM package boxes 76.
  • the FM package box 76 includes a switch 78 and a plurality of FM packages 80 connected to the switch 78.
  • One or more parity groups are constituted by a plurality of FM packages 80 in one FM package box 76.
  • One parity group may be configured by two or more FM packages in two or more FM package boxes 76.
  • the FM package 80 is a kind of storage device having a plurality of FM chips 100. Details of the FM package 80 will be described later (see FIG. 3).
  • the switch 78 is a device for connecting a plurality of FM packages 80 to the storage package 54.
  • the switch 78 controls data transfer between the plurality of FM packages 80 and the storage packages 54.
  • the storage package 54 includes a storage controller 62, a shared memory 68, a buffer memory 58, a cache memory 60, an FE (Front-End) I / F 56, and a BE (Back-End) I / F 74. These elements are connected by an internal bus 82 capable of bidirectional communication.
  • the storage controller 62 includes a processor 64 and a main memory 66.
  • the main memory 66 stores programs and data.
  • An example of a program stored in the main memory 66 is a storage control program for controlling the storage system 52.
  • the processor 64 executes a program stored in the main memory 66 and realizes various functions related to storage.
  • the storage controller 62 may include a plurality of sets of the processor 64 and the main memory 66 (may be referred to as a local memory).
  • a plurality of processors 64 may be able to refer to the shared memory 68.
  • the FE I / F 56 is an I / F for connecting the storage package 54 and the file controller 50.
  • the command transmitted from the file controller 50 is transferred to the processor 64 of the storage controller 62 through the FE I / F 56.
  • the processor 64 of the storage controller 62 executes a storage control program stored in the main memory 66 in accordance with the received command.
  • the shared memory 68 stores a PG (Parity Group) management table 70 and a logical VOL management table 72.
  • the PG management information 70 is information for managing the parity groups constituting the RAID level.
  • the logical VOL management table 72 is a table for managing the logical VOL.
  • the processor 64 of the storage controller 62 executes the storage control program and accesses the PG management information 70 and the logical VOL management table 72 as necessary.
  • the PG management information 70 and the logical VOL management table 72 stored in the shared memory 68 may be provided to the file controller 50. This is because the file controller 50 can set the argument of the defragmentation request.
  • At least one of the cache memory 60 and the buffer memory 58 temporarily stores data to be input / output to / from the FM package 80.
  • One difference between the cache memory 60 and the buffer memory 58 is whether or not the read data remains. Specifically, the data read from the cache memory 60 remains in the cache memory 60. On the other hand, data once read from the buffer memory 58 does not remain in the buffer memory 58.
  • the BE I / F 74 is connected to the switch 78 of the FM package box 76.
  • a command issued from the processor 64 of the storage controller 62 is transferred to the FM package 80 through the BE I / F 74 and the switch 78.
  • Redundant data for example, ECC (Error Correcting Code) may be added to the transfer data including this command.
  • the storage controller 62 may be expressed as the main body.
  • the host 51 is connected to the file controller 50.
  • the file controller 50 is connected to the storage system 52.
  • the file controller 50 is, for example, a so-called NAS (Network Attached Storage) head, and constitutes a file system space for managing data (block data) in the storage system 52 as file data.
  • the file controller 50 provides the file system space to the host 51.
  • the host 51 transmits a read request or write request for file data in the file system space to the file controller 50.
  • the file controller 50 receives the read request or write request, the file controller 50 transmits a read request or write request for block data constituting the file data of the read request or write request to the storage system 52.
  • an LBA for a logical VOL may be specified.
  • the file controller 50 transmits a plurality (or one) defragmentation request to the storage system 52.
  • a process including a plurality of exchange processes respectively responding to the plurality of defragmentation requests is a logical VOL defragmentation process.
  • a plurality of data (block data) constituting the same file (file data) are continuously arranged in the logical VOL.
  • the defragmentation request exchanges the storage positions of the first and second data to be exchanged, or transfers the first data from the first FM package to the second FM package (second FM package).
  • This is a request for movement processing to move to an FM package storing data.
  • the defragmentation request may have an argument for setting exchange between the first data stored in the first area and the second data stored in the second area.
  • the defragmentation request may have an argument for setting the movement of the first data stored in the first area to the free area.
  • the defragmentation request is defined as “LBA_MOVE (defragment ID, SRC_LBA0, DST_LBA0, SRC_LBA1, DST_LBA1)”.
  • the defrag ID is information for identifying the issued defrag request.
  • SRC_LBA0 and SRC_LBA1 are LBAs (for example, LBAs for logical VOL) indicating the logical page of the movement source.
  • DST_LBA0 and DST_LBA1 are LBAs (for example, LBAs for a logical VOL) indicating the logical page of the migration destination.
  • LBA_MOVE that is not set of arguments of SRC_LBA1 and DST_LBA1 may be defined as a defragmentation request for moving the data in the area indicated by SRC_LBA0 to the area indicated by DST_LBA0.
  • this defragmentation request is referred to as “movement defragmentation request”.
  • LBA_MOVE in which the arguments of SRC_LBA1 and DST_LBA1 are also set is a defrag request for exchanging data related to the logical page indicated by SRC_LBA0 and data related to the logical page indicated by DST_LBA0. May be defined. In this case, it may be defined that the LBA of DST_LBA0 is set in SRC_LBA1 and the LBA of SRC_LBA0 is set in DST_LBA1.
  • this defragmentation request is referred to as “exchange defragmentation request”.
  • the file controller 50 may generate a defrag request list in which a plurality of defrag requests are listed and transmit the defrag request list to the storage system 52.
  • the storage controller 62 may execute a plurality of defragment requests included in the defragment request list in order.
  • the defragmentation request list may comply with the following restrictions. That is, in the defragmentation request list, it is possible that defragmentation requests for the same FM package 80 and defragmentation requests for different FM packages 80 cannot be mixed. However, in the defragmentation request list when the stripe bit shown in the second embodiment described later is ON, it is possible that defragmentation requests for the same FM package 80 and defragmentation requests for different FM packages 80 can be mixed. .
  • the defragmentation request list may not include defragmentation requests for different FM packages 80 targeting different storage systems 52.
  • the file controller 50 may generate a defragment request list by referring to the PG management information 70 and the logical VOL management table 72 so as to satisfy the above constraints.
  • FIG. 3 is a schematic diagram illustrating a configuration example of the FM package 80 according to the first embodiment.
  • the FM package 80 includes a plurality of FM chips 100 and an FM controller 116 that controls the FM chips 100.
  • Each FM chip 100 has a plurality of physical blocks, and each physical block has a plurality of physical pages.
  • the FM controller 116 includes a processor 92, a main memory 102, a buffer memory 96, an FE I / F 90, a BE I / F 98, and a data transfer control unit 94 that controls data transfer between these elements. .
  • FE I / F 90 is connected to switch 78 of FM package box 76.
  • the command transmitted from the storage controller 62 is received by the FM controller 116 through the FE I / F 90.
  • BE I / F 98 is an I / F for connecting the FM controller 116 and the FM chip 100.
  • the main memory 102 stores programs and data. Examples of programs and data stored in the main memory 102 include an FM control program 104, FM package information 106, FM chip information 108, physical block information 150, logical block information 164, and logical physical map 114.
  • the FM control program 104 is a program for controlling the FM package 80.
  • the processor 92 executes a program stored in the main memory 102 and realizes a function related to the FM package 80.
  • the FM package information 106 includes information (configuration, setting values, etc.) regarding the FM package 80.
  • the FM chip information 108 includes information (configuration, setting values, etc.) regarding the configuration of the FM chip 100.
  • the physical block information 150 includes information regarding physical blocks managed by the FM controller 116. Details of the physical block information 150 will be described later (see FIG. 6).
  • the logical block information 164 includes information on logical blocks managed by the FM controller 116. Details of the logical block information 164 will be described later (see FIG. 6).
  • the logical physical map 114 is information for managing the correspondence between LAB (LBA for sub logical space) and PBA (Physical Block Address) (an example of a physical address). Details of the logical physical map 114 will be described later (see FIG. 6).
  • the write data transmitted from the storage package 54 is temporarily stored in the buffer memory 96 through the FE I / F 90 and the data transfer control unit 94.
  • the processor 92 stores the write data in the FM chip 100 through the BE I / F 98.
  • the FM controller 116 may be expressed as the main body.
  • FIG. 4 is a diagram illustrating a data configuration example of the PG management information 70 according to the first embodiment.
  • the PG management information 70 is stored in the shared memory 68 of the storage package 54 and has information for managing the parity group.
  • One PG management information 70 may include information regarding one parity group in the storage system 52.
  • the PG management information 70 may include a drive management table 122 and a stripe group management table 132.
  • the drive management table 122 is a table for managing the drives (FM package 80) constituting the parity group.
  • the drive management table 122 may have a logical VOL ID 124, a RAID configuration 126, a drive ID 128, and a physical start address 130 as field values.
  • the logical VOL ID 124 is information for identifying a logical VOL generated based on this parity group.
  • the RAID configuration 126 is information indicating the RAID level and the PG configuration (for example, the number of data and the number of parity per stripe group) that is the basis of the logical VOL of the logical VOL ID 124.
  • the drive ID 128 is information for identifying the drive (FM package 80). When a plurality of drive IDs are associated with the logical VOL ID 124, this indicates that the logical VOL is configured by the plurality of drives (FM package 80).
  • the physical start address 130 is information indicating an LBA (LBA for the sub logical space) corresponding to the head of the logical VOL with the logical VOL ID 124 in the sub logical space of the drive with the drive ID 128.
  • the stripe group management table 132 is a table for managing stripe groups in the parity group.
  • the stripe group is a group of a plurality of storage areas (stripes) respectively corresponding to a plurality of drives constituting the parity group, and may be a unit for generating a parity.
  • the parity may be an XOR (exclusive OR) of a plurality of data belonging to the stripe group.
  • a stripe may be a collection of one or more logical pages.
  • the stripe group management table 132 may have a logical VOL ID 134, a stripe group ID 136, and a parity storage drive ID 138 as field values.
  • the logical VOL ID 134 is as described above.
  • the stripe group ID 136 is information for identifying a stripe group.
  • the parity storage drive ID 138 is an ID of a drive in which parity belonging to the stripe group of the stripe group ID 136 is stored. There may be a plurality of field values related to the parity storage drive ID 138. For example, when the logical VOL of the logical VOL ID 134 is configured with RAID 5, the field value related to the parity storage drive ID 138 may be one for P parity. For example, when the logical VOL of the logical VOL ID 134 is configured with RAID 6, the field values related to the parity storage drive ID 138 may be two for P parity and for Q parity.
  • the RAID configuration 126 is “RAID5 (3D + 1P)”
  • the RAID configuration 126 is not limited to this.
  • the RAID configuration 126 may be other RAID configurations such as RAID 4 (eg 3D + 1P) or RAID 6 (eg 6D + 2P).
  • FIG. 5 is a diagram illustrating a data configuration example of the logical VOL management table 72 according to the first embodiment.
  • the logical VOL management table 72 is stored in the shared memory 68 of the storage package 54 and has information on the logical VOL managed by the storage system 52.
  • the logical VOL management table 72 has a logical VOL ID 140, a logical start address 142, and a PG ID 144 as field values.
  • the logical VOL ID 140 is as described above.
  • the logical start address 142 is information indicating the LBA (LBA for logical VOL) corresponding to the head of the logical VOL with logical VOL ID 140 in the logical space based on the parity group with PG ID 144.
  • the PG ID 144 is information for identifying a parity group based on the logical VOL of the logical VOL ID 140.
  • FIG. 6 is a diagram illustrating a data configuration example of the physical block information 150, the logical block information 164, and the logical physical map 114 according to the first embodiment.
  • the physical block information 150 is information that is stored in the main memory 102 of the FM package 80 and manages the physical blocks that the FM package 80 has.
  • the physical block information 150 includes a physical block ID 152, a physical block free capacity 154, and a free physical block queue 156.
  • the physical block ID 152 includes a plurality of physical block IDs (information for identifying physical blocks) respectively corresponding to the plurality of physical blocks. For each of the plurality of physical blocks, the start PBA of the physical block may be associated.
  • the physical block free capacity 154 is information indicating the free capacity in the physical page (total capacity of free pages) in each of the plurality of physical blocks.
  • the free physical block queue 156 is a queue of physical block IDs of free physical blocks in the FM package 80.
  • the free physical block queue 156 indicates that the physical block ID 160 “0” and the physical block ID 162 “1” are enqueued with the free physical block pointer 158 at the head.
  • the logical block information 164 is information that is stored in the main memory 102 of the FM package 80 and manages the logical blocks that the FM package 80 has.
  • the logical block information 164 includes a logical block ID 166 and a data storage amount 168.
  • the logical block ID 166 includes a plurality of logical block IDs (information for identifying logical blocks) respectively corresponding to the plurality of logical blocks. For each of the plurality of logical blocks, the start LBA of the logical block may be associated.
  • the size of the logical block (logical page) and the physical block (physical page) may be the same or different.
  • the number of logical blocks (logical pages) included in the FM package 80 may be the same as or more than the number of physical blocks (physical pages).
  • the number of physical blocks (physical pages) included in the FM package 80 may be the same as or more than the number of logical blocks (logical pages).
  • the data storage amount 168 is information indicating the total amount of stored data (for example, the total amount of valid data) (or free space) for each of a plurality of logical blocks.
  • the logical physical map 114 is information indicating a correspondence relationship between the LBA (LBA for sub logical space) 172 and the PBA 174.
  • the correspondence between LBA and PBA is managed, for example, in units of pages.
  • the FM controller 116 when the storage controller 62 transmits a write instruction specifying an LBA belonging to the logical page indicated by the LBA 172 “0x0060” to the FM package 80, the FM controller 116 performs the following processing. That is, the FM controller 116 writes the data according to the write instruction to the empty page, and associates the PBA 174 “0x0022” of the empty page with the LBA 172 “0x0060” to which the specified LBA belongs in the logical physical map 114.
  • the FM controller 116 when the storage controller 62 transmits a read instruction designating an LBA belonging to the logical page indicated by the LBA 172 “0x0060” to the FM package 80, the FM controller 116 performs the following processing. That is, the FM controller 116 identifies the physical page of PBA 174 “0x0022” corresponding to the LBA 172 “0x0060” to which the specified LBA belongs from the logical physical map 114. The FM controller 116 reads data from the identified physical page, and transmits a portion corresponding to the designated LBA of the data to the storage controller 62.
  • the PBA 174 corresponding to the LBA 172 may be set to “NULL” in the logical physical map 114. Further, the correspondence relationship between LBA and PBA may be managed in units larger or smaller than the page unit.
  • FIG. 7 is a flowchart illustrating an example of the defragmentation process according to the first embodiment.
  • the storage controller 62 analyzes the defragmentation request (S182). For example, the storage controller 62 determines whether the defragmentation request is a migration defragmentation request or a replacement defragmentation request. Further, the storage controller 62 extracts the defragment ID, the migration source LBA, and the migration destination LBA from the defragmentation request. When the storage controller 62 receives a defragment request list from the file controller 50, the storage controller 62 may execute the subsequent processes in order for a plurality of defragment requests included in the defragment request list, or may perform parallel processes simultaneously. .
  • the storage controller 62 executes data movement processing based on the analysis result of the defragmentation request (S184).
  • data movement process data movement or exchange is executed based on the defragmentation request.
  • the data movement process may be executed asynchronously with the process of S182. Details of this data movement processing will be described later (see FIG. 8A).
  • the storage controller 62 instructs the FM controller 116 of the FM package 80 in which data movement has occurred by the data movement process to execute a parity update process (S186). This is because if the data belonging to a parity group changes due to data movement, the parity belonging to that parity group can also change. Details of the parity update processing will be described later (see FIG. 8B).
  • the storage controller 62 instructs the FM controller 116 of the FM package 80 in which data movement has occurred by the data movement process to execute the data movement confirmation process (S188).
  • the instruction to confirm the data movement may include an instruction to update the physical block information 150, the logical block information 164, the logical physical map 114, and the like. Details of the data movement confirmation process will be described later (see FIG. 8C).
  • the storage controller 62 notifies the file controller 50 of the completion of the defragment request processing (S190), and this processing is completed.
  • the file controller 50 determines whether the defragmentation request process has been completed for the storage controller 62. May be confirmed periodically to confirm the completion of processing of the defragmentation request. Processing similar to S184 to S188 may be executed on the storage controller 62 side. In this case, the storage controller 62 may store the data in the cache memory 60 and perform data movement processing (S184) on the cache memory 60. Alternatively, the storage controller 62 stores the data in the buffer memory 58, transfers the data in the buffer memory 58 to the area of the cache memory 60 that is the data movement destination, and performs data movement processing on the cache memory 60. Also good. In this case, the parity update process (S186) may also be executed by the storage controller 62.
  • FIG. 8A is a flowchart illustrating an example of the data movement process according to the first embodiment. This process is a detail of the process of S184 in FIG.
  • the storage controller 62 determines whether the migration source LBA and the migration destination LBA set in the defragmentation request belong to the same FM package 80 (first determination) (S200).
  • the storage controller 62 may make the first determination as follows. (C1) The storage controller 62 acquires the logical VOL ID 140 and PG ID 144 to which the migration source LBA (or migration destination LBA) belongs from the logical VOL management table 72. In the present embodiment, since the source LBA and destination LBA belong to the same parity group, the PG ID 144 may be acquired using either the source LBA or destination LBA as a key.
  • the storage controller 62 specifies the PG management information 70 corresponding to the PG ID 144 acquired in (C1).
  • the storage controller 62 acquires the drive ID 128 and the physical start address 130 corresponding to the logical VOL ID 124 to which the migration source LBA belongs from the drive management table 122 of the PG management information 70 specified in (C2).
  • the storage controller 62 specifies the drive ID 128 to which the migration source LBA belongs based on the migration source LBA, the acquired drive ID 128 and the physical start address 130.
  • the storage controller 62 acquires the drive ID 128 and the physical start address 130 related to the migration destination LBA from the drive management table 122.
  • the storage controller 62 identifies the drive ID 128 to which the migration destination LBA belongs based on the migration destination LBA, the acquired drive ID 128 and the physical start address 130.
  • the storage controller 62 compares the drive ID 128 to which the migration source LBA belongs and the drive ID 128 to which the migration destination LBA belongs, and determines whether the drive IDs 128 are the same.
  • the storage controller 62 may determine that the migration source LBA and the migration destination LBA belong to the same FM package 80. When the defragmentation request list is received, the storage controller 62 may make the above determination for each defragmentation request included in the defragmentation request list. Alternatively, when the defragmentation request conforms to the above-described restrictions, the storage controller 62 may make the above determination only for the first defragmentation request and make the same determination for the subsequent defragmentation requests. This is because the defragmentation request list does not include a defragmentation request for the same FM package 80 and a defragmentation request for different FM packages 80 due to the above-described restrictions.
  • the storage controller 62 completes this process.
  • the storage controller 62 determines that the difference between the FM packages 80 is different. Data is moved (S202), and this process is completed.
  • the storage controller 62 may perform data movement between different FM packages 80 as follows.
  • D1 The storage controller 62 reads the data located in the area indicated by the migration source LBA from the migration source FM package 80 (FM package 80 identified from the drive ID to which the migration source LBA belongs), and reads the read data. Store in the buffer memory 58.
  • D2 The storage controller 62 writes the data stored in the buffer memory 58 to the migration destination FM package 80 (FM package 80 identified from the drive ID to which the migration destination LBA belongs).
  • the storage controller 62 may perform data movement between different FM packages 80 as follows.
  • the storage controller 62 reserves a data storage area in the buffer memory 58.
  • the storage controller 62 instructs the migration source FM package 80 to store the data located in the area indicated by the migration source LBA in the buffer memory 58, and sends the buffer memory to the migration destination FM package 80.
  • the data stored in 58 is instructed to be acquired.
  • the storage controller 62 that has received the defragment request list may perform data movement between the different FM packages 80 as follows.
  • the storage controller 62 groups a plurality of defragment requests included in the defragment request list for each migration destination FM package 80. As a result, one or more groups are created, and one request group is a set of one or more defragment requests having the same FM package to which the migration destination LBA belongs.
  • the storage controller 62 acquires, from each of a plurality of migration source FM packages 80 belonging to the group of the same migration destination FM package 80, data located in the area indicated by the migration source LBA, and And stored in the buffer memory 58.
  • the storage controller 62 stores a plurality of data stored in the buffer memory 58 in the same migration destination FM package 80 with one command (collectively).
  • FIG. 8B is a flowchart illustrating an example of a new parity creation instruction according to the first embodiment. This process is a detail of the process of S186 in FIG.
  • This process is executed by the FM controller 116 of the migration source or migration destination FM package 80 that receives the instruction from the storage controller 62.
  • the data migration destination FM package 80 is the same as the data migration source FM package 80.
  • the FM controller 116 generates an intermediate parity for each defragment ID based on the pre-update data and the post-update data (S204).
  • the pre-update data is data that originally existed in the FM package 80 that is the data transfer destination.
  • the post-update data is data that replaces the pre-update data.
  • the intermediate parity may be an XOR of pre-update data and post-update data.
  • the defragmentation request is a defragmentation request for exchange of data A and data B
  • data B is updated data when viewed from data A
  • data A is updated data when viewed from data B. Therefore, in this case, an intermediate parity may be generated based on the data A and data B to be exchanged, and this one intermediate parity may be used for updating the parity of the stripe group to which each of the data A and data B belongs. This is because, in this case, even if the intermediate parity is generated for each of the two stripe groups, the same intermediate parity is generated.
  • the FM controller 116 searches in which FM package 80 the parity of the stripe group to which the updated data belongs is stored (S206).
  • the FM controller 116 may perform a search as follows.
  • the FM controller 116 acquires, from the logical VOL management table 72, the logical VOL ID 140 to which the LBA related to the updated data belongs, the logical start address 142, and the PG ID 144, as in S200.
  • the FM controller 116 has a plurality of stripe groups associated with the logical VOL ID 134 acquired in (G1) from the stripe group management table 132 of the PG management information 70 corresponding to the PG ID 144 acquired in (G1). ID 136 is acquired.
  • the FM controller 116 calculates the LBA related to the updated data from the logical start address 142 acquired in (G1), and uses the LBA related to the updated data from the plurality of stripe group IDs 136 acquired in (G2). To which the stripe group ID 136 belongs. (G4) The FM controller 116 specifies the parity storage drive ID 138 corresponding to the stripe group ID 136 specified in (G3). In the case of RAID 6, the FM controller 116 also specifies the Q parity storage drive ID.
  • the FM controller 116 determines whether or not an unprocessed defragment ID remains (S208).
  • the FM controller 116 executes the processes of S204 to S208 for the remaining defragmentation ID.
  • the FM controller 116 transmits the intermediate parity generated in the process of S204 to the FM package 80 indicated by the parity storage drive ID 138 specified in the process of S206 (S210).
  • the intermediate parity transmission process may be executed as follows.
  • the FM controller 116 instructs the storage controller 62 to reserve an area for storing the intermediate parity in the buffer memory 58. Then, after receiving notification from the storage controller 62 that the area of the buffer memory 58 has been secured, the FM controller 116 executes the next processing.
  • the FM controller 116 allocates all intermediate parities (typically, a plurality of intermediate parities) to be transferred to the same FM package 80 having the pre-update parity among the plurality of intermediate parities. To store.
  • the plurality of intermediate parities stored in the reserved area of the buffer memory 58 are transferred to the same FM package 80 with a single command.
  • the FM controller 116 may assign one guarantee code (for example, ECC (Error Correcting Code)) to the plurality of intermediate parities (collected intermediate parities), or assign a guarantee code to each intermediate parity. It may be given.
  • ECC Error Correcting Code
  • this intermediate parity transmission process may be executed as follows. That is, the storage controller 62 should store the plurality of intermediate parities generated by the FM controller 116 in the reserved area of the buffer memory 58 and transfer them to the same FM package 80 having the pre-update parity among the plurality of intermediate parities. All intermediate parities may be collectively transmitted to the same FM package 80 with a single command.
  • the FM controller 116 that is the transmission destination of the intermediate parity (that is, having the parity before update) may transmit a transmission completion notification of the intermediate parity to the storage controller 62 after receiving the intermediate parity. Further, the FM controller 116 may generate updated parity based on the pre-update parity and the intermediate parity. The process of generating the updated parity may be executed after receiving an instruction from the storage controller 62. After completing the generation of the updated parity, the FM controller 116 may transmit a notification that the generation of the updated parity has been completed to the storage controller 62.
  • the FM controller 116 that transmitted the intermediate parity determines whether or not an untransmitted intermediate parity remains (S214).
  • the FM controller 116 executes the processing of S210 to S214 for the remaining intermediate parity.
  • FIG. 8C is a flowchart illustrating an example of the data movement confirmation process according to the first embodiment. This process is a detail of the process of S188 in FIG.
  • This process is executed by the FM controller 116 of the data source and destination FM packages 80.
  • the FM package 80 may execute this process in response to an instruction from the storage controller 62.
  • the FM controller 116 determines whether the migration source and migration destination of the target data of this process are the same FM package 80 (S220). This determination result matches the determination result of S200 in FIG. 8A.
  • the FM controller 116 executes an address exchange process for each defragmentation ID ( S224).
  • the address exchange process may be a process of exchanging the PBA 174 corresponding to the migration source LBA 172 and the PBA 174 corresponding to the migration destination LBA 172 in the logical physical map 114. Thereby, the data exchange in the defragmentation process can be realized without copying the data indicated by the PBA 174.
  • the FM controller 116 transmits an address exchange processing completion notification to the storage controller 62 and completes this processing.
  • the FM controller 116 executes the next data replacement process for each defragmentation ID. .
  • the migration destination FM controller 116 reserves an empty physical page in the FM chip 100 for storing data from the migration source.
  • the migration destination FM controller 116 may receive and store data from the migration source immediately after securing the physical page, or once the process is completed by securing the physical page and moved asynchronously with the physical page securing. Data may be stored in a physical page secured by receiving data from the source.
  • the migration destination FM controller 116 identifies the PBA 174 associated with the LBA 172 to which the data storage destination LBA from the migration source belongs, from the logical physical map 114.
  • the migration destination FM controller 116 replaces the PBA 174 specified in (J2) with the PBA of the physical page secured in (J1).
  • (J4) The processes of (J1) to (J3) are similarly executed in the FM package 80 in which the movement destination and the movement source are switched.
  • the migration destination FM package is the FM package 80c and the migration source FM package is the FM package 80b
  • the migration destination FM package is the FM package 80b.
  • the source FM package becomes the FM package 80c.
  • each of the FM controllers 116 of the different FM packages 80 completes the data replacement process, and then transmits a data replacement process completion notification to the storage controller 62, and ends this process.
  • At least one of the following effects can be obtained. (1) Since only the minimum necessary data copy needs to be performed, the amount of data copy during the defragmentation process can be suppressed. (2) When the destination and source data exist in the same FM package, data transfer between FM packages can be suppressed. As a result, the data transfer load on the communication path connecting the storage package and the FM package can be reduced.
  • Example 2 will be described. At that time, differences from the first embodiment will be mainly described, and description of common points with the first embodiment will be omitted or simplified.
  • first updated parity generation method As a method for generating post-update parity, there is a method of generating XOR of pre-update data and post-update data to generate intermediate parity, and calculating XOR of the intermediate parity and pre-update parity to generate post-update parity.
  • this method is referred to as “first updated parity generation method”.
  • updated parity is generated by the first updated parity generation method.
  • Another method for generating post-update parity is a method of generating post-update parity by calculating XOR of post-update data and other data (excluding pre-update parity) belonging to the stripe group.
  • this method is referred to as “second updated parity generation method”.
  • the first post-update parity generation method increases the number of processes required to generate post-update parity.
  • the second updated parity generation method can generate updated parity in a single process.
  • the first post-update parity generation method is used when the second post-update parity generation method is used. As a result, the number of processes can be reduced.
  • FIG. 9 is a flowchart illustrating an example of defragmentation processing in units of stripe groups according to the second embodiment.
  • the storage controller 62 When the storage controller 62 receives the defrag request generated by the file controller 50, the storage controller 62 analyzes the defrag request (S240). This process may be the same as the process of S182 of FIG. A stripe bit may be set in the defragmentation request. The stripe bit may be set for each stripe group.
  • the stripe bit “ON” indicates that all the data to be exchanged by the defragmentation request included in the defragmentation request list belongs to the same stripe group, and the exchangeable data exists in a large amount in the same stripe group.
  • the exchange target data may be stored in a plurality of FM packages 80 in a distributed manner. For example, when the number of data to be exchanged is equal to or greater than a predetermined threshold and the distribution ratio of the data to be exchanged in the FM package 80 is equal to or greater than the predetermined threshold, the stripe bit may be “ON”. . Note that the stripe bit “OFF” may indicate that there is little data to be exchanged in the same stripe group or that the data to be exchanged is not distributed and stored.
  • the storage controller 62 determines (second determination) whether or not the stripe bit set in the defragmentation request is “ON” (S244).
  • the storage controller 62 executes the processes of S184, S186, and S188 shown in FIG. These processes are the same as the processes of S184, S186, and S188 shown in FIG. That is, the storage controller 62 employs the first post-update parity generation method. Thereafter, the storage controller 62 notifies the file controller 50 of the completion of the defragmentation request process (see S190 in FIG. 7), and ends this process.
  • the storage controller 62 executes the following process.
  • the storage controller 62 determines whether or not the offload bit is “ON” (S246).
  • the offload bit indicates whether the storage controller 62 or the FM controller 116 calculates the XOR of a plurality of data belonging to the stripe group.
  • the offload bit “ON” may indicate calculation by the FM controller 116, and the offload bit “OFF” may indicate calculation by the storage controller 62.
  • the offload bit may be stored in the shared memory 68 of the storage package 54.
  • the offload bit may be automatically changed according to the status of the storage system 52.
  • the offload bit may be changed to “ON”.
  • the processing load of the storage controller 62 increases, there is a case where normal I / O processing such as business use is high.
  • the offload bit may be changed to “OFF”.
  • the processing load of the FM controller 116 increases, there is a case where the number of FM packages 80 for the storage controller 62 is small.
  • the storage controller 62 reads the data in the target stripe group from each FM package 80 and stores it in the buffer memory 58 of the storage package 54 (S248). This data may be stored in the cache memory 60 instead of the buffer memory 58.
  • the ID of the target stripe group can be searched from the logical VOL management table 72 and the PG management information 70 based on the logical address of the argument of the defrag request.
  • the storage controller 62 replaces the data stored in the buffer memory 58 in accordance with the defragment request, and stores the replaced data in the cache memory 60 (S250).
  • the storage controller 62 replaces the data stored in the cache memory 60 in accordance with the defragment request, and newly replaces the replaced data in the cache memory 60. It may be stored in the reserved area.
  • the storage controller 62 generates an updated parity using each data of the stripe group after the replacement process after completing the replacement process for all the data to be defragmented (S252).
  • the process of S250 and the process of S252 may be executed asynchronously.
  • the storage controller 62 specifies the parity storage drive ID 138 corresponding to the stripe group from the stripe group management table 132 corresponding to the PG ID. Then, the storage controller 62 stores the updated parity in the FM package 80 of the specified parity storage drive ID 138.
  • the storage controller 62 transmits a defragmentation completion notification to the file controller 50 (S190), and ends this process.
  • the storage controller 62 executes the data movement process on the FM package 80 having the movement target data related to the defragmentation ID as described in the first embodiment with reference to FIG. 8A (S256).
  • the storage controller 62 reads data from the migration source FM package 80 and stores it in the buffer memory 58 as described in the first embodiment.
  • the data stored in 58 is stored in the migration destination FM package 80.
  • the storage controller 62 corresponds to the migration source LBA 172 in the logical physical map 114 of the same FM package 80 as described with reference to FIG. 8C of the first embodiment.
  • the PBA 174 and the PBA 174 corresponding to the destination LBA 172 are exchanged.
  • the storage controller 62 executes the following process.
  • the storage controller 62 identifies the FM package 80 in which the pre-update parity belonging to the stripe group is stored (S258).
  • the storage controller 62 instructs each FM package 80 to transfer the updated data belonging to this stripe group to the specified FM package 80 (S260). Receiving this instruction, the FM package 80 transfers its updated data belonging to the stripe group to the specified FM package 80.
  • the storage controller 62 instructs the identified FM package 80 to generate updated parity (S262). Receiving this instruction, the FM package 80 generates updated parity based on the updated data transferred from each FM package 80, and replaces the updated parity with the updated parity.
  • the storage controller 62 executes a data movement confirmation process similar to S188 in FIG. 7 (S264). Then, the storage controller 62 transmits a defragmentation completion notification to the file controller 50 (S266), and ends this process.
  • the second embodiment at least one of the following effects can be obtained. (1) Since only the minimum necessary data copy needs to be performed, the amount of data copy during the defragmentation process can be suppressed. (2) When the destination and source data exist in the same FM package, data transfer between FM packages can be suppressed. As a result, the data transfer load on the communication path connecting the storage package and the FM package can be reduced. (3) By offloading the data copy processing to the FM package side, the processing load on the storage controller can be reduced. (4) The updated parity is generated by an appropriate method in accordance with the arrangement of data to be defragmented. Thereby, the processing load, communication load, etc. regarding generation of updated parity can be reduced.
  • Example 3 will be described. At that time, the differences from the first and second embodiments will be mainly described, and the description of the common points with the first and second embodiments will be omitted or simplified.
  • FIG. 10 is a diagram illustrating a data configuration example of the defragmentation management information 270 according to the third embodiment.
  • the defrag management information 270 is information used in the defragment asynchronous process.
  • the defragmentation asynchronous process is a process in which the storage controller 62 that receives the defragmentation request from the file controller 50 returns a completion notification to the file controller 50 before completing the actual defragmentation process, and then executes the actual defragmentation process. is there. That is, in the defragmentation asynchronous process, the storage controller 62 transmits a completion notification for the defragmentation request to the file controller 50 asynchronously with the timing at which the actual defragmentation process is completed. Thereby, the response performance with respect to a defragmentation request improves.
  • An example of the need to improve the response performance to a defragmentation request is a case where defragmentation processing frequently occurs during normal business.
  • the defragmentation management information 270 includes a first defragmentation table 272 and a first defragmentation generation bit 278 that manage defragmentation processing in the same FM package 80, and a second defragmentation table 271 and a second defragmentation table 271 that manage defragmentation between different FM packages 80. 2 defragmentation bits 269 may be included.
  • the defragmentation management information 270 may be stored in the shared memory 68 of the storage package 54.
  • the first defragmentation table 272 may have a defragmentation ID 273, a migration source logical address 274, and a migration destination logical address 276 as field values.
  • the second defragmentation table 271 may have a defragmentation ID 275, a migration source logical address 277, and a migration destination logical address 279 as field values.
  • the storage controller 62 stores the defragment ID corresponding to the received defragmentation request and the migration source logical address and the migration destination logical address set in the argument of the defragmentation request in the first defragmentation table 272 or the second defragmentation table 271. Store.
  • the storage controller 62 stores the information in the first defragmentation table 272 and sets the first defragmentation bit 278. Change to ON.
  • the storage controller 62 stores those information in the second defragmentation table 271 and turns on the second defragmentation generation bit 269. Change to
  • the defragment table and the defragmentation bit may be one for the storage system or may be for each FM package.
  • FIG. 11 is a flowchart illustrating an example of the defragmentation process according to the third embodiment.
  • the storage controller 62 When the storage controller 62 receives the defrag request list, it analyzes the defrag request included in the defrag request list (S280). This process is the same as the process of S182 of FIG.
  • the storage controller 62 determines whether or not the migration source LBA and migration destination LBA of all the defragmentation requests in the defragmentation request list belong to the same FM package 80 (S281).
  • the storage controller 62 executes the following process. That is, the storage controller 62 stores information related to the defragmentation request included in the defragmentation request list in the first defragmentation table 272 and changes the first defragmentation bit 278 to “ON” (S283). Then, the process proceeds to S190.
  • the storage controller 62 executes the following process. That is, the storage controller 62 stores information related to the defragmentation request included in the defragmentation request list in the second defragmentation table 271 and changes the second defragmentation generation bit 269 to “ON” (S282). Then, the process proceeds to S190.
  • the storage controller 62 transmits a defragmentation completion notification to the file controller 50 (S284). Then, the storage controller 62 executes defragmentation processing (S285 to S288).
  • the defragmentation processing of S285 to S288 is as described in S184 to S188 of FIG.
  • the storage controller 62 may proceed to the processing of S285 immediately after transmitting the defragmentation completion notification (S284). Alternatively, the storage controller 62 may proceed to the process of S285 after the information related to the defragment request is stored in the defragment management information 270 by a predetermined number or more. Alternatively, the storage controller 62 may confirm the first defragmentation bit 278 (second defragmentation bit 269) at a constant cycle, and proceed to the processing of S285 after the bit is turned “ON”.
  • the storage controller 62 updates the defragmentation management information after the completion of the processing of S288 (S290). For example, the storage controller 62 deletes the record of the defragmentation ID that has been defragmented from the first defragmentation table 272 or the second defragmentation table 271.
  • the storage controller 62 may confirm whether or not the record remains in the first defragmentation table 272. If no record remains in the first defragmentation table, the storage controller 62 may change the first defragmentation occurrence bit 278 to “OFF”. The storage controller 62 may perform the same processing on the second defragmentation table 271 and the second defragmentation bit 269.
  • the storage controller 62 may determine that the defragmentation process has been completed when all the defragmentation generation bits 278 and 269 included in the defragmentation management information 270 are “OFF”.
  • FIG. 12 is a flowchart illustrating an example of the I / O processing according to the third embodiment.
  • the storage controller 62 may perform the following processing.
  • the storage controller 62 determines whether at least one of the first defragmentation bit 278 and the second defragmentation bit 269 is “ON” (S302). When each FM package 80 has a defragmentation table and a defragmentation bit, the storage controller 62 may determine the first defragmentation bit 278 and the second defragmentation bit 269 related to the FM package 80 that is the I / O target.
  • the storage controller 62 executes the following process.
  • the storage controller 62 determines whether the I / O target logical address is included in the defragmentation target (S304). For example, the storage controller 62 searches for the logical address of the I / O target from each of the migration source logical addresses 274 and 277 of the first defragmentation table 272 and the second defragmentation table 271 and makes this determination.
  • the storage controller 62 may search only the source logical address 274 of the first defragmentation table 272.
  • the storage controller 62 may search only the source logical address 277 of the second defragmentation table 271.
  • each FM package 80 has the first defragmentation table 272 and the first defragmentation generation bit 278 and only the first defragmentation generation bit 278 related to the FM package 80 to be I / O is “ON”, the storage controller 62 May search only the source logical address 274 of the first defrag table 272 related to the FM package 80.
  • the storage controller 62 executes the normal I / O process and completes this process, as in S316 above. .
  • the storage controller 62 determines whether the type of the I / O process is read or write (S306). .
  • the storage controller 62 executes the following processing.
  • the storage controller 62 executes the defragmentation process shown in FIG. 11 (S308), and then updates the defragmentation management information 270 (S309). Then, the storage controller 62 executes a write process (S310) and completes this process.
  • the storage controller 62 refers to the defragmentation management information 270 and identifies the destination LBA corresponding to the LBA specified by the read request (S312). Then, the storage controller 62 accesses the migration destination LBA to read the data (S314) and completes this process.
  • At least one of the following effects can be obtained. (1) Since only the minimum necessary data copy needs to be performed, the amount of data copy during the defragmentation process can be suppressed. (2) When the destination and source data exist in the same FM package, data transfer between FM packages can be suppressed. As a result, the data transfer load on the communication path connecting the storage package and the FM package can be reduced. (3) It is possible to suppress a decrease in performance of normal I / O processing during execution of defragmentation processing.
  • FIG. 13 is a schematic diagram illustrating an outline of the write process when the differential snapshot according to the fourth embodiment is applied.
  • the shared memory 68 of the storage package 54 further includes snapshot management information 322 and a snapshot mode 325.
  • the snapshot management information 322 includes primary VOL management information 390, secondary VOL management information 392, and pool management information 324.
  • Primary VOL management information 390 is information for managing the primary VOL 330 that is the logical VOL of the snapshot source.
  • the secondary VOL management information 392 is information for managing the secondary VOL 332 that is a logical VOL corresponding to a copy of the primary VOL 330. At least the secondary VOL 332 among the primary VOL 330 and the secondary VOL 332 may be a virtual logical VOL.
  • Pool management information 324 is information for managing a pool 339 in which difference data between the primary VOL 330 and the secondary VOL 332 is stored.
  • the snapshot mode 325 may be “ON” when a snapshot is applied in the storage system 52, and may be “OFF” when a snapshot is not applied.
  • the snapshot mode 325 may exist for each primary VOL, or may be common to a plurality of primary VOLs.
  • the logical VOL management table 329 may have field values related to the VOL type in addition to the field values shown in the logical VOL management table 72 of FIG.
  • the VOL type may be a value indicating whether the logical VOL of the logical VOL ID 140 is a primary VOL, a secondary VOL, or any other type.
  • each segment of the primary VOL 330 and the secondary VOL 332 is referred to as a “virtual segment”, and a segment of the pool 339 is referred to as a “pool segment”.
  • at least the virtual segment and the pool segment of the secondary VOL may be divided into two or more areas, and each area can be referred to as a “subsegment”. Pool segments or pool sub-segments and logical pages may correspond 1: 1.
  • the write destination virtual segment (the virtual segment in the primary VOL 330) 334 of the data Y refers to the pool segment 1336.
  • This pool segment 1336 is also referred to by the virtual segment 335a of the secondary VOL 332a and the virtual segment 335b of the secondary VOL 332b. That is, the pool segment 1336 is shared by the primary VOL 330 and the secondary VOLs 332a and 332b.
  • the storage controller 62 executes the following process.
  • the storage controller 62 copies the data in the pool segment 1336 to another pool segment (copy destination pool segment) 1337.
  • the storage controller 62 switches the reference destination of the virtual segments 335a and 335b to the copy destination pool segment 1337.
  • the storage controller 62 overwrites the data Y in the virtual segment 334 (pool segment 1336).
  • the virtual copy process may be performed as follows.
  • (L1) The storage controller 62 determines whether or not a copy destination logical page can be secured in the same FM package 80 as the logical page 336 allocated to the copy source pool segment 1336. For example, if there is an empty logical page (for example, 337) to which no physical page is allocated in the same FM package 80, the determination result of (L1) is affirmative, that is, a copy destination logical page can be secured. The determination result is acceptable.
  • the FM controller 116 in the FM package 80 receives the virtual copy instruction, and updates the logical physical map 114 in response to the virtual copy instruction. Specifically, the FM controller 116 associates the same PBA as the PBA associated with the copy source LBA with the copy destination LBA.
  • the storage controller 62 may generate updated parity for each of the stripe group including the newly reserved logical page 337 and the stripe group including the data Y overwritten with the data Y.
  • the size of the write data does not have to match the size of the virtual copy.
  • FIG. 14 is a data configuration diagram illustrating an example of pool management information 340 according to the fourth embodiment.
  • Pool management information 340 is information for managing one pool. Therefore, the storage controller 62 may have pool management information 340 for each pool.
  • the pool management information 340 includes thin provisioning management information 342 and snapshot management information 366.
  • Thin provisioning management information 342 is information for managing a pool segment assigned to a virtual VOL.
  • the virtual VOL is a virtual logical VOL configured based on thin provisioning.
  • the thin provisioning management information 342 includes segment size management information 344, pool configuration information 346, a thin provisioning management table 347, and an empty segment queue 358 related to thin provisioning.
  • the segment size management information 344 is information indicating the size of the pool segment.
  • Pool configuration information 346 is information for managing pool segments.
  • the pool segment is a logical area to which one logical page is allocated, but may be a logical area to which two or more logical pages provided by two or more FM packages 80 are allocated.
  • the thin provisioning management table 347 has information on each pool segment related to thin provisioning.
  • the thin provisioning management table 347 has a segment ID 348, a pool ID 350, a pool LBA 352, a stripe group ID 354, and a snapshot bit 356 as field values.
  • the segment ID 348 is information for identifying the pool segment.
  • the pool ID 350 is a pool to which the pool segment with the segment ID 348 belongs.
  • the pool LBA 352 is an LBA indicating a pool segment with a segment ID 348.
  • the stripe group ID 354 is an ID of the stripe group to which the pool segment with the segment ID 348 belongs.
  • the snapshot bit 356 is information indicating whether or not the pool segment with the segment ID 348 is used for a snapshot described later.
  • the snapshot bit 356 “ON” indicates that the pool segment with the segment ID 348 is used for the snapshot.
  • the snapshot bit 356 “OFF” indicates that the pool segment of the segment ID 348 is not used for the snapshot.
  • the empty segment queue 358 related to thin provisioning manages empty segments.
  • segment ID 362 “5” and the segment ID 364 “6” are enqueued in the head pointer 360 of the empty queue related to thin provisioning. That is, the segments with the segment IDs “5” and “6” are vacant.
  • the snapshot management information 366 includes sub-segment size management information 374, a snapshot management table 367, and a free sub-segment queue 376 related to the snapshot.
  • the sub-segment size management information 374 is information indicating the size of the sub-segment that is a unit of snapshot.
  • the snapshot management table 367 has information on each sub-segment related to the snapshot.
  • the snapshot management table 367 includes a segment ID 368, a sub-segment ID 370, a pool LBA 372, and a shared number counter 375 as field values.
  • the sub-segment ID 370 is information for identifying a sub-segment divided from the segment with the segment ID 368.
  • the pool LBA 372 is an LBA indicating a sub-segment with a sub-segment ID 370.
  • the shared number counter 375 is a value indicating how many sub-VOLs the sub-segment of the sub-segment ID 370 is shared with.
  • the pool LBA 372 corresponding to the sub-segment and the pool LBA 352 corresponding to the segment may be managed in the same logical space or may be managed in different logical spaces.
  • the empty subsegment queue 376 related to the snapshot manages empty subsegments.
  • the subsegment ID 380 “1” and the subsegment ID 382 “2” are enqueued in the head pointer 378 of the empty subsegment queue related to the snapshot. It shows that. That is, it indicates that the subsegments with the subsegment IDs “1” and “2” are vacant.
  • FIG. 15 is a data configuration diagram illustrating an example of the primary VOL management information 390 and the secondary VOL management information 392 according to the fourth embodiment.
  • Primary VOL management information 390 is information for managing one primary VOL.
  • the secondary VOL management information 392 is information for managing one secondary VOL.
  • the primary VOL management information 390 includes a virtual LBA 398, a pool LBA 400, and a shared bit 401 for each of the virtual segments constituting the primary VOL.
  • the virtual LBA 398 is the LBA of the virtual segment.
  • the pool LBA 400 is the LBA of the pool segment associated with the virtual segment.
  • the virtual LBA 398 may be managed in units of snapshot sub-segments. For example, a value obtained by adding the size of the sub-segment to the virtual LBA 398 “0x0000” may be set as the next virtual LBA 398 “0x0300”.
  • the shared bit 401 is information indicating whether or not the pool segment associated with the virtual segment is shared with the secondary VOL. For example, at least a part of the pool segment associated with the virtual segment of the shared bit 401 “1” is shared with the secondary VOL. The pool segment associated with the virtual LBA 398 with the shared bit 401 “0” is not shared with the secondary VOL (unshared).
  • the primary VOL management information 390 includes secondary VOL ID information 402 and pool ID information 404.
  • the secondary VOL ID information 402 includes the secondary VOL ID corresponding to the primary VOL of the primary VOL management information 390.
  • the pool ID information 404 includes the ID of the pool that is the source of the pool segment assigned to the primary VOL of the primary VOL management information 390.
  • the secondary VOL management information 392 includes a virtual LBA 406 and a pool LBA 408 for each of the virtual sub-segments constituting the secondary VOL.
  • the pool LBA 408 is the LBA of the pool subsegment associated with the virtual subsegment.
  • the primary VOL ID information 410 has the primary VOL ID corresponding to the secondary VOL of the secondary VOL management information 392.
  • FIG. 16 is a flowchart illustrating an example of a write process according to the fourth embodiment.
  • the storage controller 62 determines whether or not the snapshot mode 325 for the write destination virtual VOL following the write request from the host 51 is “ON” (S422).
  • the storage controller 62 executes a normal write process (S426) and completes this process. In S426, a write process according to the write request is performed.
  • this snapshot mode 325 is “ON” (S422: YES)
  • the storage controller 62 determines whether or not the write destination virtual LBA (LBA designated as the write destination) is shared with other virtual VOLs. (S424).
  • the storage controller 62 determines whether the shared bit 401 corresponding to the write destination virtual LBA 398 of the primary VOL management information 390 indicates “shared” or “non-shared”.
  • the storage controller 62 determines that the pool LBA 408 corresponding to the write destination virtual LBA 406 of the secondary VOL management information 392 is one of the primary VOL management information 390 corresponding to this secondary VOL management information 392. It is determined whether or not it matches the pool LBA400. Here, if they match, the storage controller 62 determines “shared”. If they do not match, the storage controller 62 further searches the snapshot management information 366 for a pool LBA 372 that matches this pool LBA 408, and whether the shared number counter 375 corresponding to the pool LBA 372 is other than “0”. Determine whether or not. Here, when a matching pool LBA 372 is found and the shared number counter 275 is other than “0”, the storage controller 62 determines “shared”. In other cases, the storage controller 62 determines “non-shared”.
  • the storage controller 62 When the write destination virtual LBA is “shared” (S424: YES), the storage controller 62 performs a virtual copy process and a write process on the FM package 80 (S428) and completes this process. This process will be described later (see FIG. 17).
  • FIG. 17 is a flowchart illustrating an example of the virtual copy process and the write process according to the fourth embodiment.
  • the storage controller 62 inquires of the virtual copy source FM controller 116 whether or not a virtual copy LBA can be secured in its own FM package 80 (S442).
  • the FM package 80 that received this inquiry refers to the logical block information 164 to determine whether or not the LBA can be secured, and returns the determination result to the storage controller 62.
  • the storage controller 62 executes the following processing.
  • the storage controller 62 instructs the virtual copy source FM controller 116 to execute virtual copy (S444).
  • the FM package 80 executes virtual copy. That is, the FM package 80 secures an LBA for a virtual copy destination in the logical physical map 114, and associates the PBA of the virtual copy source with the secured LBA. Then, the storage controller 62 proceeds to the process of S448.
  • the storage controller 62 executes the following processing.
  • the storage controller 62 reserves a virtual copy LBA in another FM controller 116.
  • the storage controller 62 transmits the data indicated by the virtual copy source LBA to the FM package 80 that secures the virtual copy destination LBA (S446).
  • This data transmission may be performed via the buffer memory 58 of the storage package 54.
  • this data transmission may be performed not via the buffer memory 58 of the storage package 54 but only via the switch 78 to which the FM packages 80 are connected (see the fifth embodiment).
  • the storage controller 62 proceeds to the process of S448.
  • the storage controller 62 determines whether or not the write target is a primary VOL (S448).
  • the storage controller 62 may make this determination using the information obtained by searching for the primary VOL or the secondary VOL in the process of S422.
  • the storage controller 62 executes the following process.
  • the storage controller 62 changes the pool LBA 408 of all secondary VOLs sharing the pool LBA 400 corresponding to the write target virtual LBA 398 to the virtual copy destination pool LBA (S450).
  • the storage controller 62 may search for the secondary VOL sharing the pool LBA 400 corresponding to the write target virtual LBA as follows. That is, the storage controller 62 identifies the secondary VOL ID indicated by the secondary VOL ID information 402 of the primary VOL management information 390. Then, the storage controller 62 searches for the same pool LBA 408 as the pool LBA 400 of the write target virtual LBA in the secondary VOL management information 392 related to the identified secondary VOL ID.
  • the storage controller 62 changes the shared bit 401 to “unshared”.
  • the storage controller 62 stops the search when the shared bit 401 becomes “unshared” and completes the process of changing the pool LBA. Then, the storage controller 62 proceeds to the process of S454.
  • the storage controller 62 executes the following process.
  • the storage controller 62 changes the shared pool LBA 408 of the secondary VOL to the virtual copy destination pool LBA, and sets the shared bit 401 corresponding to the shared pool LBA 400 of the primary VOL ID of the virtual copy source to “non- "Share” (S452). Then, the storage controller 62 proceeds to the process of S454.
  • the storage controller 62 executes normal overwrite processing (S454). This is because the saving of shared data has been completed.
  • the storage controller 62 executes a parity update process (S456) and a data movement confirmation process (S458) as in the case of FIG. 7 and completes this process.
  • Example 5 will be described. At that time, differences from the first to fourth embodiments will be mainly described, and description of common points with the first to fourth embodiments will be omitted or simplified.
  • FIG. 18 is a schematic diagram illustrating an outline in the case of performing the data movement process and the updated parity generation process between the FM packages 80 according to the fifth embodiment.
  • data movement between different FM packages 80 is performed via the buffer memory 58 of the storage package 54.
  • data movement between different FM packages 80 is performed not via the buffer memory 58 of the storage package 54 but via the switch 78 included in the FM package box 76.
  • the intermediate parity generated by a certain FM package 80 is changed not via the buffer memory 58 of the storage package 54 but via the switch 78 included in the FM package box 76. Transmit to the FM package 80 having the previous parity.
  • the processing according to the fifth embodiment is different from the processing according to the first embodiment in S202 in FIG. 8A and S210 in FIG. 8B, and the other processing is substantially the same as in the first embodiment. Therefore, only the difference processing will be described below.
  • the storage controller 62 transmits the ID of the migration destination FM package 80a to the migration source FM package 80b.
  • the controller of the migration source FM package 80b instructs the migration destination FM package 80a to secure an area for storing the data to be moved.
  • the storage controller 62 may instruct the migration destination FM package 80a to secure the area.
  • the controller of the migration source FM package 80b issues a write command to the migration destination FM package 80a and transmits the data.
  • the data is transmitted to the migration destination FM package 80a via the switch 78.
  • the intermediate parity 464 is transferred to the FM package 80c having the pre-update parity 466 in the same manner as in S202.
  • a representative FM package 80 may be set from among a plurality of FM packages 80 in the FM package box 76, and the processes according to S200, S202, S208, and S210 described above may be performed as follows.
  • the FM package 80c is set as a representative.
  • the representative FM package 80c may be one or a plurality of FM package boxes 76.
  • the PG management information 70 may be stored in the shared memory 68 of the storage package, or may be stored in the main memory 102 of the representative FM package 80c.
  • the migration source FM package 80b inquires the representative FM package 80c.
  • the migration source FM package 80b issues a data transfer start preparation command to the representative FM package 80c.
  • the representative FM package 80c that has received this data transfer start preparation command transmits a command to the storage destination FM package 80a to secure a storage area for the data at the movement source.
  • the representative FM package 80c transmits the ID of the migration destination FM package 80a to the migration source FM package 80b.
  • the migration source FM package 80b that has received the ID of the migration destination FM package 80a transmits the migration target data to the migration destination FM package 80a.
  • the FM package 80a that generated the intermediate parity 464 inquires of the representative FM package 80c.
  • the FM package 80a transmits the intermediate parity 464 to the FM package 80c having the pre-update parity 466 as in S202 described above.
  • At least one of the following effects can be obtained. (1) Since only the minimum necessary data copy needs to be performed, the amount of data copy during the defragmentation process can be suppressed. (2) In the defragmentation process in the write-once storage system in which the free space is fragmented when the read process and the write process are repeated, the defragmentation process can be executed without going through the storage controller. (3) By offloading the data copy processing to the FM package side, the processing load on the storage controller can be reduced.
  • the above-described embodiments 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.
  • the number of storage devices constituting the parity group may be larger than the number of stripes constituting the stripe group.
  • Storage system 54 Storage package 62: Storage controller 62 80: FM package 116: FM controller

Abstract

 ストレージシステムにおいて、記憶デバイス内の物理アドレスと論理アドレスとの対応関係と、複数の記憶デバイスがそれぞれ提供する論理空間を管理し、論理空間内の第1のデータと第2のデータとを交換する場合、第1のデータ及び第2のデータが同一の記憶デバイスに格納されているか否かを判定し、その判定の結果が肯定である場合、記憶デバイスにおいて、第1のデータが格納されている物理領域の物理アドレスと第2のデータが格納されている物理領域の物理アドレスとをそれぞれ変更せずに、第1のデータに対応する論理アドレスと第2のデータに対応する論理アドレスとを入れ替える。

Description

ストレージシステム、及び、記憶制御方法
 本発明は、概して、ストレージシステム及び記憶制御方法の技術に関する。
 複数のフラッシュメモリパッケージ(以下「FMパッケージ」という)でパリティグループを構成し、データの冗長性を高めるストレージシステムが知られている。FMパッケージとは、複数のフラッシュメモリチップ(以下「FMチップ」という)を搭載した記憶デバイスである。特許文献1には、ホストから受信したライト要求に係るデータをFMパッケージに格納するにあたり、パリティの生成処理をFMパッケージに実行させるストレージシステムが記載されている。
US2013/0290773
 ファイルを構成するデータ(以下「ファイルデータ」)のライト及び消去等が繰り返されるうちに、ファイルデータが断片化されてしまう。ファイルデータが断片化すると、ファイルのライト処理及びリード処理の速度が低下する。
 デフラグ処理は、ファイルデータを構成する複数の断片データを整理する処理、典型的には、複数の断片データを連続的に再配置する処理である。一般に、ストレージシステムは、複数の記憶デバイスによって構成されたパリティグループ(RAID(Redundant Array of Independent (or Inexpensive) Disks)グループと呼ばれることもある)と、パリティグループを制御するストレージコントローラとを有する。パリティグループは、複数のストライプグループを有する。各ストライプグループは、複数の記憶デバイスに跨っており、具体的には、複数の記憶デバイスがそれぞれ有する複数のストライプで構成されている。RAIDレベルがRAID5又はRAID6のようにパリティを必要とするRAIDレベルの場合、ストレージコントローラは、デフラグ処理において、移動されたデータが属するストライプグループ内の複数のデータをリードしてパリティを更新する必要がある。この観点から、ストライプグループとは、パリティの生成の単位となるデータ群(複数のデータ)が属するグループとも言える。
 また、ストレージコントローラは、更新後のパリティを、更新前のパリティを有する記憶デバイスに転送し、更新前のパリティを更新後のパリティで置換する必要もある。したがって、デフラグ処理が実行されると、ストレージコントローラの処理負荷が上昇し、また、ストレージコントローラと記憶デバイスとの間の通信負荷も上昇する可能性がある。なお、ストレージコントローラの処理負荷の上昇、又は、ストレージコントローラと記憶デバイスとの間の通信負荷の上昇は、デフラグ処理の場合に限られず、データの移動が発生する処理において発生し得る。
 そこで、本発明の目的は、データの移動が発生する処理において、ストレージコントローラの処理負荷の上昇を抑制するストレージシステム及び記憶制御方法を提供することにある。また、本発明の目的は、データの移動が発生する処理において、ストレージコントローラと記憶デバイスとの間の通信負荷の上昇を抑制するストレージシステム及び記憶制御方法を提供することにある。
 一実施例に係るストレージシステムは、複数の記憶デバイスと、複数の記憶デバイスを制御するストレージコントローラとを有する。複数の記憶デバイスの各々は、サブ論理空間をストレージコントローラに提供し、記憶デバイス内の論理アドレスと物理アドレスとの対応関係を管理する。ストレージコントローラは、複数の記憶デバイスがそれぞれ提供する複数のサブ論理空間に基づく空間である論理空間を管理する。ストレージコントローラは、論理空間内の複数のデータの内の1つである第1のデータと複数のデータの内の1つである第2のデータとを交換する場合、第1のデータ及び第2のデータが同一の記憶デバイスに格納されているか否かを判定する第1判定を行う。
 第1判定の結果が肯定である場合、当該記憶デバイスは、第1のデータが格納されている物理領域の物理アドレスと第2のデータが格納されている物理領域の物理アドレスとをそれぞれ変更せずに、第1のデータに対応する論理アドレスと第2のデータに対応する論理アドレスとを入れ替える。
 本発明によれば、データの移動が発生する処理において、ストレージコントローラの処理負荷の上昇を抑制することができる。また、本発明によれば、データの移動が発生する処理において、ストレージコントローラと記憶デバイスとの間の通信負荷の上昇が抑制することができる。
実施例1の概要を示す模式図である。 実施例1に係るストレージシステムの構成例を示す模式図である。 実施例1に係るFMパッケージの構成例を示す模式図である。 実施例1に係るPG管理情報のデータ構成例を示す図である。 実施例1に係る論理VOL管理テーブルのデータ構成例を示す図である。 実施例1に係る物理ブロック情報、論理ブロック情報、及び、論理物理マップのデータ構成例を示す図である。 実施例1に係るデフラグ処理の一例を示すフローチャートである。 実施例1に係るデータ移動処理の一例を示すフローチャートである 実施例1に係るパリティ更新処理の一例を示すフローチャートである。 実施例1に係るデータ移動確定処理の一例を示すフローチャートである。 実施例2に係るストライプグループ単位でのデフラグ処理の一例を示すフローチャートである。 実施例3に係るデフラグ管理情報のデータ構成例を示す図である。 実施例3に係るデフラグ処理の一例を示すフローチャートである。 実施例3に係るI/O処理の一例を示すフローチャートである。 実施例4に係る差分スナップショット適用時におけるライト処理の概要を示す模式図である。 実施例4に係るプール管理情報のデータ構成例を示す図である。 実施例4に係る正VOL管理情報、及び、副VOL管理情報のデータ構成例を示す図である。 実施例4に係るライト処理の一例を示すフローチャートである。 実施例4に係る仮想コピー処理及びライト処理の一例を示すフローチャートである。 実施例5に係るFMパッケージ間におけるデータ移動処理及びパリティ更新処理の概要を示す模式図である。
 以下、一実施例を説明する。以下の説明では、「xxxテーブル」、「xxxキュー」又は「xxxリスト」の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「xxxテーブル」、「xxxキュー」又は「xxxリスト」を「xxx情報」と呼ぶことができる。
 また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び通信インターフェイスデバイスのうちの少なくとも1つを用いながら行うため、処理の主語が、プロセッサ、そのプロセッサを有する装置とされてもよい。プロセッサが行う処理の一部又は全部が、ハードウェア回路で行われてもよい。コンピュータプログラムは、プログラムソースからインストールされてよい。プログラムソースは、プログラム配布サーバ又は記憶メディア(例えば可搬型の記憶メディア)であってもよい。
 また、以下の説明では、記憶デバイスの一例として、FMパッケージが採用されている。FMパッケージは、FM(フラッシュメモリ)を有し、FMは、複数の「物理ブロック」で構成され、各物理ブロックは、複数の「物理ページ」で構成されているとする。物理ブロック又は物理ページが物理領域の一例である。また、以下の説明では、物理ページ単位でデータがアクセス(リード及びライト)され、物理ブロック単位でデータが消去される。また、以下の説明では、FMパッケージが提供するサブ論理空間は、複数の「論理ブロック」で構成され、各論理ブロックは、複数の「論理ページ」で構成されていてもよい。論理ブロック又は論理ページが論理領域の一例でよい。また、以下の説明では、FMは、追記型、具体的には、物理ページ(以下、ページ)が割り当てられている論理領域がライト先の場合、ライト先論理領域に、割当て済のページに代えて新たに空きページが割り当てられ、新たに割り当てられたページにデータが書き込まれる。各論理領域について、新たに割り当てられたページに書き込まれたデータは「有効データ」であり、有効データが書き込まれているページは「有効ページ」であり、過去に割り当てられていたページに格納されているデータは「無効データ」であり、無効データが書き込まれているページは「無効ページ」である。また、有効ページでも無効ページでも無く新たにデータを格納可能な物理ページが、「空きページ」である。
 また、記憶デバイスが有する物理記憶媒体として、FM(例えば複数のFMチップの集合)に代えて、FM以外の不揮発半導体メモリ、例えばPRAM(Phase Change Random Access Memory))、MRAM(Magnetoresistive Random Access Memory)、ReRAM(Resistance Random Access Memory)又はFeRAM(Ferroelectric Random Access Memory)が採用されてもよい。
 また、以下の説明では、同種の要素を区別して説明する場合には、「xxx36a」、「xxx36b」のように、参照符号を使用し、同種の要素を区別しないで説明する場合には、「xxx36」のように参照符号のうちの共通番号のみを使用することがある。
 また、以下の説明では、デフラグ要求を送信する外部装置(ストレージコントローラの外部の装置)は、ストレージシステムにI/O(Input/Output)要求(ライト要求又はリード要求)を送信するホストシステム(以下「ホスト」)とストレージシステムとの間に介在するファイルコントローラであるとする。しかし、外部装置は、ファイルコントローラに代えて又は加えて、ホストでもよいし、ストレージシステムに接続され少なくともストレージシステムを管理する管理システムであってもよい。ホスト、ファイルコントローラ及び管理システムのうちの少なくとも1つが、1以上の計算機でよい。
 図1は、実施例1の概要を説明するための模式図である。
 FMパッケージ80は、記憶デバイスの一例であり、複数のFMチップを備えるFMデバイスである。FMパッケージ80に対するライトデータ(ライト対象のデータ)は、上書き方式ではなく、追記方式でライトされる。FMパッケージ80は、複数の物理ページから構成される物理空間(FM、具体的には、複数のFMチップ)38を管理し、物理ページにデータを格納する。FMパッケージ80は、複数の論理ページから構成されるサブ論理空間36を管理する。FMパッケージ80は、サブ論理空間36における論理ページと、物理空間38における物理ページとの対応関係を管理する論理物理マップを有してよい。典型的には、論理ページに対応付けられている物理ページは、有効ページである。
 ストレージコントローラ62は、複数のFMパッケージ80がそれぞれ提供する複数のサブ論理空間36に基づく空間(例えば、複数のサブ論理空間の集合)を1つの論理空間として管理し、1つの論理空間の全部又は一部を、論理VOL(論理ボリューム)22として管理する。サブ論理空間は、複数の論理ページを有しており、故に、論理空間も、複数の論理ページを有している。論理VOL22は、複数のVOL領域に区切られてよい。1つのVOL領域は、1つの論理ページであってもよいし、2以上の論理ページの集合であってもよい(或いは、1つの論理ページが、2以上のVOL領域を有してもよい)。論理VOL22におけるI/O先領域(1以上のVOL領域の全部又は一部)を、論理アドレス(例えばLBA(Logical Block Address))により指定可能であり、FMパッケージ80が提供するサブ論理空間36におけるI/O先領域(1以上の論理ページの全部又は一部)も、論理アドレス(例えばLBA)により指定可能である。ホスト(ファイルコントローラ)がストレージシステムに指定するLBAは、論理VOL22用のLBAであり、ストレージコントローラ62がFMパッケージ80に指定するLBAは、サブ論理空間36用のLBAである。論理VOL22用のLBAとサブ論理空間36用のLBAは、一致していてもよいし、異なっていてもよい。後者の場合、ストレージコントローラ62は、論理VOL22用のLBAとサブ論理空間36用のLBAとの対応関係を管理する情報を有してよい。
 図1において、データCはFMパッケージ80bに、データDはFMパッケージ80cに格納されている。FMパッケージ80bに属する論理ページ(FMパッケージ80bが提供する論理ページ)28-2は、データCの格納されている物理ページと対応付けられている。FMパッケージ80cに属する論理ページ30-2は、データDの格納されている物理ページと対応付けられている。一方、図1において、データA及びデータBは、同一のFMパッケージ80aに格納されている。FMパッケージ80aに属する論理ページ24-2は、データAの格納されている物理ページと対応付けられている。論理ページ26-2は、データBの格納されている物理ページと対応付けられている。
 ここで、ストレージコントローラ62が、論理VOL22についてデフラグ処理を実行する場合、以下の処理を実行する。ストレージコントローラ62は、交換対象のデータ(一方のデータを「第1データ」と言い、他方のデータを「第2データ」と言う)の組毎に、第1データのLBA及び第2データのLBAが同一のFMパッケージに属する否かを判定する第1判定を行う。以下、下記2つのケースについて詳述する。
(ケースA)交換対象の2つのデータが異なるFMパッケージに格納されているケースである。具体的には、例えば、論理ページ28-2に対応するLBA28-1が指す領域に位置するデータCと、論理ページ30-2に対応するLBA30-1が指す領域に位置するデータDと、を交換するケースである。なお、ここで言う「論理ページに対応するLBA」は、サブ論理空間36用のLBAでもよいし、論理VOL22用のLBAでもよい。従って、「論理ページに対応するLBAが指す領域」は、論理ページの全域又は一部でもよいし、その論理ページに対応したVOL領域の全域又は一部でもよい。
(ケースB)交換対象の2つのデータが同一のFMパッケージに格納されているケースである。具体的には、例えば、論理ページ24-2に対応するLBA24-1が指す領域に位置するデータAと、論理ページ26-2に対応するLBA28-1が指す領域に位置するデータBと、を交換するケースである。
 <ケースA>
 (A1)ストレージコントローラ62は、LBA28-1(論理ページ28-2)及びLBA30-1(論理ページ30-2)が同一のFMパッケージに属する否かを判定する第1判定を行う。ここでは、第1判定の結果は否定、具体的には、論理ページ28-2と論理ページ30-2はそれぞれ異なるFMパッケージ80b及び80cに属すとの判定結果になる。従って、ストレージコントローラ62は、次の(A2)乃至(A4)を含むデバイス間交換処理を行う。
 (A2)ストレージコントローラ62は、FMパッケージ80bからデータCをバッファメモリ58にコピーする。同様に、ストレージコントローラ62は、FMパッケージ80cからデータDをバッファメモリ58にコピーする。
 (A3)ストレージコントローラ62は、バッファメモリ58内のデータCのライト要求でありデータDのLBAを指定したライト要求を、FMパッケージ80cに送信する。FMパッケージ80cが、そのライト要求に従うデータCを、FMパッケージ80c内の空きページに格納し、そのライト要求で指定されているLBAが属する論理ページ30-2に、データDの格納されている物理ページに代えて、データCの格納された物理ページを割り当てる。この結果、論理ページ30-2に対応付けられる物理ページが、データDの格納されている物理ページからデータCの格納された物理ページに変更される。このため、論理ページ30-2について、データDが無効データとなり、データCが有効データとなる。
 (A4)同様に、ストレージコントローラ62は、バッファメモリ58内のデータDのライト要求でありデータCのLBAを指定したライト要求を、FMパッケージ80bに送信する。FMパッケージ80bが、そのライト要求に従うデータDを、FMパッケージ80b内の空きページに格納し、そのライト要求で指定されているLBAが属する論理ページ28-2に、データCの格納されている物理ページに代えて、データDの格納された物理ページを割り当てる。この結果、論理ページ28-2に対応付けられる物理ページが、データCの格納されている物理ページからデータDの格納された物理ページに変更される。このため、論理ページ28-2について、データCが無効データとなり、データDが有効データとなる。
 <ケースB>
 (B1)ストレージコントローラ62は、LBA24-1(論理ページ24-2)及びLBA26-1(論理ページ26-2)が同一のFMパッケージに属する否かを判定する第1判定を行う。ここでは、第1判定の結果は肯定、具体的には、論理ページ24-2と論理ページ26-2は同一のFMパッケージ80aに属すとの判定結果になる。従って、ストレージコントローラ62は、次の(B2)乃至(B3)を含むデバイス内交換処理を行う。
 (B2)ストレージコントローラ62は、FMパッケージ80aに対して、論理ページ24-2に対応付けられている物理ページと、論理ページ26-2に対応付けられている物理ページとを交換するよう指示する交換指示を送信する。具体的には、例えば、その交換指示は、データAのLBAとデータBのLBAとを含んだ交換指示である。いずれのLBAも、FMパッケージ80aが提供するサブ論理空間36a用のLBAである。
 (B3)交換指示を受信したFMパッケージ80aは、データAのLBAが属する論理ページ24-2に対応付けられる物理ページを、データAが格納されている物理ページから、データBが格納されている物理ページ(データBのLBAが属する論理ページ26-2に対応付けられている物理ページ)に変更する。同様に、FMパッケージ80aは、データBのLBAが属する論理ページ26-2に対応付けられる物理ページを、データBが格納されている物理ページから、データAが格納されている物理ページ(データAのLBAが属する論理ページ24-2に対応付けられている物理ページ)に変更する。
 上記のデバイス内交換処理により、交換後の論理ページ24-2に対応する物理ページにはデータBが格納されていることになり、交換後の論理ページ26-2に対応する物理ページにはデータAが格納されていることになる。つまり、このデバイス内交換処理では、データA及びデータBを実際にコピーする(移動する)処理が発生しない。
 このように、デバイス内交換処理によれば、第1のデータ(第1の論理ページ)と第2のデータ(第2の論理ページ)が同一のFMパッケージ80に属する場合、第1及び第2のデータをバッファメモリ58及びFMパッケージ80にコピーすることなく、そのデータ交換(データ再配置)を完了することができる。よって、ストレージコントローラ62とFMパッケージ80との間の通信負荷の上昇を抑制することができる。
 図2は、実施例1に係るストレージシステムの構成例を示す模式図である。
 ストレージシステム52は、ストレージパッケージ54と、FMパッケージボックス76とを備える。ストレージシステム52は、複数のFMパッケージボックス76を備えてもよい。
 FMパッケージボックス76は、スイッチ78と、そのスイッチ78に接続されている複数のFMパッケージ80とを有する。1つのFMパッケージボックス76内の複数のFMパッケージ80により、1以上のパリティグループが構成される。2以上のFMパッケージボックス76内の2以上のFMパッケージによって1つのパリティグループが構成されてもよい。
 FMパッケージ80は、複数のFMチップ100を有する記憶デバイスの一種である。FMパッケージ80の詳細については後述する(図3参照)。
 スイッチ78は、複数のFMパッケージ80を、ストレージパッケージ54に接続するための装置である。スイッチ78は、複数のFMパッケージ80及びストレージパッケージ54同士のデータ転送を制御する。
 ストレージパッケージ54は、ストレージコントローラ62と、共有メモリ68と、バッファメモリ58と、キャッシュメモリ60と、FE(Front-End) I/F56と、BE(Back-End) I/F74とを有する。これらの要素は、双方向通信が可能な内部バス82で接続されている。
 ストレージコントローラ62は、プロセッサ64及びメインメモリ66から構成されている。メインメモリ66には、プログラム及びデータなどが格納される。メインメモリ66に格納されるプログラムの一例としては、ストレージシステム52を制御するためのストレージ制御プログラムなどがある。プロセッサ64は、メインメモリ66に格納されているプログラムを実行し、ストレージに関する様々な機能を実現する。なお、ストレージコントローラ62は、プロセッサ64及びメインメモリ66(ローカルメモリと呼ばれてもよい)の組を複数有してもよい。複数のプロセッサ64が、共有メモリ68を参照可能でよい。
 FE I/F56は、ストレージパッケージ54と、ファイルコントローラ50とを接続するためのI/Fである。ファイルコントローラ50から送信されたコマンドは、FE I/F56を通じて、ストレージコントローラ62のプロセッサ64に転送される。ストレージコントローラ62のプロセッサ64は、その受信したコマンドに応じて、メインメモリ66に格納されているストレージ制御プログラムを実行する。
 共有メモリ68には、PG(Parity Group)管理テーブル70と、論理VOL管理テーブル72とが格納されている。
 PG管理情報70は、RAIDレベルを構成するパリティグループを管理するための情報である。論理VOL管理テーブル72は、論理VOLを管理するためのテーブルである。
 ストレージコントローラ62のプロセッサ64は、ストレージ制御プログラムを実行し、必要に応じて、PG管理情報70及び論理VOL管理テーブル72にアクセスする。
 共有メモリ68に格納されているPG管理情報70及び論理VOL管理テーブル72は、ファイルコントローラ50へ提供されてよい。ファイルコントローラ50が、デフラグ要求の引数を設定できるようにするためである。
 キャッシュメモリ60及びバッファメモリ58の少なくとも一方に、FMパッケージ80に入出力されるデータが一時格納される。キャッシュメモリ60とバッファメモリ58の1つの違いは、読み出されたデータが残るか否かである。具体的には、キャッシュメモリ60から読み出されたデータは、キャッシュメモリ60に残る。一方、バッファメモリ58から一旦読み出されたデータは、バッファメモリ58には残らない。
 BE I/F74は、FMパッケージボックス76のスイッチ78に接続されている。ストレージコントローラ62のプロセッサ64から発行されたコマンドは、BE I/F74及びスイッチ78を通じて、FMパッケージ80に転送される。このコマンドを含む転送データには、冗長データ(例えばECC(Error Correcting Code))が付与されてもよい。
 以下の説明において、ストレージコントローラ62のプロセッサ64が主体である場合に、ストレージコントローラ62を主体として表現することがある。
 ホスト51は、ファイルコントローラ50に接続されている。ファイルコントローラ50は、ストレージシステム52に接続されている。ファイルコントローラ50は、例えばいわゆるNAS(Network Attached Storage)ヘッドであり、ストレージシステム52内のデータ(ブロックデータ)をファイルデータとして管理するためのファイルシステム空間を構成する。ファイルコントローラ50は、そのファイルシステム空間を、ホスト51に提供する。
 ホスト51は、ファイルコントローラ50に対して、ファイルシステム空間のファイルデータのリード要求又はライト要求を送信する。ファイルコントローラ50は、そのリード要求又はライト要求を受信すると、ストレージシステム52に対して、そのリード要求又はライト要求のファイルデータを構成するブロックデータのリード要求又はライト要求を送信する。ブロックデータのリード要求又はライト要求では、論理VOL用のLBAが指定されてよい。
 ファイルコントローラ50は、ストレージシステム52に対して複数(又は1つ)のデフラグ要求を送信する。その複数のデフラグ要求にそれぞれ応答した複数の交換処理を含んだ処理が、論理VOLのデフラグ処理である。論理VOLのデフラグ処理の結果、論理VOLにおいて、同一ファイル(ファイルデータ)を構成する複数のデータ(ブロックデータ)が連続的に並ぶことになる。
 従って、本実施例では、デフラグ要求は、交換対象の第1及び第2のデータの格納位置を交換する、又は、第1のFMパッケージから第1のデータを第2のFMパッケージ(第2のデータを格納しているFMパッケージ)へ移動する移動処理の要求である。デフラグ要求は、第1の領域に格納されている第1のデータと第2の領域に格納されている第2のデータとの交換を設定するための引数を有してよい。又は、デフラグ要求は、第1の領域に格納されている第1のデータの空き領域への移動を設定するための引数を有してよい。
 具体的には、例えば、デフラグ要求は、「LBA_MOVE(デフラグID,SRC_LBA0,DST_LBA0,SRC_LBA1,DST_LBA1)」のように定義される。
 デフラグIDは、発行されたデフラグ要求を識別するための情報である。SRC_LBA0及びSRC_LBA1は、移動元の論理ページを示すLBA(例えば論理VOL用のLBA)である。DST_LBA0及びDST_LBA1は、移動先の論理ページを示すLBA(例えば論理VOL用のLBA)である。
 SRC_LBA0及びDST_LBA0の引数が設定されており、SRC_LBA1及びDST_LBA1の引数が設定されていないLBA_MOVEは、SRC_LBA0の示す領域のデータを、DST_LBA0の示す領域に移動させるデフラグ要求であると定義されてよい。以下、このデフラグ要求を「移動用デフラグ要求」という。
 SRC_LBA0及びDST_LBA0の引数が設定されており、SRC_LBA1及びDST_LBA1の引数も設定されているLBA_MOVEは、SRC_LBA0の示す論理ページに係るデータと、DST_LBA0の示す論理ページに係るデータとを交換するデフラグ要求であると定義されてよい。この場合、SRC_LBA1にはDST_LBA0のLBAを、DST_LBA1にはSRC_LBA0のLBAを設定すると定義されてよい。以下、このデフラグ要求を「交換用デフラグ要求」という。
 ファイルコントローラ50は、複数のデフラグ要求をリスト化したデフラグ要求リストを生成し、そのデフラグ要求リストをストレージシステム52へ送信してよい。この場合、ストレージコントローラ62は、デフラグ要求リストに含まれる複数のデフラグ要求を順番に実行してよい。
 デフラグ要求リストは、次の制約に従うとしてもよい。すなわち、デフラグ要求リストには、同一のFMパッケージ80内に対するデフラグ要求と、異なるFMパッケージ80間に対するデフラグ要求とを混在させることができないとしてよい。ただし、後述の実施例2に示すストライプビットがONの場合のデフラグ要求リストには、同一のFMパッケージ80内に対するデフラグ要求と、異なるFMパッケージ80間に対するデフラグ要求とを混在させることができるとしてよい。また、デフラグ要求リストには、異なるストレージシステム52を対象とする、異なるFMパッケージ80間に対するデフラグ要求を含めることができないとしてよい。
 ファイルコントローラ50は、PG管理情報70及び論理VOL管理テーブル72を参照し、上記の制約を満たすように、デフラグ要求リストを生成してよい。
 図3は、実施例1に係るFMパッケージ80の構成例を示す模式図である。
 FMパッケージ80は、複数のFMチップ100と、それらのFMチップ100を制御するFMコントローラ116とを備える。各FMチップ100は、複数の物理ブロックを有し、各物理ブロックが、複数の物理ページを有する。
 FMコントローラ116は、プロセッサ92と、メインメモリ102と、バッファメモリ96と、FE I/F90と、BE I/F98と、それらの要素間のデータ転送を制御するデータ転送制御部94と、を有する。
 FE I/F90は、FMパッケージボックス76のスイッチ78に接続されている。ストレージコントローラ62から送信されたコマンドは、このFE I/F90を通じて、FMコントローラ116が受信する。
 BE I/F98は、FMコントローラ116と、FMチップ100とを接続するためのI/Fである。
 メインメモリ102には、プログラム及びデータなどが格納される。メインメモリ102に格納されるプログラム及びデータの一例としては、FM制御プログラム104、FMパッケージ情報106、FMチップ情報108、物理ブロック情報150、論理ブロック情報164、及び、論理物理マップ114などがある。
 FM制御プログラム104は、FMパッケージ80を制御するためのプログラムである。プロセッサ92は、メインメモリ102に格納されているプログラムを実行し、FMパッケージ80に関する機能を実現する。
 FMパッケージ情報106は、FMパッケージ80に関する情報(構成及び設定値など)を有する。FMチップ情報108は、FMチップ100の構成などに関する情報(構成及び設定値など)を有する。
 物理ブロック情報150は、FMコントローラ116が管理する物理ブロックに関する情報を有する。物理ブロック情報150の詳細については後述する(図6参照)。
 論理ブロック情報164は、FMコントローラ116が管理する論理ブロックに関する情報を有する。論理ブロック情報164の詳細については後述する(図6参照)。
 論理物理マップ114は、LAB(サブ論理空間用のLBA)とPBA(Physical Block Address)(物理アドレスの一例)との対応関係を管理する情報である。論理物理マップ114の詳細については後述する(図6参照)。
 ストレージパッケージ54から送信されたライトデータは、FE I/F90及びデータ転送制御部94を通じて、バッファメモリ96に一旦格納される。プロセッサ92は、そのライトデータを、BE I/F98を通じて、FMチップ100に格納する。以下の説明において、FMコントローラ116のプロセッサ92が主体である場合に、FMコントローラ116を主体として表現することがある。
 図4は、実施例1に係るPG管理情報70のデータ構成例を示す図である。
 PG管理情報70は、ストレージパッケージ54の共有メモリ68に格納され、パリティグループを管理するための情報を有する。1つのPG管理情報70は、ストレージシステム52内における1つのパリティグループに関する情報を有してよい。PG管理情報70は、ドライブ管理テーブル122と、ストライプグループ管理テーブル132とを含んでよい。
 ドライブ管理テーブル122は、パリティグループを構成するドライブ(FMパッケージ80)を管理するためのテーブルである。ドライブ管理テーブル122は、フィールド値として、論理VOL ID124と、RAID構成126と、ドライブID128と、物理開始アドレス130とを有してよい。
 論理VOL ID124は、このパリティグループに基づいて生成されている論理VOLを識別するための情報である。
 RAID構成126は、論理VOL ID124の論理VOLの基になっているパリティグループのRAIDレベルとPG構成(例えば、1ストライプグループあたりのデータ数とパリティ数)とを示す情報である。
 ドライブID128は、ドライブ(FMパッケージ80)を識別するための情報である。論理VOL ID124に複数のドライブIDが対応付けられている場合、この論理VOLがこの複数のドライブ(FMパッケージ80)によって構成されていることを示す。
 物理開始アドレス130は、ドライブID128のドライブのサブ論理空間の内、論理VOL ID124の論理VOLの先頭に対応したLBA(サブ論理空間用のLBA)を示す情報である。
 ストライプグループ管理テーブル132は、パリティグループにおけるストライプグループを管理するためのテーブルである。ストライプグループは、パリティグループを構成する複数のドライブにそれぞれ対応した複数の記憶領域(ストライプ)のグループであり、パリティ生成の単位であってよい。パリティは、ストライプグループに属する複数のデータのXOR(排他的論理和)であってよい。ストライプは、1以上の論理ページの集合でよい。
 ストライプグループ管理テーブル132は、フィールド値として、論理VOL ID134と、ストライプグループID136と、パリティ格納ドライブID138とを有してよい。
 論理VOL ID134は、上記で説明したとおりである。ストライプグループID136は、ストライプグループを識別するための情報である。
 パリティ格納ドライブID138は、ストライプグループID136のストライプグループに属するパリティが格納されているドライブのIDである。パリティ格納ドライブID138に係るフィールド値は、複数であってもよい。例えば、論理VOL ID134の論理VOLがRAID5で構成されている場合、パリティ格納ドライブID138に係るフィールド値は、Pパリティ用の1つであってよい。例えば、論理VOL ID134の論理VOLがRAID6で構成されている場合、パリティ格納ドライブID138に係るフィールド値は、Pパリティ用とQパリティ用の2つであってよい。
 本実施例では、図4に示すように、RAID構成126が「RAID5(3D+1P)」の場合について説明をするが、RAID構成126はこれに限られない。例えば、RAID構成126は、RAID4(例えば3D+1P)又はRAID6(例えば6D+2P)など、他のRAID構成であってもよい。
 図5は、実施例1に係る論理VOL管理テーブル72のデータ構成例を示す図である。
 論理VOL管理テーブル72は、ストレージパッケージ54の共有メモリ68に格納され、ストレージシステム52が管理する論理VOLに関する情報を有する。
 論理VOL管理テーブル72は、フィールド値として、論理VOL ID140と、論理開始アドレス142と、PG ID144とを有する。
 論理VOL ID140は、上記で説明したとおりである。論理開始アドレス142は、PG ID144のパリティグループに基づく論理空間のうち、論理VOL ID140の論理VOLの先頭に対応したLBA(論理VOL用のLBA)を示す情報である。PG ID144は、論理VOL ID140の論理VOLに基づくパリティグループを識別するための情報である。
 図6は、実施例1に係る物理ブロック情報150、論理ブロック情報164、及び、論理物理マップ114のデータ構成例を示す図である。
 物理ブロック情報150は、FMパッケージ80のメインメモリ102に格納され、そのFMパッケージ80の有する物理ブロックを管理するための情報である。物理ブロック情報150は、物理ブロックID152、物理ブロック内空き容量154と、空き物理ブロックキュー156とを含む。
 物理ブロックID152は、複数の物理ブロックにそれぞれ対応した複数の物理ブロックID(物理ブロックを識別するための情報)を含む。複数の物理ブロックの各々について、その物理ブロックの開始PBAが対応付けられていてよい。
 物理ブロック内空き容量154は、複数の物理ブロックの各々において、その物理ページ内の空き容量(空きページの総容量)を示す情報である。
 空き物理ブロックキュー156は、FMパッケージ80における空き物理ブロックの物理ブロックIDのキューである。例えば、空き物理ブロックキュー156は、空き物理ブロックポインタ158を先頭に、物理ブロックID160「0」と、物理ブロックID162「1」とがエンキューされていることを示す。
 論理ブロック情報164は、FMパッケージ80のメインメモリ102に格納され、そのFMパッケージ80の有する論理ブロックを管理するための情報である。論理ブロック情報164は、論理ブロックID166と、データ格納量168とを含む。
 論理ブロックID166は、複数の論理ブロックにそれぞれ対応した複数の論理ブロックID(論理ブロックを識別するための情報)を含む。複数の論理ブロックの各々について、その論理ブロックの開始LBAが対応付けられていてよい。
 論理ブロック(論理ページ)と物理ブロック(物理ページ)のサイズは、同一でもよいし、異なってもよい。FMパッケージ80の有する論理ブロック(論理ページ)の数は、物理ブロック(物理ページ)の数と同じ又はそれ以上であってよい。逆に、FMパッケージ80の有する物理ブロック(物理ページ)の数は、論理ブロック(論理ページ)の数と同じ又はそれ以上であってよい。
 データ格納量168は、複数の論理ブロックの各々について、格納済のデータの総量(例えば、有効データの総量)(又は、空き容量)を示す情報である。
 論理物理マップ114は、LBA(サブ論理空間用のLBA)172とPBA174との対応関係を示す情報である。LBAとPBAの対応関係は、例えばページ単位で管理される。
 例えば、ストレージコントローラ62が、FMパッケージ80に対して、LBA172「0x0060」の示す論理ページに属するLBAを指定したライト指示を送信した場合、FMコントローラ116は、次の処理を行う。すなわち、FMコントローラ116は、そのライト指示に従うデータを空きページに書き込み、その空きページのPBA174「0x0022」を、論理物理マップ114において、指定されたLBAが属するLBA172「0x0060」に対応付ける。
 また、例えば、ストレージコントローラ62が、FMパッケージ80に対して、LBA172「0x0060」の示す論理ページに属するLBAを指定したリード指示を送信した場合、FMコントローラ116は、次の処理を行う。すなわち、FMコントローラ116は、論理物理マップ114から、指定されたLBAが属するLBA172「0x0060」に対応したPBA174「0x0022」の物理ページを特定する。FMコントローラ116は、特定した物理ページからデータを読み出し、そのデータのうち、指定されたLBAに該当する部分をストレージコントローラ62に送信する。
 LBA172に何れのPBA174も対応付けられていない場合、論理物理マップ114において、そのLBA172に対応するPBA174は「NULL」とされてよい。また、LBAとPBAの対応関係は、ページ単位より大きい又は小さい単位で管理されてもよい。
 図7は、実施例1に係るデフラグ処理の一例を示すフローチャートである。
 ストレージコントローラ62は、ファイルコントローラ50からデフラグ要求を受信すると、そのデフラグ要求を解析する(S182)。例えば、ストレージコントローラ62は、そのデフラグ要求が、移動用デフラグ要求又は交換用デフラグ要求の何れであるかを判定する。また、ストレージコントローラ62は、そのデフラグ要求から、デフラグIDと、移動元LBAと、移動先LBAとを抽出する。ストレージコントローラ62は、ファイルコントローラ50から、デフラグ要求リストを受信した場合、そのデフラグ要求リストに含まれる複数のデフラグ要求について、順番に以降の処理を実行してよいし、同時に並行処理してもよい。
 次に、ストレージコントローラ62は、デフラグ要求の解析結果に基づき、データ移動処理を実行する(S184)。データ移動処理では、デフラグ要求に基づき、データの移動又は交換などが実行される。データ移動処理は、S182の処理と非同期に実行されてもよい。このデータ移動処理の詳細については後述する(図8A参照)。
 次に、ストレージコントローラ62は、データ移動処理によってデータ移動が発生したFMパッケージ80のFMコントローラ116に対して、パリティ更新処理の実行を指示する(S186)。なぜなら、データ移動によってパリティグループに属するデータが変わると、そのパリティグループに属するパリティも変わり得るからである。パリティ更新処理の詳細については後述する(図8B参照)。
 次に、ストレージコントローラ62は、データ移動処理によってデータ移動が発生したFMパッケージ80のFMコントローラ116に対して、データ移動確定処理の実行を指示する(S188)。データ移動の確定指示には、物理ブロック情報150、論理ブロック情報164、及び、論理物理マップ114等の更新指示が含まれてよい。データ移動確定処理の詳細については後述する(図8C参照)。
 最後に、ストレージコントローラ62は、デフラグ要求の処理の完了を、ファイルコントローラ50に通知し(S190)、本処理を完了する。
 デフラグ要求を受信する処理(S182)と、それ以降の処理(S184~S190)とを非同期に行う場合、ファイルコントローラ50は、ストレージコントローラ62に対して、デフラグ要求の処理が完了しているか否かを定期的に問い合わせることにより、デフラグ要求の処理の完了を確認してもよい。S184乃至S188と同様の処理は、ストレージコントローラ62側で実行されてもよい。その場合、ストレージコントローラ62は、当該データをキャッシュメモリ60に格納し、そのキャッシュメモリ60上でデータ移動処理(S184)を行っても良い。又は、ストレージコントローラ62は、当該データをバッファメモリ58に格納し、そのバッファメモリ58の当該データをデータ移動先のキャッシュメモリ60の領域に転送し、そのキャッシュメモリ60上でデータ移動処理を行ってもよい。この場合、パリティ更新処理(S186)も、ストレージコントローラ62が実行してよい。
 図8Aは、実施例1に係るデータ移動処理の一例を示すフローチャートである。本処理は、図7のS184の処理の詳細である。
 ストレージコントローラ62は、デフラグ要求に設定されている移動元LBAと移動先LBAとが、同一のFMパッケージ80に属しているか否かを判定(第1判定)する(S200)。
 ストレージコントローラ62は、次のように第1判定を行ってもよい。
 (C1)ストレージコントローラ62は、論理VOL管理テーブル72から、移動元LBA(又は移動先LBA)の属する論理VOL ID140及びPG ID144を取得する。本実施例では、移動元LBAと移動先LBAは、同一のパリティグループに属するので、移動元LBAと移動先LBAのどちらかをキーに、PG ID144が取得されればよい。
 (C2)ストレージコントローラ62は、(C1)で取得されたPG ID144に対応するPG管理情報70を特定する。
 (C3)ストレージコントローラ62は、(C2)で特定したPG管理情報70のドライブ管理テーブル122から、移動元LBAの属する論理VOL ID124に対応するドライブID128及び物理開始アドレス130を取得する。ストレージコントローラ62は、移動元LBAと、取得されたドライブID128及び物理開始アドレス130とを基に、移動元LBAの属するドライブID128を特定する。同様に、ストレージコントローラ62は、そのドライブ管理テーブル122から、移動先LBAに関するドライブID128及び物理開始アドレス130を取得する。ストレージコントローラ62は、移動先LBAと、取得されたドライブID128及び物理開始アドレス130とを基に、移動先LBAの属するドライブID128を特定する。
 (C4)ストレージコントローラ62は、移動元LBAの属するドライブID128と、移動先LBAの属するドライブID128とを対比し、それらのドライブID128が同一か否かを判定する。
 デフラグ要求が「交換用デフラグ要求」の場合、ストレージコントローラ62は、移動元LBAと移動先LBAとが同一のFMパッケージ80に属していると判定してもよい。デフラグ要求リストを受信した場合、ストレージコントローラ62は、このデフラグ要求リストに含まれるそれぞれのデフラグ要求について、上記の判定を行ってもよい。又は、デフラグ要求が上述の制約に従っている場合、ストレージコントローラ62は、先頭のデフラグ要求のみ上記の判定を行い、それ以降のデフラグ要求については同じ判定としてよい。なぜなら、上述の制約により、デフラグ要求リストには、同一のFMパッケージ80内に対するデフラグ要求と、異なるFMパッケージ80間に対するデフラグ要求とが混在していないからである。
 S200の判定結果が肯定、すなわち、移動元LBAと移動先LBAとが同一のFMパッケージ80に属しているとの判定結果の場合(S200:YES)、ストレージコントローラ62は、本処理を完了する。
 S200の判定結果が否定、すなわち、移動元LBAと移動先LBAとが異なるFMパッケージ80に属しているとの判定結果の場合(S200:NO)、ストレージコントローラ62は、その異なるFMパッケージ80間でデータを移動させ(S202)、本処理を完了する。
 ストレージコントローラ62は、異なるFMパッケージ80間でのデータ移動を、次のように行ってよい。
 (D1)ストレージコントローラ62は、移動元のFMパッケージ80(移動元LBAが属するドライブIDから特定されるFMパッケージ80)から、その移動元LBAが示す領域に位置するデータを読み出し、読み出したデータをバッファメモリ58に格納する。
 (D2)ストレージコントローラ62は、そのバッファメモリ58に格納したデータを、移動先のFMパッケージ80(移動先LBAが属するドライブIDから特定されるFMパッケージ80)に書き込む。
 又は、ストレージコントローラ62は、異なるFMパッケージ80間でのデータ移動を、次のように行ってよい。
 (E1)ストレージコントローラ62は、バッファメモリ58に、データの格納領域を確保する。
 (E2)ストレージコントローラ62は、移動元のFMパッケージ80に対して、移動元LBAが示す領域に位置するデータをバッファメモリ58に格納するよう指示し、移動先のFMパッケージ80に対してバッファメモリ58に格納されたそのデータを取得するよう指示する。
 又は、デフラグ要求リストを受信したストレージコントローラ62は、異なるFMパッケージ80間でのデータ移動を、次のように行ってよい。
 (F1)ストレージコントローラ62は、デフラグ要求リストに含まれる複数のデフラグ要求を、移動先のFMパッケージ80毎にグループ化する。これにより、1以上のグループができ、1つの要求グループは、移動先LBAが属するFMパッケージが同一である1以上のデフラグ要求の集合である。
 (F2)ストレージコントローラ62は、同一の移動先のFMパッケージ80のグループに属する複数の移動元のFMパッケージ80から、それぞれその移動元LBAが示す領域に位置するデータを取得し、取得したデータを、バッファメモリ58に格納する。
 (F3)ストレージコントローラ62は、そのバッファメモリ58に格納した複数のデータを、1回のコマンドで(一括して)、同一の移動先のFMパッケージ80に格納する。
 図8Bは、実施例1に係る新パリティ作成指示の一例を示すフローチャートである。本処理は、図7のS186の処理の詳細である。
 本処理は、ストレージコントローラ62から指示を受けたデータの移動元又は移動先のFMパッケージ80のFMコントローラ116が実行する。デフラグ要求が交換用デフラグ要求の場合、データの移動先のFMパッケージ80は、データの移動元のFMパッケージ80と同じになる。
 FMコントローラ116は、デフラグID毎に、更新前データと更新後データに基づいて、中間パリティを生成する(S204)。更新前データは、データの移動先のFMパッケージ80に元々存在していたデータである。更新後データは、その更新前データを置き換えるデータである。中間パリティは、更新前データと更新後データのXORであってよい。
 例えば、デフラグ要求が、データAとデータBの交換用デフラグ要求の場合、データAから見るとデータBが更新後データであり、データBから見るとデータAが更新後データとなる関係である。したがってこの場合、交換対象であるデータAとデータBに基づいて中間パリティを生成し、この1つの中間パリティを、データA及びデータBのそれぞれの属するストライプグループのパリティの更新に用いてよい。なぜなら、この場合、2つのストライプグループについてそれぞれ中間パリティを生成しても、結局、同一の中間パリティが生成されるからである。
 次に、FMコントローラ116は、更新後データの属するストライプグループのパリティが、何れのFMパッケージ80に格納されているかを検索する(S206)。
 FMコントローラ116は、次のように検索を行ってよい。
 (G1)FMコントローラ116は、S200の場合と同様に、論理VOL管理テーブル72から、更新後データに係るLBAの属する論理VOL ID140と、論理開始アドレス142と、PG ID144とを取得する。
 (G2)FMコントローラ116は、(G1)で取得したPG ID144に対応するPG管理情報70のストライプグループ管理テーブル132から、(G1)で取得した論理VOL ID134に対応付けられている複数のストライプグループID136を取得する。
 (G3)FMコントローラ116は、(G1)で取得した論理開始アドレス142から更新後データに係るLBAを算出し、(G2)で取得された複数のストライプグループID136から、この更新後データに係るLBAの属するストライプグループID136を特定する。
 (G4)FMコントローラ116は、(G3)で特定したストライプグループID136に対応するパリティ格納ドライブID138を特定する。RAID6の場合、FMコントローラ116は、Qパリティ格納ドライブIDも特定する。
 次に、FMコントローラ116は、未処理のデフラグIDが残っているか否かを判定する(S208)。
 未処理のデフラグIDが残っている場合(S208:YES)、FMコントローラ116は、残りのデフラグIDについて、S204乃至S208の処理を実行する。
 未処理のデフラグIDが残っていない場合(S208:NO)、FMコントローラ116は、次のS210の処理へ進む。
 次に、FMコントローラ116は、S204の処理で生成した中間パリティを、S206の処理で特定したパリティ格納ドライブID138の示すFMパッケージ80へ送信する(S210)。
 この中間パリティの送信処理は、次のように実行されてもよい。
 (H1)FMコントローラ116は、ストレージコントローラ62に対して、中間パリティを格納するための領域をバッファメモリ58に確保するように指示する。そして、FMコントローラ116は、ストレージコントローラ62からバッファメモリ58の領域を確保した旨の通知を受けた後、次の処理を実行する。
 (H2)FMコントローラ116は、複数の中間パリティの内、更新前パリティを有する同一のFMパッケージ80へ転送すべき全ての中間パリティ(典型的には複数の中間パリティ)をバッファメモリ58の確保領域に格納する。
 (H3)バッファメモリ58の確保領域に格納されたその複数の中間パリティは、1回のコマンドで、その同一のFMパッケージ80へ転送される。
 ここで、FMコントローラ116は、その複数の中間パリティ(まとめられた中間パリティ)に1つの保証コード(例えばECC(Error Correcting Code))を付与してもよいし、それぞれの中間パリティに保証コードを付与してもよい。
 又は、この中間パリティの送信処理は、次のように実行されてよい。すなわち、ストレージコントローラ62が、FMコントローラ116の生成した複数の中間パリティをバッファメモリ58の確保領域へ格納し、その複数の中間パリティの内、更新前パリティを有する同一のFMパッケージ80へ転送すべき全ての中間パリティを、1回のコマンドで、その同一のFMパッケージ80へ一括送信してもよい。
 このように、同一のFMパッケージ80へ送信すべき複数の中間パリティを、1回のコマンドで送信する(一括で送信する)ことにより、コマンドの発行回数を減らすことができる。よって、ストレージコントローラ62及びFMコントローラ116における処理負荷を低減することができる。また、パリティグループがRAID4の場合、パリティのみが格納されるFMパッケージ80が存在する。この場合、S206の処理の検索結果は全て同じFMパッケージとなるので、S210乃至S214の処理も1回のループで完了する。すなわち、中間パリティを送信するためのコマンドの発行回数を減らすことができる。
 ここで、中間パリティの送信先の(つまり、更新前のパリティを有する)FMコントローラ116は、中間パリティを受信後、ストレージコントローラ62に対して、中間パリティの送信完了通知を送信してよい。また、このFMコントローラ116は、更新前のパリティと中間パリティに基づいて、更新後のパリティを生成してよい。この更新後のパリティを生成する処理は、ストレージコントローラ62から指示を受けてから実行されてもよい。このFMコントローラ116は、更新後のパリティの生成を完了した後、ストレージコントローラ62に対して、更新後のパリティの生成を完了した旨の通知を送信してよい。
 次に、中間パリティを送信したFMコントローラ116は、未送信の中間パリティが残っているか否か判定する(S214)。
 未送信の中間パリティが残っている場合(S214:YES)、FMコントローラ116は、残りの中間パリティについて、S210乃至S214の処理を実行する。
 未送信の中間パリティが残っていない場合(S214:NO)、FMコントローラ116は、本処理を完了する。
 図8Cは、実施例1に係るデータ移動確定処理の一例を示すフローチャートである。本処理は、図7のS188の処理の詳細である。
 本処理は、データの移動元及び移動先のFMパッケージ80のFMコントローラ116が実行する。FMパッケージ80は、ストレージコントローラ62から指示を受けて本処理を実行してよい。
 FMコントローラ116は、本処理の対象データの移動元と移動先が同一のFMパッケージ80であるか否かを判定する(S220)。この判定結果は、図8AにおけるS200の判定結果と一致する。
 対象データの移動元と移動先が同一のFMパッケージ80である場合(つまり、交換用デフラグ要求の場合)(S220:YES)、FMコントローラ116は、デフラグID毎に、アドレス交換処理を実行する(S224)。アドレス交換処理とは、論理物理マップ114における、移動元LBA172に対応するPBA174と、移動先LBA172に対応するPBA174とを交換する処理であってよい。これにより、PBA174の示すデータをコピーすることなく、デフラグ処理におけるデータ交換を実現することができる。
 そして、FMコントローラ116は、全てのデフラグIDについてアドレス交換処理を完了した後、ストレージコントローラ62に対して、アドレス交換処理の完了通知を送信し、本処理を完了する。
 対象データの移動元と移動先が異なるFMパッケージ80である場合(つまり、移動用デフラグ要求の場合)(S220:NO)、FMコントローラ116は、デフラグID毎に、次のデータ置換処理を実行する。
 (J1)移動先のFMコントローラ116は、移動元からのデータを格納するための空き物理ページを、FMチップ100に確保する。移動先のFMコントローラ116は、その物理ページを確保した直後に移動元からデータを受信し格納してもよいし、その物理ページの確保で一旦処理を終了しその物理ページ確保とは非同期で移動元からデータを受信し確保された物理ページにデータを格納してもよい。
 (J2)移動先のFMコントローラ116は、論理物理マップ114から、移動元からのデータの格納先LBAが属するLBA172に対応付けられているPBA174を特定する。
 (J3)移動先のFMコントローラ116は、(J2)で特定したPBA174を、(J1)で確保した物理ページのPBAに置換する。
 (J4)(J1)乃至(J3)の処理を、移動先と移動元を入れ替えたFMパッケージ80においても同様に実行する。例えば、(J1)乃至(J3)の説明において、移動先のFMパッケージがFMパッケージ80cで移動元のFMパッケージがFMパッケージ80bの場合、(J4)では、移動先のFMパッケージがFMパッケージ80bで移動元のFMパッケージがFMパッケージ80cとなる。
 そして、その異なるFMパッケージ80のFMコントローラ116の各々は、上記のデータ置換処理を完了した後、ストレージコントローラ62に対して、データ置換処理の完了通知を送信し、本処理を終了する。
 実施例1によれば、次の効果のうちの少なくとも1つを得ることができる。
(1)必要最低限のデータコピーのみ実施すればよいため、デフラグ処理時のデータコピー量を抑制することができる。
(2)移動先と移動元のデータが同一のFMパッケージに存在する場合において、FMパッケージ間におけるデータ転送を抑制できる。これにより、ストレージパッケージ及びFMパッケージを接続する通信路におけるデータ転送負荷を軽減できる。
 実施例2を説明する。その際、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略又は簡略する。
 更新後パリティの生成方法として、更新前データと更新後データのXORを算出して中間パリティを生成し、その中間パリティと更新前パリティのXORを算出して更新後パリティを生成する方法がある。以下、この方法を「第1の更新後パリティ生成方法」という。実施例1は、この第1の更新後パリティ生成方法によって、更新後パリティを生成している。
 他の更新後パリティの生成方法として、ストライプグループに属する更新後データ及び他の各データ(更新前パリティを除く)のXORを算出して更新後パリティを生成する方法がある。以下、この方法を「第2の更新後パリティ生成方法」という。
 1つのストライプグループ内に複数のドライブにまたがる大量の更新後データが存在する場合、第1の更新後パリティ生成方法では、更新後パリティの生成に要する処理回数が多くなってしまう。このような場合は、第2の更新後パリティ生成方法の方が、1回の処理で更新後パリティを生成することができる。
 したがって、デフラグ処理においても、1つのストライプグループ内に大量の交換対象のデータが存在する場合は、第2の更新後パリティ生成方法を採用した方が、第1の更新後パリティ生成方法を採用するよりも、処理回数を少なくすることができる。
 図9は、実施例2に係るストライプグループ単位でのデフラグ処理の一例を示すフローチャートである。
 ストレージコントローラ62は、ファイルコントローラ50によって生成されたデフラグ要求を受信すると、そのデフラグ要求を解析する(S240)。この処理は、図7のS182の処理と同様であってよい。デフラグ要求には、ストライプビットが設定されていてよい。ストライプビットは、ストライプグループ毎に設定されてもよい。
 ストライプビット「ON」は、デフラグ要求リストに含まれるデフラグ要求が交換対象とするデータは全て同一のストライプグループ内に属し、交換対象のデータがその同一ストライプグループ内に大量に存在しており、且つ、その交換対象のデータが複数のFMパッケージ80に分散して格納されていることを示すとしてよい。例えば、交換対象のデータの数が所定の閾値以上であり、且つ、その交換対象のデータのFMパッケージ80における分散の割合が所定の閾値以上の場合、ストライプビットが「ON」となってもよい。なお、ストライプビット「OFF」は、同一のストライプグループ内における交換対象のデータが少ない、又は、その交換対象のデータが余り分散して格納されていないことを示すとしてもよい。
 ストレージコントローラ62は、デフラグ要求に設定されているストライプビットが「ON」であるか否か判定(第2判定)する(S244)。
 第2判定においてストライプビットが「OFF」の場合(S244:NO)、ストレージコントローラ62は、図9に示すS184、S186及びS188の処理を実行する。これらの処理は、図7に示すS184、S186及びS188の処理と同様である。すなわち、ストレージコントローラ62は、第1の更新後パリティ生成方法を採用する。その後、ストレージコントローラ62は、デフラグ要求の処理の完了を、ファイルコントローラ50に通知し(図7のS190参照)、本処理を終了する。
 第2判定においてストライプビットが「ON」の場合(S244:YES)、ストレージコントローラ62は、次の処理を実行する。
 ストレージコントローラ62は、オフロードビットが「ON」であるか否か判定する(S246)。オフロードビットは、ストライプグループに属する複数のデータのXORを、ストレージコントローラ62とFMコントローラ116のどちらで算出するかを示す。オフロードビット「ON」は、FMコントローラ116で算出することを示し、オフロードビット「OFF」は、ストレージコントローラ62で算出することを示してよい。オフロードビットは、ストレージパッケージ54の共有メモリ68に格納されてよい。
 オフロードビットは、ストレージシステム52の状況に応じて自動的に変更されてよい。ストレージコントローラ62の処理負荷が高い場合、オフロードビットは「ON」に変更されてよい。ストレージコントローラ62の処理負荷が高くなる一例としては、業務利用等の通常I/O処理が高い場合などがある。FMコントローラ116の処理負荷が高い場合、オフロードビットは「OFF」に変更されてよい。FMコントローラ116の処理負荷が高くなる一例としては、ストレージコントローラ62に対するFMパッケージ80の数が少ない場合などがある。
 以下、オフロードビットが「OFF」の場合(S246:OFF)について説明する。
 ストレージコントローラ62は、対象ストライプグループ内のデータを、各FMパッケージ80からリードし、ストレージパッケージ54のバッファメモリ58に格納する(S248)。このデータは、バッファメモリ58に代えて、キャッシュメモリ60に格納されてもよい。対象ストライプグループのIDは、デフラグ要求の引数の論理アドレスに基づき、論理VOL管理テーブル72及びPG管理情報70から検索することができる。
 次に、ストレージコントローラ62は、バッファメモリ58に格納されたデータを、デフラグ要求に従って入れ替え、その入れ替えたデータをキャッシュメモリ60に格納する(S250)。バッファメモリ58に代えて、キャッシュメモリ60にデータが格納されている場合、ストレージコントローラ62は、キャッシュメモリ60に格納されたデータを、デフラグ要求に従って入れ替え、その入れ替えたデータをキャッシュメモリ60の新たに確保した領域に格納してよい。
 次に、ストレージコントローラ62は、全てのデフラグ対象のデータについて入れ替え処理を完了後、入れ替え処理後のストライプグループの各データを用いて更新後パリティを生成する(S252)。S250の処理とS252の処理とは、非同期に実行されてもよい。
 次に、ストレージコントローラ62は、PG IDに対応するストライプグループ管理テーブル132から、そのストライプグループに対応するパリティ格納ドライブID138を特定する。そして、ストレージコントローラ62は、更新後パリティを、その特定したパリティ格納ドライブID138のFMパッケージ80へ格納する。
 次に、ストレージコントローラ62は、デフラグ完了通知をファイルコントローラ50へ送信し(S190)、本処理を終了する。
 以下、オフロードビットが「ON」の場合(S246:ON)について説明する。
 ストレージコントローラ62は、デフラグIDに係る移動対象データを有するFMパッケージ80に対して、実施例1で図8Aを用いて説明したように、データ移動処理を実行する(S256)。
 すなわち、異なるFMパッケージ80間でデータを移動する場合、ストレージコントローラ62は、実施例1で説明したように、移動元のFMパッケージ80からデータをリードしてバッファメモリ58に格納し、そのバッファメモリ58に格納したデータを、移動先のFMパッケージ80に格納する。
 同一のFMパッケージ80でデータを移動する場合、ストレージコントローラ62は、実施例1の図8Cを用いて説明したように、その同一のFMパッケージ80の論理物理マップ114において、移動元LBA172に対応するPBA174と移動先LBA172に対応するPBA174を交換する。
 全ての移動対象のデータについてデータ移動処理を完了した後、ストレージコントローラ62は、次の処理を実行する。
 ストレージコントローラ62は、ストライプグループに属する更新前パリティが格納されているFMパッケージ80を特定する(S258)。
 ストレージコントローラ62は、各FMパッケージ80に対し、このストライプグループに属する更新後データを、その特定したFMパッケージ80へ転送するよう指示する(S260)。この指示を受けたFMパッケージ80は、そのストライプグループに属する自分の更新後データを、その特定したFMパッケージ80へ転送する。
 全ての転送が完了した後、ストレージコントローラ62は、その特定したFMパッケージ80に対して、更新後パリティの生成を指示する(S262)。この指示を受けたFMパッケージ80は、各FMパッケージ80から転送された更新後データに基づいて更新後パリティを生成し、この更新後パリティで更新前パリティを置換する。
 その後、ストレージコントローラ62は、図7のS188と同様のデータ移動確定処理を実行する(S264)。そして、ストレージコントローラ62は、デフラグ完了通知をファイルコントローラ50へ送信し(S266)、本処理を終了する。
 実施例2によれば、次の効果のうちの少なくとも1つを得ることができる。
(1)必要最低限のデータコピーのみ実施すればよいため、デフラグ処理時のデータコピー量を抑制することができる。
(2)移動先と移動元のデータが同一のFMパッケージに存在する場合において、FMパッケージ間におけるデータ転送を抑制できる。これにより、ストレージパッケージ及びFMパッケージを接続する通信路におけるデータ転送負荷を軽減できる。
(3)FMパッケージ側にデータコピー処理をオフロードすることにより、ストレージコントローラの処理負荷を低減させることができる。
(4)デフラグ処理の対象となるデータの配置等に合わせて、適切な方法で更新後パリティが生成される。これにより、更新後パリティの生成に関する処理負荷及び通信負荷等を低減できる。
 実施例3を説明する。その際、実施例1及び2との相違点を主に説明し、実施例1及び2との共通点については説明を省略又は簡略する。
 図10は、実施例3に係るデフラグ管理情報270のデータ構成例を示す図である。
 デフラグ管理情報270は、デフラグ非同期処理において利用される情報である。デフラグ非同期処理とは、ファイルコントローラ50からデフラグ要求を受信したストレージコントローラ62は、実際のデフラグ処理を完了する前に、完了通知をファイルコントローラ50へ返し、その後、実際のデフラグ処理を実行する処理である。すなわち、デフラグ非同期処理では、ストレージコントローラ62は、実際のデフラグ処理が完了するタイミングとは非同期に、デフラグ要求に対する完了通知をファイルコントローラ50に送信する。これにより、デフラグ要求に対する応答性能が向上する。デフラグ要求に対する応答性能の向上を要する一例としては、通常業務中にデフラグ処理が頻繁に発生するような場合などがある。
 デフラグ管理情報270には、同一のFMパッケージ80内のデフラグ処理を管理する第1デフラグテーブル272及び第1デフラグ発生ビット278と、異なるFMパッケージ80間のデフラグを管理する第2デフラグテーブル271及び第2デフラグ発生ビット269とが、含まれてよい。デフラグ管理情報270は、ストレージパッケージ54の共有メモリ68に格納されてよい。
 第1デフラグテーブル272は、フィールド値として、デフラグID273と、移動元論理アドレス274と、移動先論理アドレス276とを有してよい。同様に、第2デフラグテーブル271は、フィールド値として、デフラグID275と、移動元論理アドレス277と、移動先論理アドレス279とを有してよい。
 ストレージコントローラ62は、受信したデフラグ要求に対応するデフラグIDと、そのデフラグ要求の引数に設定されている移動元論理アドレス及び移動先論理アドレスとを、第1デフラグテーブル272又は第2デフラグテーブル271に格納する。
 ストレージコントローラ62は、デフラグ要求における移動元論理アドレスと移動先論理アドレスとが同一のFMパッケージ80に属する場合、それらの情報を、第1デフラグテーブル272に格納すると共に、第1デフラグ発生ビット278をONに変更する。
 ストレージコントローラ62は、デフラグ要求における移動元論理アドレスと移動先論理アドレスとが異なるFMパッケージ80に属する場合、それらの情報を、第2デフラグテーブル271に格納すると共に、第2デフラグ発生ビット269をONに変更する。
 デフラグテーブル及びデフラグ発生ビットは、ストレージシステムに1つであってもよいし、FMパッケージ毎であってもよい。
 図11は、実施例3に係るデフラグ処理の一例を示すフローチャートである。
 ストレージコントローラ62は、デフラグ要求リストを受信すると、そのデフラグ要求リストに含まれるデフラグ要求を解析する(S280)。この処理は、図7のS182の処理と同様である。
 ストレージコントローラ62は、デフラグ要求リストの全てのデフラグ要求の移動元LBAと移動先LBAが同一のFMパッケージ80に属するか否かを判定する(S281)。
 全てのデフラグ要求の移動元LBAと移動先LBAが同一のFMパッケージ80に属する場合(S281:YES)、ストレージコントローラ62は、次の処理を実行する。すなわち、ストレージコントローラ62は、デフラグ要求リストに含まれるデフラグ要求に係る情報を、第1デフラグテーブル272に格納すると共に、第1デフラグ発生ビット278を「ON」に変更する(S283)。そして、S190の処理へ進む。
 デフラグ要求の移動元LBAと移動先LBAが異なるFMパッケージ80に属する場合(S281:NO)、ストレージコントローラ62は、次の処理を実行する。すなわち、ストレージコントローラ62は、デフラグ要求リストに含まれるデフラグ要求に係る情報を、第2デフラグテーブル271に格納すると共に、第2デフラグ発生ビット269を「ON」に変更する(S282)。そして、S190の処理へ進む。
 S190の処理において、ストレージコントローラ62は、ファイルコントローラ50に対して、デフラグ完了通知を送信する(S284)。そして、ストレージコントローラ62は、デフラグ処理を実行する(S285~S288)。S285~S288のデフラグ処理は、図7のS184~S188で説明した通りである。
 ストレージコントローラ62は、デフラグ完了通知を送信した後(S284)、すぐにS285の処理へ進んでもよい。又は、ストレージコントローラ62は、デフラグ管理情報270にデフラグ要求に係る情報が所定数以上格納された後、S285の処理へ進んでもよい。又は、ストレージコントローラ62は、一定の周期で、第1デフラグ発生ビット278(第2デフラグ発生ビット269)を確認し、そのビットが「ON」になった後、S285の処理へ進んでもよい。
 ストレージコントローラ62は、S288の処理の完了後、デフラグ管理情報を更新する(S290)。例えば、ストレージコントローラ62は、デフラグ完了済みのデフラグIDのレコードを、第1デフラグテーブル272又は第2デフラグテーブル271から削除する。
 そして、ストレージコントローラ62は、第1デフラグテーブル272のレコードを削除した後、その第1デフラグテーブルに272にレコードが残っているか否か確認してよい。そして、第1デフラグテーブルにレコードが残っていない場合、ストレージコントローラ62は、第1デフラグ発生ビット278を「OFF」に変更してよい。ストレージコントローラ62は、第2デフラグテーブル271及び第2デフラグ発生ビット269についても同様の処理を行ってよい。
 ストレージコントローラ62は、デフラグ管理情報270に含まれる全てのデフラグ発生ビット278、269が「OFF」になった場合、デフラグ処理が完了したと判定してよい。
 図12は、実施例3に係るI/O処理の一例を示すフローチャートである。
 実施例3では、ファイルコントローラ50にデフラグ完了通知が送信されても、実際のデフラグ処理が完了していない場合が発生する。そこで、ストレージコントローラ62は、ファイルコントローラ50からI/O要求を受信した場合、次に示すような処理を行ってよい。
 ストレージコントローラ62は、第1デフラグ発生ビット278、及び、第2デフラグ発生ビット269の少なくとも一方が「ON」であるか否かを判定する(S302)。FMパッケージ80毎にデフラグテーブル及びデフラグ発生ビットを有する場合、ストレージコントローラ62は、I/O対象のFMパッケージ80に係る第1デフラグ発生ビット278及び第2デフラグ発生ビット269ついて判定してよい。
 第1デフラグ発生ビット278、及び、第2デフラグ発生ビット269の何れも「OFF」の場合(S302:NO)、ストレージコントローラ62は、通常のI/O処理を実行し(S316)、本処理を完了する。
 第1デフラグ発生ビット278、及び、第2デフラグ発生ビット269の少なくとも一方が「ON」の場合(S302:YES)、ストレージコントローラ62は、次の処理を実行する。
 ストレージコントローラ62は、I/O対象の論理アドレスが、デフラグ処理の対象に含まれているか否かを判定する(S304)。例えば、ストレージコントローラ62は、第1デフラグテーブル272及び第2デフラグテーブル271の移動元論理アドレス274及び277のそれぞれから、I/O対象の論理アドレスを検索して、この判定を行う。
 第1デフラグ発生ビット278のみが「ON」の場合、ストレージコントローラ62は、第1デフラグテーブル272の移動元論理アドレス274のみを検索対象としてよい。第2デフラグ発生ビット269のみが「ON」の場合、ストレージコントローラ62は、第2デフラグテーブル271の移動元論理アドレス277のみを検索対象としてよい。
 なお、FMパッケージ80毎に第1デフラグテーブル272及び第1デフラグ発生ビット278を有し、I/O対象のFMパッケージ80に係る第1デフラグ発生ビット278のみが「ON」の場合、ストレージコントローラ62は、そのFMパッケージ80に係る第1デフラグテーブル272の移動元論理アドレス274のみを検索対象としてよい。
 I/O対象の論理アドレスがデフラグ処理の対象に含まれていない場合(S304:NO)、ストレージコントローラ62は、上記のS316と同様、通常のI/O処理を実行し、本処理を完了する。
 I/O対象の論理アドレスがデフラグ処理の対象に含まれている場合(S304:YES)、ストレージコントローラ62は、I/O処理の種別がリード又はライトの何れであるかを判定する(S306)。
 I/O処理の種別がライトの場合(S306:ライト)、ストレージコントローラ62は、次の処理を実行する。
 ストレージコントローラ62は、図11に示すデフラグ処理を実行した後(S308)、デフラグ管理情報270を更新する(S309)。そして、ストレージコントローラ62は、ライト処理を実行し(S310)、本処理を完了する。
 I/O処理の種類がリードの場合(S306:リード)、ストレージコントローラ62は、次の処理を実行する。
 ストレージコントローラ62は、デフラグ管理情報270を参照し、リード要求で指定されたLBAに対応する移動先LBAを特定する(S312)。そして、ストレージコントローラ62は、その移動先LBAにアクセスしてデータをリードし(S314)、本処理を完了する。
 実施例3によれば、次の効果のうちの少なくとも1つを得ることができる。
(1)必要最低限のデータコピーのみ実施すればよいため、デフラグ処理時のデータコピー量を抑制することができる。
(2)移動先と移動元のデータが同一のFMパッケージに存在する場合において、FMパッケージ間におけるデータ転送を抑制できる。これにより、ストレージパッケージ及びFMパッケージを接続する通信路におけるデータ転送負荷を軽減できる。
(3)デフラグ処理の実行中における、通常のI/O処理の性能低下を抑制することができる。
 実施例4を説明する。その際、実施例1乃至3との相違点を主に説明し、実施例1乃至3との共通点については説明を省略又は簡略する。
 図13は、実施例4に係る差分スナップショット適用時におけるライト処理の概要を示す模式図である。
 図13の構成は、図2の構成と比較し、ホスト51が、ファイルコントローラ50ではなく、ストレージパッケージ54に直接接続されている点において相違するが、それ以外については同様であってよい。また、ストレージパッケージ54の共有メモリ68は、スナップショット管理情報322と、スナップショットモード325とを更に有する。
 スナップショット管理情報322は、正VOL管理情報390と、副VOL管理情報392と、プール管理情報324と、を含む。
 正VOL管理情報390は、スナップショット元の論理VOLである正VOL330を管理するための情報である。副VOL管理情報392は、正VOL330の複製に相当する論理VOLである副VOL332を管理するための情報である。正VOL330及び副VOL332のうち少なくとも副VOL332が、仮想的な論理VOLでよい。
 プール管理情報324は、正VOL330と副VOL332の差分データが格納されるプール339を管理するための情報である。
 スナップショットモード325は、ストレージシステム52において、スナップショットが適用されている場合に「ON」であり、スナップショットが適用されていない場合に「OFF」であってよい。スナップショットモード325は、正VOL毎に存在してもよいし、複数の正VOLに共通でもよい。
 論理VOL管理テーブル329は、図5の論理VOL管理テーブル72に示すフィールド値に加え、VOL種別に関するフィールド値を有してよい。VOL種別は、論理VOL ID140の論理VOLが、正VOL、副VOL、又は、それ以外の何れであるかを示す値であってよい。
 図13において、ホスト51が、正VOL330に対して、データYのライト要求を発行した場合の例を説明する。その際、混同を避けるために、正VOL330、副VOL332及びプール339の各々についての単位論理領域を「セグメント」と言い、論理空間(サブ論理空間)についての単位論理領域を「論理ページ」と言う。特に、正VOL330及び副VOL332の各々のセグメントを「仮想セグメント」と言い、プール339のセグメントを「プールセグメント」と言う。また、少なくとも副VOLの仮想セグメントとプールセグメントは、2以上の領域に区切られてもよく、各々の領域を「サブセグメント」と言うことができる。プールセグメント又はプールサブセグメントと論理ページは1:1で対応してよい。
 データYのライト先仮想セグメント(正VOL330における仮想セグメント)334は、プールセグメント1336を参照している。このプールセグメント1336は、副VOL332aの仮想セグメント335a及び副VOL332bの仮想セグメント335bからも参照されている。すなわち、プールセグメント1336は、正VOL330、副VOL332a及び332bから共有されている。
 この場合、ストレージコントローラ62は、次の処理を実行する。
 (K1)ストレージコントローラ62は、プールセグメント1336内のデータを、別のプールセグメント(コピー先プールセグメント)1337にコピーする。
 (K2)ストレージコントローラ62は、仮想セグメント335a及び335bの参照先を、コピー先プールセグメント1337に切り替える。
 (K3)ストレージコントローラ62は、仮想セグメント334(プールセグメント1336)に、データYを上書きする。
 コピー元プールセグメント1336からコピー先プールセグメント1337へのデータのコピーは、以下の仮想コピー処理でよい。仮想コピー処理は、次のように行われてよい。
 (L1)ストレージコントローラ62は、コピー元プールセグメント1336に割り当てられている論理ページ336と同じFMパッケージ80内に、コピー先の論理ページを確保可能か否か判定する。例えば、その同じFMパッケージ80内に、いずれの物理ページも割り当てられていない空きの論理ページ(例えば337)があれば、(L1)の判定結果は肯定、すなわち、コピー先の論理ページを確保可能との判定結果でよい。
 (L2)(L1)の判定結果が肯定の場合、ストレージコントローラ62は、コピー元LBA(コピー元の論理ページ336のLBA)とコピー先LBA(確保されたコピー先の論理ページ337のLBA)とを指定した仮想コピー指示を、FMパッケージ80に送信する。そのFMパッケージ80内のFMコントローラ116が、仮想コピー指示を受信し、その仮想コピー指示に応答して、論理物理マップ114を更新する。具体的には、FMコントローラ116が、コピー先LBAに、コピー元LBAに対応付けられているPBAと同じPBAを対応付ける。
 ストレージコントローラ62は、新たに確保された論理ページ337を含むストライプグループ、及び、データYが上書きされたデータを含むストライプグループのそれぞれについて、更新後パリティを生成してよい。ライトデータのサイズと、仮想コピーのサイズとは、一致していなくてもよい。
 図14は、実施例4に係るプール管理情報340の一例を示すデータ構成図である。
 プール管理情報340は、1のプールを管理するための情報である。したがって、ストレージコントローラ62は、プール毎に、プール管理情報340を有してよい。
 プール管理情報340は、シンプロビジョニング管理情報342と、スナップショット管理情報366とを有する。
 シンプロビジョニング管理情報342は、仮想VOLに割り当てられているプールセグメントを管理するための情報である。仮想VOLは、シンプロビジョニングに基づいて構成される仮想的な論理VOLである。
 シンプロビジョニング管理情報342は、セグメントサイズ管理情報344と、プール構成情報346と、シンプロビジョニング管理テーブル347と、シンプロビジョニングに係る空きセグメントキュー358とを含む。
 セグメントサイズ管理情報344は、プールセグメントのサイズを示す情報である。
 プール構成情報346は、プールセグメントを管理するための情報である。本実施例では、プールセグメントは、1つの論理ページが割り当てられた論理領域であるが、2以上のFMパッケージ80が提供する2以上の論理ページが割り当てられた論理領域でもよい。
 シンプロビジョニング管理テーブル347は、シンプロビジョニングに係る各プールセグメントに関する情報を有する。シンプロビジョニング管理テーブル347は、フィールド値として、セグメントID348と、プールID350と、プールLBA352と、ストライプグループID354と、スナップショットビット356と、有する。
 セグメントID348は、プールセグメントを識別するための情報である。プールID350は、セグメントID348のプールセグメントが属するプールである。プールLBA352は、セグメントID348のプールセグメントを示すLBAである。ストライプグループID354は、セグメントID348のプールセグメントが属するストライプグループのIDである。
 スナップショットビット356は、セグメントID348のプールセグメントが、後述するスナップショットに使用されているか否かを示す情報である。スナップショットビット356「ON」は、セグメントID348のプールセグメントがスナップショットに使用されていることを示す。スナップショットビット356「OFF」は、セグメントID348のプールセグメントがスナップショットに使用されていないことを示す。
 シンプロビジョニングに係る空きセグメントキュー358は、空のセグメントを管理する。
 図14に示すシンプロビジョニングに係る空きキュー358は、シンプロビジョニングに係る空きキューの先頭ポインタ360に、セグメントID362「5」と、セグメントID364「6」とが、エンキューされていることを示す。つまり、セグメントID「5」と「6」のセグメントが空いていることを示す。
 スナップショット管理情報366は、サブセグメントサイズ管理情報374と、スナップショット管理テーブル367と、スナップショットに係る空きサブセグメントキュー376とを含む。
 サブセグメントサイズ管理情報374は、スナップショットの単位であるサブセグメントのサイズを示す情報である。
 スナップショット管理テーブル367は、スナップショットに係る各サブセグメントに関する情報を有する。
 スナップショット管理テーブル367は、フィールド値として、セグメントID368と、サブセグメントID370と、プールLBA372と、共有数カウンタ375と、を有する。
 サブセグメントID370は、セグメントID368のセグメントから分割されたサブセグメントを識別するための情報である。プールLBA372は、サブセグメントID370のサブセグメントを示すLBAである。共有数カウンタ375は、サブセグメントID370のサブセグメントが、幾つの副VOLから共有されているかを示す値である。サブセグメントに対応するプールLBA372と、セグメントに対応するプールLBA352とは、同じ論理空間で管理されてもよいし、異なる論理空間で管理されてもよい。
 スナップショットに係る空きサブセグメントキュー376は、空のサブセグメントを管理する。
 図14に示すスナップショットに係る空きサブセグメントキュー376は、スナップショットに係る空きサブセグメントキューの先頭ポインタ378に、サブセグメントID380「1」と、サブセグメントID382「2」とが、エンキューされていることを示す。つまり、サブセグメントID「1」と「2」のサブセグメントが空いていることを示す。
 図15は、実施例4に係る正VOL管理情報390、及び、副VOL管理情報392の一例を示すデータ構成図である。
 正VOL管理情報390は、1つの正VOLを管理するための情報である。副VOL管理情報392は、1つの副VOLを管理するための情報である。
 正VOL管理情報390は、正VOLを構成する仮想セグメントの各々について、仮想LBA398と、プールLBA400と、共有ビット401と、を有する。仮想LBA398は、仮想セグメントのLBAである。プールLBA400は、仮想セグメントに対応付けられているプールセグメントのLBAである。
 仮想LBA398は、スナップショットのサブセグメントの単位で管理されてもよい。例えば、仮想LBA398「0x0000」にサブセグメントのサイズを加算したものを、次の仮想LBA398「0x0300」としてもよい。
 共有ビット401は、仮想セグメントに対応付けられているプールセグメントが、副VOLと共有されているか否かを示す情報である。例えば、共有ビット401「1」の仮想セグメントに対応付けられているプールセグメントの少なくとも一部は、副VOLと共有されている。共有ビット401「0」の仮想LBA398に対応付けられているプールセグメントは、副VOLと共有されていない(非共有)。
 正VOL管理情報390は、副VOL ID情報402と、プールID情報404とを有する。副VOL ID情報402は、この正VOL管理情報390の正VOLに対応する副VOLのIDを有する。プールID情報404は、この正VOL管理情報390の正VOLに割り当てられるプールセグメントのソースとなるプールのIDを有する。
 副VOL管理情報392は、副VOLを構成する仮想サブセグメントの各々について、仮想LBA406と、プールLBA408とを有する。プールLBA408は、仮想サブセグメントに対応付けられているプールサブセグメントのLBAである。正VOL ID情報410は、この副VOL管理情報392の副VOLに対応する正VOLのIDを有する。
 図16は、実施例4に係るライト処理の一例を示すフローチャートである。
 ストレージコントローラ62は、ホスト51からのライト要求に従うライト先仮想VOLについてのスナップショットモード325が「ON」であるか否かを判定する(S422)。
 このスナップショットモード325が「OFF」の場合(S422:NO)、ストレージコントローラ62は、通常のライト処理(S426)を実行し、本処理を完了する。S426では、ライト要求に従うライト処理が行われる。
 このスナップショットモード325が「ON」の場合(S422:YES)、ストレージコントローラ62は、ライト先仮想LBA(ライト先として指定されたLBA)が他の仮想VOLと共有されているか否かを判定する(S424)。
 ライト先仮想VOLが正VOLの場合、ストレージコントローラ62は、正VOL管理情報390のライト先仮想LBA398に対応する共有ビット401が「共有」を示すか、「非共有」を示すかを判定する。
 ライト先仮想VOLが副VOLの場合、ストレージコントローラ62は、副VOL管理情報392のライト先仮想LBA406に対応するプールLBA408が、この副VOL管理情報392に対応する正VOL管理情報390の何れかのプールLBA400と一致しているか否か判定する。ここで、一致している場合、ストレージコントローラ62は「共有」と判定する。一致していない場合、ストレージコントローラ62は、更に、スナップショット管理情報366から、このプールLBA408と一致するプールLBA372を検索し、そのプールLBA372に対応する共有数カウンタ375が「0」以外であるか否かを判定する。ここで、一致するプールLBA372を発見し、且つ、共有数カウンタ275が「0」以外の場合、ストレージコントローラ62は「共有」と判定する。それ以外の場合、ストレージコントローラ62は「非共有」と判定する。
 ライト先仮想LBAが「非共有」の場合(S424:NO)、ストレージコントローラ62は、通常のライト処理を実行し(S426)、本処理を完了する。
 ライト先仮想LBAが「共有」の場合(S424:YES)、ストレージコントローラ62は、FMパッケージ80に対して仮想コピー処理及びライト処理を行い(S428)、本処理を完了する。この処理については後述する(図17参照)。
 図17は、実施例4に係る仮想コピー処理及びライト処理の一例を示すフローチャートである。
 ストレージコントローラ62は、仮想コピー元のFMコントローラ116に対して、自分のFMパッケージ80内に仮想コピー用のLBAを確保可能か否か問い合わせる(S442)。この問い合わせを受けたFMパッケージ80は、論理ブロック情報164を参照して、そのLBAを確保可能か否か判定し、その判定結果を、ストレージコントローラ62に返す。
 仮想コピー元のFMコントローラ116の判定が肯定的な場合(S442:YES)、ストレージコントローラ62は、次の処理を実行する。ストレージコントローラ62は、仮想コピー元のFMコントローラ116に対して、仮想コピーの実行を指示する(S444)。この指示を受けたFMパッケージ80は、仮想コピーを実行する。すなわち、FMパッケージ80は、論理物理マップ114において、仮想コピー先のためのLBAを確保し、その確保したLBAに、仮想コピー元のPBAを対応付ける。そして、ストレージコントローラ62は、S448の処理へ進む。
 コピー元のFMコントローラ116の判定が否定的な場合(S442:NO)、ストレージコントローラ62は、次の処理を実行する。ストレージコントローラ62は、別のFMコントローラ116に仮想コピー用のLBAを確保する。そして、ストレージコントローラ62は、仮想コピー元のLBAの示すデータを、その仮想コピー先のLBAを確保したFMパッケージ80に送信する(S446)。このデータの送信は、ストレージパッケージ54のバッファメモリ58を経由して行われてよい。又は、このデータの送信は、ストレージパッケージ54のバッファメモリ58を経由せず、FMパッケージ80同士が接続されているスイッチ78のみを経由して行われてもよい(実施例5参照)。そして、ストレージコントローラ62は、S448の処理へ進む。
 S448の処理において、ストレージコントローラ62は、ライト対象が正VOLであるか否か判定する(S448)。ストレージコントローラ62は、S422の処理で正VOL又は副VOLの何れであるかを検索した情報を用いて、この判定を行ってよい。
 ライト対象が正VOLである場合(S448:YES)、ストレージコントローラ62は、次の処理を実行する。ストレージコントローラ62は、ライト対象の仮想LBA398に対応するプールLBA400を共有している全ての副VOLのプールLBA408を、仮想コピー先のプールLBAへ変更する(S450)。ストレージコントローラ62は、ライト対象の仮想LBAに対応するプールLBA400を共有している副VOLを、次のように検索してよい。すなわち、ストレージコントローラ62は、正VOL管理情報390の副VOL ID情報402が示す副VOL IDを特定する。そして、ストレージコントローラ62は、その特定した副VOL IDに係る副VOL管理情報392において、ライト対象の仮想LBAのプールLBA400と同じプールLBA408を検索する。そして、ストレージコントローラ62は、その同じプールLBA408を変更した後、共有ビット401を「非共有」に変更する。ストレージコントローラ62は、共有ビット401が「非共有」となった時点で検索を中止し、プールLBAの変更の処理を完了する。そして、ストレージコントローラ62は、S454の処理へ進む。
 ライト対象が副VOLである場合(S448:NO)、ストレージコントローラ62は、次の処理を実行する。ストレージコントローラ62は、副VOLの共有されているプールLBA408を、仮想コピー先のプールLBAへ変更し、仮想コピー元の正VOL IDのその共有されていたプールLBA400に対応する共有ビット401を「非共有」にする(S452)。そして、ストレージコントローラ62は、S454の処理へ進む。
 S454の処理において、ストレージコントローラ62は、通常通りの上書き処理を実行する(S454)。共有データの退避が完了したからである。
 そして、ストレージコントローラ62は、図7の場合と同様に、パリティ更新処理(S456)及び、データ移動確定処理(S458)を実行し、本処理を完了する。
 実施例5を説明する。その際、実施例1乃至4との相違点を主に説明し、実施例1乃至4との共通点については説明を省略又は簡略する。
 図18は、実施例5に係るFMパッケージ80間でデータ移動処理及び更新後パリティ生成処理を行う場合の概要を示す模式図である。
 実施例1に示すデフラグ処理では、異なるFMパッケージ80間におけるデータ移動を、ストレージパッケージ54のバッファメモリ58を経由して行う。
 これに対して、実施例5に係るデフラグ処理では、異なるFMパッケージ80間におけるデータ移動を、ストレージパッケージ54のバッファメモリ58を経由せず、FMパッケージボックス76の有するスイッチ78を経由して行う。
 また、実施例5に係るデフラグ処理では、或るFMパッケージ80で生成された中間パリティを、ストレージパッケージ54のバッファメモリ58を経由せず、FMパッケージボックス76の有するスイッチ78を経由して、変更前パリティを有するFMパッケージ80に送信する。
 以下、図18を参照しながら、FMパッケージ80bにおける論理ページ462に対応するデータを、FMパッケージ80aに移動させる処理について説明する。
 実施例5に係る処理は、実施例1と比較して、図8AのS202と、図8BのS210の処理が相違し、それ以外の処理については、実施例1と概ね同じである。よって、以下では、相違点の処理のみ説明する。
 図8AのS202の処理において、ストレージコントローラ62は、移動元のFMパッケージ80bに対して、移動先のFMパッケージ80aのIDを送信する。
 移動元のFMパッケージ80bのコントローラは、移動先のFMパッケージ80aに対して、移動させるデータを格納するための領域を確保するように指示する。又は、ストレージコントローラ62が、移動先のFMパッケージ80aに、その領域を確保するように指示してもよい。
 そして、移動元のFMパッケージ80bのコントローラは、移動先のFMパッケージ80aに対して、ライトコマンドを発行すると共に、そのデータを送信する。そのデータは、スイッチ78を経由して、移動先のFMパッケージ80aに送信される。
 図8BのS210の処理において、S202と同様に、中間パリティ464を、更新前パリティ466を有するFMパッケージ80cに転送する。若しくは、FMパッケージボックス76内の複数のFMパッケージ80の中から、代表のFMパッケージ80を設定し、上述のS200、S202、S208及びS210に係る処理、次のように行ってもよい。
 ここでは、FMパッケージ80cが代表に設定されたとして説明する。代表のFMパッケージ80cは、FMパッケージボックス76の中で1つであってもよいし、複数であってもよい。代表のFMパッケージ80cを設定した場合、PG管理情報70は、ストレージパッケージの共有メモリ68に格納されてもよいし、代表のFMパッケージ80cのメインメモリ102に格納されてもよい。
 図8AのS200の処理において、PG管理情報70がストレージコントローラ62の共有メモリ68に格納されていない場合、移動元のFMパッケージ80bは、代表のFMパッケージ80cに問い合わせる。
 図8AのS202の処理において、移動元のFMパッケージ80bは、代表のFMパッケージ80cにデータ転送開始準備コマンドを発行する。このデータ転送開始準備コマンドを受けた代表のFMパッケージ80cは、移動先のFMパッケージ80aに対して、移動元のデータの格納領域を確保する旨のコマンドを送信する。そして、代表のFMパッケージ80cは、移動元のFMパッケージ80bに対して、移動先のFMパッケージ80aのIDを送信する。その移動先のFMパッケージ80aのIDを受信した移動元のFMパッケージ80bは、移動対象のデータを、その移動先のFMパッケージ80aに対して送信する。
 図8BのS208において、PG管理情報70がストレージコントローラ62の共有メモリ68に格納されていない場合、中間パリティ464を生成したFMパッケージ80aは、代表のFMパッケージ80cに問い合わせる。
 図8BのS210において、FMパッケージ80aは、上記のS202と同様に、中間パリティ464を、更新前パリティ466を有するFMパッケージ80cに送信する。
 実施例5によれば、次の効果のうちの少なくとも1つを得ることができる。
(1)必要最低限のデータコピーのみ実施すればよいため、デフラグ処理時のデータコピー量を抑制することができる。
(2)リード処理及びライト処理を繰り返すと空き領域の細分化が起こるような追記方式のストレージシステムでのデフラグ処理において、ストレージコントローラを経由せずにデフラグ処理を実行できる。
(3)FMパッケージ側にデータコピー処理をオフロードすることにより、ストレージコントローラの処理負荷を低減させることができる。
 上述した実施例は、本発明の説明のための例示であり、本発明の範囲をそれらの実施例にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。例えば、パリティグループを構成する記憶デバイスの数が、ストライプグループを構成するストライプの数より多くてもよい。
 52:ストレージシステム 54:ストレージパッケージ 62:ストレージコントローラ62 80:FMパッケージ 116:FMコントローラ
 

 

Claims (13)

  1.  複数の記憶デバイスと、
     前記複数の記憶デバイスを制御するストレージコントローラと
    を有し、
     前記複数の記憶デバイスの各々は、サブ論理空間を前記ストレージコントローラに提供し、当該記憶デバイス内の物理アドレスと論理アドレスとの対応関係を管理し、
     前記ストレージコントローラは、
      前記複数の記憶デバイスがそれぞれ提供する複数のサブ論理空間に基づく空間である論理空間を管理し、
      前記論理空間内の複数のデータの内の1つである第1のデータと前記複数のデータの内の1つである第2のデータとを交換する場合、前記第1のデータ及び前記第2のデータが同一の記憶デバイスに格納されているか否かを判定する第1判定を行い、
     前記第1判定の結果が肯定である場合、当該記憶デバイスにおいて、前記第1のデータが格納されている物理領域の物理アドレスと前記第2のデータが格納されている物理領域の物理アドレスとをそれぞれ変更せずに、前記第1のデータに対応する論理アドレスと前記第2のデータに対応する論理アドレスとを入れ替える
    ストレージシステム。
  2.  前記複数の記憶デバイスの各々が、複数の物理領域を有する物理記憶媒体を有し、
     前記論理空間は、複数の論理領域を有し、
     前記複数の記憶デバイスの各々が、物理領域と論理領域の対応関係を管理する媒体コントローラを有し、
     前記ストレージコントローラは、前記第1判定の結果が肯定である場合、前記第1のデータに対応する論理アドレスと前記第2のデータに対応する論理アドレスとを指定した交換指示を前記記憶デバイスへ送信し、
     前記交換指示を受信した記憶デバイスの媒体コントローラは、デバイス内交換処理を行い、
     前記デバイス内交換処理は、前記第1のデータ及び前記第2のデータの両方の移動が不要な処理であり、
      前記第1のデータに対応する論理アドレスが属する第1の論理領域に割り当てられている第1の物理領域に代えて、前記第2のデータに対応する論理アドレスが属する第2の論理領域に割り当てられている第2の物理領域を、前記第1の論理領域に割り当てる処理と、
      前記第2の物理領域に代えて、前記第1の物理領域を前記第2の論理領域に割り当てる処理と、を含む、
    請求項1に記載のストレージシステム。
  3.  前記複数の記憶デバイスによって、2以上のデータに基づき生成されるパリティを用いるRAIDグループが構成されており、
     前記論理空間が、それぞれ複数の論理領域が属する複数のストライプグループに分割されており、
     前記複数のストライプグループの各々が有する複数の論理領域には、2以上のデータと所定数のパリティとがそれぞれ格納され、
     前記交換指示を受信した記憶デバイスの媒体コントローラは、前記第1のデータ及び前記第2のデータに基づいて、前記第1の論理領域が属するストライプグループ内のパリティと前記第2の論理領域が属するストライプグループ内のパリティとの両方の更新に用いられる中間パリティを生成する
    請求項2に記載のストレージシステム。
  4.  前記第1判定の結果が否定の場合、
     前記第2の記憶デバイスの媒体コントローラは、前記第2のデータ及び前記第1のデータに基づいて、前記第2の論理領域が属するストライプグループ内のパリティの更新に用いられる中間パリティを生成し、
     前記第1の記憶デバイスの媒体コントローラは、前記第1のデータ及び前記第2のデータに基づいて、前記第1の論理領域が属するストライプグループ内のパリティの更新に用いられる中間パリティを生成する
    請求項3に記載のストレージシステム。
  5.  前記ストレージコントローラは、メモリを有し、
     各記憶デバイスで生成された中間パリティは、前記メモリに格納され、
     前記ストレージコントローラは、前記メモリに格納された複数の中間パリティの内、同一の記憶デバイスに送信する複数の中間パリティを、1回のコマンドで前記記憶デバイスに送信する
    請求項3に記載のストレージシステム。
  6.  前記ストレージコントローラは、前記中間パリティを生成した記憶デバイスに対して、その記憶デバイスを含んだRAIDグループ内の記憶デバイスであってその生成した中間パリティの送信先である送信先記憶デバイスを示す送信先情報を送信し、
     前記送信先情報を受信した記憶デバイスの媒体コントローラは、その生成した中間パリティを、前記ストレージコントローラを経由せずに、その受信した送信先情報が示す記憶デバイスへ送信する
    請求項4に記載のストレージシステム。
  7.  前記複数の記憶デバイスの各々の物理記憶媒体は、NANDフラッシュメモリを有し、
     前記ストレージコントローラは、外部装置に接続されており、前記論理空間のデフラグコマンドを前記外部装置から受信し、前記デフラグコマンドに応答してデフラグ処理を実行し、
     前記デフラグ処理において、前記ストレージコントローラは、第1のデータと第2のデータの組毎に、前記第1判定を行い、
     前記第1判定の結果が否定である場合、前記第1のデータを格納する第1の記憶デバイスと前記第2のデータを格納する第2の記憶デバイスとの内の少なくとも一方に前記ストレージコントローラが要求を送信することで、デバイス間交換処理が行われ、
     前記デバイス間交換処理は、前記第1のデータ及び前記第2のデータの両方の移動が必要な処理であり、
      前記第1のデータが前記第1の記憶デバイスの物理領域から読み出され、前記第2の記憶デバイスの物理領域に書き込まれる処理と、
      前記第2のデータが格納されている物理領域に代えて、前記第1のデータの書き込み先の物理領域が、前記第2の記憶デバイスの媒体コントローラにより、前記第2の論理領域に割り当てられる処理と、
      前記第2のデータが前記第2の記憶デバイスの物理領域から読み出され、前記第1の記憶デバイスの物理領域に書き込まれる処理と、
      前記第1のデータが格納されている物理領域に代えて、前記第2のデータの書き込み先の物理領域が、前記第1の記憶デバイスの媒体コントローラにより、前記第1の論理領域に割り当てられる処理と、を含む、
    請求項3に記載のストレージシステム。
  8.  前記ストレージコントローラは、外部装置に接続されており、
     前記ストレージコントローラは、同一の記憶デバイス内におけるデータの交換に関する情報を含む第1の管理情報と、異なる記憶デバイス間におけるデータの交換に関する情報を含む第2の管理情報と、を更に有し、
     前記ストレージコントローラは、
      前記外部装置から、前記第1のデータと前記第2のデータとの交換要求を受信し、
      前記交換要求に応答して行う処理において、前記第1判定の結果が肯定である場合、前記第1の管理情報に、前記第1のデータに対応する論理アドレス及び前記第2のデータに対応する論理アドレスのセットを登録し、
      前記交換要求に応答して行う処理において、前記第1判定の結果が否定である場合、前記第2の管理情報に、前記第1のデータに対応する論理アドレス及び前記第2のデータに対応する論理アドレスのセットを登録し、
      前記外部装置に、前記交換要求に対する完了応答を送信し、
     前記ストレージコントローラは、前記外部装置に前記完了応答を送信した後に、
      前記第1の管理情報に登録されているデータを格納する記憶デバイスに対して、前記デバイス内交換処理に係る指示を送信し、
      前記第2の管理情報に登録されているデータを格納する少なくとも1の記憶デバイスに対して、前記デバイス間交換処理に係る指示を送信する
    請求項7に記載のストレージシステム。
  9.  前記ストレージコントローラは、前記外部装置から、前記第1の論理領域を対象とするライト要求を受信した場合であって、前記第1の論理領域が、前記第1の管理情報又は前記第2の管理情報の何れかに登録されている場合、前記第1の論理領域と前記第2の論理領域との間の交換処理が完了した後、前記ライト要求に関するライト処理を行う
    請求項8に記載のストレージシステム。
  10.  前記ストレージコントローラは、前記外部装置から、前記第1の論理領域を対象とするリード要求を受信した場合であって、前記第1の論理領域が、前記第1の管理情報又は前記第2の管理情報の何れかに登録されている場合、前記第1の論理領域の交換相手である前記第2の論理領域に係るデータをリードする
    請求項8に記載のストレージシステム。
  11.  前記ストレージコントローラは、前記第1の論理領域の属するストライプグループの更新後のパリティを、前記ストレージコントローラが生成するか、それとも、前記交換指示を送信した記憶デバイスの媒体コントローラに前記中間パリティを生成させるか、を判定する第2判定を行い、
     前記交換指示を受信した記憶デバイスの媒体コントローラは、前記ストレージコントローラの前記第2判定の結果に基づいて、前記中間パリティを生成するか否かを決定する
    請求項3に記載のストレージシステム。
  12.  前記複数の記憶デバイスの各々が、複数の物理領域を有する物理記憶媒体を有し、
     前記複数の記憶デバイスの各々が、物理領域と論理領域の対応関係を管理し、
     前記ストレージコントローラは、
      それぞれ仮想的な論理ボリュームであり複数の仮想領域を有する第1の仮想ボリューム及び第2の仮想ボリュームを管理し、
      前記第1の仮想ボリュームに属する第1の仮想領域と前記第2の仮想ボリュームに属する第2の仮想領域とが、前記複数の論理領域の1つである第1の論理領域を共に参照しており、
      前記外部装置から前記第1の仮想領域に対するライト要求を受信した場合、前記第1の論理領域の論理アドレスを前記複数の論理領域の1つである第2の論理領域にコピーし、前記第2の仮想領域の参照先を前記第2の論理領域に変更する
    請求項1に記載のストレージシステム。
  13.  記憶デバイス内の物理アドレスと論理アドレスとの対応関係を管理し、
     複数の記憶デバイスがそれぞれ提供する複数のサブ論理空間に基づく空間である論理空間を管理し、
     前記論理空間内の複数のデータの内の1つである第1のデータと前記複数のデータの内の1つである第2のデータとを交換する場合、前記第1のデータ及び前記第2のデータが同一の記憶デバイスに格納されているか否かを判定する第1判定を行い、
     前記第1判定の結果が肯定である場合、当該記憶デバイスにおいて、前記第1のデータが格納されている物理領域の物理アドレスと前記第2のデータが格納されている物理領域の物理アドレスとをそれぞれ変更せずに、前記第1のデータに対応する論理アドレスと前記第2のデータに対応する前記論理アドレスとを入れ替える
    記憶制御方法。
     

     
PCT/JP2015/050582 2015-01-13 2015-01-13 ストレージシステム、及び、記憶制御方法 WO2016113831A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
PCT/JP2015/050582 WO2016113831A1 (ja) 2015-01-13 2015-01-13 ストレージシステム、及び、記憶制御方法
JP2016569139A JP6425740B2 (ja) 2015-01-13 2015-01-13 ストレージシステム、及び、記憶制御方法
US15/540,681 US10067882B2 (en) 2015-01-13 2015-01-13 Storage system and storage control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/050582 WO2016113831A1 (ja) 2015-01-13 2015-01-13 ストレージシステム、及び、記憶制御方法

Publications (1)

Publication Number Publication Date
WO2016113831A1 true WO2016113831A1 (ja) 2016-07-21

Family

ID=56405399

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2015/050582 WO2016113831A1 (ja) 2015-01-13 2015-01-13 ストレージシステム、及び、記憶制御方法

Country Status (3)

Country Link
US (1) US10067882B2 (ja)
JP (1) JP6425740B2 (ja)
WO (1) WO2016113831A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017212515A1 (ja) * 2016-06-06 2017-12-14 株式会社日立製作所 ストレージシステム、計算機、およびストレージ制御方法

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11847095B1 (en) * 2015-12-30 2023-12-19 EMC IP Holding Company LLC Managing truncation of files of file systems
US10007671B1 (en) * 2016-03-30 2018-06-26 EMC IP Holding Company LLC Data storage system employing space reclaim approximation
US11372556B2 (en) * 2020-09-03 2022-06-28 Dell Products, L.P. Snapshot access using nocopy undefined thin devices
US11543993B1 (en) 2021-06-17 2023-01-03 Western Digital Technologies, Inc. Fast garbage collection in zoned namespaces SSDs

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005202942A (ja) * 2003-12-16 2005-07-28 Matsushita Electric Ind Co Ltd 情報記録媒体、データ処理装置及びデータ処理方法
JP2008102819A (ja) * 2006-10-20 2008-05-01 Hitachi Ltd 記憶装置及び記憶方法
JP2014203405A (ja) * 2013-04-09 2014-10-27 富士通株式会社 情報処理装置、メモリ制御装置、データ転送制御方法及びデータ転送制御プログラム

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07261946A (ja) * 1994-03-22 1995-10-13 Hitachi Ltd アレイ型記憶装置
JP3641872B2 (ja) * 1996-04-08 2005-04-27 株式会社日立製作所 記憶装置システム
US6542961B1 (en) * 1998-12-22 2003-04-01 Hitachi, Ltd. Disk storage system including a switch
US7162600B2 (en) * 2005-03-29 2007-01-09 Hitachi, Ltd. Data copying method and apparatus in a thin provisioned system
JP2004145409A (ja) * 2002-10-22 2004-05-20 Hitachi Ltd 記憶装置および記憶装置サブシステム
US7401174B2 (en) 2003-12-16 2008-07-15 Matsushita Electric Industrial Co., Ltd. File system defragmentation and data processing method and apparatus for an information recording medium
JP4723921B2 (ja) * 2005-06-13 2011-07-13 株式会社日立製作所 記憶制御装置及びその制御方法
JP2008269363A (ja) * 2007-04-20 2008-11-06 Hitachi Ltd 記憶制御装置および記憶制御方法
US9164941B2 (en) * 2007-10-24 2015-10-20 Hitachi, Ltd. Storage system group
JP5302582B2 (ja) * 2008-07-09 2013-10-02 株式会社日立製作所 上位装置から指定されるデバイスに関する記憶容量を変更するストレージシステム及び方法
JP2010072753A (ja) * 2008-09-16 2010-04-02 Hitachi Ltd 自動拡張ボリューム及び省電力機能を備えたストレージシステム
JP5518197B2 (ja) * 2009-09-09 2014-06-11 フュージョン−アイオー・インコーポレーテッド ストレージを割り当てるための装置、システム、および方法
US9122579B2 (en) * 2010-01-06 2015-09-01 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for a storage layer
US8402217B2 (en) * 2009-09-15 2013-03-19 Marvell International Ltd. Implementing RAID in solid state memory
WO2011114379A1 (en) * 2010-03-18 2011-09-22 Hitachi, Ltd. Storage controller coupled to storage apparatus
JP5079841B2 (ja) * 2010-04-15 2012-11-21 株式会社日立製作所 ThinProvisioningに従う仮想的な論理ボリュームに対するデータのライトを制御する方法及びストレージ装置
WO2012067623A1 (en) * 2010-11-19 2012-05-24 Empire Technology Development Llc Temperature control using compound capable of photoisomerization
WO2012137249A1 (en) * 2011-04-05 2012-10-11 Hitachi, Ltd. Storage apparatus and volume management method
US8868869B2 (en) 2011-08-08 2014-10-21 International Business Machines Corporation Enhanced copy-on-write operation for solid state drives
US8539142B2 (en) * 2011-09-30 2013-09-17 Hitachi, Ltd. Storage system comprising nonvolatile semiconductor storage media
WO2013076763A1 (en) * 2011-11-22 2013-05-30 Hitachi, Ltd. Storage system and control method of storage system
EP2823398A1 (en) 2012-04-27 2015-01-14 Hitachi, Ltd. Storage system and storage control apparatus
US9135121B2 (en) * 2012-10-16 2015-09-15 International Business Machines Corporation Managing updates and copying data in a point-in-time copy relationship expressed as source logical addresses and target logical addresses
US9507535B2 (en) * 2013-03-15 2016-11-29 EMC IP Holding Company LLC Offloading raid update operations to disk controllers
WO2014184941A1 (ja) * 2013-05-17 2014-11-20 株式会社日立製作所 ストレージ装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005202942A (ja) * 2003-12-16 2005-07-28 Matsushita Electric Ind Co Ltd 情報記録媒体、データ処理装置及びデータ処理方法
JP2008102819A (ja) * 2006-10-20 2008-05-01 Hitachi Ltd 記憶装置及び記憶方法
JP2014203405A (ja) * 2013-04-09 2014-10-27 富士通株式会社 情報処理装置、メモリ制御装置、データ転送制御方法及びデータ転送制御プログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017212515A1 (ja) * 2016-06-06 2017-12-14 株式会社日立製作所 ストレージシステム、計算機、およびストレージ制御方法

Also Published As

Publication number Publication date
US20180004676A1 (en) 2018-01-04
JP6425740B2 (ja) 2018-11-21
US10067882B2 (en) 2018-09-04
JPWO2016113831A1 (ja) 2017-08-24

Similar Documents

Publication Publication Date Title
JP6114397B2 (ja) 複合型ストレージシステム及び記憶制御方法
CN103080917B (zh) 可扩展存储装置
JP6007332B2 (ja) ストレージシステム及びデータライト方法
JP6425740B2 (ja) ストレージシステム、及び、記憶制御方法
US9122415B2 (en) Storage system using real data storage area dynamic allocation method
JP6600698B2 (ja) 計算機システム
JP2017091548A (ja) 分散格納システム及び分散格納方法並びに分散施設
US8639898B2 (en) Storage apparatus and data copy method
JP5816303B2 (ja) フラッシュメモリを含むストレージシステム、及び記憶制御方法
US20080177947A1 (en) Storage system and storage migration method
WO2016147281A1 (ja) 分散型ストレージシステム及び分散型ストレージシステムの制御方法
US10503424B2 (en) Storage system
WO2015162758A1 (ja) ストレージシステム
US9921781B2 (en) Storage system including multiple storage apparatuses and pool virtualization method
JP2021509981A (ja) システムガベージコレクションの方法およびソリッドステートディスクにおけるガベージコレクションの方法
WO2018158808A1 (ja) 情報システム、管理プログラム及び情報システムのプログラム交換方法
WO2015145617A1 (ja) ストレージシステム及び記憶制御方法
JP2022054132A (ja) 複合型ストレージシステム
JP5355603B2 (ja) ディスクアレイ装置及び論理ボリュームアクセス方法
WO2018055686A1 (ja) 情報処理システム
JP2020177501A (ja) ストレージシステム、そのドライブ筐体、およびパリティ演算方法。
US20210334043A1 (en) Storage system and storage system control method
JP7113698B2 (ja) 情報システム
JP7140807B2 (ja) 仮想ストレージシステム
JP2013122691A (ja) 割り当て装置およびストレージ装置

Legal Events

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

Ref document number: 15877786

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2016569139

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 15540681

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15877786

Country of ref document: EP

Kind code of ref document: A1