專利名稱:一種sun4v架構(gòu)下的虛擬機(jī)自動(dòng)啟動(dòng)控制方法
技術(shù)領(lǐng)域:
本發(fā)明涉及虛擬機(jī)管理機(jī)制,具體涉及一種sun4v架構(gòu)下實(shí)現(xiàn)無(wú)物理磁盤IO設(shè)備的虛擬機(jī)中操作系統(tǒng)從虛擬磁盤設(shè)備啟動(dòng)的方法
背景技術(shù):
虛擬化技術(shù)已經(jīng)在計(jì)算機(jī)領(lǐng)域獲得了廣泛應(yīng)用,目前的虛擬化技術(shù)可以分為兩大類,一類是對(duì)單物理機(jī)器上的冗余資源通過(guò)分區(qū)或復(fù)用等方式建立多個(gè)虛擬機(jī)環(huán)境,另一類是將多個(gè)物理機(jī)資源進(jìn)行整合以建立能力更為強(qiáng)大的統(tǒng)一計(jì)算機(jī)環(huán)境,下文的技術(shù)內(nèi)容及涉及的“虛擬化技術(shù)”等名詞一般是面向單一物理計(jì)算機(jī)系統(tǒng)上的虛擬化。如圖I所示,虛擬化技術(shù)給計(jì)算機(jī)系統(tǒng)引入了一個(gè)新的軟件層次(也稱為特權(quán)級(jí)或運(yùn)行態(tài)),傳統(tǒng)的計(jì)算機(jī)系統(tǒng)軟件一般由操作系統(tǒng)和用戶軟件組成,虛擬化的計(jì)算機(jī)中在操作系統(tǒng)下加入了虛擬機(jī)監(jiān)控器(Virtual Machine Monitor, VMM)層,完成對(duì)資源隔離管理等工作。從計(jì)算機(jī)資源組成的角度出發(fā),虛擬化技術(shù)構(gòu)成可以分為三個(gè)方面CPU資源虛擬化、內(nèi)存資源虛擬化、IO(Input-Output)資源虛擬化。三種技術(shù)就是將對(duì)應(yīng)的資源在VMM的管理下以某種隔離方式分配到不同的虛擬機(jī)(Virtual Machine, VM)環(huán)境中,使虛擬機(jī)中的系統(tǒng)軟件認(rèn)為它們擁有自己的相應(yīng)私有資源。CPU和內(nèi)存資源的虛擬化相對(duì)簡(jiǎn)單。對(duì)于CPU,VMM可以進(jìn)行時(shí)間片分割或在CPU數(shù)量足夠時(shí)將CPU直接分配到各虛擬機(jī);對(duì)于內(nèi)存,VMM可以使用分頁(yè)、分段等內(nèi)存映射技術(shù)隔離分配給虛擬機(jī)使用。IO資源的虛擬化有其相對(duì)特殊性。首先,IO設(shè)備對(duì)系統(tǒng)來(lái)說(shuō)是不確定的,因?yàn)樵试S總線上熱拔插事件和故障隱退。其次,標(biāo)準(zhǔn)PCI總線上設(shè)備的管理具有較強(qiáng)關(guān)聯(lián)性,必須一次掃描完成其上所有設(shè)備的初始化,VMM難以將不同的設(shè)備直接分配到各虛擬機(jī),更難以對(duì)設(shè)備進(jìn)行分時(shí)分配。第三,IO設(shè)備種類繁多,驅(qū)動(dòng)程序的可靠性差,一般交由虛擬機(jī)操作系統(tǒng)直接驅(qū)動(dòng)?;谏鲜鲈颍琕MM —般只能以PCI總線域(或者HOST主橋)的粒度將IO設(shè)備分配到虛擬機(jī),由虛擬機(jī)對(duì)主橋下總線上掛接的各種設(shè)備進(jìn)行驅(qū)動(dòng)管理。計(jì)算機(jī)上PCI總線域數(shù)量有限,一般只有一個(gè),因此傳統(tǒng)的虛擬化技術(shù)一般是把所有IO設(shè)備交給一個(gè)特殊的虛擬機(jī)管理,這個(gè)虛擬機(jī)稱為控制域或者DomainO,其它虛擬機(jī)通過(guò)虛擬信道使用控制域提供的服務(wù)完成自己的10,這些虛擬機(jī)稱為客戶域或者DomainU。如圖2所示,控制域以及客戶域?qū)Υ疟P設(shè)備訪問(wèn)的過(guò)程如下控制域可以對(duì)文件系統(tǒng)(FS)進(jìn)行直接讀寫并訪問(wèn)本地磁盤驅(qū)動(dòng)程序;客戶域中沒(méi)有真實(shí)的10設(shè)備,但是擁有虛擬磁盤,這是虛擬磁盤客戶端驅(qū)動(dòng)程序vdc (virtual disk client)提供的??蛻粲虻奈募到y(tǒng)操作命令被vdc轉(zhuǎn)換為通信協(xié)議通過(guò)域間信道LDC發(fā)送到控制域的服務(wù)程序vds(virtual disk server), vds訪問(wèn)本地文件系統(tǒng)或磁盤驅(qū)動(dòng)完成訪問(wèn)請(qǐng)求后,再將返回結(jié)果轉(zhuǎn)換為協(xié)議通過(guò)域間信道發(fā)送給客戶域的vdc驅(qū)動(dòng),客戶域的讀寫請(qǐng)求最終完成。對(duì)于不擁有真實(shí)10總線的客戶域,必須在控制域啟動(dòng)完畢并加載vds后端驅(qū)動(dòng)之后,才能使用vdc并具備虛擬磁盤的訪問(wèn)能力,這就產(chǎn)生了客戶域操作系統(tǒng)的啟動(dòng)時(shí)機(jī)問(wèn)題。諸如sun4v架構(gòu)的平臺(tái)上,VMM被設(shè)計(jì)成精簡(jiǎn)的軟件薄層hypervisor,系統(tǒng)中的多個(gè)虛擬機(jī)以分區(qū)方式擁有CPU和內(nèi)存資源,各個(gè)虛擬機(jī)可以在互不干擾的情況下被hypervisor同時(shí)加電啟動(dòng),但普通客戶域只能在啟動(dòng)到OS加載器后等待控制域啟動(dòng)并提供服務(wù),之后OS加載器才能啟動(dòng)虛擬磁盤上的操作系統(tǒng)。在以虛擬化技術(shù)為基石的集群服務(wù)器或是云計(jì)算支持系統(tǒng)中,出于系統(tǒng)啟動(dòng)速度和管理維護(hù)上的考慮,虛擬機(jī)操作系統(tǒng)的自動(dòng)啟動(dòng)是應(yīng)該被支持的重要特性。
sun4v架構(gòu)是SUN公司在spare系列處理器上開發(fā)的硬件級(jí)虛擬化技術(shù)架構(gòu),在處理器上實(shí)現(xiàn)了對(duì)CPU分區(qū)、內(nèi)存分區(qū)、以及IO虛擬化的指令和寄存器支持。SUN公司將基于sun4v架構(gòu)的opensparc Tl^Popensparc T2處理器開源。飛騰1000系列通用處理器(下簡(jiǎn)稱飛騰CPU)是由國(guó)防科技大學(xué)自主研發(fā)的高性能通用微處理器,基于opensparcT2架構(gòu)設(shè)計(jì),兼容sparcV9指令集。飛騰CPU芯片使用成熟的SOC技術(shù),片上集成了 8個(gè)處理核,核內(nèi)包含8個(gè)硬件線程,具有強(qiáng)大的計(jì)算和事務(wù)處理能力。此外芯片上還集成存控單元和PCI Express接口,有效解決了 IO瓶頸問(wèn)題。為了更加高效地使用處理器芯片上提供的“海量”資源,飛騰處理器的設(shè)計(jì)中還引入了完備的硬件虛擬化支持,使SOC系統(tǒng)又可以被劃分成相互隔離的資源分區(qū),支持多達(dá)64個(gè)虛擬機(jī)的同時(shí)運(yùn)行,不但可使系統(tǒng)資源利用率得到大幅度提升,還能在高可用、高安全方面有更佳表現(xiàn)。飛騰CPU平臺(tái)上的虛擬化技術(shù)也是以SUN公司開發(fā)的sun4v技術(shù)為基礎(chǔ)構(gòu)建。軟件被分為hyper_privilege、privilege和non-privilege三種運(yùn)行態(tài),分別對(duì)應(yīng)于VMM、操作系統(tǒng)內(nèi)核和用戶態(tài)軟件。三個(gè)運(yùn)行態(tài)的軟件分別可以訪問(wèn)物理地址、實(shí)地址和虛地址,操作系統(tǒng)只能訪問(wèn)到實(shí)地址和虛地址,VMM才能訪問(wèn)物理地址。目前的sun4v虛擬化技術(shù)構(gòu)件中主要采用虛擬共享訪問(wèn)IO方式。對(duì)于sun4v架構(gòu)下的虛擬化平臺(tái)而言,傳統(tǒng)的客戶域啟動(dòng)一般是利用系統(tǒng)提供的邏輯域管理管理工具(LDM)提供的配置管理命令人工完成。在sun4v系統(tǒng)平臺(tái)上,虛擬機(jī)監(jiān)控器hypervisor、0S加載器OBP (Open Boot Prom)都被集成在主機(jī)固件中,此外還可以將各分區(qū)的機(jī)器描述文件MD (Machine Discription)也集成到固件中。Hypervisor啟動(dòng)時(shí),如果發(fā)現(xiàn)了多個(gè)分區(qū)的合法MD描述,則會(huì)同時(shí)對(duì)這些虛擬分區(qū)的vcpu進(jìn)行加電啟動(dòng)。此后,每個(gè)分區(qū)的主啟動(dòng)vcpu會(huì)將自己的OBP復(fù)制到分區(qū)內(nèi)存,并且執(zhí)行。OBP在啟動(dòng)完畢后,可以根據(jù)配置自動(dòng)啟動(dòng)OS,或是等待用戶輸入boot命令再啟動(dòng)指定的OS。如圖3所示,在hyper-privilege執(zhí)行過(guò)程中,控制域和客戶域各執(zhí)行一個(gè)主線程,控制域的線程為0號(hào)線程。0號(hào)線程以及各個(gè)客戶域的主線程首先執(zhí)行邏輯域初始化,然后加載OBP (OS加載器)。在加載OBP完畢后,0號(hào)線程首先掃描物理總線并加載設(shè)備驅(qū)動(dòng),然后自動(dòng)或者手工加載物理磁盤中的控制域OS,控制域OS啟動(dòng)完成以后則在控制域中加載Vds驅(qū)動(dòng)。在控制域操作系統(tǒng)啟動(dòng)完成、Vds服務(wù)已經(jīng)就緒,用戶通過(guò)控制域提供的控制臺(tái)服務(wù)登錄到客戶域的串口上,通過(guò)啟動(dòng)命令啟動(dòng)客戶域的操作系統(tǒng)。因此,在OBP和OS加載過(guò)程中,首先由控制域自動(dòng)或者手工加載物理磁盤中的OS,然后控制域的OS啟動(dòng)并完成加載vds驅(qū)動(dòng);各個(gè)客戶域則掃描虛擬總線并加載設(shè)備驅(qū)動(dòng)vdc后,在虛擬磁盤訪問(wèn)請(qǐng)求無(wú)回應(yīng)時(shí)不斷等待,直到請(qǐng)求收到控制域的返回消息后才自動(dòng)或者手工加載虛擬磁盤操作系統(tǒng),這樣存在很大的弊端1、依賴于邏輯域管理管理工具(LDM)工具套件;2、虛擬機(jī)啟動(dòng)過(guò)程中需要人工干預(yù),通過(guò)邏輯域管理管理工具(LDM)工具套件同時(shí)只能管理一個(gè)客戶域的啟動(dòng),人工啟動(dòng)效率低下,導(dǎo)致虛擬機(jī)啟動(dòng)非常慢,無(wú)法實(shí)現(xiàn)虛擬機(jī)的自動(dòng)啟動(dòng)。因此影響了 sun4v架構(gòu)下的虛擬化平臺(tái)的應(yīng)用。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問(wèn) 題是提供一種啟動(dòng)速度快、啟動(dòng)效率高、無(wú)需人工干預(yù)、適用范圍廣的sun4v架構(gòu)下的虛擬機(jī)自動(dòng)啟動(dòng)控制方法。為了解決上述技術(shù)問(wèn)題,本發(fā)明采用的技術(shù)方案為
一種sun4v架構(gòu)下的虛擬機(jī)自動(dòng)啟動(dòng)控制方法,其實(shí)施步驟如下
1)控制域在加載物理磁盤驅(qū)動(dòng)服務(wù)后加載邏輯域虛擬串口所對(duì)應(yīng)邏輯域信道的驅(qū)
動(dòng);
2)控制域通過(guò)所述邏輯域信道向各客戶域的虛擬串口寫入回車控制符,然后讀取各客戶域的虛擬串口從邏輯域信道的返回?cái)?shù)據(jù),重復(fù)執(zhí)行步驟2)直至客戶域返回?cái)?shù)據(jù)為操作系統(tǒng)加載器啟動(dòng)完畢的消息;
3)控制域獲取各客戶域的操作系統(tǒng)啟動(dòng)命令,控制域以虛擬串口寫方式通過(guò)邏輯域信道向操作系統(tǒng)加載器已經(jīng)啟動(dòng)完畢的客戶域的虛擬串口寫入操作系統(tǒng)啟動(dòng)命令并發(fā)送回車控制符。作為本發(fā)明上述技術(shù)方案的進(jìn)一步改進(jìn)
所述步驟3)控制域在發(fā)送回車控制符后還包括檢測(cè)客戶域操作系統(tǒng)啟動(dòng)狀態(tài)的步驟,所述檢測(cè)客戶域操作系統(tǒng)啟動(dòng)狀態(tài)的步驟具體包括控制域在發(fā)送回車控制符后讀取客戶域虛擬串口從邏輯域信道的返回?cái)?shù)據(jù),如果客戶域返回?cái)?shù)據(jù)為操作系統(tǒng)啟動(dòng)成功消息,則關(guān)閉到客戶域之間的邏輯域信道連接并退出;否則跳轉(zhuǎn)執(zhí)行所述步驟2)直至所有客戶域的操作系統(tǒng)啟動(dòng)完畢。所述步驟2)的詳細(xì)步驟包括控制域首先設(shè)定邏輯域信道用于連接各個(gè)客戶域的TCP端口,由虛擬telnet管理服務(wù)將虛擬串口的數(shù)據(jù)轉(zhuǎn)換到這些TCP端口上,然后分別通過(guò)各個(gè)TCP端口向各客戶域虛擬串口寫入回車控制符,并通過(guò)各個(gè)TCP端口讀取各客戶域虛擬串口的返回?cái)?shù)據(jù)。所述步驟3)中控制域獲取各客戶域的操作系統(tǒng)啟動(dòng)命令的詳細(xì)步驟如下控制域首先獲取各個(gè)客戶域?qū)?yīng)的TCP端口,然后根據(jù)所述TCP端口查找對(duì)應(yīng)客戶端的操作系統(tǒng)啟動(dòng)命令。所述步驟3)中寫入操作系統(tǒng)啟動(dòng)命令具體是指控制域?qū)⒉僮飨到y(tǒng)啟動(dòng)命令寫入到字符數(shù)組中,然后以串口寫方式將所述字符數(shù)組中的字符逐一通過(guò)邏輯域信道寫入客戶域的虛擬串口。所述操作系統(tǒng)啟動(dòng)命令包括虛擬磁盤操作系統(tǒng)啟動(dòng)命令和網(wǎng)絡(luò)操作系統(tǒng)啟動(dòng)命令。所述步驟3)中控制域以虛擬串口寫方式向客戶域的虛擬串口寫入操作系統(tǒng)啟動(dòng)命令并發(fā)送回車控制符的詳細(xì)步驟如下控制域預(yù)先設(shè)置用于作為指定客戶域操作系統(tǒng)啟動(dòng)前提條件的觸發(fā)消息,且預(yù)先在另一關(guān)聯(lián)的客戶域中設(shè)置向控制域發(fā)送所述觸發(fā)消息的守護(hù)程序,控制域在向所述指定客戶域?qū)懭氩僮飨到y(tǒng)啟動(dòng)命令之前預(yù)先判斷是否收到對(duì)應(yīng)的觸發(fā)消息,如果尚未收到觸發(fā)消息則暫停向指定客戶域的虛擬串口寫入操作系統(tǒng)啟動(dòng)命令,并在收到所述觸發(fā)消息后以串口寫方式向客戶域的虛擬串口寫入操作系統(tǒng)啟動(dòng)命令并發(fā)送回車控制符。
本發(fā)明具有下述優(yōu)點(diǎn)
I、本發(fā)明的控制域在物理磁盤的驅(qū)動(dòng)以及邏輯域信道的驅(qū)動(dòng)已被控制域內(nèi)核加載、客戶域OBP啟動(dòng)完畢即可自動(dòng)與各客戶域分別建立虛擬串口連接,并通過(guò)虛擬串口連接與客戶域進(jìn)行自動(dòng)交互實(shí)現(xiàn)客戶域的快速自動(dòng)啟動(dòng),適用于無(wú)LDM (邏輯域管理)工具套件輔助的情況,而且本發(fā)明啟動(dòng)過(guò)程中不需要人工干預(yù),可以同時(shí)管理多個(gè)客戶域的啟動(dòng),并在控制域加電啟動(dòng)完畢后以最快速度啟動(dòng)客戶域,尤其對(duì)于包括云服務(wù)器在內(nèi)的擁有大量虛擬機(jī)的場(chǎng)合而言,本發(fā)明能夠極大提升全系統(tǒng)的啟動(dòng)效率,具有啟動(dòng)速度快、啟動(dòng)效率高、無(wú)需人工干預(yù)、適用范圍廣的優(yōu)點(diǎn)。
2、本發(fā)明控制域進(jìn)一步設(shè)定邏輯域信道用于連接各個(gè)客戶域的TCP端口,通過(guò)TCP端口來(lái)支持和區(qū)分不同客戶域,而且后續(xù)進(jìn)一步根據(jù)TCP端口查找對(duì)應(yīng)客戶端的操作系統(tǒng)啟動(dòng)命令,實(shí)現(xiàn)間單方便。3、本發(fā)明的操作系統(tǒng)啟動(dòng)命令進(jìn)一步包括虛擬磁盤操作系統(tǒng)啟動(dòng)命令和網(wǎng)絡(luò)操作系統(tǒng)啟動(dòng)命令,除能夠支持虛擬磁盤啟動(dòng)客戶域操作系統(tǒng)以外,還能夠支持網(wǎng)絡(luò)啟動(dòng)客戶域操作系統(tǒng)以適應(yīng)無(wú)盤服務(wù)器的場(chǎng)景,適用范圍廣泛。4、本發(fā)明的通過(guò)設(shè)置用于啟動(dòng)指定客戶域操作系統(tǒng)的觸發(fā)消息、預(yù)先在另一客戶域中設(shè)置用于在操作系統(tǒng)啟動(dòng)后向控制域發(fā)送所述觸發(fā)消息的守護(hù)程序、控制域在向所述指定客戶域?qū)懭氩僮飨到y(tǒng)啟動(dòng)命令之前預(yù)先判斷是否收到對(duì)應(yīng)的觸發(fā)消息,能夠控制不同客戶域的操作系統(tǒng)啟動(dòng)順序,實(shí)現(xiàn)客戶域的條件啟動(dòng)和順序啟動(dòng),易于建立靈活的自動(dòng)啟動(dòng)時(shí)機(jī)點(diǎn),能夠適應(yīng)復(fù)雜的需求、滿足不同客戶域的啟動(dòng)關(guān)聯(lián)性的需求。
圖I為現(xiàn)有技術(shù)虛擬化的計(jì)算機(jī)的框架結(jié)構(gòu)示意圖。圖2為現(xiàn)有技術(shù)控制域以及客戶域?qū)Υ疟P設(shè)備訪問(wèn)的過(guò)程示意圖。圖3為現(xiàn)有技術(shù)虛擬機(jī)啟動(dòng)的流程示意圖。圖4為本發(fā)明實(shí)施例的實(shí)施流程示意圖。
具體實(shí)施例方式本實(shí)施例的虛擬機(jī)環(huán)境為基于sun4v架構(gòu)的飛騰處理器平臺(tái),控制域擁有PCIE總線(MD中指定),客戶域沒(méi)有物理PCIE總線設(shè)備,客戶域操作系統(tǒng)文件位于由虛擬磁盤服務(wù)提供的虛擬磁盤中。為表達(dá)方便,下文中的串口均指虛擬串口。如圖4所示,本發(fā)明實(shí)施例的sun4v架構(gòu)下的虛擬機(jī)自動(dòng)啟動(dòng)控制方法的實(shí)施步驟如下
1)控制域在加載物理磁盤驅(qū)動(dòng)服務(wù)(Vds)后加載邏輯域信道(UART_LDC)的驅(qū)動(dòng);
2)控制域通過(guò)邏輯域信道向各客戶域的串口寫入回車控制符,然后讀取各客戶域的串口從邏輯域信道的返回?cái)?shù)據(jù),重復(fù)執(zhí)行步驟2)直至客戶域返回?cái)?shù)據(jù)為操作系統(tǒng)加載器(OBP)啟動(dòng)完畢的消息;
3)控制域獲取各客戶域的操作系統(tǒng)啟動(dòng)命令,控制域以串口寫方式通過(guò)邏輯域信道向操作系統(tǒng)加載器(OBP)已經(jīng)啟動(dòng)完畢的客戶域的串口寫入操作系統(tǒng)啟動(dòng)命令并發(fā)送回車控制符。
本實(shí)施例中步驟I) 步驟3)中的功能均是通過(guò)添加在控制域的虛擬網(wǎng)絡(luò)終端服務(wù)器守護(hù)程序(vntsd服務(wù))的啟動(dòng)代碼中,選取vntsd服務(wù)的啟動(dòng)作為客戶域啟動(dòng)時(shí)機(jī)點(diǎn),vntsd服務(wù)是控制域操作系統(tǒng)中提供的虛擬控制臺(tái)服務(wù)。vntsd服務(wù)會(huì)建立到每個(gè)客戶域串口的UART_LDC的連接,vntsd服務(wù)針對(duì)每個(gè)運(yùn)行態(tài)的客戶虛擬機(jī)串口提供一個(gè)TCP端口給控制域用戶,vntsd服務(wù)通過(guò)TCP端口將用戶輸入提交給客戶域0BP,并通過(guò)TCP端口將客戶域的串口輸出信息中轉(zhuǎn)給telnet用戶??刂朴蛴脩敉ㄟ^(guò)telnet應(yīng)用連接到對(duì)應(yīng)每個(gè)虛擬機(jī)的tcp端口,就如同登錄到該虛擬機(jī)的串口上一樣。選擇vntsd服務(wù)的啟動(dòng)點(diǎn)作為客戶域啟動(dòng)時(shí)機(jī)的依據(jù)為1.此時(shí)控制域OS基本啟動(dòng)完畢,客戶域有充足的時(shí)間已經(jīng)啟動(dòng)到OBP就緒狀態(tài);2.此時(shí)控制域OS已經(jīng)完成加載所有內(nèi)核模塊和設(shè)備驅(qū)動(dòng)程序,vds服務(wù)已經(jīng)就緒;3. vntsd要占用UART_LDC信道,先于vntsd完成本發(fā)明的代碼,可以防止信道(設(shè)備)沖突。UART_LDC是對(duì)用于建立控制域到客戶域串口連接的邏輯域信道的通稱,控制域到每個(gè)客戶域都會(huì)配置至少一條串口連接,這是在創(chuàng)建客戶域時(shí)的標(biāo)準(zhǔn)配置,并會(huì)在控制域中分配對(duì)應(yīng)的通信端口(port)。對(duì)于應(yīng)用級(jí)的服務(wù),UART_LDC由內(nèi)核封裝后暴露一個(gè)設(shè)備節(jié)點(diǎn),例如在Solaris操作系統(tǒng)中的節(jié)點(diǎn)路徑為
uartpath=/devices/virtual-devicesilOO/channel-devicesi200/virtual-consoIe-concentratoriO:ldom—doml
本發(fā)明的代碼中通過(guò)調(diào)用uartfd= open (uartpath, 0_RDWR);指令得到串口的文件描述符,再利用標(biāo)準(zhǔn)UNIX文件操作write和read進(jìn)行串口讀寫。客戶域的操作系統(tǒng)內(nèi)核接管CPU后,就會(huì)調(diào)用操作系統(tǒng)加載器(OBP)的串口,輸出內(nèi)核成功啟動(dòng)的消息??刂朴蛲ㄟ^(guò)判斷讀取的串口信息,就可以確認(rèn)客戶域操作系統(tǒng)是否被成功加載啟動(dòng)并向用戶報(bào)告結(jié)果。由于每個(gè)分區(qū)的資源是嚴(yán)格隔離的,對(duì)于不擁有物理IO總線的客戶域而言,同外界通信的唯一方式是邏輯域信道(LDC, Logical Domain Channel Xsun4v架構(gòu)的虛擬化環(huán)境中,每個(gè)客戶域都至少建立一條和控制域的LDC用于建立虛擬串口控制臺(tái),我們將該LDC命名為UART_LDC??刂朴騉S首先啟動(dòng)并加載LDC虛擬串口驅(qū)動(dòng)程序,之后啟動(dòng)控制臺(tái)服務(wù)并監(jiān)聽虛擬串口 ;客戶域中的OBP首先啟動(dòng),會(huì)將自己的虛擬串口設(shè)備進(jìn)行初始化,并將啟動(dòng)信息和控制提示符通過(guò)虛擬串口提供給控制域;控制域OS的vntsd服務(wù)將通往每個(gè)客戶域的UART_LDC關(guān)聯(lián)到不同的TCP端口上,控制域用戶通過(guò)telnet程序登錄到本機(jī)的TCP端口,最終得到客戶域的控制串口終端。因此,當(dāng)固件中具備客戶域的MD描述時(shí),一般是客戶域在OBP啟動(dòng)完畢狀態(tài)即等待,直到控制域通過(guò)telnet終端得到OBP控制界面,并輸入boot命令啟動(dòng)OS,此時(shí)控制域一般已經(jīng)準(zhǔn)備好進(jìn)行虛擬磁盤10服務(wù)。步驟2)的詳細(xì)步驟包括控制域首先設(shè)定邏輯域信道用于連接各個(gè)客戶域的TCP端口,然后分別通過(guò)各個(gè)TCP端口向各客戶域的串口寫入回車控制符,并通過(guò)各個(gè)TCP端口讀取各客戶域串口的返回?cái)?shù)據(jù)。步驟3)中控制域獲取各客戶域的操作系統(tǒng)啟動(dòng)命令的詳細(xì)步驟如下控制域首先獲取各個(gè)客戶域?qū)?yīng)的TCP端口,然后根據(jù)TCP端口查找對(duì)應(yīng)客戶端的操作系統(tǒng)啟動(dòng)命令??刂朴蚝涂蛻粲蛑g的交互實(shí)際上通過(guò)telnet服務(wù)實(shí)現(xiàn),控制域通過(guò)telnet用戶登錄客戶域?qū)崿F(xiàn)與客戶域OBP的交互。對(duì)于操作系統(tǒng)加載器(OBP)而言,在啟動(dòng)完畢后會(huì)打印出“ok ”提示符,等待用戶輸入,如果用戶輸入回車控制符,則打印新的“ok: ”提示符。由于本實(shí)施例中從控制域打開到客戶域的串口時(shí),客戶域的OBP可能已經(jīng)處于就緒狀態(tài),已經(jīng)無(wú)法接收到“ok ”提示符,故發(fā)送一個(gè)回車控制符,利用返回結(jié)果判斷客戶域OBP是否就緒。由于OBP啟動(dòng)完畢的消息為命令行提示符“ok: ”,因此如果客戶域返回?cái)?shù)據(jù)為“ok ”則判定客戶域的OBP已經(jīng)啟動(dòng)完畢,從而控制域針對(duì)該客戶域跳轉(zhuǎn)執(zhí)行步驟3)。步驟3)控制域在發(fā)送回車控制符后還包括檢測(cè)客戶域操作系統(tǒng)啟動(dòng)狀態(tài)的步驟,檢測(cè)客戶域操作系統(tǒng)啟動(dòng)狀態(tài)的步驟具體包括控制域在發(fā)送回車控制符后以串口讀方式讀取客戶域從邏輯域信道的返回?cái)?shù)據(jù),如果客戶域返回?cái)?shù)據(jù)為操作系統(tǒng)啟動(dòng)成功消息,則關(guān)閉到客戶域之間的邏輯域信道連接并退出;否則跳轉(zhuǎn)執(zhí)行步驟2)直至所有客戶域的操作系統(tǒng)啟動(dòng)完畢。通過(guò)對(duì)客戶域操作系統(tǒng)啟動(dòng)狀態(tài)的檢測(cè),能夠更加精確地確定客戶域操作系統(tǒng)的啟動(dòng)狀態(tài),從而在啟動(dòng)失敗時(shí)繼續(xù)與客戶域的OBP交互,因此一旦客戶域發(fā)生故障導(dǎo)致操作系統(tǒng)啟動(dòng)失敗,仍然可以通過(guò)多次 啟動(dòng)客戶域的操作系統(tǒng)來(lái)減少客戶域無(wú)法啟動(dòng)故障的可能性。步驟3)中寫入操作系統(tǒng)啟動(dòng)命令具體是指控制域?qū)⒉僮飨到y(tǒng)啟動(dòng)命令寫入到字符數(shù)組中,然后將字符數(shù)組中的字符逐一通過(guò)邏輯域信道寫入客戶域的串口。步驟3)中控制域向客戶域的串口寫入操作系統(tǒng)啟動(dòng)命令并發(fā)送回車控制符的詳細(xì)步驟如下控制域預(yù)先設(shè)置用于作為指定客戶域操作系統(tǒng)啟動(dòng)前提條件的觸發(fā)消息,且預(yù)先在另一關(guān)聯(lián)的客戶域中設(shè)置向控制域發(fā)送觸發(fā)消息的守護(hù)程序,控制域在向指定客戶域?qū)懭氩僮飨到y(tǒng)啟動(dòng)命令之前預(yù)先判斷是否收到對(duì)應(yīng)的觸發(fā)消息,如果尚未收到觸發(fā)消息則暫停向指定客戶域?qū)懭氩僮飨到y(tǒng)啟動(dòng)命令,并在收到觸發(fā)消息后以串口寫方式向客戶域?qū)懭氩僮飨到y(tǒng)啟動(dòng)命令并發(fā)送回車控制符。例如,客戶域B在客戶域A啟動(dòng)到某個(gè)階段時(shí)再啟動(dòng),則控制域預(yù)先設(shè)置用于啟動(dòng)客戶域B操作系統(tǒng)的觸發(fā)消息,且預(yù)先在客戶域A中設(shè)置用于在操作系統(tǒng)啟動(dòng)后向控制域發(fā)送觸發(fā)消息的守護(hù)程序,守護(hù)程序在客戶域A的操作系統(tǒng)啟動(dòng)后的相關(guān)階段將觸發(fā)消息打印到串口輸出,如果控制域尚未收到觸發(fā)消息則暫停向客戶域B的串口寫入操作系統(tǒng)啟動(dòng)命令,并在收到觸發(fā)消息則通過(guò)虛擬串口連接向客戶域B寫入操作系統(tǒng)啟動(dòng)命令并發(fā)送回車控制符,從而控制不同客戶域的啟動(dòng)順序,實(shí)現(xiàn)客戶域的條件啟動(dòng)和順序啟動(dòng),能夠滿足不同客戶域的啟動(dòng)關(guān)聯(lián)性的需求,例如適應(yīng)某些虛擬機(jī)有啟動(dòng)的先后次序的要求,可以避免人工錯(cuò)誤,易于建立靈活的自動(dòng)啟動(dòng)時(shí)機(jī)點(diǎn)以適應(yīng)復(fù)雜的需求,具有適用范圍廣的優(yōu)點(diǎn)。本實(shí)施例的操作系統(tǒng)啟動(dòng)命令包括虛擬磁盤操作系統(tǒng)啟動(dòng)命令和網(wǎng)絡(luò)操作系統(tǒng)啟動(dòng)命令,虛擬磁盤操作系統(tǒng)啟動(dòng)命令可以使客戶域從本域的虛擬磁盤進(jìn)行OS啟動(dòng),網(wǎng)絡(luò)操作系統(tǒng)啟動(dòng)命令可以使客戶域從本域的虛擬網(wǎng)絡(luò)啟動(dòng)。本實(shí)施例中,虛擬磁盤操作系統(tǒng)啟動(dòng)命令為“boot磁盤標(biāo)識(shí)參數(shù)”形式,本實(shí)施例中將命令格式中的磁盤標(biāo)識(shí)和參數(shù)都事先在客戶域OBP的環(huán)境變量中進(jìn)行配置,只需要輸入命令boot和“回車”符就可以進(jìn)行客戶域操作系統(tǒng)的啟動(dòng)。虛擬磁盤操作系統(tǒng)啟動(dòng)命令和網(wǎng)絡(luò)操作系統(tǒng)啟動(dòng)命令是通過(guò)參數(shù)net來(lái)區(qū)分的,只需要將boot命令的參數(shù)帶上net,即形成“boot net參數(shù)”形式的網(wǎng)絡(luò)操作系統(tǒng)啟動(dòng)命令,就可以使客戶域自動(dòng)進(jìn)行網(wǎng)絡(luò)操作系統(tǒng)啟動(dòng)。以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,本發(fā)明的保護(hù)范圍并不僅局限于上述實(shí)施例,凡屬于本發(fā)明思路下的技術(shù)方案均屬于本發(fā)明的保護(hù)范圍。應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理前提下的若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種sun4v架構(gòu)下的虛擬機(jī)自動(dòng)啟動(dòng)控制方法,其特征在于其實(shí)施步驟如下 O控制域在加載物理磁盤驅(qū)動(dòng)服務(wù)后加載邏輯域虛擬串口所對(duì)應(yīng)邏輯域信道的驅(qū)動(dòng); 2)控制域通過(guò)所述邏輯域信道向各客戶域的虛擬串口寫入回車控制符,然后讀取各客戶域的虛擬串口從邏輯域信道的返回?cái)?shù)據(jù),重復(fù)執(zhí)行步驟2)直至客戶域返回?cái)?shù)據(jù)為操作系統(tǒng)加載器啟動(dòng)完畢的消息; 3)控制域獲取各客戶域的操作系統(tǒng)啟動(dòng)命令,控制域以虛擬串口寫方式通過(guò)邏輯域信道向操作系統(tǒng)加載器已經(jīng)啟動(dòng)完畢的客戶域的虛擬串口寫入操作系統(tǒng)啟動(dòng)命令并發(fā)送回車控制符。
2.根據(jù)權(quán)利要求I所述的sun4v架構(gòu)下的虛擬機(jī)自動(dòng)啟動(dòng)控制方法,其特征在于,所述步驟3)控制域在發(fā)送回車控制符后還包括檢測(cè)客戶域操作系統(tǒng)啟動(dòng)狀態(tài)的步驟,所述檢測(cè)客戶域操作系統(tǒng)啟動(dòng)狀態(tài)的步驟具體包括控制域在發(fā)送回車控制符后讀取客戶域虛擬串口從邏輯域信道的返回?cái)?shù)據(jù),如果客戶域返回?cái)?shù)據(jù)為操作系統(tǒng)啟動(dòng)成功消息,則關(guān)閉到客戶域之間的邏輯域信道連接并退出;否則跳轉(zhuǎn)執(zhí)行所述步驟2)直至所有客戶域的操作系統(tǒng)啟動(dòng)完畢。
3.根據(jù)權(quán)利要求I所述的sun4v架構(gòu)下的虛擬機(jī)自動(dòng)啟動(dòng)控制方法,其特征在于,所述步驟2)的詳細(xì)步驟包括控制域首先設(shè)定邏輯域信道用于連接各個(gè)客戶域的TCP端口,由虛擬telnet管理服務(wù)將虛擬串口的數(shù)據(jù)轉(zhuǎn)換到這些TCP端口上,然后分別通過(guò)各個(gè)TCP端口向各客戶域虛擬串口寫入回車控制符,并通過(guò)各個(gè)TCP端口讀取各客戶域虛擬串口的返回?cái)?shù)據(jù)。
4.根據(jù)權(quán)利要求3所述的sun4v架構(gòu)下的虛擬機(jī)自動(dòng)啟動(dòng)控制方法,其特征在于,所述步驟3)中控制域獲取各客戶域的操作系統(tǒng)啟動(dòng)命令的詳細(xì)步驟如下控制域首先獲取各個(gè)客戶域?qū)?yīng)的TCP端口,然后根據(jù)所述TCP端口查找對(duì)應(yīng)客戶端的操作系統(tǒng)啟動(dòng)命令。
5.根據(jù)權(quán)利要求I所述的sun4v架構(gòu)下的虛擬機(jī)自動(dòng)啟動(dòng)控制方法,其特征在于所述步驟3)中寫入操作系統(tǒng)啟動(dòng)命令具體是指控制域?qū)⒉僮飨到y(tǒng)啟動(dòng)命令寫入到字符數(shù)組中,然后以串口寫方式將所述字符數(shù)組中的字符逐一通過(guò)邏輯域信道寫入客戶域的虛擬串□。
6.根據(jù)權(quán)利要求I所述的sun4v架構(gòu)下的虛擬機(jī)自動(dòng)啟動(dòng)控制方法,其特征在于所述操作系統(tǒng)啟動(dòng)命令包括虛擬磁盤操作系統(tǒng)啟動(dòng)命令和網(wǎng)絡(luò)操作系統(tǒng)啟動(dòng)命令。
7.根據(jù)權(quán)利要求I 6中任意一項(xiàng)所述的sun4v架構(gòu)下的虛擬機(jī)自動(dòng)啟動(dòng)控制方法,其特征在于,所述步驟3)中控制域以虛擬串口寫方式向客戶域的虛擬串口寫入操作系統(tǒng)啟動(dòng)命令并發(fā)送回車控制符的詳細(xì)步驟如下控制域預(yù)先設(shè)置用于作為指定客戶域操作系統(tǒng)啟動(dòng)前提條件的觸發(fā)消息,且預(yù)先在另一關(guān)聯(lián)的客戶域中設(shè)置向控制域發(fā)送所述觸發(fā)消息的守護(hù)程序,控制域在向所述指定客戶域?qū)懭氩僮飨到y(tǒng)啟動(dòng)命令之前預(yù)先判斷是否收到對(duì)應(yīng)的觸發(fā)消息,如果尚未收到觸發(fā)消息則暫停向指定客戶域的虛擬串口寫入操作系統(tǒng)啟動(dòng)命令,并在收到所述觸發(fā)消息后以串口寫方式向客戶域的虛擬串口寫入操作系統(tǒng)啟動(dòng)命令并發(fā)送回車控制符。
全文摘要
本發(fā)明公開了一種sun4v架構(gòu)下的虛擬機(jī)自動(dòng)啟動(dòng)控制方法,其實(shí)施步驟如下1)控制域在加載物理磁盤驅(qū)動(dòng)服務(wù)后加載邏輯域虛擬串口所對(duì)應(yīng)邏輯域信道的驅(qū)動(dòng);2)控制域通過(guò)所述邏輯域信道向各客戶域的虛擬串口寫入回車控制符,然后讀取各客戶域的虛擬串口從邏輯域信道的返回?cái)?shù)據(jù),重復(fù)執(zhí)行步驟2)直至客戶域返回?cái)?shù)據(jù)為操作系統(tǒng)加載器啟動(dòng)完畢的消息;3)控制域獲取各客戶域的操作系統(tǒng)啟動(dòng)命令,控制域以虛擬串口寫方式通過(guò)邏輯域信道向操作系統(tǒng)加載器已經(jīng)啟動(dòng)完畢的客戶域的虛擬串口寫入操作系統(tǒng)啟動(dòng)命令并發(fā)送回車控制符。本發(fā)明具有啟動(dòng)速度快、啟動(dòng)效率高、無(wú)需人工干預(yù)、適用范圍廣的優(yōu)點(diǎn)。
文檔編號(hào)G06F9/445GK102622245SQ20121004315
公開日2012年8月1日 申請(qǐng)日期2012年2月24日 優(yōu)先權(quán)日2012年2月24日
發(fā)明者劉曉建, 吳慶波, 孔金珠, 戴華東, 易曉東, 秦瑩, 董攀, 顏躍進(jìn) 申請(qǐng)人:中國(guó)人民解放軍國(guó)防科學(xué)技術(shù)大學(xué)