A switched fabric is a network topology where multiple network nodes are connected to one another via one or more network switches and one or more physical links. For example, in the context of a large serial attached SCSI (SAS) fabric, multiple initiator devices may connect with multiple target devices via one or more SAS switches and one or more corresponding physical links. The initiator devices may be, for example, host bus adapters (HBAs) and/or data storage controllers, and the target devices may be, for example, end devices such as SAS hard disk drives, serial ATA (SATA) hard disk drives, solid state disks (SSDs), and/or SAS tape drives (also referred to collectively as JBODs). Each SAS switch may forward data received from the initiator devices to the target devices, and, conversely, forward data received from the target devices to the initiator devices. Because the number of devices in a SAS fabric may become quite large, zoning may be utilized to manage traffic and security. In particular, zoning may be utilized in large topologies to break the topology into logical zone groups and allow controlled access within and between the zone groups.
Examples are described in the following detailed description and in reference to the drawings, in which:
Various aspects of the present disclosure are directed to an efficient and effective distributed zoning approach. In particular, various aspects of the present disclosure are directed to a distributed zoning approach that, among other things, enables individual switches in a fabric to zone their own local fabrics in response to receiving an updated zoning record from another switch in the fabric.
In large SAS storage networks. SAS switches may be “stacked” together (i.e., trunked or daisy chained together) to enable communication between the SAS switches and the devices in their respective local fabrics. While this stacking approach allows greater access from a given initiator, it makes conventional zoning approaches inefficient. In particular, the conventional approach of utilizing of a single zoning manager to zone an entire fabric may be inefficient because, if each local fabric is at a maximum configuration, the sequential nature of the zoning operation may be time consuming, inefficient, and potentially result in timeouts.
Various aspects of the present disclosure address at least the above by distributing zoning processes among multiple switches in a SAS fabric such that zoning may be conducted by zoning mangers in individual switches in a parallel manner. More specifically, in various aspects of the present disclosure, upon receiving zoning modifications from an administrator at a first switch, the first switch may distribute the zoning modification information in the form of an updated zoning record to the other switches in the fabric. Each switch may then conduct local zoning operations based thereon, as well as update their stored zoning record to reflect the current zoning configuration. This novel and previously unforeseen approach is described in detail below with reference to various examples and various figures.
In one example in accordance with the disclosure, a first switch is provided. The first switch comprises a zoning manager module to store a record comprising zoning information of a SAS fabric. The zoning manager module updates the record based at least in part on received zone modification information to create an updated record. Further, the zone manager module distributes the updated record to at least a second switch in the SAS fabric, where the first switch and the second switch are in a stacked configuration.
In another example in accordance with the disclosure, a method is provided. The method comprises storing, at a first switch, a record comprising zoning information of a SAS fabric. Additionally, the method comprises receiving, at the first switch, a zoning modification with respect to the SAS fabric, and updating the record comprising the zoning information to reflect the zoning modification with respect to the SAS fabric. The method further comprises providing, by the first switch, a command to at least one device in a local fabric associated with the first switch based at least in part on the updated record, and distributing the updated record to at least one other switch in the SAS fabric.
In yet another example in accordance with the disclosure, a non-transitory machine-readable medium is provided. The machine-readable medium comprises instructions which, when executed, cause a switch to update a stored record based on received zoning change information, and provide commands to at least one device in a local fabric based at least in part on the received zoning change information. The instructions further cause the switch to distribute an updated record to at least one other switch, wherein the switch and the at least one other switch are in a stacked configuration.
The system 100 generally comprises switches 102-106 (e.g., SAS switches), initiators (e.g., HBAs 108-110), targets (e.g., 112-124), and expanders (126-128). More specifically, a first switch 102 may be stacked (i.e., trunked or daisy-chained) with a second switch 104 which itself is stacked with a third switch 106. The connection therebetween may be made via a trunk line 130 that connects ports 132 of the respective switches 102-104. Each switch may facilitate communication between the various initiators (e.g., HBAs 108-110), targets (e.g., 112-124), expanders (e.g., 126-128), and other switches (e.g., 102-106) connected thereto. Further, each switch may be responsible for configuring the devices in its own local fabric via a zoning manager module therein. For example, the first switch 102 may be responsible for configuring the devices in the first local fabric 134 via the zoning manager module 142, wherein the devices within the first local fabric 134 comprise the SAS HDD 11, expander 126, SATA HDDs 114-116, and HBA 108. Similarly, the second switch 104 may be responsible for configuring the devices in the second local fabric 136 via the zoning manager module 144, wherein the devices in the second local fabric 136 comprise the SAS HDDs 118-120. Likewise, the third switch 106 may be responsible for controlling the devices in the third local fabric 138 via the zoning manager module 146, wherein the devices in the third local fabric 138 comprise the HBA 110, expander 128, and SATA HDDs 122-124. Each of the first local fabric 134, second local fabric 136, and third local fabric 138 may form part of the entire SAS fabric 140.
The zoning manager module 142-146 of each switch 102-104 may be responsible for configuring the devices in its own local fabric as well as communicating zoning changes to other zoning manger modules so those zoning manger modules may similarly configure devices in their respective local fabrics, In particular, each zoning manger module 142-146 may comprise hardware, software, or a combination thereof that stores a record 148-152 for the entire SAS fabric 140 (e.g., a persistent zone group record (PZR), wherein a PZR is understood herein to be a record that comprises the zone group settings and/or access privileges with respect to devices in the SAS topology). This record 148-152 may be in the form of a database, and comprise information such as a zone permission table, a switch table, and/or a JBOD enclosure table (described in greater detail below with respect to
For example, an administrator may utilize a GUI to access the first switch 102. The administrator may provide zoning modification instructions via the GUI such as assigning an initiator to a switch and assigning a target to the initiator. In response to this update, the first switch 102 may update the PZR stored in the first switch 102. In addition, if the changes are to be applied to any devices attached to the first switch 102 (e.g., initiators and targets), the first switch 102 may issue commands (e.g., SMP zoning commands) to these devices in the first local fabric 134 to configure the devices in accordance with the updated PZR. Furthermore, the first switch 134 may distribute the updated PZR to the zoning manager module 144 of the second switch 104 and the zoning manger module of the third switch 106. Each of these switches (104-106) may update their respective PZRs based on the received updated PZR from the first switch 102, as well as issue commands (e.g., SMP zoning commands) to the devices in their local fabrics 136-138 to configure the devices in accordance with the updated PZR, if such changes are to he applied to devices in their respective local fabrics. Among other things, this distributed approach allows consistency in PZRs at the various switches in the SAS fabric 140, as well as efficient zoning configuration of the local fabrics that form the overall SAS fabric.
The process 200 may begin at block 210, when a switch stores a record (e.g., a PZR) comprising zoning information or settings for a fabric (e.g., a SAS fabric). This record may be an initial zoning configuration for the fabric, and may be provided by a default setting, or by an administrator via an interface such as a GUI or CLI. The record may be in the form of a database, and comprise information such as a zone permission table, a switch table, and/or a JBOD enclosure table, for example. The record may be utilized by a zoning manager module of the switch to configure devices in the fabric.
At block 220, the switch may receive a zoning modification with respect to the fabric. In particular, the switch may comprise a communication interface (e.g., port, PHY, and/or transceiver) that allows the switch to receive zoning modification information provided by an administrator via, e.g., a. GUI or CLI. The zoning modification information may be, for example, information pertaining to the allocation and/or deallocation of disk drives within the fabric. Alternatively or in addition, the zoning modification information may be, for example, information pertaining to the movement of disk drives in response to a failure such as a server failure.
At block 230, in response to receiving the zoning modification with respect to the fabric, the switch may update the stored record to reflect the zoning modification with respect to the fabric. That is, the switch may update the stored record based on the changes made by, e.g., the administrator, with the result being an updated record.
At block 240, the switch may provide a command to the devices in its local fabric based on the updated record. More specifically, the switch may transmit SAS SMP zoning commands to the devices in its local fabric. Such commands may be limited to the switch's local fabric and may not cross a switch boundary. For example, with reference to
At block 250, the switch may distribute the updated record to at least one other switch in the SAS fabric. A zoning manager module at the other switches may receive the updated record and update their respective record to reflect the changes. Furthermore, the zoning manager modules may determine whether any of the changes are to be applied to any devices in their local fabric and, if so, transmit commands such as SAS SMP zoning commands to the devices to zone the devices based on the updated record. In some implementations, the switch may only transmit the updated record to switches that include zoning manager modules. The switch may determine whether the switches include such modules via a SAS discovery process. Furthermore, it should be understood that this process described with respect to block 250, as mentioned above, may occur before, after, or in parallel with the process described with respect to block 240, such that zoning operations for the entire fabric may be conducted simultaneously or in parallel at each switch in the SAS fabric in a distributed manner.
The process may begin at block 305, where several SAS switches are stacked together to create a large SAS fabric. This may also be understood as a daisy-chained or trunked configuration, like shown in
At block 310, the switches conduct a discovery process to identify other devices in the fabric as well as information about the other devices. For example, each switch may initiate a SAS discovery process to identify the other switches in the fabric, as well as identify information such as the SAS address of each switch and/or whether or not the each switch includes a zoning manager module.
At block 315, each switch stores a record with zoning information of the entire SAS fabric (e.g., a PZR). This record may include initial zoning information for the SAS fabric as set by an administrator, another network device, and/or as a default setting. In addition, this record may be created based on information provided at a first switch and distributed to the other switches by the first switch.
At block 320, an administrator may log into a first switch and make zoning modifications with respect to the fabric. The first switch may be any of the switches in the fabric that comprises a zoning manager module. The modifications may be, for example, information pertaining to the allocation and/or deallocation of a disk drive to/from initiators within the fabric. The modifications may be in response to, e.g., load balancing issues, fault-tolerance issues, failure issues, new hardware, or the like. In one implementation, the administrator may log into the switch via a GUI, CLI, or the like.
At block 325, the first switch updates its stored record to reflect the zoning modifications made by the administrator. This process may involve updating the record to specify the current zoning configuration of the fabric as setup by the administrator. In addition, this process may result in an updated record that is stored at the first switch.
At block 330, the first switch may analyze the updated record to determine if the zoning modifications are with respect to its attached devices. These attached devices may be, e.g., target devices and/or initiator devices directly or indirectly attached to the first switch and that are within its local fabric. In some implementations, the analysis may involve the first switch comparing the updated record with the previous record to identify changes and determining if any of those changes are to be applied to any devices attached to the switch.
At block 340, if the first switch determines that at least some of the changes are to be applied to at least one device attached to the switch, the first switch may zone the device(s) by issuing, e.g., SAS SMP zoning commands based on the updated record. If, on the other hand, the first switch determines that at least sonic of the changes are not to be applied to at least one device attached to the switch, this portion of the process may be complete for the first switch as shown in block 325.
Prior to, at the same time, or after the processes shown in blocks 330 and/or 340, the first switch may distribute the updated record to the other switches in the fabric at block 345. The other switches may be known to the first switch via the discovery process described above with respect to block 310. Further, in some implementations, the first switch may only distribute the updated record to switches that have zoning manager modules previously identified during the discovery process.
At block 350, upon receiving the updated record from the first switch, the other switches in the fabric may update their respective record to reflect the zoning modifications. Hence, each switch in the fabric may have a record with the same contents. Put another way, each switch in the fabric may have the same zoning information of the entire fabric in response to processes described with respect to
At block 355, the other switches may determine if the zoning modifications are to be applied to devices in their local fabrics. Similar to the processes described above with respect to block 330, each switch may compare their updated record with the previous record to identify changes and determine if any of those changes are to be applied to any devices attached to the switch.
At block 360, if the other switches determine that at least some of the zoning changes are to be applied to at least one attached device, the respective switch may zone the device(s) by issuing, e.g., SAS SMP zoning commands based on the updated record.
At block 365, the other switches may each transmit a response to the first switch that transmitted the updated record. The response may include acknowledgement that the switch received the updated record. Alternatively or in addition, the response may include an indication that the switch updated its stored record to reflect the modifications in the updated record. Alternatively or in addition, the response may include an indication that the switch zoned attached devices based on the updated record. Alternatively or in addition, the response may include an indication that an error occurred and/or information about the error.
While not shown in
The processing device 430 may be a at least one of a central processing unit (CPU), a semiconductor-based microprocessor, a graphics processing unit (GPU), a field-programmable gate array (FPGA) configured to retrieve and execute instructions, other electronic circuitry suitable for the retrieval and execution instructions stored on a machine-readable storage medium, or a combination thereof. The processing device 430 may fetch, decode, and execute instructions stored on the storage medium 440 to implement the functionalities described above, such as updating a zoning record, issuing zoning commands to devices in a local fabric based on an updated zoning record, and/or distributing an updated zoning record to other switches in a fabric.
The zoning record 500 comprises a zone permission table 510, a switch table 520, and a JBOD enclosure table 530.
The zone permission table 510 generally specifies access privileges between source (“SRC”) and destination (“DST”) zone groups, where there may be up to 256 source/destination zone groups within the fabric, and where a value of “1” indicates that devices assigned to a particular source zone group have access to devices assigned to a particular destination zone group. More specifically, the zone permission table 510 indicates that the devices in source zone group “1” have access to all other zone groups and vice versa. Further, the zone permission table 510 indicates that each source zone group has self-access by the inclusion of “1” at each identical source and destination group (e.g., source zone group 8::destination zone group 8=“1”).
The switch table 520 generally specifies a correspondence between switches and their respective ports and assigned zone groups, where any device attached to a specified switch port may inherit the assigned zone group. Here, there are 3 trunked switches each with 8 ports and 2 JBODs. The ports that are utilized to trunk the switches are assigned to zone group “1”. For example, switch 1 is trunked to switch 2 via port 4 and switch 2 is trunked to switch 3 via port 5. Thus, port 4 on switches 1 and 2, and port 5 on switches 2 and 3 are zone group “1”. Further, the ports attached to the JBODs are also assigned to zone group “1”. Therefore, if JBOD A is attached to port 2 on switch 1 and JBOD B is attached to port 2 on switch 2, port 2 on switches 1 and 2 are assigned to zone group “1”.
The JBOD enclosure table 530 generally specifies a correspondence between drive bays of a JBOD enclosure and zone groups, In the example shown, none of the drive bays of a JBOD enclosure are assigned to a particular zone group.
The changes shown in
While the above disclosure has been shown and described with reference to the foregoing examples, it should be understood that other forms, details, and implementations may be made without departing from the spirit and scope of the disclosure that is defined in the following claims.