In a networked data storage system, computing devices may be connected to storage devices, such as hard disk drives, via a network, instead of having each computing device being directly connected to its own dedicated storage devices. Examples of such networked data storage systems include storage area networks (SANs) and network attached storage (NAS).
In a networked data storage system, the physical storage devices of the storage array may be partitioned into logical units (LUs), which constitute the logically distinct storage volumes that an initiator device reads data from and/or writes data to. A single physical storage device in the array may include a single LU or multiple LUs. Moreover, a single LU may span multiple physical storage devices, such as, for example, in a redundant array of independent disks (RAID) array. Thus, the number of LUs in the storage array may not necessarily correspond to the number of physical storage devices in the array, and new LUs may be added or existing LUs removed without adding or removing a physical storage device from the array.
When a change related to an LU occurs in the storage array, such as addition of a new LU to the array, the host computing devices are generally unware of the logical unit change. Various techniques including example systems, methods, and machine-readable media disclosed herein provide techniques for updating the host devices regarding such logical unit changes.
For example, various techniques including systems, methods, and machine-readable media are disclosed herein that are to, when a logical unit change occurs, automatically generate a notification that includes an instruction for initiator devices of the computing devices to initiate a SCSI bus rescan. In various examples disclosed herein, the notification is a state change notification (SCN) that is an in-band notification of a transport protocol being used by the network, and the instruction to initiate a bus rescan is included in the payload of the SCN. In various examples disclosed herein, an initiator device may, in response to receiving such a notification, request updated LU information from the storage array, and may initiate an application level rescan of the small computer system interface (SCSI) bus, making the updated information available to higher level drivers. Thus, the host computing devices are automatically updated about logical unit changes occurring on the storage array, without requiring an administrator to manually initiate a rescan.
The example storage array 110 shown in
The storage controller 113 may be, for example, a disk array controller, a RAID controller, a storage processor, a host bus adaptor (HBA), a target channel adaptor, a disk controller, etc. The storage controller 113 may include ports 114, and the physical storage devices 112 may be connected to the storage controller via the ports 114. The storage controller 113 may process SCSI commands received from host computing systems 130, and may manage data read/write from/to the LUs 111 based on the received commands. The storage controller 113 may also transmit messages to the network 120, such as notifications defined by a transport protocol of the network 120. The storage controller 113 may divide the storage volumes of the physical storage devices 112 into LUs 111, assign communications paths (physical and/or logical) to the LUs 111, and may make the LUs 111 available to the host computing systems 130. Example transport protocols include fibre channel protocol (FCP), internet small computer system interface (iSCSI), fibre channel over IP (FC/IP), internet fibre channel protocol (iFCP), HyperSCSI, fiber channel over Ethernet (FCoE), etc
In particular, the storage controller 113 may add a new LU 111, remove an existing LU 111, change the volume of an existing LU, add a new path to an LU 111, change an existing path to an LU 111, and remove an existing path to an LU 111. The forgoing are examples of logical unit changes (described further below). Such logical unit changes may be performed in response to instructions received, for example, from a system administrator, who may control the storage controller 113 via a user interface (not illustrated). The logical unit changes may also be initiated automatically, for example, by an application that monitors storage needs of the connected host computing devices 130 and re-provisions LUs 111 in response thereto.
The storage controller 113 also executes processes for generating a notification in response to logical unit changes, such as the example process illustrated in
In the example described above, the notification generated by the storage controller 113 may be an SCN of a transport protocol being used by the network 120. An SCN is an in-band notification related to reporting state changes of network end-points. Some transport protocols define some form of SCN, which may have different formats and/or naming conventions depending on the protocol. For example, the Fibre Channel Protocol (FCP) includes a Registered State Change Notification (RSCN) as a form of SCN. As another example, the iSCSI protocol includes an Internet Storage Name Service—State Change Notification (iSNS-SCN) message. However, regardless of the different formats and naming conventions, the SCNs all include a payload portion in which the sender of the notification may include information related to the nature of the state change that prompted the message. The SCNs may also include information indicating that the message is an SCN as well as the identity of the network end-point that generated the notification. Such an SCN may be sent by a network end-point to a network device (for example, a switch), and from the network device the notification may be forwarded to other relevant network end-points (for example, a host computing device). For example, in an FCP network a network device that receives an RSCN will forward it to those network end-points that have previously registered with the network device to receive RSCNs from the device that generated the RSCN. Reference herein to the SCN being “in-band” means that the SCN is a notification that is defined by a transport protocol being used by the network 120.
The storage controller 113 may include processing circuitry 115 and a storage medium 116. The storage medium 116 may store machine-readable instructions that, when executed by the processing circuitry 115, direct or cause the storage controller 113 to execute certain of the operations described herein, such as, for example, the operations described in the example processes of
The storage array 110 shown in
The network 120 in the example system 100 may include a network device 121 that is part of a communications path that connects the storage array 110 with the host computing device 130.
The host computing device 130 may have an application 132 and an initiator device 131 that is to communicate with the storage array 110. The application 132 may be any entity hosted on the computing device 130 that accesses the storage array 110, including, for example, a disk driver, a VMFS driver, etc. The initiator device 131 is an interface between the application 132 and the storage controller 113, and may, for example, convert or translate instructions from the application 132 into commands that the storage controller 113 can process or understand (for example, SCSI commands), and transmit these commands and any related data to the network 120 via the relevant protocol of the network 120. For example, if the application 132 wants to write data to the storage array, the initiator device may generate a write command and encapsulate the command and the data for transmission to the network 120 according to a transport protocol. The initiator device 131 may be, for example, an SCSI driver, host adaptor, host bus adaptor (HBA), or the like.
The initiator device 131 may be also to receive messages from the network, such as SCNs. In particular, the initiator device 131 may receive an SCN that has the ARN in its payload. In response to receiving the SCN containing the ARN, the initiator device 131 may perform processes for initiating a bus rescan, such as the example process of
The host computing device 130 may include processing circuitry 133 and a storage medium 134. The storage medium 134 may store machine-readable instructions that, when executed by the processing circuitry 133, direct or cause the host computing device 130 to execute certain of the operations described herein, such as, for example, the operations described in the process of
As described above, in the example system 100 the storage controller 113 may be able to automatically generate the SCN with the ARN embedded in its payload when a logical unit change occurs, which may cause the initiator device 131 to automatically initiate a bus rescan to obtain updated LU 111 information. Thus, the example system 100 may be able to automatically update the host computing devices 130 regarding logical unit changes, without requiring the manual initiation of a bus rescan by a system administrator. In addition, because the SCN is in-band to the transport protocol being used by the network, the initiator device 131 obtains the updated information in real time. This is in contrast to, for example, using a separate “out-of-band” agent for monitoring for logical unit changes and generating “out-of-band” notifications, which may require a longer delay between detection of a logical unit change and updated information being received by the host computing devices 130. In addition, by having the storage controller 113 generate the in-band SCN, it reduces the need to install a special “out-of-band” agent for monitoring for logical unit changes and generation out-of-band notifications, thus reducing complexity of the system and saving time and money, etc. Furthermore, the in-band notification and discovery processes described herein may be less susceptible to errors than an “out-of-band” notification and discovery solution.
In block 401 of the example process, a logical unit change is performed and/or detected, and in response to this performance/detection the process proceeds to blocks 402-404. As used herein and in the appended claims, a “logical unit change” includes any one of the following: a new LU 111 is added, an existing LU 111 is removed, the volume of an existing LU is changed, a new path to an LU 111 is added, an existing path to an LU 111 is changed, and an existing path to an LU 111 is removed. As an example of how the operations of block 401 may be implemented, respective processing routines or processes for performing the logical unit changes may each include instructions to execute operations corresponding to blocks 402-404, such that when the storage system controller 113 performs one of the logical unit changes it also automatically performs operations corresponding to blocks 402-404. As another example, instead of including instructions for blocks 402-404 in each of the individual routines for performing the respective logical unit changes, a separate routine for monitoring to detect logical unit changes may be executed.
In response to a logical unit change being performed and/or detected in block 401, in block 402 an SCN that is in-band to a transport protocol being used by the network 120 is generated. As described above, as used herein “in-band” means that the SCN is a notification that is defined by a transport protocol being used by the network 120.
In block 403, the application-level-rescan-required notification (ARN) is inserted into the payload of the SCN. As described above, the ARN may be any type of indicator that would be interpreted by an initiator device as a request to initiate an application level bus rescan. For example, a specific code (sequence of bits or bytes) may be an ARN if the code, in the context of the payload of an SCN, is recognizable by an appropriately enabled initiator device as a request to initiate an application level bus rescan. In such an example, there is no requirement that any appropriately enabled initiator device actually receive the SCN containing the code for the code to be considered an ARN; that there exists an initiator device that could recognize the code, in the context of an SCN's payload, as a request to initiate a bus rescan if the device were to receive such an SCN is sufficient for the code to be considered an ARN. As another example, a technical specification may define a specific code (sequence of bits or bytes) as an ARN, such that an initiator device that is compliant with the technical specification would interpret an SCN containing the code in its payload as a request to initiate a bus rescan. In this example, it is irrelevant whether any initiator device actually exists that complies with the technical specification.
In block 404, the SCN containing the ARN may be transmitted to the network 120. Although the operations of blocks 402 through 404 are presented in the example process in sequential conceptual blocks, these operations may be performed concurrently—for example, the SCN may be generated by transmitting bits of the SCN (i.e., generation and transmission may be simultaneous) and the ARN may be inserted into the SCN as the SCN is being transmitted by, when the payload portion of the SCN is reached, transmitting bits corresponding to the ARN as the payload bits.
In block 601 of the example process of
In decision bock 602, it is determined whether the payload portion of the received SCN includes the ARN. If the SCN does not include the ARN in its payload, then the example process may end. If the SCN does include the ARN in its payload, then the process proceeds to block 603.
In block 603, in response to determining that the received SCN includes the ARN, an application level bus rescan is initiated. As part of the bus rescan, updated information is requested from the storage array 110. The rescan may be, for example, a VMFS rescan operation. For example, the initiator device 131 may send to the storage array 110 REPORT LUN and LUN INQUIRY commands. The REPORT LUN command requests the logical unit numbers (LUNs) of the LUs 111 currently included in the storage array 110, and the LUN INQUIRY command requests status information of the LUs 111. The storage array 110 sends a response that includes updated information for the LU 111 that experienced the logical unit change, and thus the initiator device 131 is notified or made aware of the logical unit change.
In block 604, the application level is made aware of the logical unit change. For example, rescan communication to upper level drivers can be through return status or based upon global flag.
The foregoing describes storage techniques. 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 this disclosure.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/US2016/017434 | 2/11/2016 | WO | 00 |