U.S. patent application number 15/095788 was filed with the patent office on 2016-08-04 for zoning data to a virtual machine.
The applicant listed for this patent is HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP. Invention is credited to Michael G. Myrah, Balaji Natrajan.
Application Number | 20160224369 15/095788 |
Document ID | / |
Family ID | 45994237 |
Filed Date | 2016-08-04 |
United States Patent
Application |
20160224369 |
Kind Code |
A1 |
Myrah; Michael G. ; et
al. |
August 4, 2016 |
ZONING DATA TO A VIRTUAL MACHINE
Abstract
In a method to zone data to a virtual machine, support
information is exchanged between a physical controller and an
expander, the support information comprising an indication of an
ability of the physical controller and the expander to support
thereon a set of virtual controllers and a set of virtual physical
layers (virtual PHYs), respectively. In response to a positive
indication sending a list of SAS addresses to the expander, a list
of SAS addresses is sent to the expander. Then, a first SAS address
of the list of SAS addresses is assigned to a first virtual PHY of
the set of virtual PHYs, wherein the assigning is performed by the
expander, and wherein the first virtual PHY at an assigned SAS
address corresponds to a first virtual controller of the set of
virtual controllers.
Inventors: |
Myrah; Michael G.; (Cypress,
TX) ; Natrajan; Balaji; (Spring, TX) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP |
Houston |
TX |
US |
|
|
Family ID: |
45994237 |
Appl. No.: |
15/095788 |
Filed: |
April 11, 2016 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
13879805 |
Apr 17, 2013 |
9336032 |
|
|
PCT/US2010/054540 |
Oct 28, 2010 |
|
|
|
15095788 |
|
|
|
|
Current U.S.
Class: |
1/1 |
Current CPC
Class: |
G06F 2009/45579
20130101; G06F 13/4022 20130101; G06F 13/4068 20130101; G06F
2009/45562 20130101; G06F 9/45558 20130101; G06F 13/4282 20130101;
G06F 9/45533 20130101 |
International
Class: |
G06F 9/455 20060101
G06F009/455; G06F 13/42 20060101 G06F013/42; G06F 13/40 20060101
G06F013/40 |
Claims
1. A non-transitory computer-readable storage medium comprising
instructions stored which, when executed by an expander of a serial
attached small computer system interface (SAS) switch, cause the
expander to: exchange support information between the expander and
a physical controller, the physical controller coupled to a server,
the support information comprising an indication of an ability of
the physical controller to support a set of virtual controllers and
an indication of an ability of the expander to support a set of
virtual PHYs; receive a list of SAS addresses at the expander from
the physical controller, the SAS addresses representing virtual
controllers of the set of virtual controllers; and assign a first
SAS address of the list of SAS addresses to a first virtual PHY of
the set of virtual PHYs by the expander based upon virtual PHY to
physical controller PHY mapping information, the first virtual PHY
at an assigned SAS address corresponding to a first virtual
controller of the set of virtual controllers.
2. The non-transitory computer-readable storage medium of claim 1,
the instructions to further cause the expander to: receive data via
the first virtual PHY.
3. The non-transitory computer-readable storage medium of claim 2,
the instructions to further cause the expander to: couple a storage
drive with the first virtual PHY.
4. The non-transitory computer-readable storage medium of claim 1,
the instructions to further cause the expander to: access a virtual
to physical mapping table having virtual to physical mapping table
information comprising the virtual PHY to physical controller PHY
mapping information.
5. The non-transitory computer-readable storage medium of claim 4,
the instructions to further cause the expander to: determine a
target physical controller PHY of at least one physical controller
PHY for received data based on the virtual PHY to physical
controller PHY mapping information, the at least one physical
controller PHY being coupled with the physical controller.
6. The non-transitory computer-readable storage medium of claim 5,
the instructions to further cause the expander to: send the
received data from the expander to the target physical controller
PHY.
7. The non-transitory computer-readable storage medium of claim 1,
the instructions to further cause the expander to: receive zoning
instructions via a graphical user interface, the zoning
instructions comprising the virtual PHY to physical controller PHY
mapping information.
8. The non-transitory computer-readable storage medium of claim 1,
the instructions to further cause the expander to: assign a second
SAS address of the list of SAS addresses to a second virtual PHY of
the set of virtual PHYs, the second virtual PHY at a second
assigned SAS address representing a second virtual controller of
the set of virtual controllers.
9. The non-transitory computer-readable storage medium of claim 8,
the instructions to further cause the expander to: receive data at
the second virtual PHY.
10. The non-transitory computer-readable storage medium of claim 1,
the instructions to further cause the expander to: determine
expander PHYs on the expander, the expander PHYs comprising at
least one of a set of expander physical PHYs and the set of virtual
PHYs.
11. The non-transitory computer-readable storage medium of claim
10, the instructions to further cause the expander to: access
information about a device coupled with one of the expander
PHYs.
12. A serial attached small computer system interface (SAS) switch
comprising: an expander coupled with a physical controller having
at least one physical controller PHY, the expander comprising: a
virtual to physical mapping table comprising virtual PHY to
physical controller PHY mapping information; and a set of virtual
PHYs to receive data to be routed to a first virtual machine; and a
set of expander PHYs coupled with the expander to relay the data to
a physical controller PHY of the at least one physical controller
PHY, the expander to exchange support information with the physical
controller, the support information comprising an indication of an
ability of the physical controller to support a set of virtual
controllers and an indication of an ability of the expander to
support the set of virtual PHYs.
13. The SAS switch of claim 12, the expander further to: receive a
list of SAS addresses from the physical controller, the SAS
addresses of the list of SAS addresses representing virtual
controllers of the set of virtual controllers.
14. The SAS switch of claim 13, further comprising: a SAS address
list assigner coupled with the expander to assign a first SAS
address of the list of SAS addresses to a first virtual PHY of the
set of virtual PHYs, the first virtual PHY at the first SAS address
corresponding to a first virtual controller of the set of virtual
controllers on the first virtual machine.
15. The SAS switch of claim 14, further comprising: a virtual to
physical mapping table information accessor coupled with the
expander to access the virtual PHY to physical controller PHY
mapping information.
16. The SAS switch of claim 15, further comprising: a target PHY
determiner coupled with the virtual to physical mapping table
information accessor to determine a target physical controller PHY
of the at least one physical controller PHY to which to send the
data based on the virtual PHY to physical controller PHY mapping
information.
17. The SAS switch of claim 12, the virtual to physical mapping
table is based upon zoning instructions for the expander from a
graphical user interface, the zoning instructions comprising at
least one virtual PHY to physical controller mapping direction.
18. A non-transitory computer-readable storage medium comprising
instructions stored which, when executed by a physical controller
of a server, cause the physical controller to: communicate with an
expander that is coupled with a serial attached small computer
system interface (SAS) switch to determine that the expander is
enabled to support a set of virtual PHYs; send a list of SAS
addresses via at least one physical controller PHY coupled with the
physical controller to the expander when the expander is determined
to be enabled to support the set of virtual PHYs, the SAS addresses
of the list of SAS addresses representing virtual controllers; and
receive target physical controller PHY data at a target physical
controller PHY of the at least one physical controller PHY from the
expander.
19. The non-transitory computer-readable storage medium of claim
18, the instructions to further cause the physical controller to:
access the target physical controller PHY data received at the
target physical controller PHY.
20. The non-transitory computer-readable storage medium of claim
19, the instructions to further cause the physical controller to:
send the target physical controller PHY data to a first virtual
controller of the virtual controllers that is associated with the
target physical controller PHY.
Description
RELATED APPLICATION
[0001] This application is a continuation of U.S. patent
application Ser. No. 13/879,805, filed Apr. 17, 2013, currently
allowed, which is herein incorporated by reference in its
entirety.
BACKGROUND
[0002] In general, a virtual machine is an efficient, isolated
duplicate of a real machine. Virtual machines may be separated into
two major categories, system virtual machines and process virtual
machines. In brief, a system virtual machine provides a complete
system platform which support the execution of a complete operating
system. A process virtual machine is designed to run a single
program, which means that it supports a single process.
[0003] System virtual machines allow the sharing of the underlying
physical machine resources between different virtual machines, each
running its own operating system. The software layer providing the
virtualization is called a virtual machine monitor or a hypervisor.
The hypervisor can run on bare hardware (native VM) or on top of an
operating system (hosted VM), based on their use and degree of
correspondence to a real machine. Utilizing a hypervisor enables
multiple operating system environments to reside on a single
computer.
DESCRIPTION OF THE DRAWINGS
[0004] FIG. 1 A is a block diagram of a system for zoning data to a
virtual machine, according to one embodiment of the present
technology.
[0005] FIG. 1 B is a block diagram of a system for zoning data to a
virtual machine, according to one embodiment of the present
technology.
[0006] FIG. 2 is a block diagram of a device for zoning a hard
drive to a virtual machine, according to one embodiment of the
present technology.
[0007] FIG. 3 is a flow diagram of a method for zoning data to a
virtual machine, according to one embodiment of the present
technology.
[0008] FIG. 4 is a diagram of an example computer system used for
zoning data to a virtual machine, according to one embodiment of
the present technology.
[0009] The drawings referred to in this description should not be
understood as being drawn to scale unless specifically noted.
DESCRIPTION OF EMBODIMENTS
[0010] Reference will now be made in detail to embodiments of the
present technology, examples of which are illustrated in the
accompanying drawings. While the technology will be described in
conjunction with various embodiment(s), it will be understood that
they are not intended to limit the present technology to these
embodiments. On the contrary, the present technology is intended to
cover alternatives, modifications and equivalents, which may be
included within the spirit and scope of the various embodiments as
defined by the appended claims.
[0011] Furthermore, in the following detailed description, numerous
specific details are set forth in order to provide a thorough
understanding of the present technology. However, the present
technology may be practiced without these specific details. In
other instances, well known methods, procedures, components, and
circuits have not been described in detail as not to unnecessarily
obscure aspects of the present embodiments.
[0012] Unless specifically stated otherwise as apparent from the
following discussions, it is appreciated that throughout the
present detailed description, discussions utilizing terms such as
"exchanging", "sending", "assigning", "receiving", "coupling",
"accessing", "determining", "utilizing", or the like, refer to the
actions and processes of a computer system, or similar electronic
computing device. The computer system or similar electronic
computing device manipulates and transforms data represented as
physical (electronic) quantities within the computer system's
registers and memories into other data similarly represented as
physical quantities within the computer system memories or
registers or other such information storage, transmission, or
display devices. The present technology is also well suited to the
use of other computer systems such as, for example, optical
computers.
[0013] The discussion will begin with a brief overview of a single
root complex utilizing input/output virtualization SR-IOV and a
Serial Attached Small Computer System Interface (SAS) system in
relation to zoning hard drives to a virtual machine associated with
a SAS topology. The discussion will then focus on embodiments of
the present technology that provide a system for zoning data to a
virtual machine, within a SAS topology.
Overview
[0014] In general, single root topology involves a single computer
that supports virtualization technology. SR-IOV is a specification
that enables multiple virtual machines running simultaneously
within a single computer to natively share one or more devices,
such as computer expansion cards (PCIe devices). Through the
virtualization technology, a hypervisor, software on or firmware
embedded in the computer's hardware platform, manages operating
systems on the virtual machines. Thus, for example, SR-IOV in
conjunction with a hypervisor, allows a PCIe device to appear as
multiple physical PCIe devices utilizing physical-functions (PFs)
and virtual functions (VFs). SR-IOV may be used in conjunction with
SAS.
[0015] Briefly, a SAS is a computer bus used to move data to and
from computer storage devices, such as hard drives. A SAS generally
includes an initiator device, a target device, and a service
delivery subsystem.
[0016] The initiator device, also referred to as a controller,
originates device-service and task-management requests for
processing to be performed by a target device. The initiator device
receives responses of these same requests from one or more target
devices. An initiator device may be an on-board component on a
motherboard.
[0017] A target device contains logical units and target ports. It
receives device-service and task-management requests for
processing, and sends responses to these requests to the initiator
device. A target device may be a hard drive.
[0018] A service delivery subsystem is a part of an input/output
system that transmits information between the initiator device and
the target device. An expander device forms part of the service
delivery subsystem and facilitates communication between devices
within the SAS topology. For example, expanders facilitate the
connection of multiple end devices in the SAS topology to a port of
an initiator device.
[0019] Currently, in order to zone a group of hard drives to a
virtual machine in a SAS topology, the SR-IOV requires support both
in the Basic Input Output System (BIOS) and the Operating System
(OS) or the hypervisor. For example, a SR-IOV capable SAS virtual
controller presents itself as being multiple VFs, thus appearing to
the hypervisor as multiple virtual controllers, one for each VF. In
order to zone a group of hard drives to virtual machines, the group
of hard drives are first zoned to a PF. Secondly, using host side
software such as a hypervisor, a subset of these hard drives are
then mapped to a specific VF. The hard drives then appear on the OS
that is using that particular VF.
[0020] Embodiments of the present technology zone hard drives
directly to specific VFs using SAS technology, without the use of
host side software or firmware, thereby increasing efficiencies by
eliminating a configuration step of the current method. Further,
since each virtual controller corresponds to a unique SAS address,
SAS switch management software may determine if drives or storage
enclosures zoned to virtual controllers can be powered down. For
example, according to embodiments of the present technology, if a
hypervisor turns off a virtual machine, the SAS switch can
determine that the hard drive that has been assigned to the virtual
controller on that virtual machine no longer needs to be spun up.
The SAS switch will then spin the hard drive down until the virtual
machine is powered on again. This power saving technique is
applicable to SAS expander devices, SAS expander PHYs, hard drives,
and storage enclosures.
[0021] The following discussion will begin with a description of
the structure of the components of the present technology. The
discussion will then be followed by a description of the components
in operation.
Structure
[0022] FIG. 1A is a block diagram of a system for zoning data to a
virtual machine, according to one embodiment of the present
technology. FIG. 1B is also a block diagram of a system for zoning
data to a virtual machine, according to another embodiment of the
present technology. Referring now to FIGS. 1A and 1B, in one
embodiment, the system 100 includes a physical controller 102, at
least one physical controller physical layer (physical controller
PHY) 106a, 106b, 106c and 106n . . . ), an expander 110 and a set
of expander virtual PHYs 118a, 118b, 118c and 118n . . . and a set
of expander physical layers (expander PHYs) 126a, 126b, 126c and
126n . . . both coupled with the expander 110.
[0023] In one embodiment, the physical controller 102 is coupled
with a server 104. In another embodiment, at least one physical
controller PHY 106a, 106b, 106c and 106n . . . (hereinafter, at
least one physical controller PHY 106) is coupled with the physical
controller 102. It should be understood that the system 100 may
include anywhere from one physical controller PHY to as many
physical controller PHYs (physical controller PHY 106n . . . ) that
the physical controller 102 may support. For purposes of clarity
and brevity hereinafter, when referring to at least one physical
controller PHY in general, physical controller PHY 106 will be
referenced. At least one physical controller PHY 106 are coupled
with the outer edges of physical controller 102.
[0024] In one embodiment, system 100 includes an expander 110
coupled with a SAS switch 112 and is further communicatively
coupled with the physical controller 102. In one embodiment, the
SAS switch is within SAS topology 170. By communicatively coupled,
it is meant that the expander 110 is coupled with physical
controller 102 in a manner which enables the expander 110 and the
physical controller 102 to exchange information.
[0025] In one embodiment, the communicative coupling occurs through
a physical connection, such as a cable. For example, in one
embodiment, the system 100 utilizes 4 physical layer (PHY) lanes
per cable. It should be appreciated that more or less PHY lanes per
cable may be used and is dependent on the cable's size and ability
to enclose the PHY lanes. In another embodiment, the communicative
coupling is achieved through wiring. For example, in blade server
system, internal wiring within the blade enclosure connects the
server 104 and the physical controller 102 coupled therewith with
the expander 110.
[0026] In one embodiment, the expander 110 includes a virtual to
physical mapping table 114. The virtual to physical mapping table
114 includes a virtual physical layer (virtual PHY) to physical
controller PHY mapping information 116. The virtual PHY to physical
controller PHY mapping information 116 refers to information for
routing data from a virtual PHY that is coupled with the expander
110, as will be explained herein, to at least one physical
controller PHY 106 coupled with the physical controller 102.
[0027] In one embodiment, the set of virtual PHYs 118a, 118b, 118c
and 118n . . . (hereinafter, set of virtual PHYs 118 unless
otherwise specified) of system 100 is configured for receiving data
122 to be routed to a first virtual machine 124a. It should be
understood that the set of virtual PHYs 118 may include just one
virtual PHY or any amount of virtual PHYs greater than one that may
be physically supported by the expander 110. In one embodiment, the
set of virtual PHYs 118 are coupled with the outer edges of the
expander 110. It should be appreciated that data 122 from more than
one virtual PHY of the set of virtual PHYs 118 may be routed to the
same physical controller PHY of the at least one physical
controller PHY 106. Additionally, while the virtual machine 124a is
shown in FIGS. 1A, 1B and 2 and residing on physical controller
102, it should be understood that a portion of the group of virtual
machines 124a, 124b, 124c and 124n may reside separately from the
physical controller 102 and coupled therewith.
[0028] In one embodiment and as will be explained herein in the
Operation section below, the data 122 causes a storage drive to be
communicatively coupled with a virtual PHY of the set of virtual
PHYs 118. The data 122 may be instructions to zone a device 168
such as, but not limited to, a particular storage enclosure, to a
server 104 and/or a particular physical controller on that server
104.
[0029] In one embodiment, the set of expander PHYs 126a, 126b, 126c
and 126n . . . (hereinafter expander PHYs 126 unless otherwise
specified) are coupled with the expander 110. It should be
understood that the set of expander PHYs 126 may include just one
expander PHY or any amount of expander PHYs greater than one that
may be physically supported by the expander 110. In one embodiment,
the set of expander PHYs 126 is configured for relaying the
received data 130 to a physical controller PHY of the at least one
physical controller PHY 106. In one embodiment, the physical
controller 102 and the expander 110 are configured for exchanging
support information 132. The support information 132 includes an
indication of an ability of the physical controller 102 and the
expander 110 to support thereon a set of virtual controllers 124
and the set of virtual PHYs 118, respectively. In one embodiment,
the physical controller 102 queries the expander 110 if the
expander 110 is enabled to support a set of virtual PHYs 118. In
another embodiment, the expander 110 queries the physical
controller 102 if the physical controller 102 is enabled to support
a set of virtual controllers 124. It should be understood that the
set of virtual controllers 124 may include one or more than one
virtual controllers. Further, it should be appreciated that more
than one physical controller 102 may be coupled with server 104,
having thereon physical controller PHYs.
[0030] In one embodiment, the system 100 further includes a SAS
address list sender 136 and a SAS address list assigner 144. In one
embodiment, the SAS address list sender 136 is coupled with the
physical controller 102. In one embodiment, the SAS address list
sender 136 is configured for sending to the expander 110 a list of
SAS addresses 138 that includes SAS addresses 140a, 140b, 140c and
140n . . . (hereinafter, SAS addresses 140 unless otherwise
specified). Each SAS address of the list of SAS addresses 138
represents a virtual controller of a set of virtual controllers
142. Further, the list of SAS addresses 138, in one embodiment, may
be found in SAS address store 172. The set of virtual controllers
142 includes virtual controllers 142a, 142b, 142c and 142n . . . .
It should be understood that the set of virtual controllers 142 may
include any number of virtual controllers greater than one that is
capable of being supported by system 100 and its components.
Furthermore, as shown in FIGS. 1A and 1B, as well as FIG. 2 to be
described herein, four virtual machines are shown, virtual machines
124a, 124b, 124c and 124n . . . . It should be understood that any
number of virtual machines greater than one that is capable of
being supported by system 100 and its components may be present in
system 100. Furthermore, virtual machines 124a, 124b, 124c and 124n
may be represented herein as a set of virtual machines 124.
[0031] While the set of virtual machines 124 is shown in FIGS. 1A
and 1B as being part of the physical controller 102, and the set of
virtual controllers 142 is shown as being part of the set of
virtual machines 124, it should be noted that the set of virtual
machines 124 may be outside the physical controller 102, but
associated with a virtual controller of the set of virtual
controllers 142 that may be part of the physical controller
102.
[0032] In another embodiment, the SAS address list assigner 144 is
coupled with the expander 110. The SAS address list assigner 144 is
configured for assigning a first SAS address 140a of the list of
SAS addresses 138 to a first virtual PHY 118a of the set of virtual
PHYs 118. The first virtual PHY 118a at the assigned SAS address
140a represents an expander PHY of the set of expander PHYs 126 as
being connected to a virtual controller of the set of virtual
controllers 142. It should be understood that any one of the set of
virtual PHYs 118, set of virtual controllers 142 and virtual
machines 124 may be designated as the "first" virtual PHY, virtual
controller and virtual machine, respectively.
[0033] In one embodiment, system 100 further includes a virtual to
physical mapping table information accessor 146 and a target PHY
determiner 148. In one embodiment, the virtual to physical mapping
table information accessor 146 is coupled with the expander 110.
The virtual to physical mapping table information accessor 146 is
configured for accessing the virtual PHY to physical controller PHY
mapping information 116.
[0034] In one embodiment, the target PHY determiner 148 is coupled
with the virtual to physical mapping table information accessor
146. In one embodiment, the target PHY determiner 148 is configured
for determining a target physical controller PHY 150 of the at
least one physical controller PHY 106 to which to send the received
data 130 based on the virtual PHY to physical controller PHY
mapping information 116. For example and as is explained herein in
the Operation section, the virtual PHY to physical controller PHY
mapping information 116 provides information as to which physical
controller PHY to which to route the received data 130.
[0035] In one embodiment, the system 100 further includes an
expander data sender 152 that is coupled with the expander 110. The
expander data sender 152, in one embodiment, is configured for
sending the received data 130 to the target physical controller PHY
150. The target physical controller PHY 150 may be any one of the
at least one physical controller PHYs 106. Once the received data
130 is sent to the target physical controller PHY 150 as
designated, the received data 130 becomes "target physical
controller PHY data" 154. For example, the target physical
controller PHY 150 may be determined to be physical controller PHY
106a.
[0036] Embodiments of the present technology further include a
target physical controller PHY accessor 156 and a physical
controller data sender 158. In one embodiment, the target physical
controller PHY accessor 156 is coupled with the physical controller
102. The target physical controller PHY accessor 156 is configured
for accessing the target physical controller PHY data 154 at the
target physical controller PHY, such as target physical controller
PHY 106a.
[0037] In one embodiment, the system 100 further includes an
instruction manager 160 that is coupled with the expander 110. In
one embodiment, the instruction manager 160 is configured for
receiving an expander zoning instruction 162 via a graphical user
interface 164. The expander zoning instruction 162, in one
embodiment, is received at the expander 110. The expander zoning
instruction 162 comprises at least one virtual PHY to a virtual
controller mapping direction 166.
[0038] FIG. 2 shows a block diagram of a device 200 for zoning a
hard drive to a virtual machine, in accordance with embodiments of
the present technology. Referring now to FIGS. 1A, 1B and 2, in one
embodiment, the device 200 includes a physical controller 102 and
at least one physical controller PHY 106. In one embodiment, the
physical controller 102 is coupled with a server 104.
[0039] In one embodiment, the physical controller 102 includes a
support determiner 202 and an SAS address list sender 136. In one
embodiment, the support determiner 202 is configured for
communicating with an expander 110 that is coupled with a SAS
switch 112. The communicating includes determining if the expander
110 is enabled to support a set of virtual PHYs 118 thereon, as is
explained herein.
[0040] In one embodiment, the SAS address list sender 136 is
configured for sending a list of SAS addresses 138 to the expander
110 if the expander 110 is determined to be enabled to support a
set of virtual PHYs 118 thereon. In one embodiment, each SAS
address 140a, 140b, 140c and 140n . . . of the list of SAS
addresses 138 represents a virtual controller, such as virtual
controller 142a.
[0041] In another embodiment, the physical controller 102 further
includes a target physical controller PHY accessor 156 and a
physical controller data sender 158. In one embodiment, the target
physical controller PHY accessor 156 is configured for accessing
the target physical controller PHY data 154 at the target physical
controller PHY 150.
[0042] In another embodiment, the physical controller data sender
158 is configured for sending to a virtual controller, such as
virtual controller 142a, the target physical controller PHY data
154.
[0043] In one embodiment, at least one physical controller PHY 106
is coupled with the physical controller 102. In one embodiment, the
at least one physical controller. PHY 106 is configured for
enabling communication with the expander 110. The communication
includes the sending of the list of SAS addresses 138 and the
receiving of target physical controller PHY data 154 at the target
physical controller PHY 150.
[0044] Thus, embodiments of the present technology expose a virtual
controller to an SAS topology, thereby enabling the direct
assignation of hard drives to the virtual machine associated with
the virtual controller. For example, embodiments do not follow the
current method of utilizing host firmware to zone SAS storage; the
controller and the expander firmware on the SAS switch are
employed. Thus, embodiments provide for a more direct and efficient
system for zoning a hard drive to a virtual machine.
Operation
[0045] In embodiments of the present technology, an expander
publishes virtual controllers as being connected with virtual PHYs.
In this manner, embodiments provide a method for directly zoning
data to a virtual machine without utilizing host firmware.
[0046] FIG. 3 is a flow diagram of a method 300. In one embodiment,
method 300 is embodied in instructions, stored on a non-transitory
computer-readable storage medium, which when executed by a computer
system (see 400 of FIG. 4), cause the computer system to perform
the method 300 for zoning data to a virtual machine. The method 300
is described below with reference to both FIGS. 1A, 1B,2 and 3.
[0047] At 302, in one embodiment and as described herein, the
method 300 includes instructions for exchanging support information
132 between a physical controller 102 and an expander 110, the
physical controller 102 being coupled with a server 104 and the
expander 110 being coupled with a SAS switch 112. In one
embodiment, the support information 132 comprises an indication of
an ability of the physical controller 102 and the expander 110 to
support thereon a set of virtual controllers 124 and a set of
virtual PHYs 118, respectively.
[0048] At 304, in one embodiment, the exchanging at 302 includes
determining expander PHYs on the expander 110, wherein the expander
PHYs comprise at least one of a set of expander physical PHYs and a
set of virtual PHYs 118. Additionally, at 304, the exchanging at
302 further includes accessing information about a device 168 that
is coupled with one of the expander PHYs.
[0049] For example and as is known in the art, the physical
controller 102 tries to determine what devices are present in the
SAS topology. In order to determine this, the physical controller
102 will communicate with the expander 110 and discover everything
that is attached to the expander 110, whether it be another
expander and/or a device, such as, but not limited to, storage
enclosures. As described herein, a set of virtual PHYs 118 are
coupled with the expander 110. From the perspective of the physical
controller 102, the set of virtual PHYs 118 looks exactly like the
set of expander physical PHYs. The physical controller 102 queries
all of the PHYs, the expander physical PHYs and the set of virtual
PHYs 118 to determine what if any devices are attached to the
expander PHYs. The expander PHYs will respond to the physical
controller 102 by describing what devices are attached thereto.
[0050] In embodiments of the present technology, the physical
controller 102 sends commands to the expander 110 to determine
whether or not the expander supports a set of virtual PHYs 118. The
content of these commands may be vendor specific and/or customized
for the user/owner. In one embodiment, a set of virtual controllers
124 is coupled with the set of virtual PHYs 118. Thus, the set of
virtual PHYs 118 may describe a set of virtual controllers 124
attached thereto. From the perspective of the physical controller
102, the set of virtual controllers 124 appears to be a set of
physical controllers. Thus, if the physical controller 102
discovers a device, such as device 168 (which may be SAS storage),
that is attached to the set of virtual PHYs 118, the physical
controller 102 then opens a connection to the device 168 so that
communication between the device 168 and the physical controller
102 is possible. As will be described herein, the physical
controller 102 then may direct the device 168 to be zoned to one of
a set of virtual controllers 124 on a virtual machine.
[0051] At 306, the method 300 includes instructions for, in
response to the ability at 302 being positively indicated, sending
a list of SAS addresses 138 to the expander 110, wherein the list
of SAS addresses 138 is sent from the physical controller 102.
Furthermore, in one embodiment, each SAS address of the list of SAS
addresses 138 represents a virtual controller 124. In other words,
the physical controller 102 provides a list of SAS addresses 133
that the physical controller 102 wants to use to represent the set
of virtual controllers 124. The expander 110 receives this list of
SAS addresses 138. For each virtual PHY of the set of virtual PHYs
118, the expander 110 will appoint one SAS address of the list of
SAS addresses 138 to that virtual PHY. Accordingly, each virtual
PHY with an appointed SAS address looks like a physical controller,
while being associated with a set of virtual controllers 124. The
expander 110 receives the SAS addresses for the set of virtual
controllers 124 and uses these SAS addresses to set up the set of
virtual PHYs 118 to appear as a set of virtual controllers 124.
[0052] At 308, the method 300 includes instructions for assigning a
first SAS address, such as 140a, of the list of SAS addresses 138
to a first virtual PHY 118a of the set of virtual PHYs 118. The
assigning 308 is performed by the expander 110. The first virtual
PHY 118a at the assigned SAS address 140a represents a first
virtual controller 142a of the set of virtual controllers 124.
[0053] At 310, in one embodiment the method 300 further includes
instructions for receiving data at the first virtual PHY, such as
virtual PHY 118a. At 312, in another embodiment the receiving data
at 308 includes communicatively coupling a storage drive with the
first virtual PHY, such as virtual PHY 118a. By communicatively
coupling at 308, it is meant that a storage drive is coupled via
cable (utilizing PHY lanes) and/or internal wiring (within a blade
enclosure) with a first virtual PHY.
[0054] At 314, in one embodiment and as described herein, the
method 300 further includes instructions for accessing a virtual to
physical mapping table 114, wherein virtual to physical mapping
table information of the virtual to physical mapping table 114
includes virtual PHY to physical controller PHY mapping information
116.
[0055] At 316, in one embodiment and as described herein the method
300 further includes instructions for determining a target physical
controller PHY 150 of the at least one physical controller PHY 106
for the received data 130 based on the virtual PHY to physical
controller PHY mapping information 116, wherein the at least one
physical controller PHY 106 is coupled with the physical controller
102.
[0056] At 318, in one embodiment and as described herein, the
method further includes instructions for sending the received data
130 from the expander 110 to the target physical controller PHY
150.
[0057] At 320, in one embodiment and as described herein, the
method further includes instructions for utilizing the physical
controller 102 to access target physical controller PHY data 154
received at the target physical controller PHY 150. Further, at
320, the physical controller 102 sends the accessed target physical
controller PHY data 154 to the first virtual controller, such as
virtual controller 142a.
[0058] At 322, in one embodiment and as described herein, the
method further includes instructions for receiving expander zoning
instructions 162 via a graphical user interface 164, wherein the
expander zoning instructions 162 includes at least one virtual PHY
to physical controller mapping direction 166. In another
embodiment, the expander zoning instructions 162 may be any
instruction associated with zoning a device 168, such as but not
limited to, hard drives.
[0059] At 324, in one embodiment the method 300 further includes
instructions for assigning a second SAS address, such as SAS
address 140b, to a second virtual PHY 118b of the set of virtual
PHYs 118, wherein the assigning is performed by the expander 110.
Additionally, the second virtual PHY 118b at that second assigned
SAS address 140b represents a second virtual controller 142b of the
set of virtual controllers 124. Further, at 326, in one embodiment,
the method 300 at 324 further includes receiving data at the second
virtual PHY 118b. For example, this data may be instructions for
coupling a hard drive to a virtual controller, and therefore a
virtual machine.
[0060] Thus, in one embodiment, any outgoing request from a virtual
controller 142 is sent directly to the storage device (e.g., hard
drive). While, any incoming response form the storage device is
intercepted by the expander 110 and redirected to the physical
controller Phys 106 using the virtual to physical mapping table
116.
[0061] Currently, there is no standard way of assigning SAS storage
directly to virtual machines in a way that only affects the
physical controller and SAS switch expander firmware. Embodiments
of the present technology provide a method for directly zoning SAS
storage to a virtual machine which reduces host firmware
involvement and thereby increases the overall efficiency of zoning.
Furthermore, embodiments provide a method for more efficient power
management.
Example Computer System Environment
[0062] With reference now to FIG. 4, portions of the technology for
performing a method for zoning data to a virtual machine are
composed of computer-readable and computer-executable instructions
that reside, for example, in computer-readable storage media of a
computer system. That is, FIG. 4 illustrates one example of a type
of computer that can be used to implement embodiments, which are
discussed below, of the present technology.
[0063] FIG. 4 illustrates an example computer system 400 used in
accordance with embodiments of the present technology. It is
appreciated that system 400 of FIG. 4 is an example only and that
the present technology can operate on or within a number of
different computer systems including general purpose networked
computer systems, embedded computer systems, routers, switches,
server devices, user devices, various intermediate
devices/artifacts, stand alone computer systems, and the like. As
shown in FIG. 4, computer system 400 of FIG. 4 is well adapted to
having peripheral computer readable media 402 such as, for example,
a floppy disk, a compact disc, and the like coupled thereto.
[0064] System 400 of FIG. 4 includes an address/data bus 404 for
communicating information, and a processor 406A coupled to bus 404
for processing information and instructions. As depicted in FIG. 4,
system 400 is also well suited to a multi-processor environment in
which a plurality of processors 406A, 406B, and 406C are present.
Conversely, system 400 is also well suited to having a single
processor such as, for example, processor 406A. Processors 406A,
406B, and 406C may be any of various types of microprocessors.
System 400 also includes data storage features such as a computer
usable volatile memory 408, e.g. random access memory (RAM),
coupled to bus 404 for storing information and instructions for
processors 406A, 406B, and 406C.
[0065] System 400 also includes computer usable non-volatile memory
410, e.g. read only memory (ROM), coupled to bus 404 for storing
static information and instructions for processors 406A, 406B, and
406C. Also present in system 400 is a data storage unit 412 (e.g.,
a magnetic or optical disk and disk drive) coupled to bus 404 for
storing information and instructions. System 400 also includes an
optional alphanumeric input device 414 including alphanumeric and
function keys coupled to bus 404 for communicating information and
command selections to processor 406A or processors 406A, 406B, and
406C. System 400 also includes an optional cursor control device
416 coupled to bus 404 for communicating user input information and
command selections to processor 406A or processors 406A, 406B, and
406C. System 400 of the present embodiment also includes an
optional display device 418 coupled to bus 404 for displaying
information.
[0066] Referring still to FIG. 4, optional display device 418 of
FIG. 4 may be a liquid crystal device, cathode ray tube, plasma
display device or other display device suitable for creating
graphic images and alphanumeric characters recognizable to a user.
Optional cursor control device 416 allows the computer user to
dynamically signal the movement of a visible symbol (cursor) on a
display screen of display device 418. Many implementations of
cursor control device 416 are known in the art including a
trackball, mouse, touch pad, joystick or special keys on
alpha-numeric input device 414 capable of signaling movement of a
given direction or manner of displacement. Alternatively, it will
be appreciated that a cursor can be directed and/or activated via
input from alpha-numeric input device 414 using special keys and
key sequence commands.
[0067] System 400 is also well suited to having a cursor directed
by other means such as, for example, voice commands. System 400
also includes an I/O device 420 for coupling system 400 with
external entities. For example, in one embodiment, I/O device 420
is a modern for enabling wired or wireless communications between
system 400 and an external network such as, but not limited to, the
Internet. A more detailed discussion of the present technology is
found below.
[0068] Referring still to FIG. 4, various other components are
depicted for system 400. Specifically, when present, an operating
system 422, applications 424, modules 426, and data 428 are shown
as typically residing in one or some combination of computer usable
volatile memory 408, e.g. random access memory (RAM), and data
storage unit 412. However, it is appreciated that in some
embodiments, operating system 422 may be stored in other locations
such as on a network or on a flash drive; and that further,
operating system 422 may be accessed from a remote location via,
for example, a coupling to the internet. In one embodiment, the
present technology, for example, is stored as an application 424 or
module 426 in memory locations within RAM 408 and memory areas
within data storage unit 412. The present technology may be applied
to one or more elements of described system 400. For example, a
method for identifying a device associated with a transfer of
content may be applied to operating system 422, applications 424,
modules 426, and/or data 428.
[0069] The computing system 400 is only one example of a suitable
computing environment and is not intended to suggest any limitation
as to the scope of use or functionality of the present technology.
Neither should the computing environment 400 be interpreted as
having any dependency or requirement relating to any one or
combination of components illustrated in the example computing
system 400.
[0070] The present technology may be described in the general
context of computer-executable instructions, such as program
modules, being executed by a computer. Generally, program modules
include routines, programs, objects, components, data structures,
etc., that perform particular tasks or implement particular
abstract data types. The present technology may also be practiced
in distributed computing environments where tasks are performed by
remote processing devices that are linked through a communications
network. In a distributed computing environment, program modules
may be located in both local and remote computer-storage media
including memory-storage devices.
[0071] The present technology may be described in the general
context of computer-executable instructions, such as program
modules, being executed by a computer. Generally, program modules
include routines, programs, objects, components, data structures,
etc., that perform particular tasks or implement particular
abstract data types. The present technology may also be practiced
in distributed computing environments where tasks are performed by
remote processing devices that are linked through a communications
network. In a distributed computing environment, program modules
may be located in both local and remote computer-storage media
including memory-storage devices.
[0072] All statements herein reciting principles, aspects, and
embodiments of the invention as well as specific examples thereof,
are intended to encompass both structural and functional
equivalents thereof. Additionally, it is intended that such
equivalents include both currently known equivalents and
equivalents developed in the future, i.e., any elements developed
that perform the same function, regardless of structure. The scope
of the present invention, therefore, is not intended to be limited
to the exemplary embodiments shown and described herein. Rather,
the scope and spirit of present invention is embodied by the
appended claims.
* * * * *