Serial advanced technology attachment (SATA) is a standard computer bus interface used to connect host bus adapters to storage devices and other drives. Serial attached small computer system interface (SAS) is a communication protocol for enabling communication between computing devices. An advantage of SAS is interoperability with SATA storage drives. SAS devices include initiators, targets, and expanders. Initiators are devices that can initiate SAS requests, and targets are storage devices that receive and process the SAS requests from initiators. Expander devices are devices that can facilitate connections between multiple targets and a single initiator. The SAS protocol utilizes a point-to-point bus topology; therefore, each target is connected by a dedicated link to an initiator unless an expander is used.
Various features and advantages of the invention will become apparent from the following description of embodiments of the invention, given by way of example only, which is made with reference to the accompanying drawings, of which:
The techniques discussed herein generally relate to providing a method and system for requesting diagnostic information from a SATA device such as a SATA storage cartridge, or a SATA storage drive. SATA devices traditionally have no notion of multiple SATA hosts. Typically, a host processor is configured to communicate with a SATA device through a SATA host controller, which receives commands from the host processor that are then sent to the SATA device. However, an expander of a storage cartridge may be used to perform time division multiple access (TDMA) slicing of the SATA data stream. When multiple server nodes share a single SATA storage device (e.g., HDD, SSD or flash device), in terms of time-access and/or capacity in a SATA-only domain, it can be problematic to have each server report storage device health and temperature information to a central location. In one example, disclosed is an expander communicatively coupled to a chassis manager, wherein a SATA initiator is injected in a time slice of the SATA data stream such that diagnostic information may be requested from the SATA storage cartridge even when a SATA controller is unavailable.
Each of the server node cartridge 102 and the storage node cartridge 104 has an expander 106 and 107, respectively, which can be connected between cartridge connectors 108 and 110 via fabric 112. The expander 106 at the server cartridge unit 102 includes STP server bridges (not shown) that are configured to provide a bridging function between associated server nodes 114A, 114B, 114C, 114D, etc., and a STP storage bridge via fabric 112, as discussed in more detail below in regard to
The expander 107 at the storage node cartridge 104 may be configured to communicate with the expander 106 of the server node cartridge 102 in response to an STP connection request. The expander 107 may process SATA requests from the server nodes 114A, 114B, 114C, 114D. The STP storage bridge may process a SATA request by, for example, offsetting a logical block addressing (LBA) address in the SATA request based on an included SAS address that is assigned to the originating server node (e.g., server node 114A, 114B, 114C, 114D, etc.). After offsetting the LBA address, the expander 107 may pass the SATA request to storage device 116 with the offset LBA address. The expander 107 may be configured to process a SATA request and inject an initiator based on time slicing within a SATA-only domain using a channel access method, such as time division multiple access (TDMA), wherein the SATA data stream is shared by multiple nodes, such as the server nodes 114A, 114B, 114C, 114D. In the embodiments described herein, a channel access method may be used to inject an initiator in response to a diagnostic request from a chassis manager 118.
The chassis manager 118 is configured to communicate with the expander 107 at the storage node cartridge 104 through, for example, an Ethernet connection. In some embodiments, a satellite controller 120 acts as a conduit and connection between the expander 106 and the chassis manager 118. The satellite controller 120 can be directly coupled to the expander 107 via an I2C bus 122, for example. The chassis manager 118 can be configured to send commands to the expander 107, requesting diagnostic information, such as health and temperature information related to the storage drive 116. The expander 107 can take the commands over the I2C bus 122, and inject a pseudo SATA initiator. A pseudo initiator, as referred to herein, is an initiator injected as a result of a diagnostic request rather than an initiator originating from one of the server nodes 114A, 114B, 114C, 114D. The expander 107 is configured to transfer the information from the storage drive 116 to the chassis manager, and this can be done, for example, by using the satellite controller 120 and through the I2C bus 122. The chassis manager 118 can utilize the data it receives in response to the pseudo initiator being injected to inform other controls systems. Thus, using the techniques described herein, the power, temperature and fan speed of a storage drive 116 can be more efficiently monitored and controlled, and other diagnostic information related to the storage drive 116 can be effectively provided in a SATA-only domain.
In embodiments, the chassis manager 118 is provided access to a storage device 116, independent of the server nodes 114A, 114B, 114C, 114D, etc. The chassis manager 118 sends a request for diagnostics information to the expander 107 at the storage node cartridge 104, and the expander 107 generates and injects a SATA initiator. In one example, an injection can be made by the expander 107 without the benefit of a SATA host controller that may be otherwise used. The request for drive health and other diagnostics information to the storage device 116 is the pseudo SATA initiator injected by the expander 107.
Fabric 112 provides communication paths that can comprise any means of providing communication between server node cartridge 102 and storage cartridge 104 over fabric 112. For example, physical layers (PHYs) may be part of input/output modules of ports of expander 107 and may include transmitters and receivers for communicating with transmitters and receivers of PHYs of expander 107. In fabric 112, PHYs represent physical communication structures that can be grouped as ports, which represent logical communication structures. The communication links can include communication medium which can comprise any physical means of providing electrical or optical communication such as, for example, fiber optic cable, copper cable, a suitable combination thereof and the like.
Fabric 112 is described as part of a data storage fabric such as SAS fabric architecture; however, other architectures such as Storage Area Networks (SAN) or Direct Attached Networks (DAN) may also be applicable. Storage device 116 is shown as being connected to expander 107, but storage device 116 can include a different number and configuration of expanders than shown in
The schematic of
STP server bridges (e.g., STP server bridge A 202A, STP server bridge N 202N, etc.) are configured to provide a bridging function between associated server nodes (e.g., server node A 206A, server node N 206N, etc.) and STP storage bridge 210, thereby facilitating communication with storage device 214. Each of the STP server bridges (e.g., STP server bridge A 202A, STP server bridge N 202N, etc.) may be configured by server management module 204 to assign a SAS address to and associate a target address of STP storage bridge 210 with each of the server nodes (e.g., server node A 206A, server node N 206N, etc.). Once configured, the STP server bridges (e.g., STP server bridge A 202A, STP server bridge N 202N, etc.) may inject the SAS address into SATA protocol received from their respective server node (e.g., server node A 206A, server node N 206N, etc.) before passing the SATA protocol to the STP storage bridge 210 at the target address.
Each of the server nodes (e.g., server node A 206A, server node N 206N, etc.) may include a processor with one or more central processing units (CPUs) and/or cores as well as associated memory. The server nodes (e.g., server node A 206A, server node N 206N, etc.) may execute instructions for expander device 107 to provide various computing functions (e.g., provide web services, process data, etc.). In this example, the server nodes (e.g., server node A 206A, server node N 206N, etc.) may share and use storage device 214 for long-term storage.
STP storage bridge 210 provides a bridging function between storage device 214 and the STP server bridges (e.g., STP server bridge A 202A, STP server bridge N 202N, etc.). Specifically, STP storage bridge 210 may be configured to connect to an STP server bridge (e.g., STP server bridge A 204A, STP server bridge N 204N, etc.) in response to an STP connection request and then process SATA requests from the server nodes (e.g., server node A 206A, server node N 206N, etc.). This includes processing and injecting a pseudo SATA initiator 208 in the form of a request for diagnostics information, for example. STP storage bridge 210 may process an SATA request by offsetting an LBA address in the SATA request based on an included SAS address that is assigned to the initiating server node (e.g., server node A 206A, server node N 206N, etc.). After offsetting the LBA address, STP storage bridge 210 may pass the SATA request to the storage device 214 with the offset LBA address.
STP storage bridge 210 may also be configured to partition storage device 214 into drive slices (e.g., slice A 216A, slice N 216N, etc.) as specified by storage management module 212. For example, storage management module 212 may specify a quantity of drive slices and a size for each drive slice, where each drive slice is assigned to a corresponding server node (e.g., server node A 206A, server node N 206N, etc.). A drive slice (e.g., slice A 216A, slice N 216N, etc.) of storage device 214 may be a logical storage unit. For example, a drive slice (e.g., slice A 216A, slice N 216N, etc.) may be a range of storage cylinders of a hard drive that are reserved for use by a corresponding server node (e.g., server node A 206A, server node N 206N, etc.).
STP storage bridge 210 may inject a pseudo SATA initiator 208 configured to facilitate communications between the chassis manager 118 of
In some embodiments, the storage management module 212 may configure STP storage bridge 210 with operating parameters, which, in some embodiments, can be received from the chassis manager 118. Specifically, storage management module 212 may define a lookup table for STP storage bridge 210, wherein each record in the lookup table includes a SAS address to identify an initiator (i.e., a record for each SAS address assigned to an initiator by an initiator management module (not shown)) that is associated with a drive slice 216 of a storage device 214 connected to STP storage bridge 210. The initiator may be associated with the drive slice by an offset value that is included in each record of the lookup table, where the offset value corresponds to the starting address of the drive slice in the storage device 214. The lookup table allows the STP storage bridge 210 to process SATA requests received from the STP initiator bridges (not shown) by, for example, offsetting LBA addresses in the SATA requests based on an offset value from a relevant record in the lookup table, where the offset LBA address is directed at the drive slice associated with the initiator. At this stage, the storage device 214 may then fulfill the SATA request using the offset LBA address.
Storage device 214 may be any hardware storage device for maintaining data accessible to the server nodes (e.g., server node A 206A, server node N 206N, etc.). For example, storage device 214 may include one or more hard disk drives, solid state drives, tape drives, and/or any other suitable storage devices.
As discussed, in some embodiments the storage management module 212 may also provide a drive slice configuration to the STP storage bridge 210, which then uses the drive slice configuration to partition the storage device into drive slices for the initiators. The drive slice configuration may include, for example, parameters such as a quantity of drive slices, a size of each drive slice, a time share for an initiator assigned to each drive slice, etc. The time share of an initiator may be the portion of time allotted to fulfill SATA requests from the initiator. In an example, multiple initiators (including the pseudo SATA initiator 208 in the form of a diagnostics request initiated at the expander device 107) are sharing access to the same storage device 214, and the STP storage bridge 210 may schedule access for each of the initiators using a scheduling algorithm that accounts for the time share of each initiator.
In some cases, the management modules (e.g., initiator management module (not shown), storage management module 212) may include interfaces to allow users, such as system administrators of expander device 107, to specify or modify operating parameters. The interfaces may allow the system administrator to access the operating parameters using an electronic device, such as a personal computer, with a user interface for configuring the management modules. For example, an interface may allow a system administrator to specify the SAS address and target address that should be assigned to each initiator at a corresponding initiator bridge by the initiator management module. In another example, an interface may allow a system administrator to specify drive slice parameters, time share parameters for each initiator, and an initiator lookup table that should be assigned to STP storage bridge 210 by storage management module 212.
Each of the modules described above may be implemented to be executed on a processor with one or more central processing units (CPUs), microprocessors, and/or other hardware devices suitable for retrieval and execution of instructions stored in a machine-readable storage medium. As an alternative or in addition to retrieving and executing instructions, the processor may include one or more electronic circuits comprising a number of electronic components for performing the functionality of one or more of the instructions.
The machine-readable storage medium may be any electronic, magnetic, optical, or other physical storage device that stores executable instructions. Thus, the machine-readable storage medium may be, for example, Random Access Memory (RAM), an Electrically-Erasable Programmable Read-Only Memory (EEPROM), a storage drive, an optical disc, and the like.
The schematic of
Method 400 may start in block 402 and continue to block 404, where expander device 107 may configure an STP initiator bridge 202 with SAS and target addresses. Specifically, a SAS address may be assigned to the initiator associated with the STP initiator bridge 202 and a target address of an STP storage bridge 206 may be associated with the initiator. A storage device, such as the storage device 116, connected to the STP storage bridge 206 may be a shared storage resource of server nodes, such as the server nodes 114 of
In one example, disclosed is an expander device that provides for SATA initiator addressing and storage device slicing, and that is configured to inject an additional pseudo SATA initiator in the form of a diagnostic request directed at a storage device. For example, in some embodiments, an expander device configures an initiator SAS address to uniquely identify a SATA initiator, where the SATA initiator is associated with a target address of a STP storage bridge. The STP storage bridge may be configured to associate the initiator SAS address with a drive slice of a SATA storage device, and there can be one or more drive slices, which can be sliced over a time domain or based on capacity. In this manner, example embodiments disclosed herein allow multiple SATA initiators to share a single SATA storage device. Specifically, by assigning an initiator SAS address to a SATA initiator, the SATA requests may be intercepted by an expander and routed to an appropriate drive slice of the shared SATA storage device. Because the routing is abstracted by the expander, the SATA initiator and SATA storage device may operate in a conventional fashion without any knowledge of the initiator SAS address assignment. A diagnostics request made from a chassis manager is injected by the expander device as a pseudo SATA initiator, and communicates with a drive or drive slice in the same manner as other initiators of the current method and system.
In block 408, expander device 107 may process a SATA request from a current initiator. The current initiator may be the initiator that currently has priority with the STP storage bridge because the current initiator's time share is active. The current initiator can include, in some cases, the pseudo SATA initiator that is embodied by a diagnostics request originating at a chassis manager 118. In some examples, SATA requests may be processed with respect to drive capacity slicing techniques. In some examples, an entire drive could be processed as a single slice. In other examples, if a SATA request from an initiator includes an inquiry command for storage parameters, the SATA request may be processed by the STP storage bridge by returning storage parameters that describe a drive slice associated with the initiator as if the drive slice were a distinct storage device. In other words, the initiator is unaware that it is accessing a partition of a shared storage device. Storage parameters provided by the STP storage bridge may include a storage device type (e.g., magnetic disk, magnetic tape, optical drive device, etc.), a size of the drive slice, support for various addressing modes, a human-readable description of the drive slice, etc.
At decision node 410, it is determined if the time share of the current initiator is complete. If the time share is not complete, method 400 returns to block 408, where expander device 107 continues to process SATA requests from the current initiator. Continuing to decision node 412, a determination is made whether the diagnostics or health request has been initiated by a chassis manager. If it is determined that the chassis manager has initiated a diagnostics request, then method 400 continues to process the diagnostics or health request at block 414. As an example of how the chassis manager can essentially communicate directly with a storage device, an Ethernet connection is made from the chassis manager to a satellite controller, which is a conduit to connect with the expander device via an I2C bus. In this way, the chassis manager can be configured to access a storage device, and the request can act as a pseudo initiator to be injected to a storage device under a time domain. In one example, disclosed herein, a host SATA controller is not accessed when the chassis manager initiates the diagnostics request.
After the health request is processed at block 414, or if it was determined at decision node 412 that no health request had been initiated after the time share was complete, then a determination is made at node 416 whether time share adjustments should be made. The determination may be made based on the performance requirements of the initiators, which may be calculated by measuring runtime (i.e., during operation of expander device 107) performance metrics of each initiator. Performance metrics may include, for example, the number of command timeouts (i.e., time shares with no command activity) and the number of commands during each time share of an initiator. An initiator that has a large number of command timeouts during its time shares may be a candidate for having its time share reduced. Conversely, an initiator that has a large number of commands during its time shares may be a candidate for having its time share increased.
If it is determined at node 416 that a time share adjustment should be made, the time share parameters for the initiators may be adjusted at block 418. For example, an initiator with a large number of commands during its time share may receive an increased time share while an initiator with a large number of command timeouts during its time shares may receive a decreased time share. If it is determined that a time share adjustment should not be made, the current initiator may be set to the next initiator with a time share at block 420. At this stage, method 400 may return to block 408, where the expander device may process SATA requests from the next initiator.
The method of
At block 505, the expander device reads the health information from the storage device. Method 500 continues when the chassis manager checks the status of the diagnostics or health request at block 506. If the expander has received the information related to the request, then the chassis manager will obtain that information. If the expander has not yet received all the pertinent data related to the diagnostics request, then the chassis manager may be configured to wait, and periodically check the status of the request at the expander until the data are ready to be relayed. When the health request is complete, at block 508, the chassis manager reads the information collected by the expander device based on the health request. At block 510, the chassis manager is configured to parse the data, and can record the data originally requested at block 502.
In one example, the chassis manager is configured to communicate directly with a storage device through a satellite controller/conduit, and through the pseudo SATA initiator injected by the expander device. This provides a way for the chassis manager to essentially have direct access to a storage device independent of the servers. In an example, the chassis manager is configured to access the health, temperature, and other information related to a storage device, regardless of whether the server nodes are in fault condition or are powered down.
Method 500 can optionally continue to block 512, where other controls systems may be notified or users may be informed of potential health issues related to a particular storage device. Drive information about the storage device can be received from the storage device itself, enabling the chassis manager to determine information like drive temperature and whether the drive is in a fail state or powered off. Controls systems can be configured to use the information stored at the chassis manager to send signals to a particular storage device or server node. Control of the storage device, such as control of drive fan speed, and control of power to the drive, for example, can be achieved.
The method of
A processor 602 generally retrieves and executes the instructions stored in the non-transitory, computer-readable medium 600 to operate the storage device in accordance with an example. In an example, the tangible, machine-readable medium 600 can be accessed by the processor 602 over a bus 604.
A region 606 of the non-transitory, computer-readable medium 600 may include functionality to implement an expander device as described herein. For example, the instructions may include instructions for receiving a request for diagnostics of components of the storage cartridge. The instructions may also include instructions for inserting the request for diagnostics at a time slice by an expander of the storage cartridge; wherein the request is inserted into a time slice of a serially attached small computer system protocol data stream.
Although shown as contiguous blocks, the software components can be stored in any order or configuration. For example, if the non-transitory, computer-readable medium 600 is a hard drive, the software components can be stored in non-contiguous, or even overlapping, sectors.
The foregoing disclosure describes a number of example embodiments for providing SATA initiator addressing and storage device slicing, and describes using a pseudo SATA initiator in the form of a diagnostics request. In this manner, the embodiments disclosed herein encapsulate SATA initiator addressing in an expander device that routes SATA requests from multiple initiators to drive slices of a single target device. Appearing to the system as another of the SATA initiators is a pseudo SATA initiator, which is not an actual initiator, but is merely a request for information that originates at a chassis manager, is processed at the expander device, and is injected when ready in a similar manner as another initiator. Thus, the expander device is configured to provide SATA initiator addressing and storage device slicing, while injecting a pseudo SATA initiator and without using an actual SATA host controller to facilitate communication with the drive slice.
While the present techniques may be susceptible to various modifications and alternative forms, the examples discussed above have been shown only by way of example. It is to be understood that the technique is not intended to be limited to the particular examples disclosed herein. Indeed, the present techniques include all alternatives, modifications, and equivalents falling within the true spirit and scope of the appended claims.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/US2014/013659 | 1/29/2014 | WO | 00 |