WO2005006173A9 - Data storage array - Google Patents

Data storage array

Info

Publication number
WO2005006173A9
WO2005006173A9 PCT/EP2004/051385 EP2004051385W WO2005006173A9 WO 2005006173 A9 WO2005006173 A9 WO 2005006173A9 EP 2004051385 W EP2004051385 W EP 2004051385W WO 2005006173 A9 WO2005006173 A9 WO 2005006173A9
Authority
WO
WIPO (PCT)
Prior art keywords
storage units
data storage
data
code
check
Prior art date
Application number
PCT/EP2004/051385
Other languages
French (fr)
Other versions
WO2005006173A2 (en
WO2005006173A3 (en
Inventor
Steven Robert Hetzler
Daniel Felix Smith
Shmuel Winograd
Original Assignee
Ibm
Ibm Uk
Steven Robert Hetzler
Daniel Felix Smith
Shmuel Winograd
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 Ibm, Ibm Uk, Steven Robert Hetzler, Daniel Felix Smith, Shmuel Winograd filed Critical Ibm
Priority to CA2532766A priority Critical patent/CA2532766C/en
Priority to EP04766143A priority patent/EP1644819A2/en
Priority to JP2006519919A priority patent/JP2009514056A/en
Publication of WO2005006173A2 publication Critical patent/WO2005006173A2/en
Publication of WO2005006173A9 publication Critical patent/WO2005006173A9/en
Publication of WO2005006173A3 publication Critical patent/WO2005006173A3/en

Links

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
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1057Parity-multiple bits-RAID6, i.e. RAID 6 implementations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1059Parity-single bit-RAID5, i.e. RAID 5 implementations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1064Parity-single bit-RAID3, i.e. RAID 3 implementations

Definitions

  • the present invention relates to storage systems.
  • the present invention relates to a system and a method for providing improved performance, protection and efficiency for an array of storage units.
  • An "element” is a block of data on a storage unit.
  • a "base array” is a set of elements that comprise an array unit for an Error or Erasure Correcting Code.
  • An "array” is a set of storage units that holds one or more base arrays.
  • a “stripe” is a base array within an array.
  • n is the number of data units in the base array.
  • r is the number of redundant units in the base array.
  • m is the number of storage units in the array.
  • d is the minimum Hamming distance of the array.
  • D is the minimum Hamming distance of the storage system.
  • lOw is the number of IOs to perform an update write.
  • the present invention provides an array configuration that provides improved performance, protection and efficiency over conventional approaches.
  • an array controller coupled to three data storage units and three check storage units: a (3 + 3) configuration, referred to herein as a RAID 3 + 3 array.
  • Information is stored on the data storage subsystem as a symmetric Maximum Distance Separation code, such as a Winograd code, an EVENODD or a derivative of an EVENODD code, or a Reed Solomon code.
  • the array controller determines the contents of the check storage units so that any three erasures from the data and check storage units can be corrected by the array controller. Failure of any three storage units, data and check, can occur before data stored in the data storage subsystem is lost.
  • the array controller updates a block of data contained in array using only six IO operations while maintaining the contents of the check storage units so that any three erasures of the data storage units and the check storage units can be corrected by the array controller.
  • Two of the IO operations are read operations and four of the IO operations are write operations. More specifically, the read operations read data from the data storage units that are not being updated, and the four write operations write data to the data storage unit being updated and to the three check storage units.
  • Figure 1 shows a RAID 3 + 3 storage subsystem according to an embodiment of the present invention
  • Figure 2 is a graph comparing the relative protection of different conventional system configurations and a RAID 3 + 3 system configuration according to an embodiment of the present invention.
  • Figure 3 shows a RAID 3 + 3 storage subsystem according to an embodiment of the present invention in which the subsystem is configured as a plurality of stripes, each consisting of a RAID 3 + 3 base array, and in which the data and check elements are distributed among the storage units for minimizing access hot spots.
  • the present invention provides a new storage system configuration that has significant advantages over previously conventional storage system configurations.
  • the storage system configuration of the present invention provides the best combination of performance, protection and efficiency.
  • the storage system configuration of the present invention also enables entirely new techniques for handling errors that increase the level of protection. See, for example, US Patent Application Serial No. 10/619,641 (Attorney Docket No. ARC920030014US1), entitled “Anamorphic Codes", US Patent Application Serial No. 10/619,649 (Attorney Docket No. ARC9-2003-0015US1), entitled “Autonomic Parity Exchange,” and US Patent Application Serial No. 10/619,633 (Attorney Docket No. ARC9-2003-0016US1) entitled “Multi-path Data Retrieval From Redundant Array", and each incorporated by reference herein.
  • FIG. 1 shows a RAID 3 + 3 storage subsystem 100.
  • Subsystem 100 includes an array controller 101 , three data storage units A, B and C containing data and three check storage units P, Q and R containing redundant information.
  • Data storage units A, B and C and check storage units P, Q and R typically are Hard Disk Drives (HDDs), but will be referred to herein as storage units because the present invention is applicable to storage systems formed from arrays of other memory devices, such as Random Access Memory (RAM) storage devices, optical storage device, and tape storage devices.
  • HDDs Hard Disk Drives
  • Storage units A, B, C, P, Q and R communicate with array controller 101 over interface 102.
  • Array controller 101 communicates to other controllers and host systems (not shown) over interface 103. Such a configuration allows array controller 101 to communicate with multiple storage arrays.
  • the configuration of storage subsystem 100 is referred to as a symmetric code in which the number of data storage units is the same as the number of redundant storage units, and is MDS.
  • Array controller 101 calculates redundant information from the contents of the data units such that all the data can be recovered from any three of the six storage units.
  • Winograd codes are highly efficient encodings that only utilize exclusive-OR (XOR) operations for computing the redundant data.
  • XOR exclusive-OR
  • Winograd codes for computing a 3 + 3 code as illustrated in US Patent Application Serial No. 10/600,593 (Attorney Docket No. YOR9-2003-0069US1) which is incorporated by reference herein.
  • EVENODD code extensions to the EVENODD code that only utilize XOR operations, however they are less efficient than the Winograd codes. See, for example, M.
  • RAID 3 + 3 storage subsystem 100 The data efficiency of RAID 3 + 3 storage subsystem 100 is Vz.
  • the configuration of RAID 3 + 3 array 100 as a storage subsystem that is part of a larger storage system provides several advantages over conventional storage subsystems relating to failure resilience and write performance.
  • RAID 3 + 3 subsystem 100 can tolerate failure of any three storage units without losing the data set.
  • MDS Maximum Distance Separation
  • the resilience to failure permits repairs to be made to RAID 3 + 3 storage subsystem 100 in a less urgent fashion for conventional RAID system configurations. That is, by providing more redundancy, the opportunity to repair a broken subsystem is increased, thereby allowing a longer interval before data loss occurs due to storage unit failures. Additionally, by keeping the number of storage units within the subsystem low, the chances of units failing within each subsystem is reduced in comparison to subsystems that use a larger number of storage units.
  • Table 1 compares the data storage efficiency and write performance penalty of different conventional system configurations and a RAID 3 + 3 system configuration according to an embodiment of the present invention.
  • the first (leftmost) column lists a number of conventional system configurations, including a RAID 3 + 3 system configuration according to an embodiment of the present invention.
  • the second column shows the minimum Hamming distance
  • the third column shows the data storage efficiency
  • the fourth column shows the write performance penalty for the different system configurations listed in the first column to Table 1.
  • the write performance penalty values represent the number of IO operations for small block writes.
  • Figure 2 is a graph comparing the relative protection over a period of time of the system configurations listed in Table 1.
  • the abscissa lists the system configurations, including a RAID 3 + 3 system configuration according to an embodiment of the present invention.
  • the bars indicate the relative protection level provided by each respective system configuration, as quantified by the right ordinate.
  • Horizontal line 201 at a protection level of 1 indicates a selected protection target of 1 data loss event per million storage units per 5 years.
  • a RAID 3 + 3 system configuration according to the present invention provides the highest efficiency of the three rightmost system configuration, and has the same write behavior as a RAID 51 system configuration.
  • a 3x Mirror system design sacrifices substantial efficiency for improved the write performance.
  • a conventional updating technique is used for a linear MDS code to update parities based on changes in data.
  • the conventional technique requires reading the old data from the data drive, reading the corresponding old parities from the parity drives, writing the new data, computing the new parities and writing the new parities to the parity drives.
  • the conventional technique of updating parities based on changes in data will be referred to herein as the "forward method" of updating parities.
  • the number of IOs to perform an update write for the forward method is:
  • a second method that can be used for updating parity in an MDS code referred to herein as the "complementary method" of updating parities is:
  • Equation 4 shows that array configurations having a high degree of redundancy thus have better IO efficiency by using the complementary method for updating parity.
  • the complementary method also spreads the IO load more evenly among the storage units of the system because there is one IO per device - either a read or a write.
  • the forward method involves read-modify-write operations on the accessed devices resulting in a more localized access pattern.
  • the complementary method may also have better implementation characteristics when, for example, nearby data is cached.
  • FIG. 1 Distributed parity can be used with a RAID 3 + 3 system configuration according to the present invention for avoiding hot spots.
  • Hot spots can occur when data access patterns are localized.
  • RAID 5 uses distributed parity (also called declustered parity) to avoid hotspots induced by having a dedicated parity storage unit (known as RAID 4).
  • RAID systems using the forward update method will have hot spots on the parity units due to the read-modify-write operations. While RAID systems using the complementary update method avoid this type of hot spot, write activity will concentrate on the check units.
  • Figure 3 illustrates one method for distributing parity across the storage units to achieve a balanced distribution of array elements.
  • each storage unit has elements of all the (A, B, C, P, Q and R) types.
  • storage units 1 are shown as the columns, with stripes " las the rows. The elements are rotated 1 unit to the right for each successive stripe.
  • stripe configurations that can be utilized to avoid hot spots.
  • the present invention has been described in terms of storage arrays formed from HDD storage units, the present invention is applicable to storage systems formed from arrays of other memory devices, such as Random Access Memory (RAM) storage devices, optical storage device, and tape storage devices. Additionally, it is suitable to virtualized storage systems, such as arrays built out of network-attached storage. It is further applicable to any redundant system in which there is some state information that associates a redundant component to particular subset of components, and that state information may be transferred using a donation operation.
  • RAM Random Access Memory

Abstract

A data storage subsystem that includes three data storage units, three check storage units, and an array controller coupled to the three data and three check storage units can tolerate failure of any three data and check storage units failures can be occur before data stored on the data storage subsystem is lost. Information is stored on the data storage subsystem as a symmetric Maximum Distance Separation code, such as Winograd code, a Reed Solomon code, an EVENODD code or a derivative of an EVENODD code. The array controller determines the contents of the check storage units so that any three erasures of the data storage units and the check storage units can be corrected by the array controller. The array controller updates a block of data contained in any one of the data storage units and the check storage units using only six IO operations.

Description

Description
DATA STORAGE ARRAY Technical field
[0001] The present invention relates to storage systems. In particular, the present invention relates to a system and a method for providing improved performance, protection and efficiency for an array of storage units.
Background art
[0002] The following definitions are used herein and are offered for purposes of illustration and not limitation:
[0003] An "element" is a block of data on a storage unit.
[0004] A "base array" is a set of elements that comprise an array unit for an Error or Erasure Correcting Code.
[0005] An "array" is a set of storage units that holds one or more base arrays.
[0006] A "stripe" is a base array within an array.
[0007] n is the number of data units in the base array.
[0008] r is the number of redundant units in the base array.
[0009] m is the number of storage units in the array.
[0010] d is the minimum Hamming distance of the array.
[0011 ] D is the minimum Hamming distance of the storage system.
[0012] lOw is the number of IOs to perform an update write.
[0013] The total number of storage units in an array is m = n + r.
[0014] Storage systems have typically relied on RAID techniques for protecting against data loss caused by storage unit failures. Current RAID designs, however, are reaching the limits of their usefulness based on increasing storage unit capacities. The notation (X + Y) used herein will be used to indicate X data units and Y redundant units. Most systems today use RAID 5 (n + 1) or single mirroring (1 + 1) as a basic array design. Both of these types of storage system configurations have a minimum Hamming distance of D = 2 and, therefore, protect against a single storage unit failure. As used herein, the term "distance" refers to the minimum Hamming distance. The likelihood of multiple drive failures and hard errors, however, have increased the occurrence of data loss events in RAID 5 system configurations. Multiple storage unit losses leading to data loss have been observed in practice.
[0015] Many array configurations have been proposed for handling such a high failure rate. For example, RAID 6 (n + 2) having a distance D = 3, double mirroring (1 + 2) having a distance D = 3, and RAID 51 (n + (n + 2)) having a distance D = 4 have all been proposed as solutions for handing a high failure rate. Nevertheless, all of these array configurations have shortcomings as will be described in connection with Table 1 and Figure 2.
[0016] What is still needed is an array configuration that provides improved performance, protection and efficiency over conventional approaches.
Disclosure of the invention
[0017] The present invention provides an array configuration that provides improved performance, protection and efficiency over conventional approaches.
[0018] The advantages of the present invention are provided by an array controller coupled to three data storage units and three check storage units: a (3 + 3) configuration, referred to herein as a RAID 3 + 3 array. Information is stored on the data storage subsystem as a symmetric Maximum Distance Separation code, such as a Winograd code, an EVENODD or a derivative of an EVENODD code, or a Reed Solomon code. The array controller determines the contents of the check storage units so that any three erasures from the data and check storage units can be corrected by the array controller. Failure of any three storage units, data and check, can occur before data stored in the data storage subsystem is lost. The array controller updates a block of data contained in array using only six IO operations while maintaining the contents of the check storage units so that any three erasures of the data storage units and the check storage units can be corrected by the array controller. Two of the IO operations are read operations and four of the IO operations are write operations. More specifically, the read operations read data from the data storage units that are not being updated, and the four write operations write data to the data storage unit being updated and to the three check storage units.
Brief description of the drawings
[0019] The present invention is illustrated by way of example and not by limitation in the accompanying figures in which like reference numerals indicate similar elements and in which:
[0020] Figure 1 shows a RAID 3 + 3 storage subsystem according to an embodiment of the present invention;
[0021] Figure 2 is a graph comparing the relative protection of different conventional system configurations and a RAID 3 + 3 system configuration according to an embodiment of the present invention; and
[0022] Figure 3 shows a RAID 3 + 3 storage subsystem according to an embodiment of the present invention in which the subsystem is configured as a plurality of stripes, each consisting of a RAID 3 + 3 base array, and in which the data and check elements are distributed among the storage units for minimizing access hot spots.
Mode(s) for carrying out the invention
[0023] The present invention provides a new storage system configuration that has significant advantages over previously conventional storage system configurations. In that regard, the storage system configuration of the present invention provides the best combination of performance, protection and efficiency. The storage system configuration of the present invention also enables entirely new techniques for handling errors that increase the level of protection. See, for example, US Patent Application Serial No. 10/619,641 (Attorney Docket No. ARC920030014US1), entitled "Anamorphic Codes", US Patent Application Serial No. 10/619,649 (Attorney Docket No. ARC9-2003-0015US1), entitled "Autonomic Parity Exchange," and US Patent Application Serial No. 10/619,633 (Attorney Docket No. ARC9-2003-0016US1) entitled "Multi-path Data Retrieval From Redundant Array", and each incorporated by reference herein.
[0024] Figure 1 shows a RAID 3 + 3 storage subsystem 100. Subsystem 100 includes an array controller 101 , three data storage units A, B and C containing data and three check storage units P, Q and R containing redundant information. Data storage units A, B and C and check storage units P, Q and R typically are Hard Disk Drives (HDDs), but will be referred to herein as storage units because the present invention is applicable to storage systems formed from arrays of other memory devices, such as Random Access Memory (RAM) storage devices, optical storage device, and tape storage devices. Storage units A, B, C, P, Q and R communicate with array controller 101 over interface 102. Array controller 101 communicates to other controllers and host systems (not shown) over interface 103. Such a configuration allows array controller 101 to communicate with multiple storage arrays.
[0025] The configuration of storage subsystem 100 is referred to as a symmetric code in which the number of data storage units is the same as the number of redundant storage units, and is MDS. Array controller 101 calculates redundant information from the contents of the data units such that all the data can be recovered from any three of the six storage units.
[0026] There are several ways of calculating the redundant data. The preferred method is to use a Winograd code. Winograd codes are highly efficient encodings that only utilize exclusive-OR (XOR) operations for computing the redundant data. There are highly efficient Winograd codes for computing a 3 + 3 code, (as illustrated in US Patent Application Serial No. 10/600,593 (Attorney Docket No. YOR9-2003-0069US1) which is incorporated by reference herein. There are also extensions to the EVENODD code that only utilize XOR operations, however they are less efficient than the Winograd codes. See, for example, M. Blaum et al., "EVENODD: An Efficient Scheme For Tolerating Double Disk Failures In A RAID Architecture," IEEE Trans, on Computers, Vol. 44, No. 2, pp. 192- 202, Feb. 1995, and M. Blaum et al., "The EVENODD Code and its Generalization," High Performance Mass Storage and Parallel I/O: Technologies and Applications,1 edited by H. Jin et al., IEEE & Wiley Press, New York, Chapter 14, pp. 1872001.
[0027] The data efficiency of RAID 3 + 3 storage subsystem 100 is Vz. The configuration of RAID 3 + 3 array 100 as a storage subsystem that is part of a larger storage system provides several advantages over conventional storage subsystems relating to failure resilience and write performance.
[0028] For example, RAID 3 + 3 subsystem 100 can tolerate failure of any three storage units without losing the data set. This is a property of a Maximum Distance Separation (MDS) erasure code; such as a Winograd code, an EVENODD or a derivative of an EVENODD code, or a Reed-Solomon code, that RAID 3 + 3 storage subsystem 100 uses. The resilience to failure permits repairs to be made to RAID 3 + 3 storage subsystem 100 in a less urgent fashion for conventional RAID system configurations. That is, by providing more redundancy, the opportunity to repair a broken subsystem is increased, thereby allowing a longer interval before data loss occurs due to storage unit failures. Additionally, by keeping the number of storage units within the subsystem low, the chances of units failing within each subsystem is reduced in comparison to subsystems that use a larger number of storage units.
[0029] An additional benefit occurs during the repair stage when having D > 2 (i.e., there is remaining redundancy) allows the recovery of further, perhaps small, data loss events by any unit that is being used during the repair process. Furthermore, when one or fewer storage units have failed, array controller 101 of RAID 3 + 3 subsystem 100 is able to repair data from any storage unit that returns incorrect data.
Table 1
Figure imgf000005_0001
[0030] Table 1 compares the data storage efficiency and write performance penalty of different conventional system configurations and a RAID 3 + 3 system configuration according to an embodiment of the present invention. The first (leftmost) column lists a number of conventional system configurations, including a RAID 3 + 3 system configuration according to an embodiment of the present invention. The second column shows the minimum Hamming distance, the third column shows the data storage efficiency, and the fourth column shows the write performance penalty for the different system configurations listed in the first column to Table 1. The data storage efficiency value for each respective system configuration, ignoring spares, is computed assuming an array size of m = 16 storage units. The write performance penalty values represent the number of IO operations for small block writes.
[0031] Figure 2 is a graph comparing the relative protection over a period of time of the system configurations listed in Table 1. The abscissa lists the system configurations, including a RAID 3 + 3 system configuration according to an embodiment of the present invention. The bars indicate the relative protection level provided by each respective system configuration, as quantified by the right ordinate. In the example of Figure 2, an array size of m = 16 is assumed, and 250 GB storage units with a 1 Million hour MTBF and a hard error probability of 1 in 1014 bits transferred. Horizontal line 201 at a protection level of 1 indicates a selected protection target of 1 data loss event per million storage units per 5 years. Starting at the left side of Figure 2, the protection levels provided by a RAID 5 system configuration and a Mirroring system configuration (both distance D = 2 solutions) do not meet the selected protection target (line 201), revealing a need for a stronger solution than provided by either of these two system configurations.. A RAID 6 (n + 2) system configuration at distance D = 3 has high efficiency, but falls far short of the reliability target. A Symmetric 2 + 2 system configuration and a 2x Mirror system configuration are both distance D = 3 solutions that hover near the selected protection target (line 201). These two system configurations have similar levels of protection, but the 2x Mirror configuration design trades efficiency for performance. A RAID n + 3 system configuration is a distance D = 4 solution having high efficiency, but an acutely poor write performance with essentially the same level of protection as the distance D = 3 solutions. Thus, there is a significant reliability tradeoff required for achieving high efficiency. [0032] The three rightmost system configurations in Figure 2 are all distance D = 4, and all are significantly more reliable than the other six configurations. Of the three system configurations, a RAID 3 + 3 system configuration according to the present invention provides the highest efficiency of the three rightmost system configuration, and has the same write behavior as a RAID 51 system configuration. A 3x Mirror system design sacrifices substantial efficiency for improved the write performance. All of the D = 4 system configurations shown in Figure 2 have sufficient protection headroom to be sufficient for future generations (> 4 orders of magnitude) of storage system.
[0033] A RAID 3 + 3 system configuration according to an embodiment of the present invention achieves a distance of D = 4, while requiring only six IOs for small block writes.
[0034] A conventional updating technique is used for a linear MDS code to update parities based on changes in data. The conventional technique requires reading the old data from the data drive, reading the corresponding old parities from the parity drives, writing the new data, computing the new parities and writing the new parities to the parity drives. The conventional technique of updating parities based on changes in data will be referred to herein as the "forward method" of updating parities. Thus, the number of IOs to perform an update write for the forward method is:
[0035] (1)
IOwfwd = a + r) + 0 + r)
Refltf old data and parities Writenew data and panties
2D
[0036] A second method that can be used for updating parity in an MDS code referred to herein as the "complementary method" of updating parities. In the complementary method, the existing data is first read from the data drives that are not being updated, then the new data and parity values are written. The number of IOs to perform an update write for the complementary update method is:
[0037] (2)
IOWcomp = + (1 + r)
ReadComplemeiάata Write newdataand parities
— n + r
= m
Thus, there are situations in which the complementary method is more efficient than the conventional forward method. When [0038] (3)
IOwcomp≤ IOwβvd
[0039] it follows that [0040] (4) n + r < 2(r + V) n ≤ r + 2. [0041] Equation 4 shows that array configurations having a high degree of redundancy thus have better IO efficiency by using the complementary method for updating parity. The complementary method also spreads the IO load more evenly among the storage units of the system because there is one IO per device - either a read or a write. Conversely, the forward method involves read-modify-write operations on the accessed devices resulting in a more localized access pattern. The complementary method may also have better implementation characteristics when, for example, nearby data is cached.
[0042] A symmetric code where n = r provides a further performance advantage when the complementary method is used for update writes. In a symmetric code, the Hamming distance is D = r + 1. In the general MDS case, the number of IOs to perform an update was shown to be lOWfwd = 2D. For a symmetric code update using the complementary method,
[0043] (5)
IOwSym = m
= n + r 2r = 2D - 2.
[0044] Thus, two IOs are saved from the case of the general MDS codes using the forward update method. This means that a symmetric code can achieve a minimum distance that is 1 greater than a general MDS code at the same write performance.
[0045] Referring to Figure 1 , consider a situation of an update write to unit B. Using the complementary method, the associated old data is read from units A and C, then the new data is written to unit B, and the new check information is written to units P, Q and R. In contrast, the conventional forward method would entail reading the associated old data from units B, P, Q and R, then writing the new data to B and the new checks to P, Q and R. Thus, the complementary method uses six IOs, while the conventional forward method requires eight IOs.
[0046] Distance D = 4 can also be achieved using a 3x mirror. This requires only four IOs for an update write, but has an efficiency of 14. RAID 51 system designs and derivatives can achieve distance D = 4 at six IOs with a combination of the forward method and a copy, but have efficiency < Vz.
[0047] Distributed parity can be used with a RAID 3 + 3 system configuration according to the present invention for avoiding hot spots. Hot spots can occur when data access patterns are localized. RAID 5 uses distributed parity (also called declustered parity) to avoid hotspots induced by having a dedicated parity storage unit (known as RAID 4). RAID systems using the forward update method will have hot spots on the parity units due to the read-modify-write operations. While RAID systems using the complementary update method avoid this type of hot spot, write activity will concentrate on the check units. Figure 3 illustrates one method for distributing parity across the storage units to achieve a balanced distribution of array elements. This involves striping the data across the set of storage units such that each storage unit has elements of all the (A, B, C, P, Q and R) types. Referring to Figure 3, storage units 1are shown as the columns, with stripes "las the rows. The elements are rotated 1 unit to the right for each successive stripe. Clearly, there are many other stripe configurations that can be utilized to avoid hot spots.
[0048] While the present invention has been described in terms of storage arrays formed from HDD storage units, the present invention is applicable to storage systems formed from arrays of other memory devices, such as Random Access Memory (RAM) storage devices, optical storage device, and tape storage devices. Additionally, it is suitable to virtualized storage systems, such as arrays built out of network-attached storage. It is further applicable to any redundant system in which there is some state information that associates a redundant component to particular subset of components, and that state information may be transferred using a donation operation.
[0049] Although the foregoing invention has been described in some detail for purposes of clarity of understanding, it will be apparent that certain changes and modifications may be practiced that are within the scope of the appended claims. Accordingly, the present embodiments are to be considered as illustrative and not restrictive, and the invention is not to be limited to the details given herein, but may be modified within the scope and equivalents of the appended claims.

Claims

Claims
1. A data storage subsystem, comprising: three data storage units; three check storage units; and an array controller coupled to the three data storage units and the three check storage units, the array controller determining the contents of the check storage units so that any three erasures of the data storage units and the check storage units can be corrected by the array controller.
2. The data storage subsystem according to claim 1 , wherein information is stored on the data storage subsystem as a symmetric Maximum Distance Separation code.
3. The data storage subsystem according to claim 2, wherein the Maximum Distance Separation code is a Winograd code.
4. The data storage subsystem according to claim 2, wherein the Maximum Distance Separation code is a Reed-Solomon code.
5. The data storage subsystem according to claim 2, wherein the Maximum Distance Separation code is an EVENODD code.
6. The data storage subsystem according to claim 2, wherein the Maximum Distance Separation code is a derivative of an EVENODD code.
7. The data storage subsystem according to claim 1 , wherein the array controller updates a block of data contained in any one of the data storage units and the check storage units using only six IO operations while determining the contents of the check storage units so that any three erasures of the data storage units and the check storage units can be corrected by the array controller.
8. The data storage subsystem according to claim 7, wherein two of the IO operations are read operations and four of the IO operations are write operations.
9. The data storage subsystem according to claim 7, wherein the read operations read data from the data storage units that are not being updated, and the four write operations write data to the data storage unit being updated and to the three check storage units.
10. The data storage subsystem according to claim 1 , wherein failure of any three data storage units and check storage units failures can occur before data stored on the data storage subsystem is lost.
11. The data storage subsystem according to claim 1 , wherein data is recoverable from a partially readable storage unit.
12. The data storage subsystem according to claim 1 , wherein the array controller can recover any data stored on the data subsystem when all three data storage units have failed.
13. A method of updating data stored on a data storage subsystem, the data storage subsystem including three data storage units, three check storage units and an array controller coupled to the three data storage units and the three check storage units, the array controller determining the contents of the check storage units so that any three erasures of the data storage units and the check storage units can be corrected by the array controller, the method comprising steps of: reading complementary data from the two data storage units that are not being updated; and writing data to the data storage unit being updated and to the three check storage units.
14. The method according to claim 13, wherein information is stored on the data storage subsystem as a symmetric Maximum Distance Separation code. 5. The method according to claim 14, wherein the Maximum Distance Separation code is one of a Winograd code; a Reed-Solomon code; an EVENODD code; or is a derivative of an EVENODD code.
PCT/EP2004/051385 2003-07-14 2004-07-07 Data storage array WO2005006173A2 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CA2532766A CA2532766C (en) 2003-07-14 2004-07-07 Data storage array
EP04766143A EP1644819A2 (en) 2003-07-14 2004-07-07 Data storage array
JP2006519919A JP2009514056A (en) 2003-07-14 2004-07-07 Data storage array

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/619,648 2003-07-14
US10/619,648 US7254754B2 (en) 2003-07-14 2003-07-14 Raid 3+3

Publications (3)

Publication Number Publication Date
WO2005006173A2 WO2005006173A2 (en) 2005-01-20
WO2005006173A9 true WO2005006173A9 (en) 2006-02-23
WO2005006173A3 WO2005006173A3 (en) 2006-06-08

Family

ID=34062609

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2004/051385 WO2005006173A2 (en) 2003-07-14 2004-07-07 Data storage array

Country Status (8)

Country Link
US (3) US7254754B2 (en)
EP (1) EP1644819A2 (en)
JP (1) JP2009514056A (en)
KR (1) KR100985444B1 (en)
CN (1) CN100495353C (en)
CA (1) CA2532766C (en)
TW (1) TWI338219B (en)
WO (1) WO2005006173A2 (en)

Families Citing this family (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7068729B2 (en) 2001-12-21 2006-06-27 Digital Fountain, Inc. Multi-stage code generator and decoder for communication systems
US6307487B1 (en) 1998-09-23 2001-10-23 Digital Fountain, Inc. Information additive code generator and decoder for communication systems
US9240810B2 (en) 2002-06-11 2016-01-19 Digital Fountain, Inc. Systems and processes for decoding chain reaction codes through inactivation
KR101143282B1 (en) 2002-10-05 2012-05-08 디지털 파운튼, 인크. Systematic encoding and decoding of chain reaction codes
US7533325B2 (en) 2003-07-14 2009-05-12 International Business Machines Corporation Anamorphic codes
US7379974B2 (en) * 2003-07-14 2008-05-27 International Business Machines Corporation Multipath data retrieval from redundant array
EP1665539B1 (en) 2003-10-06 2013-04-10 Digital Fountain, Inc. Soft-Decision Decoding of Multi-Stage Chain Reaction Codes
US7134066B2 (en) * 2003-10-20 2006-11-07 International Business Machines Corporation Generalized parity stripe data storage array
US8645622B2 (en) * 2003-11-18 2014-02-04 International Business Machines Corporation Method to protect data on a disk drive from uncorrectable media errors
EP1706946A4 (en) * 2003-12-01 2006-10-18 Digital Fountain Inc Protection of data from erasures using subsymbol based codes
US7418651B2 (en) 2004-05-07 2008-08-26 Digital Fountain, Inc. File download and streaming system
JP2006268524A (en) * 2005-03-24 2006-10-05 Fujitsu Ltd Storage device, and its control method and program
US7742755B2 (en) * 2005-09-19 2010-06-22 Silverbrook Research Pty Ltd Retrieving a bill via a coded surface
US7506200B2 (en) * 2006-01-25 2009-03-17 International Business Machines Corporation Apparatus and method to reconfigure a storage array disposed in a data storage system
WO2007095550A2 (en) 2006-02-13 2007-08-23 Digital Fountain, Inc. Streaming and buffering using variable fec overhead and protection periods
US9270414B2 (en) 2006-02-21 2016-02-23 Digital Fountain, Inc. Multiple-field based code generator and decoder for communications systems
US7971129B2 (en) 2006-05-10 2011-06-28 Digital Fountain, Inc. Code generator and decoder for communications systems operating using hybrid codes to allow for multiple efficient users of the communications systems
US9432433B2 (en) 2006-06-09 2016-08-30 Qualcomm Incorporated Enhanced block-request streaming system using signaling or block creation
US9178535B2 (en) 2006-06-09 2015-11-03 Digital Fountain, Inc. Dynamic stream interleaving and sub-stream based delivery
US9209934B2 (en) 2006-06-09 2015-12-08 Qualcomm Incorporated Enhanced block-request streaming using cooperative parallel HTTP and forward error correction
US9380096B2 (en) 2006-06-09 2016-06-28 Qualcomm Incorporated Enhanced block-request streaming system for handling low-latency streaming
US9386064B2 (en) 2006-06-09 2016-07-05 Qualcomm Incorporated Enhanced block-request streaming using URL templates and construction rules
US9419749B2 (en) 2009-08-19 2016-08-16 Qualcomm Incorporated Methods and apparatus employing FEC codes with permanent inactivation of symbols for encoding and decoding processes
US7506201B2 (en) * 2006-08-28 2009-03-17 International Business Machines Corporation System and method of repair management for RAID arrays
US7702853B2 (en) * 2007-05-04 2010-04-20 International Business Machines Corporation Data storage system with power management control and method
CA2697764A1 (en) 2007-09-12 2009-03-19 Steve Chen Generating and communicating source identification information to enable reliable communications
EP2304568B1 (en) * 2008-06-06 2013-08-14 Pivot3 Method and system for distributed raid implementation
US8219750B2 (en) * 2008-06-30 2012-07-10 Pivot3 Method and system for execution of applications in conjunction with distributed RAID
US8176247B2 (en) * 2008-10-28 2012-05-08 Pivot3 Method and system for protecting against multiple failures in a RAID system
WO2010049276A1 (en) * 2008-10-28 2010-05-06 International Business Machines Corporation Multiple erasure protection
US8656131B2 (en) 2008-10-31 2014-02-18 Dot Hill Systems Corporation Method and apparatus for expanding a virtual storage device
US9281847B2 (en) 2009-02-27 2016-03-08 Qualcomm Incorporated Mobile reception of digital video broadcasting—terrestrial services
US9288010B2 (en) 2009-08-19 2016-03-15 Qualcomm Incorporated Universal file delivery methods for providing unequal error protection and bundled file delivery services
US9917874B2 (en) 2009-09-22 2018-03-13 Qualcomm Incorporated Enhanced block-request streaming using block partitioning or request controls for improved client-side handling
US20110280311A1 (en) 2010-05-13 2011-11-17 Qualcomm Incorporated One-stream coding for asymmetric stereo video
US8392805B2 (en) 2010-07-15 2013-03-05 Hewlett-Packard Development Company, L. P. Non-MDS erasure codes for storage systems
US9596447B2 (en) 2010-07-21 2017-03-14 Qualcomm Incorporated Providing frame packing type information for video coding
US8386841B1 (en) * 2010-07-21 2013-02-26 Symantec Corporation Systems and methods for improving redundant storage fault tolerance
US9456015B2 (en) 2010-08-10 2016-09-27 Qualcomm Incorporated Representation groups for network streaming of coded multimedia data
US8958375B2 (en) 2011-02-11 2015-02-17 Qualcomm Incorporated Framing for an improved radio link protocol including FEC
US9270299B2 (en) 2011-02-11 2016-02-23 Qualcomm Incorporated Encoding and decoding using elastic codes with flexible source block mapping
US9058291B2 (en) 2011-02-28 2015-06-16 International Business Machines Corporation Multiple erasure correcting codes for storage arrays
US8433979B2 (en) 2011-02-28 2013-04-30 International Business Machines Corporation Nested multiple erasure correcting codes for storage arrays
US8527699B2 (en) 2011-04-25 2013-09-03 Pivot3, Inc. Method and system for distributed RAID implementation
US9253233B2 (en) 2011-08-31 2016-02-02 Qualcomm Incorporated Switch signaling methods providing improved switching between representations for adaptive HTTP streaming
US8468423B2 (en) * 2011-09-01 2013-06-18 International Business Machines Corporation Data verification using checksum sidefile
US9843844B2 (en) 2011-10-05 2017-12-12 Qualcomm Incorporated Network streaming of media data
US8874995B2 (en) * 2012-02-02 2014-10-28 International Business Machines Corporation Partial-maximum distance separable (PMDS) erasure correcting codes for storage arrays
US9294226B2 (en) 2012-03-26 2016-03-22 Qualcomm Incorporated Universal object delivery and template-based file delivery
WO2014140677A1 (en) 2013-03-15 2014-09-18 Emc Corporation Offloading raid update operations to disk controllers
US10685037B2 (en) * 2013-12-18 2020-06-16 Amazon Technology, Inc. Volume cohorts in object-redundant storage systems
US9870284B2 (en) 2015-05-27 2018-01-16 International Business Machines Corporation First responder parities for storage array
US10588053B2 (en) * 2015-08-30 2020-03-10 Lg Electronics Inc. Cluster-based collaborative transmission method in wireless communication system and apparatus therefor
US10055278B2 (en) * 2015-10-30 2018-08-21 International Business Machines Corporation Autonomic parity exchange in data storage systems
US10031803B2 (en) 2015-12-14 2018-07-24 International Business Machines Corporation Distributed coding for multiple dimensional parities
US11454448B2 (en) * 2017-11-27 2022-09-27 Dana Canada Corporation Enhanced heat transfer surface
CN109496298A (en) * 2018-06-01 2019-03-19 东莞理工学院 A kind of building method of EVENODD code
US11151056B2 (en) * 2019-04-25 2021-10-19 EMC IP Holding Company LLC Efficient virtualization layer structure for a data storage system

Family Cites Families (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5148432A (en) 1988-11-14 1992-09-15 Array Technology Corporation Arrayed disk drive system and method
AU630635B2 (en) 1988-11-14 1992-11-05 Emc Corporation Arrayed disk drive system and method
US5128944A (en) * 1989-05-26 1992-07-07 Texas Instruments Incorporated Apparatus and method for providing notification of bit-cell failure in a redundant-bit-cell memory
JPH03172026A (en) * 1989-11-30 1991-07-25 Nec Corp Encoding/decoding system
US5134616A (en) * 1990-02-13 1992-07-28 International Business Machines Corporation Dynamic ram with on-chip ecc and optimized bit and word redundancy
US5680574A (en) 1990-02-26 1997-10-21 Hitachi, Ltd. Data distribution utilizing a master disk unit for fetching and for writing to remaining disk units
US5134619A (en) 1990-04-06 1992-07-28 Sf2 Corporation Failure-tolerant mass storage system
US5204836A (en) * 1990-10-30 1993-04-20 Sun Microsystems, Inc. Method and apparatus for implementing redundancy in parallel memory structures
US5579475A (en) 1991-02-11 1996-11-26 International Business Machines Corporation Method and means for encoding and rebuilding the data contents of up to two unavailable DASDS in a DASD array using simple non-recursive diagonal and row parity
US5258984A (en) 1991-06-13 1993-11-02 International Business Machines Corporation Method and means for distributed sparing in DASD arrays
US5301297A (en) 1991-07-03 1994-04-05 Ibm Corp. (International Business Machines Corp.) Method and means for managing RAID 5 DASD arrays having RAID DASD arrays as logical devices thereof
US5257391A (en) 1991-08-16 1993-10-26 Ncr Corporation Disk controller having host interface and bus switches for selecting buffer and drive busses respectively based on configuration control signals
US5499337A (en) * 1991-09-27 1996-03-12 Emc Corporation Storage device array architecture with solid-state redundancy unit
US5379417A (en) * 1991-11-25 1995-01-03 Tandem Computers Incorporated System and method for ensuring write data integrity in a redundant array data storage system
US5506977A (en) 1991-12-17 1996-04-09 Dell Usa, L.P. Method and controller for minimizing reads during partial stripe write operations to a disk drive
US5398253A (en) 1992-03-11 1995-03-14 Emc Corporation Storage unit generation of redundancy information in a redundant storage array system
WO1993018456A1 (en) * 1992-03-13 1993-09-16 Emc Corporation Multiple controller sharing in a redundant storage array
WO1993023803A1 (en) * 1992-05-21 1993-11-25 Fujitsu Limited Disk array apparatus
US5666511A (en) 1992-10-08 1997-09-09 Fujitsu Limited Deadlock suppressing schemes in a raid system
US5617425A (en) * 1993-05-26 1997-04-01 Seagate Technology, Inc. Disc array having array supporting controllers and interface
US6269453B1 (en) * 1993-06-29 2001-07-31 Compaq Computer Corporation Method for reorganizing the data on a RAID-4 or RAID-5 array in the absence of one disk
JP3188071B2 (en) * 1993-10-14 2001-07-16 富士通株式会社 Disk cache device
JP3078972B2 (en) * 1993-11-05 2000-08-21 富士通株式会社 Disk array device
US5485571A (en) * 1993-12-23 1996-01-16 International Business Machines Corporation Method and apparatus for providing distributed sparing with uniform workload distribution in failures
US5862158A (en) * 1995-11-08 1999-01-19 International Business Machines Corporation Efficient method for providing fault tolerance against double device failures in multiple device systems
US5809332A (en) * 1996-06-03 1998-09-15 Emc Corporation Supplemental communication between host processor and mass storage controller using modified diagnostic commands
KR100275900B1 (en) * 1996-09-21 2000-12-15 윤종용 Method for implement divideo parity spare disk in raid sub-system
US6161165A (en) 1996-11-14 2000-12-12 Emc Corporation High performance data path with XOR on the fly
JP3271916B2 (en) * 1996-12-06 2002-04-08 株式会社エクシング Sound / video playback system
US5793683A (en) * 1997-01-17 1998-08-11 International Business Machines Corporation Wordline and bitline redundancy with no performance penalty
JP3595099B2 (en) 1997-03-17 2004-12-02 富士通株式会社 Device array system
US6154853A (en) 1997-03-26 2000-11-28 Emc Corporation Method and apparatus for dynamic sparing in a RAID storage system
US5867433A (en) * 1997-07-11 1999-02-02 Vanguard International Semiconductor Corporation Semiconductor memory with a novel column decoder for selecting a redundant array
US5937428A (en) 1997-08-06 1999-08-10 Lsi Logic Corporation Method for host-based I/O workload balancing on redundant array controllers
JP3618529B2 (en) * 1997-11-04 2005-02-09 富士通株式会社 Disk array device
KR19990051729A (en) * 1997-12-19 1999-07-05 정선종 Structure of Raid System with Dual Array Controllers
US6353895B1 (en) 1998-02-19 2002-03-05 Adaptec, Inc. RAID architecture with two-drive fault tolerance
US6138125A (en) 1998-03-31 2000-10-24 Lsi Logic Corporation Block coding method and system for failure recovery in disk arrays
JP4234233B2 (en) * 1998-05-27 2009-03-04 富士通株式会社 Information storage device and recording medium storing program
US6279138B1 (en) 1998-08-04 2001-08-21 International Business Machines Corporation System for changing the parity structure of a raid array
US6381715B1 (en) * 1998-12-31 2002-04-30 Unisys Corporation System and method for performing parallel initialization and testing of multiple memory banks and interfaces in a shared memory module
US7000069B2 (en) 1999-04-05 2006-02-14 Hewlett-Packard Development Company, L.P. Apparatus and method for providing very large virtual storage volumes using redundant arrays of disks
US6275898B1 (en) * 1999-05-13 2001-08-14 Lsi Logic Corporation Methods and structure for RAID level migration within a logical unit
US6530004B1 (en) * 2000-06-20 2003-03-04 International Business Machines Corporation Efficient fault-tolerant preservation of data integrity during dynamic RAID data migration
MY134095A (en) * 2000-10-23 2007-11-30 Ibm Method and apparatus for performing drive-based updates to disk array controllers
US20020069318A1 (en) * 2000-12-01 2002-06-06 Chow Yan Chiew Real time application accelerator and method of operating the same
US6775794B1 (en) * 2001-05-23 2004-08-10 Applied Micro Circuits Corporation Use of activity bins to increase the performance of disk arrays
JP2003084923A (en) 2001-09-06 2003-03-20 Hitachi Ltd Constituting method of cluster type disk array device
US6748488B2 (en) * 2001-09-28 2004-06-08 Sun Microsystems, Inc. Storage array having multiple erasure correction and sub-stripe writing
JP2003196032A (en) * 2001-12-26 2003-07-11 Nec Corp Write cache control method of storage device, and storage device
US6687791B2 (en) * 2002-01-07 2004-02-03 Sun Microsystems, Inc. Shared cache for data integrity operations
US7350126B2 (en) * 2003-06-23 2008-03-25 International Business Machines Corporation Method for constructing erasure correcting codes whose implementation requires only exclusive ORs
US7069382B2 (en) * 2003-09-24 2006-06-27 Aristos Logic Corporation Method of RAID 5 write hole prevention

Also Published As

Publication number Publication date
CN1902592A (en) 2007-01-24
CA2532766A1 (en) 2005-01-20
JP2009514056A (en) 2009-04-02
CN100495353C (en) 2009-06-03
WO2005006173A2 (en) 2005-01-20
US20080126890A1 (en) 2008-05-29
US20080016413A1 (en) 2008-01-17
WO2005006173A3 (en) 2006-06-08
US7788569B2 (en) 2010-08-31
US20050015700A1 (en) 2005-01-20
TW200515146A (en) 2005-05-01
CA2532766C (en) 2011-04-05
US7254754B2 (en) 2007-08-07
EP1644819A2 (en) 2006-04-12
KR20060052772A (en) 2006-05-19
US8108750B2 (en) 2012-01-31
KR100985444B1 (en) 2010-10-06
TWI338219B (en) 2011-03-01

Similar Documents

Publication Publication Date Title
CA2532766C (en) Data storage array
US7797611B2 (en) Creating an error correction coding scheme and reducing data loss
US7529970B2 (en) System and method for improving the performance of operations requiring parity reads in a storage array system
US6675318B1 (en) Two-dimensional storage array with prompt parity in one dimension and delayed parity in a second dimension
JP4516846B2 (en) Disk array system
US7562281B2 (en) Autonomic parity exchange
US8386891B2 (en) Anamorphic codes
US8645622B2 (en) Method to protect data on a disk drive from uncorrectable media errors
US10860423B2 (en) Method and apparatus for performing dynamic recovery management regarding redundant array of independent disks
CN113420341B (en) Data protection method, data protection equipment and computer system
JP2006268286A (en) Disk array device

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 200480020390.3

Country of ref document: CN

AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): BW GH GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 1020067000066

Country of ref document: KR

WWE Wipo information: entry into national phase

Ref document number: 2006519919

Country of ref document: JP

ENP Entry into the national phase

Ref document number: 2532766

Country of ref document: CA

WWE Wipo information: entry into national phase

Ref document number: 2004766143

Country of ref document: EP

COP Corrected version of pamphlet

Free format text: DUE TO A PRINTING ERROR DURING THE TECHNICAL PREPARATION FOR INTERNATIONAL PUBLICATION, REPLACE ALL PAGES BY CORRECT PAGES (11 PAGES)

WWP Wipo information: published in national office

Ref document number: 2004766143

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 1020067000066

Country of ref document: KR