專利名稱:在多主機(jī)環(huán)境中共享遺留設(shè)備的制作方法
在多主機(jī)環(huán)境中共享遺留設(shè)備
背景技術(shù):
傳統(tǒng)的計(jì)算機(jī)系統(tǒng)(例如臺式個(gè)人計(jì)算機(jī)和服務(wù)器計(jì)算機(jī))使用單個(gè)工業(yè)標(biāo)準(zhǔn)架構(gòu)(ISA)互連來連接設(shè)備(例如鍵盤和鼠標(biāo))。外圍部件互連(PCI)互連被開發(fā)用于通過 適配器卡將其它設(shè)備(例如視頻)連接到處理器。主機(jī)/PCI互連橋通常將主機(jī)互連和PCI 互連相連接。所有這些互連都打算用于設(shè)備與CPU之間的直接連接,并且不打算被共享。如今,分解(disaggregated)服務(wù)器架構(gòu)是超級計(jì)算機(jī)的一個(gè)要點(diǎn)。然而,虛擬化 正力圖實(shí)現(xiàn)更多的資源共享以及到主流/批量(volume)服務(wù)器中的匯集。所期望的是,主 流提供商將在今后幾年內(nèi)引入服務(wù)器分解架構(gòu)。從工業(yè)標(biāo)準(zhǔn)機(jī)構(gòu)(比如PCI-SIG的IOV工 作組)內(nèi)可以獲悉圍繞標(biāo)準(zhǔn)化的努力。PCI互連曾被構(gòu)思成本地IO互連,并且因此其被創(chuàng)建用于鏈接(盒(box)架構(gòu)中 的)單個(gè)主機(jī)內(nèi)的設(shè)備。PCI的成本和速度使其成為分解系統(tǒng)架構(gòu)的有吸引力的解決方 案。然而,作為擴(kuò)展PCI的若干不成功嘗試的結(jié)果,PCI有若干挑戰(zhàn)要克服,包括其有根的 (rooted)架構(gòu)、排序規(guī)則和遺留編程模型。例如,由于認(rèn)識到難以跨底板擴(kuò)展PCI互連,因 此分解的批量系統(tǒng)并不包括諸如PCI連接器的互連連接器。
圖1是示出了可以在多主機(jī)環(huán)境中共享遺留設(shè)備的示例性刀片服務(wù)器架構(gòu)的高 級示圖。圖2是具有用于共享遺留設(shè)備的交換結(jié)構(gòu)的示例性多主機(jī)環(huán)境的功能圖示。圖3是圖2所示的示例性多主機(jī)環(huán)境的另一功能圖示,其中更詳細(xì)地示出了計(jì)算 節(jié)點(diǎn)和管理節(jié)點(diǎn)。圖4示出了在PCIe事務(wù)(transaction)內(nèi)封裝/解封裝以在多主機(jī)環(huán)境內(nèi)傳遞 的設(shè)備事務(wù)。圖5是示出可以被實(shí)施以在多主機(jī)環(huán)境中共享遺留設(shè)備的示例性操作的流程圖。
具體實(shí)施例方式簡單地說,在此所述的示例性實(shí)施例實(shí)施遺留設(shè)備(例如鍵盤控制器、視頻控制 器、鼠標(biāo)控制器、只讀存儲器(系統(tǒng)ROM)、BIOS/可擴(kuò)展固件接口(EFI)等)的硬件輔助的 虛擬化以在多主機(jī)環(huán)境中的分區(qū)(partition)之間共享。另外,當(dāng)更多的主機(jī)分區(qū)被添加 時(shí),所述遺留設(shè)備的硬件輔助的虛擬化不需要在一對一的基礎(chǔ)上縮放。也就是說,更多的主 機(jī)分區(qū)可以被添加到該多主機(jī)環(huán)境而不必添加物理設(shè)備來支持所添加的主機(jī)分區(qū)。示例性 的實(shí)施例將硬件劃分的規(guī)則擴(kuò)展為使得遺留設(shè)備(包括基本級系統(tǒng)服務(wù))可以通過將軟件 擴(kuò)展引入到硬件劃分中而被共享。在更詳細(xì)地描述示例性實(shí)施例以前,有益的是理解某些術(shù)語在此如何被用于描述 這些實(shí)施例。術(shù)語“虛擬機(jī)”和“邏輯服務(wù)器”是指對計(jì)算機(jī)系統(tǒng)的模擬、仿真或其它類似 的功能表示,由此虛擬機(jī)包括一個(gè)或多個(gè)不受定義一個(gè)或多個(gè)真實(shí)或物理計(jì)算機(jī)系統(tǒng)的物理界限約束的功能部件。所述功能部件包括真實(shí)或物理設(shè)備、互連總線和網(wǎng)絡(luò)、以及在一個(gè) 或多個(gè)CPU上執(zhí)行的軟件程序。例如,虛擬機(jī)可以包括包含真實(shí)或物理計(jì)算機(jī)系統(tǒng)內(nèi)的一 些但不是全部功能部件的功能部件子集;可以包括多個(gè)真實(shí)或物理計(jì)算機(jī)系統(tǒng)的一些功能 部件;可以包括一個(gè)真實(shí)或物理計(jì)算機(jī)系統(tǒng)的所有功能部件,但是僅包括另一真實(shí)或物理 計(jì)算機(jī)系統(tǒng)的一些部件;或者可以包括多個(gè)真實(shí)或物理計(jì)算機(jī)系統(tǒng)的所有功能部件。其它 組合也是可能的,并且所有這樣的組合都旨在位于以下公開的范圍內(nèi)。術(shù)語“虛擬設(shè)備”和“虛擬遺留設(shè)備”是指對真實(shí)或物理計(jì)算機(jī)設(shè)備(例如遺留設(shè) 備)的模擬、仿真或其它類似的功能表示,由此虛擬設(shè)備包括一個(gè)或多個(gè)不受定義一個(gè)或 多個(gè)真實(shí)或物理計(jì)算機(jī)設(shè)備的物理界限約束的功能部件。類似地,虛擬設(shè)備可以包括一個(gè) 或多個(gè)物理或真實(shí)設(shè)備的一些或全部功能部件的任意數(shù)目的組合,并且所述功能部件可以 包括硬件設(shè)備和軟件程序的任意數(shù)目的組合。許多組合、變型以及修改對本領(lǐng)域的技術(shù)人 員將是顯而易見的,并且所有這些都旨在位于以下公開的范圍內(nèi)。術(shù)語“PCI-Express”或“PCIe”是指由外圍部件互連特殊興趣組(PCI-SIG)發(fā)布 的名稱為“PCI Express Base Specification 1. 1”的文檔中所描述的架構(gòu)和協(xié)議、和/或 任意早期的或以后的與PCIe或其它PCI構(gòu)架和協(xié)議的運(yùn)行和實(shí)施相關(guān)的規(guī)范。示例性系統(tǒng)圖1是示出了可以在多主機(jī)環(huán)境中共享遺留設(shè)備的示例性刀片服務(wù)器架構(gòu)10的 高級示圖。在示例性實(shí)施例中,多主機(jī)環(huán)境可以被實(shí)施為虛擬機(jī)或邏輯服務(wù)器。能夠理解, 為了簡化該附圖,未示出刀片服務(wù)器的常見元件(比如電源)。當(dāng)然,僅僅出于說明可以實(shí) 施在此所述的系統(tǒng)和操作的一個(gè)示例性實(shí)施例的目的而示出刀片服務(wù)器架構(gòu)10。在示例性實(shí)施例中,刀片服務(wù)器架構(gòu)10具有底板(未示出),用于為一個(gè)或多個(gè)托 架12a_c提供功率和聯(lián)網(wǎng)連接。通常,每個(gè)托架12a_c在每個(gè)刀片(例如CPU刀片14a-d、 盤刀片16a_d以及其它資源刀片18a_d)之間傳遞功率和聯(lián)網(wǎng)連接。刀片服務(wù)器的一個(gè)優(yōu)點(diǎn)是將各個(gè)計(jì)算資源密集地打包在單個(gè)包中,以及實(shí)現(xiàn)容易 的擴(kuò)充、升級、和/或維修的能力。常規(guī)地,互連外設(shè)(比如PCI連接的設(shè)備)不能直接被 刀片訪問,因?yàn)榘凑斩xPCI連接的設(shè)備不能由一個(gè)以上主機(jī)共享。代替地,每個(gè)刀片本身 都必須是具有一個(gè)或多個(gè)處理器、存儲器、視頻以及存儲能力的完整計(jì)算機(jī)系統(tǒng)。該架構(gòu)將 用于共享軟設(shè)備的硬件劃分?jǐn)U展到虛擬機(jī)。然而,在此所述的實(shí)施例通過使虛擬遺留設(shè)備“看上去”直接連接到訪問該設(shè)備的 虛擬機(jī)中的主機(jī)而使得所述虛擬遺留設(shè)備能夠直接被刀片訪問。因此,CPU刀片14a_d可 以被縮減到CPU和存儲器,而不必在CPU刀片14a-d中包括其它功能。例如,托架12c可以 用于連接鍵盤、視頻卡、鼠標(biāo)、ROM、和/或與已經(jīng)用在常規(guī)服務(wù)器環(huán)境中的那些虛擬遺留設(shè) 備類似的其它虛擬遺留設(shè)備的卡。另外,虛擬遺留設(shè)備可以被分配給任意的CPU刀片,并且 不需要以一比一的比例被添加。在虛擬機(jī)運(yùn)行在服務(wù)器環(huán)境中并且不是連續(xù)地需要諸如鍵 盤、視頻、或鼠標(biāo)的資源的情況中這尤其有利。虛擬遺留設(shè)備(資源刀片18a-d)可以以多種不同方式之中的任意方式被分配給 虛擬機(jī)中的任意的CPU刀片14a_d。例如,所述虛擬遺留設(shè)備中的一個(gè)或多個(gè)可以在任意的 CPU刀片14a-d之間共享,所述虛擬遺留設(shè)備中的一個(gè)或多個(gè)可以被任意的CPU刀片14a_d 獨(dú)占地使用,或者其組合。使用PCI互連的能力提供顯著的靈活性以及在虛擬 機(jī)或多主機(jī)環(huán)境中對虛擬遺留設(shè)備的使用。在繼續(xù)介紹以前,應(yīng)當(dāng)注意多個(gè)刀片服務(wù)器可以連接到單個(gè)互連網(wǎng)絡(luò)中。此外,盡管圖1示出了專用于CPU刀片14a-d的托架12a、專用于盤刀片16a_d的托架12b、以及 專用于其它資源刀片18a_d的托架12c,但是本領(lǐng)域的技術(shù)人員能夠認(rèn)識到,圖1所示的托 架12a_c的數(shù)目和布置僅僅出于說明的目的而被提供,并且并不打算是限制性的。例如,刀 片服務(wù)器架構(gòu)10可以具有大量的托架,其中可以在其中一些托架上組裝多種類型的設(shè)備。圖2是具有用于共享遺留設(shè)備的交換結(jié)構(gòu)(switch fabric) 102的示例性多主機(jī) 環(huán)境100的功能圖示。示例性多主機(jī)環(huán)境100可以包括由交換結(jié)構(gòu)102互連的若干部件或 “節(jié)點(diǎn)”。交換結(jié)構(gòu)102可以提供互連這些節(jié)點(diǎn)并且允許所述節(jié)點(diǎn)交換數(shù)據(jù)的冗余或可替代 的路徑。在圖2中,交換結(jié)構(gòu)102包括交換機(jī)110至118。多主機(jī)環(huán)境100還包括計(jì)算節(jié) 點(diǎn)120和124、管理節(jié)點(diǎn)122、以及標(biāo)準(zhǔn)輸入/輸出(I/O)節(jié)點(diǎn)126 (例如用于非遺留I/O設(shè) 備)。多主機(jī)環(huán)境100中的每個(gè)節(jié)點(diǎn)都耦合到交換結(jié)構(gòu)102內(nèi)的至少兩個(gè)交換機(jī)。例 如,計(jì)算節(jié)點(diǎn)120可以耦合到交換機(jī)114的端口 27和交換機(jī)118的端口 46 二者;管理節(jié)點(diǎn) 122耦合到交換機(jī)114的端口 26和交換機(jī)116的端口 36 ;計(jì)算節(jié)點(diǎn)124耦合到交換機(jī)114 的端口 25和交換機(jī)118的端口 45 ;并且標(biāo)準(zhǔn)I/O節(jié)點(diǎn)126耦合到交換機(jī)116的端口 35和 交換機(jī)118的端口 44。通過提供活動的和可替代的路徑,節(jié)點(diǎn)可以通過任一路徑跨交換結(jié)構(gòu)102發(fā)送和 接收數(shù)據(jù)。因此,例如,如果管理節(jié)點(diǎn)122需要與標(biāo)準(zhǔn)I/O節(jié)點(diǎn)126通信,但是交換機(jī)116 已經(jīng)失靈,則仍然可以通過使用通過其余交換機(jī)的可替代的路徑來完成該事務(wù)。由于交換結(jié)構(gòu)102的底層總線結(jié)構(gòu)不是有根的層次結(jié)構(gòu)并且因此不支持所描述 的可替代的路徑,所以提供擴(kuò)展來標(biāo)識可替代的路徑,在交換結(jié)構(gòu)102初始化后每個(gè)節(jié)點(diǎn) 和交換機(jī)端口通過所述可替代的路徑進(jìn)行映射。這些擴(kuò)展可以實(shí)施在所述交換機(jī)內(nèi),使得 可以結(jié)合交換結(jié)構(gòu)102使用安裝在多主機(jī)環(huán)境100的各個(gè)節(jié)點(diǎn)內(nèi)的硬件和軟件而很少修改 或不修改交換結(jié)構(gòu)102。例如,交換結(jié)構(gòu)102“假裝”是有根的層次結(jié)構(gòu),其中交換機(jī)110“邏 輯上植根于”其任意節(jié)點(diǎn)處,并且結(jié)果,管理節(jié)點(diǎn)122可以連接在任意的交換機(jī)100端口處 以利用PCI基礎(chǔ)設(shè)施和編程模型。在示例性實(shí)施例中,在一個(gè)例子中可以針對外圍部件互連(PCI)架構(gòu)初始化交換 結(jié)構(gòu)102,如下所述。在重置多主機(jī)環(huán)境100后,交換機(jī)110至118的每一個(gè)指定每個(gè)端口 為主端口并且指定交換機(jī)之間的路徑為活動路徑。然后,管理節(jié)點(diǎn)122開始一系列的一個(gè) 或多個(gè)配置循環(huán),在所述配置循環(huán)中,每個(gè)交換機(jī)端口和端點(diǎn)都被標(biāo)識(在PCI架構(gòu)中被稱 為“枚舉”),并且在所述配置循環(huán)中,耦合到該管理節(jié)點(diǎn)的主總線被指定為該主總線上的根 聯(lián)合體(root complex)。每個(gè)配置循環(huán)包括訪問存儲在耦合到該交換結(jié)構(gòu)的每個(gè)設(shè)備(例 如PCI設(shè)備的PCI配置空間)中的配置數(shù)據(jù)。所述交換機(jī)包括與耦合到該交換機(jī)的設(shè)備相關(guān)的數(shù)據(jù)。如果由該交換機(jī)存儲的關(guān) 于其它設(shè)備的配置數(shù)據(jù)不完整,則管理節(jié)點(diǎn)122啟動附加的配置循環(huán)直到耦合到該交換機(jī) 的所有設(shè)備都已經(jīng)被標(biāo)識并且該交換機(jī)內(nèi)的配置數(shù)據(jù)完整為止。當(dāng)交換機(jī)116檢測到管理節(jié)點(diǎn)122已經(jīng)啟動第一有效配置循環(huán)時(shí),交換機(jī)116將 還未耦合的所有端口標(biāo)識成次端口。隨后的有效配置循環(huán)可以傳播到耦合到交換機(jī)116的次端口的每個(gè)交換機(jī),使得那些交換機(jī)將其還未耦合到傳播該配置循環(huán)的交換機(jī)(在此為交換機(jī)116)的每個(gè)端口標(biāo)識成次端口。因此,交換機(jī)116以端口 36被標(biāo)識成主端口而告 終,并且交換機(jī)110、112、114、以及118分別以端口 05、16、24、以及47被標(biāo)識成主端口而告終。隨著端口在初始化過程的每個(gè)有效配置循環(huán)期間被標(biāo)識,每個(gè)端口將其配置(主 或次)報(bào)告給其耦合到的任何其它交換機(jī)的端口。一旦這樣彼此耦合的兩個(gè)交換機(jī)的兩 個(gè)端口都已經(jīng)初始化,每個(gè)交換機(jī)就確定兩個(gè)端口是否已經(jīng)被標(biāo)識成次端口。如果至少一 個(gè)端口還未被標(biāo)識為次端口,則所述端口之間的路徑被指定為該總線層次結(jié)構(gòu)內(nèi)的活動路 徑。如果兩個(gè)端口都已經(jīng)被標(biāo)識成次端口,則所述端口之間的路徑被指定為冗余或可替代 的路徑。然后,關(guān)于可通過每個(gè)交換機(jī)訪問的其它端口或端點(diǎn)的路由信息(PCI架構(gòu)內(nèi)的段 號)在處于耦合這兩個(gè)端口的路徑的兩端的所述端口之間被交換,并且然后,每個(gè)端口被 標(biāo)識成總線層次結(jié)構(gòu)內(nèi)的端點(diǎn)。一旦初始化過程已經(jīng)完成并且虛擬機(jī)開始操作,數(shù)據(jù)分組就可以根據(jù)需要通過在 初始化期間所標(biāo)識的路徑而被路由。例如,交換機(jī)可以接收數(shù)據(jù)分組,確定所述數(shù)據(jù)分組的 目的地(例如通過將存儲在該交換機(jī)中的路由信息與所述數(shù)據(jù)分組的目的地相比較),并 且基于所述目的地,該交換機(jī)力圖確定經(jīng)過該交換機(jī)到該目的地的路線。通過如上所述適配交換結(jié)構(gòu)102,所耦合的各個(gè)節(jié)點(diǎn)可以以與所述節(jié)點(diǎn)內(nèi)的內(nèi)部 總線的傳輸速率相當(dāng)?shù)乃俾时舜送ㄐ?。通過跨交換結(jié)構(gòu)102提供高性能端到端傳輸速率, 通過交換結(jié)構(gòu)102彼此互連的不同節(jié)點(diǎn)以及所述節(jié)點(diǎn)內(nèi)的設(shè)備可以被組合以形成高性能 虛擬機(jī)。這些虛擬機(jī)通過實(shí)施抽象層來創(chuàng)建,所述抽象層組合以形成虛擬結(jié)構(gòu)(比如管理 節(jié)點(diǎn)122上的虛擬遺留設(shè)備)。圖3是圖2所示的示例性多主機(jī)環(huán)境的另一功能圖示,其中更詳細(xì)地示出了計(jì)算 節(jié)點(diǎn)120和管理節(jié)點(diǎn)122。在示例性實(shí)施例中,計(jì)算節(jié)點(diǎn)120包括CPU 135和橋/存儲器 控制器150,每個(gè)均耦合到前端總線155 ;網(wǎng)關(guān)131,其與橋/存儲器控制器150 —起耦合到 內(nèi)部總線139 (例如PCI總線);以及存儲器134,其耦合到橋/存儲器控制器150。操作系 統(tǒng)(0/S) 136、應(yīng)用程序137、以及設(shè)備驅(qū)動程序138是在CPU 135上執(zhí)行的程序代碼。應(yīng)用 程序137和設(shè)備驅(qū)動程序138 二者都在由操作系統(tǒng)136所創(chuàng)建的環(huán)境內(nèi)執(zhí)行。類似地,管理節(jié)點(diǎn)122可以包括CPU 145和橋/存儲器控制器160,每個(gè)均耦合到 前端總線165 ;網(wǎng)關(guān)141,其與橋/存儲器控制器160 —起耦合到內(nèi)部總線149 (例如PCI總 線);以及存儲器144,其耦合到橋/存儲器控制器160。操作系統(tǒng)(0/S)145以及設(shè)備驅(qū)動 程序148是在CPU145上執(zhí)行的程序代碼。設(shè)備驅(qū)動程序148在由操作系統(tǒng)146所創(chuàng)建的 環(huán)境內(nèi)執(zhí)行,以實(shí)例化(instantiate)虛擬遺留設(shè)備(指示為存儲器144中的鍵盤、視頻、 鼠標(biāo)(或者邏輯/虛擬KVM) 147)。計(jì)算節(jié)點(diǎn)網(wǎng)關(guān)131和管理節(jié)點(diǎn)網(wǎng)關(guān)141均充當(dāng)?shù)骄W(wǎng)絡(luò)交換結(jié)構(gòu)102的接口,并且 均提供抽象層,所述抽象層允許每個(gè)節(jié)點(diǎn)的部件與其它節(jié)點(diǎn)的部件通信而不必直接與網(wǎng)絡(luò) 交換結(jié)構(gòu)102交互。每個(gè)網(wǎng)關(guān)包括實(shí)施抽象層的控制器。所述抽象層實(shí)行設(shè)備或協(xié)議特定 的排序規(guī)則。另外,所述抽象層披露(surface)用于跨網(wǎng)絡(luò)交換結(jié)構(gòu)102將網(wǎng)關(guān)節(jié)點(diǎn)鏈接 到管理控制點(diǎn)122的任何控制點(diǎn)。一旦利用類似的協(xié)議/設(shè)備解決方案在網(wǎng)關(guān)之間建立了 綁定,則所述網(wǎng)關(guān)以從任意計(jì)算節(jié)點(diǎn)(例如節(jié)點(diǎn)120&124)來看為透明的方式連接到其相應(yīng)的PCI Express層次結(jié)構(gòu)中??蛇x地,所述網(wǎng)關(guān)可以為網(wǎng)絡(luò)交換結(jié)構(gòu)102提供更高級的服 務(wù)、比如QoS、端到端流量控制。所述控制器可以包括硬件狀態(tài)機(jī)、CPU執(zhí)行軟件、或者二者。所述抽象層可以被實(shí) 施為在網(wǎng)關(guān)內(nèi)操作的單獨(dú)的硬件和/或軟件,或者可以被實(shí)施為與在分離的CPU上執(zhí)行的 驅(qū)動程序軟件一起操作的網(wǎng)關(guān)硬件和/或軟件。也可以實(shí)施硬件和軟件的其它組合,如在 熟悉本文的教導(dǎo)之后對于本領(lǐng)域的普通技術(shù)人員容易顯而易見的。這樣實(shí)施的抽象層允許使得一個(gè)節(jié)點(diǎn)(例如管理節(jié)點(diǎn)122)上的遺留設(shè)備作為獨(dú) 立且分立設(shè)備而對另一節(jié)點(diǎn)(例如計(jì)算節(jié)點(diǎn)120)可見。遺留設(shè)備的虛擬化允許所得的虛 擬總線的根級別的節(jié)點(diǎn)枚舉虛擬層次式總線內(nèi)的虛擬化設(shè)備。這通過捆綁并入到計(jì)算節(jié)點(diǎn) (120&124)和IO節(jié)點(diǎn)(126)內(nèi)的結(jié)構(gòu)(102)網(wǎng)關(guān)之間的設(shè)備實(shí)例關(guān)聯(lián)來實(shí)現(xiàn)。一旦這些實(shí) 例被關(guān)聯(lián),計(jì)算節(jié)點(diǎn)軟件棧(OS)就把虛擬設(shè)備“看”成是作為獨(dú)立非共享資源而被管理、映 射和使用的分立非共享資源。作為抽象層的一部分,虛擬化設(shè)備可以通過將計(jì)算節(jié)點(diǎn)網(wǎng)關(guān) (131)之間的實(shí)例鏈接或關(guān)聯(lián)到網(wǎng)關(guān)141內(nèi)的虛擬遺留設(shè)備實(shí)例來實(shí)施,其中每個(gè)實(shí)例具 有其相關(guān)聯(lián)的處于管理節(jié)點(diǎn)存儲器-122內(nèi)的描述符塊,所述描述符塊用于使用軟件棧148 來虛擬化遺留設(shè)備。在管理節(jié)點(diǎn)122的CPU 145內(nèi)執(zhí)行的軟件驅(qū)動程序針被披露到任何計(jì) 算節(jié)點(diǎn)(120)中的視頻、鍵盤、ROM以及鼠標(biāo)設(shè)備的每個(gè)唯一的表示來實(shí)現(xiàn)虛擬遺留設(shè)備實(shí) 例。一旦所述關(guān)聯(lián)已經(jīng)由管理節(jié)點(diǎn)122建立(即將管理節(jié)點(diǎn)網(wǎng)關(guān)和計(jì)算節(jié)點(diǎn)網(wǎng)關(guān)之 間的遺留資源實(shí)例綁定,其中合適的描述符塊被創(chuàng)建并且活動地利用其相關(guān)聯(lián)的軟件仿 真器驅(qū)動程序(148)運(yùn)行),所述計(jì)算節(jié)點(diǎn)就被允許加電(power up)。一旦計(jì)算節(jié)點(diǎn)加 電,軟件(OS 136)就“看到”其所認(rèn)為的具有對包括遺留設(shè)備在內(nèi)的物理資源的全裸機(jī) (baremetal)控制和訪問的標(biāo)準(zhǔn)平臺。在沒有超級監(jiān)視者(hypervisor)存在于計(jì)算節(jié)點(diǎn) CPU(135)上的情況下,跨共同互連在主機(jī)之間共享遺留資源現(xiàn)在是可能的。通過使用抽象 層,各個(gè)設(shè)備(或其虛擬化的表示)不需要能夠使用(由管理節(jié)點(diǎn)122管理和枚舉的)網(wǎng) 絡(luò)交換結(jié)構(gòu)102的層次式總線的底層協(xié)議經(jīng)過網(wǎng)絡(luò)交換結(jié)構(gòu)102直接通信。代替地,每個(gè) 部件根據(jù)內(nèi)部總線(139或149)的協(xié)議來格式化外出的事務(wù),并且該節(jié)點(diǎn)(120或122)的 對應(yīng)的網(wǎng)關(guān)(131或141)根據(jù)底層網(wǎng)絡(luò)交換結(jié)構(gòu)102的協(xié)議來封裝該外出的事務(wù)。進(jìn)入的 事務(wù)類似地由接收節(jié)點(diǎn)(120或122)的對應(yīng)網(wǎng)關(guān)來解封裝。應(yīng)當(dāng)注意,遺留設(shè)備在運(yùn)行在主機(jī)_計(jì)算節(jié)點(diǎn)上的OS的控制下運(yùn)行。通常,設(shè)備 不啟動與主機(jī)的通信,除非主機(jī)OS之前已經(jīng)將該設(shè)備配置為這樣做,結(jié)果一切都從主機(jī)OS 通信下到該設(shè)備-虛擬遺留設(shè)備中開始。另外,重要的是應(yīng)該注意R0M設(shè)備不具有物理部 分,因?yàn)镽OM現(xiàn)在是來自管理節(jié)點(diǎn)122內(nèi)的存儲器空間(內(nèi)部存儲器空間147)。遺留設(shè)備 現(xiàn)在是管理節(jié)點(diǎn)122中軟件模擬的設(shè)備(例如模擬為147-148)。簡單地說,當(dāng)遺留設(shè)備需要與計(jì)算節(jié)點(diǎn)通信時(shí),數(shù)據(jù)從物理遺留設(shè)備(例如鍵盤、 視頻卡、鼠標(biāo)、ROM等)中被讀取。該數(shù)據(jù)被用于遺留設(shè)備虛擬實(shí)例的管理節(jié)點(diǎn)拆分開并且 被放入有序的位置中以路由到相關(guān)聯(lián)的計(jì)算節(jié)點(diǎn)(虛擬機(jī))。當(dāng)該數(shù)據(jù)在計(jì)算節(jié)點(diǎn)處被接 收到時(shí),該計(jì)算節(jié)點(diǎn)處的主機(jī)驅(qū)動程序以標(biāo)準(zhǔn)方式服務(wù)于設(shè)備(虛擬設(shè)備)中斷。當(dāng)計(jì)算 節(jié)點(diǎn)(主機(jī)遺留設(shè)備驅(qū)動程序)準(zhǔn)備好將數(shù)據(jù)發(fā)送給虛擬遺留設(shè)備時(shí),該虛擬遺留設(shè)備的 主機(jī)驅(qū)動程序建立分組請求(寫入或讀取請求),所述分組請求導(dǎo)致以該虛擬遺留設(shè)備為目標(biāo)的PCIe事務(wù)。該計(jì)算節(jié)點(diǎn)網(wǎng)關(guān)在檢測到所述分組時(shí)封裝所述分組,然后使用預(yù)先配置 的以管理節(jié)點(diǎn)網(wǎng)關(guān)為目標(biāo)的管理節(jié)點(diǎn)設(shè)定對經(jīng)過封裝的分組進(jìn)行路由。所述管理節(jié)點(diǎn)網(wǎng)關(guān) 對所述分組進(jìn)行解封裝,然后基于預(yù)先配置的路由信息將所述分組路由到管理節(jié)點(diǎn)存儲器 空間中,所述路由信息標(biāo)識出用于所述虛擬遺留設(shè)備實(shí)例的唯一的存儲器空間。一旦所述 分組已經(jīng)被路由到管理節(jié)點(diǎn)存儲器空間中,管理節(jié)點(diǎn)CPU就被中斷以作為虛擬化遺留設(shè)備 來服務(wù)于分組。參考圖4更詳細(xì)地解釋該過程。圖4示出了在PCIe事務(wù)內(nèi)封裝/解封裝以在多主機(jī)環(huán)境內(nèi)傳遞的設(shè)備事務(wù)。如 果遺留設(shè)備給計(jì)算節(jié)點(diǎn)發(fā)送數(shù)據(jù),則CPU將所述數(shù)據(jù)提供給設(shè)備驅(qū)動程序,所述設(shè)備驅(qū)動 程序然后根據(jù)內(nèi)部總線的協(xié)議將所述數(shù)據(jù)例如作為設(shè)備事務(wù)170轉(zhuǎn)發(fā)給網(wǎng)關(guān)。設(shè)備事務(wù) 170被網(wǎng)關(guān)131封裝,網(wǎng)關(guān)131形成根據(jù)交換結(jié)構(gòu)的底層總線協(xié)議而格式化的事務(wù),例如作 為PCIe事務(wù)172。網(wǎng)絡(luò)交換結(jié)構(gòu)將PCIe事務(wù)172路由到另一節(jié)點(diǎn),例如在所述節(jié)點(diǎn)處,網(wǎng)關(guān)141提 取出原始的未封裝的事務(wù)170’。網(wǎng)關(guān)驅(qū)動程序可見的真實(shí)遺留設(shè)備的虛擬化表示處理、格 式化原始的未封裝的事務(wù)170’并且將其轉(zhuǎn)發(fā)給CPU,從而允許所述節(jié)點(diǎn)的所選部件就好像 通過單個(gè)總線或傳統(tǒng)的點(diǎn)對點(diǎn)互連彼此直接通信那樣進(jìn)行交互。當(dāng)然,信息可以類似地被 從網(wǎng)關(guān)141傳遞到網(wǎng)關(guān)131。在示例性的實(shí)施例中,所述抽象層還觀察封裝協(xié)議的分組或消息排序規(guī)則。因 此,例如,如果根據(jù)不保證傳遞或分組順序的封裝協(xié)議發(fā)送消息,則即使網(wǎng)絡(luò)交換結(jié)構(gòu) 的底層層次式總線遵循更嚴(yán)格的排序規(guī)則(例如保證傳遞和排序),封裝協(xié)議的非保證 (non-guaranteed)傳遞和無序(out-of-order)分組規(guī)則仍然將被所述分組/網(wǎng)關(guān)的發(fā)射 機(jī)和接收機(jī)二者實(shí)施。當(dāng)然,其它的服務(wù)質(zhì)量(QoS)規(guī)則也可以被網(wǎng)關(guān)實(shí)施。這樣的QoS規(guī) 則還可以作為所仿真的協(xié)議的一部分或者作為由網(wǎng)關(guān)透明實(shí)施的附加QoS規(guī)則而被實(shí)施。對于每個(gè)對應(yīng)節(jié)點(diǎn)的其余部件透明地執(zhí)行由網(wǎng)關(guān)提供的封裝和抽象。結(jié)果,遺留 設(shè)備的虛擬化表示(即虛擬遺留設(shè)備)表現(xiàn)得好像其經(jīng)過單個(gè)物理總線直接與接收節(jié)點(diǎn)通 信。由于在事務(wù)被發(fā)送和接收時(shí)網(wǎng)關(guān)對所述事務(wù)進(jìn)行封裝和解封裝,并且由于底層結(jié)構(gòu)具 有與內(nèi)部總線的性能水平相當(dāng)?shù)男阅芩?,因此幾乎沒有給總線事務(wù)增加因內(nèi)部本地總線 事務(wù)的封裝和解封裝造成的延遲。而且,由于內(nèi)部總線不需要修改,因此遺留設(shè)備可以在該 系統(tǒng)內(nèi)被使用而不需要硬件修改或特殊的軟件驅(qū)動程序。網(wǎng)關(guān)和其提供的功能的存在對于 其余硬件以及運(yùn)行在這些節(jié)點(diǎn)的CPU上的操作系統(tǒng)而言是不可見的。每個(gè)網(wǎng)關(guān)允許一個(gè)節(jié)點(diǎn)內(nèi)的所選設(shè)備的虛擬化表示(即虛擬遺留設(shè)備)呈現(xiàn)為另 一節(jié)點(diǎn)的總線層次結(jié)構(gòu)內(nèi)的端點(diǎn)。因此,例如,虛擬遺留設(shè)備呈現(xiàn)為計(jì)算節(jié)點(diǎn)的總線層次結(jié) 構(gòu)內(nèi)的端點(diǎn),并且因此被計(jì)算節(jié)點(diǎn)枚舉。網(wǎng)關(guān)本身呈現(xiàn)為(由管理節(jié)點(diǎn)管理和枚舉的)交 換結(jié)構(gòu)內(nèi)的端點(diǎn)。不存在遺留設(shè)備的物理表示,即使這是硬件分區(qū)也是如此。示例性操作圖5是示出了可以實(shí)施以用于在多主機(jī)環(huán)境中共享遺留設(shè)備的示例性操作的流 程圖。操作200可以體現(xiàn)為一種或多種計(jì)算機(jī)可讀介質(zhì)上的邏輯指令。當(dāng)在處理器上執(zhí)行 時(shí),所述邏輯指令使通用計(jì)算設(shè)備被編程為實(shí)施所述操作的專用機(jī)。在示例性的實(shí)施方式 中,可以使用在附圖中被描繪成虛擬機(jī)的一部分的部件和連接。應(yīng)當(dāng)注意,在設(shè)置(setup) 以后,計(jì)算節(jié)點(diǎn)上的主機(jī)OS開始與遺留設(shè)備的所有通信以初始化并進(jìn)行設(shè)置,如上面更詳細(xì)描述的。在操作210,可以從遺留設(shè)備接收設(shè)備信息。所述設(shè)備信息可以標(biāo)識出多主機(jī)環(huán)境(例如虛擬機(jī))內(nèi)的目標(biāo)主機(jī)。在操作220,所述設(shè)備信息可以被封裝到網(wǎng)絡(luò)交換結(jié)構(gòu)的對 應(yīng)總線事務(wù)中。例如,所述設(shè)備信息可以被封裝到PCIe事務(wù)中。在操作230,所述總線事務(wù) 通過多主機(jī)環(huán)境中的網(wǎng)絡(luò)交換結(jié)構(gòu)被路由到該多主機(jī)環(huán)境內(nèi)的目標(biāo)主機(jī)。在操作240,在目 標(biāo)主機(jī)處被接收以后所述設(shè)備信息可以被解封裝。顯而易見的是,這些操作使得未配置為在主機(jī)之間共享的遺留設(shè)備能夠作為虛擬 遺留設(shè)備在多主機(jī)環(huán)境(例如虛擬機(jī))中的主機(jī)之間被共享。因此,主機(jī)分區(qū)可以被添加 到該多主機(jī)環(huán)境而不必以一對一的基礎(chǔ)添加遺留設(shè)備以支持附加的主機(jī)分區(qū)。也就是說, 在該多主機(jī)環(huán)境中可以存在比物理遺留設(shè)備更多的主機(jī)分區(qū),由此增強(qiáng)了可縮放性和成本 節(jié)省。在此所示和描述的操作被提供用于例證在多主機(jī)環(huán)境(例如虛擬機(jī)或邏輯服務(wù) 器)中共享虛擬遺留設(shè)備的實(shí)施方式。應(yīng)當(dāng)注意,所述操作并不限于所示次序。還有其它 的操作也可以被實(shí)施。應(yīng)當(dāng)注意,所示和所述的示例性實(shí)施例是出于說明的目的而被提供的,并且并不 打算是限制性的。還有其它的實(shí)施例也可以被設(shè)想出以用于在多主機(jī)環(huán)境中共享遺留設(shè) 備。
權(quán)利要求
一種用于在多主機(jī)環(huán)境(10)中作為虛擬遺留設(shè)備來共享遺留設(shè)備的方法(200),包括從遺留設(shè)備(18a-d)接收設(shè)備信息,所述設(shè)備信息標(biāo)識出虛擬機(jī)內(nèi)的目標(biāo)主機(jī);將所述設(shè)備信息封裝到網(wǎng)絡(luò)交換結(jié)構(gòu)(102)的對應(yīng)總線事務(wù)(172)中;以及通過所述虛擬機(jī)中的網(wǎng)絡(luò)交換結(jié)構(gòu)(102)將該總線事務(wù)(172)路由到所述虛擬機(jī)內(nèi)的目標(biāo)主機(jī)。
2.根據(jù)權(quán)利要求1所述的方法(200),進(jìn)一步包括將主機(jī)分區(qū)添加到多主機(jī)環(huán)境 (10)而不必添加遺留設(shè)備(18a-d)以支持附加的主機(jī)分區(qū)。
3.一種具有共享的遺留設(shè)備(18a-d)的多主機(jī)環(huán)境(10),包括管理節(jié)點(diǎn)(122),其通信地耦合到遺留設(shè)備(18a-d),所述管理節(jié)點(diǎn)(122)從所述遺留 設(shè)備(18a-d)接收設(shè)備信息;所述管理節(jié)點(diǎn)(122)中的網(wǎng)關(guān)(141),其被配置為將遺留設(shè)備報(bào)頭空間虛擬化到虛擬 機(jī)中以及將虛擬設(shè)備信息封裝到對應(yīng)總線事務(wù)(172)中;計(jì)算節(jié)點(diǎn)(120)中的網(wǎng)關(guān)(131),其被配置為針對主機(jī)OS虛擬化所述遺留設(shè)備報(bào)頭;以及網(wǎng)絡(luò)交換結(jié)構(gòu)(102),其用于將所述總線事務(wù)路由到所述虛擬機(jī)內(nèi)的目標(biāo)主機(jī)。
4.根據(jù)權(quán)利要求3所述的多主機(jī)環(huán)境(10),其中所述設(shè)備信息標(biāo)識出所述虛擬機(jī)內(nèi)的 目標(biāo)主機(jī)。
5.根據(jù)權(quán)利要求3所述的多主機(jī)環(huán)境(10),進(jìn)一步包括所述目標(biāo)主機(jī)處的網(wǎng)關(guān),其用 于接收所述總線事務(wù)。
6.根據(jù)權(quán)利要求5所述的多主機(jī)環(huán)境(10),其中所述目標(biāo)主機(jī)處的網(wǎng)關(guān)對目標(biāo)地址解 封裝并且將其重新映射到給所述遺留設(shè)備信息預(yù)先分配的唯一存儲器空間中以在所述目 標(biāo)主機(jī)處進(jìn)行處理。
7.根據(jù)權(quán)利要求6所述的多主機(jī)環(huán)境(10),其中所述網(wǎng)關(guān)處的信息響應(yīng)于來自虛 擬機(jī)OS的請求而以兩個(gè)方向從所述虛擬機(jī)OS行進(jìn)到遺留設(shè)備(18a-d)以及從遺留設(shè)備 (18a-d)行進(jìn)到所述虛擬機(jī)OS。
8.根據(jù)權(quán)利要求5所述的多主機(jī)環(huán)境(10),其中所述目標(biāo)主機(jī)包括CPU節(jié)點(diǎn)。
9.根據(jù)權(quán)利要求3所述的多主機(jī)環(huán)境(10),其中遺留設(shè)備(18a-d)在所述虛擬機(jī)中被 虛擬化。
10.根據(jù)權(quán)利要求3所述的多主機(jī)環(huán)境(10),其中遺留設(shè)備(18a-d)至少部分地在管 理節(jié)點(diǎn)(122)中被配置成單主機(jī)設(shè)備,但是在所述虛擬機(jī)中作為虛擬遺留設(shè)備運(yùn)行。
全文摘要
公開了用于在多主機(jī)環(huán)境中共享遺留設(shè)備的系統(tǒng)和方法。一種用于在多主機(jī)環(huán)境(10)中共享遺留設(shè)備(18a-d)的示例性方法(200)包括從遺留設(shè)備接收設(shè)備信息,所述設(shè)備信息標(biāo)識出虛擬機(jī)內(nèi)的目標(biāo)主機(jī)。該方法還包括將所述設(shè)備信息封裝到網(wǎng)絡(luò)交換結(jié)構(gòu)(102)的相應(yīng)總線事務(wù)中。該方法還包括通過所述虛擬機(jī)中的網(wǎng)絡(luò)交換結(jié)構(gòu)將所述總線事務(wù)路由到所述虛擬機(jī)內(nèi)的主機(jī)。
文檔編號H04L12/66GK101849230SQ200880114798
公開日2010年9月29日 申請日期2008年9月3日 優(yōu)先權(quán)日2007年9月6日
發(fā)明者D·D·里利 申請人:惠普開發(fā)有限公司