In systems containing multiple storage devices, multiple copies of the same data may be stored to implement fault tolerance. For example, two storage devices may each contain a copy of the data. If one of the storage devices fails, the data contained thereon is not lost as the copy of that data on the other storage device is still available. This type of data fault tolerance is referred to as data “mirroring.”
In at least some systems, each of the mirrored data sets is bestowed with a unique device identifier such as a World Wide Identifier (“WWID”). The system may not correctly function if the two copies of a mirrored data set are not bestowed with the same device identifier. For example, data corruption may result if each data set in the mirrored data pair is assigned different device identifiers in a system that is configured to determine that two data sets having different device identifiers contain different data.
At least one embodiment of the invention comprises a method implemented on a storage device comprising a controller. The method comprises combining a controller identifier of the storage device's controller with a logical unit number (“LUN”) associated with data stored on the storage device to produce a first value. The method further comprises receiving a second value comprising a controller identifier of another storage device's controller combined with a LUN associated with data stored on the other storage device, and combining the first and second values.
For a detailed description of exemplary embodiments of the invention, reference will now be made to the accompanying drawings in which:
Certain terms are used throughout the following description and claims to refer to particular system components. As one skilled in the art will appreciate, computer companies may refer to a component by different names. This document does not intend to distinguish between components that differ in name but not function. In the following discussion and in the claims, the terms “including” and “comprising” are used in an open-ended fashion, and thus should be interpreted to mean “including, but not limited to . . . .” Also, the term “couple” or “couples” is intended to mean either an indirect or direct electrical connection. Thus, if a first device couples to a second device, that connection may be through a direct electrical connection, or through an indirect electrical connection via other devices and connections.
Referring now to
Each storage device A, B has multiple access points (P1-P4) by which other equipment in the system can be coupled to the storage device. In the exemplary configuration shown in
Data is organized on the storage devices in “logical units.” In some embodiments, a logical unit is a logical representation of physical storage. In some architectures, storage space can be made up of storage on multiple disk drives. A logical unit represents such storage, although it is not limited to multiple drive storage scenarios. Each logical unit is assigned a logical unit number (“LUN”).
For the host 52 to access a logical unit, the host uses a unique device identifier associated with the target logical unit. In some embodiments, the device identifier may be a world wide identifier (“WWID”). For the host to correctly access and use mirrored data (e.g., LUNs 1:2 and 3:5 in storage devices A and B, respectively), each logical unit of the mirrored pair must be instilled with the same unique device identifier. The subject matter provided herein describes a suitable technique for instilling the same unique device identifier in each logical unit in a mirrored pair. The technique described herein may apply to redundant data configuration besides data mirroring such as any of a variety of implementations of the redundant array of independent disk (“RAID”) configurations (e.g., RAID0, RAID1, etc.).
A controller identifier 65 is associated with the storage device. The controller identifier 65 uniquely distinguishes the controller in one storage device from controllers in other storage devices. In some embodiments, the controller identifier may comprise a serial number assigned by the manufacturer of the controller 60. The controller identifier can be a value other than a serial number such as an Internet Protocol (“IP”) address or media access control (“MAC”) address. If system 50 is implemented as a Fibre Channel Network, “WWName” can also be used as the controller identifier. The controller identifier 65 may be stored in a storage location in the ROM 64 or in separate non-volatile storage located elsewhere in the storage device.
Method 90 may be implemented by the processor 62 executing BIOS 66 of a storage device. The functions depicted in blocks 92-100 can be performed in an order other than that shown in
In block 92, method 90 includes combining the storage device's controller identifier with the LUN of that storage device's logical unit having mirrored data to produce a value. Combining the controller identifier and the LUN may be implemented by concatenating the two values. With regard to storage device A In
In block 94, the value produced as a result of block 92 is transmitted to the other storage device(s) containing the corresponding (e.g., matching) logical unit. Accordingly, storage devices A and B exchange the values each storage device generated in block 92 (“1234-1:2” and “5678-3:5”). In block 96, each storage device thus receives a value from the other storage device that contains the corresponding logical unit in the mirrored pair. The value received from the other storage device represents the other storage device's controller identifier (e.g., serial number of the controller) combined with that other storage device's LUN. For example, storage device A receives the value “5678-3:5” from storage device B, and storage device B receives the value “1234-1:2” from storage device A.
In block 98, each storage device sorts its own value produced in block 92 with the value received from the other storage device. The act of sorting these values may comprise arranging the values, for example, in alphanumeric order. In the example above, each storage device A and B has two values “1234-1:2” and “5678-3:5.” In block 100, the storage device combines together the sorted values from block 98. The act of combining the sorted values in block 100 may be implemented by concatenating the sorted values. Sorting and concatenating these values by each storage device may result in a sorted value of “1234-1:25678-3:5” in each storage device in the example above. The resulting value produced by block 100 is used as the device identifier for the logical unit of the storage device.
Because each storage device performs the same acts (blocks 92-100) and exchanges its values with the other storage device, each storage device ultimately generates the same device identifier for each member of the corresponding logical units.
The above discussion is meant to be illustrative of the principles and various embodiments of the present invention. Numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. It is intended that the following claims be interpreted to embrace all such variations and modifications.