WO2018078741A1 - Storage apparatus - Google Patents

Storage apparatus Download PDF

Info

Publication number
WO2018078741A1
WO2018078741A1 PCT/JP2016/081714 JP2016081714W WO2018078741A1 WO 2018078741 A1 WO2018078741 A1 WO 2018078741A1 JP 2016081714 W JP2016081714 W JP 2016081714W WO 2018078741 A1 WO2018078741 A1 WO 2018078741A1
Authority
WO
WIPO (PCT)
Prior art keywords
storage device
physical
storage
data
stripe
Prior art date
Application number
PCT/JP2016/081714
Other languages
French (fr)
Japanese (ja)
Inventor
豊 大島
黒川 勇
栄寿 葛城
敦 田代
Original Assignee
株式会社日立製作所
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to PCT/JP2016/081714 priority Critical patent/WO2018078741A1/en
Publication of WO2018078741A1 publication Critical patent/WO2018078741A1/en

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers

Definitions

  • the present invention relates to a data recovery technique in a storage apparatus.
  • RAID Redundant Arrays of Inexpensive / Independent Disks
  • the RAID technology is a technology for calculating redundant data such as parity from write data received from a host device such as a host computer, and distributing and storing the write data and parity in different storage devices.
  • a storage apparatus employing RAID technology divides a storage area on a volume provided to a host computer or the like into data units of a predetermined size called stripes, and uses N stripes (N ⁇ 1) among these stripes. To generate M (M ⁇ 1) redundant data (parity). Note that the size of the M redundant data generated here is equal to the stripe. These redundant data are also called stripes or sometimes called parity stripes. A set of N stripes and M parity stripes generated from the N stripes is called a stripe line.
  • the storage device stores (N + M) stripes belonging to one stripe line in different storage devices.
  • N + M stripes belonging to one stripe line
  • the storage device stores (N + M) stripes belonging to one stripe line in different storage devices.
  • the data regenerated by the rebuild process is stored in a reserved storage area secured in advance.
  • an empty storage device that does not store any data or redundant data is secured as a spare storage area.
  • data or redundant data is stored in the storage device disclosed in Patent Document 1.
  • a method is disclosed in which a part of each storage device used for storage is reserved as an unused area (spare area), and the regenerated data is distributed and stored in the spare area of each storage device. ing. By doing so, the write destination of the regenerated data is distributed, so that it is possible to expect an effect that the load can be distributed even during the rebuild process.
  • the compression ratio varies depending on the data contents. Therefore, when the compression rate of the data stored in the storage device is worse than originally assumed, there may occur a case where data cannot be stored in the storage device. For example, when the rebuild process described above is performed, there may occur a situation in which the regenerated data cannot be stored in the spare area. In this case, the data may be lost.
  • a storage apparatus includes a storage controller that receives write data from a host computer, a predetermined amount of physical area, and compresses the data to the physical area.
  • the storage controller manages more than (N + M) storage devices as a parity group, generates M parity from N data written from the host computer, and generates the N data and Each of the M parities is stored in different storage devices in the parity group.
  • N + M storage devices
  • M parity is stored in different storage devices in the parity group.
  • a spare stripe that is an area for storing data restored during the rebuild process is provided. It has been.
  • the storage controller normally suppresses the use of the physical area necessary for storing the data written to the spare stripe. Then, when a failure occurs in the storage device, use of a physical area of an amount necessary for storing data to be written in the spare stripe is permitted.
  • the present invention can prevent data loss when a storage device fails.
  • FIG. 3 is a conceptual diagram showing an example of arrangement of each stripe in the storage apparatus according to the embodiment. It is a figure showing the relationship between a logical volume and a virtual parity group. It is the conceptual diagram which showed the relationship between a virtual parity group and a parity group. It is explanatory drawing of a spare area
  • program may be used as the subject, but precisely, the program is executed by a CPU (processor) to perform a predetermined process. However, to prevent the explanation from becoming redundant, the program may be described as the subject. Therefore, in the following description, the process described with the program as the subject actually means that the CPU executes the process. Further, part or all of the program may be realized by dedicated hardware.
  • Various programs may be installed in each apparatus by a program distribution server or a computer-readable storage medium.
  • the computer-readable storage medium is a non-transitory computer-readable medium such as a non-volatile storage medium such as an IC card, an SD card, or a DVD.
  • FIG. 1 shows a configuration of an information processing system (computer system) including a storage apparatus according to an embodiment of the present invention.
  • the information processing system includes a storage apparatus 1 and one or more hosts 2.
  • the storage device 1 is connected to the host 2 via a storage area network (SAN) 3.
  • the host 2 is a computer that executes an application program used by a user, and operates as a requester that issues an I / O request to the storage apparatus 1.
  • the host 2 is a general-purpose computer such as a main frame or a personal computer.
  • An application program or the like executed on the host 2 issues an I / O request such as a read command or a write command to a volume (logical volume) provided by the storage apparatus 1.
  • SAN 3 is a network composed of, for example, fiber channel cables and fiber channel switches.
  • the storage apparatus 1 includes a storage controller (hereinafter also abbreviated as “controller” or “DKC”) 10 and a disk unit 11 including a plurality of storage devices.
  • the storage controller 10 includes a CPU 12 that executes control such as I / O processing performed in the storage apparatus 1, a memory 13, a front-end interface (FE I / F) 14 that is a data transfer interface with the host 2, and a disk unit 11.
  • a back-end interface (BE I / F) 15 and a management I / F 16 which are data transfer interfaces are interconnected via an internal switch 17.
  • the number of each component, such as CPU12 and FE I / F14 is not limited to the number shown by FIG.
  • the disk unit 11 is equipped with a plurality of storage devices for storing write data from the host 2, and each storage device is connected to the storage controller 10 via the BE I / F 15.
  • the storage device is, for example, an SSD 21 that uses a nonvolatile semiconductor memory such as a flash memory as a storage medium, or an HDD 22 that uses a magnetic disk as a storage medium.
  • a case where all the storage devices mounted on the disk unit 11 are SSDs 21 will be described unless otherwise specified.
  • BE I / F 15 has at least an interface controller and a transfer circuit.
  • the interface controller is a component for converting a protocol (SAS in one example) used by the storage device into a communication protocol (PCI-Express as an example) used in the storage controller 10.
  • the transfer circuit is used when the storage controller 10 transfers data (read, write) to the storage device.
  • FE I / F 14 has at least an interface controller and a transfer circuit, similarly to BE I / F 15.
  • the interface controller of the FE I / F 14 is for converting the communication protocol (for example, fiber channel) used in the data transfer path between the host 2 and the storage controller 10 and the communication protocol used in the storage controller 10. belongs to.
  • the CPU 12 performs various controls of the storage device 1.
  • the memory 13 is used to store programs executed by the CPU 12 and various management information of the storage device 1 used by the CPU 12.
  • the memory 13 is also used for temporarily storing I / O target data for the storage device.
  • the storage area in the memory 13 used for temporarily storing the I / O target data for the storage device is referred to as “cache”.
  • the memory 13 is composed of a volatile storage medium such as DRAM or SRAM, but as another embodiment, the memory 14 may be composed of a non-volatile memory.
  • FIG. 2 is a diagram illustrating a configuration example of the SSD 21.
  • the SSD 21 includes an SSD controller 200 and a plurality of FM chips 206.
  • the SSD controller 200 includes a processor (CPU) 201, an upstream I / F 202, a downstream I / F 203, a memory 204, and a compression / decompression circuit 207, which are interconnected via an internal connection switch 205.
  • SSD is a storage device using a semiconductor memory, particularly a nonvolatile semiconductor memory, and means a device having the same form factor as an HDD.
  • SSD is used as a word meaning an entire storage device including a plurality of flash memories and a controller for controlling them, and the external shape and the like are limited to general HDD and SSD form factors. It is not something.
  • the nonvolatile semiconductor memory used for the SSD is a magnetoresistive memory such as MRAM (Magnetoretic Random Access Memory), a resistance variable memory ReRAM (Resistivity Random Access Memory), and a ferroelectric memory.
  • MRAM Magnetic Random Access Memory
  • ReRAM Resistivity Random Access Memory
  • ferroelectric memory ferroelectric memory
  • Various semiconductor memories such as a certain FeRAM (Ferroelectric random access memory) may be used.
  • the upstream I / F 202 is an interface controller for performing communication between the SSD 21 and the storage controller 10.
  • the upstream I / F 202 is connected to the BE I / F 15 of the storage controller 10 via a transmission line (SAS link or PCI link).
  • the downstream I / F 203 is an interface controller for performing communication between the SSD controller 200 and the FM chip 206.
  • the CPU 201 performs processing related to various commands coming from the storage controller 10.
  • the memory 204 stores a program for controlling the SSD 21, management information, and the like. A part of the memory 204 is also used as a buffer for temporarily storing write data transmitted from the storage controller 10 together with a write command and data read from the FM chip 206.
  • a volatile memory such as a DRAM is used. However, a nonvolatile memory may be used for the memory 202.
  • FM chip 206 is a non-volatile semiconductor memory chip such as a NAND flash memory. As is well known, reading / writing of data in the flash memory is performed for each area of a predetermined size (for example, 8 KB) called a page in a set of a plurality of cells. Data erasure is performed for each block which is a set of pages.
  • a predetermined size for example, 8 KB
  • the compression / decompression circuit 207 is hardware having a function of compressing data or decompressing the compressed data.
  • the SSD 21 can compress the write data from the storage controller 10 by the compression / decompression circuit 207 and store it in the FM chip 206.
  • the storage controller 10 performs data compression and data expansion transparently.
  • the SSD 21 may be configured such that data is compressed and decompressed by the CPU 201 executing a program that performs compression and decompression.
  • the storage apparatus 1 stores the write data from the host 2 in the storage device (SSD 21 or HDD 22), but does not directly provide the host 2 with the storage space provided by the storage device.
  • the storage apparatus 1 provides the host 2 with a storage space different from the storage space provided by the storage device. In this embodiment, the storage space provided to the host 2 is called a “logical volume”.
  • the storage device 1 manages the storage area on the logical volume by dividing it into partial areas of a predetermined size called “stripes”.
  • a predetermined operation such as exclusive OR is performed on a predetermined number (for example, N) of stripes to obtain the same size as the stripe.
  • M redundant data are created. Since the created redundant data is the same size as the stripe, it is called a “parity stripe”.
  • a stripe used for creating redundant data is sometimes called a “data stripe”.
  • a set of a parity stripe and a data stripe used to generate the parity stripe is referred to as a “stripe line”.
  • each stripe (data stripe and parity stripe) included in one stripe line is stored in a different storage device.
  • N and M are integers of 1 or more).
  • each data stripe and parity stripe included in one stripe line are distributedly stored in (N + M) storage devices.
  • N + M the number of data stripes included in one stripe line
  • RAID group the combination of the (N + M) storage devices.
  • FIG. 3 is a diagram conceptually showing the relationship between the stripe line and the storage area of each storage device.
  • the number of data stripes included in one stripe line is 3 and the number of parity stripes is 1 will be described.
  • elements 21-1 to 21-8 represent storage spaces (“logical address spaces” to be described later) provided to the storage controller 10 by the respective SSDs 21 (SSD 21-1 to SSD 21-8).
  • Each box in 21-1 to 21-8 represents a stripe (data stripe or the like).
  • a box described as “D” represents a data stripe
  • a box described as “P” means a parity stripe.
  • a box labeled “S” is a stripe used when a failure occurs in the SSD 21, and in the present embodiment, this is called a “spare stripe” or “spare area”. Details will be described later.
  • elements 320-1 and 320-2 each represent a stripe line.
  • each stripe belonging to the same stripe line exists at the same position (address) on the storage device.
  • each stripe belonging to the same stripe line is not necessarily stored. It does not have to exist at the same address on the device.
  • each stripe line exists in the same storage device.
  • each stripe line 320-1, 320-2 has more than (N + M) storages.
  • an example will be described in which each stripe line belonging to one logical device is distributed and arranged in eight storage devices, and a combination of these eight storage devices is called a “parity group”.
  • FIG. 4 is a diagram showing the relationship between logical volumes and virtual parity groups.
  • an element 300 represents a logical volume
  • each box (boxes such as D (0) and D (1)) in the logical volume 300 represents a stripe (data stripe).
  • the logical volume does not include a parity stripe.
  • the elements 350-0.350-1, 350-2, and 350-3 are storage devices that are virtually defined by the storage apparatus 1 for address conversion, and are hereinafter referred to as virtual storage devices. .
  • a combination of virtual storage devices 350-0, 350-1, 350-2, and 350-3 (element 340 in the figure) is called a virtual parity group.
  • the virtual parity group may be abbreviated as VPG.
  • the virtual parity group is similar to the RAID group in the traditional RAID technology, and each stripe belonging to the same stripe line 320 is located at the same address on the virtual storage device. For example, in FIG.
  • FIG. 5 is a conceptual diagram showing the relationship between virtual parity groups and parity groups.
  • Each stripe included in the stripe line on the virtual parity group is distributed and arranged in each storage device (SSD 21) in the parity group.
  • SSD 21 storage device
  • each stripe included in the stripe line 320-1 on the virtual parity group is arranged in the SSD 21-1, 21-2, 21-3, 21-4, and the stripe line 320-2
  • the stripes included in are arranged in SSDs 21-2, 21-3, 21-4, and 21-5.
  • the arrangement example of each stripe on the SSD 21 described above is an example, and other arrangements may be performed.
  • There is an advantage that the load of I / O processing is distributed by distributing stripes to more storage devices (SSDs 21) than the virtual storage devices included in the virtual parity group.
  • the storage apparatus 1 may hold the mapping information between the stripes on the virtual parity group (virtual storage device) and the stripes of the parity group (storage device) for each stripe.
  • the storage apparatus 1 may provide a relationship that can be expressed by some conversion formula (or function) between the address on the virtual storage device and the address of the storage device. Good.
  • a storage apparatus employing the traditional RAID technology has one or a plurality of spare storage devices in case a storage device in a RAID group fails, and this storage device is called a “spare drive”.
  • this storage device is called a “spare drive”.
  • no data is written to the spare drive.
  • the storage device fails and the data recorded in the failed storage device is restored (rebuilt) by the RAID technology, the restored data is stored in the spare drive.
  • the storage apparatus 1 is provided with an area for storing restored data in advance in each storage device in the parity group, as in the technique described in Patent Document 1.
  • This area is not used during normal times (when no failure has occurred in the storage device), but is used when a failure has occurred in any storage device.
  • this area is called a “spare area” or “spare stripe”.
  • the ratio of the spare stripe to the total stripe in the storage device that is, A value expressed by the number of spare stripes in the storage device ⁇ the total number of stripes in the storage device is referred to as “spare area ratio”.
  • FIG. 6 shows the same parity group configuration as FIG.
  • a box labeled “S” is a spare stripe.
  • SSD 21-1 in the figure fails, some spare stripes are used to store the restored data (the box labeled “S ⁇ D” in FIG. 6 is restored). Represents the spare stripe used to store the data (or parity) generated).
  • the load is concentrated on the spare drive.
  • the load is specified at the time of data recovery. It is possible to prevent concentration on the storage device. Details of processing at the time of data recovery will be described later.
  • the SSD 21 compresses the write data from the storage controller 10 by the compression / decompression circuit 207 and stores it in the FM chip 206.
  • data compression is performed transparently for the storage controller 10.
  • the SSD 21 provides a storage space of a predetermined size to the storage controller 10. In this embodiment, this storage space is called a “logical address space”. In FIG. 7, element 20 represents a logical address space.
  • the storage controller 10 writes data to the SSD 21, it issues a write command specifying the address in this logical address space and the size of the write target data.
  • the storage controller 10 transmits a write command (and 64 KB write data) for writing 64 KB data to the head (address 0) of the logical address space to the SSD 21.
  • the SSD 21 compresses the 64 KB data to result in 8 KB compressed data, and the 8 KB compressed data is stored in the FM chip 206.
  • the storage controller 10 reads this data, by issuing a read command designating the head of the logical address space (address 0) and the read data size (for example, 64 KB), the 64 KB data stored earlier. Can be read out.
  • the SSD 21 decompresses (restores) 8 KB of compressed data by the compression / decompression circuit 207 to obtain 64 KB of data before compression, and the SSD 21 returns the decompressed data to the storage controller 10. Because. Therefore, the storage controller 10 recognizes as if the data is stored in an uncompressed state in the logical address space (even if the data is actually compressed and stored).
  • the relationship (mapping) between the area in the logical address space and the storage area (called “physical area”) of the FM chip 206 may not be static.
  • the SSD 21 manages the mapping between each area on the logical address space and the physical area of the FM chip 206, and the mapping is dynamically changed.
  • the data (the compressed data) written in the area 401 on the logical address space represents a state where it is stored in the physical area 411 of the FM chip 206.
  • the SSD 21 manages information that the physical area 411 is mapped to the area 401.
  • the SSD 21 when the SSD 21 receives an update request for the area 401 from the storage controller 10, the SSD 21 generates compressed data of the data written together with the update request, and secures a new physical area in which the compressed data is to be stored. The compressed data is stored in the reserved physical area. Then, the SSD 21 changes the mapping so that the physical area secured this time is mapped to the area 411.
  • the size of the logical address space provided by the SSD 21 to the storage controller 10 is called “logical capacity”.
  • the total capacity of the storage areas of all the FM chips 206 of the SSD 21 is called “physical capacity”.
  • the logical capacity is set larger than the physical capacity. This is because the data written in the SSD 21 is compressed, so that it is expected that a larger amount of data than the physical capacity can be stored in the SSD 21. For example, when the logical capacity is set to 8 times the physical capacity and the physical capacity of the SSD 21 is 1 TB, the logical capacity is 8 TB (that is, the storage controller 10 recognizes that the SSD 21 has a storage capacity of 8 TB).
  • the data size after compression can vary depending on the content of the data.
  • the logical capacity is set to 8 times the physical capacity, if all the data written from the storage controller 10 to the SSD 21 is compressed to a size of 1/8 or less, all the data is stored in the FM chip 206. it can.
  • the data size after compression may not be less than 1/8 of the data size before compression. When such data is written to the SSD 21, there may be no physical area in which data (after compression) can be written.
  • the state where there is no physical area in which data can be written is referred to as “the physical area is depleted”.
  • the SSD 21 cannot store the write data received from the storage controller 10 in the physical area. Therefore, the SSD 21 according to the present embodiment has a predetermined amount of physical area into which data can be written (for example, 10% of all physical areas). %), The write request from the storage controller 10 is not accepted thereafter. Details will be described later.
  • the storage controller 10 provides a spare stripe in addition to the data stripe and the parity stripe on the storage space (logical address space) of the SSD 21 constituting the parity group.
  • the spare stripe is an area that is not used (write is not performed) unless any storage device (SSD 21) in the parity group fails.
  • FIG. 8 shows an example of the logical physical capacity management table 800.
  • the logical physical capacity management table 800 is a table for recording information on the capacity (logical capacity, physical capacity) of each storage device, and is stored in the memory 13.
  • Information about one storage device is stored in each row (record) of the logical physical capacity management table 800.
  • This record has columns of PG # (801), PDEV # (802), logical capacity (803), physical capacity (804), logical usage (805), physical usage (806), and status (807). .
  • PDEV # (802) is an identification number of the storage device.
  • PG # (801) is the identification number of the parity group to which the storage device belongs.
  • the identification number of the storage device is referred to as “PDEV number”.
  • the PDEV number may be written as “PDEV #”.
  • the identification number of the parity group is called “PG number” and may be written as “PG #”.
  • the logical capacity (803) represents the logical capacity of the storage device
  • the physical capacity (804) represents the physical capacity of the storage device.
  • the logical usage (805) and physical usage (806) represent the logical usage and physical usage of the storage device, respectively.
  • the definitions of the logical usage amount and the physical usage amount in the present embodiment are as follows.
  • the logical usage is the total size of the area accessed from the storage controller 10 (the area where writing has been performed) in the logical address space.
  • the physical usage is the total size of the physical area allocated to the area written from the storage controller 10. In FIG. 5, when the storage controller 10 writes only to the areas 401, 402, and 403 on the logical address space 20, and the size of each of the areas 401, 402, and 403 is 64 KB, the logical usage amount is 192 KB. It is.
  • the data after compression of the data written from the storage controller 10 in each of the areas 401, 402, and 403 (which is assumed to be compressed to 8 KB) is written in the areas 411, 412, and 413 in the FM chip.
  • the physical usage amount is 24 KB.
  • Status (807) represents the state of the storage device. When the status (807) is “1”, this indicates that the storage device has failed and cannot be accessed.
  • the storage controller 10 stores the information (logical capacity (803), A request for acquiring physical capacity (804), logical usage (805), and information stored in physical usage (806) (for example, periodically) is issued, and the obtained information is logical capacity (803). , Physical capacity (804), logical usage (805), and physical usage (806). Since the logical capacity and the physical capacity are not variable values, the storage controller 10 acquires the logical capacity and the physical capacity once at the start of use of the storage device, and thereafter periodically acquires the physical usage from the storage device. You may make it acquire.
  • FIG. 9 is a configuration example of the PG management table 900.
  • the PG management table 900 is a table for managing information about parity groups, and is stored in the memory 13. Information about one parity group is stored in each record of the PG management table 900. Hereinafter, the contents of each column in the record will be described.
  • the column PG # (801) is a column for storing the PG number
  • the drive type (902) stores information indicating the types of storage devices constituting the parity group.
  • the parity group is the HDD 22. It is composed of In principle, the types of storage devices used for one parity group are the same.
  • the capacity (903) represents the logical capacity of the storage devices constituting the parity group.
  • the storage devices used for one parity group are the same. However, storage devices having different logical capacities may be included in the parity group.
  • the logical capacity of the storage device having the smallest logical capacity among the storage devices in the parity group is stored in the capacity (903).
  • Compression (904) indicates whether the storage device in the parity group has a compression function.
  • “ON” is stored in the compression (904), it means that the storage device in the parity group has a compression function, and the data written in the parity group is compressed.
  • the copy pointer (905) is information used at the time of rebuilding, and stores the address (LBA) of the rebuilding area in the failed storage device area (logical address space area). If none of the storage devices in the parity group has failed and the rebuild process has not been performed, an invalid value (referred to as “NULL”) is stored in the copy pointer (905).
  • the invalid value (NULL) is a value that is not normally used for the address of the storage device, such as -1.
  • the storage apparatus 1 When the storage apparatus 1 according to the present embodiment performs the rebuild process, data recovery is performed in order from the first stripe of the failed storage device.
  • the initial value of the copy pointer (905) is recorded as 0 (LBA of the first stripe), and when rebuilding is completed for the stripe indicated by the copy pointer (905), the copy pointer (905) is set to the address of the next stripe. Will be updated. Therefore, it means that the data of the address less than the copy pointer (905) in the area in the failed storage device has already been restored and stored in the spare stripe of another storage device, and the copy pointer (905) This means that the data at the above address has not been restored yet. Details of how the copy pointer (905) is used will be described later.
  • FIG. 10 shows a configuration example of the depletion threshold management table 1000.
  • the depletion threshold management table 1000 is a table for managing the usage state of the physical area, and is stored in the memory 13.
  • the depletion threshold value management table 1000 manages the usage state of the storage devices constituting the parity group for each parity group.
  • the record of the depletion threshold management table 1000 has columns of PG # (1001), a depletion threshold (1002), a physical capacity usage rate (1003), and an I / O suppression flag (1004).
  • PG # (1001) is an identification number of a parity group to be managed by the record of the depletion threshold management table 1000.
  • the physical capacity usage rate is a value that can be calculated for each storage device. For example, when the physical usage amount of a certain SSD 21 is u and the physical capacity is p, the physical capacity usage rate of the SSD 21 is u ⁇ p (Note that, as shown in FIG. 10, the physical capacity usage rate (1003) is expressed as a percentage, so the physical capacity usage rate (1002) A value obtained by multiplying u ⁇ p by 100 is stored). Since the physical usage and the physical capacity of the storage device are stored in the physical usage (806) column and the physical capacity (804) column of the logical physical capacity management table 800, respectively, the storage controller 10 stores the logical physical capacity management table 800. The physical capacity usage rate of each storage device can be calculated by referring to.
  • the physical capacity usage rate of the parity group is stored and managed in the depletion threshold management table 1000 (its physical capacity usage rate (1003)).
  • the maximum physical capacity usage rate is defined as the parity group usage rate among the physical capacity usage rates of a plurality of storage devices constituting the parity group. Therefore, the storage controller 10 calculates the physical capacity usage rate of each storage device belonging to the parity group, and stores the maximum physical capacity usage rate in the physical capacity usage rate (1003) of the depletion threshold management table 1000.
  • the depletion threshold (1002) is an index value used by the storage controller 10 to determine whether or not data can be written to the parity group. Specifically, when the physical capacity usage rate (1003) of the parity group is equal to or greater than the value stored in the depletion threshold (1002), the storage controller 10 does not write data to the parity group. A value such as 90% is set as the depletion threshold (1002).
  • the depletion threshold (1002) is a value that does not vary during normal times (when no failure occurs in the storage device), and the initially set value is maintained.
  • a value slightly smaller than the value that should be originally set is set as the depletion threshold (1002) at the time of initial setting (when a parity group is defined).
  • the depletion threshold (1002) is returned to a value that should be originally set.
  • the value that should be originally set in the depletion threshold (1002) is called the “pre-correction depletion threshold”. Assuming that the pre-correction depletion threshold is Y% and the spare area ratio is X%, “Y% ⁇ X%” is set at the time of initialization as shown in FIG. At the time of rebuild processing, the original value is returned to Y%.
  • the logical physical capacity management table 800 and the depletion threshold management table 1000 are periodically updated by a configuration information management program that is periodically executed by the CPU 12 of the storage controller 10.
  • a configuration information management program that is periodically executed by the CPU 12 of the storage controller 10.
  • the logical usage (805) and physical usage (806) in the logical physical capacity management table 800 are updated.
  • the physical capacity usage rate (1003) in the depletion threshold management table 1000 is also updated.
  • FIG. 11 shows a configuration example of the spare conversion table 1100.
  • the spare conversion table 1100 is used to specify the position of the storage destination stripe (spare stripe) of the rebuilt data when the storage device fails.
  • the position information of the stripe in the failed storage device and the position information of the corresponding spare stripe are recorded.
  • PDEV # (1101) and address (1102) are stripe position information in the failed storage device. Specifically, PDEV # (1101) is the PDEV number of the failed storage device, and address (1102) is the address of the stripe in the failed storage device. Note that information used as an address is, for example, LBA (Logical Block Address).
  • spare PDEV # (1103) and the address (1104) are spare stripe position information.
  • spare PDEV # (1103) is the PDEV number of the storage device where the spare stripe exists
  • address (1104) is the address of the spare stripe.
  • the PDEV # (1101) of the first record is “0x0000”
  • the address (1102) is “0”
  • the spare PDEV # (1103) is “0x0004”
  • the address (1104) is “0x1000”. This is because the data stored in the stripe with the address 0 (first stripe) in the PDEV with the PDEV # of 0x0000 is the stripe (spare) with the address of 0x1000 in the PDEV with the PDEV # of 0x0004. Stored in a stripe).
  • each record in the spare conversion table 1100 is created when any storage device in the parity group fails.
  • each record in the spare conversion table 1100 may be created at a time before the storage device fails.
  • the storage controller 10 may create each record in the spare conversion table 1100 at the start of using the parity group.
  • a spare stripe (spare stripe specified by spare PDEV # (1103) and address (1104)) associated with the stripe of the failed storage device (stripe specified by PDEV # (1101) and address (1102)). Since the determination method is arbitrary and is not directly related to the present embodiment, description thereof is omitted here.
  • the storage device 1 also stores information other than the management information described above in the memory 13. For example, the information for managing the mapping between the logical volume and the virtual parity group described with reference to FIG. 4 and the information for managing the mapping between the virtual parity group and the parity group described with reference to FIG. . However, since these pieces of information are not directly related to the description of the present embodiment, the description is omitted.
  • the storage apparatus 1 stores several programs for performing various processes in the memory 13. Here, only an outline of the program related to the description of the present embodiment will be described.
  • an I / O program for processing an I / O command (read command or write command; hereinafter simply referred to as “command”) received from the host 2
  • a destage program for writing data to the storage device The exhaustion check program for checking whether the physical area is exhausted and the rebuild program for performing the rebuild process are stored.
  • the I / O processing is performed when an I / O command is received from the host 2 to the logical volume, and is executed by the I / O program.
  • the access range (area on the logical volume) specified by the I / O command from the host 2 is smaller than one stripe size, and there are a plurality of access ranges. An example of a case that does not cross the stripe will be described.
  • Step 1201 The I / O program converts the address of the logical volume specified by the I / O command into an address on the virtual storage device constituting the virtual parity group.
  • Step 1202 The I / O program converts the address on the virtual storage device obtained in Step 1201 into the PDEV number of the storage device (SSD 21) constituting the parity group and the address on this storage device.
  • this conversion process is sometimes referred to as “VP conversion”.
  • the address obtained here is an address on the logical address space provided by the SSD 21 to the storage controller 10.
  • Step 1203 The I / O program determines whether the I / O command received from the host 2 is a write command or a read command. If the command is a write command (step 1203: Y), then step 1204 is performed. If the command is a read command (step 1203: N), then step 1211 is performed.
  • Steps 1204 and 1205 In step 1204, the I / O program performs a depletion check process. Although details of this process will be described later, the I / O program calls the depletion check program to cause the depletion check program to perform the depletion check process. If it is detected as a result of step 1204 that the physical area has been exhausted (step 1205: Y), the CPU 12 next executes step 1208. If the physical area has not been exhausted (step 1205) 1205: N), then step 1206 is performed.
  • Step 1206 When a write command is issued from the host 2, data (write data) to be written to the logical volume is sent from the host 2 to the storage device 1 together with the write command.
  • the I / O program stores this write data in the cache. Note that when data is stored in the cache, the I / O program stores the data with write position information (specifically, PDEV number and LBA). The data stored in the cache is later written to the storage device (at an appropriate timing).
  • the process in which the storage controller 10 writes data to the storage device is called “destage”. The flow of destage processing will be described later.
  • Step 1207 The I / O program responds to the host 2 that the write process is completed, and ends the process.
  • Step 1208 This process is performed when it is determined that the physical area is exhausted.
  • the I / O program does not write the write data sent from the host 2 and ends the processing (responses that the data cannot be written to the host 2).
  • Step 1211 The I / O program refers to the status (807) in the logical physical capacity management table 800 to determine whether the access destination storage device obtained in Step 1202 is inaccessible (status (807) is “1”. ” When the access is impossible (step 1211: Y), step 1212 is performed next, and when the access is possible (step 1211: N), step 1214 is performed next.
  • Step 1212 The I / O program compares the address of the access target storage device obtained in Step 1202 with the copy pointer (905) of the parity group to which the access target storage device belongs. If the copy pointer (905) is larger than the address of the access target storage device (step 1212: Y), it means that the data stored at that address has been restored by the rebuild process. In this case, step 1214 (normal read processing) is performed next. Conversely, when the address of the access target storage device is not less than the copy pointer (905) (step 1212: N), step 1213 (collection read processing) is performed next.
  • Step 1213 Here, collection read processing is performed. Since the collection read process is a known process, only the outline will be described here.
  • the I / O program reads data from all stripes (data stripe and parity stripe) belonging to the same stripe line as the access target stripe, and restores the read target data using the read data.
  • Step 1214 The I / O program performs normal read processing. Unlike the collection read process, the normal read process refers to a process of reading data stored in the storage device as it is without performing data restoration.
  • the I / O program reads data from the access target storage device.
  • the access target storage device is out of order (if the determination in step 1211 is affirmative)
  • the data is recorded in the spare stripe. Therefore, the I / O program refers to the spare conversion table 1100 to identify the spare stripe where the restored data is stored, and reads the data from the identified spare stripe.
  • spare conversion table 1100 For example, an example in which the contents of the spare conversion table 1100 are shown in FIG. 11 and the PDEV # and the address obtained in step 1202 are 0x0000 and 0x0100 will be described.
  • PDEV # (1101) and address (1102) are rows of 0x0000 and 0x0100, respectively
  • spare PDEV # (1103) and address (1104) are 0x0005 and 0x1000, respectively. is there.
  • the I / O program reads data from the address 0x1000 of the storage device whose PDEV # is 0x0005.
  • Step 1215 The I / O program returns the data read in Step 1214 or the data restored in Step 1213 to the host 2 and ends the process.
  • the destage process is executed when the data stored in the cache is written to the storage device in step 1206 described above, or when the storage controller 10 writes the restored data to the spare stripe in the rebuild process (described later).
  • the This process is performed by a destage program.
  • Step 1701 The destage program selects data that has not yet been written to the storage device from the data on the cache, and obtains information on the write position assigned to the data.
  • the destaging program performs the depletion check process by calling the depletion check program. At this time, the destaging program passes the write position information to the depletion check program, and determines whether the physical area of the write destination storage device is depleted.
  • Step 1702 If it is determined in step 1701 that the physical area is exhausted, step 1704 is performed next. If the physical area is not exhausted, step 1703 is performed next.
  • Step 1703 The destage program issues a write command to the storage device that is the data write destination, writes the data, and ends the process.
  • Step 1704 The destage program ends the process without writing to the storage device.
  • the depletion check program starts processing by being called from the I / O program (or rebuild program).
  • the depletion check program is called, the PDEV number of the access target storage device and the address (LBA) of the access target stripe are received from the caller program (I / O program or the like).
  • Step 1303 The depletion check program determines whether the access target storage device has a compression function. Specifically, the depletion check program first refers to the logical physical capacity management table 800 to identify the parity group number of the parity group to which the access target storage device belongs, and then refers to the PG management table 900. It is determined whether the compression (904) of the parity group to which the access target storage device belongs is “ON”. When the access target storage device does not have a compression function (step 1303: N), step 1307 is performed next. When the access target storage device has a compression function (step 1303: Y), step 1305 is performed next.
  • Step 1305 The depletion check program refers to the depletion threshold management table 1000 to determine whether the physical capacity usage rate (1003) of the parity group to which the access target area belongs is greater than or equal to the depletion threshold (1002).
  • the depletion check program next executes step 1306.
  • step 1307 is executed next.
  • Step 1306 The depletion check program determines that physical area depletion has occurred in the parity group to be accessed, returns to the calling program that the physical area has been depleted, and ends the process.
  • Step 1307 The depletion check program returns to the calling program that the physical area has not been depleted and ends the processing.
  • the rebuild process is started when access from the storage controller 10 becomes impossible because one (or a plurality of) storage devices in the parity group have failed.
  • the failed storage device is referred to as “failed device”, and the parity group to which the failed device belongs is referred to as “failed PG”.
  • the rebuild process can be executed in parallel with the I / O process (FIG. 12). That is, the storage apparatus 1 can execute the rebuild process while receiving an I / O command from the host 2.
  • Step 1401 The rebuild program determines a spare stripe corresponding to each stripe of the failed device and records the information in the spare conversion table 1100.
  • Step 1402 If the failed device has a compression function (this can be determined by referring to the column for compression (904) of the failed PG), the rebuilding program sets the failure PG depletion threshold (1002) to the original value. Return to (pre-correction depletion threshold). For example, when the spare area ratio of the faulty PG is 9%, the rebuild program adds 9% to the depletion threshold (1002) to increase the depletion threshold (1002).
  • Step 1403 The rebuild program initializes the copy pointer (905) of the fault PG (substitutes 0).
  • the rebuild program specifies the position of the stripe belonging to the same stripe line as the repair target stripe (PDEV # of the storage device to which it belongs and the LBA where the stripe exists), and reads out those stripes.
  • the rebuild program obtains the virtual storage device in the virtual parity group to which the stripe to be repaired belongs and the address on the virtual storage device, and based on that, each rebuilding program belongs to the same stripe line in the virtual parity group.
  • the address of the stripe (PDEV # and LBA of each storage device) is obtained, but description of these processes will be omitted.
  • step 1405 the rebuild program restores the data using the read stripe, and writes the restored data in the spare stripe. Since the information of the spare stripe corresponding to the restoration target stripe is recorded in the spare conversion table 1100 generated in step 1401, the rebuild program identifies the spare stripe to which the restoration data is written based on this information, and writes the information. Do.
  • Step 1406 The rebuild program updates the copy pointer (905) of the fault PG. Specifically, the rebuild program adds the stripe size to the copy pointer (905) so that the address pointed to by the copy pointer (905) becomes the stripe next to the restoration target stripe.
  • the stripe next to the repair target stripe may be a spare stripe. In that case, the rebuild program adds the stripe size to the copy pointer (905) again. This is because the spare stripe is not normally used and there is no need to restore data.
  • Step 1410 The rebuild program determines whether the copy pointer (905) of the failed PG has exceeded the termination LBA of the failed device. If the copy pointer (905) of the failed PG has not yet exceeded the termination LBA of the failed device (step 1410: N), the rebuild program returns to step 1404 for processing. Conversely, when the copy pointer (905) exceeds the terminal LBA of the failed device (step 1410: Y), step 1411 is performed next.
  • Step 1411 The rebuild program has an invalid value (called “NULL”) for the copy pointer (905) of the faulty PG.
  • NULL is a value that is not normally used for the address of the storage device (for example, ⁇ 1). ) Is stored, and the process ends.
  • the depletion threshold is updated (step 1402).
  • the depletion threshold is kept lower than the original value (subtracted by the amount corresponding to the spare area ratio), so it is in a state where writing to some physical areas is practically impossible. . This is to prevent the physical area for storing the data written in the spare stripe during the rebuild process from being exhausted (to ensure the physical area for data to be written in the spare stripe). is there.
  • the depletion threshold value is increased by executing the above step 1402, so that the rebuild program can write data to the physical area secured before the rebuild process.
  • Example 2 Since the configuration of the storage apparatus according to the second embodiment is the same as the storage according to the first embodiment, the illustration of the configuration is omitted.
  • the contents performed in the rebuild process are slightly different from those described in the first embodiment.
  • the rebuild process performed in the storage apparatus according to the second embodiment will be described. Since many parts of this process are the same as those described in the first embodiment, the following description focuses on the differences.
  • step 1407 is performed after step 1406 (processing for updating the copy pointer).
  • step 1407 the rebuild program updates the depletion threshold (1002) of the depletion capacity management table 1000.
  • the depletion threshold is gradually changed according to the progress of the rebuild process.
  • Step 1601 The rebuild program determines whether the failed device has a compression function. This determination is the same as step 1303 described in the first embodiment. If the failed device does not have a compression function (step 1601: N), the process ends. On the other hand, if the failed device has a compression function (step 1601: Y), then step 1602 is performed.
  • Step 1602 The CPU 12 calculates a rebuild program progress rate.
  • an index value indicating the progress of rebuilding a failed drive is referred to as “copy progress rate”.
  • the depletion threshold is equal to the “pre-correction depletion threshold-spare area ratio”, and as the copy pointer increases (that is, the rebuild process is performed for many stripes). As it is done), the depletion threshold increases gradually. When the rebuild process is completed, the depletion threshold becomes equal to the pre-correction depletion threshold.
  • Step 1604 Finally, the rebuild program stores the depletion threshold obtained in Step 1603 in the depletion threshold management table 1000 (the depletion threshold (1002)), and ends the process.
  • step 1304 when it is determined in step 1303 that the access target storage device has the compression function, step 1304 is executed before step 1305.
  • step 1304 the depletion check program determines whether or not the access target area is a spare stripe. If the area is not a spare stripe (step 1304: N), next step 1305 is executed as in the processing described in the first embodiment.
  • step 1304 when the access target area is a spare stripe (step 1304: Y), the depletion check program next executes step 1307.
  • a spare stripe a call is made that the physical area is not exhausted regardless of whether the physical capacity usage rate (1003) of the parity group to which the access target area belongs is equal to or higher than the depletion threshold (1002).
  • the depletion check process in the second embodiment is the same as that described in the first embodiment except that step 1304 is added.
  • the depletion threshold gradually increases with the progress of the rebuild process, so that the normal write process (a process for storing write data from the host 2) that occurs during the rebuild process is performed. It is possible to prevent a situation in which the physical area is excessively consumed by data and the data restored by the rebuild process cannot be stored. Also, in the exhaustion check process, if the access target area is a spare stripe, the exhaustion check is not performed (data can be written to the storage device even if the physical capacity usage rate exceeds the exhaustion threshold), so it is restored by the rebuild process. The data can be reliably written to the storage device (spare stripe).
  • depletion check process (FIG. 18) described in the second embodiment may be performed in the storage apparatus according to the first embodiment.
  • the depletion threshold (1002) of the depletion threshold management table 1000).
  • the physical area for writing (the physical area for writing the data restored by the rebuild process) was secured.
  • the physical area for the spare stripe may be secured by other methods. In Example 3, two methods will be described.
  • the first method is a method in which some physical areas are used in advance (apparently). Specifically, at the time of initial setting, the configuration information management program adds a value corresponding to the spare area ratio in advance to the physical usage (806) of the logical physical capacity management table 800. At this time, the pre-correction depletion threshold is set as the depletion threshold (1002) (that is, it is not necessary to set (pre-correction depletion threshold-spare area ratio)).
  • the configuration information management program sets (P ⁇ S ⁇ ) to the physical usage (806) of the storage device at the initial setting. 100) is set.
  • the configuration information management program updates the physical usage (806) of the logical physical capacity management table 800 using the physical usage acquired from the storage device.
  • the physical usage (806) includes the physical usage acquired from the storage device + (P ⁇ S ⁇ 100). Should be set.
  • the configuration information management program updates the physical capacity usage rate (1003) of the depletion threshold management table 1000
  • the physical capacity usage rate is used because the physical capacity (804) and physical usage amount (806) of the logical physical capacity management table 800 are used.
  • (1003) a value larger than the actual physical capacity usage rate (a value obtained by adding the spare area ratio) is stored. As a result, the physical area corresponding to the spare area ratio is not used.
  • step 1402 the rebuild program subtracts (P ⁇ S ⁇ 100) from the physical usage (806) of the storage device instead of correcting the depletion threshold (1002). Return to physical usage. As a result, during the rebuild process, the physical area for (P ⁇ S ⁇ 100) (TB) that has not been used until now can be used.
  • the second method is to reduce the physical capacity in advance. Specifically, at the time of initial setting, the configuration information management program sets a value obtained by subtracting a value corresponding to the spare area ratio from the physical capacity of the original storage device in the physical capacity (804) of the logical physical capacity management table 800. As in the first method, the pre-correction depletion threshold may be set as the depletion threshold (1002).
  • the configuration information management program sets (PP) to the physical capacity (804) of the storage device at the initial setting.
  • ⁇ S ⁇ 100) is set.
  • the configuration information management program updates the physical capacity usage rate (1003) of the depletion threshold management table 1000
  • the physical capacity usage rate is used because the physical capacity (804) and physical usage amount (806) of the logical physical capacity management table 800 are used.
  • (1003) a value larger than the actual physical capacity usage rate (a value obtained by adding the spare area ratio) is stored. As a result, the physical area corresponding to the spare area ratio is not used.
  • the rebuild program When the rebuild process is started, the rebuild program returns the physical capacity (804) of the storage device to the original physical capacity instead of correcting the depletion threshold (1002) in step 1402. As a result, during the rebuild process, the physical area for (P ⁇ S ⁇ 100) (TB) that has not been used until now can be used.
  • the method of returning the physical usage (806) or the physical capacity (804) of the storage device to the original value at the start of rebuilding has been described.
  • the storage apparatus according to the third embodiment may gradually return the physical usage (806) or the physical capacity (804) of the storage device to the original value in accordance with the progress of the rebuild process.
  • the depletion check process described in the second embodiment (the process of FIG. 18, that is, a method that does not perform the depletion check when writing is performed on a spare stripe) may be performed. .
  • the embodiment of the present invention has been described above, but this is an example for explaining the present invention, and is not intended to limit the present invention to the embodiment described above.
  • the present invention can be implemented in various other forms.
  • the storage apparatus 1 described in the embodiment the example in which the storage device is an SSD (storage apparatus using a flash memory) has been described, but the type of storage medium used for the storage device is not limited to the flash memory.
  • Any storage device may be used as long as it has a compression function.
  • the external storage apparatus 4 illustrated in FIG. 1 has a compression function
  • the external storage apparatus 4 may be used as a storage device.
  • the storage area on the logical volume provided to the host and the storage area of the (virtual) parity group are statically mapped (virtual volume to which each storage area of the logical volume is mapped at the time of definition).
  • the storage area on the parity group is uniquely determined), but the relationship between the logical volume storage area and the parity group storage area (stripe line) is limited to a fixed (static) configuration is not.
  • a logical volume formed by using a well-known technique, Thin-Provisioning technology may be provided to the host.
  • the storage area of the parity group (or stripe line) is allocated to the storage area only when a write request is received from the host computer to the storage area on the logical volume.
  • each program in the embodiment may be realized by hardware using hard wired logic or the like.
  • each program in the embodiment may be stored in a storage medium such as a CD-ROM or DVD and provided.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

A storage apparatus according to an aspect of the present invention includes: a storage controller that accepts write data from a host computer; and a plurality of storage devices that have predetermined amounts of physical areas and that compress data and store the compressed data in the physical areas. The storage controller manages more than (N + M) units of the storage devices as a parity group, and the storage controller generates M parities from N items of data written from the host computer and stores the M parities individually in different ones of the storage devices in the parity group. Meanwhile, in logical storage spaces of the storage devices, spare stripes serving as areas for storing data recovered at the time of rebuild processing are provided. The storage controller is characterized by inhibiting writing to the spare stripes in normal situations, and permitting the use of certain amounts of physical areas needed for storing data to be written to the spare stripes when triggered by the occurrence of a fault in the storage devices.

Description

ストレージ装置Storage device
 本発明は、ストレージ装置におけるデータ復旧技術に関する。 The present invention relates to a data recovery technique in a storage apparatus.
 ストレージ装置の中には、いわゆるRAID(Redundant Arrays of Inexpensive/Independent Disks)技術を用いて、システムを高可用化しているものが多い。RAID技術とは、ホスト計算機などの上位装置から受け付けたライトデータからパリティなどの冗長データを算出し、ライトデータとパリティとをそれぞれ異なる記憶デバイスに分散格納する技術である。RAID技術を採用することで、一部の記憶デバイスに障害が発生し、その記憶デバイスからデータを読み出せなくなった場合でも、その他の記憶デバイスに格納されている情報を用いて、データを再生成することができる。データを再生成する処理のことを、リビルド処理と呼ぶ。 Many storage devices use a so-called RAID (Redundant Arrays of Inexpensive / Independent Disks) technology to make the system highly available. The RAID technology is a technology for calculating redundant data such as parity from write data received from a host device such as a host computer, and distributing and storing the write data and parity in different storage devices. By adopting RAID technology, even if a failure occurs in some storage devices and data cannot be read from the storage devices, data is regenerated using information stored in other storage devices. can do. The process of regenerating data is called a rebuild process.
 RAID技術を採用するストレージ装置は、ホスト計算機等に提供するボリューム上の記憶領域を、ストライプと呼ばれる所定サイズのデータユニットに区分し、これらのストライプのうちN個(N≧1)のストライプを用いてM個(M≧1)の冗長データ(パリティ)を生成する。なお、ここで生成されるM個の冗長データのサイズはいずれも、ストライプと等しい。これらの冗長データもストライプと呼ばれ、あるいはパリティストライプと呼ばれることもある。また、N個のストライプと、このN個のストライプから生成されたM個のパリティストライプのセットを、ストライプラインと呼ぶ。 A storage apparatus employing RAID technology divides a storage area on a volume provided to a host computer or the like into data units of a predetermined size called stripes, and uses N stripes (N ≧ 1) among these stripes. To generate M (M ≧ 1) redundant data (parity). Note that the size of the M redundant data generated here is equal to the stripe. These redundant data are also called stripes or sometimes called parity stripes. A set of N stripes and M parity stripes generated from the N stripes is called a stripe line.
 ストレージ装置は、1ストライプラインに属する(N+M)個のストライプをそれぞれ異なる記憶デバイスに格納する。各ストライプが異なる記憶デバイスに格納されることにより、特定の記憶デバイスが故障した場合でも、その他の記憶デバイスに格納されているストライプを用いて、故障した記憶デバイスに格納されていたデータを再生成することができる。そのためこの場合、ストレージ装置は少なくとも(N+M)個の記憶デバイスを有していれば、1または複数の記憶デバイスに障害が発生した場合でも、データの再生成が可能である。 The storage device stores (N + M) stripes belonging to one stripe line in different storage devices. By storing each stripe on a different storage device, even if a specific storage device fails, the data stored on the failed storage device is regenerated using the stripe stored on the other storage device. can do. Therefore, in this case, if the storage apparatus has at least (N + M) storage devices, data can be regenerated even if one or more storage devices fail.
 ただし近年では、たとえば特許文献1に開示されているように、ストライプを(N+M)個よりも多くの記憶デバイスに分散格納する、分散RAIDと呼ばれる技術がある。より多くの記憶デバイスにデータを分散格納することにより、処理負荷を分散させることができるという効果がある。 However, in recent years, as disclosed in Patent Document 1, for example, there is a technique called distributed RAID in which stripes are distributed and stored in more than (N + M) storage devices. There is an effect that the processing load can be distributed by distributing and storing data in more storage devices.
 RAID技術では、リビルド処理により再生成されたデータは、あらかじめ確保していた予備の記憶領域に格納される。予備の記憶領域として、データあるいは冗長データを一切格納していない、空きの記憶デバイス(スペアドライブ)が確保されることが一般的だが、特許文献1に開示のストレージ装置では、データあるいは冗長データを格納するために用いられている各記憶デバイスの一部の領域を未使用領域(スペア領域)として確保しておき、再生成されたデータを各記憶デバイスのスペア領域に分散格納する方法が開示されている。このようにすることにより、再生成されたデータの書き込み先が分散されるため、リビルド処理時にも負荷分散できるという効果が期待できる。 In RAID technology, the data regenerated by the rebuild process is stored in a reserved storage area secured in advance. In general, an empty storage device (spare drive) that does not store any data or redundant data is secured as a spare storage area. However, in the storage device disclosed in Patent Document 1, data or redundant data is stored. A method is disclosed in which a part of each storage device used for storage is reserved as an unused area (spare area), and the regenerated data is distributed and stored in the spare area of each storage device. ing. By doing so, the write destination of the regenerated data is distributed, so that it is possible to expect an effect that the load can be distributed even during the rebuild process.
国際公開第2014/115320号International Publication No. 2014/115320
 ところで近年では、ビットコストの削減のニーズの高まりに伴い、ストレージ装置に格納するデータの量を削減するための技術が現れている。このための技術のひとつに、データを可逆圧縮(以降、単に圧縮と記す)して記録する技術が知られている。圧縮技術を用いてデータサイズを縮小し、記憶デバイスに記録すると、データの保持コスト(記憶媒体のビットコスト、ストレージ装置の消費電力コスト等)を削減できる。 By the way, in recent years, with increasing needs for bit cost reduction, a technique for reducing the amount of data stored in a storage device has appeared. As one of the techniques for this purpose, a technique for recording data by lossless compression (hereinafter simply referred to as compression) is known. When the data size is reduced using a compression technique and recorded in a storage device, the data retention cost (bit cost of the storage medium, power consumption cost of the storage device, etc.) can be reduced.
 しかしながらデータを圧縮する場合、データ内容に依存して圧縮率が変動する。そのため、ストレージ装置に格納されたデータの圧縮率が当初の想定よりも悪かった場合、ストレージ装置にデータを格納しきれないケースが発生し得る。たとえば先に述べたリビルド処理が行われた時、再生成されたデータがスペア領域に格納できない事態が発生する事もあり得、その場合データが失われることになり得る。 However, when compressing data, the compression ratio varies depending on the data contents. Therefore, when the compression rate of the data stored in the storage device is worse than originally assumed, there may occur a case where data cannot be stored in the storage device. For example, when the rebuild process described above is performed, there may occur a situation in which the regenerated data cannot be stored in the spare area. In this case, the data may be lost.
 本発明の一態様に係るストレージ装置は、本発明の一態様に係るストレージ装置は、ホスト計算機からのライトデータを受け付けるストレージコントローラと、所定量の物理領域を有し、データを圧縮して物理領域に格納する複数の記憶デバイスとを有する。ストレージコントローラは、(N+M)台より多くの台数の前記記憶デバイスをパリティグループとして管理しており、ホスト計算機から書き込まれたN個のデータからM個のパリティを生成し、このN個のデータ及びM個のパリティをそれぞれ、パリティグループ内の異なる前記記憶デバイスに格納する。一方記憶デバイスの論理記憶空間上には、データを格納する領域であるデータストライプとパリティを格納する領域であるパリティストライプに加え、リビルド処理時に復元されたデータを格納する領域であるスペアストライプが設けられている。 A storage apparatus according to an aspect of the present invention includes a storage controller that receives write data from a host computer, a predetermined amount of physical area, and compresses the data to the physical area. A plurality of storage devices. The storage controller manages more than (N + M) storage devices as a parity group, generates M parity from N data written from the host computer, and generates the N data and Each of the M parities is stored in different storage devices in the parity group. On the other hand, on the logical storage space of the storage device, in addition to a data stripe that is an area for storing data and a parity stripe that is an area for storing parity, a spare stripe that is an area for storing data restored during the rebuild process is provided. It has been.
 ストレージコントローラは通常時には、スペアストライプに書き込まれるデータを格納するために必要な量の物理領域の使用を抑止している。そして記憶デバイスに故障が発生したことを契機に、スペアストライプに書き込まれるデータを格納するために必要な量の物理領域の使用を許可することを特徴とする。 The storage controller normally suppresses the use of the physical area necessary for storing the data written to the spare stripe. Then, when a failure occurs in the storage device, use of a physical area of an amount necessary for storing data to be written in the spare stripe is permitted.
 本発明により、記憶デバイス故障時のデータ損失を防ぐことができる。 The present invention can prevent data loss when a storage device fails.
本発明の実施例に係るストレージ装置の構成図である。It is a block diagram of the storage apparatus based on the Example of this invention. SSDの構成図である。It is a block diagram of SSD. 本実施例に係るストレージ装置における、各ストライプの配置例を示す概念図である。FIG. 3 is a conceptual diagram showing an example of arrangement of each stripe in the storage apparatus according to the embodiment. 論理ボリュームと仮想パリティグループの関係を表した図である。It is a figure showing the relationship between a logical volume and a virtual parity group. 仮想パリティグループとパリティグループの関係を示した概念図である。It is the conceptual diagram which showed the relationship between a virtual parity group and a parity group. スペア領域の説明図である。It is explanatory drawing of a spare area | region. SSDが提供する論理アドレス空間と圧縮機能の概念を説明する図である。It is a figure explaining the concept of the logical address space and compression function which SSD provides. 論理物理容量管理テーブルの構成を示す図である。It is a figure which shows the structure of a logical physical capacity management table. PG管理テーブルの構成を示す図である。It is a figure which shows the structure of PG management table. 枯渇閾値管理テーブルの構成を示す図である。It is a figure which shows the structure of a depletion threshold value management table. スペア変換テーブルの構成を示す図である。It is a figure which shows the structure of a spare conversion table. I/O処理のフローチャートである。It is a flowchart of an I / O process. 枯渇チェック処理のフローチャートである。It is a flowchart of a depletion check process. リビルド処理のフローチャートである。It is a flowchart of a rebuild process. リビルド処理のフローチャート(2)である。It is a flowchart (2) of a rebuild process. 枯渇容量更新処理のフローチャートである。It is a flowchart of a depletion capacity update process. デステージ処理のフローチャートである。It is a flowchart of a destage process. 実施例2における枯渇チェック処理のフローチャートである。10 is a flowchart of a depletion check process according to the second embodiment.
 以下、図面を参照して、本発明の一実施形態に係るストレージ装置について説明する。なお、本発明は、以下に説明する実施形態に限定されるものではない。 Hereinafter, a storage apparatus according to an embodiment of the present invention will be described with reference to the drawings. Note that the present invention is not limited to the embodiments described below.
 また、以後の説明では「プログラム」を主語として説明を行う場合があるが、正確にはプログラムはCPU(プロセッサ)によって実行されることで、定められた処理が行われる。ただし説明が冗長になることを防ぐため、プログラムを主語として説明することがある。そのため以後の説明において、プログラムを主語として記述されている処理は、実際にはCPUがその処理を実行することを意味する。また、プログラムの一部または全ては専用ハードウェアによって実現されてもよい。また、各種プログラムはプログラム配布サーバや、計算機が読み取り可能な記憶メディアによって各装置にインストールされてもよい。計算機が読み取り可能な記憶メディアとは、非一時的なコンピュータ可読媒体で、例えばICカード、SDカード、DVD等の不揮発性記憶媒体である。 In the following description, “program” may be used as the subject, but precisely, the program is executed by a CPU (processor) to perform a predetermined process. However, to prevent the explanation from becoming redundant, the program may be described as the subject. Therefore, in the following description, the process described with the program as the subject actually means that the CPU executes the process. Further, part or all of the program may be realized by dedicated hardware. Various programs may be installed in each apparatus by a program distribution server or a computer-readable storage medium. The computer-readable storage medium is a non-transitory computer-readable medium such as a non-volatile storage medium such as an IC card, an SD card, or a DVD.
 図1は、本発明の一実施形態に係るストレージ装置を含む情報処理システム(計算機システム)の構成を示す。情報処理システムは、ストレージ装置1と、1以上のホスト2を有する。 FIG. 1 shows a configuration of an information processing system (computer system) including a storage apparatus according to an embodiment of the present invention. The information processing system includes a storage apparatus 1 and one or more hosts 2.
 ストレージ装置1は、Storage Area Network(SAN)3を介してホスト2と接続される。ホスト2は、ユーザが使用するアプリケーションプログラム等が実行される計算機で、ストレージ装置1に対してI/O要求を発行するリクエスターとして動作する。実施例1では、ホスト2はたとえば、メインフレームあるいはパーソナルコンピュータなどの汎用的な計算機である。ホスト2上で実行されるアプリケーションプログラム等は、ストレージ装置1が提供するボリューム(論理ボリューム)に、リードコマンドやライトコマンド等のI/O要求を発行する。 The storage device 1 is connected to the host 2 via a storage area network (SAN) 3. The host 2 is a computer that executes an application program used by a user, and operates as a requester that issues an I / O request to the storage apparatus 1. In the first embodiment, the host 2 is a general-purpose computer such as a main frame or a personal computer. An application program or the like executed on the host 2 issues an I / O request such as a read command or a write command to a volume (logical volume) provided by the storage apparatus 1.
 SAN3はたとえば、ファイバチャネルケーブルやファイバチャネルスイッチによって構成されるネットワークである。 SAN 3 is a network composed of, for example, fiber channel cables and fiber channel switches.
 ストレージ装置1は、ストレージコントローラ(以下、「コントローラ」または「DKC」と略記することもある)10と複数の記憶デバイスを備えるディスクユニット11から構成される。ストレージコントローラ10は、ストレージ装置1で行われるI/O処理などの制御を実行するCPU12、メモリ13、ホスト2とのデータ転送インタフェースであるフロントエンドインタフェース(FE I/F)14、ディスクユニット11とのデータ転送インタフェースであるバックエンドインタフェース(BE I/F)15、管理用I/F16を有し、これらは内部スイッチ17を介して相互接続されている。なお、CPU12やFE I/F14等の各構成要素の数は、図1に示された数に限定されるものではない。 The storage apparatus 1 includes a storage controller (hereinafter also abbreviated as “controller” or “DKC”) 10 and a disk unit 11 including a plurality of storage devices. The storage controller 10 includes a CPU 12 that executes control such as I / O processing performed in the storage apparatus 1, a memory 13, a front-end interface (FE I / F) 14 that is a data transfer interface with the host 2, and a disk unit 11. A back-end interface (BE I / F) 15 and a management I / F 16 which are data transfer interfaces are interconnected via an internal switch 17. In addition, the number of each component, such as CPU12 and FE I / F14, is not limited to the number shown by FIG.
 ディスクユニット11には、ホスト2からのライトデータを格納するための複数の記憶デバイスが搭載され、各記憶デバイスはBE I/F15を介してストレージコントローラ10に接続される。記憶デバイスはたとえば、フラッシュメモリ等の不揮発性半導体メモリを記憶媒体として用いるSSD21や、磁気ディスクを記憶媒体として用いるHDD22である。なお、以下では特に断りのない限り、ディスクユニット11に搭載されている記憶デバイスは全てSSD21であるケースについて説明する。 The disk unit 11 is equipped with a plurality of storage devices for storing write data from the host 2, and each storage device is connected to the storage controller 10 via the BE I / F 15. The storage device is, for example, an SSD 21 that uses a nonvolatile semiconductor memory such as a flash memory as a storage medium, or an HDD 22 that uses a magnetic disk as a storage medium. Hereinafter, a case where all the storage devices mounted on the disk unit 11 are SSDs 21 will be described unless otherwise specified.
 BE I/F15は少なくとも、インタフェースコントローラと転送回路を有する。インタフェースコントローラは、記憶デバイスの用いているプロトコル(一例ではSAS)をストレージコントローラ10内部で用いられている通信プロトコル(一例としてPCI-Express)に変換するためのコンポーネントである。転送回路は、ストレージコントローラ10が、記憶デバイスに対してデータの転送(リード、ライト)を行う際に用いられる。 BE I / F 15 has at least an interface controller and a transfer circuit. The interface controller is a component for converting a protocol (SAS in one example) used by the storage device into a communication protocol (PCI-Express as an example) used in the storage controller 10. The transfer circuit is used when the storage controller 10 transfers data (read, write) to the storage device.
 FE I/F14は、BE I/F15と同様に、少なくともインタフェースコントローラと転送回路を有する。FE I/F14が有するインタフェースコントローラは、ホスト2とストレージコントローラ10間のデータ転送経路で用いられている通信プロトコル(たとえばファイバチャネル)と、ストレージコントローラ10内部で用いられている通信プロトコルを変換するためのものである。 FE I / F 14 has at least an interface controller and a transfer circuit, similarly to BE I / F 15. The interface controller of the FE I / F 14 is for converting the communication protocol (for example, fiber channel) used in the data transfer path between the host 2 and the storage controller 10 and the communication protocol used in the storage controller 10. belongs to.
 CPU12は、ストレージ装置1の各種制御を行う。メモリ13は、CPU12が実行するプログラムや、CPU12が使用するストレージ装置1の各種管理情報を記憶するために用いられる。またメモリ13は、記憶デバイスに対するI/O対象データを一時的に記憶するためにも用いられる。以下、記憶デバイスに対するI/O対象データを一時的に記憶するために用いられる、メモリ13中の記憶領域を、「キャッシュ」と呼ぶ。メモリ13はDRAM、SRAM等の揮発性記憶媒体で構成されるが、別の実施形態として、不揮発性メモリを用いてメモリ14が構成されてもよい。 The CPU 12 performs various controls of the storage device 1. The memory 13 is used to store programs executed by the CPU 12 and various management information of the storage device 1 used by the CPU 12. The memory 13 is also used for temporarily storing I / O target data for the storage device. Hereinafter, the storage area in the memory 13 used for temporarily storing the I / O target data for the storage device is referred to as “cache”. The memory 13 is composed of a volatile storage medium such as DRAM or SRAM, but as another embodiment, the memory 14 may be composed of a non-volatile memory.
 図2は、SSD21の構成例を示す図である。SSD21は、SSDコントローラ200と複数のFMチップ206を有する。SSDコントローラ200は、プロセッサ(CPU)201、上流I/F202、下流I/F203、メモリ204、圧縮/伸張回路207を有し、これらは内部接続スイッチ205を介して相互接続されている。 FIG. 2 is a diagram illustrating a configuration example of the SSD 21. The SSD 21 includes an SSD controller 200 and a plurality of FM chips 206. The SSD controller 200 includes a processor (CPU) 201, an upstream I / F 202, a downstream I / F 203, a memory 204, and a compression / decompression circuit 207, which are interconnected via an internal connection switch 205.
 なお一般に、「SSD」とは、半導体メモリ、とくに不揮発性半導体メモリを用いた記憶デバイスで、かつHDDと同じフォームファクタを有するもののことを意味する語である。ただし本実施例においては、SSDは、複数のフラッシュメモリとそれらを制御するコントローラとを備える記憶デバイス全般を意味する語として用いられ、外観形状等が一般的なHDDやSSDのフォームファクタに限定されるものではない。また、SSDに用いられる不揮発性半導体メモリは、フラッシュメモリの他、磁気抵抗メモリであるMRAM(Magnetoresistive random access memory)や、抵抗変化型メモリであるReRAM(resistance random access memory)、強誘電体メモリであるFeRAM(Ferroelectric random access memory)等の各種半導体メモリであっても良い。 In general, “SSD” is a storage device using a semiconductor memory, particularly a nonvolatile semiconductor memory, and means a device having the same form factor as an HDD. However, in the present embodiment, SSD is used as a word meaning an entire storage device including a plurality of flash memories and a controller for controlling them, and the external shape and the like are limited to general HDD and SSD form factors. It is not something. In addition to the flash memory, the nonvolatile semiconductor memory used for the SSD is a magnetoresistive memory such as MRAM (Magnetoretic Random Access Memory), a resistance variable memory ReRAM (Resistivity Random Access Memory), and a ferroelectric memory. Various semiconductor memories such as a certain FeRAM (Ferroelectric random access memory) may be used.
 上流I/F202は、SSD21とストレージコントローラ10間の通信を行うためのインタフェースコントローラである。上流I/F202は、伝送線(SASリンクや、PCIリンク)を介してストレージコントローラ10のBE I/F15に接続される。一方下流I/F203は、SSDコントローラ200とFMチップ206間の通信を行うためのインタフェースコントローラである。 The upstream I / F 202 is an interface controller for performing communication between the SSD 21 and the storage controller 10. The upstream I / F 202 is connected to the BE I / F 15 of the storage controller 10 via a transmission line (SAS link or PCI link). On the other hand, the downstream I / F 203 is an interface controller for performing communication between the SSD controller 200 and the FM chip 206.
 CPU201は、ストレージコントローラ10から到来する各種コマンドに係る処理等を行う。メモリ204には、SSD21を制御するためのプログラムや、管理情報等が記憶される。またメモリ204の一部の領域は、ストレージコントローラ10からライトコマンドと共に送信されてくるライトデータや、FMチップ206から読み出されたデータを一時的に格納するためのバッファとしても用いられる。メモリ204には、DRAM等の揮発性メモリが用いられる。ただしメモリ202に不揮発性メモリが使用されても良い。 The CPU 201 performs processing related to various commands coming from the storage controller 10. The memory 204 stores a program for controlling the SSD 21, management information, and the like. A part of the memory 204 is also used as a buffer for temporarily storing write data transmitted from the storage controller 10 together with a write command and data read from the FM chip 206. As the memory 204, a volatile memory such as a DRAM is used. However, a nonvolatile memory may be used for the memory 202.
 FMチップ206は、たとえばNAND型フラッシュメモリ等の不揮発性半導体メモリチップである。周知の通り、フラッシュメモリのデータの読み出し・書き込みは、複数のセルの集合で、ページと呼ばれる所定サイズ(たとえば8KB等)の領域ごとに行われる。またデータ消去は、ページの集合であるブロックごとに行われる。 FM chip 206 is a non-volatile semiconductor memory chip such as a NAND flash memory. As is well known, reading / writing of data in the flash memory is performed for each area of a predetermined size (for example, 8 KB) called a page in a set of a plurality of cells. Data erasure is performed for each block which is a set of pages.
 圧縮/伸張回路207は、データの圧縮、または圧縮されたデータの伸張を行う機能を備えたハードウェアである。SSD21は、圧縮/伸張回路207により、ストレージコントローラ10からのライトデータを圧縮してFMチップ206に格納することができる。ただし、ストレージコントローラ10に対しては原則として、透過的にデータ圧縮とデータ伸張を行う。 The compression / decompression circuit 207 is hardware having a function of compressing data or decompressing the compressed data. The SSD 21 can compress the write data from the storage controller 10 by the compression / decompression circuit 207 and store it in the FM chip 206. However, in principle, the storage controller 10 performs data compression and data expansion transparently.
 上では、データの圧縮と伸張が、圧縮/伸張回路207というハードウェアで行われる例について説明したが、必ずしもデータの圧縮、伸張を、ハードウェアを用いて行わなければならないわけではない。CPU201が圧縮、伸張を行うプログラムを実行することによって、データの圧縮と伸張が行われるようにSSD21が構成されていてもよい。 In the above, an example in which data compression and decompression is performed by hardware such as the compression / decompression circuit 207 has been described. However, data compression and decompression are not necessarily performed using hardware. The SSD 21 may be configured such that data is compressed and decompressed by the CPU 201 executing a program that performs compression and decompression.
 続いて、ストレージ装置1で用いられる記憶領域の概念について説明する。ストレージ装置1は、ホスト2からのライトデータを記憶デバイス(SSD21またはHDD22)に格納するが、記憶デバイスが提供する記憶空間を直接ホスト2に提供しない。ストレージ装置1は、ホスト2には記憶デバイスが提供する記憶空間とは異なる記憶空間を提供する。本実施例では、ホスト2に提供される記憶空間のことを「論理ボリューム」と呼ぶ。 Next, the concept of storage areas used in the storage device 1 will be described. The storage apparatus 1 stores the write data from the host 2 in the storage device (SSD 21 or HDD 22), but does not directly provide the host 2 with the storage space provided by the storage device. The storage apparatus 1 provides the host 2 with a storage space different from the storage space provided by the storage device. In this embodiment, the storage space provided to the host 2 is called a “logical volume”.
 ストレージ装置1では、論理ボリューム上の記憶領域を「ストライプ」と呼ぶ所定サイズの部分領域に分割して管理している。ストレージ装置1がホスト2からのライトデータを記憶デバイスに格納する際、所定数(たとえばN個等)のストライプに対して排他的論理和等の所定の演算を施すことで、ストライプと同サイズのM個の冗長データ(パリティ)を作成する。作成された冗長データはストライプと同サイズのため、これは「パリティストライプ」と呼ばれる。一方、冗長データを作成するために用いられたストライプの事は「データストライプ」と呼ばれることもある。また本実施例では、パリティストライプと、当該パリティストライプを生成するために用いられるデータストライプのセットのことを、「ストライプライン」と呼ぶ。 The storage device 1 manages the storage area on the logical volume by dividing it into partial areas of a predetermined size called “stripes”. When the storage device 1 stores the write data from the host 2 in the storage device, a predetermined operation such as exclusive OR is performed on a predetermined number (for example, N) of stripes to obtain the same size as the stripe. M redundant data (parity) are created. Since the created redundant data is the same size as the stripe, it is called a “parity stripe”. On the other hand, a stripe used for creating redundant data is sometimes called a “data stripe”. In this embodiment, a set of a parity stripe and a data stripe used to generate the parity stripe is referred to as a “stripe line”.
 RAID技術では、1ストライプラインに含まれる各ストライプ(データストライプとパリティストライプ)は、それぞれ異なる記憶デバイスに格納される。以下、1つのストライプラインに含まれるデータストライプの数がN個、パリティストライプの数がM個のケースについて説明する(N,Mは1以上の整数である)。この場合、1ストライプラインに含まれる各データストライプとパリティストライプは、(N+M)個の記憶デバイスに分散格納される。伝統的なRAID技術では、1つの論理ボリュームに含まれる複数のストライプラインは、いずれも同じ(N+M)個の記憶デバイスに格納され、この(N+M)個の記憶デバイスの組み合わせは「RAIDグループ」と呼ばれる。本実施例に係るストレージ装置1では、特許文献1と同様に分散RAID技術が用いられており、1つの論理ボリュームに含まれる複数のストライプラインは、(N+M)個よりも多くの記憶デバイスに分散格納される。 In RAID technology, each stripe (data stripe and parity stripe) included in one stripe line is stored in a different storage device. Hereinafter, a case where the number of data stripes included in one stripe line is N and the number of parity stripes is M will be described (N and M are integers of 1 or more). In this case, each data stripe and parity stripe included in one stripe line are distributedly stored in (N + M) storage devices. In the traditional RAID technology, a plurality of stripe lines included in one logical volume are all stored in the same (N + M) storage devices, and the combination of the (N + M) storage devices is called “RAID group”. be called. In the storage apparatus 1 according to the present embodiment, the distributed RAID technology is used as in Patent Document 1, and a plurality of stripe lines included in one logical volume are distributed to more than (N + M) storage devices. Stored.
 図3~図5を用いて、本実施例に係るストレージ装置1における、各ストライプの配置例を説明する。図3はストライプラインと各記憶デバイスの記憶領域の関係を概念的に表した図である。なお、以下では、1ストライプラインに含まれるデータストライプ数が3、パリティストライプ数が1の例を説明する。 An example of the arrangement of each stripe in the storage apparatus 1 according to this embodiment will be described with reference to FIGS. FIG. 3 is a diagram conceptually showing the relationship between the stripe line and the storage area of each storage device. Hereinafter, an example in which the number of data stripes included in one stripe line is 3 and the number of parity stripes is 1 will be described.
 図3において、要素21-1~21-8はそれぞれ、各SSD21(SSD21-1~SSD21-8)がストレージコントローラ10に提供する記憶空間(後述する「論理アドレス空間」)を表しており、要素21-1~21-8内のボックスはそれぞれ、ストライプ(データストライプ等)を表している。各ボックスのうち、“D”と記載されたボックスがデータストライプを表し、“P”と記載されたボックスはパリティストライプを意味する。また、“S”と記載されたボックスは、SSD21に障害が発生した時に用いられるストライプで、本実施例ではこれを「スペアストライプ」または「スペア領域」と呼ぶ。詳細は後述する。 In FIG. 3, elements 21-1 to 21-8 represent storage spaces (“logical address spaces” to be described later) provided to the storage controller 10 by the respective SSDs 21 (SSD 21-1 to SSD 21-8). Each box in 21-1 to 21-8 represents a stripe (data stripe or the like). Among each box, a box described as “D” represents a data stripe, and a box described as “P” means a parity stripe. A box labeled “S” is a stripe used when a failure occurs in the SSD 21, and in the present embodiment, this is called a “spare stripe” or “spare area”. Details will be described later.
 図3において、要素320-1,320-2はそれぞれストライプラインを表している。伝統的なRAID技術では、同一ストライプラインに属する各ストライプは、記憶デバイス上の同じ位置(アドレス)に存在するが、本実施例に係るストレージ装置1では、同一ストライプラインに属する各ストライプが必ずしも記憶デバイス上の同じアドレスに存在しなくてもよい。 In FIG. 3, elements 320-1 and 320-2 each represent a stripe line. In the traditional RAID technology, each stripe belonging to the same stripe line exists at the same position (address) on the storage device. However, in the storage apparatus 1 according to this embodiment, each stripe belonging to the same stripe line is not necessarily stored. It does not have to exist at the same address on the device.
 また伝統的なRAID技術では、各ストライプラインは同じ記憶デバイスに存在するが、本実施例に係るストレージ装置1では、各ストライプライン320-1,320-2が、(N+M)個より多くの記憶デバイスに分散される(なお、図3の例ではN=3,M=1である)。本実施例では、1つの論理デバイスに属する各ストライプラインが8つの記憶デバイスに分散配置される例を説明することとし、この8つの記憶デバイスの組み合わせを「パリティグループ」と呼ぶ。 In the traditional RAID technology, each stripe line exists in the same storage device. However, in the storage apparatus 1 according to this embodiment, each stripe line 320-1, 320-2 has more than (N + M) storages. (N = 3 and M = 1 in the example of FIG. 3). In this embodiment, an example will be described in which each stripe line belonging to one logical device is distributed and arranged in eight storage devices, and a combination of these eight storage devices is called a “parity group”.
 ホスト2がストレージ装置1にI/O要求(リードコマンドやライトコマンド)を発行する時、論理ボリューム上のアドレス(LBAと呼ばれる)を指定する。ストレージ装置1は受領した論理ボリューム上アドレスを、SSD21のアドレスに変換する必要がある。図4、図5を用いてこのアドレス変換の概要を説明する。 When the host 2 issues an I / O request (read command or write command) to the storage apparatus 1, an address (called LBA) on the logical volume is designated. The storage apparatus 1 needs to convert the received logical volume address to the address of the SSD 21. The outline of this address translation will be described with reference to FIGS.
 図4は論理ボリュームと仮想パリティグループの関係を表した図である。図4において、要素300は論理ボリュームを表し、論理ボリューム300内の各ボックス(D(0),D(1)等のボックス)はストライプ(データストライプ)を表している。また、論理ボリュームにはパリティストライプは含まれない。 FIG. 4 is a diagram showing the relationship between logical volumes and virtual parity groups. In FIG. 4, an element 300 represents a logical volume, and each box (boxes such as D (0) and D (1)) in the logical volume 300 represents a stripe (data stripe). The logical volume does not include a parity stripe.
 一方、要素350-0.350-1,350-2,350-3は、アドレス変換のために、ストレージ装置1によって仮想的に定義された記憶デバイスであり、以下ではこれらを仮想記憶デバイスと呼ぶ。また、仮想記憶デバイス350-0,350-1,350-2,350-3の組み合わせ(図中の要素340)のことを、仮想パリティグループと呼ぶ。仮想パリティグループは、VPGと略記されることもある。仮想パリティグループは、伝統的なRAID技術におけるRAIDグループと同様のもので、同一ストライプライン320に属する各ストライプは、仮想記憶デバイス上の同じアドレスに位置づけられる。たとえば図4において、ストライプD(0),D(1),D(2),(P0)は同一ストライプライン320に属するストライプだが、これらはいずれも仮想記憶デバイスの先頭アドレス(LBA=0)に位置している。そのため、論理ボリューム上のアドレス(LBA)を仮想パリティグループ上のアドレス(仮想記憶デバイス上のアドレス)に変換する処理は、伝統的なRAID技術と同様の、比較的単純な計算で実現可能である。 On the other hand, the elements 350-0.350-1, 350-2, and 350-3 are storage devices that are virtually defined by the storage apparatus 1 for address conversion, and are hereinafter referred to as virtual storage devices. . A combination of virtual storage devices 350-0, 350-1, 350-2, and 350-3 (element 340 in the figure) is called a virtual parity group. The virtual parity group may be abbreviated as VPG. The virtual parity group is similar to the RAID group in the traditional RAID technology, and each stripe belonging to the same stripe line 320 is located at the same address on the virtual storage device. For example, in FIG. 4, stripes D (0), D (1), D (2), and (P0) are stripes belonging to the same stripe line 320, but these are all at the first address (LBA = 0) of the virtual storage device. positioned. Therefore, the process of converting the address (LBA) on the logical volume into the address on the virtual parity group (address on the virtual storage device) can be realized by a relatively simple calculation similar to the traditional RAID technology. .
 図5は、仮想パリティグループとパリティグループの関係を示した概念図である。仮想パリティグループ上のストライプラインに含まれる各ストライプは、パリティグループ内の各記憶デバイス(SSD21)に分散配置される。たとえば図5に示されるように、仮想パリティグループ上のストライプライン320-1に含まれる各ストライプは、SSD21-1,21-2,21-3,21-4に配置され、ストライプライン320-2に含まれる各ストライプは、SSD21-2,21-3,21-4,21-5に配置される。ただし上で述べた各ストライプのSSD21への配置例は一例で、これ以外の配置が行われてもよい。仮想パリティグループに含まれる仮想記憶デバイスよりも多くの記憶デバイス(SSD21)にストライプが分散配置されることで、I/O処理の負荷が分散されるという利点がある。 FIG. 5 is a conceptual diagram showing the relationship between virtual parity groups and parity groups. Each stripe included in the stripe line on the virtual parity group is distributed and arranged in each storage device (SSD 21) in the parity group. For example, as shown in FIG. 5, each stripe included in the stripe line 320-1 on the virtual parity group is arranged in the SSD 21-1, 21-2, 21-3, 21-4, and the stripe line 320-2 The stripes included in are arranged in SSDs 21-2, 21-3, 21-4, and 21-5. However, the arrangement example of each stripe on the SSD 21 described above is an example, and other arrangements may be performed. There is an advantage that the load of I / O processing is distributed by distributing stripes to more storage devices (SSDs 21) than the virtual storage devices included in the virtual parity group.
 仮想パリティグループ(仮想記憶デバイス)上のアドレスを、パリティグループ(記憶デバイス)のアドレスに変換するための方法には、様々な方法を採用可能である。たとえばストレージ装置1は、仮想パリティグループ(仮想記憶デバイス)上のストライプと、パリティグループ(記憶デバイス)のストライプのマッピング情報を、ストライプ毎に保持してもよい。あるいは特許文献1に示されている例のように、ストレージ装置1は仮想記憶デバイス上のアドレスと、記憶デバイスのアドレスの間に、何らかの変換式(あるいは関数)で表現可能な関係を設けてもよい。 Various methods can be adopted as a method for converting the address on the virtual parity group (virtual storage device) into the address of the parity group (storage device). For example, the storage apparatus 1 may hold the mapping information between the stripes on the virtual parity group (virtual storage device) and the stripes of the parity group (storage device) for each stripe. Alternatively, as in the example shown in Patent Document 1, the storage apparatus 1 may provide a relationship that can be expressed by some conversion formula (or function) between the address on the virtual storage device and the address of the storage device. Good.
 続いて図6を用いて、スペア領域について説明する。伝統的なRAID技術を採用するストレージ装置は、RAIDグループ内の記憶デバイスが故障した場合に備え、1または複数の予備の記憶デバイスを有しており、この記憶デバイスは「スペアドライブ」と呼ばれる。通常時(いずれの記憶デバイスも故障していない場合)、スペアドライブにはデータの書き込みは行われない。記憶デバイスが故障し、故障した記憶デバイスに記録されていたデータがRAID技術により復元(リビルド)されると、復元されたデータはスペアドライブへと格納される。 Subsequently, the spare area will be described with reference to FIG. A storage apparatus employing the traditional RAID technology has one or a plurality of spare storage devices in case a storage device in a RAID group fails, and this storage device is called a “spare drive”. During normal operation (when no storage device has failed), no data is written to the spare drive. When the storage device fails and the data recorded in the failed storage device is restored (rebuilt) by the RAID technology, the restored data is stored in the spare drive.
 一方、本実施例に係るストレージ装置1は、特許文献1に記載の技術と同様に、あらかじめパリティグループ内の各記憶デバイスに、復元されたデータを格納するための領域が設けられている。この領域は通常時(記憶デバイスに故障が発生していない場合)には使用されず、いずれかの記憶デバイスに障害が発生した際に用いられる。先に述べたとおり、この領域のことを「スペア領域」または「スペアストライプ」と呼ぶ。また本実施例では、記憶デバイス内の全ストライプのうち、スペアストライプの占める比率、つまり、
 記憶デバイス内のスペアストライプ数÷記憶デバイス内全ストライプ数
で表現される値を「スペア領域比率」と呼ぶ。
On the other hand, the storage apparatus 1 according to the present embodiment is provided with an area for storing restored data in advance in each storage device in the parity group, as in the technique described in Patent Document 1. This area is not used during normal times (when no failure has occurred in the storage device), but is used when a failure has occurred in any storage device. As described above, this area is called a “spare area” or “spare stripe”. In this embodiment, the ratio of the spare stripe to the total stripe in the storage device, that is,
A value expressed by the number of spare stripes in the storage device ÷ the total number of stripes in the storage device is referred to as “spare area ratio”.
 図6は、図3と同じパリティグループの構成を表している。図6において、“S”と記載されたボックスがスペアストライプである。たとえば1つのSSD21(図ではSSD21-1)が故障した場合、一部のスペアストライプが、復元したデータを格納するために用いられる(図6では“S→D”と記載されたボックスが、復元したデータ(またはパリティ)を格納するために用いられるスペアストライプを表している)。 FIG. 6 shows the same parity group configuration as FIG. In FIG. 6, a box labeled “S” is a spare stripe. For example, if one SSD 21 (SSD 21-1 in the figure) fails, some spare stripes are used to store the restored data (the box labeled “S → D” in FIG. 6 is restored). Represents the spare stripe used to store the data (or parity) generated).
 伝統的なRAID技術のように、特定の記憶デバイス(スペアドライブ)に復元されたデータが格納されると、スペアドライブに負荷が集中することになる。本実施例(または特許文献1)のように、パリティグループ内の各記憶デバイスにスペアストライプを設け、復元したデータが各記憶デバイスのスペアストライプに格納されるようにすると、データ復旧時に負荷が特定の記憶デバイスに集中することを防ぐことができる。データ復旧時の処理の詳細は後述する。 When the restored data is stored in a specific storage device (spare drive) as in the traditional RAID technology, the load is concentrated on the spare drive. As in this embodiment (or Patent Document 1), if a spare stripe is provided for each storage device in the parity group and the restored data is stored in the spare stripe of each storage device, the load is specified at the time of data recovery. It is possible to prevent concentration on the storage device. Details of processing at the time of data recovery will be described later.
 続いて、SSD21の有する圧縮機能、及びSSD21がストレージコントローラ10に提供する記憶空間(論理アドレス空間と呼ぶ)について、図7を参照しながら説明する。先に述べたとおり、SSD21は圧縮伸張回路207により、ストレージコントローラ10からのライトデータを圧縮してFMチップ206に格納する。ただし、ストレージコントローラ10に対しては原則として、透過的にデータ圧縮を行う。 Subsequently, a compression function of the SSD 21 and a storage space (referred to as a logical address space) provided by the SSD 21 to the storage controller 10 will be described with reference to FIG. As described above, the SSD 21 compresses the write data from the storage controller 10 by the compression / decompression circuit 207 and stores it in the FM chip 206. However, in principle, data compression is performed transparently for the storage controller 10.
 具体的には以下のような処理が行われる。SSD21はストレージコントローラ10に対し、所定のサイズの記憶空間を提供する。本実施例ではこの記憶空間を「論理アドレス空間」と呼ぶ。図7では、要素20が論理アドレス空間を表している。ストレージコントローラ10がSSD21にデータを書き込む際には、この論理アドレス空間上のアドレスとライト対象データのサイズを指定したライトコマンドを発行する。一例として、ストレージコントローラ10がSSD21に対し、論理アドレス空間の先頭(アドレス0)に64KBのデータを書き込むライトコマンド(及び64KBのライトデータ)を送信したとする。またSSD21がこの64KBのデータを圧縮した結果、8KBの圧縮データになり、この8KBの圧縮データがFMチップ206に格納されたとする。 Specifically, the following processing is performed. The SSD 21 provides a storage space of a predetermined size to the storage controller 10. In this embodiment, this storage space is called a “logical address space”. In FIG. 7, element 20 represents a logical address space. When the storage controller 10 writes data to the SSD 21, it issues a write command specifying the address in this logical address space and the size of the write target data. As an example, it is assumed that the storage controller 10 transmits a write command (and 64 KB write data) for writing 64 KB data to the head (address 0) of the logical address space to the SSD 21. Further, it is assumed that the SSD 21 compresses the 64 KB data to result in 8 KB compressed data, and the 8 KB compressed data is stored in the FM chip 206.
 この状態において、ストレージコントローラ10がこのデータを読み出す場合には、論理アドレス空間の先頭(アドレス0)とリードデータサイズ(たとえば64KB)を指定したリードコマンドを発行することで、先ほど格納した64KBのデータを読み出すことができる。読み出しの過程で、SSD21は圧縮伸張回路207により、8KBの圧縮データを伸張(復元)することで、圧縮前の64KBのデータを得て、SSD21は、伸張されたデータをストレージコントローラ10に返送するからである。そのためストレージコントローラ10は、(実際にはデータが圧縮されて格納されている場合でも)論理アドレス空間上にデータが非圧縮状態で格納されているかのように認識する。 In this state, when the storage controller 10 reads this data, by issuing a read command designating the head of the logical address space (address 0) and the read data size (for example, 64 KB), the 64 KB data stored earlier. Can be read out. During the reading process, the SSD 21 decompresses (restores) 8 KB of compressed data by the compression / decompression circuit 207 to obtain 64 KB of data before compression, and the SSD 21 returns the decompressed data to the storage controller 10. Because. Therefore, the storage controller 10 recognizes as if the data is stored in an uncompressed state in the logical address space (even if the data is actually compressed and stored).
 論理アドレス空間上の領域と、FMチップ206が有する記憶領域(これを「物理領域と呼ぶ」)との関係(マッピング)は静的でなくても良い。SSD21は論理アドレス空間上の各領域とFMチップ206の物理領域とのマッピングを管理しており、マッピングは動的に変更される。たとえば図7の例では、論理アドレス空間上の領域401に書き込まれたデータ(の圧縮データ)は、FMチップ206の物理領域411に格納されている状態を表している。この時にはSSD21は、領域401には物理領域411がマップされているという情報を管理している。ここでSSD21がストレージコントローラ10から、領域401に対する更新要求を受け付けると、SSD21はその更新要求とともに書き込まれたデータの圧縮データを生成するとともに、この圧縮データを格納すべき、新たな物理領域を確保し、確保された物理領域に圧縮データを格納する。そしてSSD21は、領域411には、今回確保された物理領域がマップされるように、マッピングを変更する。 The relationship (mapping) between the area in the logical address space and the storage area (called “physical area”) of the FM chip 206 may not be static. The SSD 21 manages the mapping between each area on the logical address space and the physical area of the FM chip 206, and the mapping is dynamically changed. For example, in the example of FIG. 7, the data (the compressed data) written in the area 401 on the logical address space represents a state where it is stored in the physical area 411 of the FM chip 206. At this time, the SSD 21 manages information that the physical area 411 is mapped to the area 401. Here, when the SSD 21 receives an update request for the area 401 from the storage controller 10, the SSD 21 generates compressed data of the data written together with the update request, and secures a new physical area in which the compressed data is to be stored. The compressed data is stored in the reserved physical area. Then, the SSD 21 changes the mapping so that the physical area secured this time is mapped to the area 411.
 本実施例において、SSD21がストレージコントローラ10に提供する論理アドレス空間のサイズは「論理容量」と呼ばれる。一方、SSD21が有する全FMチップ206が有する記憶領域の合計容量は「物理容量」と呼ばれる。論理容量は物理容量よりも大きく設定される。これはSSD21に書き込まれたデータが圧縮されるので、物理容量よりも多い量のデータをSSD21に格納できることが期待されるからである。たとえば論理容量は物理容量の8倍に設定されており、SSD21の物理容量が1TBの場合、論理容量は8TBになる(つまりストレージコントローラ10は、SSD21が8TBの記憶容量を持つ記憶デバイスと認識する)。 In this embodiment, the size of the logical address space provided by the SSD 21 to the storage controller 10 is called “logical capacity”. On the other hand, the total capacity of the storage areas of all the FM chips 206 of the SSD 21 is called “physical capacity”. The logical capacity is set larger than the physical capacity. This is because the data written in the SSD 21 is compressed, so that it is expected that a larger amount of data than the physical capacity can be stored in the SSD 21. For example, when the logical capacity is set to 8 times the physical capacity and the physical capacity of the SSD 21 is 1 TB, the logical capacity is 8 TB (that is, the storage controller 10 recognizes that the SSD 21 has a storage capacity of 8 TB). ).
 ただし良く知られているように、データ圧縮を行った場合、圧縮後のデータサイズはデータの内容に依存して変動し得る。論理容量は物理容量の8倍に設定されている場合、ストレージコントローラ10からSSD21に書き込まれた全てのデータが、1/8以下のサイズに圧縮されれば、全てのデータはFMチップ206に格納できる。ただし圧縮後のデータサイズが圧縮前のデータサイズの1/8以下にならない場合もある。そのようなデータがSSD21に書き込まれた場合、(圧縮後の)データを書き込み可能な物理領域がなくなることがある。 However, as is well known, when data compression is performed, the data size after compression can vary depending on the content of the data. When the logical capacity is set to 8 times the physical capacity, if all the data written from the storage controller 10 to the SSD 21 is compressed to a size of 1/8 or less, all the data is stored in the FM chip 206. it can. However, the data size after compression may not be less than 1/8 of the data size before compression. When such data is written to the SSD 21, there may be no physical area in which data (after compression) can be written.
 本実施例では、データを書き込み可能な物理領域がなくなった状態のことを、「物理領域が枯渇した」状態と呼ぶ。物理領域が枯渇すると、SSD21はストレージコントローラ10から受け付けたライトデータを物理領域に格納できなくなるため、本実施例に係るSSD21は、データを書き込み可能な物理領域が所定量(たとえば全物理領域の10%)を下回った時、それ以降ストレージコントローラ10からのライト要求を受け付けないようにする。詳細は後述する。 In this embodiment, the state where there is no physical area in which data can be written is referred to as “the physical area is depleted”. When the physical area is depleted, the SSD 21 cannot store the write data received from the storage controller 10 in the physical area. Therefore, the SSD 21 according to the present embodiment has a predetermined amount of physical area into which data can be written (for example, 10% of all physical areas). %), The write request from the storage controller 10 is not accepted thereafter. Details will be described later.
 図3や図6を用いて説明したパリティグループにこのSSD21(つまり圧縮機能を備えた記憶デバイス)を使用すると、以下の問題が発生することがあり得る。図3や図6に示されているように、ストレージコントローラ10はパリティグループを構成するSSD21の記憶空間(論理アドレス空間)上に、データストライプとパリティストライプの他、スペアストライプを設けている。スペアストライプはパリティグループ内のいずれかの記憶デバイス(SSD21)が故障しない限りは、使用されない(書込みが行われない)領域である。 When the SSD 21 (that is, a storage device having a compression function) is used for the parity group described with reference to FIGS. 3 and 6, the following problems may occur. As shown in FIGS. 3 and 6, the storage controller 10 provides a spare stripe in addition to the data stripe and the parity stripe on the storage space (logical address space) of the SSD 21 constituting the parity group. The spare stripe is an area that is not used (write is not performed) unless any storage device (SSD 21) in the parity group fails.
 SSD21の論理アドレス空間上の、ほとんどのデータストライプ及びパリティストライプに書き込みが行われ、その結果SSD21の使用可能な物理領域が殆どなくなった場合を想定する。この状態の時にパリティグループ内の何れかのSSD21が故障すると、ストレージコントローラ10は故障したSSD21のデータストライプ(またはパリティストライプ)に格納されていた情報を復元するとともに、復元された情報を故障していないSSD21のスペアストライプに書き込もうとする。しかしこの時点で使用可能な物理領域が枯渇していると、ストレージコントローラ10は復元された情報を書き込めず、データ損失が発生する。本実施例に係るストレージ装置1では、リビルド処理時に復元されたデータが書き込めないことがないような制御を行う。以下でこの制御の詳細を説明する。 It is assumed that writing is performed to almost all data stripes and parity stripes on the logical address space of the SSD 21, and as a result, there is almost no usable physical area of the SSD 21. If any SSD 21 in the parity group fails in this state, the storage controller 10 restores the information stored in the data stripe (or parity stripe) of the failed SSD 21 and fails the restored information. An attempt is made to write to a spare stripe of no SSD 21. However, if the usable physical area is depleted at this time, the storage controller 10 cannot write the restored information and data loss occurs. In the storage apparatus 1 according to the present embodiment, control is performed so that data restored during the rebuild process cannot be written. Details of this control will be described below.
 まず、ストレージ装置1が有する管理情報のうち、本実施例で説明されるリビルド処理に関係する管理情報について説明する。図8は論理物理容量管理テーブル800の例を示している。論理物理容量管理テーブル800は、各記憶デバイスの容量(論理容量、物理容量)に関する情報を記録するためのテーブルで、メモリ13に格納される。 First, management information related to the rebuild process described in the present embodiment will be described among the management information of the storage apparatus 1. FIG. 8 shows an example of the logical physical capacity management table 800. The logical physical capacity management table 800 is a table for recording information on the capacity (logical capacity, physical capacity) of each storage device, and is stored in the memory 13.
 論理物理容量管理テーブル800の各行(レコード)には、1つの記憶デバイスについての情報が格納されている。このレコードは、PG#(801)、PDEV#(802)、論理容量(803)、物理容量(804)、論理使用量(805)、物理使用量(806)、ステータス(807)のカラムを有する。 Information about one storage device is stored in each row (record) of the logical physical capacity management table 800. This record has columns of PG # (801), PDEV # (802), logical capacity (803), physical capacity (804), logical usage (805), physical usage (806), and status (807). .
 PDEV#(802)は、記憶デバイスの識別番号である。PG#(801)は、記憶デバイスの属するパリティグループの識別番号である。本実施例では、記憶デバイスの識別番号を“PDEV番号”と呼ぶ。PDEV番号は“PDEV#”と表記されることもある。またパリティグループの識別番号は“PG番号”と呼ばれ、“PG#”と表記されることもある。 PDEV # (802) is an identification number of the storage device. PG # (801) is the identification number of the parity group to which the storage device belongs. In this embodiment, the identification number of the storage device is referred to as “PDEV number”. The PDEV number may be written as “PDEV #”. Further, the identification number of the parity group is called “PG number” and may be written as “PG #”.
 論理容量(803)は記憶デバイスの論理容量を表し、物理容量(804)は記憶デバイスの物理容量を表す。 The logical capacity (803) represents the logical capacity of the storage device, and the physical capacity (804) represents the physical capacity of the storage device.
 論理使用量(805)、物理使用量(806)はそれぞれ、記憶デバイスの論理使用量と物理使用量を表す。なお、本実施例における論理使用量と物理使用量の定義は以下の通りである。論理使用量は、論理アドレス空間のうち、ストレージコントローラ10からアクセスのあった領域(書き込みが行われた領域)の合計サイズである。物理使用量は、ストレージコントローラ10から書き込みが行われた領域に対して割り当てられている物理領域の合計サイズである。図5において、論理アドレス空間20上の領域401,402,403に対してのみ、ストレージコントローラ10から書き込みが行われ、領域401,402,403のサイズがいずれも64KBの場合、論理使用量は192KBである。また領域401,402,403のそれぞれに対してストレージコントローラ10から書き込まれたデータの圧縮後データ(いずれも8KBに圧縮された前提とする)が、FMチップ内の領域411,412,413に書き込まれた場合、物理使用量は24KBである。 The logical usage (805) and physical usage (806) represent the logical usage and physical usage of the storage device, respectively. The definitions of the logical usage amount and the physical usage amount in the present embodiment are as follows. The logical usage is the total size of the area accessed from the storage controller 10 (the area where writing has been performed) in the logical address space. The physical usage is the total size of the physical area allocated to the area written from the storage controller 10. In FIG. 5, when the storage controller 10 writes only to the areas 401, 402, and 403 on the logical address space 20, and the size of each of the areas 401, 402, and 403 is 64 KB, the logical usage amount is 192 KB. It is. In addition, the data after compression of the data written from the storage controller 10 in each of the areas 401, 402, and 403 (which is assumed to be compressed to 8 KB) is written in the areas 411, 412, and 413 in the FM chip. In this case, the physical usage amount is 24 KB.
 ステータス(807)は、記憶デバイスの状態を表す。ステータス(807)が“1”の場合、記憶デバイスが故障しておりアクセスできない状態にあることを表す。 Status (807) represents the state of the storage device. When the status (807) is “1”, this indicates that the storage device has failed and cannot be accessed.
 これらの情報のうち、記憶デバイス(SSD21)から情報を得なければならない情報(たとえば物理容量や物理使用量等)については、ストレージコントローラ10は記憶デバイスに、これらの情報(論理容量(803)、物理容量(804)、論理使用量(805)、物理使用量(806)に格納する情報)を取得するためのリクエストを(たとえば定期的に)発行し、得られた情報を論理容量(803)、物理容量(804)、論理使用量(805)、物理使用量(806)に格納する。なお、論理容量や物理容量は変動する値ではないため、ストレージコントローラ10は記憶デバイスの使用開始時に1回、論理容量や物理容量の取得を行い、その後は定期的に物理使用量を記憶デバイスから取得するようにしてもよい。 Among these pieces of information, for information (for example, physical capacity and physical usage) that must be obtained from the storage device (SSD 21), the storage controller 10 stores the information (logical capacity (803), A request for acquiring physical capacity (804), logical usage (805), and information stored in physical usage (806) (for example, periodically) is issued, and the obtained information is logical capacity (803). , Physical capacity (804), logical usage (805), and physical usage (806). Since the logical capacity and the physical capacity are not variable values, the storage controller 10 acquires the logical capacity and the physical capacity once at the start of use of the storage device, and thereafter periodically acquires the physical usage from the storage device. You may make it acquire.
 図9は、PG管理テーブル900の構成例である。PG管理テーブル900は、パリティグループについての情報を管理するためのテーブルで、メモリ13に格納される。PG管理テーブル900の各レコードには1つのパリティグループについての情報が格納されている。以下、レコード内の各カラムの内容を説明する。 FIG. 9 is a configuration example of the PG management table 900. The PG management table 900 is a table for managing information about parity groups, and is stored in the memory 13. Information about one parity group is stored in each record of the PG management table 900. Hereinafter, the contents of each column in the record will be described.
 カラムPG#(801)は、PG番号を格納するためのカラムで、ドライブタイプ(902)には、パリティグループを構成する記憶デバイスの種類を示す情報が格納される。図9の例では、ドライブタイプ(902)に“NF”が格納されている場合、そのパリティグループはSSD21で構成されていることを表し、“HDD”が格納されている場合、パリティグループがHDD22から構成されていることを表す。原則として、1つのパリティグループに使用される各記憶デバイスの種類はいずれも同じである。 The column PG # (801) is a column for storing the PG number, and the drive type (902) stores information indicating the types of storage devices constituting the parity group. In the example of FIG. 9, when “NF” is stored in the drive type (902), it indicates that the parity group is configured by the SSD 21. When “HDD” is stored, the parity group is the HDD 22. It is composed of In principle, the types of storage devices used for one parity group are the same.
 容量(903)は、パリティグループを構成する記憶デバイスの論理容量を表す。原則として1つのパリティグループに使用される記憶デバイスは同じである。ただし異なる論理容量の記憶デバイスがパリティグループ内に含まれていてもよい。異なる論理容量の記憶デバイスがパリティグループ内に含まれている場合、容量(903)には、パリティグループ内の記憶デバイスのうち、最も論理容量の小さい記憶デバイスの論理容量が格納される。 The capacity (903) represents the logical capacity of the storage devices constituting the parity group. In principle, the storage devices used for one parity group are the same. However, storage devices having different logical capacities may be included in the parity group. When storage devices having different logical capacities are included in the parity group, the logical capacity of the storage device having the smallest logical capacity among the storage devices in the parity group is stored in the capacity (903).
 圧縮(904)は、パリティグループ内の記憶デバイスが圧縮機能を有するかを示す。圧縮(904)に“ON”が格納されている場合、そのパリティグループ内の記憶デバイスは圧縮機能を有し、パリティグループに書き込まれたデータは圧縮されることを意味する。 Compression (904) indicates whether the storage device in the parity group has a compression function. When “ON” is stored in the compression (904), it means that the storage device in the parity group has a compression function, and the data written in the parity group is compressed.
 コピーポインタ(905)は、リビルド時に用いられる情報で、故障した記憶デバイスの領域(論理アドレス空間上領域)の中で、リビルド中領域のアドレス(LBA)が格納される。また、パリティグループ内の記憶デバイスがいずれも故障しておらず、リビルド処理が行われていない場合、コピーポインタ(905)には無効値(“NULL”と呼ばれる)が格納される。本実施例において、無効値(NULL)にはたとえば、-1などの、記憶デバイスのアドレスに通常用いられない値が用いられる。 The copy pointer (905) is information used at the time of rebuilding, and stores the address (LBA) of the rebuilding area in the failed storage device area (logical address space area). If none of the storage devices in the parity group has failed and the rebuild process has not been performed, an invalid value (referred to as “NULL”) is stored in the copy pointer (905). In this embodiment, the invalid value (NULL) is a value that is not normally used for the address of the storage device, such as -1.
 本実施例に係るストレージ装置1がリビルド処理を行うとき、故障した記憶デバイスの先頭ストライプから順にデータ復旧が行われる。コピーポインタ(905)の初期値は0(先頭ストライプのLBA)が記録され、コピーポインタ(905)で指し示されるストライプについてリビルドが完了されると、コピーポインタ(905)が次のストライプのアドレスになるよう更新される。そのため、故障した記憶デバイス内の領域のうち、コピーポインタ(905)未満のアドレスのデータは、既に復元されて他の記憶デバイスのスペアストライプに格納されていることを意味し、コピーポインタ(905)以上のアドレスのデータはまだ復元されていないことを意味する。コピーポインタ(905)の用いられ方の詳細は後述する。 When the storage apparatus 1 according to the present embodiment performs the rebuild process, data recovery is performed in order from the first stripe of the failed storage device. The initial value of the copy pointer (905) is recorded as 0 (LBA of the first stripe), and when rebuilding is completed for the stripe indicated by the copy pointer (905), the copy pointer (905) is set to the address of the next stripe. Will be updated. Therefore, it means that the data of the address less than the copy pointer (905) in the area in the failed storage device has already been restored and stored in the spare stripe of another storage device, and the copy pointer (905) This means that the data at the above address has not been restored yet. Details of how the copy pointer (905) is used will be described later.
 図10は枯渇閾値管理テーブル1000の構成例を示す。先に述べたとおり、SSD21は物理領域が枯渇すると、ストレージコントローラ10はそのSSD21に書き込みができない。そのためストレージコントローラ10はSSD21の物理領域が枯渇していないか確認する必要がある。枯渇閾値管理テーブル1000は物理領域の使用状態を管理するためのテーブルであり、メモリ13に格納される。 FIG. 10 shows a configuration example of the depletion threshold management table 1000. As described above, when the physical area of the SSD 21 is exhausted, the storage controller 10 cannot write to the SSD 21. Therefore, the storage controller 10 needs to check whether the physical area of the SSD 21 is exhausted. The depletion threshold management table 1000 is a table for managing the usage state of the physical area, and is stored in the memory 13.
 なお、枯渇閾値管理テーブル1000には、パリティグループ毎に、パリティグループを構成する記憶デバイスの使用状態が管理される。枯渇閾値管理テーブル1000のレコードは、PG#(1001)、枯渇閾値(1002)、物理容量使用率(1003)、I/O抑止フラグ(1004)のカラムを有する。PG#(1001)は、枯渇閾値管理テーブル1000のレコードが管理対象とするパリティグループの識別番号である。 Note that the depletion threshold value management table 1000 manages the usage state of the storage devices constituting the parity group for each parity group. The record of the depletion threshold management table 1000 has columns of PG # (1001), a depletion threshold (1002), a physical capacity usage rate (1003), and an I / O suppression flag (1004). PG # (1001) is an identification number of a parity group to be managed by the record of the depletion threshold management table 1000.
 枯渇閾値(1002)の説明の前に、物理容量使用率について説明する。物理容量使用率は、記憶デバイスごとに算出可能な値で、たとえばあるSSD21の物理使用量をuとし、物理容量をpとした場合、このSSD21の物理容量使用率は、
 u÷p
を計算することで求められる(なお、図10に示されているように、物理容量使用率(1003)は百分率を用いて表現されているので、正確には物理容量使用率(1002)にはu÷pに100を乗じた値が格納される)。記憶デバイスの物理使用量と物理容量はそれぞれ、論理物理容量管理テーブル800の物理使用量(806)カラムと物理容量(804)カラムに格納されているので、ストレージコントローラ10は論理物理容量管理テーブル800を参照することで、各記憶デバイスの物理容量使用率を算出できる。
Before describing the depletion threshold (1002), the physical capacity usage rate will be described. The physical capacity usage rate is a value that can be calculated for each storage device. For example, when the physical usage amount of a certain SSD 21 is u and the physical capacity is p, the physical capacity usage rate of the SSD 21 is
u ÷ p
(Note that, as shown in FIG. 10, the physical capacity usage rate (1003) is expressed as a percentage, so the physical capacity usage rate (1002) A value obtained by multiplying u ÷ p by 100 is stored). Since the physical usage and the physical capacity of the storage device are stored in the physical usage (806) column and the physical capacity (804) column of the logical physical capacity management table 800, respectively, the storage controller 10 stores the logical physical capacity management table 800. The physical capacity usage rate of each storage device can be calculated by referring to.
 ただし、本実施例に係るストレージ装置1では、枯渇閾値管理テーブル1000(の物理容量使用率(1003))にパリティグループの物理容量使用率を格納して管理している。本実施例では、パリティグループを構成する複数の記憶デバイスの物理容量使用率のうち、最大の物理容量使用率を、パリティグループの使用率と定義している。そのためストレージコントローラ10は、パリティグループに属する各記憶デバイスの物理容量使用率を算出し、その中の最大の物理容量使用率を、枯渇閾値管理テーブル1000の物理容量使用率(1003)に格納する。 However, in the storage apparatus 1 according to the present embodiment, the physical capacity usage rate of the parity group is stored and managed in the depletion threshold management table 1000 (its physical capacity usage rate (1003)). In this embodiment, the maximum physical capacity usage rate is defined as the parity group usage rate among the physical capacity usage rates of a plurality of storage devices constituting the parity group. Therefore, the storage controller 10 calculates the physical capacity usage rate of each storage device belonging to the parity group, and stores the maximum physical capacity usage rate in the physical capacity usage rate (1003) of the depletion threshold management table 1000.
 枯渇閾値(1002)は、ストレージコントローラ10がパリティグループへのデータ書き込み可否を決定するために用いる指標値である。具体的にはストレージコントローラ10は、パリティグループの物理容量使用率(1003)が枯渇閾値(1002)に格納されている値以上の場合、パリティグループへのデータ書き込みを行わない。枯渇閾値(1002)はたとえば90%などの値が設定される。枯渇閾値(1002)は通常時(記憶デバイスに故障が発生していない時)は、変動しない値であり、最初に設定された値が維持される。 The depletion threshold (1002) is an index value used by the storage controller 10 to determine whether or not data can be written to the parity group. Specifically, when the physical capacity usage rate (1003) of the parity group is equal to or greater than the value stored in the depletion threshold (1002), the storage controller 10 does not write data to the parity group. A value such as 90% is set as the depletion threshold (1002). The depletion threshold (1002) is a value that does not vary during normal times (when no failure occurs in the storage device), and the initially set value is maintained.
 本実施例に係るストレージ装置では、初期設定時(パリティグループが定義される時)には本来設定されるべき値よりもやや小さめの値が枯渇閾値(1002)に設定される。そしてリビルド処理時には、枯渇閾値(1002)は、本来設定されるべき値に戻される。枯渇閾値(1002)に本来設定されるべき値は、“補正前枯渇閾値”と呼ばれる。補正前枯渇閾値をY%とし、またスペア領域比率をX%とすると、初期設定時には図10に示されているとおり、“Y%-X%”が設定される。そしてリビルド処理時には本来の値であるY%に戻される。通常時(リビルド処理が行われていない時)には枯渇閾値(1002)に“Y%-X%”が設定されていることにより、スペアストライプに使用すべき物理領域が確保され、復元されたデータ(スペアストライプに書き込まれるデータ)を書き込むべき物理領域が不足することを防ぐことができる。 In the storage apparatus according to the present embodiment, a value slightly smaller than the value that should be originally set is set as the depletion threshold (1002) at the time of initial setting (when a parity group is defined). During the rebuild process, the depletion threshold (1002) is returned to a value that should be originally set. The value that should be originally set in the depletion threshold (1002) is called the “pre-correction depletion threshold”. Assuming that the pre-correction depletion threshold is Y% and the spare area ratio is X%, “Y% −X%” is set at the time of initialization as shown in FIG. At the time of rebuild processing, the original value is returned to Y%. During normal operation (when rebuilding is not being performed), the physical area that should be used for the spare stripe is secured and restored because "Y% -X%" is set in the depletion threshold (1002). It is possible to prevent a shortage of a physical area in which data (data written to the spare stripe) is to be written.
 論理物理容量管理テーブル800と枯渇閾値管理テーブル1000は、ストレージコントローラ10のCPU12で定期的に実行される構成情報管理プログラムによって、定期的に更新される。ホスト2から論理ボリュームにデータが書き込まれることにより、論理物理容量管理テーブル800の論理使用量(805)や物理使用量(806)が更新される。またそれに伴い、枯渇閾値管理テーブル1000の物理容量使用率(1003)も更新される。 The logical physical capacity management table 800 and the depletion threshold management table 1000 are periodically updated by a configuration information management program that is periodically executed by the CPU 12 of the storage controller 10. By writing data from the host 2 to the logical volume, the logical usage (805) and physical usage (806) in the logical physical capacity management table 800 are updated. Accordingly, the physical capacity usage rate (1003) in the depletion threshold management table 1000 is also updated.
 図11は、スペア変換テーブル1100の構成例を示している。スペア変換テーブル1100は、記憶デバイスが故障した時に、リビルドされたデータの格納先のストライプ(スペアストライプ)の位置を特定するために用いられる。スペア変換テーブル1100の各レコードには、故障した記憶デバイス内のストライプの位置情報と、それに対応するスペアストライプの位置情報とが記録される。 FIG. 11 shows a configuration example of the spare conversion table 1100. The spare conversion table 1100 is used to specify the position of the storage destination stripe (spare stripe) of the rebuilt data when the storage device fails. In each record of the spare conversion table 1100, the position information of the stripe in the failed storage device and the position information of the corresponding spare stripe are recorded.
 スペア変換テーブル1100の有するレコードの、各カラムについて説明する。PDEV#(1101)及びアドレス(1102)は、故障した記憶デバイス内のストライプの位置情報である。具体的にはPDEV#(1101)には故障した記憶デバイスのPDEV番号で、アドレス(1102)は故障した記憶デバイス内のストライプのアドレスである。なお、アドレスとして用いられる情報は、たとえばLBA(Logical Block Address)である。 Each column of the record of the spare conversion table 1100 will be described. PDEV # (1101) and address (1102) are stripe position information in the failed storage device. Specifically, PDEV # (1101) is the PDEV number of the failed storage device, and address (1102) is the address of the stripe in the failed storage device. Note that information used as an address is, for example, LBA (Logical Block Address).
 一方、スペアPDEV#(1103)及びアドレス(1104)は、スペアストライプの位置情報である。具体的にはスペアPDEV#(1103)は、スペアストライプの存在する記憶デバイスのPDEV番号で、アドレス(1104)はスペアストライプのアドレスである。 Meanwhile, the spare PDEV # (1103) and the address (1104) are spare stripe position information. Specifically, spare PDEV # (1103) is the PDEV number of the storage device where the spare stripe exists, and address (1104) is the address of the spare stripe.
 たとえば図11において、先頭レコードのPDEV#(1101)は“0x0000”、アドレス(1102)は“0”で、スペアPDEV#(1103)は“0x0004”、アドレス(1104)は“0x1000”である。これは、PDEV#が0x0000のPDEV内の、アドレスが0のストライプ(先頭のストライプ)に格納されていたデータは、リビルド処理により、PDEV#が0x0004のPDEV内の、アドレスが0x1000のストライプ(スペアストライプ)に格納されることを意味している。 For example, in FIG. 11, the PDEV # (1101) of the first record is “0x0000”, the address (1102) is “0”, the spare PDEV # (1103) is “0x0004”, and the address (1104) is “0x1000”. This is because the data stored in the stripe with the address 0 (first stripe) in the PDEV with the PDEV # of 0x0000 is the stripe (spare) with the address of 0x1000 in the PDEV with the PDEV # of 0x0004. Stored in a stripe).
 本実施例では、スペア変換テーブル1100内の各レコードは、パリティグループ内のいずれかの記憶デバイスが故障した時点で作成される。ただし、記憶デバイスが故障した時よりも前の時点で、スペア変換テーブル1100内の各レコードが作成されてもよい。たとえばストレージコントローラ10はパリティグループの使用開始時点に、スペア変換テーブル1100内の各レコードを作成してもよい。また、故障した記憶デバイスのストライプ(PDEV#(1101)及びアドレス(1102)で特定されるストライプ)に対応付けられるスペアストライプ(スペアPDEV#(1103)及びアドレス(1104)で特定されるスペアストライプ)の決定方法は任意であり、本実施例と直接関係しない事項であるため、ここでの説明は略す。 In this embodiment, each record in the spare conversion table 1100 is created when any storage device in the parity group fails. However, each record in the spare conversion table 1100 may be created at a time before the storage device fails. For example, the storage controller 10 may create each record in the spare conversion table 1100 at the start of using the parity group. Further, a spare stripe (spare stripe specified by spare PDEV # (1103) and address (1104)) associated with the stripe of the failed storage device (stripe specified by PDEV # (1101) and address (1102)). Since the determination method is arbitrary and is not directly related to the present embodiment, description thereof is omitted here.
 なお、ストレージ装置1は、上で述べた管理情報以外の情報もメモリ13に記憶している。たとえば図4で説明した、論理ボリュームと仮想パリティグループのマッピングを管理するための情報、図5で説明した、仮想パリティグループとパリティグループのマッピングを管理するための情報等もメモリ13に記憶される。ただしこれらの情報は、本実施例の説明とは直接関係がないため、説明を略す。 The storage device 1 also stores information other than the management information described above in the memory 13. For example, the information for managing the mapping between the logical volume and the virtual parity group described with reference to FIG. 4 and the information for managing the mapping between the virtual parity group and the parity group described with reference to FIG. . However, since these pieces of information are not directly related to the description of the present embodiment, the description is omitted.
 以下では、ストレージ装置1の実施する各種処理の流れを説明していく。ストレージ装置1はメモリ13に、各種処理を行うためのいくつかのプログラムを格納している。ここでは本実施例の説明に関係のあるプログラムのみ、概要を説明する。メモリ13には、ホスト2から受け付けたI/Oコマンド(リードコマンドやライトコマンド。以下では単に「コマンド」と呼ぶ)の処理を行うI/Oプログラム、記憶デバイスへのデータ書き込みを行うデステージプログラム、物理領域が枯渇しているかチェックする枯渇チェックプログラム、リビルド処理を行うリビルドプログラム、が格納されている。 Hereinafter, the flow of various processes performed by the storage apparatus 1 will be described. The storage apparatus 1 stores several programs for performing various processes in the memory 13. Here, only an outline of the program related to the description of the present embodiment will be described. In the memory 13, an I / O program for processing an I / O command (read command or write command; hereinafter simply referred to as “command”) received from the host 2, and a destage program for writing data to the storage device The exhaustion check program for checking whether the physical area is exhausted and the rebuild program for performing the rebuild process are stored.
 まず図12を用いて、I/O処理の流れを説明する。I/O処理は、ホスト2から論理ボリュームへのI/Oコマンドを受領した時に実施される処理で、I/Oプログラムが実行する。また以下では、説明が複雑化することを避けるため、ホスト2からのI/Oコマンドで指定されるアクセス範囲(論理ボリューム上の領域)は、1ストライプサイズよりも小さく、またアクセス範囲が複数のストライプに跨らないケースの例を説明する。 First, the flow of I / O processing will be described with reference to FIG. The I / O processing is performed when an I / O command is received from the host 2 to the logical volume, and is executed by the I / O program. In the following, in order to avoid complicated explanation, the access range (area on the logical volume) specified by the I / O command from the host 2 is smaller than one stripe size, and there are a plurality of access ranges. An example of a case that does not cross the stripe will be described.
 ステップ1201:I/Oプログラムは、I/Oコマンドで指定されている論理ボリュームのアドレスを、仮想パリティグループを構成する仮想記憶デバイス上のアドレスに変換する。 Step 1201: The I / O program converts the address of the logical volume specified by the I / O command into an address on the virtual storage device constituting the virtual parity group.
 ステップ1202:I/Oプログラムは、ステップ1201で求められた仮想記憶デバイス上のアドレスを、パリティグループを構成する記憶デバイス(SSD21)のPDEV番号、そしてこの記憶デバイス上のアドレスに変換する。本実施例ではこの変換処理を「VP変換」と呼ぶこともある。ここで求められるアドレスは、SSD21がストレージコントローラ10に提供する論理アドレス空間上のアドレスである。 Step 1202: The I / O program converts the address on the virtual storage device obtained in Step 1201 into the PDEV number of the storage device (SSD 21) constituting the parity group and the address on this storage device. In this embodiment, this conversion process is sometimes referred to as “VP conversion”. The address obtained here is an address on the logical address space provided by the SSD 21 to the storage controller 10.
 ステップ1203:I/Oプログラムは、ホスト2から受領したI/Oコマンドがライトコマンドかリードコマンドかを判定する。コマンドがライトコマンドだった場合(ステップ1203:Y)、次にステップ1204が行われ、コマンドがリードコマンドの場合(ステップ1203:N)、次にステップ1211が行われる。 Step 1203: The I / O program determines whether the I / O command received from the host 2 is a write command or a read command. If the command is a write command (step 1203: Y), then step 1204 is performed. If the command is a read command (step 1203: N), then step 1211 is performed.
 ステップ1204,1205:ステップ1204でI/Oプログラムは枯渇チェック処理を行う。この処理の詳細は後述するが、I/Oプログラムは枯渇チェックプログラムを呼び出すことで、枯渇チェックプログラムに枯渇チェック処理を行わせる。ステップ1204の結果、物理領域の枯渇が発生していたことが検出された場合(ステップ1205:Y)、CPU12は次にステップ1208を実施し、物理領域が枯渇していなかった場合には(ステップ1205:N)、次にステップ1206が行われる。 Steps 1204 and 1205: In step 1204, the I / O program performs a depletion check process. Although details of this process will be described later, the I / O program calls the depletion check program to cause the depletion check program to perform the depletion check process. If it is detected as a result of step 1204 that the physical area has been exhausted (step 1205: Y), the CPU 12 next executes step 1208. If the physical area has not been exhausted (step 1205) 1205: N), then step 1206 is performed.
 ステップ1206:ホスト2からライトコマンドが発行された場合、ライトコマンドと共に論理ボリュームに書き込むデータ(ライトデータ)がホスト2からストレージ装置1に送られてくる。ステップ1206ではI/Oプログラムは、このライトデータをキャッシュに格納する。なお、キャッシュにデータが格納される際、I/Oプログラムはこのデータに対し、書き込み位置の情報(具体的にはPDEV番号とLBA)を付与して格納しておく。キャッシュに格納されたデータは、後で(適当なタイミングで)、記憶デバイスに書き出される。ストレージコントローラ10が記憶デバイスにデータを書き出す処理は、「デステージ」と呼ばれる。デステージの処理の流れについては後述する。 Step 1206: When a write command is issued from the host 2, data (write data) to be written to the logical volume is sent from the host 2 to the storage device 1 together with the write command. In step 1206, the I / O program stores this write data in the cache. Note that when data is stored in the cache, the I / O program stores the data with write position information (specifically, PDEV number and LBA). The data stored in the cache is later written to the storage device (at an appropriate timing). The process in which the storage controller 10 writes data to the storage device is called “destage”. The flow of destage processing will be described later.
 ステップ1207:I/Oプログラムは、ホスト2にライト処理が完了した旨を応答し、処理を終了する。 Step 1207: The I / O program responds to the host 2 that the write process is completed, and ends the process.
 ステップ1208:この処理は、物理領域が枯渇していると判定された場合に行われる。ここではI/Oプログラムは、ホスト2から送られてきたライトデータの書き込みは行わず、処理を終了する(ホスト2には、データが書き込めない旨を応答する)。 Step 1208: This process is performed when it is determined that the physical area is exhausted. Here, the I / O program does not write the write data sent from the host 2 and ends the processing (responses that the data cannot be written to the host 2).
 ステップ1211:I/Oプログラムは論理物理容量管理テーブル800のステータス(807)を参照することで、ステップ1202で求められたアクセス先の記憶デバイスがアクセス不可か判定する(ステータス(807)が“1”か判定する)。アクセス不可の場合(ステップ1211:Y)、次にステップ1212が行われ、アクセス可能な場合は(ステップ1211:N)、次にステップ1214が行われる。 Step 1211: The I / O program refers to the status (807) in the logical physical capacity management table 800 to determine whether the access destination storage device obtained in Step 1202 is inaccessible (status (807) is “1”. ” When the access is impossible (step 1211: Y), step 1212 is performed next, and when the access is possible (step 1211: N), step 1214 is performed next.
 ステップ1212:I/Oプログラムは、ステップ1202で求められたアクセス対象記憶デバイスのアドレスと、アクセス対象記憶デバイスが属するパリティグループのコピーポインタ(905)を比較する。アクセス対象記憶デバイスのアドレスよりもコピーポインタ(905)が大きい場合(ステップ1212:Y)、そのアドレスに格納されていたデータはリビルド処理により復元されていることを意味する。この場合次にステップ1214(通常リード処理)が行われる。逆にアクセス対象記憶デバイスのアドレスがコピーポインタ(905)以上の場合(ステップ1212:N)、次にステップ1213(コレクションリード処理)が行われる。 Step 1212: The I / O program compares the address of the access target storage device obtained in Step 1202 with the copy pointer (905) of the parity group to which the access target storage device belongs. If the copy pointer (905) is larger than the address of the access target storage device (step 1212: Y), it means that the data stored at that address has been restored by the rebuild process. In this case, step 1214 (normal read processing) is performed next. Conversely, when the address of the access target storage device is not less than the copy pointer (905) (step 1212: N), step 1213 (collection read processing) is performed next.
 ステップ1213:ここではコレクションリード処理が行われる。コレクションリード処理は公知の処理のため、ここでは概要のみ述べる。I/Oプログラムは、アクセス対象のストライプと同一ストライプラインに属する、全ストライプ(データストライプとパリティストライプ)からデータを読み出し、読み出されたデータを用いてリード対象データを復元する。 Step 1213: Here, collection read processing is performed. Since the collection read process is a known process, only the outline will be described here. The I / O program reads data from all stripes (data stripe and parity stripe) belonging to the same stripe line as the access target stripe, and restores the read target data using the read data.
 ステップ1214:I/Oプログラムは、通常リード処理を行う。通常リード処理とは、コレクションリード処理と異なり、データ復元を行うことなく、記憶デバイスに格納されているデータをそのまま読み出す処理のことを言う。ステップ1214では、アクセス対象記憶デバイスが故障していなかった場合(ステップ1211の判定が否定的な場合)には、I/Oプログラムはアクセス対象記憶デバイスからデータを読み出す。一方アクセス対象記憶デバイスが故障している場合(ステップ1211の判定が肯定的な場合)、データ(復元されたデータ)はスペアストライプに記録されている。そのためI/Oプログラムはスペア変換テーブル1100を参照することで、復元されたデータの格納されているスペアストライプを特定し、特定されたスペアストライプからデータを読み出す。 Step 1214: The I / O program performs normal read processing. Unlike the collection read process, the normal read process refers to a process of reading data stored in the storage device as it is without performing data restoration. In step 1214, if the access target storage device has not failed (if the determination in step 1211 is negative), the I / O program reads data from the access target storage device. On the other hand, if the access target storage device is out of order (if the determination in step 1211 is affirmative), the data (restored data) is recorded in the spare stripe. Therefore, the I / O program refers to the spare conversion table 1100 to identify the spare stripe where the restored data is stored, and reads the data from the identified spare stripe.
 たとえばスペア変換テーブル1100の内容が図11に示されている状態で、かつステップ1202で求められたPDEV#及びアドレスがそれぞれ、0x0000,0x0100だった場合の例を説明する。スペア変換テーブル1100の2行目(PDEV#(1101)とアドレス(1102)がそれぞれ、0x0000,0x0100の行)を参照すると、スペアPDEV#(1103)及びアドレス(1104)はそれぞれ、0x0005,0x1000である。この場合I/OプログラムはPDEV#が0x0005の記憶デバイスのアドレス0x1000からデータを読み出す。 For example, an example in which the contents of the spare conversion table 1100 are shown in FIG. 11 and the PDEV # and the address obtained in step 1202 are 0x0000 and 0x0100 will be described. Referring to the second row of spare conversion table 1100 (PDEV # (1101) and address (1102) are rows of 0x0000 and 0x0100, respectively), spare PDEV # (1103) and address (1104) are 0x0005 and 0x1000, respectively. is there. In this case, the I / O program reads data from the address 0x1000 of the storage device whose PDEV # is 0x0005.
 ステップ1215:I/Oプログラムは、ステップ1214で読み出されたデータ、またはステップ1213で復元されたデータをホスト2に返送し、処理を終了する。 Step 1215: The I / O program returns the data read in Step 1214 or the data restored in Step 1213 to the host 2 and ends the process.
 次に図17を用いて、ストレージコントローラ10が記憶デバイスにデータを書き込む時の処理(デステージ)の流れを説明する。デステージ処理は、上で説明したステップ1206で、キャッシュに格納されたデータを記憶デバイスに書き出す時、あるいはリビルド処理(後述する)でストレージコントローラ10が復元データをスペアストライプに書き出す時などに実行される。この処理はデステージプログラムによって行われる。 Next, the flow of processing (destage) when the storage controller 10 writes data to the storage device will be described with reference to FIG. The destage process is executed when the data stored in the cache is written to the storage device in step 1206 described above, or when the storage controller 10 writes the restored data to the spare stripe in the rebuild process (described later). The This process is performed by a destage program.
 ステップ1701:デステージプログラムは、キャッシュ上のデータのうち、まだ記憶デバイスに書き出されていないデータを選択し、またそのデータに付与されている書き込み位置の情報を取得する。デステージプログラムは枯渇チェックプログラムを呼び出すことで、枯渇チェック処理を行う。この時デステージプログラムは、枯渇チェックプログラムに書き込み位置の情報を渡し、書き込み先の記憶デバイスの物理領域が枯渇しているか判定させる。 Step 1701: The destage program selects data that has not yet been written to the storage device from the data on the cache, and obtains information on the write position assigned to the data. The destaging program performs the depletion check process by calling the depletion check program. At this time, the destaging program passes the write position information to the depletion check program, and determines whether the physical area of the write destination storage device is depleted.
 ステップ1702:ステップ1701の結果、物理領域が枯渇していると判明した場合、次にステップ1704が行われ、物理領域が枯渇していない場合には、次にステップ1703が行われる。 Step 1702: If it is determined in step 1701 that the physical area is exhausted, step 1704 is performed next. If the physical area is not exhausted, step 1703 is performed next.
 ステップ1703:デステージプログラムは、データの書き込み先となる記憶デバイスに対してライトコマンドを発行して、データの書き込みを行い、処理を終了する。 Step 1703: The destage program issues a write command to the storage device that is the data write destination, writes the data, and ends the process.
 ステップ1704:デステージプログラムは、記憶デバイスへの書き込みを行わず、処理を終了する。 Step 1704: The destage program ends the process without writing to the storage device.
 続いて、ステップ1204で行われる枯渇チェック処理の流れを、図13を用いて説明する。この処理は枯渇チェックプログラムが実行する。枯渇チェックプログラムは、I/Oプログラム(またはリビルドプログラム)から呼び出されることで、処理を開始する。枯渇チェックプログラムが呼び出される時、呼び出し元のプログラム(I/Oプログラム等)から、アクセス対象記憶デバイスのPDEV番号とアクセス対象ストライプのアドレス(LBA)を受領する。 Subsequently, the flow of the depletion check process performed in step 1204 will be described with reference to FIG. This process is executed by the depletion check program. The depletion check program starts processing by being called from the I / O program (or rebuild program). When the depletion check program is called, the PDEV number of the access target storage device and the address (LBA) of the access target stripe are received from the caller program (I / O program or the like).
 ステップ1303:枯渇チェックプログラムは、アクセス対象記憶デバイスが圧縮機能を有するか判定する。具体的には枯渇チェックプログラムは、まず論理物理容量管理テーブル800を参照することで、アクセス対象記憶デバイスが属するパリティグループのパリティグループ番号を特定し、続いてPG管理テーブル900を参照することで、アクセス対象記憶デバイスが属するパリティグループの圧縮(904)が“ON”か判定する。アクセス対象記憶デバイスが圧縮機能を有さない場合(ステップ1303:N)、次にステップ1307が行われる。アクセス対象記憶デバイスが圧縮機能を有する場合(ステップ1303:Y)、次にステップ1305が行われる。 Step 1303: The depletion check program determines whether the access target storage device has a compression function. Specifically, the depletion check program first refers to the logical physical capacity management table 800 to identify the parity group number of the parity group to which the access target storage device belongs, and then refers to the PG management table 900. It is determined whether the compression (904) of the parity group to which the access target storage device belongs is “ON”. When the access target storage device does not have a compression function (step 1303: N), step 1307 is performed next. When the access target storage device has a compression function (step 1303: Y), step 1305 is performed next.
 ステップ1305:枯渇チェックプログラムは枯渇閾値管理テーブル1000を参照することで、アクセス対象領域の属するパリティグループの物理容量使用率(1003)が、枯渇閾値(1002)以上か判定する。物理容量使用率(1003)が、枯渇閾値(1002)以上の場合(ステップ1305:N)、枯渇チェックプログラムは次にステップ1306を実行する。物理容量使用率(1003)が枯渇閾値(1002)未満の場合(ステップ1305:Y)、次にステップ1307が実行される。 Step 1305: The depletion check program refers to the depletion threshold management table 1000 to determine whether the physical capacity usage rate (1003) of the parity group to which the access target area belongs is greater than or equal to the depletion threshold (1002). When the physical capacity usage rate (1003) is equal to or greater than the depletion threshold (1002) (step 1305: N), the depletion check program next executes step 1306. When the physical capacity usage rate (1003) is less than the depletion threshold (1002) (step 1305: Y), step 1307 is executed next.
 ステップ1306:枯渇チェックプログラムは、アクセス対象のパリティグループでは物理領域の枯渇が発生していると判断し、呼び出し元のプログラムに、物理領域の枯渇が発生した旨を返却し、処理を終了する。 Step 1306: The depletion check program determines that physical area depletion has occurred in the parity group to be accessed, returns to the calling program that the physical area has been depleted, and ends the process.
 ステップ1307:枯渇チェックプログラムは呼び出し元のプログラムに、物理領域の枯渇が発生していない旨を返却し、処理を終了する。 Step 1307: The depletion check program returns to the calling program that the physical area has not been depleted and ends the processing.
 続いてリビルド処理の流れを、図14を用いて説明する。リビルドプログラムがCPU12で実行されることにより、リビルド処理が行われる。リビルド処理は、パリティグループ内の1(または複数の)記憶デバイスが故障したために、ストレージコントローラ10からのアクセスができなくなったことを契機に開始される。以下では故障した記憶デバイスを「故障デバイス」と呼び、また故障デバイスの属するパリティグループの事は「故障PG」と呼ぶ。 Subsequently, the flow of the rebuild process will be described with reference to FIG. When the rebuild program is executed by the CPU 12, a rebuild process is performed. The rebuild process is started when access from the storage controller 10 becomes impossible because one (or a plurality of) storage devices in the parity group have failed. Hereinafter, the failed storage device is referred to as “failed device”, and the parity group to which the failed device belongs is referred to as “failed PG”.
 なお、リビルド処理は、I/O処理(図12)と並行して実行されることが可能である。つまりストレージ装置1は、ホスト2からのI/Oコマンドを受け付けながら、リビルド処理を実行することができる。 It should be noted that the rebuild process can be executed in parallel with the I / O process (FIG. 12). That is, the storage apparatus 1 can execute the rebuild process while receiving an I / O command from the host 2.
 ステップ1401:リビルドプログラムは、故障デバイスの各ストライプに対応するスペアストライプを決定し、スペア変換テーブル1100にその情報を記録する。 Step 1401: The rebuild program determines a spare stripe corresponding to each stripe of the failed device and records the information in the spare conversion table 1100.
 ステップ1402:リビルドプログラムは、故障デバイスが圧縮機能を有している場合(これは故障PGの圧縮(904)カラムを参照することで判断できる)、故障PGの枯渇閾値(1002)を本来の値(補正前枯渇閾値)に戻す。たとえば故障PGのスペア領域比率が9%だった場合、リビルドプログラムは枯渇閾値(1002)に9%を加算することで、枯渇閾値(1002)を大きくする。 Step 1402: If the failed device has a compression function (this can be determined by referring to the column for compression (904) of the failed PG), the rebuilding program sets the failure PG depletion threshold (1002) to the original value. Return to (pre-correction depletion threshold). For example, when the spare area ratio of the faulty PG is 9%, the rebuild program adds 9% to the depletion threshold (1002) to increase the depletion threshold (1002).
 ステップ1403:リビルドプログラムは故障PGのコピーポインタ(905)を初期化する(0を代入する)。 Step 1403: The rebuild program initializes the copy pointer (905) of the fault PG (substitutes 0).
 ステップ1404,ステップ1405:リビルドプログラムは、コピーポインタ(905)で特定されるストライプ(以下ではこれを「修復対象ストライプ」と呼ぶ)のデータ復元を実行する。この処理は公知のRAID技術と同様である。 Step 1404, Step 1405: The rebuild program executes data restoration of the stripe specified by the copy pointer (905) (hereinafter referred to as “repair target stripe”). This process is similar to the known RAID technology.
 具体的にはリビルドプログラムはステップ1404で、修復対象ストライプと同一ストライプラインに属するストライプの位置(所属する記憶デバイスのPDEV#とストライプの存在するLBA)を特定して、それらのストライプを読み出す。これらを求める際に、リビルドプログラムは修復対象ストライプの属する仮想パリティグループ内の仮想記憶デバイス、そして仮想記憶デバイス上のアドレスを求め、さらにそれをもとに仮想パリティグループ内の同一ストライプラインに属する各ストライプのアドレス(各記憶デバイスのPDEV#とLBA)を求めるが、これらの処理については説明を略す。 Specifically, in step 1404, the rebuild program specifies the position of the stripe belonging to the same stripe line as the repair target stripe (PDEV # of the storage device to which it belongs and the LBA where the stripe exists), and reads out those stripes. When obtaining these, the rebuild program obtains the virtual storage device in the virtual parity group to which the stripe to be repaired belongs and the address on the virtual storage device, and based on that, each rebuilding program belongs to the same stripe line in the virtual parity group. The address of the stripe (PDEV # and LBA of each storage device) is obtained, but description of these processes will be omitted.
 続いてステップ1405で、リビルドプログラムは読み出されたストライプを用いてデータを復元し、復元されたデータをスペアストライプに書き込む。修復対象ストライプに対応するスペアストライプの情報は、ステップ1401で生成されていたスペア変換テーブル1100に記録されているので、リビルドプログラムはこれをもとに復元データを書き込むスペアストライプを特定し、書き込みを行う。 Subsequently, in step 1405, the rebuild program restores the data using the read stripe, and writes the restored data in the spare stripe. Since the information of the spare stripe corresponding to the restoration target stripe is recorded in the spare conversion table 1100 generated in step 1401, the rebuild program identifies the spare stripe to which the restoration data is written based on this information, and writes the information. Do.
 ステップ1406:リビルドプログラムは、故障PGのコピーポインタ(905)を更新する。具体的にはコピーポインタ(905)の指し示すアドレスが、修復対象ストライプの次のストライプになるように、リビルドプログラムはコピーポインタ(905)にストライプサイズを加算する。ただし修復対象ストライプの次のストライプがスペアストライプの場合もあり得る。その場合にはリビルドプログラムはコピーポインタ(905)にもう一度ストライプサイズを加算する。スペアストライプは通常時には使用されておらず、データ復元の必要がないからである。 Step 1406: The rebuild program updates the copy pointer (905) of the fault PG. Specifically, the rebuild program adds the stripe size to the copy pointer (905) so that the address pointed to by the copy pointer (905) becomes the stripe next to the restoration target stripe. However, the stripe next to the repair target stripe may be a spare stripe. In that case, the rebuild program adds the stripe size to the copy pointer (905) again. This is because the spare stripe is not normally used and there is no need to restore data.
 ステップ1410:リビルドプログラムは、故障PGのコピーポインタ(905)が、故障デバイスの終端LBAを超過したか判定する。故障PGのコピーポインタ(905)がまだ故障デバイスの終端LBAを超過していない場合(ステップ1410:N)、リビルドプログラムはステップ1404に戻って処理を行う。逆にコピーポインタ(905)が故障デバイスの終端LBAを超過している場合(ステップ1410:Y)次にステップ1411が行われる。 Step 1410: The rebuild program determines whether the copy pointer (905) of the failed PG has exceeded the termination LBA of the failed device. If the copy pointer (905) of the failed PG has not yet exceeded the termination LBA of the failed device (step 1410: N), the rebuild program returns to step 1404 for processing. Conversely, when the copy pointer (905) exceeds the terminal LBA of the failed device (step 1410: Y), step 1411 is performed next.
 ステップ1411:リビルドプログラムは、故障PGのコピーポインタ(905)に無効値(“NULL”と呼ばれる。具体的にはNULLは、記憶デバイスのアドレスに通常用いられない値(たとえば-1など)である)を格納し、処理を終了する。 Step 1411: The rebuild program has an invalid value (called “NULL”) for the copy pointer (905) of the faulty PG. Specifically, NULL is a value that is not normally used for the address of the storage device (for example, −1). ) Is stored, and the process ends.
 本実施例に係るストレージ装置では、リビルド処理が開始されると、枯渇閾値が更新される(ステップ1402)。リビルド処理前は枯渇閾値が、本来の値よりも小さく抑えられている(スペア領域比率に相当する分だけ減算されている)ため、一部の物理領域への書き込みが実質的にできない状態にある。これは、リビルド処理時にスペアストライプの書き込まれたデータを格納するための物理領域が枯渇している状態になることを防ぐため(スペアストライプに書き込むデータ用の物理領域を確実に確保するため)である。一方リビルド処理時には、上のステップ1402が実行されることで枯渇閾値が大きくなるため、リビルドプログラムは、リビルド処理前に確保されていた物理領域へのデータ書き込みが可能になる。 In the storage apparatus according to the present embodiment, when the rebuild process is started, the depletion threshold is updated (step 1402). Before the rebuild process, the depletion threshold is kept lower than the original value (subtracted by the amount corresponding to the spare area ratio), so it is in a state where writing to some physical areas is practically impossible. . This is to prevent the physical area for storing the data written in the spare stripe during the rebuild process from being exhausted (to ensure the physical area for data to be written in the spare stripe). is there. On the other hand, when the rebuild process is executed, the depletion threshold value is increased by executing the above step 1402, so that the rebuild program can write data to the physical area secured before the rebuild process.
 続いて実施例2の説明を行う。実施例2に係るストレージ装置の構成は、実施例1に係るストレージと同じであるため、構成の図示は略す。 Subsequently, Example 2 will be described. Since the configuration of the storage apparatus according to the second embodiment is the same as the storage according to the first embodiment, the illustration of the configuration is omitted.
 実施例2に係るストレージ装置ではリビルド処理で行われる内容が、実施例1で説明したものとやや異なる。図15を用いて、実施例2に係るストレージ装置で実施されるリビルド処理の説明を行う。この処理の多くの部分は実施例1で説明したものと同じであるため、以下では相違点を中心に説明する。 In the storage device according to the second embodiment, the contents performed in the rebuild process are slightly different from those described in the first embodiment. With reference to FIG. 15, the rebuild process performed in the storage apparatus according to the second embodiment will be described. Since many parts of this process are the same as those described in the first embodiment, the following description focuses on the differences.
 まず実施例2におけるリビルド処理では、実施例1で説明したステップ1402の処理が行われない。代わりにステップ1406(コピーポインタを更新する処理)の後にステップ1407が行われる。 First, in the rebuild process in the second embodiment, the process in step 1402 described in the first embodiment is not performed. Instead, step 1407 is performed after step 1406 (processing for updating the copy pointer).
 ステップ1407では、リビルドプログラムは枯渇容量管理テーブル1000の枯渇閾値(1002)の更新を行う。この処理の詳細は後述するが、実施例1で説明したステップ1402と異なり、ここでは枯渇閾値がリビルド処理の進捗度合いにあわせて徐々に変更される。 In step 1407, the rebuild program updates the depletion threshold (1002) of the depletion capacity management table 1000. Although details of this process will be described later, unlike the step 1402 described in the first embodiment, the depletion threshold is gradually changed according to the progress of the rebuild process.
 上で述べた点以外は、実施例2におけるリビルドプログラムの実行する処理は実施例1で説明したものと同じである。続いてステップ1407で行われる処理の詳細について、図16を用いて説明する。 Except for the points described above, the process executed by the rebuild program in the second embodiment is the same as that described in the first embodiment. Next, details of the processing performed in step 1407 will be described with reference to FIG.
 ステップ1601:リビルドプログラムは、故障デバイスが圧縮機能を有しているか判定する。この判定は、実施例1で説明したステップ1303と同様のものである。故障デバイスが圧縮機能を有していない場合(ステップ1601:N)、処理は終了する。一方故障デバイスが圧縮機能を有している場合(ステップ1601:Y)、次にステップ1602が行われる。 Step 1601: The rebuild program determines whether the failed device has a compression function. This determination is the same as step 1303 described in the first embodiment. If the failed device does not have a compression function (step 1601: N), the process ends. On the other hand, if the failed device has a compression function (step 1601: Y), then step 1602 is performed.
 ステップ1602:CPU12はリビルドプログラム進捗率を算出する。本実施例において、故障ドライブのリビルド処理の進捗度合いを表す指標値を「コピー進捗率」と呼ぶ。コピー進捗率をZ、故障ドライブの終端LBAをc、故障PGのコピーポインタ(905)をpとするとき、コピー進捗率Zは以下の式で求められる値である。(なお、Zは百分率で表現される値とする)
 Z=p÷c×100
 このため、リビルド処理が全く行われていない場合、Zは0となり、リビルド処理が完了した時点でZは100になる。
Step 1602: The CPU 12 calculates a rebuild program progress rate. In the present embodiment, an index value indicating the progress of rebuilding a failed drive is referred to as “copy progress rate”. When the copy progress rate is Z, the end LBA of the failed drive is c, and the copy pointer (905) of the failed PG is p, the copy progress rate Z is a value obtained by the following equation. (Z is a value expressed as a percentage)
Z = p ÷ c × 100
Therefore, when the rebuild process is not performed at all, Z is 0, and Z is 100 when the rebuild process is completed.
 ステップ1603:リビルドプログラムは、ステップ1602で得られたコピー進捗率を用いて、故障PGの枯渇閾値(枯渇閾値管理テーブル1000の枯渇閾値(1002)に格納されるべき値)を計算する。具体的には以下の式で枯渇閾値を求める。
 枯渇閾値=(補正前枯渇閾値)-(スペア領域比率)÷100×(100 - Z)
Step 1603: The rebuild program calculates the depletion threshold value of the failure PG (value to be stored in the depletion threshold value (1002) of the depletion threshold value management table 1000) using the copy progress rate obtained in Step 1602. Specifically, the depletion threshold is obtained by the following formula.
Depletion threshold = (depletion depletion threshold) − (spare area ratio) ÷ 100 × (100−Z)
 つまり、Zが0の時(リビルド処理が全く行われていないとき)、枯渇閾値は“補正前枯渇閾値-スペア領域比率”と等しく、コピーポインタが増加するにつれて(つまりリビルド処理が多くのストライプについて行われるにつれて)、枯渇閾値は徐々に増加していく。そしてリビルド処理が完了すると、枯渇閾値は補正前枯渇閾値と等しくなる。 That is, when Z is 0 (when the rebuild process is not performed at all), the depletion threshold is equal to the “pre-correction depletion threshold-spare area ratio”, and as the copy pointer increases (that is, the rebuild process is performed for many stripes). As it is done), the depletion threshold increases gradually. When the rebuild process is completed, the depletion threshold becomes equal to the pre-correction depletion threshold.
 ステップ1604:最後にリビルドプログラムは、ステップ1603で求めた枯渇閾値を、枯渇閾値管理テーブル1000(の枯渇閾値(1002))に格納し、処理を終了する。 Step 1604: Finally, the rebuild program stores the depletion threshold obtained in Step 1603 in the depletion threshold management table 1000 (the depletion threshold (1002)), and ends the process.
 続いて、実施例2における枯渇チェック処理の流れを、図18を用いて説明する。ただしこの処理も実施例1で説明した枯渇チェック処理と、大部分は同じであるので、以下では実施例1と異なる点について説明する。 Subsequently, the flow of the depletion check process in the second embodiment will be described with reference to FIG. However, since this process is mostly the same as the depletion check process described in the first embodiment, differences from the first embodiment will be described below.
 実施例2における枯渇チェックプログラムでは、ステップ1303でアクセス対象記憶デバイスが圧縮機能を有すると判定された場合、ステップ1305の前にステップ1304が実行される。ステップ1304では、枯渇チェックプログラムはアクセス対象領域がスペアストライプであるか判定し、スペアストライプでない場合には(ステップ1304:N)、実施例1で説明した処理と同じく次にステップ1305を実行する。 In the depletion check program in the second embodiment, when it is determined in step 1303 that the access target storage device has the compression function, step 1304 is executed before step 1305. In step 1304, the depletion check program determines whether or not the access target area is a spare stripe. If the area is not a spare stripe (step 1304: N), next step 1305 is executed as in the processing described in the first embodiment.
 一方、アクセス対象領域がスペアストライプの場合(ステップ1304:Y)、枯渇チェックプログラムは次にステップ1307を実行する。つまりスペアストライプの場合には、アクセス対象領域の属するパリティグループの物理容量使用率(1003)が、枯渇閾値(1002)以上であるか否かに関わらず、物理領域が枯渇していない旨を呼び出し元プログラムに返却する(ステップ1307)。実施例2における枯渇チェック処理では、ステップ1304が加わる点以外は実施例1で説明したものと同じである。 On the other hand, when the access target area is a spare stripe (step 1304: Y), the depletion check program next executes step 1307. In other words, in the case of a spare stripe, a call is made that the physical area is not exhausted regardless of whether the physical capacity usage rate (1003) of the parity group to which the access target area belongs is equal to or higher than the depletion threshold (1002). Return to the original program (step 1307). The depletion check process in the second embodiment is the same as that described in the first embodiment except that step 1304 is added.
 実施例2に係るストレージ装置ではこのように、リビルド処理の進捗にあわせて枯渇閾値が徐々に上昇するため、リビルド処理中に発生する通常ライト処理(ホスト2からのライトデータを格納する処理)によるデータによって、物理領域が過剰に消費され、リビルド処理で復元されたデータが格納できなくなる事態を防ぐことができる。また枯渇チェック処理で、アクセス対象領域がスペアストライプの場合には枯渇チェックが行われない(物理容量使用率が枯渇閾値以上でも記憶デバイスへのデータ書き込みが可能である)ため、リビルド処理で復元されたデータは確実に記憶デバイス(スペアストライプ)に書き込むことができる。 In this way, in the storage device according to the second embodiment, the depletion threshold gradually increases with the progress of the rebuild process, so that the normal write process (a process for storing write data from the host 2) that occurs during the rebuild process is performed. It is possible to prevent a situation in which the physical area is excessively consumed by data and the data restored by the rebuild process cannot be stored. Also, in the exhaustion check process, if the access target area is a spare stripe, the exhaustion check is not performed (data can be written to the storage device even if the physical capacity usage rate exceeds the exhaustion threshold), so it is restored by the rebuild process. The data can be reliably written to the storage device (spare stripe).
 なお、実施例1に係るストレージ装置においても、実施例2で説明した枯渇チェック処理(図18)を行うようにしてもよい。 Note that the depletion check process (FIG. 18) described in the second embodiment may be performed in the storage apparatus according to the first embodiment.
 実施例3として、実施例1に係るストレージ装置の物理領域管理方法をわずかに変形させた方法を説明する。実施例3に係るストレージ装置の構成は、実施例1または2に係るストレージと同じであるため、図示は略す。 As a third embodiment, a method in which the storage device physical area management method according to the first embodiment is slightly modified will be described. Since the configuration of the storage device according to the third embodiment is the same as that of the storage according to the first or second embodiment, the illustration is omitted.
 実施例1または2では、パリティグループの定義時に、枯渇閾値(枯渇閾値管理テーブル1000の枯渇閾値(1002))に、補正前枯渇閾値からスペア領域比率を減算した値を設定することで、スペアストライプのための物理領域(リビルド処理によって復元されたデータを書き込むための物理領域)を確保していた。ただしこれ以外の方法によって、スペアストライプのための物理領域が確保されても良い。実施例3では2つの方法を説明する。 In the first or second embodiment, when a parity group is defined, a value obtained by subtracting the spare area ratio from the pre-correction depletion threshold is set as the depletion threshold (the depletion threshold (1002) of the depletion threshold management table 1000). The physical area for writing (the physical area for writing the data restored by the rebuild process) was secured. However, the physical area for the spare stripe may be secured by other methods. In Example 3, two methods will be described.
 1つ目の方法は、一部の物理領域をあらかじめ(見かけ上)使用済みにしておく方法である。具体的には初期設定時に、構成情報管理プログラムは論理物理容量管理テーブル800の物理使用量(806)に、あらかじめスペア領域比率に相当する値を加算する。またこのとき、枯渇閾値(1002)には補正前枯渇閾値が設定される(つまり、(補正前枯渇閾値-スペア領域比率)を設定する必要はない)。 The first method is a method in which some physical areas are used in advance (apparently). Specifically, at the time of initial setting, the configuration information management program adds a value corresponding to the spare area ratio in advance to the physical usage (806) of the logical physical capacity management table 800. At this time, the pre-correction depletion threshold is set as the depletion threshold (1002) (that is, it is not necessary to set (pre-correction depletion threshold-spare area ratio)).
 たとえばある記憶デバイスの物理容量がP(TB)で、スペア領域比率がS(%)の場合、構成情報管理プログラムは初期設定時にその記憶デバイスの物理使用量(806)に、(P×S÷100)を設定する。そして通常時(リビルド処理が実行されていない時)には、構成情報管理プログラムは記憶デバイスから取得した物理使用量を用いて論理物理容量管理テーブル800の物理使用量(806)を更新するが、その際には、物理使用量(806)には
 記憶デバイスから取得した物理使用量+(P×S÷100)
を設定するとよい。
For example, when the physical capacity of a storage device is P (TB) and the spare area ratio is S (%), the configuration information management program sets (P × S ÷÷) to the physical usage (806) of the storage device at the initial setting. 100) is set. During normal times (when the rebuild process is not executed), the configuration information management program updates the physical usage (806) of the logical physical capacity management table 800 using the physical usage acquired from the storage device. At that time, the physical usage (806) includes the physical usage acquired from the storage device + (P × S ÷ 100).
Should be set.
 構成情報管理プログラムが枯渇閾値管理テーブル1000の物理容量使用率(1003)を更新する際、論理物理容量管理テーブル800の物理容量(804)と物理使用量(806)を用いるので、物理容量使用率(1003)には、実際の物理容量使用率よりも大きな値(スペア領域比率の加算された値)が格納されることになる。またこれにより、スペア領域比率に相当する量の物理領域は使用されない状態が維持される。 When the configuration information management program updates the physical capacity usage rate (1003) of the depletion threshold management table 1000, the physical capacity usage rate is used because the physical capacity (804) and physical usage amount (806) of the logical physical capacity management table 800 are used. In (1003), a value larger than the actual physical capacity usage rate (a value obtained by adding the spare area ratio) is stored. As a result, the physical area corresponding to the spare area ratio is not used.
 リビルド処理が開始された時、リビルドプログラムはステップ1402で、枯渇閾値(1002)を修正する代わりに、記憶デバイスの物理使用量(806)から(P×S÷100)を減算することで、本来の物理使用量に戻す。これにより、リビルド処理時には、これまで使用されなかった(P×S÷100)(TB)分の物理領域が使用可能になる。 When the rebuild process is started, in step 1402, the rebuild program subtracts (P × S ÷ 100) from the physical usage (806) of the storage device instead of correcting the depletion threshold (1002). Return to physical usage. As a result, during the rebuild process, the physical area for (P × S ÷ 100) (TB) that has not been used until now can be used.
 2つ目の方法は、物理容量をあらかじめ小さくしておく方法である。具体的には初期設定時に、構成情報管理プログラムは論理物理容量管理テーブル800の物理容量(804)に、本来の記憶デバイスの物理容量からスペア領域比率に相当する値を減算した値を設定する。また1つめの方法と同じく、枯渇閾値(1002)には補正前枯渇閾値が設定されるとよい。 The second method is to reduce the physical capacity in advance. Specifically, at the time of initial setting, the configuration information management program sets a value obtained by subtracting a value corresponding to the spare area ratio from the physical capacity of the original storage device in the physical capacity (804) of the logical physical capacity management table 800. As in the first method, the pre-correction depletion threshold may be set as the depletion threshold (1002).
 たとえばある記憶デバイスの本来の物理容量がP(TB)で、スペア領域比率がS(%)の場合、構成情報管理プログラムは初期設定時にその記憶デバイスの物理容量(804)に、(P-P×S÷100)を設定する。 For example, when the original physical capacity of a storage device is P (TB) and the spare area ratio is S (%), the configuration information management program sets (PP) to the physical capacity (804) of the storage device at the initial setting. × S ÷ 100) is set.
 構成情報管理プログラムが枯渇閾値管理テーブル1000の物理容量使用率(1003)を更新する際、論理物理容量管理テーブル800の物理容量(804)と物理使用量(806)を用いるので、物理容量使用率(1003)には、実際の物理容量使用率よりも大きな値(スペア領域比率の加算された値)が格納されることになる。またこれにより、スペア領域比率に相当する量の物理領域は使用されない状態が維持される。 When the configuration information management program updates the physical capacity usage rate (1003) of the depletion threshold management table 1000, the physical capacity usage rate is used because the physical capacity (804) and physical usage amount (806) of the logical physical capacity management table 800 are used. In (1003), a value larger than the actual physical capacity usage rate (a value obtained by adding the spare area ratio) is stored. As a result, the physical area corresponding to the spare area ratio is not used.
 リビルド処理が開始された時、リビルドプログラムはステップ1402で、枯渇閾値(1002)を修正する代わりに、記憶デバイスの物理容量(804)を本来の物理容量に戻す。これにより、リビルド処理時には、これまで使用されなかった(P×S÷100)(TB)分の物理領域が使用可能になる。 When the rebuild process is started, the rebuild program returns the physical capacity (804) of the storage device to the original physical capacity instead of correcting the depletion threshold (1002) in step 1402. As a result, during the rebuild process, the physical area for (P × S ÷ 100) (TB) that has not been used until now can be used.
 なお、上では、リビルド開始時(ステップ1402)に記憶デバイスの物理使用量(806)または物理容量(804)を本来の値に戻す方法を説明したが、実施例2に係るストレージ装置と同様、実施例3に係るストレージ装置も、リビルド処理の進捗にあわせて、記憶デバイスの物理使用量(806)または物理容量(804)を徐々に本来の値に戻すようにしてもよい。また実施例3に係るストレージ装置においても、実施例2で説明した枯渇チェック処理(図18の処理。つまり書き込みがスペアストライプに対して行われる時には枯渇チェックを行わない方法)が行われてもよい。 In the above description, the method of returning the physical usage (806) or the physical capacity (804) of the storage device to the original value at the start of rebuilding (step 1402) has been described. As with the storage apparatus according to the second embodiment, The storage apparatus according to the third embodiment may gradually return the physical usage (806) or the physical capacity (804) of the storage device to the original value in accordance with the progress of the rebuild process. Also in the storage apparatus according to the third embodiment, the depletion check process described in the second embodiment (the process of FIG. 18, that is, a method that does not perform the depletion check when writing is performed on a spare stripe) may be performed. .
 以上、本発明の実施例を説明してきたが、これは本発明の説明のための例示であって、本発明を上で説明した実施例に限定する趣旨ではない。本発明は、他の種々の形態でも実施可能である。たとえば実施例に記載のストレージ装置1では、記憶デバイスがSSD(フラッシュメモリを用いた記憶装置)である例を説明したが、記憶デバイスに用いられる記憶媒体の種類はフラッシュメモリに限定されない。圧縮機能を有する記憶デバイスであれば、任意の記憶デバイスが用いられても良い。たとえば図1に記載の外部ストレージ装置4が圧縮機能を有する場合、外部ストレージ装置4が記憶デバイスとして用いられても良い。 The embodiment of the present invention has been described above, but this is an example for explaining the present invention, and is not intended to limit the present invention to the embodiment described above. The present invention can be implemented in various other forms. For example, in the storage apparatus 1 described in the embodiment, the example in which the storage device is an SSD (storage apparatus using a flash memory) has been described, but the type of storage medium used for the storage device is not limited to the flash memory. Any storage device may be used as long as it has a compression function. For example, when the external storage apparatus 4 illustrated in FIG. 1 has a compression function, the external storage apparatus 4 may be used as a storage device.
 また、上ではホストに提供する論理ボリューム上の記憶領域と(仮想)パリティグループの記憶領域とは、静的にマッピングされている(定義時点で、論理ボリュームの各記憶領域がマッピングされる、仮想パリティグループ上記憶領域が一意に決定される)ものとして説明したが、論理ボリュームの記憶領域とパリティグループの記憶領域(ストライプライン)の関係が固定的(静的)である構成に限定されるものではない。たとえば周知の技術であるThin-Provisioning技術を用いて形成される論理ボリュームがホストに提供されても良い。この場合、ホスト計算機から論理ボリューム上の記憶領域に対してライト要求を受け付けた時点ではじめて、当該記憶領域に対してパリティグループ(またはストライプライン)の記憶領域が割り当てられる。 In the above, the storage area on the logical volume provided to the host and the storage area of the (virtual) parity group are statically mapped (virtual volume to which each storage area of the logical volume is mapped at the time of definition). The storage area on the parity group is uniquely determined), but the relationship between the logical volume storage area and the parity group storage area (stripe line) is limited to a fixed (static) configuration is not. For example, a logical volume formed by using a well-known technique, Thin-Provisioning technology, may be provided to the host. In this case, the storage area of the parity group (or stripe line) is allocated to the storage area only when a write request is received from the host computer to the storage area on the logical volume.
 また実施例においてプログラムとして記載されている構成物は、ハードワイヤードロジックなどを用いたハードウェアによって実現してもよい。また実施例中の各プログラムを、CD-ROM、DVD等の記憶媒体に格納して提供する形態をとることも可能である。 Further, the components described as programs in the embodiments may be realized by hardware using hard wired logic or the like. In addition, each program in the embodiment may be stored in a storage medium such as a CD-ROM or DVD and provided.
1: ストレージ装置, 2: ホスト, 3: SAN, 10: ストレージコントローラ(DKC), 11:  ディスクユニット, 12: プロセッサ(CPU), 13: メモリ, 14: フロントエンドインタフェース(FE I/F), 15: バックエンドインタフェース(BE I/F), 16: 管理用I/F, 17: 内部スイッチ, 21: 記憶デバイス(SSD), 22: 記憶デバイス(HDD), 200: SSDコントローラ, 201: プロセッサ(CPU), 202: 上流I/F, 203: 下流I/F, 204: メモリ, 205: 内部接続スイッチ, 206: FMチップ, 207: 圧縮/伸張回路 1: storage device, 2: host, 3: SAN, 10: storage controller (DKC), 11: disk unit, 12: processor (CPU), 13: memory, 14: front-end interface (FE I / F), 15 : Back-end interface (BE I / F), 16: Management I / F, 17: Internal switch, 21: Storage device (SSD), 22: Storage device (HDD), 200: SSD controller, 201: Processor (CPU) ), 202: Upstream I / F, 203: Downstream I / F, 204: Memory, 205: Internal connection switch, 206: FM chip, 207: Compression / decompression circuit

Claims (10)

  1.  ホスト計算機からのライトデータを受け付けるストレージコントローラと、
     それぞれが所定量の物理領域を有する複数の記憶デバイスと、
    を有するストレージ装置において、
     前記記憶デバイスは前記ストレージコントローラに、前記物理領域の容量よりも大きいサイズの論理記憶空間を提供し、前記ストレージコントローラから前記論理記憶空間に書き込まれるデータを圧縮した後、圧縮された前記データを前記物理領域に格納するよう構成されており、
     前記ストレージコントローラは、(N+M)台より多くの台数の前記記憶デバイスをパリティグループとして管理しており(N≧1,M≧1)、
     前記ストレージコントローラは、前記ホスト計算機から書き込まれた、所定サイズのN個のデータからM個のパリティを生成し、前記N個のデータ及び前記M個のパリティをそれぞれ、前記パリティグループ内の異なる前記記憶デバイスに格納するよう構成されており、
     前記記憶デバイスの提供する前記論理記憶空間上には、前記データを格納する領域であるデータストライプと前記パリティを格納する領域であるパリティストライプに加え、前記記憶デバイスの故障発生時に復元されたデータを格納する領域であるスペアストライプが設けられており、
     前記ストレージコントローラは、
     通常時には、前記スペアストライプに書き込まれるデータを格納するために必要な量の物理領域の使用を抑止し、
     前記記憶デバイスに故障が発生したことを契機に、前記スペアストライプに書き込まれるデータを格納するために必要な量の物理領域の使用を許可する、
    ことを特徴とする、ストレージ装置。
    A storage controller that accepts write data from the host computer,
    A plurality of storage devices each having a predetermined amount of physical area;
    In a storage device having
    The storage device provides the storage controller with a logical storage space having a size larger than the capacity of the physical area, compresses data written from the storage controller to the logical storage space, and then compresses the compressed data into the storage controller. Configured to store in the physical area,
    The storage controller manages more than (N + M) storage devices as a parity group (N ≧ 1, M ≧ 1),
    The storage controller generates M parities from N data of a predetermined size written from the host computer, and the N data and the M parities are respectively different from each other in the parity group. Configured to store on a storage device,
    In the logical storage space provided by the storage device, in addition to a data stripe that is an area for storing the data and a parity stripe that is an area for storing the parity, data restored when a failure occurs in the storage device Spare stripes are provided as storage areas,
    The storage controller
    Normally, the use of the physical area of the amount necessary to store the data written to the spare stripe is suppressed,
    When a failure occurs in the storage device, the use of a physical area of an amount necessary for storing data written to the spare stripe is permitted.
    A storage apparatus characterized by the above.
  2.  前記ストレージコントローラは、前記記憶デバイスが前記圧縮された前記データを格納するために使用された前記物理領域の量である物理使用量を、前記記憶デバイスから取得し、前記物理使用量の前記物理領域の容量に対する比である物理容量使用率が、あらかじめ定められた枯渇閾値以上であった場合、前記記憶デバイスへの書き込みを抑止するよう構成されており、
     前記ストレージコントローラは通常時には、前記枯渇閾値として、前記記憶デバイスに故障が発生した時に用いられる値から、前記スペアストライプに書き込まれるデータを格納するために必要な量の物理領域の量に相当する分だけ減算した値を用いる、
    ことを特徴とする、請求項1に記載のストレージ装置。
    The storage controller obtains, from the storage device, a physical usage that is the amount of the physical area used for the storage device to store the compressed data, and the physical area of the physical usage When the physical capacity usage rate that is the ratio to the capacity of the storage device is equal to or greater than a predetermined depletion threshold, it is configured to suppress writing to the storage device,
    The storage controller normally corresponds to an amount corresponding to the amount of physical area necessary for storing the data written to the spare stripe from the value used when the storage device has failed as the depletion threshold. Use the value obtained by subtracting only
    The storage apparatus according to claim 1, wherein:
  3.  前記ストレージコントローラは、前記記憶デバイスに故障が発生した時、故障した前記記憶デバイスに格納されていたデータを復元するリビルド処理の実行を開始し、
     前記リビルド処理の進捗にあわせて、前記枯渇閾値を増加させる、
    ことを特徴とする、請求項2に記載のストレージ装置。
    The storage controller, when a failure occurs in the storage device, starts executing a rebuild process that restores data stored in the failed storage device,
    In accordance with the progress of the rebuild process, the depletion threshold is increased.
    The storage apparatus according to claim 2, wherein:
  4.  前記ストレージコントローラは、前記スペアストライプへのデータ書き込みを行う際には、前記物理容量使用率が前記枯渇閾値以上であっても、前記記憶デバイスへの書き込みを抑止しない、
    ことを特徴とする、請求項3に記載のストレージ装置。
    The storage controller does not inhibit writing to the storage device even when the physical capacity usage rate is equal to or higher than the depletion threshold when writing data to the spare stripe.
    The storage apparatus according to claim 3, wherein:
  5.  前記ストレージコントローラは、前記記憶デバイスが前記圧縮された前記データを格納するために使用された前記物理領域の量である物理使用量を、前記記憶デバイスから取得し、前記物理使用量の前記物理領域の容量に対する比である物理容量使用率が、あらかじめ定められた枯渇閾値以上であった場合、前記記憶デバイスへの書き込みを抑止するよう構成されており、
     前記ストレージコントローラは通常時には、前記記憶デバイスから取得した前記物理使用量に、前記スペアストライプに書き込まれるデータを格納するために必要な前記物理領域の量を加算した値を用いて、前記物理容量使用率を算出し、
     前記記憶デバイスに故障が発生した時には、前記記憶デバイスから取得した前記物理使用量を用いて前記物理容量使用率を算出する、
    ことを特徴とする、請求項1に記載のストレージ装置。
    The storage controller obtains, from the storage device, a physical usage that is the amount of the physical area used for the storage device to store the compressed data, and the physical area of the physical usage When the physical capacity usage rate that is the ratio to the capacity of the storage device is equal to or greater than a predetermined depletion threshold, it is configured to suppress writing to the storage device,
    The storage controller normally uses the physical capacity using a value obtained by adding the amount of the physical area necessary for storing data to be written to the spare stripe to the physical usage acquired from the storage device. Calculate the rate,
    When a failure occurs in the storage device, the physical capacity usage rate is calculated using the physical usage acquired from the storage device.
    The storage apparatus according to claim 1, wherein:
  6.  前記ストレージコントローラは、前記記憶デバイスが前記圧縮された前記データを格納するために使用された前記物理領域の量である物理使用量を、前記記憶デバイスから取得し、前記物理使用量の前記物理領域の容量に対する比である物理容量使用率が、あらかじめ定められた枯渇閾値以上であった場合、前記記憶デバイスへの書き込みを抑止するよう構成されており、
     前記ストレージコントローラは通常時には、前記物理使用量を、前記物理領域の容量から前記スペアストライプに書き込まれるデータを格納するために必要な前記物理領域の量を減算した値で除算することで、前記物理容量使用率を算出し、
     前記記憶デバイスに故障が発生した時には、前記物理使用量を前記物理領域の容量で除算することで、前記物理容量使用率を算出する、
    ことを特徴とする、請求項1に記載のストレージ装置。
    The storage controller obtains, from the storage device, a physical usage that is the amount of the physical area used for the storage device to store the compressed data, and the physical area of the physical usage When the physical capacity usage rate that is the ratio to the capacity of the storage device is equal to or greater than a predetermined depletion threshold, it is configured to suppress writing to the storage device,
    Normally, the storage controller divides the physical usage by the value obtained by subtracting the amount of the physical area necessary for storing data to be written to the spare stripe from the capacity of the physical area. Calculate capacity usage,
    When a failure occurs in the storage device, the physical capacity usage rate is calculated by dividing the physical usage amount by the capacity of the physical area.
    The storage apparatus according to claim 1, wherein:
  7.  ホスト計算機からのライトデータを受け付けるストレージコントローラと、
     それぞれが所定量の物理領域を有する複数の記憶デバイスと、
    を有するストレージ装置の制御方法であって、
     前記記憶デバイスは前記ストレージコントローラに、前記物理領域の容量よりも大きいサイズの論理記憶空間を提供し、前記ストレージコントローラから前記論理記憶空間に書き込まれるデータを圧縮した後、圧縮された前記データを前記物理領域に格納するよう構成されており、
     前記ストレージコントローラは、(N+M)台より多くの台数の前記記憶デバイスをパリティグループとして管理しており(N≧1,M≧1)、
     前記ストレージコントローラは、前記ホスト計算機から書き込まれた、所定サイズのN個のデータからM個のパリティを生成し、前記N個のデータ及び前記M個のパリティをそれぞれ、前記パリティグループ内の異なる前記記憶デバイスに格納するよう構成されており、
     前記記憶デバイスの提供する前記論理記憶空間上には、前記データを格納する領域であるデータストライプと前記パリティを格納する領域であるパリティストライプに加え、前記記憶デバイスの故障発生時に復元されたデータを格納する領域であるスペアストライプが設けられているストレージ装置であって、
     前記方法は、
     前記ストレージコントローラが通常時には、前記スペアストライプに書き込まれるデータを格納するために必要な量の物理領域の使用を抑止し、
     前記記憶デバイスに故障が発生したことを契機に、前記スペアストライプに書き込まれるデータを格納するために必要な量の物理領域の使用を許可する、
    ことを特徴とする、ストレージ装置の制御方法。
    A storage controller that accepts write data from the host computer,
    A plurality of storage devices each having a predetermined amount of physical area;
    A storage apparatus control method comprising:
    The storage device provides the storage controller with a logical storage space having a size larger than the capacity of the physical area, compresses data written from the storage controller to the logical storage space, and then compresses the compressed data into the storage controller. Configured to store in the physical area,
    The storage controller manages more than (N + M) storage devices as a parity group (N ≧ 1, M ≧ 1),
    The storage controller generates M parities from N data of a predetermined size written from the host computer, and the N data and the M parities are respectively different from each other in the parity group. Configured to store on a storage device,
    In the logical storage space provided by the storage device, in addition to a data stripe that is an area for storing the data and a parity stripe that is an area for storing the parity, data restored when a failure occurs in the storage device A storage device provided with a spare stripe which is a storage area,
    The method
    The storage controller normally suppresses the use of an amount of physical area necessary to store data written to the spare stripe,
    When a failure occurs in the storage device, the use of a physical area of an amount necessary for storing data written to the spare stripe is permitted.
    A method for controlling a storage apparatus.
  8.  前記ストレージコントローラは、前記記憶デバイスが前記圧縮された前記データを格納するために使用された前記物理領域の量である物理使用量を、前記記憶デバイスから取得し、前記物理使用量の前記物理領域の容量に対する比である物理容量使用率が、あらかじめ定められた枯渇閾値以上であった場合、前記記憶デバイスへの書き込みを抑止するよう構成されており、
     前記ストレージコントローラは通常時には、前記枯渇閾値として、前記記憶デバイスに故障が発生した時に用いられる値から、前記スペアストライプに書き込まれるデータを格納するために必要な量の物理領域の量に相当する分だけ減算した値を用いる、
    ことを特徴とする、請求項7に記載のストレージ装置の制御方法。
    The storage controller obtains, from the storage device, a physical usage that is the amount of the physical area used for the storage device to store the compressed data, and the physical area of the physical usage When the physical capacity usage rate that is the ratio to the capacity of the storage device is equal to or greater than a predetermined depletion threshold, it is configured to suppress writing to the storage device,
    The storage controller normally corresponds to an amount corresponding to the amount of physical area necessary for storing the data written to the spare stripe from the value used when the storage device has failed as the depletion threshold. Use the value obtained by subtracting only
    The storage apparatus control method according to claim 7, wherein:
  9.  前記ストレージコントローラは、前記記憶デバイスが前記圧縮された前記データを格納するために使用された前記物理領域の量である物理使用量を、前記記憶デバイスから取得し、前記物理使用量の前記物理領域の容量に対する比である物理容量使用率が、あらかじめ定められた枯渇閾値以上であった場合、前記記憶デバイスへの書き込みを抑止するよう構成されており、
     前記ストレージコントローラは通常時には、前記記憶デバイスから取得した前記物理使用量に、前記スペアストライプに書き込まれるデータを格納するために必要な前記物理領域の量を加算した値を用いて、前記物理容量使用率を算出し、
     前記記憶デバイスに故障が発生した時には、前記記憶デバイスから取得した前記物理使用量を用いて前記物理容量使用率を算出する、
    ことを特徴とする、請求項7に記載のストレージ装置の制御方法。
    The storage controller obtains, from the storage device, a physical usage that is the amount of the physical area used for the storage device to store the compressed data, and the physical area of the physical usage When the physical capacity usage rate that is the ratio to the capacity of the storage device is equal to or greater than a predetermined depletion threshold, it is configured to suppress writing to the storage device,
    The storage controller normally uses the physical capacity using a value obtained by adding the amount of the physical area necessary for storing data to be written to the spare stripe to the physical usage acquired from the storage device. Calculate the rate,
    When a failure occurs in the storage device, the physical capacity usage rate is calculated using the physical usage acquired from the storage device.
    The storage apparatus control method according to claim 7, wherein:
  10.  前記ストレージコントローラは、前記記憶デバイスが前記圧縮された前記データを格納するために使用された前記物理領域の量である物理使用量を、前記記憶デバイスから取得し、前記物理使用量の前記物理領域の容量に対する比である物理容量使用率が、あらかじめ定められた枯渇閾値以上であった場合、前記記憶デバイスへの書き込みを抑止するよう構成されており、
     前記ストレージコントローラは通常時には、前記物理使用量を、前記物理領域の容量から前記スペアストライプに書き込まれるデータを格納するために必要な前記物理領域の量を減算した値で除算することで、前記物理容量使用率を算出し、
     前記記憶デバイスに故障が発生した時には、前記物理使用量を前記物理領域の容量で除算することで、前記物理容量使用率を算出する、
    ことを特徴とする、請求項7に記載のストレージ装置の制御方法。
    The storage controller obtains, from the storage device, a physical usage that is the amount of the physical area used for the storage device to store the compressed data, and the physical area of the physical usage When the physical capacity usage rate that is the ratio to the capacity of the storage device is equal to or greater than a predetermined depletion threshold, it is configured to suppress writing to the storage device,
    Normally, the storage controller divides the physical usage by the value obtained by subtracting the amount of the physical area necessary for storing data to be written to the spare stripe from the capacity of the physical area. Calculate capacity usage,
    When a failure occurs in the storage device, the physical capacity usage rate is calculated by dividing the physical usage amount by the capacity of the physical area.
    The storage apparatus control method according to claim 7, wherein:
PCT/JP2016/081714 2016-10-26 2016-10-26 Storage apparatus WO2018078741A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/081714 WO2018078741A1 (en) 2016-10-26 2016-10-26 Storage apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/081714 WO2018078741A1 (en) 2016-10-26 2016-10-26 Storage apparatus

Publications (1)

Publication Number Publication Date
WO2018078741A1 true WO2018078741A1 (en) 2018-05-03

Family

ID=62024568

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2016/081714 WO2018078741A1 (en) 2016-10-26 2016-10-26 Storage apparatus

Country Status (1)

Country Link
WO (1) WO2018078741A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024113726A1 (en) * 2022-11-30 2024-06-06 苏州元脑智能科技有限公司 Disk array reconstruction task acceleration method and system, storage medium, and device

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006302258A (en) * 2005-04-21 2006-11-02 Hitachi Ltd System and method for managing disk space in thin-provisioned storage subsystem
JP2014137758A (en) * 2013-01-17 2014-07-28 Toshiba Corp Storage device and store method
WO2016006072A1 (en) * 2014-07-09 2016-01-14 株式会社日立製作所 Management computer and storage system
WO2016017002A1 (en) * 2014-07-31 2016-02-04 株式会社日立製作所 Storage system
WO2016142998A1 (en) * 2015-03-06 2016-09-15 株式会社日立製作所 Computer system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006302258A (en) * 2005-04-21 2006-11-02 Hitachi Ltd System and method for managing disk space in thin-provisioned storage subsystem
JP2014137758A (en) * 2013-01-17 2014-07-28 Toshiba Corp Storage device and store method
WO2016006072A1 (en) * 2014-07-09 2016-01-14 株式会社日立製作所 Management computer and storage system
WO2016017002A1 (en) * 2014-07-31 2016-02-04 株式会社日立製作所 Storage system
WO2016142998A1 (en) * 2015-03-06 2016-09-15 株式会社日立製作所 Computer system

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
KOICHI ISHIHARA ET AL.: "Cloud system Muke Kokoritsu Kokino Storage", NEC TECHNICAL JOURNAL, vol. 63, no. 2, 23 April 2010 (2010-04-23), pages 84 - 88 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024113726A1 (en) * 2022-11-30 2024-06-06 苏州元脑智能科技有限公司 Disk array reconstruction task acceleration method and system, storage medium, and device

Similar Documents

Publication Publication Date Title
US10528274B2 (en) Storage system and data management method
US9465561B2 (en) Storage system and storage control method
US9292228B2 (en) Selective raid protection for cache memory
US8930745B2 (en) Storage subsystem and data management method of storage subsystem
US20170192865A1 (en) Rebuilding process for storage array
US8356292B2 (en) Method for updating control program of physical storage device in storage virtualization system and storage virtualization controller and system thereof
US20150378613A1 (en) Storage device
US9251059B2 (en) Storage system employing MRAM and redundant array of solid state disk
WO2013160972A1 (en) Storage system and storage apparatus
CN112596673B (en) Multiple-active multiple-control storage system with dual RAID data protection
KR20140139545A (en) Physical page, logical page, and codeword correspondence
CN102483686A (en) Data storage system and method for operating a data storage system
US10579540B2 (en) Raid data migration through stripe swapping
US10067833B2 (en) Storage system
CN111124262A (en) Management method, apparatus and computer readable medium for Redundant Array of Independent Disks (RAID)
CN110737395B (en) I/O management method, electronic device, and computer-readable storage medium
US11803222B2 (en) Systems and methods for managing reduced power failure energy requirements on a solid state drive
US20190042365A1 (en) Read-optimized lazy erasure coding
US9323617B2 (en) Remap raid to maintain raid level
CN113641528A (en) System, method and apparatus for data recovery
US20140173337A1 (en) Storage apparatus, control method, and control program
WO2018078741A1 (en) Storage apparatus
US8402231B2 (en) Storage device, method for restoring data in storage device and storage controller
CN114415968B (en) Storage system and data writing method thereof
JP6817340B2 (en) calculator

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 16919876

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP