The Fibre Channel (FC) protocol communication standard has been developed to provide practical, inexpensive, and expandable means of transferring data between workstations, mainframes, storage devices and other peripheral devices. Fibre Channel supports different topologies, including a point-to-point topology, an arbitrated loop topology and a fabric attached topology. The arbitrated loop topology attaches devices in a loop, creating a Fibre Channel Arbitrated Loop (FC-AL). The Fibre Channel Arbitrated Loop (FC-AL) requires a unique address for each device in the loop. The unique address is called an Arbitrated Loop Physical Address (ALPA).
A single FC-AL typically supports up to 127 devices and one connection to a fabric switch may exist in a single ALPA space. Data within an ALPA space physically travels from node to node in a daisy-chain fashion, ultimately traveling in a loop. Control by a device on the loop is obtained through the process of loop arbitration, after which the device winning arbitration sends data.
In a particular FC storage system having FC-ALs, the FC storage system may communicate with several shelves. Each shelf contains several disk drives, associated control hardware, and several backplanes. Typically, legal ALPAs per a FC-AL are not sequential from 0 to 126. However, it is desirable for other parts of the FC storage system to use easy-to-understand sequential numbers for ALPA. Consequently, “select ID” (sequential from 0 to 126) may be used in the FC storage system and the Select ID may be mapped to a proper ALPA through various methods.
Some FC storage systems may allow plugging a disk drive into a backplane. If a disk drive is removed from the backplane and plugged into a different location in the backplane, the FC storage system may use the label information recorded on the drive to recognize where this drive should be mapped into its file management tables. It is important to maintain such flexibility in data security applications or for configuration expansion. Thus, some FC storage systems are physical location dependent systems to achieve such flexibility, having a physical address for each drive to remain consistent.
A Select ID signal may be used in FC storage systems to assign a physical location for each connection to a backplane, allowing the management of configuration and the simple identification of devices that need to be changed for maintenance reasons. Additionally, the Select ID signal may be able to specify a physical address for each drive. In the particular FC storage system, the Select ID signal may be a seven-bit signal sent from the backplane since a 7-bit binary number is suitable for representing the decimal numbers from 0 to 126. The Select ID signal may be used to create the binary value of the Select ID to the drive in that location.
The Select ID is mapped to the proper ALPA for a drive. The 7-bit Select ID may have two main fields: “shelf ID” which is a shelf-within-the-loop portion and “slot ID” which is a drive-slot-within-the-shelf portion. The “shelf ID” and the “slot ID” may be used to assign ALPA addresses for keeping the software simple. For example, 4 bits of the Select ID may be used for the Slot ID bits to encode up to 16 drive slots per shelf. Each drive slot may have a constant “slot ID” assigned to it by the hardware (fixed constant defined by the backplane wiring in the shelf). The remaining 3 bits of the Select ID may be used for the “shelf ID” bits. The “shelf ID” bits are determined by a user-settable switch, so the user can combine identical shelves into a single loop and then set the “shelf IDs” to unique numbers, thus making sure the Select ID for each drive is completely unique in the FC-AL loop.
The backplane may use SEL—6 through SEL—0 ID lines to send a Select ID signal. FC storage systems may assign the lower bits of the Select ID signal (i.e. Slot ID bits) by hardwiring them LOW or HIGH at each drive slot on the backplane in order to keep hardware simple. The upper bits of Select ID signal (i.e. Shelf ID bits) are typically set to be the same across all drive slots in a shelf. Thus, shelves tend to contain a number of drives that are a power of 2 or slightly less in order not to waste available ALPA addresses.
As a result, a conventional FC storage subsystem includes a shelf containing 16 disk drives, 32 disk drives, and the like. A designer may desire various numbers of disk drives per shelf, for example, 22 disk drives per shelf. In such a case, three shelves per a FC-AL may be allowed in order to preserve reserved addresses and 30 addresses may be wasted, compared to a storage subsystem having 32 disk drives per shelf. If four shelves are allowed, it is difficult to fit the address space into available ALPA addresses without reuse of reserved addresses for the FC storage subsystem. Examples of the reserved addresses include reserved addresses for a host bus adapter (HBA), electronics for SCSI Enclosure Services (SES controller), and the like. A typical FC storage system may need at least one host bus adapter (HBA) and an SES controller per shelf. In the FC storage system, the highest Select ID 126 may be reserved for a HBA and one Select ID may be assigned to each SES controller in the shelves.
Further, a designer may desire a non-fixed number of disk drives per shelf, for example, 16 disk drives per shelf now and then 22 disk drives per shelf later. In such cases, it is unavoidable to implement a complex method of ALPA address mapping through some decoding logic in the backplane or elsewhere in the drive enclosure. Typically, a card that plugs into the backplane may be used to implement a complex method of ALPA address mapping. However, this approach may require more signals lines between the backplane (the decoding logic circuit) and the drive slots, resulting in higher pin counts of the card. It is very costly and complex.
Additionally, under the FC standard, all Select IDs need to be unique in a given FC-AL. Conventional FC storage systems assign a unique Select ID to each device (e.g. each pluggable disk drive and the like). One of the conventional FC storage subsystems may include 14-16 drives per shelf. In such a system, 4 bits of the Select ID may be used for the slot ID bits to encode up to 16 drive slots per shelf. Each drive slot may have a constant “slot ID” assigned to it by the hardware (fixed constant defined by the backplane wiring in the shelf). The remaining 3 bits of the Select ID may be used for the “shelf ID” bits. The “shelf ID” bits are determined by a user-settable switch, so the user can combine identical shelves into a single loop and then set the “shelf IDs” to unique numbers, thus making sure the Select ID for each drive is completely unique in the FC-AL loop. For example, a 14-drive shelf with “shelf ID” set to 0 would have drives numbered with Select IDs from 0 to 13 (the offset of 0 for shelf 0, plus 0 to 13 for the drive slot). Shelf 1 would have drives numbered with Select IDs from 16 to 29 (the offset of 16 for shelf 1, plus 0 to 13 for the drive slot). Shelf 2 would have drives numbered from 32 to 45 (the offset of 32 for shelf 2, plus 0 to 13). Other devices in the FC-AL loop may have assigned reserved addresses. Examples of the reserved addresses include reserved addresses for a host bus adapter (HBA), electronics for SCSI Enclosure Services (SES controller), and the like. A typical FC storage system may need at least one host bus adapter (HBA) and an SES controller per shelf.
In the FC storage system, the highest Select ID 126 may be reserved for a HBA. In order not to reuse reserved addresses, the block of Select IDs based on the last “shelf ID” may be reserved. In other words, the entire Select IDs in the range of the last “shelf ID” may be reserved and not to be used by disk drives. As described above, a FC storage system including 16-drive shelves typically uses 3 bits of the Select ID for the “shelf ID”. Thus, eight “shelf IDs” may be available per FC-AL. Since the highest “shelf ID” (or a block of 16 Select IDs) may be reserved, seven “shelf IDs” may be available for shelves per FC-AL. Consequently, the FC storage system may be allowed to include 7 shelves and 7*16=112 total disk drives per FC-AL. Each SES controller in the shelf may need one Select ID. The FC storage system may be able to use 112 (for disk drives)+7 (for SES controllers)=119 total Select IDs without reusing the reserved block of Select ID.
However, a certain FC storage system may include a larger size shelf, such as a 32-disk shelf, and the like. In such a system, the 7-bit Select ID may be split into 5 bits of “slot ID” (32 slots) and 2 bits of “shelf ID” (up to 4 shelves). The highest “shelf ID” may be reserved for a HBA and, as a result, a block of 32 Select IDs associated with the highest “shelf ID” may be reserved and not supposed to be used by disk drives. The FC storage system may be allowed to have three shelves and 3*32=96 total disk drives per FC-AL. In this manner, the reserved block of 32 Select IDs may not be reused. However, a significant chunk of Select IDs is wasted. As such, when the FC storage system includes shelves with the number of disk drives being a power of 2, such as 16, 32, 64 and the like, the larger the shelf is (the more disk drives per shelf), the more Select IDs (i.e more ALPA addresses) the FC storage system wastes due to the size of the reserved block of Select IDs.
Therefore, it would be desirable to provide a method and system for mapping the Select ID signal in available ALPA addresses without wasting a significant chunk of available ALPA addresses for a FC storage subsystem having non-fixed numbers of disk drives per each shelf. It would be also desirable to provide such a method and system for mapping the select ID signal in available ALPA addresses through use of a small number of signal lines. It would also be desirable to provide a method and system for assigning a unique Select ID to a FC storage device so as to maintain desirable numbers of disk drives in a given FC-AL while preserving reserved Select IDs and providing a method and system for maximizing use of resources in the FC-AL.