Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
VIRTUAL INITIATOR
Document Type and Number:
WIPO Patent Application WO/2012/170033
Kind Code:
A1
Abstract:
A physical computing system (302) with a virtual initiator (308) includes a processor (303); a memory (305) communicatively coupled to the processor (303); and a host bus adapter (304). The processor (303) provides the virtual initiator (308) in that the processor (303) is to: run a virtual machine (306); present the host bus adapter (304) as a Serially Attached Small Computer System Interface (SCSI) (SAS) expander to an SAS fabric (310); and initiate traffic from the host bus adapter (304) as if it came from an SAS initiator (308) behind an expander, the SAS initiator (308) corresponding to the virtual machine (306).

Inventors:
ELLIOTT ROBERT C (US)
Application Number:
PCT/US2011/039988
Publication Date:
December 13, 2012
Filing Date:
June 10, 2011
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
HEWLETT PACKARD DEVELOPMENT CO (US)
ELLIOTT ROBERT C (US)
International Classes:
G06F13/14; G06F9/44
Foreign References:
US20070165660A12007-07-19
US20070226451A12007-09-27
US20090150643A12009-06-11
US20090157942A12009-06-18
Attorney, Agent or Firm:
ORTEGA, Arthur et al. (Intellectual Property Administration3404 E. Harmony Road,Mail Stop 3, Fort Collins Colorado, US)
Download PDF:
Claims:
CLAIMS

WHAT IS CLAIMED IS:

1 . A physical computing system (302) with a virtual initiator (308) comprising:

a processor (303);

a memory (305) communicatively coupled to said processor (303); and a host bus adapter (304);

in which said processor (303) provides said virtual initiator (308) in that said processor (303) is to:

run a virtual machine (306);

present said host bus adapter (304) as a Serially Attached Small Computer System Interface (SCSI) (SAS) expander to an SAS fabric (310); and initiate traffic from said host bus adapter (304) as if it came from an SAS initiator (308) behind an expander, said SAS initiator (308)

corresponding to said virtual machine (306).

2. The system of claim 1 , further comprising additional virtual machines (306) run by said processor (303), said host bus adapter (304) to initiate traffic as if it came from additional virtual initiators (308), each virtual initiator (308) corresponding uniquely to one of said additional virtual machines (306).

3. The system of claim 1 , further comprising an internal bus system (401 ) to provide an identification field to data sent from said virtual machine (306), said identification field indicating to said host bus adapter (304) that said virtual machine initiated said data.

4. The system of claim 3, in which said host bus adapter (304) maintains a table (404) of identification fields for each virtual machine (306) run by said processor (303), said identification fields corresponding to SAS addresses.

5. The system of claim 1 , in which said processor (303) is further to use Single Root-Input/Output Virtualization (SR-IOV) to indicate to said host bus adapter (304) that said virtual machine (306) initiated said data.

6. The system of claim 1 , wherein an SAS address assigned to said virtual machine (306) is maintained by said virtual machine when said virtual machine is transferred to a different physical computing system.

7. The system of claim 1 , wherein said host bus adapter (304) responds to discover requests from said fabric (310) by indicating a presence of said virtual SAS initiator (308) on said virtual machine (306).

8. A method for Serially Attached Small Computer System Interface (SCSI) (SAS) initiator virtualization, the method comprising:

with a physical computing system (302), running (502) a virtual machine

(306);

with said physical computing system (302), presenting (504) a host bus adapter (304) as an expander to an SAS fabric (310); and

with said physical computing system (302), presenting (506) a virtual SAS initiator (308) associated with said virtual machine as if the virtual SAS initiator (308) is behind said expander.

9. The method of claim 8, further comprising, with said physical computing system (302), running additional virtual machines (306), said physical computing system (302) presenting additional SAS initiators (308) each uniquely associated with one of said additional virtual machines (306).

10. The method of claim 9, further comprising an internal bus system (401 ) to provide an identification field to data sent from one of said virtual machines (306), said identification field indicating to a host bus adapter (304) of said physical computing system which of said virtual machines (306) initiated said data.

1 1 . The method of claim 10, in which said host bus adapter (304) maintains a table (404) of identification fields for each virtual machine (306) run by said physical computing system (302), said identification fields corresponding to SAS addresses.

12. The method of claim 8, further comprising using Single Root - Input/Output Virtualization (SR-IOV) to indicate to said host bus adapter (304) that said virtual machine (306) initiated said data.

13. The method of claim 8, wherein an SAS address assigned to said virtual machine (306) is maintained by said virtual machine when said virtual machine is transferred to a different physical computing system.

14. The method of claim 8, wherein a host bus adapter (304) of said physical computing system (302) responds to discover requests from said fabric (310) by indicating a presence of said virtual SAS initiator (308) on said virtual machine (306).

15. A physical computing system (302) comprising:

a processor (303);

a memory (305) communicatively coupled to said processor (303); and a host bus adapter (304);

in which said processor (303) is to:

run a number of virtual machines (306), each of said virtual machines (306) comprising a virtual SAS (Serially Attached SCSI (Small Computer System Interface)) initiator (308);

present said host bus adapter (304) as an SAS expander to an SAS fabric (310), said host bus adapter (304) being communicatively coupled to said virtual SAS initiators (308); and

forward traffic received from said SAS fabric (310) to one of said virtual machines (308) based on a virtual identification field assigned to said traffic by said host bus adapter (304).

Description:
VIRTUAL INITIATOR

BACKGROUND

[0001] Data centers are used to house computer systems that are specifically designed for storing large amounts of data. These computer systems often make use of multiple storage devices such as disk drives and disk arrays. These storage devices may be either internal or external to these computer systems. Such computer systems use a storage transport protocol and physical interconnect as defined by a bus standard in order to connect to each of these disk drives. One such standard is the SAS (Serial Attached SCSI (Small Computer Serial Interface)) standard.

[0002] The SAS standard defines physical standards and protocols for transferring data between a computing system and the various storage devices available to that computing system. The computing system and the storage devices are assigned unique SAS addresses. Through use of these unique addresses, data can be routed in a point-to-point manner in accordance with SAS protocol standards. That is, data is routed directly from its source to its destination.

[0003] SAS allows a computing system to have access to multiple storage devices and multiple computing systems to have access to the same storage device. The network of computing systems and storage devices using the SAS standard is often referred to as the SAS fabric. [0004] Data centers often employ virtualization of computing systems, in which a single physical machine performs logically like two or more separate devices. Thus, several virtual machines may run on a single physical computing system. The SAS standard has no special provisions for

virtualization. Each virtual machine will thus have to use the host bus adapter of the physical computing device running that virtual machine in order to connect to the SAS fabric. However, the virtual machines are indistinguishable in the SAS fabric because they are sharing the same host bus adapter.

BRIEF DESCRIPTION OF THE DRAWINGS

[0005] The accompanying drawings illustrate various examples of the principles described herein and are a part of the specification. The drawings are merely examples and do not limit the scope of the claims.

[0006] Fig. 1 is a diagram showing an illustrative SAS bus fabric, according to one example of principles described herein.

[0007] Fig. 2 is a diagram showing an illustrative virtual machine implementation, according to one example of principles described herein.

[0008] Fig. 3 is a diagram showing an illustrative virtualization of SAS initiator ports, according to one example of principles described herein.

[0009] Fig. 4 is a diagram showing an illustrative addressing for virtual initiator ports, according to one example of principles described herein.

[0010] Fig. 5 is a flowchart showing an illustrative method for initiator port virtualization, according to one example of principles described herein.

[0011] Throughout the drawings, identical reference numbers designate similar, but not necessarily identical, elements.

DETAILED DESCRIPTION

[0012] The present specification discloses methods and systems for the virtualization of components within the SAS standard so that multiple virtual machines can run on a single physical machine and be addressed uniquely without making any changes to the SAS standard.

[0013] As mentioned above, data centers often employ virtualization of computing systems. Several virtual machines may run on a single physical computing system. Each virtual machine will thus have to use the host bus adapter of the physical computing device running that virtual machine in order to connect to the SAS fabric.

[0014] The components within the SAS standard include initiators, targets, and expanders. An initiator is a device that initiates the transfer of data to or from a target. SAS initiators are often built into the host bus adapter of computing systems and SAS targets are built into storage devices such as hard disks or tape drives. An expander is a device that acts similarly to a network switch. Several target devices and several initiator devices may be connected to a set of expanders. The expanders route data between the various devices.

[0015] According to certain illustrative examples, the host bus adapter of a physical computing system can present itself to the SAS fabric as an expander (a virtual expander) rather than an initiator, with a number of initiators (virtual initiators)behind the virtual expander. Each of those virtual initiators is associated with a virtual machine running on the physical computing system.

[0016] Through use of methods and systems embodying principles described herein, multiple virtual machines running on the same physical computing system may be addressed uniquely on the SAS fabric without making changes to the SAS standard. Specifically, no modifications are made to the SAS routing protocols or to the firmware of the various SAS components. Furthermore, a virtual machine running on one computing system may be moved to another computing system without having to change its SAS address.

[0017] In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough

understanding of the present systems and methods. It will be apparent, however, to one skilled in the art that the present apparatus, systems and methods may be practiced without these specific details. Reference in the specification to "an example" or similar language means that a particular feature, structure, or characteristic described in connection with that example is included as described, but may not be included in other examples.

[0018] Referring now to the figures, Fig. 1 is a diagram showing an illustrative SAS fabric (100). According to certain illustrative examples, the SAS fabric (100) includes an initiator (102), an expander (104), and a number of targets (106). The initiator (102) is typically part of a host bus adapter (108) of a computing system. The targets (106) are typically associated with storage devices such as hard disks (1 10) and disk arrays (112). Various types of cables may be used as the transmission medium to transfer data between the SAS components.

[0019] An initiator (102) is a component that initiates service and task management requests that are to be processed by target devices (106). In response to those requests, the initiator also receives data from the target devices (106). The SAS fabric may include multiple initiators (102), each initiator (102) initiating task management requests to targets (106).

[0020] The SAS initiator (102) may use a variety of protocols to communicate with devices on the SAS fabric. To communicate with SAS devices, Serial SCSI Protocol (SSP) is used. To communicate with Serial Advanced Technology Attachment (SATA) devices, Serial ATA Tunneling Protocol (STP) is used. SATA is a type of computer bus interface that is used to connect host bus adapters to storage devices and optical drives. To configure the expander devices on the SAS fabric, Serial Management Protocol (SMP) is used.

[0021] Various SMP requests may be sent to configure the SAS fabric. For example, when an initiator first connects to the SAS fabric, it sends an IDENTIFY address frame identifying itself as an initiator, target, or expander. If it detects that it is attached to an expander, it sends out a SMP REPORT GENERAL request and multiple SMP DISCOVER requests or SMP DISCOVER LIST requests to determine what other devices are in the SAS fabric. With the devices on the SAS fabric being aware of the other devices to which they are connected, data may be routed accordingly through the fabric. For example, a computing system may store large amounts of data to a disk array (1 12). [0022] Fig. 2 is a diagram showing an illustrative virtual machine implementation (200). As mentioned above, physical computing systems (202) within a datacenter often run multiple virtual machines (208). The use of virtual machines allows (208) multiple operating systems (210) to run on the same physical computing system. Virtual machines are managed by a hypervisor (206) which manages the access of each virtual machine (208) to the physical processor and physical memory. The operating systems of the virtual machines (210) run various programs and applications on the virtualized hardware.

[0023] The implementation of virtual machines includes a physical computing system (202) with a processor (212) and a memory (214). There are many types of memory (214) available. Some types of memory, such as solid state drives and disk drives, are designed for storage. These types of memory typically have large storage volume but relatively slow performance. Other types of memory, such as those used for Random Access Memory (RAM), are optimized for speed and are often referred to as "working memory." The various forms of memory may store information in the form of software and data.

[0024] The processor (208) executes software (204) that is stored in memory (214). This software includes an operating system (204). An operating system (204) allows other applications to interact properly with the hardware of the physical computing system (202). One such application run by the operating system (204) is a hypervisor (206).

[0025] A hypervisor (206) is a piece of software that allows multiple virtual machines (208) to be run on the same physical computing system (202). Each of those virtual machines is used to run an operating system (210).

When an application on a particular virtual machine (208) is run, the processor instructions that form that application are sent to the virtual machine (208). The virtual machine (208) then responds to those instructions as if it were actual hardware.

[0026] Utilizing virtual machines in a data center can provide a number of benefits. Multiple virtual machines are able to run on the same physical hardware, each virtual machine being strongly isolated from the others. Additionally, virtual machines are readily transferable to different physical computing systems. Virtual machines may also be easily replicated.

Furthermore, virtual machines can isolate crashes or software bugs in one virtual machine from the other virtual machines. Thus, virtual machines may also provide for better maintenance and system availability.

[0027] Fig. 3 is a diagram showing an illustrative virtualization (300) of SAS initiators. As shown in Fig. 3, a physical computing system (302), including a processor (303), memory (305) and host bus adaptor (340). The physical computing system (302) hosts a number of virtual machines (308). Each virtual machine (308) includes a virtual initiator (308).

[0028] According to certain illustrative examples, the host bus adapter (304) of a physical computing system (302) will present itself to the SAS fabric (310) as an expander rather than an initiator. When the host bus adapter is connected to the fabric, it sends out an IDENTIFY address frame identifying itself as an expander rather than as an initiator. Additionally, the host bus adapter (304) responds to an SMP REPORT GENERAL request indicating that a number of virtual initiators are attached (at least one per virtual machine) and responds to SMP DISCOVER requests indicating the SAS addresses of the virtual initiators. Thus, the host bus adapter (304) will be seen by the SAS fabric (310) as several initiators behind an expander. The components within the SAS fabric will not have to be modified to handle an initiator that operates on behalf of several virtual machines, each virtual machine with its own SAS address.

[0029] When a virtual machine is first started, the host bus adapter of the physical system running that virtual machine, which is acting as an expander, sends a signal to the SAS fabric indicating that there is a change in the fabric. This signal is referred to as a Broadcast (Change) signal. The host bus adapter will then report through SMP DISCOVER responses that a new SAS address has been added to the SAS fabric for the virtual machine that was recently started. When a virtual machine is stopped, the expander sends out a Broadcast (Change) signal and reports in the SMP DISCOVER responses that the virtual initiator associated with that virtual machine no longer has an SAS address attached

[0030] Fig. 4 is a diagram showing an illustrative addressing (400) for virtual initiators. According to certain illustrative examples, each virtual initiator (408) of each virtual machine (406) may be assigned an SAS address (414). In current examples, an SAS address (414) is a 64 bit value that uniquely identifies an SAS device. The SAS address (414) for physical devices is typically encoded into the hardware of those devices. However, in the case of the virtual initiators here, the SAS address (414) is arbitrarily assigned by software. The SAS address (414) examples illustrated in Fig. 4 do not necessarily comport with the provision of an actual SAS address but are used for illustrative purposes.

[0031] When messages from a virtual initiator (408) of one of the virtual machines is received by the host bus adapter (402), the host bus adapter then determines which virtual machine sent that message so it can be forwarded over the SAS fabric appropriately. In one example, the host bus adapter (402) may employ the use of a virtual machine identification field for the data sent over the internal bus (401 ) of the physical system running the virtual machines (406). Computing systems use an internal bus such as a Peripheral Component Interface Express (PCIe) bus to transfer data between various pieces of hardware within the computing system. Data sent over the PCIe bus includes metadata indicating the virtual machine from which that data was sent and the device to which that data should be sent.

[0032] In one example, virtual machine 1 (406-1 ) initiates

communication with target device 1 (414-1 ). This is done by first sending the proper SMP request to the host bus adapter (402). The hypervisor that manages the virtual machines (406) will first receive that request from one of the virtual machines. The device driver for the host bus adapter as used by the hypervisor can be designed to fill in the virtual machine identification field. This informs the host bus adapter which virtual machine is initiating the message.

[0033] The host bus adapter then utilizes a table (404) to determine the appropriate SAS address for that virtual machine, e.g., virtual machine 1 (406-1 ). The table (404) maintains a listing that correlates the SAS address of each virtual machine (406-1 , 406-2, 406-3) running on the physical computing system with the virtual machine identification field used by the internal bus. The host bus adapter (402) can then send the message to the SAS fabric with the SAS address of virtual machine 1 as the source address. Consequently, the host bus adapter does not have to use place the address into the frames sent to the virtual machines. Rather, the host bus adapter uses the much smaller identification field which is translated by the table (404) of the host bus adapter.

[0034] The host bus adapter (402) thus acts as if it is forwarding that request from a real initiator behind an expander. That SMP message will then be sent to the real expander (412), which, in turn, will forward the message to target device 1 (414-1 ). The host bus adapter (402), which acts as a virtual expander, is designed to produce and respond to all SAS protocols from the SAS fabric, whether they were initiated by the virtual devices running on the virtual system or they were initiated by real devices on the SAS fabric.

[0035] In some cases, the Peripheral Component Interface (PCI) Single Root Input/Output Virtualization (SR-IOV) standard may be used to determine which virtual machine running on the physical computing system is communicating with the SAS fabric. In this case, the hypervisor assigns a PCIe virtual function in the configuration space of the HBA for each virtual machine. The configurations space is a portion of memory within the hardware of the HBA that is used for configuration of devices on the bus.

[0036] In one example, a virtual machine running on the physical computing system sends a message to the SAS fabric. The hypervisor running that virtual machine places that message into the virtual function that

corresponds with that virtual machine. Based on which virtual function a message is in, the host bus adapter can send out that message to the SAS fabric with the appropriate source SAS address attached. The host bus adapter can also forward messages that are received on the SAS fabric to the proper virtual machine based on the destination SAS address of the received messages. [0037] Fig. 5 is a flowchart showing an illustrative method (500) for initiator port virtualization. According to certain illustrative examples, the method includes, with a physical computing system, running (block 502) a virtual system including a virtual machine, with the physical computing system, presenting (block 504) a host bus adapter as an expander to an SAS fabric, and with the virtual system, presenting (block 506) a virtual SAS initiator that is communicatively coupled to the host bus adapter.

[0038] In conclusion, through use of methods and systems

embodying principles described herein, multiple virtual machines running on the same physical computing system may be addressed uniquely on the SAS fabric without making changes to the SAS standard. Specifically, no modifications are made to the SAS routing protocols or to the firmware of the various SAS components. Furthermore, a virtual machine running on one computing system may be moved to another computing system without having to change its SAS address.

[0039] The preceding description has been presented only to illustrate and describe examples of the principles described. This description is not intended to be exhaustive or to limit these principles to any precise form disclosed. Many modifications and variations are possible in light of the above teaching.