WO2003041329A9 - Data mirroring between controllers in an active-active controller pair - Google Patents

Data mirroring between controllers in an active-active controller pair

Info

Publication number
WO2003041329A9
WO2003041329A9 PCT/US2002/035160 US0235160W WO03041329A9 WO 2003041329 A9 WO2003041329 A9 WO 2003041329A9 US 0235160 W US0235160 W US 0235160W WO 03041329 A9 WO03041329 A9 WO 03041329A9
Authority
WO
WIPO (PCT)
Prior art keywords
message
controller
minoring
data
metadata
Prior art date
Application number
PCT/US2002/035160
Other languages
French (fr)
Other versions
WO2003041329A2 (en
WO2003041329A3 (en
Inventor
Richard W Busser
Ian R Davies
Original Assignee
Chaparral Network Storage Inc
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 Chaparral Network Storage Inc filed Critical Chaparral Network Storage Inc
Priority to AU2002340354A priority Critical patent/AU2002340354A1/en
Publication of WO2003041329A2 publication Critical patent/WO2003041329A2/en
Publication of WO2003041329A9 publication Critical patent/WO2003041329A9/en
Publication of WO2003041329A3 publication Critical patent/WO2003041329A3/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
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2089Redundant storage control functionality
    • 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
    • G06F2003/0697Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers device management, e.g. handlers, drivers, I/O schedulers

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)
  • Hardware Redundancy (AREA)

Abstract

A data storage system (400) that includes first and second controllers ( 404,408) is provided. Data is mirrored from one controller (404) to the other controller (408) according to different steps depending on the amount of data to be mirrored. When the data to be mirrored is less than or equal to a predetermined number of bytes, one less interrupt is generated than when the data to be mirrored is greater than the predetermined number of bits.

Description

DATA MIRRORING BETWEEN CONTROLLERS IN AN ACTIVE-ACTIVE CONTROLLER PAIR
FIELD OF THE INVENTION The present invention relates to performance enhancements for redundant array of inexpensive disks (RAID) storage systems and more particularly to a method and system for enhancing performance of mirroring operations between controllers in an active-active controller pair.
BACKGROUND OF THE INVENTION
A typical data processing system generally includes one or more storage units or devices which are connected to a host computer either directly or through a control unit and a channel. The function of the storage units is to store user data and other information (e.g., program code) which the host computer uses in performing particular data processing tasks. Various types of storage units are used in current data processing systems . A typical system may include one or more large capacity tape units and/or disk drives connected to the system through respective control units for storing data. However, a problem exists if one of the storage units fails such that information contained in that unit is no longer available to the system. Generally, such a failure will shut down the entire computer system, which can create a problem for systems which require data storage systems to have high availability.
This problem has been overcome to a large extent by the use of Redundant Array of
Inexpensive Disks (RAID) systems. RAID systems are widely known, and several different levels of RAID architectures exist, including RAID 1 through RAID 5, which are also widely known. A key feature of a RAID system is redundancy, which is achieved through the storage of a data file over several disk drives and parity information stored on one or more drives. If one disk drive fails, then the RAID system is able to reconstruct the data which was stored on the failed drive from the remaining drives in the array.
High availability is a key concern because in many applications users rely heavily on the user data stored on the RAID system. In these type of applications, unavailability of data stored on the RAID system can result in significant loss of revenue and/or customer satisfaction. Employing a RAID system in such an application enhances availability of the stored user data, since if a single disk drive fails, user data may still be stored and retrieved from the system. In addition to the use of a RAID system, it is common to use redundant RAID controllers to further enhance the availability of such a storage system. In such a situation, two or more controllers are used in a RAID system, where if one of the controllers fails the other remaining controller will assume operations for the failed controller. Such a platform enhances the availability of a RAID system because the system can sustain a failure of a controller and continue to operate. When using multiple controllers, each controller may 5 conduct independent read and write operations simultaneously, known as active-active configuration. It can be advantageous in many applications to use the active-active configuration, as such a RAID system can support higher rates of data transfer between the disks and host. However, employing an active-active configuration requires mirroring of user data and parity between controllers to maintain redundancy, such that if one controller 0 fails, the remaining controller can continue operations of the system without any user data loss.
With reference to Fig. 1, a RAID system 10 having an active-active controller pair is described. The RAID system 10 is connected to a host computer 14 through a host channel 18. The RAID system 10 includes a first active controller 22, a second active controller 26, 5 and a disk array 30. The disk array 30 is connected to the first active controller 22 and the second active controller 26 by a disk channel 34. The disk array 30 contains a number of disk drives 42, 46, 50, 54, 58, that are used for data storage. Within the first active controller 22, there is a processor 62 and a nonvolatile random access memory (NNRAM) 66 which has a first region 70 and a second region 74. Within the second active controller 26 there is a O processor 78 and a ΝNRAM 82 which has a first region 86 and a second region 90. It should be understood that the number of drives shown in Fig. 1 are for the purpose of discussion only, and that a RAID system 10 may contain more or fewer disk drives than shown in Fig. 1. User data is written to the disk array 30 in such a way that if one drive fails, user data can continue to be read from and written to the disk array 30. How this redundancy is 5 accomplished depends upon the level of RAID architecture used, and is well known in the art.
When storing user data, generally, a controller receives the user data and breaks the user data down into chunks which will be stored on the individual disk drives 42, 46, 50, 54, 58. A chunk of data is the portion of the user data that can be stored on an individual disk O drive. The chunks of data are then arranged to be stored on the drives 42, 46, 50, 54, 58. In arranging the chunks of data, the controller organizes the chunks into stripes and generates parity for each stripe. The chunks of data are written across several drives, and the parity for that stripe is written to one disk drive.
As mentioned above, when using an active-active controller pair in a RAID system, in order to maintain redundancy, data and parity must be mirrored between the controllers in the active-active system, h such a system, when the host computer 14 sends user data to be written to the disk array 30, the user data is typically sent to either the first active controller 22, or the second active controller 26. Which controller the user data is sent to depends upon a number of factors, including the LUN the user data will be written to. A LUN is a SCSI term referring to a unit containing addressable storage, with each controller typically being assigned to or owning one or more of a number of LUNs . Thus, if the user data is to be written to a LUN that the first active controller 22 owns, the user data is sent to the first active controller 22. Likewise, if the user data is to be written to a LUN that the second active controller 26 owns, the user data is sent to the second active controller 26. In order to maintain redundancy between the two controllers 22, 26, the user data sent to the first active controller 22 must be copied onto the second active controller 26. Likewise, any user data sent to the second active controller 26 is copied onto the first active controller 22. The user data is copied between controllers because, for example, if the first active controller 22 suffers a failure, the second active controller 26 can then use the copy of the user data to complete any data writes which were outstanding on the first active controller 22 when it failed. This process of copying user data, as well as parity, between active controllers is known as mirroring.
Mirroring in such a system is typically necessary because when the host 14 sends user data to be written, the controller that receives the user data, stores the user data in a memory location, and sends a reply to the host 14 that the write is complete. Thus, even though the user data may not have been written to the disk array 30, the host 14 is notified that it has been written. If the controller that received the user data subsequently suffers a failure prior to writing the user data to the disk array 30, the data can be lost. However, if the controller mirrors the user data prior to sending the host 14 a reply that the data has been written, a failure of the controller can still be recovered without loss of the data, using the copy of the user data that was mirrored to the other controller. In many RAID applications, the controller(s) communicate with the host computer and disks using a Small Computer System Interface (SCSI) bus architecture. SCSI systems are widely available, with a variety of SCSI controllers available. Different components within a SCSI system communicate using either SCSI commands, or SCSI data transfers. SCSI commands are generally 10 byte or 12 byte command blocks, with command blocks of up to 16 bytes (128 bits) available in certain applications. Many SCSI controllers can process SCSI commands of up to 12 bytes without having to treat the command in a special manner, hi these types of systems, SCSI commands of greater than 12 bytes are treated differently, often requiring processor attention for each individual byte of command beyond 12 bytes.
SCSI data transfers are used to transfer data between components in a SCSI system. A SCSI data transfer is generally required when a block of data needs to be transfened. When initiating a SCSI data transfer, the SCSI controller receiving the data transfer must be notified that the data is coming, in order to prepare to receive the data. Thus, a data transfer in a SCSI system in generally at least a two step process, a SCSI command is first sent to the receiving SCSI controller, followed by one or more SCSI data transfers.
When mirroring data between controllers 22, 26, several operations are performed by each controller 22, 26. With reference now to Fig. 2, a flow chart representation of a data mirroring operation is described. Initially, indicated by block 200, the host computer 14 sends user data to the first active controller 22, which opens a write operation. Next, as noted by block 204, the first active controller 22 sends a notification mirror message, which causes an interrupt, to the second active controller 26, notifying the second active controller 26 that data is going to be mirrored. An interrupt is a signal sent from a device, in this example the first active controller 22, to a processor, in this example the processor 78 portion of the second active controller 26, which causes the processor 78 to stop what it is doing and service the interrupt. When the second active controller 26 receives the interrupt, it discontinues any processing activity, and processes the notification mirror message. The notification mirror message is a SCSI command, and will be described in more detail below. Next, as indicated by block 208, the first active controller 22 sends a metadata mirror message including metadata, which causes an interrupt, to the second active controller 26. The metadata mirror message is a data transfer between controllers, will be described in more detail below. The second active controller 26 then marks its NNRAM 82 as invalid for the data blocks specified in the metadata, as noted by block 212. Next at block 216, the first active controller 22 sends a data mirror message containing the user data, which causes an interrupt, to the second active controller 26. The data minor message is a data transfer between controllers, which contains the actual user data. The second active controller 26 receives the user data, stores it in the appropriate NNRAM 82 location, marks the ΝNRAM 82 as valid for the associated data blocks, as indicated by block 220. At block 224, the second active controller 26 sends a status message to the first active controller 22, indicating that the data was received and stored. The first active controller 22 upon receiving the status message sends the host computer 14 an indication that the write is complete, and terminates the write operation as noted by block 228. The first active controller 22, at block 223, then writes the user data to the disk array 30. As can be seen from this example, the controller receiving the mirrored data receives at least four interrupts. At least two interrupts associated with data transfers between controllers, and two interrupts associated with SCSI commands which indicate minoring operation are starting or are complete. As will be understood by those of skill in the art, a processor may disconnect during a data transfer, h such a situation, the sending controller will, after a predetermined time, resume sending the data, causing an additional interrupt. Thus, the minimum number of interrupts associated with a data transfer as described will be four interrupts, with additional interrupts possible if there are discomiects between the controllers when data is being transferred.
As described above with reference to block 208, the first active controller 22 sends a notification mirror message, which causes an interrupt, to the second active controller 26. The notification minor message serves to simply place the second active controller 26 on notice that metadata is going to be mhrored. A separate notification mirror message is required because, as described above, prior to the metadata minor message, the second active controller 26 needs to be aware a data transfer is coming. The notification mirror message is typically a 10 byte SCSI command, with the first byte containing a predefined hexadecimal number, for example 3C. When the second active controller 26 receives the notification mirror message and interrupt, it discontinues any operations that it was conducting to service the interrupt. The second active controller 26 then processes the notification mirror message and reads the hexadecimal number in the first byte. When the second active controller 26 reads the predefined hexadecimal number, 3C in this example, it recognizes this as a mirror notification command, and disregards the remaining 9 bytes of the notification mirror message. The second active controller 26 then prepares to receive the data transfer of the metadata mirror message from the first active controller 22. With reference now to Fig.3, a metadata minor message 300 is now described. The metadata mirror message 300 is a SCSI data transfer, which contains a first data region 304 and a second data region 308. The first data region 304 in this example is a 512 byte structure which contains several information fields. The information fields of the first data region 304 include a 16-bit message type 312 field, which contains information which indicates that the message contains metadata. The next field is a 16-bit message length 316 field, which contains information on the length of the cunent message. Following the message length 316 field, is a 32-bit sequence information 320 field, which in one example contains a number which is incremented during each mirror message, and is primarily used for troubleshooting purposes. The next field is a 32-bit starting logical block address (LBA) 324 field, which contains the starting LBA in the disk anay 30 where the user data will be written. Following the starting LBA 324 field is a 32-bit number of blocks 328 field, which contains information on the number of blocks of user data to be mirrored. The next field is an 8-byte array serial number 332 field. In many applications, the disk anay 30 contains several anays of disk drives, with each array of disk drives having a unique anay serial number. The array serial number field 332 contains the serial number of the anay to which the user data is to be written. Following the anay serial number field 332 is an 8-bit memory region field 336, which contains information on the region of NNRAM 66 that the data is to be stored in, the first region 86 or the second region 90. Following the memory region 336 field is an 8-bit anay number 340 field, hi many applications, each array of disk drives within the disk anay 30 may contain several RAID anays. Each RAID anay is given an anay number, such that if a controller 22, 26 knows the anay serial number and anay number, it can read and write data to and from the appropriate RAID anay. Following the anay number field 340, is a portion 344, which may contain data, used to fill out the 512 byte transfer. The second data region 308 contains a 512 byte scatter/gather list 348. The scatter/gather list 348 is a list of scatter/gather elements 352. In the example of Fig. 3, the scatter/gather list 348 contains 64 scatter/gather elements 352. Each scatter/gather element 352 contains a 32-bit starting address field 356 and a 32-bit byte count field 360. The starting address field 356 contains the 32-bit address within the NNRA 82 where the associated data will be stored. The byte count field 360 contains information on the number of bytes contained in the associated data. Thus, using the starting address field 356 and the byte count field 360, the portion of ΝNRAM 82 where the associated data will be stored is uniquely defined. Each scatter/gather element 352 is able to define the storage area for 16 Kbytes of user data. Thus, in the example shown, the metadata minor message 300 can provide metadata for up to 1 Mbyte of user data. If more than 1 Mbyte of user data is sent to the controller 26 for storage, the controller 26 breaks the user data into separate pieces which are 1 Mbyte or less. The controller 26 uses the information contained in each scatter/gather element 352 to mark the appropriate portions of ΝNRAM 82 as invalid.
As mentioned above, the processor on the receiving controller is interrupted at least four times for each data write that is minored to it. Servicing these interrupts can take a significant portion of the processing resources of a controller. Additionally the metadata minor message is 1 Kbyte, regardless of the size of the data write. Thus, for example, if 512 bytes of user data are received at the first active controller 22, the metadata minor message will be 1 Kbyte. As can be seen, for small writes, minoring a 1 Kbyte metadata message can be inefficient. Furthermore, when minoring data, the controllers 22, 26 send the data over the disk channel 34, which typically have a maximum bandwidth of 160 IVIb/s. When a RAID system is receiving many read and write requests from the host 14, the disk channel 34 can become bandwidth limited, increasing the time required to complete a read or write operation.
The occunence of small writes is common in many applications, such as financial, reservation and retail systems, where relatively small data records are widely used and are accessed and modified at random. These applications are often very active as well, with many read and write requests sent to the RAID system within relatively short time periods. In these types of applications, it would be especially advantageous to reduce the processor overhead required for servicing interrupts, and to reduce the disk channel bandwidth used for minoring data. Thus, it would be advantageous to have a method and apparatus which (1) reduces the number of interrupts the processor of a receiving controller receives during minoring operations, and (2) consumes less channel bandwidth when minoring data between controllers of an active-active controller pair.
SUMMARY OF THE INVENTION The present invention provides a system and method for minoring data between controllers in an active-active controller pair. The system includes a first controller and a second controller. The first controller generates one of a first message or a second message depending on the amount of data to be sent by the first controller as part of a first minoring operation. The second controller receives the data sent from the first controller. The first message includes all of the metadata for the first minoring operation, and the second message includes less than all of the metadata for the first mirroring operation and typically has no metadata. One of the first message and the second message is the first communication from the first controller to the second controller for the first mirroring operation.
In one embodiment, the first message includes metadata and the number of bits contained in the first message relates to small system computer interface (SCSI) protocol. The first message includes metadata and command related information and, in one embodiment, the first message is no greater than 128 bits in length. When the second message is generated, the metadata is sent to the second controller in a metadata message, which is different than the first and second message. In one embodiment, when the first minor message is generated, the first minoring operation is associated with a first number of interrupts, and when the second message is sent, the first minoring operation is associated with a second number of interrupts, with the second number of interrupts being greater than the first number of interrupts.
The method for providing enhanced minoring between controllers of an active-active controller pair includes providing a message that includes metadata by a first controller to a second controller. The message including the metadata is less than 200 bits in length and is part of a first minoring operation. After the first message is provided, the first minoring operation is continued. In one embodiment, the first controller determines whether the data associated with the first minoring operation is no greater than a predetermined number of bits. In one embodiment, the predetermined number of bits is no greater than 32 Kbytes. In another embodiment, the first controller communicates with the second controller using SCSI protocol and the number of bits in the message relates to the SCSI operations. Following the first message, the first controller continues the first minoring operation by sending the second controller a second message that includes the data. In one embodiment, the message sent by the first controller is the first message sent by the first controller to the second controller for the first minoring operation. In one embodiment, the first controller determines that second data associated with a second minoring operation has a greater number of bits than a predetermined number of bits, and sends a second message to the second controller that does not include metadata. The minimum number of interrupts to complete the second minoring operation is greater than the minimum number of interrupts to complete the first minoring operation.
In yet another embodiment, a method for minoring data between two controllers in a storage system includes making a detennination related to the contents of a message to be sent by a first controller to a second controller as part of a first minoring operation. A message is produced having contents that depend on the results of the determination. When the first controller determines that data to be sent is less than or equal to a predetermined number of bits, the message includes metadata. When the first controller determines that the data is greater than the predetermined number of bits, at least less than all of the metadata associated with the first minoring operation is included with the message. The message is sent to the second controller and the second controller recognizes whether the message includes the metadata, h one embodiment, the message is the first message sent by the first controller to the second controller as part of the first minoring operation, h this embodiment, the message causes a first interrupt to the second controller when the message includes metadata, and the first interrupt is one of at least three interrupts, with three interrupts being the minimum number of interrupts required to complete the first minoring operation. In one embodiment, the first controller communicates with the second controller for the first minoring operation using a SCSI protocol, and the predetermined number of bits depends on SCSI protocol operations. Based on the foregoing, several benefits of the present invention are readily seen. The system causes fewer interrupts to the second controller when the data is less than or equal to the predetermined number of bytes, which may result in enhanced perfonnance of the second controller. The system and method may also consume less channel bandwidth when conducting minoring operations.
Additional advantages of the present invention will become readily apparent from the following discussion, particularly when taken together with the accompanying drawings.
BRIEF DESCRIPTION OF THE DRAWINGS Fig. 1 is a block diagram representation of traditional memory storage system; Fig. 2 is a flow chart representation of the steps taken to minor data between controllers of an active-active controller pair;
Fig.3 is a block diagram representation of the information fields of a metadata minor message;
Fig. 4 is a block diagram representation of a memory storage system of the present invention; Fig. 5 is a flow chart representation of the steps taken to minor data between controllers in an active-active controller pair of the present invention;
Fig. 6 is a block diagram representation of the information fields contained in a 12 byte command data block; and
Fig. 7 is a flow chart representation of the steps a controller takes when determining whether to use a small write minor message.
DETAILED DESCRIPTION Fig.4 is ablock diagram representation of a RAID storage system 400 utilizing a first active controller 404 and a second active controller 408, which communicate with a disk anay 412. The RAID storage system 400 communicates with a host computer 416 through a host channel 418. Within each active controller 404, 408, there is a processing portion 420, a nonvolatile random access memory (NVRAM) portion 424, and an anay table portion 427 which contains anay serial numbers. The NVRAM 424 contains two regions, a first region 425 and a second region 426, which perform functions similar to those as described above with respect to the first and second memory regions of Fig. 1. The disk anay 412 includes a number of disk drives 428, which are used for data storage. The first active controller 404, and the second active controller 408 communicate with the disk anay 412 through a disk channel 432.
With reference now to Fig. 5, a flow chart representation of minoring commands using the present invention is now described. Initially, indicated by block 500, the host computer 416 sends data to the first active controller 404, which opens a write operation. Next, as noted by block 504, the first active controller 404 determines whether the metadata associated with the user data can be minored using a small write minor message. This determination, as well as the structure and contents of the small write minor message will be described in detail below. If a small write minor message cannot be used, the first active controller 404 sends a notification minor message, which causes an interrupt to the second active controller 408, notifying the second active controller 408 that data is going to be minored, as noted by block 508. The contents of the notification minor message are similar to the contents of the notification minor message described above with respect to Fig. 2. Next, as indicated by block 512, the first active controller 404 sends a metadata minor message including metadata, which causes an interrupt to the second active controller 408. The contents of the metadata minor message are similar to the contents of the metadata minor message described above with respect to Figs. 2 and 3. The second active controller 408 then marks its NVRAM 424 as invalid for the data blocks specified in the metadata, as noted by block 516. Next at block 520, the first active controller 404 sends a data minor message containing the user data, which causes an interrupt to the second active controller 408. The second active controller 408 receives the user data, stores it in the appropriate NNRAM 424 location, and marks the ΝNRAM 424 as valid for the associated data blocks, as indicated by block 524. The second active controller 408 sends a status message back to the first controller, as indicated by block 528. The first active controller 404 upon receiving the status message sends the host computer 416 an indication that the write is complete, and terminates the write operation, as noted by block 532. The first active controller 404, at block 536, writes the user data to the disk anay.
If the first active controller 404 determines that the metadata can be minored using a small write minor message, the first active controller 404 generates the small write minor message, as noted by block 540. Following the generation of the small write minor message, the first active controller 404 sends the small write minor message, which causes an interrupt, to the second active controller 408, as indicated by block 544. The small write minor message, as will be described in more detail below, is a single SCSI command which includes information which allows the second active controller 408 to be placed on notice that data will be minored, and also allows the second active controller 408 to determine 5 metadata information for the user data. Following the sending of the small write minor message, the same operations are completed as described with respect to block 516 through block 536. As can be seen, when using a small write minor message, the processor 420 of the second active controller 408 is interrupted a minimum of three times, as oppo sed to being interrupted a minimum of four times when the small write minor message is not used. O As noted above, if the user data cannot be minored using a small write minor message, the first active controller 404 sends a notification minor message, which causes an interrupt, to the second active controller 408. As described above, the notification minor message is a SCSI command which serves to simply place the second active controller 408 on notice that data is being minored. hi one embodiment, the notification mirror message 5 is a 10 byte SCSI command, with the first byte containing the hexadecimal number 3C. When the second active controller 408 receives the notification minor message and reads the 3C hexadecimal number it recognizes this as a minor notification command. The second active controller 408 then prepares to receive the metadata minor message from the first active controller 404. O With reference now to Figs. 3 and 6, a small write minor message 600 is now described. Fig. 6 is a block diagram representation of one embodiment of the small write minor message 600. In this embodiment, the small write minor message 600 is a 12 byte command data block (CDB) custom SCSI command which includes fields to encode all the information contained in the notification minor message and metadata mirror message. The 5 small write minor message 600 contains information which the controllers 404, 408 can decode to detennine the information contained in a metadata minor message 300. In the embodiment of Fig. 6, the equivalent of two scatter gather elements 352 can be encoded into the small write minor message 600. Since each scatter/gather element contains metadata for up to 16 Kbytes of user data, a small write minor message 600 can contain metadata for up O to 32 Kbytes of user data.
Several of the fields described above with respect to the metadata mirror message 300 are modified in order to encode all of the necessary information into the 12 byte CDB. The first field of the small write mirror message 600 is an 8-bit opcode field 604. The opcode field 604 contains infonnation related to the message type, and the region in NNRAM 424 where the associated data will be written. In one embodiment, there are two different opcodes which may be sent in the opcode field 604, a first opcode (hexadecimal A0) used by the first active controller 404 when minoring data to the second active controller 408, and a second opcode (hexadecimal BO) used by the second active controller 408 when minoring data to the first active controller 404. Each opcode contains appropriate information regarding whether the first region 425 or the second region 426 of the ΝVRArVΪ 424 will be used for storage of the minored data. The scatter/gather elements are also modified in the small write mirror message 600.
In one embodiment, each active controller 404, 408 can support a maximum of 128 Mbytes of ΝNRAM 424. The minimum data transfer size supported by the controllers 404, 408 in this embodiment is 512 bytes. This means that there are 262,144 possible starting destination addresses (128MB/512B=262,144) within the ΝNRAM 424. Thus, each 32 bit starting address within the ΝNRAM 424 can be encoded into an 18 bit descriptor. This descriptor can then be used to define the 32 bit starting address field 356. hi one embodiment, a 20 bit descriptor is used. This descriptor can be used to encode up to 512 Mbyte of ΝVRAM 424 starting addresses, thus allowing for system memory upgrades without a requirement for significant changes in the software used for small write minoring. The byte count field 360 described above is also encoded differently using the small write minor message 600. In the embodiment of Fig. 6, the controller generating the small write minor message 600 determines the number of blocks the data for each scatter/gather element. When determining the blocks of data, the controller divides the number of bytes in the associated data by 512 bytes. The result is the number of blocks the data will occupy in the other controller's ΝNRAM 424. Each block is defined as 512 bytes because, as described above, the minimum write size supported by the controllers of this embodiment is 512 bytes, which is used to define the number of possible starting locations in ΝNRAM 424. The number of blocks is then recorded as a 6 bit block count.
Additionally, as described above, the disk anay 412 may include more than one anay of disks, and each anay of disks can include more than one RAID anay. As described above with respect to the metadata mirror message 300, anay serial number and anay number each have an 8 byte field, hi one embodiment, each controller 404, 408 creates an anay serial number table 427. The anay serial number table 427 contains information on each controller's 404, 408 anay serial numbers and anay numbers, which is then encoded into an 8 bit volume number for each controller 404, 408. Thus, in this embodiment, each controller 404, 408 can support up to 256 RAID anays. The anay table 427 only changes when an anay is added or deleted from a controller 404, 408, and gets updated each time such an event occurs. The controllers 404, 408 can use this 8 bit volume number to look up the anay serial number and the anay number that data is to be written to from the anay table 427.
Referring again to Fig. 6, the remaining fields of the 12 byte small write minor message 600 are now described. Following the above described opcode field 604, is a 4 bit cache element index high field 608, which contains the upper four bits of both 20 bit descriptors. Next is a 6 bit first scatter/gather element block count 612 field, followed by a 6 bit second scatter/gather element block count 616 field. Next is a 8 bit volume number 620 field, containing the volume number which is used to obtain the anay serial number and anay number from the anay table. Following the volume number 620 field is a 16 bit cache element index low 624 field, which contains the lower 16 bits of the 20 bit descriptor for the first scatter/gather element. Next is a 16 bit cache element index low2 628 field, which contains the lower 16 bits of the 20 bit descriptor for the second scatter/gather element. Finally, there is a 32 bit starting LBA 532 field, which contains the starting LBA location in the disk anay that the user data is to be written to. It will be understood that the above- described fields may be recorded into the small write minor message 600 in any sequence, and the small write minor message 600 is not limited to the sequence of fields as described in this embodiment.
As noted above with respect to block 504 of Fig. 5, prior to generating and sending a small write minor message, the first active controller 404 must determine if a small write minor message can be used. With reference now to Fig.7, a flow chart representation of the steps a controller takes to make this determination is described. As noted by block 700, the first active controller 404 first determines the number of scatter/gather elements which will be used in the metadata. If this number is greater than two, the large write minoring is used, as noted by block 704. As used here, large write minoring is the minoring as described with respect to blocks 508 through 536 of Fig.5. If the first active controller 404 determines that two or less scatter gather elements are required for the scatter/gather list, it then determines if the system is in an enor recovery mode, such as a recovery from a controller failure, as noted by block 708. If the system is in an enor recovery mode, the large write minor message is used, as indicated by block 704. If the system is not in an enor recovery mode, the first active controller 404 then determines if the second active controller 408 has been initialized, as noted by block 712. If the second active controller 408 has not been initialized, the first active controller 404 assumes that the anay table 427 is not cunent, and the large write minor message is used, as noted by block 704.
If the second active controller 408 has been initialized, the first active controller 404 detennines if the 20 bit descriptors contain common values for the upper four bits, as noted by block 716. As described above with respect to Fig. 6, the 20 bit descriptors are recorded in the small write minor message 600 in two separate fields. The upper four bits for each 20 bit descriptor are stored in a common field, with the lower 16 bits for each descriptor stored in separate fields, h most instances, the upper four bits of the 20 bit descriptors will be common, because the difference in the starting NVRAM 424 LBA for both scatter/gather elements will generally be relatively small, thus the most significant four bits of the 20 bit descriptor will generally be common to both descriptors. However, in some instances the upper four bits of each descriptor may not be common. In these cases, the small write minor message of the embodiment shown in Fig.6 cannot be used to minor metadata information, and the large write minor message is used, as noted by block 704. In making this determination, the controller computes the 20 bit descriptors, and the upper four bits are compared. If the upper four bits of each descriptor are common, the small write minor message is used, as noted by block 720. It should be noted that one 18 bit field for each descriptor could be used, rather than a 20 bit descriptor of the embodiment shown in Fig. 6. This would allow the small write mirror message to be used even when the most significant bits of the descriptors are not common, although it would not allow for increases in the amount of NVRAM within a controller.
It should be understood that the above description is one prefened embodiment of the present invention, and that several alternative embodiments are also available. For example, a CDB of greater than 12 bytes could be used to encode the metadata information. This would allow the possibility of using a small write minor message for user data which is greater than 32 Kbytes, and up to 64 Kbytes. In the prefened embodiment described above, a 12 byte CDB is used based on limitations present in common ASIC SCSI controller implementations. As mentioned above, many SCSI controllers are able to accept SCSI commands of varying sizes, with common command sizes being 10 bytes and 12 bytes, and a maximum command size being 16 bytes. If a SCSI command is greater than 12 bytes, many SCSI controllers must perform additional functions in order to receive and process the SCSI command. Thus, if a larger CDB is used, the performance enhancements resultant from the reduced interrupts may be negated by the additional processing associated with the larger SCSI command. However, if an application uses a SCSI controller which is capable of receiving a SCSI command of larger than 12 bytes without having to perfor additional functions, a larger CDB can be used with additional fields to encode metadata for more than 32 Kbytes of user data. Additionally, in certain applications it may be advantageous to use a larger CDB even with a SCSI controller which must perform additional functions to receive the command, such as an application where gains are achieved when the amount of minored data is reduced. Such alternative implementations are considered to be well within the ability of one of ordinary skill in the art.
The foregoing discussion of the invention has been presented for purposes of illustration and description. Further, the description is not intended to limit the invention to the form disclosed herein. Consequently, variations and modifications commensurate with the above teachings, within the skill and knowledge of the relevant art, are within the scope of the present invention. The embodiments described hereinabove are further intended to explain the best modes presently known of practicing the inventions and to enable others skilled in the art to utilize the inventions in such, or in other embodiments, and with the various modifications required by their particular application or uses of the invention. It is intended that the appended claims be construed to include alternative embodiments to the extent permitted by the prior art.

Claims

What is claimed is:
1. A method for minoring data using two controllers in a storage system, comprising: providing a message that includes metadata by a first controller to a second controller and in which said message including said metadata is not greater than 128 bits, with said message being part of a first minoring operation; and continuing with said first mirroring operation after said providing step.
2. A method, as claimed in Claim 1, wherein: said providing step includes determining that data associated with said first minoring operation is not greater than a predetermined number of bytes.
3. A method, as claimed in Claim 2, wherein: said determining step includes ascertaining by said first controller that said data associated with said first minoring operation is no greater than 32 Kbytes.
4. A method, as claimed in Claim 2, wherein: said first controller communicates with a second controller using a Small Computer
System Interface (SCSI) protocol and in which said predetermined number of bits in said message relates to said Small Computer System Interface (SCSI) protocol.
5. A method, as claimed in Claim 2, wherein: said continuing step includes sending said second controller a second message that includes said data.
6. A method, as claimed in Claim 5, wherein: said continuing step includes sending a write complete message related to completion of said first minoring operation.
7. A method, as claimed in Claim 1, further comprising: determining that second data associated with a second minoring operation has a greater number of bits than a predetermined number of bits and sending a second message to said second controller that does not include metadata.
8. A method, as claimed in Claim 1, wherein: said message is the first message sent by said first controller to said second controller for said first minoring operation.
9. A method, as claimed in Claim 1, wherein: said message causes a first interrupt to said second controller and the minimum number of interrupts to said second controller for said first minoring operation is three interrupts.
10. A method for minoring using two controllers in a storage system, comprising: making a determination related to contents of a message to be sent by a first controller to a second controller as part of a first minoring operation; and producing said message having contents that depends on said making step wherein, when said making step determines that data to be sent is less than or equal to predetermined number of bits, said message includes metadata and when said making step detennines that said data is greater than said predetermined number of bits, at least less than all said metadata associated with said first minoring operation is not included with said first message.
11. A method, as claimed in Claim 10, further comprising: sending said message to said second controller and recognizing said message by said second controller including whether said message includes said metadata.
12. A method, as claimed in Claim 10, wherein: said message is the first message sent by said first controller to said second controller as part of said first minoring operation.
13. A method, as claimed in Claim 10, wherein: said message causes a first interrupt to said second controller when said first message includes said metadata, with said first interrupt being one of three interrupts and said three interrupts being the minimum number of interrupts for said first minoring operation.
14. A method, as claimed in Claim 10, wherein: said first controller communicates with said second controller for said first minoring operation using Small Computer System Interface (SCSI) protocol and said predetermined number of bits depends on SCSI protocol operations.
15. An apparatus for minoring data using two controllers in a storage system, comprising: a first controller that generates one of a first message and a second message depending on an amount of data to be sent by said first controller as part of a first minoring operation; and a second controller that receives said data from said first controller.
16. An apparatus, as claimed in Claim 15, wherein: said first message includes all metadata for said first minoring operation and said second message includes at least less than all said metadata for said first minoring operation and in which said one of said first message and said second message is the first communication from said first controller to said second controller for said first minoring operation.
17. An apparatus, as claimed in Claim 15, wherein: said first message includes metadata and the number of bits in said first message relates to SCSI protocol.
18. An apparatus, as claimed in Claim 15, wherein: said first message includes metadata and command related information and said first message is no greater than 128 bits.
19. An apparatus, as claimed in Claim 15, wherein: when said second message is generated, metadata is sent to said second controller after an interrupt that is different from the interrupt associated with said second message.
20. An apparatus, as claimed in Claim 15, wherein: when said first message is generated, said first minoring operation is associated with a first number of interrupts and, when said second message is sent, said first minoring operation is associated with a second number of interrupts, with said second number of interrupts being greater than said first number of interrupts.
PCT/US2002/035160 2001-11-02 2002-10-31 Data mirroring between controllers in an active-active controller pair WO2003041329A2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU2002340354A AU2002340354A1 (en) 2001-11-02 2002-10-31 Data mirroring between controllers in an active-active controller pair

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/008,987 US7107320B2 (en) 2001-11-02 2001-11-02 Data mirroring between controllers in an active-active controller pair
US10/008,987 2001-11-02

Publications (3)

Publication Number Publication Date
WO2003041329A2 WO2003041329A2 (en) 2003-05-15
WO2003041329A9 true WO2003041329A9 (en) 2004-02-19
WO2003041329A3 WO2003041329A3 (en) 2004-08-12

Family

ID=21734874

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2002/035160 WO2003041329A2 (en) 2001-11-02 2002-10-31 Data mirroring between controllers in an active-active controller pair

Country Status (3)

Country Link
US (1) US7107320B2 (en)
AU (1) AU2002340354A1 (en)
WO (1) WO2003041329A2 (en)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4704659B2 (en) 2002-04-26 2011-06-15 株式会社日立製作所 Storage system control method and storage control device
JP2004110367A (en) * 2002-09-18 2004-04-08 Hitachi Ltd Storage system control method, storage control device, and storage system
US7263593B2 (en) * 2002-11-25 2007-08-28 Hitachi, Ltd. Virtualization controller and data transfer control method
JP2004220450A (en) * 2003-01-16 2004-08-05 Hitachi Ltd Storage device, its introduction method and its introduction program
US7594002B1 (en) 2003-02-14 2009-09-22 Istor Networks, Inc. Hardware-accelerated high availability integrated networked storage system
US6941396B1 (en) * 2003-02-19 2005-09-06 Istor Networks, Inc. Storage controller redundancy using bi-directional reflective memory channel
JP4387116B2 (en) * 2003-02-28 2009-12-16 株式会社日立製作所 Storage system control method and storage system
JP2005018193A (en) * 2003-06-24 2005-01-20 Hitachi Ltd Interface command control method for disk device, and computer system
US8301809B2 (en) * 2003-07-02 2012-10-30 Infortrend Technology, Inc. Storage virtualization computer system and external controller thereof
JP4386694B2 (en) * 2003-09-16 2009-12-16 株式会社日立製作所 Storage system and storage control device
US7219201B2 (en) * 2003-09-17 2007-05-15 Hitachi, Ltd. Remote storage disk control device and method for controlling the same
JP4598387B2 (en) * 2003-09-17 2010-12-15 株式会社日立製作所 Storage system
JP4307202B2 (en) * 2003-09-29 2009-08-05 株式会社日立製作所 Storage system and storage control device
US20050071380A1 (en) * 2003-09-29 2005-03-31 Micka William F. Apparatus and method to coordinate multiple data storage and retrieval systems
JP4307964B2 (en) 2003-11-26 2009-08-05 株式会社日立製作所 Access restriction information setting method and apparatus
JP2005202893A (en) * 2004-01-19 2005-07-28 Hitachi Ltd Storage device controller, storage system, recording medium recording program, information processor, and method for controlling storage system
JP4391265B2 (en) 2004-02-26 2009-12-24 株式会社日立製作所 Storage subsystem and performance tuning method
US7406619B2 (en) * 2004-03-25 2008-07-29 Adaptec, Inc. Cache synchronization in a RAID subsystem using serial attached SCSI and/or serial ATA
JP4646574B2 (en) 2004-08-30 2011-03-09 株式会社日立製作所 Data processing system
JP2006127028A (en) * 2004-10-27 2006-05-18 Hitachi Ltd Memory system and storage controller
US8301810B2 (en) * 2004-12-21 2012-10-30 Infortrend Technology, Inc. SAS storage virtualization controller, subsystem and system using the same, and method therefor
US9495263B2 (en) * 2004-12-21 2016-11-15 Infortrend Technology, Inc. Redundant SAS storage virtualization subsystem and system using the same, and method therefor
US8301739B1 (en) * 2004-12-23 2012-10-30 Emc Corporation Storage system initialization utility
US7328324B2 (en) * 2005-04-27 2008-02-05 Dot Hill Systems Corp. Multiple mode controller method and apparatus
US7457928B2 (en) * 2005-10-28 2008-11-25 International Business Machines Corporation Mirroring system memory in non-volatile random access memory (NVRAM) for fast power on/off cycling
US8028137B2 (en) * 2007-12-20 2011-09-27 Seagate Technology Llc System and method of selective data mirroring in a data storage device
US8595397B2 (en) * 2009-06-09 2013-11-26 Netapp, Inc Storage array assist architecture
US20120089776A1 (en) * 2010-04-11 2012-04-12 Active Storage, Inc. Systems and methods for raid metadata storage
US10089035B1 (en) * 2013-10-29 2018-10-02 EMC IP Holding Company LLC Block storage transparent platform migration
US10089037B1 (en) * 2013-10-29 2018-10-02 EMC IP Holding Company LLC Block active/active access to data storage systems at different locations
US20170115894A1 (en) * 2015-10-26 2017-04-27 Netapp, Inc. Dynamic Caching Mode Based on Utilization of Mirroring Channels
US10664397B2 (en) 2018-07-31 2020-05-26 EMC IP Holding Company LLC Cache recovery method in a distributed storage system
US10489321B1 (en) 2018-07-31 2019-11-26 EMC IP Holding Company LLC Performance improvement for an active-active distributed non-ALUA system with address ownerships
US10831478B2 (en) 2018-11-06 2020-11-10 International Business Machines Corporation Sort and merge instruction for a general-purpose processor
US10831503B2 (en) 2018-11-06 2020-11-10 International Business Machines Corporation Saving and restoring machine state between multiple executions of an instruction
US10831502B2 (en) 2018-11-06 2020-11-10 International Business Machines Corporation Migration of partially completed instructions
US11327858B2 (en) 2020-08-11 2022-05-10 Seagate Technology Llc Preserving data integrity during controller failure

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5544347A (en) * 1990-09-24 1996-08-06 Emc Corporation Data storage system controlled remote data mirroring with respectively maintained data indices
US5721501A (en) * 1995-07-26 1998-02-24 Kabushiki Kaisha Toshiba Frequency multiplier and semiconductor integrated circuit employing the same
US5724501A (en) 1996-03-29 1998-03-03 Emc Corporation Quick recovery of write cache in a fault tolerant I/O system
US5819310A (en) * 1996-05-24 1998-10-06 Emc Corporation Method and apparatus for reading data from mirrored logical volumes on physical disk drives
US6279078B1 (en) 1996-06-28 2001-08-21 Compaq Computer Corporation Apparatus and method for synchronizing a cache mode in a dual controller, dual cache memory system operating in a plurality of cache modes
US6073209A (en) * 1997-03-31 2000-06-06 Ark Research Corporation Data storage controller providing multiple hosts with access to multiple storage subsystems
US6199074B1 (en) * 1997-10-09 2001-03-06 International Business Machines Corporation Database backup system ensuring consistency between primary and mirrored backup database copies despite backup interruption
US6718347B1 (en) * 1999-01-05 2004-04-06 Emc Corporation Method and apparatus for maintaining coherence among copies of a database shared by multiple computers
US6321298B1 (en) * 1999-01-25 2001-11-20 International Business Machines Corporation Full cache coherency across multiple raid controllers
JP2000276304A (en) * 1999-03-26 2000-10-06 Nec Corp Data shifting method and information processing system
US6735636B1 (en) * 1999-06-28 2004-05-11 Sepaton, Inc. Device, system, and method of intelligently splitting information in an I/O system
US6574709B1 (en) * 1999-09-30 2003-06-03 International Business Machine Corporation System, apparatus, and method providing cache data mirroring to a data storage system
US6681339B2 (en) * 2001-01-16 2004-01-20 International Business Machines Corporation System and method for efficient failover/failback techniques for fault-tolerant data storage system
US6938122B2 (en) * 2001-01-23 2005-08-30 Emc Corporation Remote mirroring in a switched environment
US6708285B2 (en) * 2001-03-15 2004-03-16 Hewlett-Packard Development Company, L.P. Redundant controller data storage system having system and method for handling controller resets
US6732243B2 (en) 2001-11-08 2004-05-04 Chaparral Network Storage, Inc. Data mirroring using shared buses

Also Published As

Publication number Publication date
US7107320B2 (en) 2006-09-12
WO2003041329A2 (en) 2003-05-15
AU2002340354A1 (en) 2003-05-19
US20030101228A1 (en) 2003-05-29
WO2003041329A3 (en) 2004-08-12

Similar Documents

Publication Publication Date Title
US7107320B2 (en) Data mirroring between controllers in an active-active controller pair
US6766491B2 (en) Parity mirroring between controllers in an active-active controller pair
JP3266277B2 (en) Conversion RAID for Hierarchical Storage Management System
US5854942A (en) Method and system for automatic storage subsystem configuration
EP0405926B1 (en) Method and apparatus for managing a shadow set of storage media
US6883079B1 (en) Method and apparatus for using data compression as a means of increasing buffer bandwidth
US7730257B2 (en) Method and computer program product to increase I/O write performance in a redundant array
US6009481A (en) Mass storage system using internal system-level mirroring
JP3177242B2 (en) Nonvolatile memory storage of write operation identifiers in data storage
US6523087B2 (en) Utilizing parity caching and parity logging while closing the RAID5 write hole
US5533190A (en) Method for maintaining parity-data consistency in a disk array
EP0732653B1 (en) Disk array system
US5333277A (en) Data buss interface and expansion system
US8112679B2 (en) Data reliability bit storage qualifier and logical unit metadata
US20040190183A1 (en) Disk array device
US5210865A (en) Transferring data between storage media while maintaining host processor access for I/O operations
US7849258B2 (en) Storage apparatus and data verification method for the same
JP2006134064A (en) Storage control apparatus and method for detecting writing error in storage medium
JPH07134635A (en) Disk array device
JP4884721B2 (en) Storage system and storage control method that do not require storage device format
US7694119B1 (en) Techniques for device initialization
US6363457B1 (en) Method and system for non-disruptive addition and deletion of logical devices
JPH09269871A (en) Data re-redundancy making system in disk array device
JP2002169660A (en) Data storage array apparatus, its control method, program recording medium and program
JPH1124849A (en) Fault recovery method and device therefor

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

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

AL Designated countries for regional patents

Kind code of ref document: A2

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

121 Ep: the epo has been informed by wipo that ep was designated in this application
COP Corrected version of pamphlet

Free format text: PAGES 1/7-7/7, DRAWINGS, REPLACED BY NEW PAGES 1/7-7/7; DUE TO LATE TRANSMITTAL BY THE RECEIVING OFFICE

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: JP

WWW Wipo information: withdrawn in national office

Country of ref document: JP