WO2003077111A1 - Controleur pour dispositif raid - Google Patents

Controleur pour dispositif raid Download PDF

Info

Publication number
WO2003077111A1
WO2003077111A1 PCT/JP2002/002373 JP0202373W WO03077111A1 WO 2003077111 A1 WO2003077111 A1 WO 2003077111A1 JP 0202373 W JP0202373 W JP 0202373W WO 03077111 A1 WO03077111 A1 WO 03077111A1
Authority
WO
WIPO (PCT)
Prior art keywords
disk
segments
segment
stripe
disks
Prior art date
Application number
PCT/JP2002/002373
Other languages
English (en)
French (fr)
Inventor
Takashi Watanabe
Original Assignee
Fujitsu Limited
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 Fujitsu Limited filed Critical Fujitsu Limited
Priority to JP2003575260A priority Critical patent/JP4236590B2/ja
Priority to PCT/JP2002/002373 priority patent/WO2003077111A1/ja
Publication of WO2003077111A1 publication Critical patent/WO2003077111A1/ja
Priority to US10/938,628 priority patent/US7447837B2/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • 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
    • G06F11/1096Parity calculation or recalculation after configuration or reconfiguration of the system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

Definitions

  • the present invention relates to a control device for a RAID device (disk array device).
  • RID Redundant Array of Independent Disks
  • R A ID has an array in which several disk drives (hereinafter simply referred to as “disks”) are combined.
  • the physical storage area of each disk is divided into a number of smaller blocks of fixed size (called “segments”: 128 MB, 1 GB, etc.). Collected one by one, they form a virtual area called a “stripe set”.
  • Stripes are formed by allocating the required number of segments from each disk to a stripe using the segments as allocation units, to form a predetermined stripe width.
  • a stripe is a virtual area composed of segments allocated one by one from a plurality of disks in a disk array and distributed over a plurality of disks.
  • a stripe has a width, the number of segments that make it up.
  • a disk array appears to a user, that is, a host computer, as a single logical storage device or drive (volume). This allows a disk array consisting of multiple small disk drives to be used as a single large-capacity disk drive.
  • RAID has various types according to its purpose. Typical are RAID levels 0, 1, 3, and 5.
  • RAID level 0 is called “striving” A stripe is formed on a disk array, and data is stored in multiple segments that make up the stripe. This improves the data read / write speed.
  • 1 10 level 1 is called “mirroring”, and stores the same data in at least two segments in a stripe. This ensures data redundancy.
  • RA ID level 3 is called “striving in units of bits or bytes + fixed parity”, and records the parity of data striped in segments in units of bits or bytes on one disk.
  • RAI D level 5 is called "block-wise striping + distributed parity".
  • RA ID level 5 while data is stored in each of a plurality of segments constituting a stripe, parity information of data stored in a plurality of other segments is stored in one segment. This makes it possible to restore the original data using parity information even if one disk crashes.
  • the following Conventional Example 2 has been proposed as a method for adding a number of disks smaller than the stripe width and using the added disk together with the existing disks as one polyme. .
  • (Conventional example 2) As shown in FIG. 10 (B), one disk capable of forming the same number of segments as the number of stripes formed in the existing RAID is added. Then, the width of the existing RAID stripe is changed (in the example shown in Fig. 10 (B), the width is changed from 4 to 5).
  • An object of the present invention is to provide a control device for a RAID device which can use an added disk as a single film and can reduce the load and cost associated with the addition.
  • a storage area of a plurality of disks is divided into segments each having a fixed size, a stripe including a predetermined number of segments is formed, and a RAID area including at least one formed stripe is formed.
  • a segment for a stripe configured using existing multiple disks It is determined whether a new stripe can be formed without changing the allocation status of the existing stripe, and if it is determined that a new stripe cannot be formed, the allocation status of the segments to the existing stripe is formed.
  • the number of segments is changed without changing, and the unallocated segments are acquired one by one from the specified number of disks from among a plurality of disks including one or more disks to be added.
  • a new stripe to which the allocated segment is allocated is formed, and the allocation status of the segment for the change of the allocation and the formation of the new stripe is reflected in the table (14C).
  • the assignment means (1 2) in the first invention is:
  • the number of unallocated segments of the disk with the largest number of unallocated segments is A
  • the number of unallocated segments is A determination means (12) for determining whether or not the following condition is satisfied, where B is the total number of unallocated segments of the disk excluding the disk having the largest value, and s is the predetermined number.
  • the disk (X) having the largest number of unallocated segments and the disk (Y) having the smallest number of unallocated segments are specified, and the disk (Y) is used.
  • any unallocated segment of the disk (X) is assigned as a substitute segment to a stripe configured using the specific segment instead of the specific segment specified by the specifying means, It is preferable to include a reflection unit (12) for reflecting the change in the assignment in the table.
  • the allocating means (12) in the first invention when data is stored in the specific segment, is configured to further include data moving means (12) for moving the data to the alternative segment. Is preferred.
  • a storage area of a plurality of disks is divided into segments of a fixed size, stripes composed of a predetermined number of segments are formed, and data is stored in a RAID area composed of one or more formed stripes.
  • the allocating means (12) selects the same number of disks as the predetermined number in the descending order of the number of unallocated segments from among a plurality of disks including the disks to be added when the disks are added. Then, an unallocated segment is specified one by one from each of the selected disks, each specified segment is allocated to a new stripe, and this allocation state is reflected in the table (14D).
  • the allocating means (12) in the second invention when a disk is added, sets the number of segments of the added disk to C, and sets the number of unallocated segments of a plurality of disks including the added disk. Is D, and when the predetermined number is s, it is determined whether or not the following condition is satisfied.
  • FIG. 1 is a diagram showing an embodiment of a RA ID device.
  • FIGS. 2A, 2B and 2C are explanatory diagrams of the mapping table.
  • FIG. 3 is an explanatory diagram showing a state when a disk is added in the first embodiment of the RAID device.
  • FIG. 4 is a flowchart showing an allocation process when a disk is added by the CPU of the first embodiment.
  • FIGS. 5A and 5B are diagrams showing a matching table before and after the addition of a disk according to the first embodiment.
  • FIGS. 6A to 6F are explanatory diagrams of a modification of the first embodiment.
  • FIG. 7 is an explanatory diagram showing a state when a disk is added in the second embodiment of the RAID device.
  • FIG. 8 is a flowchart showing an allocation process when a disk is set up by the CPU according to the second embodiment.
  • FIGS. 9A and 9B are diagrams showing a matching table before and after the addition of a disk according to the second embodiment.
  • FIGS. 10 (A) and (B) are explanatory diagrams of a conventional technique.
  • FIG. 1 is a diagram showing an embodiment of a RA ID device according to the present invention.
  • the control device 10 includes a disk interface (I / O) 11, a CPU 12, and a memory 13.
  • a disk array consists of at least as many disks as segments forming a stripe, depending on the type of RAID.
  • the disk interface 11 reads and writes data from and to the disk array in accordance with instructions from the CPU 12.
  • the CPU 12 controls reading and writing of data via the disk interface 11 and forms a RAID area by executing, for example, a program stored in the memory 13.
  • the CPU 12 divides the physical storage area of each disk forming the disk array into small areas (segments) having a fixed size. A segment consists of a predetermined number of sectors. Subsequently, the CPU 12 collects segments one by one from a plurality of disks equal to the number of segments forming the stripe to form a “stripe” having a predetermined width. For example, segments are specified one by one from disks # 0 to #n shown in Fig. 1, and a stripe (having a width of n + 1) consisting of the specified n + 1 segments is formed. Stripe is CPU 12 is formed by assigning each disk segment to a stripe having a predefined width. The collection of stripes formed in this way becomes a RAID area.
  • the RAID area is a virtual storage space composed of a plurality of stripes. Then, the CPU 12 stores the relationship obtained by the process of allocating the physical storage space (segment) to the virtual storage space (RAID area (stripe)) in the mapping table 14 created on the memory 13. .
  • FIG. 2 is a diagram showing an example of the mapping tape 14.
  • Fig. 2 (A) is a diagram showing an example of a mapping table 14 (mapping table 14A) of RAID level 1 (mirroring) composed of three disks
  • Fig. 2 (B) FIG. 3 is an explanatory diagram of a mapping table 14A shown in FIG.
  • FIG. 2C is a diagram showing an example of the mapping table 14 (mapping table 14B) of RAID level 0 composed of five disks.
  • the left column indicates the position in the RA ID area
  • "0-4", "4-8", and "8-12” indicate the RA ID area.
  • "0" and "1" shown in the middle column and the right column indicate the number of the segment constituting each stripe.
  • Corresponding to the numbers "0" and "1”, for example, "DISK0: 0-4" and “DISK1: 0-4" indicate the areas on the disk of the segments constituting the stripe.
  • the set of segments described in the rows corresponding to the block ranges "0-4", "4-8", and "8-12" on the RAID area respectively constitute a stripe.
  • the storage area of three disks (DISK 0, 1, 2) is divided into two segments each, and the segment of disk 0 A 0—4 ”and disk 1 segment“ B0—4 ”are allocated to the stripe (stripe“ 0—4 ”) in the RAID area“ 0—4 ”. Also, segment “A4-8" of disk 0 and segment “B4-8” of disk 2 are allocated to the stripe (stripe "4-8") of the RAID area “4-8”. Also, segment “A8-12” of disk 1 and segment “B8 12" of disk 2 are allocated to the stripe (stripe "8-12") of RAID area "8-12".
  • each segment of five disks (DISK 0, 1, 2, 3, 4) is formed on the RAID area in the same manner as the mapping table 14A. Are assigned to the three slices 1, 0, 16 and 32, and 32 and 48, respectively.
  • the column corresponding to the number of the segment constituting each stripe is prepared only for the width of the stripe, and the block range on the RA ID area is increased by the stripe width (the number of constituent segments: 4 in this example). .
  • the stripe width is 4, four columns of segments ("0", “1", “2”, “3") are prepared and the The block ranges are "0-16", "16-32” and "32-48".
  • the data to be written is distributed and written to each segment that makes up the stripe.
  • RA ID level 4 or 5 is applied to mapping template 14B, then the rules according to the RA ID level will cause the data to be distributed to segments except for certain segments in each stripe.
  • the parity information of the data distributed in a certain segment is stored.
  • the method of setting the parity is the same as the conventional method, that is, the exclusive OR (XOR) of the bits recorded at the same position of each segment is set to 0 or 1 at any position.
  • the method of setting the value of the parity is applied.
  • the control device 10 (CPU 12) of the RA ID device according to the first embodiment divides each disk into a small range (segment: 128 megabytes, 1 gigabyte, etc.) when configuring the RA ID. . Subsequently, the control device 10 assigns the segment as a unit of assignment to the stripe to each stripe constituting the RAID area.
  • the control device 10 has a mapping table 14 in which the assignment status is mapped.
  • the controller 10 determines the width (the number of segments) of each stripe constituting the RAID area when a new disk is added while the above-described mapping table 14 is created. Extend RA ID area without change.
  • adding a disk if all segments of a disk other than the new disk (existing disk) have been allocated and the number of disks to be added (number of disks) is smaller than the stripe width, , Additional disk segment Cannot be assigned to a stripe. This is because stripes are formed by the aggregation of segments from different disks.
  • the CPU 12 moves the data stored on the existing disk to the disk to be added, so that the free space for forming a stripe on the existing disk (in the unallocated state). Segment). In other words, it harms the existing disk segment instead of the existing segment.
  • the condition that requires data movement can be expressed by the following conditional expression ⁇ Equation 1>.
  • FIG. 3 is an explanatory diagram of a method of allocating segments when a disk is added by the control device 10 of the first embodiment.
  • FIG. 4 is a flowchart illustrating the allocation method shown in FIG.
  • FIG. 5 is a diagram showing a change in the matting table due to the implementation of the assignment method shown in FIGS. 3 and 4.
  • multiple disks corresponding to existing disks are prepared.
  • the multiple disks consist of four disks (DISK # 0, # 1, # 2 and # 3) in this example.
  • Each of the disks # 0 to # 3 has the same storage capacity and is divided into four small segments.
  • a RAID area consisting of four stripes S 0 to S 3 extending over the respective disks # 0 to # 3 is formed.
  • FIG. 5 (A) shows a mapping table 14C showing the RAID area (segment allocation status for each stripe) shown in FIG. 3 (A).
  • the mapping table 14 C is created on the memory 13 by the CPU 12.
  • each segment is composed of four sectors, and is represented by disc-specific information and information indicating its position (for example, DISK0: 0-3).
  • stripe S 0 is assigned four segments “DISK0: 0-3”, “DISK1: 0-3”, “DISK2.-0-3” and “DISK3: 0-3”.
  • the stripe S1 is assigned four segments "DISK0: 4-7", “DISK1: 4-7”, “DISK2: 4-7” and "DISK3: 4-7”.
  • the stripe S2 is composed of four segments “DISK0: 8-11”, “DISK1: 8-11”, “DISK2: 8-11”, and “DISK3: 8-11”.
  • the stripe S3 is composed of four segments “DISK0: 12-15”, “DISK1: 12-15”, “DISK2: 12-15”, and “DISK3: 12-15”.
  • the width of each of the stripes S0 to S3 is 4.
  • stripes S0 to S3 data is arranged in accordance with the RAID level.
  • stripes S0 store data AO to A3
  • stripe S1 stores data B0 to: B3
  • stripe S2 stores data CO to C3
  • stripe S3 stores data CO to C3.
  • Data D0 to D3 are stored.
  • This example indicates RAID level 5, for example, and one of the data stored in each of the stripes S0 to S3 is parity information.
  • a new disk # 4 (DISK # 4) is added as shown in FIG. 3 (B).
  • the added disk # 4 has the same storage capacity as each of the disks # 0 to # '3, and has.' Four segments.
  • the CPU 12 functions as an assigning unit, a determining unit, and a specifying unit according to the present invention, and performs segment assignment changing processing for each stripe according to the flowchart shown in FIG.
  • step S01 the CPU 12 moves the data (changes the segment allocation (reallocates) according to the above equation 1 (A (s-1) ⁇ B). )) Is determined (step S01).
  • the processing in step S01 will be described with reference to FIG. 3B.
  • the width s of the stripe is 4 Applying the above to Equation 1,
  • conditional expression 1 Since conditional expression 1 is not satisfied, it is determined that data movement is necessary (S 01; YE S), and the process proceeds to step S 02.
  • the processing of the following steps S02 to S05 for example, the corresponding target is searched according to the following priorities. That is, the lower the number, the higher the priority.
  • step S O 2 the CPU 12 searches for the disk (X) having the largest free space (the number of free segments).
  • disk # 4 is found as disk (X).
  • the CPU 12 searches for the disk (Y) having the smallest free space (step S03).
  • disks # 0, # 1, # 2, and # 3 are found as disks (Y), but CPU 12 identifies disk # 0 as disk (Y) according to priority.
  • the CPU 12 searches for a segment that does not use the disk (X) in the stripe configured using the disk (Y) (step S04).
  • disk # 0 which is disk (Y)
  • the CPU 12 identifies (finds) the segment AO (DISK0: 0-3) assigned to the stripe S0 as the corresponding segment according to the priority.
  • This segment "DISK0: 0-3" corresponds to the specific segment.
  • step SO4 stores the data to be moved by the above process so that a plurality of segments of a certain disk are not allocated to a certain stripe due to the data movement. Identify which segment is running.
  • step SO4 the disk usage (quota) of disk (X) is If the amount of data that has been moved is smaller than the amount of disk (Y) used (the amount that has been allocated), the data to be moved (the segment to be reallocated) can always be found. Therefore, if a disk with the same capacity is added to the RA ID consisting of multiple disks with the same capacity, data to be moved can always be found.
  • the CPU 12 moves the data in the segment found in step S04 to an arbitrary free segment (alternative segment) of the disk (X) (step S0).
  • the alternate segments are selected to be used sequentially from the beginning of the storage area on each disk. That is, the CPU 12 moves the data AO stored in the segment “DISK0: 0-3” to the first segment “DISK4: 0-3” of the disk # 4 which is the disk (X) (FIG. B)). This segment “DISK4: 0-3” corresponds to the substitute segment. As a result, segment “DISK0: 0-3" becomes empty (unallocated).
  • the CPU 12 replaces the empty segment (in this example, segment "DISK0: 0-3") of the disk (Y) generated by the data movement in step S05 with a new RA.
  • the CPU 12 substitutes any unassigned segment “DISK4: 0-3” of the disk (X) as an alternative segment instead of the identified specific segment “DISK0: 0-3”.
  • the allocation is made to the stripe S0 configured using the specific segment "DISK0: 0-3", and the change of the allocation is reflected in the table (mapping table 14C).
  • step S 02 CPU 1 2 reads disk # 4 (disk Find capacity; 3).
  • step S03 the CPU 12 finds disk # 1 (remaining capacity; 0) as disk (Y) according to the priority (step S03).
  • the CPU 12 searches for a segment not using the disk # 4 from the stripe configured using the disk # 1 (step S04). At this time, when the segment "DISK1: 0-3" storing the data A1 is selected, two segments of the disk # 4 are allocated to the stripe S0. Therefore, the CPU 12 avoids selecting the segment "DISK1: 0-3” and selects the segment "DISK1: 4-7" constituting the stripe S1 as a specific segment according to the priority.
  • the CPU 12 converts the data B1 stored in the segment "DISK1: 4-7” into a free segment "DISK4: 4-7" (alternate segment) of the disk # 4 corresponding to the disk (Y). Move (Step S05; see FIG. 3B). As a result, segment "D ISKl: 4-7" becomes empty.
  • step S06 the CPU 12 updates the mapping table 14C (step S06), that is, the CPU 12 allocates the segment "DISK4: 4-7" of the disk # 4 to the stripe S1. Then, segment "DISK1: 4-7" of disk # 1 is assigned to a new stripe S4, and these are reflected in the mapping table 14C (see FIG. 5 (B)). Thereafter, the process returns to step S O1.
  • step S02 CPU 12 finds disk # 4 (remaining capacity; 2) as disk (X).
  • step S03 the CPU 12 finds the disk # 2 (remaining capacity; 0) as the disk (Y) according to the priority (step S03).
  • the CPU 12 searches for a segment not using the disk # 4 from the stripe configured using the disk # 2 (step S04). At this time, CPU 12 allocates two segments of disk # 4 to the same stripe. Select the segment "DISK2: 8-11" (specific segment) that configures stripe S2 according to the priority order.
  • the CPU 12 transfers the data C2 stored in the segment "DISK2: 8-11” to the free segment "DISK4: 8-11" of the disk # 4 corresponding to the disk (Y) (alternate segment). (Step S05).
  • step S06 the CPU 12 updates the mapping table 14C (step S06). That is, the CPU 12 allocates the segment "DISK4: 8-11 ,," of the disk # 4 to the stripe S2, and The segment “DISK2: 8-11” of # 2 is assigned to the new stripe S4, and these are reflected in the mapping table 14 C. Then, the process returns to step S01.
  • step S 01 the CPU 12 determines again whether conditional expression 1 is satisfied.
  • the conditional expression ⁇ Equation 1> is as follows.
  • step S07 the CPU 12 allocates a free segment of the added disk to a new stripe. That is, the CPU 12 allocates the empty segment “DISK4: 12-15” of the disk # 4 to the stripe S4, and reflects this in the mapping table 14C (see FIG. 5B). Then, the assignment process ends.
  • FIG. 5B is an explanatory diagram of the mapping table 14C after the addition of the disk # 4, and the addition of the disk # 4 changes the segment allocation to each of the stripes SO to S3 and changes the new stripe S 4 shows that the storage area of the RA ID area (volume) has been expanded.
  • control device 10 of the first embodiment when a disk is added, a new stripe is formed without changing the stripe width, thereby expanding the RAID area (volume). That is, data is moved (the assignment of segments to stripes is changed), and the mapping table of the disk area (segment) constituting the stripe is changed.
  • the amount of change in segment allocation can be significantly reduced compared to the method described in Conventional Example 2 in which the stripe width is changed according to the number of disks after addition. Therefore, the process for adding a disk can be completed quickly, and the operation can be returned to the normal operation.
  • the processing according to the first embodiment can be applied to RAID levels 0, 1, 3, and 4. That is, the assignment processing shown in FIG. 4 can be performed regardless of the RAID level. For this reason, the same program can be used to allocate segments as disks are added, regardless of the RAID level.
  • the configuration of the first embodiment can be modified as follows. In the first embodiment, it is only necessary that the segments constituting the stripes are clearly defined on the matting table 14, and the segments constituting the stripes may be discontinuous between disks. That is, as in the stripe S4 shown in FIG. 3C, the disk area representing the segment may be different between the disks. For this reason, the priorities of the disk and the segment in the allocation processing described with reference to FIGS. 3 to 5 can be changed as appropriate.
  • the existing disks are composed of the number corresponding to the stripe width, and each disk has the same capacity (segment size). (The size and number are the same). Then, an example is shown in which disk # 4 having the same capacity as each existing disk is added.
  • the number of additional disks is 1 ⁇ the number of additional disks It can be selected within ⁇ stripe width. That is, it is preferable that the number of disks to be added is at least equal to or less than the width of the stripe, and has the number of segments corresponding to the width of the stripe.
  • FIGS. 6A to 6F are diagrams showing a modification of the first embodiment, in which the number of disks is changed without changing the number of segments added by extension.
  • FIGS. 6 (A) to 6 (F) are drawings corresponding to FIG. 3 (C) and show a state in which the allocation process has been completed by adding disks.
  • the existing disks disks # 0 to # 3
  • FIG. 6A shows an example in which disk # 4 having three segments and disk # 5 having one segment are added.
  • FIG. 6B shows an example in which disks # 4 and # 5 each having two segments are added.
  • FIG. 6C shows an example in which disk # 4 having one segment and disk # 5 having three segments are added.
  • FIG. 6D shows an example in which disks # 4 and # 6 having one segment and disk # 5 having two segments are added.
  • FIG 6 (E) is, c showing an example of adding a disk # 6 with one segment and de Isku # 4 and # 5 having respectively two segments
  • FIG. 6 (F) shows an example in which four disks # 4, # 5, # 6 and # 7 each having one segment are added.
  • the allocation processing is performed according to the flowchart shown in FIG. 4, so that the storage area of each disk can be used in a single volume without waste. . That is, it has almost the same operation and effect as the example shown in FIG. In the first embodiment, the description has been made on the assumption that data storage and segment assignment to stripes are performed almost simultaneously, in other words, it is assumed that data is stored in segments assigned to stripes. . However, in the present invention, it is possible to consider the assignment of segments to stripes and the storage of data to stripes separately.
  • the present invention can be configured by extracting a portion related to segment allocation from the description of the first embodiment.
  • the CPU 12 forms a RAID area by allocating segments of each disk to stripes regardless of the presence or absence of data to be stored, and when a disk is added, the RAID area is formed by forming a new stripe.
  • step S 01 it is determined whether or not to change the segment allocation to the existing stripes in order to expand.
  • step S04 instead of specifying the segment storing the data to be moved, a segment to be allocated to a new stripe is specified. Then, step SO5 is an additional step that is performed if data is stored in the specified segment.
  • the ID device has the same system configuration as the configuration shown in FIG.
  • the RAID device is composed of a plurality of disks (disk arrays) forming a RAID area and its control device.
  • CPU 1 and 2 assigned segments of each disk to stripes
  • the point that the mapping table 14 indicating the situation is created on the memory 13 is the same as in the first embodiment. However, the content of the allocation process by the CPU 12 differs from that of the first embodiment.
  • FIG. 7 is a diagram illustrating a method of allocating segments when a disk is added by the RA ID device control device 10 according to the second embodiment of the present invention.
  • FIG. 8 is a flowchart illustrating the allocation method illustrated in FIG. It is.
  • FIG. 9 is a diagram showing an example (mapping table 14D) of the mapping table 14 before and after the segment assignment shown in FIG.
  • each of the disks # 0 to # 3 has m + 1 segments (m is an integer of 1 or more). Then, stripes S11 and S12 are formed over the disks # 0 to # 3.
  • the segments “DISK0: 0-3” and “DISK1: 0-3” are included in the RA ID area (position on the RA ID) “0-15”.
  • "D ISK2: 0-3” and “DISK3: 0-3” are assigned to form a stripe S11
  • the areas other than the areas constituting the drives of the disks # 0 to # 3 are unused (unallocated).
  • the CPU 12 forms a stripe such that segments that are not allocated to the existing disks # 0 to # 4 remain.
  • Step S001 the CPU 12 determines whether or not Condition 2 represented by the following conditional expression ⁇ Expression 2> is satisfied.
  • Condition 2 is satisfied.
  • the CPU 12 assumes that the condition 2 is satisfied (step S001; OK), and advances the process to step S002.
  • step S002 the CPU 12 selects the number of disks corresponding to the stripe width (the number of segments constituting the stripe) in the order of the free space (the order of the number of unallocated segments). .
  • disk # 4 to be added is selected first, and the remaining three disks are selected from existing disks # 0 to # 3.
  • the CPU 12 selects the disks according to a predetermined priority. For example, as the disk number is lower, the priority is higher, and the disk is selected. As a result, disk # 4 and disks # 0 to # 2 are selected.
  • the CPU 12 specifies an empty segment one by one from each of the selected disks, and assigns the specified segment to a new stripe S13 (Step S003).
  • CPU 12 has segment “DISK0: 8-11” of disk # 0, segment “DISK1: 8-11” of disk # 1, and disk # 2.
  • the segment “DISK2: 8-11” and the segment “DISK4: 0-3" on disk # 4 are assigned to stripe S13. In this way, segments are allocated so that they are used sequentially from the beginning of the storage area of each disk.
  • Condition 2 is satisfied.
  • the CPU 12 proceeds to step S002, assuming that the condition 2 is satisfied (step SOL; OK).
  • step S 02 the CPU 12 selects the number of disks corresponding to the stripe width in the order of the free space.
  • the disk # 4 to be added is selected first, then the disk # 3 is selected, and the remaining two disks are selected from the existing disks # 0 to # 2 according to a predetermined priority.
  • disks # 0 and # 1 are selected.
  • the CPU 12 specifies an empty segment one by one from each of the selected disks, and assigns the specified segment to a new stripe S14 (step S003).
  • CPU 12 has segment “DISK0: 12-15” of disk # 0, segment “DISK1: 12-15” of disk # 1, and disk # 3.
  • the segment “DISK3: 8-11” and the segment “DISK4: 4-7” of disk # 4 are assigned to stripe S14.
  • the CPU 12 updates the mapping table 14D according to the assignment result, and ends the processing.
  • new RA ID areas “32-47 (stripe S13)” and “48-63 (stripe S14)” are created by adding disk # 4 (FIG. 7 (B) and FIG. 7B). (See Fig. 9 (B)).
  • step S001 If the condition 2 is not satisfied in step S001 of FIG. 8 (step S001; NG), the allocation process at the time of adding a disk ends. However, when a disk is added, the processing of steps S001 to S004 may be repeatedly performed until an NG determination is made in step S001.
  • the control device 10 when a disk is added, a new stripe is formed so that segment reassignment (allocation change) to an already formed stripe does not occur. Therefore, there is no data movement associated with segment reassignment. Therefore, in the control device 10 according to the second embodiment, when the disk is added, the CPU 12 reallocates segments (changes allocation), moves data, Since it is not necessary to perform processing such as recalculation of parity, the load is further reduced as compared with the first embodiment.

Landscapes

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

Description

R A I D装置の制御装置
技術分野
本発明は、 R A I D装置(ディスクアレイ装置)の制御装置に関する。
背景技術 明
ハードディスクに対するデータの読み書きに関する冗長性, 低遅延性, 広帯域 田
幅を実現し、 ハードディスクのクラッシュ時における回復可能性を高める技術と して、 R A I D (Redundant Array of Independent Disks: 「ディスクァレイ」 と も呼ばれる)がある。
R A I Dは、 幾つかのディスク ドライブ(以下、 単に 「ディスク」 という)が組 み合わせられたアレイ(配列)を持つ。 各ディスクの物理的な記憶領域は、 固定サ ィズを持つ複数の小さなプロック( 「セグメント」 と呼ばれる :例えば、 1 2 8 M B, 1 G B等)に分割され、 複数のディスクのセグメントがーつづつ集められて 「ストライプ(ス トライプ ·セッ ト)」 と呼ばれる仮想的な領域を形成する。 ス ト ライプは、 セグメントを割り当て単位として、 予め規定されたストライプの幅を 構成するに必要な数のセグメントを各ディスクからストライプに割り当てること によって形成される。 このように、 ストライプは、 ディスクアレイ内の複数のデ イスクから夫々一つずつ割り当てられたセグメントからなり、 複数のディスクに 分散する仮想的な領域である。 ストライプは、 幅すなわち自身を構成するセグメ ントの数を持つ。 R A I D上に記憶されるデータは、 複数のディスクに分散して 記憶される。 ディスクアレイは、 ユーザ、 すなわちホストコンピュータ側から見 ると、 単一の論理記憶装置又はドライブ(ボリューム)のように見える。 これによ つて、 小さな複数のディスクドライブからなるディスクアレイを大容量の単一の ディスク ドライブとして使用することができる。
R A I Dは、 その目的に応じて様々なタイプを持つ。 代表的なものとして、 R A I Dレベル 0, 1 , 3, 5がある。 R A I Dレベル 0は 「ストライビング」 と 呼ばれており、 ディスクアレイ上にストライプが形成され、 データがストライプ を構成する複数のセグメントに分散されて記憶される。 これによつて、 データの 読み書き速度の向上が図られる。 1 10レべル1は 「ミラーリング」 と呼ばれ ており、 ストライプ中の少なく とも二つのセグメントに同じデータを夫々記憶す る。 これによつて、 データの冗長性が担保される。 RA I Dレベル 3は、 「ビッ ト又はバイ ト単位のストライビング +固定パリティ」 と呼ばれ、 ビット又はバイ トを単位とするセグメントによりストライビングされたデータのパリティを 1台 のディスクに記録する。 RAI Dレベル 5は、 「ブロック単位のストライビング +分散パリティ」 と呼ばれる。 RA I Dレベル 5では、 ストライプを構成する複 数のセグメントにデータが夫々記憶される一方で、 一つのセグメントに他の複数 のセグメントに記憶されたデータのパリティ情報が記憶される。 これによつて、 一つのディスクがクラッシュしてもパリティ情報を用いて元のデータを復元する ことが可能になっている。
従来、 RA I Dを使用しているコンピュータにハードディスクを増設する場合 には、 以下の方法が実施されている。
(従来例 1) 図 10 (A)に示すように、 複数のディスクを新規に増設し、 これら の複数のディスクで既存の RA I Dとは別個の RA I Dを構成する。 従って、 新 規な RA I Dは、 既存の RA I Dと異なるボリュームとして使用される。 この従 来例 1には以下の問題があった。
(a)ストライプの幅(ストライプを構成するセグメントの数)と同じ数のディスク を追加しなければならないので費用がかかる。
(b)コンピュータは、 二つのポリュ一ムを管理しなければならないので負担とな る。
(c)ユーザは、 二つのボリュームを使い分けなくてはならず、 また、 ソフトゥヱ ァが二つのポリユームに跨ってィンストーノレできないためにそのソフトウエアを インストールできないといった問題が起こる。
従来例 1に対し、 ス トライプの幅より少ない数のディスクを増設し、 且つ増設 されたディスクを既存のディスクとともに一つのポリユームとして使用するため の方法として、 次の従来例 2が提案されている。 (従来例 2 ) 図 1 0 (B )に示すように、 既存の R A I Dに形成されたストライプ の数と同じ数のセグメントを形成可能な一つのディスクを追加する。 そして、 既 存の R A I Dのストライプの幅を変更する(図 1 0 (B )に示す例では、 幅を 4つか ら 5つに変更)。
しかしながち、 従来例 2では、 ストライプの幅を変更するため、 既に記憶され ているデータの殆どを移動させなくてはならなかった。 従って、 移動のための処 理が複雑となっていた。 また、 ストライプに記憶されたデータが R A I Dレベル 5のようなパリティ情報を含む場合には、 ストライプの構成の変更に伴って全て のパリティを再計算する処理が必要となっていた。 さらに、 パリティの構成が認 識されない限りデータの移動やパリティの再計算はできないので、 ストライプの 幅の変更に当たって使用されるプログラムを R A I Dレベル毎に用意しなければ ならなかった。 発明の開示
本発明の目的は、 増設したディスクを単一のポリュ一ムとして使用することが でき、 且つその増設に係る負荷や費用を抑えることができる R A I D装置の制御 装置を提供することである。
本発明の第 1の発明は、 複数のディスクの記憶領域が固定サイズのセ.グメント に夫々分割され、 所定数のセグメントからなるストライプが形成され、 形成され た 1以上のストライプからなる R A I D領域にデータを記憶する R A I D装置の 制御装置(1 0 )であって、
前記複数のディスクのうち前記所定数のディスクから任意の一つのセグメント を形成対象のストライプに夫々割り当てることによりストライプを形成する割当 手段(1 2 )と、
ス トライプに対するセグメントの割り当て状況を示すテ一プル(1 4 C )とを含 み、
前記割当手段(1 2 )は、
少なく とも前記所定数のセグメントを持つ 1以上のディスクが増設される場 合に、 既存の複数のディスクを用いて構成されたストライプに対するセグメント の割り当て状況を変更することなく新たなストライプを形成可能か否かを判定し、 新たなス トライプが形成できないと判定した場合に、 既存のス トライプに対 するセグメントの割り当て状況をストライプを形成するセグメントの数を変更す ることなく変更し、 増設される 1以上のディスクを含む複数のディスクのうち前 記所定数の任意のディスクから未割り当て状態のセグメントを 1つずつ取得し、 取得した未割り当て状態のセグメントが割り当てられた新たなストライプを形成 し、 前記割り当ての変更及び新たなストライプの形成に対するセグメントの割り 当て状況を前記テーブル(1 4 C )に反映する。
第 1の発明における割当手段(1 2 )は、
少なく とも前記所定数のセグメントを持つ 1以上のディスクが増設される場合 に、 未割り当て状態のセグメントの数が最も大きいディスクの未割り当て状態の セグメントの数を Aとし、 未割り当て状態のセグメントの数が最も大きいディス クを除くディスクの未割り当て状態のセグメントの数の総和を Bとし、 前記所定 数を s とした場合に、 下記条件が満たされるか否かを判定する判定手段(1 2 )と、
A ( s - 1 )≤B
前記条件が満たされない場合に、 未割り当て状態のセグメントの数が最も大き いディスク(X)と未割り当て状態のセグメントの数が最も小さいディスク(Y)と を特定し、 ディスク(Y)を用いて形成されているストライプのうちディスク(X) を用いていないセグメントを特定する特定手段(1 2 )と、
前記ディスク(X)の任意の未割り当て状態のセグメントを、 代替セグメントと して、 前記特定手段によって特定された特定セグメントの代わりに、 前記特定セ グメントを用いて構成されているストライプに割り当て、 この割り当ての変更を 前記テーブルに反映する反映手段(1 2 )とを含むように構成するのが好ましい。 また、 第 1の発明における割当手段(1 2 )は、 前記特定セグメントにデータが 格納されている場合に、 このデータを前記代替セグメントに移動するデータ移動 手段(1 2 )をさらに含むように構成するのが好ましい。
本発明の第 2の発明は、 複数のディスクの記憶領域が固定サイズのセグメント に夫々分割され、 所定数のセグメントからなるストライプが形成され、 形成され た 1以上のストライプからなる R A I D領域にデータを記憶する R A I D装置の 制御装置(1 0)であって、
各ディスクに未割り当て状態のセグメントが残る状態で、 前記複数のディスク のうちストライプを形成する数のディスクから任意の一つのセグメントを形成対 象のストライプに夫々割り当てることによりストライプを形成する割当手段(1 2)と、
ス トライプに対するセグメントの割り当て状況を示すテ一プル(14D)とを含 み、
前記割当手段(1 2)は、 ディスクが増設される場合に、 増設されるディスクを 含む複数のディスクの中から未割り当て状態のセグメントの数が大きい順で前記 所定数と同じ数のディスクを選択し、 選択した各ディスクから未割り当て状態の セグメントを一つずつ特定し、 特定した各セグメントを新たなス トライプに割り 当て、 この割り当て状態を前記テーブル(14 D)に反映する。
第 2の発明における割当手段(12)は、 ディスクが増設される場合に、 増設さ れるディスクのセグメントの数を Cとし、 増設されるディスクを含む複数のディ スクの未割り当て状態のセグメントの数を Dとし、 前記所定数を sとした場合に、 下記条件が満たされるか否かを判定し、
D>C/(s― 1 )
上記条件が満たされる間、 前記セグメントの割当処理を繰り返し行うようにす るのが好ましい。 図面の簡単な説明
図 1は、 RA I D装置の実施形態を示す図である。
図 2 (A)、 (B)及び(C)は、 マッピングテーブルの説明図である。
図 3は、 RA I D装置の第 1実施形態におけるディスク増設時の様子を示す説 明図である。
図 4は'、 第 1実施形態の C PUによるディスク増設時における割り当て処理を 示すフローチャートである。
図 5 ( A )及び( B )は、 第 1実施形態のディスクの増設の前後におけるマツピン グテーブルを示す図である。 図 6 (A)〜(F)は、 第 1実施形態の変形例の説明図である。
図 7は、 RA I D装置の第 2実施形態におけるディスク増設時の様子を示す説 明図である。
図 8は、 第 2実施形態の C PUによるディスク增設時における割り当て処理を 示すフローチヤ一トである。
図 9 (A)及び(B)は、 第 2実施形態のディスクの増設の前後におけるマツピン グテーブルを示す図である。
図 1 0 (A)及ぴ(B)は、 従来技術の説明図である。 発明を実施するための最良の形態
以下、 本発明を実施するための最良の形態を説明する。 以下の実施形態は例示であり、 本発明は実施形態の構成に限定されるものではな 、。
〔第 1実施形態〕
図 1は、 本発明による RA I D装置の実施形態を示す図である。 図 1において、 RA I D装置は、 ディスクアレイを形成する複数(n+ 1個: η = 0, 1, 2, · · ·,η— 1, η)のディスクドライブ (ディスク)と、 その制御装置 10とを備える。 制御装置 10は、 ディスクインターフェイス(I/O) 11と、 CPU12と、 メモリ 13とを備えている。 ディスクアレイは、 R A I Dのタイプに応じて、 少なく ともストライプを形成 するセグメントの数のディスクからなる。 ディスクインターフェイス 11は、 CPU 12からの指示に従って、 ディスクアレイに対するデータの読み書きを行う。 CPU1 2は、 ディスクインタ一フェイス 11を介したデータの読み書きを制御するとともに、 例えばメモリ 13に記憶されたプログラムを実行することによって RAI D領域を形成 する。
C P U 12は、 ディスクアレイを形成する各ディスクの物理的な記憶領域を固定サイ ズを持つ小さな領域 (セグメント)に分割する。 セグメントは、 所定数のセクタからなる。 続いて、 CPU12は、 ストライプを形成するセグメントの数に等しい複数のディスク からセグメントを一つずつ集めて所定の幅を持つ 「ストライプ」 を形成する。 例えば、 図 1に示すディスク # 0〜# nから一つずつセグメントを特定し、 特定した n+ 1個の セグメントからなる(n + 1の幅を持つ)ストライプを形成する。 ストライプは、 CPU 12が各ディスクのセグメントを予め規定された幅を持つストライプに割り当てること によって形成される。 このようにして形成されるストライプの集まりが RAI D領域と なる。 すなわち、 RAID領域は、 複数のストライプからなる仮想的な記憶空間である。 そして、 CPU12は、 物理的な記憶空間(セグメント)を仮想的な記憶空間(R A I D領 域(ストライプ))に割り当てる処理によって得られる関係をメモリ 13上に作成されるマ ッビングテーブル 14に格納する。
図 2は、 マッピングテープノレ 14の例を示す図である。 図 2(A)は、 3台のディスク で構成される R A I Dレベル 1 (ミラ一リング)のマツピングテーブル 14の例(マッピン グテーブル 14 A)を示す図であり、 図 2(B)は、 図 2 (A)に示したマッピングテーブル 14Aの説明図である。 図 2(C)は、 5台のディスクで構成される RA I Dレベル 0の マッピングテーブル 14の例(マッピングテーブル 14 B)を示す図である。
図 2 (A)に示すマツビングテーブル 14 Aにおいて、 左側の列は、 RA I D領域上の 位置を示し、 "0— 4" , "4-8" , "8— 12" は、 RA I D領域を構成するストラ ィプ(RAID 1では 「ミラー」 と呼ばれる)の R A I D領域上の範囲(アドレス)を示す。 真ん中の列及び右側の列に示された "0"及び "1" は、 各ストライプを構成するセグ メントの番号を示す。 番号 "0"及ぴ "1" に対応する、 例えば "D I SK0 : 0-4 " 及ぴ "D I SK1 : 0-4" は、 ストライプを構成するセグメントのディスク上の領 域を示す。 そして、 RAI D領域上の各プロック範囲 "0— 4" , "4— 8"及び "8— 12" に対応する行に記載されたセグメントの組がストライプを夫々構成する。
図 2(A)に示す例では、 図 2(B)に示すように、 3台のディスク(DISK 0, 1, 2)の記 憶領域が夫々二つのセグメントに分割され、 ディスク 0のセグメント " A 0— 4 " とデ イスク 1のセグメント "B0— 4" とが RAID領域 "0— 4" のストライプ(ストライ プ " 0— 4" )に割り当てられている。 また、 ディスク 0のセグメント "A4— 8" とデ イスク 2のセグメント "B 4— 8" とが RAI D領域 "4— 8" のストライプ(ストライ プ " 4— 8" )に割り当てられている。 また、 ディスク 1のセグメント "A8— 12" と ディスク 2のセグメント "B 8 12" が RAID領域 "8— 12" のストライプ (スト ライプ " 8— 12" )に割り当てられている。 そして、 各ストライプを構成する二つのセ グメント(例えば、 セグメント "AO— 4" と "B0— 4" )には、 同じデータが夫々格 納される。 これによつてデータの冗長性が図られる。 図 2 (C)に示すマッビングテープノレ 14Bでは、 マッビングテーブル 14 Aと同様の 手法で、 5つのディスク(DISK 0, 1,2, 3, 4)における各セグメントが R A I D領域上に形 成された 3つのス 1、ライプ " 0— 16", "16-32"及び "32-48" に夫々割り 当てられている。
この場合、 各ストライプを構成するセグメントの番号に対応する列は、 ストライプの 幅だけ用意され、 RA I D領域上でのプロック範囲がストライプの幅 (構成セグメント数 : この例では 4)倍で大きくなる。 図 2(C)に示す例では、 ストライプの幅が 4であるの で、 4つのセグメントの列( "0", "1" , "2", "3" )が用意され、 RAID領域上 のプロック範囲は、 "0— 16" , "16-32"及び "32— 48" となっている。
RAIDレベル 0では、 書込対象のデータは、 ストライプを構成する各セグメントに 分散して書き込まれる。 これに代えて、 RA I Dレベル 4又は 5がマッピングテ一プル 14 Bに適用される場合には、 RA I Dレベルに従ったルールで、 各ストライプ中のあ るセグメントを除くセグメントにデータが分散して格納され、 あるセグメントに分散さ れたデータのパリティ情報が格納される。 なお、 パリティの設定方法として、 従来と同 様の手法、 即ち、 各セグメントの同じ位置に記録されているビットの排他的論理和(XO R)がどの位置に対しても 0又は 1になるようにパリティの値を設定する方法が適用され る。
以上の様に、 第 1実施形態による RA I D装置の制御装置 10 (CPU 1 2)は、 RA I Dの構成時に各ディスクを小さな範囲(セグメント : 1 28メガバイ ト, 1 ギガバイ ト等)に分割する。 続いて、 制御装置 10は、 セグメントをストライプへ の割り当て単位として、 RA I D領域を構成する各ストライプに割り当てる。 そ して、 制御装置 10は、 割り当て状況をマッピングしたマッピングテーブル 14 を持つ。
第 1実施形態の制御装置 1 0は、 上記したマッピングテーブル 14が作成され ている状況において、 新たなディスクが増設された場合に、 RAI D領域を構成 する各ストライプの幅(セグメントの数)を変更することなく RA I D領域を拡張 する。 ディスクの増設時において、 もし新たなディスク以外のディスク(既存のデ イスク)の全てのセグメントの割り当てが済んでおり、 且つ増設されるディスクの 台数(本数)がストライプの幅よりも少ない場合には、 増設されるディスクのセグ メントをストライプに割り当てることができない。 なぜなら、 ストライプは異な るディスクのセグメントが集まって形成されるからである。 このため、 上記状況 下では、 C P U 1 2は、 既存のディスクに保存されているデータを増設されるデ イスクに移動させて、 既存のディスクにストライプを形成するための空き領域(未 割り当て状態のセグメント)を作成する。 言い換えれば、 既存のストライプに対し 既存のセグメントの代わりに、 追加されるディスクのセグメントを害 ϋり当てる。 データの移動(セグメントの割り当て変更)が必要な条件は以下の条件式 〈式 1〉 で示すことができる。
A ( s - 1 )≤Β · · · 〈式 1〉
但し、
Α =残り容量が最も大きいディスクの残り容量
Β =残り容量が最も大きいディスク以外の残り容量の和
s =ストライプの幅
上記 〈式 1〉 において、 「残り容量」 は空き状態のセグメント数を示し、 「ス トライプの幅」 はストライプを構成するセグメントの数を示す。
図 3は、 第 1実施形態の制御装置 1 0によるディスクの増設時におけるセグメ ントの割り当て方法の説明図であり、 図 4は、 図 3に示した割り当て方法を説明 するフローチャートであり、 図 5は、 図 3及び図 4に示した割り当て方法の実施 によるマツビングテーブルの変化を示す図である。
図 3 (Α)に示す例では、 既存のディスクに相当する複数のディスクが用意され ている。 複数のディスクは、 この例では 4つのディスク(DISK #0,#1, #2及び #3)か らなる。 各ディスク # 0〜# 3は、 同じ記憶容量を持ち、 4つのセグメン小に夫 々分割されている。 そして、 各ディスク # 0〜# 3に跨る 4つのストライプ S 0 〜S 3からなる R A I D領域が形成されている。
図 5 (A)は、 図 3 (A)に示した R A I D領域(各ストライプに対するセグメント の割り当て状況)を示すマッビングテーブル 1 4 Cを示す。 このマッピングテープ ル 1 4 Cは、 C P U 1 2によってメモリ 1 3上に作成される。 この例では、 各セ グメントは 4つのセクタから構成されており、 ディスクの特定情報とその位置を 示す情報(例えば DISK0: 0-3)で表されている。 具体的に説明すると、 ストライプ S 0は 4つのセグメント "DISK0:0- 3", "DI SKl:0-3", "DISK2.-0-3" 及び "DISK3:0- 3" が割り当てられてなる。 ストライプ S 1は 4つのセグメント "DISK0:4-7" , "DISK1:4- 7" , "DISK2:4-7" 及ぴ "DIS K3:4-7" が割り当てられてなる。 ストライプ S 2は 4つのセグメント "DISK0:8 - 11" , "DISK1:8- 11" , "DISK2:8- 11" 及び "DISK3:8 - 11" が割り当てられてなる。 ストライプ S 3は 4つのセグメント "DISK0:12- 15" , "DISK1: 12-15" , "DISK2: 12-15" 及び "DISK3: 12-15" が割り当てられてなる。 このように、 各ストライプ S 0〜S 3の幅は 4となっている。
そして、 各ストライプ S 0〜S 3には、 データが R A I Dレベルに従って格^ されている。 この例では、 ストライプ S 0にデータ A O〜A 3が格納され、 スト ライプ S 1にデータ B 0〜: B 3が格納され、 ストライプ S 2にデータ C O〜C 3 が格納され、 ストライプ S 3にデータ D 0〜D 3が格納されている。 この例は、 例えば RA I Dレベル 5を示し、 各ストライプ S 0〜S 3に格納されたデータの 一つは、 パリティ情報である。
図 3に戻って、 図 3 (B)に示すように、 新たな一つのディスク # 4 (DISK #4)が 増設されたとする。 追加されるディスク # 4は、 各ディスク # 0〜#'3と同じ記 憶容量を持ち、.' 4つのセグメントを持つ。 ここで、 上記したように、 既存のディ スクの各ストライプ S O〜S 3が既にデータで満たされている場合(空き領域がな い場合)には、 ディスク # 4は他のディスク # 0〜# 3との間でストライプを形成 することができない。 このため、 C PU 1 2は、 本発明による割り当て手段, 判 定手段, 及び特定手段として機能し、 図 4に示すフローチャートに従って、 各ス トライプに対するセグメントの割り当て変更処理を行う。
図 4に示すように、 C PU 1 2は、 ディスク # 4が増設されると、 上記した式 1 (A( s — 1 )≤ B)に従ってデータの移動(セグメントの割り当て変更(再割り当 て))が必要か否かを判定する(ステップ S 0 1)。 ステップ S 0 1の処理を図 3 (B)に従って説明すると、 残り容量が最も大きなディスクはディスク # 4であり、 その残り容量(空き状態(未割り当て状態)のセグメントの数)は 4である。 即ち、 値 Aは A== 4である。 一方、 ディスク # 4以外のディスク # 0〜# 3には空き状 態のセグメントはないので、 値 Bは B = 0である。 そして、 ストライプの幅 sは 4である。 以上を式 1に当てはめると、
4 (4一 1 )≤ 0 · · · 〈式 1〉
となり、 条件式 1が満たされないので、 データの移動が必要と判定され(S 0 1 ; YE S)、 処理がステップ S 02に進む。 以下のステップ S 02〜S 05の処理で は、 例えば、 以下の優先順位に従って該当する対象が検索される。 即ち、 番号が 若い程優先順位が高くなるように設定されている。
(優先 < ~~非優先)
'ディスク # 0→# 1→# 2→# 3→# 4
• ス トライプ S 0→S 1→S 2→S 3
ステップ S O 2では、 CPU 1 2は、 空き容量(空き状態のセグメントの数)が 最も多いディスク(X)を探す。 この例では、 ディスク(X)としてディスク # 4が 見つかる。
次に、 CPU 12は、 空き容量が最も少ないディスク(Y)を探す(ステップ S 0 3)。 この例では、 ディスク(Y)としてディスク # 0, # 1, # 2及び # 3が見つか るが、 C PU 1 2は、 優先順位に従って、 ディスク # 0をディスク(Y)として特 定する。
次に、 CPU 12は、 ディスク(Y)を使って構成されているストライプの中で ディスク(X)を使っていないセグメントを探す(ステップ S 04)。 ここに、 ディ スク(Y)であるディスク # 0は、 ストライプ S 0〜S 4を構成するために使用さ れている。 C PU 1 2は、 優先順位に従って、 該当するセグメントとして、 スト ライプ S 0に割り当てられているセグメント AO (DISK0:0 - 3)を特定する(見つけ る)。 このセグメント "DISK0:0- 3" が特定セグメントに相当する。
ここで、 同じストライプに含まれるデータが同一のディスク上にあると RA I Dにおけるデータの冗長性が失われる(ディスクが破損した場合にデータを復元す ることが不可能になる)。 このため、 ステップ S O 4の処理は、 データの移動によ つて或るストライプに或るディスクの複数のセグメントが割り当てられる状態に なることがないように、 上記した処理によって、 移動対象のデータを格納してい るセグメントを特定する。
また、 ステップ S O 4において、 ディスク(X)におけるディスクの使用量(割当 が済んでいる量)がディスク(Y)の使用量(割り当てが済んでいる量)よりも小さけ れば、 移動対象のデータ(割当変更すべきセグメント)を必ず見つけることができ る。 このため、 同一容量の複数のディスクからなる RA I Dに同一容量のデイス クを増設すれば、 必ず移動対象のデータを見つけることができる。
次に、 CPU 1 2は、 ステップ S 04にて見つけたセグメント中のデータをデ イスク(X)の任意の空きセグメント(代替セグメント)に移動する(ステップ S 0
5)。 この例では、 代替セグメントは、 各ディスクの記憶領域の先頭から順に使用 されるように選択される。 即ち、 CPU 12は、 セグメント "DISK0:0-3" に格納 されたデータ AOを、 ディスク(X)であるディスク # 4の 1番目のセグメント " DISK4:0-3" に移動する(図 3 (B)参照)。 このセグメント "DISK4:0-3" が代替セ グメントに相当する。 これによつて、 セグメント "DISK0:0- 3" が空き状態(未割 り当て状態)となる。
そして、 CPU 1 2は、 マッピングテープル 14 Cを更新する(ステップ S 0
6)。 即ち、 CPU 1 2は、 ステップ S 05におけるデータの移動で発生したディ スク(Y)の空きセグメント(この例では、 セグメント "DISK0:0- 3" )を新たな RA
I D領域(ストライプ S 4)に割り当て、 この状況をマッピングテーブル 14 に 書き込む(図 5 (B)参照)。
このように、 CPU 1 2は、 ディスク(X)の任意の未割り当て状態のセグメン ト "DISK4:0 - 3" を、 代替セグメントとして、 特定された特定セグメント "DISK0 :0-3" の代わりに、 この特定セグメント "DISK0:0-3" を用いて構成されているス トライプ S 0に割り当て、 この割り当ての変更をテーブル(マッピングテーブル 1 4 C)に反映する。
その後、 処理がステップ S 01に戻り、 CPU1 2は、 再び条件式 〈式 1〉 が 満たされるか否かの判定を行う。 このとき、 値 Aは A= 3 (ディスク # 4)となり、 値 Bは B= 1 (ディスク # 0)となるので、 条件式 1は次の状態となる。
3 (4 - 1)≤ 1 ♦ · ♦ 〈式 1〉
このように、 条件式 〈式 1〉 が満たされないので、 CPU 12は、 再ぴ " YE S" の判定(データの移動が必要との判定)を行い、 処理をステップ S 02に進め る。 ステップ S 02では、 C PU 1 2は、 ディスク(X)としてディスク # 4 (残り 容量; 3)を見つける。 次に、 CPU 12は、 優先順位に従って、 ディスク(Y)と してディスク # 1 (残り容量; 0)を見つける(ステップ S 03)。
次に、 C PU 12はディスク # 1を用いて構成されているストライプの中から ディスク # 4を使っていないセグメントを探す(ステップ S 04)。 このとき、 デ ータ A 1を格納したセグメント "DISK1:0 - 3" が選択されると、 ディスク #4の 2 つのセグメントがストライプ S 0に割り当てられることになる。 このため、 CP U 1 2はセグメント "DISK1:0- 3" の選択を避け、 優先順位に従ってストライプ S 1を構成するセグメント "DISK1:4 - 7" を特定セグメントとして選択する。
次に、 CPU 12は、 セグメント "DISK1:4- 7" に格納されたデータ B 1をディ スク(Y)に相当するディスク # 4の空きセグメント "DISK4:4- 7" (代替セグメン ト)に移動する(ステップ S 05 ; 図 3 (B)参照)。 これによつて、 セグメント "D ISKl:4-7" が空き状態となる。
そして、 C PU 1 2は、 マツピングテ一プル 14 Cを更新する(ステップ S 0 6)、 即ち、 C PU 1 2は、 ディスク # 4のセグメント "DISK4:4- 7" をストライ プ S 1に割り当て、 ディスク # 1のセグメント "DISK1:4- 7" を新たなストライプ S 4に割り当て、 これらをマツピングテ一プル 14 Cに反映する(図 5 (B)参照)。 その後、 処理がステップ S O 1に戻る。
ステップ S O 1では、 CPU 1 2が再び条件式 〈式 1〉 が満たされるか否かの 判定を行う。 このとき、 値 Aは A= 2 (ディスク # 4)となり、 値 Bは B = 2 (ディ スク # 0及ぴ# 1)となるので、 条件式 1は次の状態となる。
2 (4- 1)≤ 2 · · · 〈式 1〉 _
このように、 条件式 〈式 1〉 が満たされないので、 CPU 1 2は、 再び " YE S" の判定(データの移動が必要との判定)を行い、 処理をステップ S 02に進め る。 ステップ S 02では、 C PU 1 2は、 ディスク (X)としてディスク # 4 (残り 容量; 2)を見つける。 次に、 CPU 12は、 優先順位に従って、 ディスク(Y)と してディスク # 2 (残り容量; 0)を見つける(ステップ S 03)。
次に、 CPU 1 2はディスク # 2を用いて構成されているストライプの中から ディスク # 4を使っていないセグメントを探す(ステップ S 04)。 このとき、 C PU 12は、 同じストライプにディスク # 4の 2つのセグメントが割り当てられ ないように、 優先順位に従ってストライプ S 2を構成するセグメント "DISK2:8 - 11" (特定セグメント)を選択する。
次に、 CPU 1 2は、 セグメント "DISK2:8-11" に格納されたデータ C 2をデ イスク(Y)に相当するディスク # 4の空きセグメント "DISK4:8- 11" (代替セグメ ント)に移動する(ステップ S 05)。
そして、 CPU 1 2は、 マッピングテーブル 14 Cを更新する(ステップ S 0 6)、 即ち、 C PU 12は、 ディスク # 4のセグメント "DISK4:8-11,, をストライ プ S 2に割り当て、 ディスク # 2のセグメント "DISK2:8- 11" を新たなストライ プ S 4に割り当て、 これらをマッピングテーブル 14 Cに反映する。 その後、 処 理がステップ S 01に戻る。
ステップ S O 1では、 CPU 12が再び条件式 1が満たされるか否かの判定を 行う。 このとき、 値 Aは A= 1 (ディスク # 4, # 0, # 1, # 2の何れか)となり、 値 Bは B = 3 (ディスク # 4, # 0, # 1, # 2の何れか 3つの合計)となるので、 条 件式 〈式 1〉 は次の状態となる。
1 (4- 1)≤ 3 · · · 〈式 1〉
このように、 条件式 〈式 1〉 が満たされるので、 C PU 1 2はデータの移動が 必要ないものと判定し(ステップ S 01 ; NO), 処理をステップ S 07に進める。 ステップ S 07では、 C PU 12は、 追加されたディスクの空きセグメントを 新たなストライプに割り当てる。 即ち、 CPU 1 2は、 ディスク # 4の空きセグ メント "DISK4: 12-15" をストライプ S 4に割り当て、 これをマッピングテ一ブル 14 Cに反映する(図 5 (B)参照)。 その後、 割り当て処理が終了する。
図 5 (B)は、 ディスク # 4の増設後のマッピングテーブル 14 Cの説明図であ り、 ディスク # 4の増設によって各ストライプ S O〜S 3に対するセグメントの 割り当てが変更されるとともに新たなストライプ S 4が形成され、 RA I D領域 (ボリュ一ム)の記憶領域が拡張された様子を示す。
図 5 (B)において、 太字で示されたセグメント(ディスク上の領域)は、 データ を移動した部分に相当し、 斜体文字で示されたセグメントは追加されたディスク # 4のセグメントを示す。 そして、 新たに形成されたストライプ S 4を構成する セグメント "DISK0:0- 3" , "DISKl:4-7" , "DISK2:8-11" 及ぴ "DISK4: 12- 15" は、 データ(データ及びパリティ情報) E 0, E 1 , E 2及び E 3を格納するために使用 される(図 3 ( C )参照)。
第 1実施形態の制御装置 1 0によれば、 ディスクの増設にあたって、 ストライ プの幅を変更することなく新たなストライプを形成することによって、 R A I D 領域(ボリューム)を拡張する。 即ち、 データを移動し(ストライプに対するセグメ ントの割り当てを変更し)、 ストライプを構成するディスク領域(セグメント)のマ ッビングテーブルを変更する。
この過程では、 従来例 2として説明した、 ストライプの幅をディスクの追加後 の台数に応じて変更する方法に比較して、 セグメントの割り当ての変更量を大幅 に抑えることができる。 従って、 ディスクの増設時の処理を速やかに終了し、 通 常動作に戻ることができる。
また、 セグメントの割り当て変更に際して、 変更対象のセグメント(特定セグメ ント)にデータが記憶されている場合には、 そのデータは代替セグメントに移動さ れる。 データの移動は、 特定セグメントに記憶されたデータに対してのみ行われ るので、 ディスクの増設時におけるデータの移動量は、 従来例 2と比較して数分 の一に抑えることができる。 この点でも、 ディスクの増設時における処理の短縮 化を図ることができる。
また、 既存のディスクに形成されたストライプのデータの記憶位置は、 必要に 応じて(新たなストライプを形成するために)変更されるが、 ストライプに格納さ れたデータの内容は変更されない(図 3 (C )及ぴ図 5 (C )の各ストライプ S O〜S 3参照)。 従って、 C P U 1 2は、 各ストライプ S 0〜S 3についてパリティを再 計算する必要がない。 このように、 C P U 1 2はデータの移動に伴ってパリティ を再計算する必要がないので、 C P U 1 2に対する処理の負荷を軽減することが できる。
また、 第 1実施形態による処理(図 4に示したアルゴリズム)は、 R A I Dレべ ル 0, 1, 3, 4についても適用することができる。 即ち、 図 4に示した割り当て処 理は、 R A I Dレベルに拘わらず実施することができる。 このため、 R A I Dレ ベルに拘わらず同じプログラムを用いてディスクの増設に伴うセグメントの割り 当て処理を実施することができる。 第 1実施形態の構成は、 次のように変形することができる。 第 1実施形態では、 ストライプを構成するセグメントがマツビングテーブル 1 4上で明確になってい れば良いので、 ストライプを構成するセグメントは、 ディスク間で不連続となつ ていても良い。 即ち、 図 3 (C )に示したストライプ S 4のように、 セグメントを 表すディスク領域がディスク間で異なっていても良い。 このため、 図 3〜5を用 いて説明した割り当て処理におけるディスク及ぴセグメントの優先順位は適宜変 更することができる。
また、 第 1実施形態では、 R A I D領域を形成する複数のディスクの記憶領域 を無駄なく使用するため、 既存のディスクはストライプの幅に応じた台数からな り、 各ディスクは夫々同一容量(セグメントの大きさ及ぴ数が同じ)を持つように なっている。 そして、 既存の各ディスクと同一容量を持つディスク # 4が増設さ れる例を示した。 これに対し、 その記憶領域を無駄なく使用するという観点から は、 増設されるディスクから得られるセグメントの数がストライプの幅と同じに なっていれば、 追加ディスクの台数は、 1≤追加ディスク台数≤ストライプの幅 の範囲内で選択することができる。 即ち、 増設されるディスクは、 少なく ともス トライプの幅以下の.台数からなり、 ストライプの幅に相当するセグメントの数を 持つようにするのが好ましい。
図 6 (A)〜(F )は、 第 1実施形態の変形例を示す図であり、 増設により追加さ れるセグメントの数を変更することなくディスクの台数を変更したものである。 図 6 (A)〜(F )は、 図 3 (C )に相当する図面であり、 ディスクの増設により割り 当て処理が終了した状態を示す。 なお、 図 6 (A;)〜(F )において、 既存のデイス ク(ディスク # 0〜# 3 )は図 3 (A)と同様のストライプ構成を持つものとする。 図 6 (A)は 3つのセグメントを持つディスク # 4と 1つのセグメントを持つデ イスク # 5を追加した例を示す。 図 6 (B )は、 2つのセグメントを夫々持つディ スク # 4及ぴ # 5を追加した例を示す。 図 6 ( C )は、 1つのセグメントを持つデ イスク # 4と 3つのセグメントを持つディスク # 5とを追加した例を示す。 図 6 (D )は 1つのセグメントを持つディスク # 4及び # 6と 2つのセグメントを持つ ディスク # 5を追加した例を示す。 図 6 (E )は、 1つのセグメントを夫々持つデ イスク # 4及び # 5と 2つのセグメントを持つディスク # 6を追加した例を示す c 図 6 (F )は 1つのセグメントを夫々持つ 4つのディスク # 4, # 5, # 6及び # 7 を追加した例を示す。
図 6 (A)〜(F )に示す例では、 図 4に示したフローチヤ一トに従って割り当て 処理が行われることにより、 各ディスクの記憶領域を単一のボリュームで無駄な く使用することができる。 即ち、 図 3に示した例とほぼ同じ作用効果を持つ。 また、 第 1実施形態では、 データの格納とストライプに対するセグメントの割 り当てがほぼ同時に行われる例、 言い換えれば、 ストライプに割り当てられたセ グメントにはデータが格納されていることを前提として説明した。 但し、 本発明 は、 ストライプに対するセグメントの割り当てと、 ス トライプに対するデータの 格納とを切り分けて考えることが可能である。
即ち、 第 1実施形態の説明から、 セグメントの割り当てに係る部分を抽出して 本発明を構成することができる。 この場合、 C P U 1 2は、 記憶対象のデータの 有無に拘わらず、 各ディスクのセグメントをストライプに割り当てて R A I D領 域を形成し、 ディスクが増設された場合に、 新たなストライプの形成によって R A I D領域を拡張するために、 既存のストライプに対するセグメントの割り当て を変更するか否かをステップ S 0 1にて判断する。
このとき、 条件式 〈式 1〉 における値 A及び Bの 「残り容量」 は未割り当ての セグメントを指し、 割り当て済みのセグメントにデータが格納されているか否か は関係がない。 同様に、 ステップ S 0 2及び S 0 3における 「空き容量」 は、 未 割り当てのセグメントの数を指す。 また、 ステップ S O 4は、 移動対象のデータ を格納したセグメントを特定する代わりに、 新たなストライプに割り当てるべき セグメントを特定することになる。 そして、 ステップ S O 5は、 特定されたセグ メントにデータが格納されていれば実施される付加的なステップとなる。
〔第 2実施形態〕
次に、 本発明の第 2実施形態を説明する。 第 2実施形態は第 1実施形態と共通 点を有するので、 主として相違点について説明する。 第 2実施形態における R A
I D装置は、 図 1に示した構成と同じシステム構成を持つ。 即ち、 R A I D装置 は、 R A I D領域を形成する複数のディスク(ディスクアレイ)と、 その制御装置
1 0とを持ち、 C P U 1 2が各ディスクのセグメントをストライプに割り当てた 状況を示すマッピングテーブル 14をメモリ 1 3上に作成する点は第 1実施形態 と同じである。 伹し、 CPU 1 2による割り当て処理の内容が第 1実施形態と異 なる。
図 7は、 本発明の第 2実施形態における RA I D装置の制御装置 10によるデ イスク増設時におけるセグメントの割り当て方法を示す図であり、 図 8は、 図 7 に示した割り当て方法を説明するフローチャートである。 図 9は、 図 7に示した セグメントの割り当ての前後におけるマッピングテーブル 14の例(マツピングテ 一ブル 14 D)を示す図である。
図 7 (A)に示すように、 第 2実施形態では、 4つのディスク(DISK #0,#1,#2,# 3)が既存のディスクとしてディスクアレイを形成している。 各ディスク # 0〜# 3は、 夫々 m+ 1個(mは 1以上の整数)のセグメントを持つ。 そして、 ディスク # 0〜# 3に跨るストライプ S 1 1及び S 12が形成されている。
即ち、 図 9 (A)のマッピングテーブル 14Dに示すように、 RA I D領域(RA I D上の位置) "0— 15" には、 セグメント "DISK0:0 - 3" , "DISK1:0 - 3" , "D ISK2:0 - 3" 及び "DISK3:0- 3" が割り当てられてなるストライプ S 1 1が形成され、 RA I D領域の位置 "1 6— 31" には、 セグメント "DISK0:4-7", "DISK1:4 - 7", "DISK2:4-7" 及び "DISK3:4- 7" が割り当てられてなるストライプ S 12力 S 形成されている。 伹し、 図 7 (A)に示すように、 各ディスク # 0〜# 3のストラ イブを構成している領域以外の領域は、 未使用(未割り当て)となっている。 この ように、 第 2実施形態では、 CPU 12は既存のディスク # 0〜# 4に未割り当 て状態のセグメントが残るようにストライプを形成する。
ここで、 図 7 (B)に示すように、 各ディスク # 0〜# 3と同一容量を持つ(Π1 + 1個のセグメントを持つ)新規のディスク # 4が増設(追加)され、 新たなストライ プ S 13及ぴ S 14を作成する命令が CPU 1 2に与えられたものとする。 この ディスクの増設において、 CPU 1 2は、 割り当て手段, 判定手段として機能し、 図 8のフローチヤ一トに従ったセグメントの割り当て処理を実施する。
図 8において、 最初に、 CPU1 2は、 以下の条件式 〈式 2〉 で示される条件 2が満たされるか否かを判定する (ステップ S 001)。
D〉 CZ( s一 1 ) · · · 〈式 2〉 伹し、
C =増設対象の 1つのディスクの容量
D=割り当てられていないディスク領域の容量(セグメントの数)の総和 s =ストライプの幅
ここで、 簡単のために m= 4とすると、
C = 5
D = 1 7
1 7 > 5/(4― 1 )
となるので、 条件 2が成立する。 この場合、 CPU 12は、 条件 2が成立するも のとして(ステップ S 001 ; OK)、 処理をステップ S 002に進める。
ステップ S 002では、 CPU 1 2は、 空き容量の大きい順(未割り当て状態の セグメントの数が多い順)に、 ストライプの幅(ストライプを構成するセグメント の数)に相当する数のディスクを選択する。
ここでは、 増設されるディスク # 4が最初に選択され、 残りの 3つのディスク が既存のディスク # 0〜# 3から選択される。 このとき、 空き容量が同じである 複数のディスクが存在する場合には、 CPU 1 2は所定の優先順位に従ってディ スクを選択する。 例えば、 ディスク番号が若い程優先順位が高いものとして、 デ イスクを選択する。 これによつて、 ディスク # 4と、 ディスク # 0〜# 2とが選 択される。
次に、 CPU 12は、 選んだ各ディスクから空きセグメントを 1つづつ特定し、 特定したセグメントを新たなストライプ S 13に割り当てる(ステップ S 003)。 この例では、 図 9 (B)に示すように、 C PU 1 2は、 ディスク # 0のセグメント "DISK0:8-11" ,ディスク # 1のセグメント "DISK1:8- 11" ,ディスク # 2のセグ メント "DISK2:8 - 11" 及びディスク # 4のセグメント "DISK4:0- 3" をストライプ S 1 3に割り当てる。 このように、 セグメントは、 各ディスクの記憶領域の先頭 から順に使用されるように割り当てられる。
そして、 CPU 1 2は、 割り当て結果に従ってマッピングテーブル 14 Dを更 新し(ステップ S 004)、 処理をステップ S 001に戻す。 続いて、 C PU 1 2 が、 条件 2が成立するか否かを判定する。 このとき、 C= 5
D= 1 3
1 3 > 5 (4 - 1)
となるので、 条件 2が成立する。 この場合、 CPU1 2は、 条件 2が成立するも のとして(ステップ S O O l ; OK)、 処理をステップ S 002に進める。
ステップ S O 02では、 C PU 1 2は、 空き容量の大きい順に、 ストライプの 幅に相当する数のディスクを選択する。 ここでは、 増設されるディスク # 4が最 初に選択され、 次に、 ディスク # 3が選択され、 残りの 2つのディスクが既存の ディスク # 0〜# 2から所定の優先順位に従って選択される。 ここでは、 デイス ク # 0及び # 1とが選択される。
次に、 CPU 12は、 選んだ各ディスクから空きセグメントを 1つづつ特定し、 特定したセグメントを新たなス トライプ S 14に割り当てる(ステップ S 003)。 この例では、 図 9 (B)に示すように、 C PU 1 2は、 ディスク # 0のセグメント "DISK0: 12 - 15" ,ディスク # 1のセグメント "DISK1: 12-15" ,ディスク # 3のセ グメント "DISK3:8-11" 及びディスク # 4のセグメント "DISK4:4- 7" をストライ プ S 14に割り当てる。
そして、 CPU 1 2は、 割り当て結果に従ってマッピングテーブル 14 Dを更 新し、 処理を終了する。 以上のようにして、 ディスク # 4の増設によって新たな RA I D領域 " 32— 47 (ストライプ S 13)" 及び "48— 63 (ストライプ S 14)" が作成される(図 7 (B)及ぴ図 9 (B)参照)。
なお、 図 8のステップ S 00 1において条件 2が満たされない場合(ステップ S 001 ; NG)には、 ディスクの増設時における割り当て処理が終了する。 伹し、 ディスクが増設された場合に、 ステップ S 001で NGの判断が行われるまで、 ステップ S 001〜S 004の処理が繰り返し行われるようにしても良い。
第 2実施形態によれば、 ディスクが増設される場合に、 既に形成されているス トライプに対するセグメントの再割り当て(割り当て変更)が起こらないように新 たなストライプを形成する。 従って、 セグメントの再割り当てに伴うデータの移 動が起こらない。 従って、 第 2実施形態における制御装置 1 0では、 ディスクの 増設に際し、 CPU 12が、 セグメントの再割り当て(割当変更)、 データの移動、 パリティの再計算等の処理を行わなくて済むので、 第 1実施形態に比べてその負 荷がさらに軽減される。

Claims

請求の範囲
1 . 複数のディスクの記憶領域が固定サイズのセグメントに夫々分割され、 所定 数のセグメントからなるストライプが形成され、 形成された 1以上のストライプ からなる R A I D領域にデータを記憶する R A I D装置の制御装置であって、 前記複数のディスクのうち前記所定数のディスクから任意の一つのセグメント を形成対象のストライプに夫々割り当てることによりストライプを形成する割当 手段と、
ストライプに対するセグメントの割り当て状況を示すテ一ブルとを含み、 前記割当手段は、
少なく とも前記所定数のセグメントを持つ 1以上のディスクが増設される場 合に、 既存の複数のディスクを用いて構成されたストライプに対するセグメント の割り当て状況を変更することなく新たなストライプを形成可能か否かを判定し、 新たなストライプが形成できないと判定した場合に、 既存のストライプに対 するセグメントの割り当て状況をストライプを形成するセグメントの数を変更す ることなく変更し、 増設される 1以上のディスクを含む複数のディスクのうち前 記所定数の任意のディスクから未割り当て状態のセグメントを 1つずつ取得し、 取得した未割り当て状態のセグメントが割り当てられた新たなストライプを形成 し、 前記割り当ての変更及び新たなス トライプの形成に対するセグメントの割り 当て状況を前記テーブルに反映する、
R A I D装置の制御装置。
2 . 前記割当手段は、
少なく とも前記所定数のセグメントを持つ 1以上のディスクが増設される場合 に、 未割り当て状態のセグメントの数が最も大きいディスクの未割り当て状態の セグメントの数を Aとし、 未割り当て状態のセグメントの数が最も大きいディス クを除くディスクの未割り当て状態のセグメントの数の総和を Bとし、 前記所定 数を s とした場合に、 下記条件が満たされるか否かを判定する判定手段と、
A ( s— 1 )≤B
前記条件が満たされない場合に、 未割り当て状態のセグメントの数が最も大き いディスク(X )と未割り当て状態のセグメントの数が最も小さいディスク(Y)と を特定し、 ディスク (Y )を用いて形成されているストライプのうちディスク(X ) を用いていないセグメントを特定する特定手段と、
前記ディスク(X )の任意の未割り当て状態のセグメントを、 代替セグメントと して、 前記特定手段によって特定された特定セグメントの代わりに、 前記特定セ グメントを用いて構成されているストライプに割り当て、 この割り当ての変更を 前記テーブルに反映する反映手段とを含む、
請求項 1記載の R A I D装置の制御装置。
3 . 前記割当手段は、 前記特定セグメントにデータが格納されている場合に、 こ のデータを前記代替セグメントに移動するデータ移動手段をさらに含む、 請求項 2記載の R A I D装置の制御装置。
4 . 複数のディスクの記憶領域が固定サイズのセグメントに夫々分割され、 所定 数のセグメントからなるストライプが形成され、 形成された 1以上のストライプ からなる R A I D領域にデータを記憶する R A I D装置の制御装置であって、 各ディスクに未割り当て状態のセグメントが残る状態で、 前記複数のディスク のうちス トライプを形成する数のディスクから任意の一つのセグメントを形成対 象のストライプに夫々割り当てることによりストライプを形成する割当手段と、 ストライプに対するセグメントの割り当て状況を示すテーブルとを含み、 前記割当手段は、 ディスクが増設される場合に、 増設されるディスクを含む複 数のディスクの中から未割り当て状態のセグメントの数が大きい順で前記所定数 と同じ数のディスクを選択し、 選択した各ディスクから未割り当て状態のセグメ ントを一つずつ特定し、 特定した各セグメントを新たなストライプに割り当て、 この割り当て状態を前記テーブルに反映する、
R A I D装置の制御装置。
5 . 前記割当手段は、 ディスクが増設される場合に、 増設されるディスクのセグ メントの数を Cとし、 増設されるディスクを含む複数のディスクの未割り当て状 態のセグメントの数を Dとし、 前記所定数を s とした場合に、 下記条件が満たさ れるか否かを判定し、
D > C / ( s一 1 ) 上記条件が満たされる間、 前記セグメントの割当処理を繰り返し行う、 請求項 4記載の R A I D装置の制御装置。
PCT/JP2002/002373 2002-03-13 2002-03-13 Controleur pour dispositif raid WO2003077111A1 (fr)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2003575260A JP4236590B2 (ja) 2002-03-13 2002-03-13 Raid装置の制御装置
PCT/JP2002/002373 WO2003077111A1 (fr) 2002-03-13 2002-03-13 Controleur pour dispositif raid
US10/938,628 US7447837B2 (en) 2002-03-13 2004-09-13 Control device for a RAID device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2002/002373 WO2003077111A1 (fr) 2002-03-13 2002-03-13 Controleur pour dispositif raid

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US10/938,628 Continuation US7447837B2 (en) 2002-03-13 2004-09-13 Control device for a RAID device

Publications (1)

Publication Number Publication Date
WO2003077111A1 true WO2003077111A1 (fr) 2003-09-18

Family

ID=27799923

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2002/002373 WO2003077111A1 (fr) 2002-03-13 2002-03-13 Controleur pour dispositif raid

Country Status (3)

Country Link
US (1) US7447837B2 (ja)
JP (1) JP4236590B2 (ja)
WO (1) WO2003077111A1 (ja)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1519271A2 (en) 2003-09-24 2005-03-30 Nec Corporation Disk array device,method of extending storage capacity and computer program
JP2006120120A (ja) * 2004-10-20 2006-05-11 Seagate Technology Llc 複数のデータ・フォーマットを割り振るための一般記憶コンテナ
JP2007149068A (ja) * 2005-11-23 2007-06-14 Internatl Business Mach Corp <Ibm> ストライピング済みディスク・データのリバランシングを行う方法、システム、及び製品(ストライピング済みディスク・データのリバランシング)
JP2010102695A (ja) * 2008-10-24 2010-05-06 Hitachi Ltd Hdd障害からの高速データ回復
JP2013506886A (ja) * 2010-01-14 2013-02-28 株式会社日立製作所 ストレージシステム
WO2013183143A1 (ja) * 2012-06-07 2013-12-12 株式会社日立製作所 管理システム及び管理方法
JP2014194803A (ja) * 2009-07-20 2014-10-09 Caringo Inc ストレージ・クラスタにおける適応的な電力節約の方法
JP2015170272A (ja) * 2014-03-10 2015-09-28 日本電気株式会社 制御装置、制御方法、及び制御プログラム
JP2016511879A (ja) * 2013-02-01 2016-04-21 ヒタチ データ システムズ エンジニアリング ユーケー リミテッドHitachi Data Systems Engineering Uk Limited データ記憶システムにおけるストレージをよりきめ細かく、拡張可能に割り当てること可能とする方法及び装置
WO2018229944A1 (ja) * 2017-06-15 2018-12-20 株式会社日立製作所 ストレージシステム及びストレージシステムの制御方法
JP2021096645A (ja) * 2019-12-17 2021-06-24 株式会社日立製作所 ストレージシステムおよびストレージ管理方法

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7257732B2 (en) * 2004-02-13 2007-08-14 Kaleidescape, Inc. Integrating content-laden media with storage system
US7996608B1 (en) 2005-10-20 2011-08-09 American Megatrends, Inc. Providing redundancy in a storage system
US7778960B1 (en) 2005-10-20 2010-08-17 American Megatrends, Inc. Background movement of data between nodes in a storage cluster
US8010485B1 (en) 2005-10-20 2011-08-30 American Megatrends, Inc. Background movement of data between nodes in a storage cluster
US8010829B1 (en) 2005-10-20 2011-08-30 American Megatrends, Inc. Distributed hot-spare storage in a storage cluster
US7721044B1 (en) * 2005-10-20 2010-05-18 American Megatrends, Inc. Expanding the storage capacity of a virtualized data storage system
US7809892B1 (en) 2006-04-03 2010-10-05 American Megatrends Inc. Asynchronous data replication
US8498967B1 (en) 2007-01-30 2013-07-30 American Megatrends, Inc. Two-node high availability cluster storage solution using an intelligent initiator to avoid split brain syndrome
US7908448B1 (en) 2007-01-30 2011-03-15 American Megatrends, Inc. Maintaining data consistency in mirrored cluster storage systems with write-back cache
US8108580B1 (en) 2007-04-17 2012-01-31 American Megatrends, Inc. Low latency synchronous replication using an N-way router
US8732411B1 (en) 2007-11-19 2014-05-20 American Megatrends, Inc. Data de-duplication for information storage systems
US8725986B1 (en) * 2008-04-18 2014-05-13 Netapp, Inc. System and method for volume block number to disk block number mapping
US8799571B1 (en) * 2008-09-26 2014-08-05 Emc Corporation System and method for configuring a device array upon detecting addition of a storage device
JP5396836B2 (ja) * 2008-12-01 2014-01-22 富士通株式会社 データ分散制御プログラム、ストレージ管理プログラム、制御ノード、およびディスクノード
JP5590028B2 (ja) * 2009-03-27 2014-09-17 富士通株式会社 情報処理装置、メモリ制御方法、及びメモリ制御装置
US20110029729A1 (en) * 2009-07-30 2011-02-03 Lsi Corporation Erasure coded data storage capacity and power management
JP5532982B2 (ja) * 2010-02-03 2014-06-25 富士通株式会社 ストレージ装置、ストレージ装置のコントローラおよびストレージ装置の記憶領域割当方法
JP5732457B2 (ja) * 2010-06-28 2015-06-10 本田技研工業株式会社 車両の制御装置及び制御方法
US9069471B2 (en) * 2011-09-30 2015-06-30 Hitachi, Ltd. Passing hint of page allocation of thin provisioning with multiple virtual volumes fit to parallel data access
JP2013196276A (ja) * 2012-03-19 2013-09-30 Fujitsu Ltd 情報処理装置、プログラムおよびデータ配置方法
JP6135226B2 (ja) * 2013-03-21 2017-05-31 日本電気株式会社 情報処理装置、情報処理方法、ストレージシステム及びコンピュータプログラム
US10013359B2 (en) * 2014-12-24 2018-07-03 University Of New Hampshire Redundant disk array storage system and method using heterogeneous disks and a lookup table
US20170212705A1 (en) * 2016-01-26 2017-07-27 Netapp, Inc. Dynamic Weighting for Distributed Parity Device Layouts
US20170220282A1 (en) * 2016-01-29 2017-08-03 Dell Products L.P. Dynamic capacity expansion of raid volumes
US10496482B1 (en) * 2016-09-30 2019-12-03 EMC IP Holding Company LLC Selective raid repair based on content mapping
US10310752B1 (en) * 2016-12-30 2019-06-04 EMC IP Holding Company LLC Extent selection with mapped raid
US10852966B1 (en) * 2017-10-18 2020-12-01 EMC IP Holding Company, LLC System and method for creating mapped RAID group during expansion of extent pool
CN110058792B (zh) * 2018-01-18 2022-08-30 伊姆西Ip控股有限责任公司 扩大存储空间的方法、设备以及计算机程序产品
US10860210B2 (en) * 2019-03-25 2020-12-08 EMC IP Holding Company LLC Division raid for disk array expansion
CN112748858B (zh) * 2019-10-30 2024-04-19 伊姆西Ip控股有限责任公司 用于管理盘阵列的方法、电子设备和计算机程序产品
US11144413B2 (en) * 2020-02-21 2021-10-12 Dell Products L.P. Cluster member transfer for raid system expansion
US11403022B2 (en) * 2020-06-03 2022-08-02 Dell Products L.P. Growing and splitting a disk array by moving RAID group members
US11327666B2 (en) * 2020-09-02 2022-05-10 Dell Products L.P. RAID member distribution for granular disk array growth
US11340789B2 (en) * 2020-10-13 2022-05-24 Dell Products L.P. Predictive redistribution of capacity in a flexible RAID system

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07160434A (ja) * 1993-12-13 1995-06-23 Hitachi Ltd アレイ形式の記憶装置システム
JPH08147111A (ja) * 1994-11-24 1996-06-07 Fujitsu Ltd ディスクアレイ装置の拡張構成方法
JPH1063441A (ja) * 1996-08-19 1998-03-06 Ekushingu:Kk ディスクアレイにおける論理記憶領域統合方法およびディスクアレイ装置
JPH10326156A (ja) * 1997-05-27 1998-12-08 Brother Ind Ltd ディスクアレイ装置
JPH11316654A (ja) * 1999-03-04 1999-11-16 Hitachi Ltd デ―タアクセス制御方法および計算機システム並びにディスクアレイシステム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5502836A (en) * 1991-11-21 1996-03-26 Ast Research, Inc. Method for disk restriping during system operation
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
US5615352A (en) * 1994-10-05 1997-03-25 Hewlett-Packard Company Methods for adding storage disks to a hierarchic disk array while maintaining data availability
US5524204A (en) * 1994-11-03 1996-06-04 International Business Machines Corporation Method and apparatus for dynamically expanding a redundant array of disk drives
US5758118A (en) * 1995-12-08 1998-05-26 International Business Machines Corporation Methods and data storage devices for RAID expansion by on-line addition of new DASDs
JP3170455B2 (ja) * 1996-05-27 2001-05-28 インターナショナル・ビジネス・マシーンズ・コーポレ−ション データ記憶システムにおけるデータの再配置方法、そのシステムに記憶されたデータのアクセス方法及びデータ記憶システム
GB0104469D0 (en) * 2001-02-23 2001-04-11 Ibm Log-structured array
KR100449485B1 (ko) * 2001-10-26 2004-09-21 한국전자통신연구원 스트라이핑 시스템 및 이의 매핑 및 처리방법
US6952794B2 (en) * 2002-10-10 2005-10-04 Ching-Hung Lu Method, system and apparatus for scanning newly added disk drives and automatically updating RAID configuration and rebuilding RAID data
JP2004213064A (ja) * 2002-12-26 2004-07-29 Fujitsu Ltd Raid装置及びその論理デバイス拡張方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07160434A (ja) * 1993-12-13 1995-06-23 Hitachi Ltd アレイ形式の記憶装置システム
JPH08147111A (ja) * 1994-11-24 1996-06-07 Fujitsu Ltd ディスクアレイ装置の拡張構成方法
JPH1063441A (ja) * 1996-08-19 1998-03-06 Ekushingu:Kk ディスクアレイにおける論理記憶領域統合方法およびディスクアレイ装置
JPH10326156A (ja) * 1997-05-27 1998-12-08 Brother Ind Ltd ディスクアレイ装置
JPH11316654A (ja) * 1999-03-04 1999-11-16 Hitachi Ltd デ―タアクセス制御方法および計算機システム並びにディスクアレイシステム

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1519271A2 (en) 2003-09-24 2005-03-30 Nec Corporation Disk array device,method of extending storage capacity and computer program
JP2005099998A (ja) * 2003-09-24 2005-04-14 Nec Corp ディスクアレイ装置および記憶容量拡張方法ならびにプログラム
EP1519271A3 (en) * 2003-09-24 2010-06-02 Nec Corporation Disk array device,method of extending storage capacity and computer program
JP2006120120A (ja) * 2004-10-20 2006-05-11 Seagate Technology Llc 複数のデータ・フォーマットを割り振るための一般記憶コンテナ
JP2007149068A (ja) * 2005-11-23 2007-06-14 Internatl Business Mach Corp <Ibm> ストライピング済みディスク・データのリバランシングを行う方法、システム、及び製品(ストライピング済みディスク・データのリバランシング)
JP2010102695A (ja) * 2008-10-24 2010-05-06 Hitachi Ltd Hdd障害からの高速データ回復
JP2014194803A (ja) * 2009-07-20 2014-10-09 Caringo Inc ストレージ・クラスタにおける適応的な電力節約の方法
US8650360B2 (en) 2010-01-14 2014-02-11 Hitachi, Ltd. Storage system
JP2013506886A (ja) * 2010-01-14 2013-02-28 株式会社日立製作所 ストレージシステム
WO2013183143A1 (ja) * 2012-06-07 2013-12-12 株式会社日立製作所 管理システム及び管理方法
JPWO2013183143A1 (ja) * 2012-06-07 2016-01-21 株式会社日立製作所 管理システム及び管理方法
US9870152B2 (en) 2012-06-07 2018-01-16 Hitachi, Ltd. Management system and management method for managing data units constituting schemas of a database
JP2016511879A (ja) * 2013-02-01 2016-04-21 ヒタチ データ システムズ エンジニアリング ユーケー リミテッドHitachi Data Systems Engineering Uk Limited データ記憶システムにおけるストレージをよりきめ細かく、拡張可能に割り当てること可能とする方法及び装置
JP2015170272A (ja) * 2014-03-10 2015-09-28 日本電気株式会社 制御装置、制御方法、及び制御プログラム
WO2018229944A1 (ja) * 2017-06-15 2018-12-20 株式会社日立製作所 ストレージシステム及びストレージシステムの制御方法
JPWO2018229944A1 (ja) * 2017-06-15 2019-11-07 株式会社日立製作所 ストレージシステム及びストレージシステムの制御方法
JP2021096645A (ja) * 2019-12-17 2021-06-24 株式会社日立製作所 ストレージシステムおよびストレージ管理方法
JP7191003B2 (ja) 2019-12-17 2022-12-16 株式会社日立製作所 ストレージシステムおよびストレージ管理方法

Also Published As

Publication number Publication date
US20050102551A1 (en) 2005-05-12
US7447837B2 (en) 2008-11-04
JP4236590B2 (ja) 2009-03-11
JPWO2003077111A1 (ja) 2005-07-07

Similar Documents

Publication Publication Date Title
JP4236590B2 (ja) Raid装置の制御装置
JP3699165B2 (ja) データ記憶装置の記憶容量を拡大する方法
JP6118401B2 (ja) ストレージ装置及びデータ管理方法
US8832371B2 (en) Storage system with multiple flash memory packages and data control method therefor
US6839827B1 (en) Method, system, program, and data structures for mapping logical blocks to physical blocks
JP5437373B2 (ja) 複数のフラッシュパッケージを有するストレージシステム
US5889795A (en) Disk array system and method for storing data
US7058788B2 (en) Dynamic allocation of computer memory
US7873600B2 (en) Storage control device to backup data stored in virtual volume
JP5816303B2 (ja) フラッシュメモリを含むストレージシステム、及び記憶制御方法
EP0801344A2 (en) An apparatus for reallocating logical to physical disk devices using a storage controller and method of the same
US10768838B2 (en) Storage apparatus and distributed storage system
JPH08278850A (ja) 階層データ記憶システムの記憶スペース確保方法
JP6196383B2 (ja) 階層化ストレージシステム
CN110968262B (zh) 存储装置和数据存储方法
CN113490922A (zh) 固态硬盘写放大优化方法
JP5730446B1 (ja) トライアル領域を備えた階層化ストレージシステム、ストレージコントローラ及びプログラム
JP5768118B2 (ja) 複数のフラッシュパッケージを有するストレージシステム
US9620165B2 (en) Banded allocation of device address ranges in distributed parity schemes
JP7140807B2 (ja) 仮想ストレージシステム
US11544005B2 (en) Storage system and processing method
JPH11203055A (ja) ディスクアレイ装置
JP6138318B2 (ja) 複数のフラッシュパッケージを有するストレージシステム
JP5945040B2 (ja) 複数のフラッシュパッケージを有するストレージシステム
JPH09265358A (ja) ディスクアレイ装置

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): JP US

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
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: 2003575260

Country of ref document: JP

Ref document number: 10938628

Country of ref document: US

122 Ep: pct application non-entry in european phase