WO1999000722A1 - Method of operating a raid disk array in a hardware-address-independent manner, and disk storage system which performs such method - Google Patents

Method of operating a raid disk array in a hardware-address-independent manner, and disk storage system which performs such method Download PDF

Info

Publication number
WO1999000722A1
WO1999000722A1 PCT/US1998/013423 US9813423W WO9900722A1 WO 1999000722 A1 WO1999000722 A1 WO 1999000722A1 US 9813423 W US9813423 W US 9813423W WO 9900722 A1 WO9900722 A1 WO 9900722A1
Authority
WO
WIPO (PCT)
Prior art keywords
array
disk
address
hardware
unique identifier
Prior art date
Application number
PCT/US1998/013423
Other languages
French (fr)
Inventor
Christopher B. Legg
Original Assignee
Unisys Corporation
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 Unisys Corporation filed Critical Unisys Corporation
Priority to AU82705/98A priority Critical patent/AU8270598A/en
Publication of WO1999000722A1 publication Critical patent/WO1999000722A1/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/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/006Identification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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

Definitions

  • TITLE METHOD OF OPERATING A RAID DISK ARRAY IN A HARDWARE-ADDRESS-INDEPENDENT MANNER, AND
  • This invention relates to methods of operating a RAID disk array in a hardware-address-independent manner, and it relates to disk storage systems which perform such methods .
  • w RAID disk array has been defined to mean any Redundant Array of Inexpensive Disks; and several different RAID disk arrays have been defined. These include a Level One RAID disk array, a Level Three RAID disk array and a Level Five RAID disk array. See w A Case for Redundant Arrays of Inexpensive Disks (RAID)" by Patterson, et al . , Report No. UCB/CSD 87/391, December 1987, Computer Science Division of the University of California at Berkeley.
  • FIG. 1 shows one example of a Level Five RAID disk array in which the array resides on a set of five disks that are labeled Disk 0, Disk 1... Disk 4. Each column of the array contains data and parity which is stored in a single disk of the set.
  • Each row of the Fig. 1 array consists of one parity chunk which resides on one disk, and four data chunks which reside on four other disks. Also, each data chunk and each parity chunk is partitioned into several physical blocks. A single block is the smallest portion of a chunk that can be separately addressed by a user program with a read or write command. In Fig. 1, there are eight blocks per chunk. Each block consists of a predetermined number of bytes (e.g. - 512 bytes) plus one cyclic redundant check byte called the " CRC" byte.
  • block 0 in row 0 is addressed by a read/write command with a logical address of 0.
  • the data blocks are addressed the following order: blocks 1-7 of data chunk 0, blocks 0-7 of data chunk 1, blocks 0-7 of data chunk 2, blocks 0-7 of data chunk 3, blocks 8-15 of data chunk 4, blocks 8-15 of data chunk 5, etc.
  • block 8 of data chunk 5 has a logical address of 40.
  • the CRC byte within that block is also generated and written.
  • the parity block which has the same block number as the data block is also generated and written. This parity block is written using odd parity or even parity.
  • the CRC byte is regenerated from the block of data that is read. If the regenerated CRC byte differs from the stored CRC byte, then the block of data which is read contains an error. To correct this error, the erroneous data block is regenerated by a) reading all of the other blocks (data and parity) on the disks which have the same block number as the erroneous data block; and b) exclusive- oring those blocks together.
  • An initial step which must be performed in the execution of a read or write command is to convert the particular logical address of a data block that is to be read or written to a hardware address for the disk which stores that data block.
  • This address conversion can take place in two steps, where the first step is to determine the column in the array which contains the data block with the particular logical address, and where the second step is to correlate that column with the hardware address of a disk.
  • the hardware address is mechanically set.
  • One way that this address is set is to plug the disk into a receptacle in which the hardware address is predetermined by wiring to that receptacle.
  • Another way that this address is set is to provide a multi -position switch on the disk which selects the hardware address.
  • the hardware address of each disk in the array is set just one time and never changed; however, the hardware address of one or more disks can get changed accidentally. Such an accident can occur, for example, by removing a disk from its receptacle to perform maintenance on the disk, and then plugging the disk back into the wrong receptacle. Also such an accident can occur by inadvertently touching a switch and changing its setting. If the hardware address of a disk in an array is accidentally changed, then the logical addresses in commands which read/write data blocks will not be converted to the hardware addresses of the disks where those data blocks are actually stored. Thus, during the execution of a read command, the wrong data blocks can be read; and during the execution of a write command, data blocks can be written onto the wrong disk.
  • a primary object of the invention is to provide a method of operating a RAID disk array in a hardware-address-independent manner, wherein a hardware address for each disk in the array is set and changed mechanically without adversely affecting the operation of the array.
  • a RAID disk array is operated in a hardware-address-independent manner, wherein a hardware address for each disk in the array is set and changed mechanically without adversely affecting the operation of the array.
  • This method of operating the array is performed by a control program in a disk storage system which holds the disks that make up the array.
  • the control program When the array is initially set up, the control program writes on a magnetic media in each disk in the array, a number of a column in the array which that disk stores and a unique identifier which identifies all of the disks in the array. Subsequently, if the hardware address of one or more disks in the array is changed, the control program determines which disk hardware addresses correspond to each column in the array by a) selecting a potential hardware address for any one disk in the array, b) attempting to read the unique identifier and column number from that one disk using the selected hardware address, c) repeating the selecting and attempting steps multiple times, and d) correlating which selected hardware addresses result in an actual reading of a column number with the unique identifier.
  • the control program continues to receive and execute a read/write commands which select particular data blocks in the array by specifying a logical address. To execute these commands, the control program, translates the logical address to the hardware address of the disk which stores that data block, by using the correlated disk hardware address-column numbers from the correlating step. But if the attempted reads result in an actual reading of the unique identifier from just a subset of the disks in the array, then an error message is generated by the control program.
  • the unique identifier on each particular disk in the array is different and separately identifies that particular disk as well as each remaining disk in the array. In another embodiment, the unique identifier on each particular disk in the array is the same and identifies the array as a whole plus the total number of disks in the array.
  • Fig. 1 shows how data and parity are arranged in a Level 5 RAID disk array.
  • Fig. 2 shows one preferred embodiment of a disk storage system in which a Level Five RAID disk array is operated in a hardware-address-independent manner.
  • Fig. 3 shows a flowchart of a sequence of events which occur in the disk storage system of Fig. 2 whereby the hardware-address-independent operation of the RAID disk array is achieved.
  • Fig. 4 shows another preferred embodiment of a disk storage system in which a Level Five RAID disk array is also operated in a hardware-address-independent manner .
  • Fig. 5 shows a flowchart of a sequence of events which occur in the disk storage system of Fig. 4 whereby the hardware-address-independent operation of the RAID disk array is achieved.
  • FIG. 2 shows a preferred embodiment of a disk storage system which implements the Level Five RAID disk array of Fig. 1 such that the array operates, in accordance with the present invention, in a hardware-address-independent manner.
  • This disk storage system is comprised of the following components: a set of five disks, one of which is shown in detail as indicated by reference numeral 10; a disk controller 11 which holds the five disks; a digital computer 12 which is coupled to the disk controller; a memory 13 for the computer; and an operator's console 14 for the computer.
  • Included in the disk controller 11 are a total of ten receptacles for the five disks which make up the RAID disk array; and an example of which receptacles initially hold the disks is indicated in Fig. 2 by five wiggly lines 15a-15e. After the RAID disk array is initially set up, one or more of the disks can be moved to a different receptacle without adversely affecting the operation of the array.
  • Each of the five disks in the RAID disk array receives a hardware address based on the receptacle into which it is plugged.
  • step 23 the control program 13a generates five unique identifiers ID0-ID4, one for each disk in the array. Then in step 24, the control program 13 writes the following items on the magnetic media in each disk in the array: a) the unique identifier for that disk along with the number of the column which that disk stores in the array, and b) the unique identifiers for all other disks in the array.
  • An example of the items a) and b) which are written on the magnetic media is indicated by reference numeral 16 in Fig. 2 for the disk 10 which stores column 0.
  • step 24 the control program 13a enters a normal " run" mode, as indicated by reference numeral 25 in Fig. 3.
  • the control program 13a receives and executes read/write commands from a user program 13b which resides in the memory 13.
  • Each read/write command includes a logical address which selects a particular data block in the Level Five RAID disk array.
  • the control program 13a converts the logical address to a column number and a block number in the array; and it correlates that column to the hardware address of the disk on which the column is stored, using the information that is provided by step 22. Then the control program sends the block number and hardware address to the disk controller.
  • the operator of the console 14 can turn off all electrical power to the disk controller 11. This is indicated in Fig. 3 by reference numeral 30.
  • One reason for turning power off is to enable the disks to be removed so that maintenance can be performed on them. Thereafter, the disks normally are inserted back into the same receptacles from which they were removed. However, one or more disks can accidentally be inserted into a different receptacle; and this is indicated as occurring by reference numeral 31 in Fig. 3.
  • control program 13a performs several steps 33-36 which compensate for any movement of the disks from one receptacle to another.
  • step 34 program 13a records each hardware address where an attempted read results in the unique identifier and column information actually being read.
  • step 35 program 13a uses the information that is recorded in step 34 to recorrelate all of the columns in the RAID disk array to corresponding hardware addresses for the disks which store those columns.
  • step 36 the control program 13a checks to see if all of the disks which make up the Level Five RAID disk array, are present in the receptacles. If all of the disks in the array are not present, then the control program 13a generates an error message, as indicated by reference numeral 37, which identifies the columns in the array for which there are no disks in the receptacles.
  • control program 13a again enters the normal " run” mode, as indicated by step 38.
  • the control program receives and executes read/write commands from the user program 13b, just like it previously did in step 25. But now, the control program correlates each column in the RAID disk array to a disk hardware address using the result of steps 33-36, rather than the information provided in step 22. Due to the performance of steps 23-24 and
  • the RAID disk array will continue to operate even though one or more disks in the array have been moved from their initial receptacle to another. Further, the disks in the array can subsequently be moved multiple times by the operator via steps 30-31; and for each such movement, control program 13a will enable the array to continue to operate by re-performing steps 33-36.
  • Fig. 4 shows a second preferred embodiment of a disk storage system which also operates the Level Five RAID disk array of Fig. 1 in a hardware-address -independent manner.
  • This disk storage system is similar to the Fig. 2 system, but it has several differences which are described below. All of the following components are in the Fig. 4 system: a set of five disks, one of which is shown in detail as indicated by reference numeral 40; a disk controller 41 which holds the five disks; a digital computer 42 which is coupled to the disk controller; a memory 43 for the computer; and an operator's console 44 for the computer.
  • each disk in the Fig. 4 system includes a multiposition switch 40a which sets the disk's hardware address.
  • One particular column of the RAID disk array is stored on each of the disks which plug into the receptacles 45a-45e.
  • control program 43a writes the following items on the magnetic media in each disk in the array: a) the unique identifier for the entire array, b) the number of the column which that disk stores, and c) the total number of disks in the array.
  • This step is indicated by reference numeral 54 in Fig. 5; and an example of the items a) , b) and c) which are written on the magnetic media is indicated by reference numeral 46 in Fig. 4 for the disk 40 which stores column 0.
  • step 54 the control program 43a enters the normal " run" mode, as indicated by reference numeral 55 in Fig. 5.
  • the control program 43a receives and executes read/write commands from a user program 43b; and each such command includes a logical address which selects a particular data block in the RAID disk array.
  • the control program 43a converts the logical address to a column number and a block number in the array, and it correlates that column to the hardware address of the disk on which the column is stored. Then the control program sends the block number and hardware address to the disk controller.
  • the operator of the console 44 can M hot swap" one or more disks in the disk controller 41. This is indicated in Fig. 5 by reference numerals 60-62.
  • a disk is " hot swapped" by pulling the disk from its receptacle and/or plugging the disk into its receptacle while power is applied to the controller 41.
  • One reason for hot swapping the disks is to enable maintenance to be performed on them.
  • the switch 40a on one or more disks can accidentally be moved to a different setting and thereby change the disk's hardware address; and this is indicated as occurring by reference numeral 61 in Fig. 5.
  • the operator of the console 44 sends a " swap complete" command to the computer 42; and this occurs as step 62 in Fig. 5. Then, in response to the swap complete command, the control program 43a performs several steps 63-66 which compensate for any movement of the switches 40a in the disks.
  • step 64 program 43a records each hardware address where an attempted read results in the unique identifier and column information actually being read.
  • step 65 program 43a uses the information that is recorded in step 64 to recorrelate all of the columns in the RAID disk array to corresponding hardware addresses for the disks which store those columns.
  • step 66 the control program 43a checks to see if all of the disks which make up the Level Five RAID disk array, are present in the receptacles.
  • control program 43a again enters the normal " run" mode as indicated by reference numeral 67. Otherwise, program 43a generates an error message, as indicated by reference numeral 68, which identifies the columns in the array for which there are no disks in the receptacles.
  • the RAID disk array has a total of five columns on which data blocks and parity blocks are arranged as shown in Fig. 1.
  • the number of columns in the RAID disk array can be increased or decreased to any number simply by adding or deleting disks to the array.
  • the array can have any number of physical blocks per data chunk.
  • the array can be a Level Three or Level One array, as is described in the reference which is cited in the " Background of the Invention.”
  • each identifier can have any desired format and can be written at any predetermined location.
  • each identifier can be a 64 -bit number before block 0 on the disk.
  • each identifier can be generated by any desired algorithm in step 23 of Fig. 3 and step 53 of Fig. 5.
  • each unique identifier can be selected and entered by the operator as part of the n initialize array" command that is sent in step 21 of Fig. 3 and step 51 of Fig. 5, in which case step 23 of Fig. 3 and step 53 of Fig. 5 would be eliminated.

Abstract

A RAID disk array is operated in a hardware-address-independent manner, wherein a harware address (T=0 thru T=9 in Fig. 2) for each disk in the array is set and changed mechanically (by 11 in Fig. 2) without adversely affecting the operation of the array. This method of operating the array is performed by a control program (13A in Fig. 2) which writes on a magnetic media in each disk (e.g. - 10 in Fig. 2) in the array, the number of the column in the array (e.g. Col. 0) which that disk stores and a unique identifier(e.g. - ID0, ID1, ... ID4) which identifies all of the disks in the array. Subsequently, if the harware address of one or more disks in the array is changed, the control program (13a in Fig. 2) determines which disk hardware addresses (e.g. - T=4) correspond to each column (e.g. - Col. 0) in the array by a) selecting a potential hardware address for any one disk in the array, b) attempting to read the unique identifier and column number from that one disk using the selected hardware address, c) repeating the selecting and attempting steps multiple times, and d) correlating which selected hardware addresses result in an actual reading of a column number with the unique identifier.

Description

TITLE: METHOD OF OPERATING A RAID DISK ARRAY IN A HARDWARE-ADDRESS-INDEPENDENT MANNER, AND
DISK STORAGE SYSTEM WHICH PERFORMS SUCH METHOD
BACKGROUND OF THE INVENTION;
This invention relates to methods of operating a RAID disk array in a hardware-address-independent manner, and it relates to disk storage systems which perform such methods .
In the prior art, the term w RAID" disk array has been defined to mean any Redundant Array of Inexpensive Disks; and several different RAID disk arrays have been defined. These include a Level One RAID disk array, a Level Three RAID disk array and a Level Five RAID disk array. See w A Case for Redundant Arrays of Inexpensive Disks (RAID)" by Patterson, et al . , Report No. UCB/CSD 87/391, December 1987, Computer Science Division of the University of California at Berkeley.
With a Level Five RAID disk array, both parity and data are striped across a set of several disks. Fig. 1 shows one example of a Level Five RAID disk array in which the array resides on a set of five disks that are labeled Disk 0, Disk 1... Disk 4. Each column of the array contains data and parity which is stored in a single disk of the set.
Each row of the Fig. 1 array consists of one parity chunk which resides on one disk, and four data chunks which reside on four other disks. Also, each data chunk and each parity chunk is partitioned into several physical blocks. A single block is the smallest portion of a chunk that can be separately addressed by a user program with a read or write command. In Fig. 1, there are eight blocks per chunk. Each block consists of a predetermined number of bytes (e.g. - 512 bytes) plus one cyclic redundant check byte called the " CRC" byte.
In the Fig. 1 array, block 0 in row 0 is addressed by a read/write command with a logical address of 0. As this logical address is sequentially incremented by one, the data blocks are addressed the following order: blocks 1-7 of data chunk 0, blocks 0-7 of data chunk 1, blocks 0-7 of data chunk 2, blocks 0-7 of data chunk 3, blocks 8-15 of data chunk 4, blocks 8-15 of data chunk 5, etc. For example, block 8 of data chunk 5 has a logical address of 40. During the execution of a write command which writes a block of data, the CRC byte within that block is also generated and written. Further, the parity block which has the same block number as the data block is also generated and written. This parity block is written using odd parity or even parity.
With even parity, the exclusive-or of a parity block and all data blocks that have the same block number produces a block of all " 0's" . Conversely, with odd parity, the exclusive-or of a parity block and all data blocks that have the same block number produce a block of all " l's" .
During the execution of a read command, the CRC byte is regenerated from the block of data that is read. If the regenerated CRC byte differs from the stored CRC byte, then the block of data which is read contains an error. To correct this error, the erroneous data block is regenerated by a) reading all of the other blocks (data and parity) on the disks which have the same block number as the erroneous data block; and b) exclusive- oring those blocks together.
An initial step which must be performed in the execution of a read or write command is to convert the particular logical address of a data block that is to be read or written to a hardware address for the disk which stores that data block. This address conversion can take place in two steps, where the first step is to determine the column in the array which contains the data block with the particular logical address, and where the second step is to correlate that column with the hardware address of a disk.
For each disk, the hardware address is mechanically set. One way that this address is set is to plug the disk into a receptacle in which the hardware address is predetermined by wiring to that receptacle. Another way that this address is set is to provide a multi -position switch on the disk which selects the hardware address.
Usually, the hardware address of each disk in the array is set just one time and never changed; however, the hardware address of one or more disks can get changed accidentally. Such an accident can occur, for example, by removing a disk from its receptacle to perform maintenance on the disk, and then plugging the disk back into the wrong receptacle. Also such an accident can occur by inadvertently touching a switch and changing its setting. If the hardware address of a disk in an array is accidentally changed, then the logical addresses in commands which read/write data blocks will not be converted to the hardware addresses of the disks where those data blocks are actually stored. Thus, during the execution of a read command, the wrong data blocks can be read; and during the execution of a write command, data blocks can be written onto the wrong disk.
Accordingly, a primary object of the invention is to provide a method of operating a RAID disk array in a hardware-address-independent manner, wherein a hardware address for each disk in the array is set and changed mechanically without adversely affecting the operation of the array. BRIEF SUMMARY OF THE INVENTION:
With the present invention, a RAID disk array is operated in a hardware-address-independent manner, wherein a hardware address for each disk in the array is set and changed mechanically without adversely affecting the operation of the array. This method of operating the array is performed by a control program in a disk storage system which holds the disks that make up the array.
When the array is initially set up, the control program writes on a magnetic media in each disk in the array, a number of a column in the array which that disk stores and a unique identifier which identifies all of the disks in the array. Subsequently, if the hardware address of one or more disks in the array is changed, the control program determines which disk hardware addresses correspond to each column in the array by a) selecting a potential hardware address for any one disk in the array, b) attempting to read the unique identifier and column number from that one disk using the selected hardware address, c) repeating the selecting and attempting steps multiple times, and d) correlating which selected hardware addresses result in an actual reading of a column number with the unique identifier.
If the attempted reads result in the actual reading of the unique identifier from all of the disks in the array, then the control program continues to receive and execute a read/write commands which select particular data blocks in the array by specifying a logical address. To execute these commands, the control program, translates the logical address to the hardware address of the disk which stores that data block, by using the correlated disk hardware address-column numbers from the correlating step. But if the attempted reads result in an actual reading of the unique identifier from just a subset of the disks in the array, then an error message is generated by the control program.
In one embodiment, the unique identifier on each particular disk in the array is different and separately identifies that particular disk as well as each remaining disk in the array. In another embodiment, the unique identifier on each particular disk in the array is the same and identifies the array as a whole plus the total number of disks in the array.
BRIEF DESCRIPTION OF THE DRAWINGS:
Fig. 1 shows how data and parity are arranged in a Level 5 RAID disk array.
Fig. 2 shows one preferred embodiment of a disk storage system in which a Level Five RAID disk array is operated in a hardware-address-independent manner.
Fig. 3 shows a flowchart of a sequence of events which occur in the disk storage system of Fig. 2 whereby the hardware-address-independent operation of the RAID disk array is achieved.
Fig. 4 shows another preferred embodiment of a disk storage system in which a Level Five RAID disk array is also operated in a hardware-address-independent manner . Fig. 5 shows a flowchart of a sequence of events which occur in the disk storage system of Fig. 4 whereby the hardware-address-independent operation of the RAID disk array is achieved.
DETAILED DESCRIPTION:
Referring now to Fig. 2, it shows a preferred embodiment of a disk storage system which implements the Level Five RAID disk array of Fig. 1 such that the array operates, in accordance with the present invention, in a hardware-address-independent manner. This disk storage system is comprised of the following components: a set of five disks, one of which is shown in detail as indicated by reference numeral 10; a disk controller 11 which holds the five disks; a digital computer 12 which is coupled to the disk controller; a memory 13 for the computer; and an operator's console 14 for the computer.
Included in the disk controller 11 are a total of ten receptacles for the five disks which make up the RAID disk array; and an example of which receptacles initially hold the disks is indicated in Fig. 2 by five wiggly lines 15a-15e. After the RAID disk array is initially set up, one or more of the disks can be moved to a different receptacle without adversely affecting the operation of the array.
Each of the five disks in the RAID disk array receives a hardware address based on the receptacle into which it is plugged. In Fig. 2, the hardware addresses which are set by the receptacles are shown as T=0, T=l, T=2, . . . T=9. These hardware addresses are set by wiring on a backplane 11a of the disk controller 11.
One particular column of the RAID disk array is stored on each of the disks which plug into the receptacles 15a- 15e. Fig. 2 shows that the disk for column 0 plugs into the receptacle which sets the hardware address for that disk to T=4. Similarly, Fig. 2 shows that the hardware addresses of the disks for columns 1, 2, 3 and 4 respectively are T=0, T=7, T=6, and T=2.
To read a particular data block w X" in column 0 of the RAID disk array, the computer 12 sends the controller 11 a command to read data block " X" from the disk whose hardware address is T=4. Similarly, to write data in block " X" of column 2 of the RAID disk array, the computer 12 sends the controller 11 a command to write block " X" on the disk whose hardware address is T=7. These commands are received and executed by conventional logic circuits which reside on printed circuit boards lib in the controller 11.
To initially set up the Level Five RAID disk array, an operator of the console 14 enters an " initialize array" command, as indicated by step 21 in Fig. 3. Thereafter, the operator uses the console 14 to enter the initial hardware address of each disk in the array and the column which it stores. This is indicated by step 22 in Fig. 3 wherein column 0 is stored on a disk with the hardware address of T=4; column 1 is stored on a disk with the hardware address of T=0; etc.
All of the information that is entered by the operator in steps 21 and 22 is received by the digital computer 12 and processed by a control program 13a which resides in the memory 13. This processing occurs in Fig. 3 with steps 23 and 24.
In step 23, the control program 13a generates five unique identifiers ID0-ID4, one for each disk in the array. Then in step 24, the control program 13 writes the following items on the magnetic media in each disk in the array: a) the unique identifier for that disk along with the number of the column which that disk stores in the array, and b) the unique identifiers for all other disks in the array. An example of the items a) and b) which are written on the magnetic media is indicated by reference numeral 16 in Fig. 2 for the disk 10 which stores column 0.
After step 24 is performed, the control program 13a enters a normal " run" mode, as indicated by reference numeral 25 in Fig. 3. In this run mode, the control program 13a receives and executes read/write commands from a user program 13b which resides in the memory 13. Each read/write command includes a logical address which selects a particular data block in the Level Five RAID disk array. To execute these read/write commands, the control program 13a converts the logical address to a column number and a block number in the array; and it correlates that column to the hardware address of the disk on which the column is stored, using the information that is provided by step 22. Then the control program sends the block number and hardware address to the disk controller. At any time while the control program 13a is in the run mode, the operator of the console 14 can turn off all electrical power to the disk controller 11. This is indicated in Fig. 3 by reference numeral 30. One reason for turning power off is to enable the disks to be removed so that maintenance can be performed on them. Thereafter, the disks normally are inserted back into the same receptacles from which they were removed. However, one or more disks can accidentally be inserted into a different receptacle; and this is indicated as occurring by reference numeral 31 in Fig. 3.
Thereafter, the operator of the console 14 turns power back on to the disk controller 11; and this occurs as step 32 in Fig. 3. Then, in response to power being restored on the disk controller, the control program 13a performs several steps 33-36 which compensate for any movement of the disks from one receptacle to another.
In step 33, the control program 13a selects all of the hardware addresses T=0 thru T=9 which are provided by all of the receptacles in the disk controller 11, and the program 13a attempts to read the unique identifiers and column numbers from any disks which may be inserted into those receptacles. Next, in step 34, program 13a records each hardware address where an attempted read results in the unique identifier and column information actually being read. Then in step 35, program 13a uses the information that is recorded in step 34 to recorrelate all of the columns in the RAID disk array to corresponding hardware addresses for the disks which store those columns.
Thereafter, in step 36, the control program 13a checks to see if all of the disks which make up the Level Five RAID disk array, are present in the receptacles. If all of the disks in the array are not present, then the control program 13a generates an error message, as indicated by reference numeral 37, which identifies the columns in the array for which there are no disks in the receptacles.
If all of the disks in the array are present, then the control program 13a again enters the normal " run" mode, as indicated by step 38. In this " run" mode, the control program receives and executes read/write commands from the user program 13b, just like it previously did in step 25. But now, the control program correlates each column in the RAID disk array to a disk hardware address using the result of steps 33-36, rather than the information provided in step 22. Due to the performance of steps 23-24 and
33-36, the RAID disk array will continue to operate even though one or more disks in the array have been moved from their initial receptacle to another. Further, the disks in the array can subsequently be moved multiple times by the operator via steps 30-31; and for each such movement, control program 13a will enable the array to continue to operate by re-performing steps 33-36.
Turning now to Fig. 4, it shows a second preferred embodiment of a disk storage system which also operates the Level Five RAID disk array of Fig. 1 in a hardware-address -independent manner. This disk storage system is similar to the Fig. 2 system, but it has several differences which are described below. All of the following components are in the Fig. 4 system: a set of five disks, one of which is shown in detail as indicated by reference numeral 40; a disk controller 41 which holds the five disks; a digital computer 42 which is coupled to the disk controller; a memory 43 for the computer; and an operator's console 44 for the computer.
Included in the disk controller 41 are a total of ten receptacles for the five disks which make up the RAID disk array; and an example of which receptacles hold the disks is indicated in Fig. 4 by five wiggly lines 45a- 45e. But in the Fig. 4 system, the hardware address for each of the disks is not set by the receptacle into which the disk is plugged. Instead, each disk in the Fig. 4 system includes a multiposition switch 40a which sets the disk's hardware address. One particular column of the RAID disk array is stored on each of the disks which plug into the receptacles 45a-45e. Fig. 4 shows that the disk for column 0 has a hardware address of T=4, as set by its switch 40a. Similarly, Fig. 2 shows that the hardware addresses of the disks for columns 1, 2, 3 and 4 respectively are T=0, T=7, T=6, and T=2.
To initially set up the Level Five RAID disk array, an operator of the console 44 enters an " initialize array" command, as indicated by step 51 in Fig. 5. Thereafter, the operator uses the console 44 to enter the initial hardware address of each disk in the array and the column which that disk stores. This is indicated by step 52 in Fig. 5 wherein column 0 is stored on a disk with the hardware address of T=4; column 1 is stored on a disk with the hardware address of T=0; etc.
All of the information that is entered by the operator in steps 51 and 52 is received by the digital computer 42 and processed by a control program 43a which resides in the memory 43. This processing begins in Fig. 5 with step 53 in which the control program 43a generates a single unique identifier for the entire RAID disk array.
Thereafter, the control program 43a writes the following items on the magnetic media in each disk in the array: a) the unique identifier for the entire array, b) the number of the column which that disk stores, and c) the total number of disks in the array. This step is indicated by reference numeral 54 in Fig. 5; and an example of the items a) , b) and c) which are written on the magnetic media is indicated by reference numeral 46 in Fig. 4 for the disk 40 which stores column 0.
After step 54 is performed, the control program 43a enters the normal " run" mode, as indicated by reference numeral 55 in Fig. 5. In this run mode, the control program 43a receives and executes read/write commands from a user program 43b; and each such command includes a logical address which selects a particular data block in the RAID disk array. To execute these read/write commands, the control program 43a converts the logical address to a column number and a block number in the array, and it correlates that column to the hardware address of the disk on which the column is stored. Then the control program sends the block number and hardware address to the disk controller.
At any time while the control program 43a is in the run mode, the operator of the console 44 can M hot swap" one or more disks in the disk controller 41. This is indicated in Fig. 5 by reference numerals 60-62. A disk is " hot swapped" by pulling the disk from its receptacle and/or plugging the disk into its receptacle while power is applied to the controller 41. One reason for hot swapping the disks is to enable maintenance to be performed on them. However, in the hot swapping process, the switch 40a on one or more disks can accidentally be moved to a different setting and thereby change the disk's hardware address; and this is indicated as occurring by reference numeral 61 in Fig. 5. Thereafter, the operator of the console 44 sends a " swap complete" command to the computer 42; and this occurs as step 62 in Fig. 5. Then, in response to the swap complete command, the control program 43a performs several steps 63-66 which compensate for any movement of the switches 40a in the disks.
In step 63, the control program 43a selects all of the hardware addresses T=0 thru T=9 which can be set by the switches 40a on the disks 40, and the program 43a attempts to read the information which was written in step 54 from any disks which may have the selected hardware addresses. Next, in step 64, program 43a records each hardware address where an attempted read results in the unique identifier and column information actually being read. Then in step 65, program 43a uses the information that is recorded in step 64 to recorrelate all of the columns in the RAID disk array to corresponding hardware addresses for the disks which store those columns. Thereafter, in step 66, the control program 43a checks to see if all of the disks which make up the Level Five RAID disk array, are present in the receptacles. If all of the disks are present, then the control program 43a again enters the normal " run" mode as indicated by reference numeral 67. Otherwise, program 43a generates an error message, as indicated by reference numeral 68, which identifies the columns in the array for which there are no disks in the receptacles.
Two preferred embodiments of a disk storage system which operate a Level Five RAID disk array in a hardware-address-independent manner have now been described in detail. In addition however, various changes and modifications can be made to these embodiments, and their method of operation, without departing from the nature and spirit of the invention.
For example, in the embodiments of Figs. 2 and 4, the RAID disk array has a total of five columns on which data blocks and parity blocks are arranged as shown in Fig. 1. However, the number of columns in the RAID disk array can be increased or decreased to any number simply by adding or deleting disks to the array. Also, the array can have any number of physical blocks per data chunk. Further, the array can be a Level Three or Level One array, as is described in the reference which is cited in the " Background of the Invention."
Also, in the embodiments of Figs. 2 and 4, the unique identifiers which are written on the disks in the array, as indicated by reference numerals 16 and 46, can have any desired format and can be written at any predetermined location. For example, each identifier can be a 64 -bit number before block 0 on the disk. Similarly, each identifier can be generated by any desired algorithm in step 23 of Fig. 3 and step 53 of Fig. 5. Alternatively, each unique identifier can be selected and entered by the operator as part of the n initialize array" command that is sent in step 21 of Fig. 3 and step 51 of Fig. 5, in which case step 23 of Fig. 3 and step 53 of Fig. 5 would be eliminated.
Accordingly, it is to be understood that the scope of the present invention is not limited to the details of the illustrated preferred embodiments but is defined by the appended claims.

Claims

WHAT IS CLAIMED IS:
1. A method of operating a RAID disk array in a hardware-address-independent manner, wherein a hardware address for each disk in said array is set and changed mechanically without adversely affecting the operation of said array; said method being performed by a program in a controller for said array and including the steps of: writing on a magnetic media in each disk in said array, a number of a column in said array which that disk comprises and a unique identifier which identifies all of the disks in said array; and subsequently, determining which disk hardware addresses correspond to each column in said array by a) selecting a potential hardware address for any one disk in said array, b) attempting to read said unique identifier and column number from said one disk using the selected hardware address, c) repeating said selecting and attempting steps multiple times, and d) correlating which selected hardware addresses result in an actual reading of a column number with said unique identifier.
2. A method according to claim 1 wherein on each particular disk in said array, said unique identifier is different and separately identifies that particular disk as well as each remaining disk in said array.
3. A method according to claim 1 wherein on each particular disk in said array, said unique identifier is the same and identifies said array as a whole plus the total number of disks in said array.
4. A method according to claim 1 wherein said unique identifier is generated automatically by said program.
5. A method according to claim 1 wherein said unique identifier is specified in said command.
6. A method according to claim 1 wherein said controller includes a plurality of receptacles into which said disks plug, and wherein the hardware address of each disk is set by the particular receptacle into which it is plugged.
7. A method according to claim 1 wherein each disk includes a respective switch and wherein the hardware address of each disk is set by its respective switch.
8. A method according to claim 1 wherein steps a) -d) are performed automatically, by said program, after electrical power to said array is turned off and turned back on.
9. A method according to claim 1 wherein steps a) -d) are performed by said program in response to a command.
10. A method according to claim 1 wherein an error message is generated automatically, by said program, if the attempted reads result in an actual reading of said unique identifier from a subset, but not all, of the disks in said array.
11. A method according to claim 1 wherein said program further performs the steps of: a) receiving a command which selects certain data to be read from said array by specifying a logical address; and b) translating said logical address to a hardware address of a disk using the correlated disk address-column numbers from said correlating step.
12. A disk storage system which operates a RAID disk array in a hardware-address-independent manner; said system including a plurality of disks that store respective columns of said array, with each disk having a hardware address that is set and changed mechanically; wherein said system further includes a control program which: writes, on a magnetic media in each disk in said array, the number of the column which that disk stores in said array and a unique identifier which identifies all of the disks in said array; and subsequently, determines which disk hardware addresses correspond to each column in said array by a) selecting a hardware address that potentially corresponds to a column, b) attempting to read said unique identifier and column number from a disk using the selected hardware address, c) repeating said selecting and attempting steps multiple times, and d) correlating which selected hardware addresses result in an actual reading of a column number with said unique identifier.
13. A disk array according to claim 12 wherein on each particular disk in said array, said unique identifier separately identifies that particular disk as well as each remaining disk in said array.
14. A disk array according to claim 12 wherein on each particular disk in said array, said unique identifier identifies said array as a whole plus the total number of disks in said array.
15. A disk, for use in a RAID disk array which is hardware-address-independent, wherein said disk is comprised of a magnetic media which stores - 1) a number of a column in said array which said disk comprises, and 2) a unique identifier which identifies all of the disks in said array.
PCT/US1998/013423 1997-06-27 1998-06-26 Method of operating a raid disk array in a hardware-address-independent manner, and disk storage system which performs such method WO1999000722A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU82705/98A AU8270598A (en) 1997-06-27 1998-06-26 Method of operating a raid disk array in a hardware-address-independent manner, and disk storage system which performs such method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US88460497A 1997-06-27 1997-06-27
US08/884,604 1997-06-27

Publications (1)

Publication Number Publication Date
WO1999000722A1 true WO1999000722A1 (en) 1999-01-07

Family

ID=25384983

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US1998/013423 WO1999000722A1 (en) 1997-06-27 1998-06-26 Method of operating a raid disk array in a hardware-address-independent manner, and disk storage system which performs such method

Country Status (2)

Country Link
AU (1) AU8270598A (en)
WO (1) WO1999000722A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140181455A1 (en) * 2012-12-20 2014-06-26 Apple Inc. Category based space allocation for multiple storage devices

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0467079A2 (en) * 1990-06-19 1992-01-22 Fujitsu Limited Disc array storage system
EP0541996A2 (en) * 1991-11-15 1993-05-19 Fujitsu Limited Checking for proper locations of storage devices in a storage device array
US5511227A (en) * 1993-09-30 1996-04-23 Dell Usa, L.P. Method for configuring a composite drive for a disk drive array controller
US5632027A (en) * 1995-09-14 1997-05-20 International Business Machines Corporation Method and system for mass storage device configuration management

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0467079A2 (en) * 1990-06-19 1992-01-22 Fujitsu Limited Disc array storage system
EP0541996A2 (en) * 1991-11-15 1993-05-19 Fujitsu Limited Checking for proper locations of storage devices in a storage device array
US5511227A (en) * 1993-09-30 1996-04-23 Dell Usa, L.P. Method for configuring a composite drive for a disk drive array controller
US5632027A (en) * 1995-09-14 1997-05-20 International Business Machines Corporation Method and system for mass storage device configuration management

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140181455A1 (en) * 2012-12-20 2014-06-26 Apple Inc. Category based space allocation for multiple storage devices

Also Published As

Publication number Publication date
AU8270598A (en) 1999-01-19

Similar Documents

Publication Publication Date Title
JP3242671B2 (en) Method for increasing the storage capacity of a level 5 RAID disk array, and an extended array made by such a method
US8468301B2 (en) Writing of data on an array of storage devices with controlled granularity
US6101615A (en) Method and apparatus for improving sequential writes to RAID-6 devices
JP3226370B2 (en) Improvements on high availability disk arrays
US5754756A (en) Disk array system having adjustable parity group sizes based on storage unit capacities
US6374389B1 (en) Method for correcting single bit hard errors
US6070249A (en) Split parity spare disk achieving method in raid subsystem
US4359771A (en) Method and apparatus for testing and verifying the operation of error control apparatus within a memory
JP3310006B2 (en) Computer system
KR19980024095A (en) Method and device for automatic configuration of storage subsystem
US5630054A (en) Method and apparatus for storing and retrieving error check information
EP1116114B1 (en) Technique for detecting memory part failures and single, double, and triple bit errors
CA1117661A (en) Error correcting systm for serial by byte data
JPS6237422B2 (en)
US20030204774A1 (en) Method for reducing data/parity inconsistencies due to a storage controller failure
WO1999000722A1 (en) Method of operating a raid disk array in a hardware-address-independent manner, and disk storage system which performs such method
US6829657B1 (en) Method to support general enclosure wiring when associating SES data with physical devices on a fiber channel loop with soft addresses
US5893164A (en) Method of tracking incomplete writes in a disk array and disk storage system which performs such method
US6418508B1 (en) Information storage controller for controlling the reading/writing of information to and from a plurality of magnetic disks and an external device
US7526714B2 (en) Apparatus for checking data coherence, raid controller and storage system having the same, and method therefor
WO2001096976A2 (en) Method of controlling data access and system thereof
US5146458A (en) Data transfer checking system
JPH08171463A (en) Data read method in disk array device, and disk array device
US5619481A (en) Information recording/reproducing method
JP3461473B2 (en) Self-diagnosis system and method for main storage device

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AU JP KR

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

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
NENP Non-entry into the national phase

Ref country code: JP

Ref document number: 1999505826

Format of ref document f/p: F

122 Ep: pct application non-entry in european phase