麥劍 譚偉良 胡新勇
摘要:云主機(jī)(虛擬機(jī))是一種在物理主機(jī)上通過虛擬化技術(shù)再運(yùn)行一個(gè)操作系統(tǒng)實(shí)例。下文將對(duì)如何優(yōu)化虛擬機(jī)啟動(dòng)加載展開研究討論。
[關(guān)鍵詞]云計(jì)算 虛擬機(jī) 存儲(chǔ) 優(yōu)化啟動(dòng)
云計(jì)算基礎(chǔ)服務(wù)IAAS主要由三大塊組成:計(jì)算虛擬化(提供CPU服務(wù))、網(wǎng)絡(luò)虛擬化(提供網(wǎng)絡(luò)服務(wù))和存儲(chǔ)虛擬化(提供磁盤服務(wù)),這塊正是本文所討論研究的。
存儲(chǔ)架構(gòu)可分以下幾種:
(1)本地存儲(chǔ),磁盤服務(wù)是由虛擬機(jī)所
在的物理機(jī)提供,由物理機(jī)磁盤劃分空間給虛擬機(jī)用,該方式成本低,傳輸讀寫效率高,但存在單點(diǎn)故障,數(shù)據(jù)安全性差;
(2)集中式存儲(chǔ),通常是一個(gè)存儲(chǔ)硬件設(shè)備,內(nèi)置若千個(gè)物理磁盤組成陣列,提供一個(gè)很大的存儲(chǔ)空間,并用網(wǎng)絡(luò)方式供虛擬機(jī)使用。該方式數(shù)據(jù)安全性較高,服務(wù)穩(wěn)定,但成本高昂,且設(shè)備往往比較固話,不易于擴(kuò)展,也存在單點(diǎn)故障問題;
(3)分布式存儲(chǔ),通常是由多臺(tái)物理服務(wù)器組成集群,每臺(tái)服務(wù)器由多個(gè)物理硬盤組成,服務(wù)器之間通過網(wǎng)絡(luò)連接起來,再由軟件實(shí)現(xiàn)對(duì)多臺(tái)設(shè)備的硬盤組成整列,虛擬成一個(gè)大的存儲(chǔ)空間供虛擬機(jī)使用。該方式架構(gòu)靈活,容易擴(kuò)展,成本選擇性大,整體可控性好。數(shù)據(jù)安全性方面,選擇較為靈活,可以選擇冗余數(shù)量。該架構(gòu)需要較高的技術(shù)運(yùn)維、開發(fā)能力才能有效運(yùn)營(yíng)。
根據(jù)上面介紹,得知每種存儲(chǔ)方式都有自身優(yōu)缺點(diǎn),沒有一個(gè)完美的方案,有沒有一種可以方案技術(shù)可以擁有以上描述的優(yōu)點(diǎn),又能解決對(duì)應(yīng)的缺點(diǎn),做到魚和熊掌兼得呢,下面著重討論研究。
1虛擬機(jī)加載機(jī)制方式
現(xiàn)有云提供商存儲(chǔ)方式一般都只會(huì)選擇中心存儲(chǔ)或者分布式存儲(chǔ),因此,我們只討論目前流行的虛擬機(jī)加載機(jī)制方式,如圖1所示。
無論中心存儲(chǔ)還是分布式存儲(chǔ),他們都通過網(wǎng)絡(luò)的方式來連接,如圖所示,在網(wǎng)絡(luò)存儲(chǔ)劃分一個(gè)空間給虛擬機(jī)A用,劃分另外一個(gè)空間給虛擬機(jī)B用。虛擬機(jī)在物理機(jī)開機(jī)時(shí)需要通過網(wǎng)絡(luò)遠(yuǎn)程加載系統(tǒng)盤,并讀取引導(dǎo)信息、操作系統(tǒng)內(nèi)核、應(yīng)用程序等數(shù)據(jù)到物理機(jī)內(nèi)存并運(yùn)行。
2目前存在的問題
通過上面的加載啟動(dòng)方式得知,虛擬機(jī)每次啟動(dòng)的時(shí)候都需要通過網(wǎng)絡(luò)的方式遠(yuǎn)程獲取引導(dǎo)數(shù)據(jù)信息、內(nèi)核數(shù)據(jù)信息等到本地物理設(shè)備內(nèi)存,這個(gè)比傳統(tǒng)的直接讀取本地磁盤效率要低得多。除此之外,在短時(shí)間內(nèi)如果當(dāng)有大量虛擬機(jī)同時(shí)創(chuàng)建開機(jī),會(huì)對(duì)存儲(chǔ)設(shè)備、網(wǎng)絡(luò)及網(wǎng)絡(luò)設(shè)備造成瞬間的沖擊力,容易會(huì)影響存儲(chǔ)服務(wù)和網(wǎng)絡(luò)的通訊質(zhì)量。
3改進(jìn)的思路
虛擬機(jī)開機(jī)的流程可以大概描述成以下幾個(gè)順序從系統(tǒng)盤加載引導(dǎo)區(qū)數(shù)據(jù)進(jìn)行引導(dǎo),從引導(dǎo)區(qū)轉(zhuǎn)入加載系統(tǒng)內(nèi)核,由此進(jìn)入內(nèi)核啟動(dòng)流程,最后把相關(guān)應(yīng)用數(shù)據(jù)等加載完畢后,操作系統(tǒng)正式可用。下面我們以Linux操作系統(tǒng)為例,描述對(duì)應(yīng)的改進(jìn)思路。
Linux操作系統(tǒng)有專門的啟動(dòng)分區(qū)(/boot),在啟動(dòng)分區(qū)里面存放的是系統(tǒng)內(nèi)核鏡像及相關(guān)配置文件,是操作系統(tǒng)引導(dǎo)必須且核心關(guān)鍵所在,其他分區(qū)則存放應(yīng)用程序及用戶數(shù)據(jù)。
Linux操作系統(tǒng)內(nèi)核及啟動(dòng)分區(qū)/boot是比較固化的內(nèi)容,每個(gè)發(fā)行版本有所對(duì)應(yīng)的版本內(nèi)核,那么假如把這些內(nèi)核公共的部分都整理出來放在虛擬機(jī)所在物理機(jī)的物理硬盤上,既可以縮短虛擬機(jī)的開機(jī)加載速度,又能減低大批量虛擬機(jī)同時(shí)開機(jī)對(duì)存儲(chǔ)和網(wǎng)絡(luò)產(chǎn)生的瞬間沖擊力。詳見下面的具體實(shí)施方案。
4具體實(shí)施方案
如圖2所示,假如現(xiàn)在有兩臺(tái)使用同一發(fā)行版的Linux虛擬機(jī)A和B,我們把這兩個(gè)虛擬機(jī)對(duì)應(yīng)Linux發(fā)行版的內(nèi)核及相關(guān)配置內(nèi)容存放在物理機(jī)磁盤之上,虛擬機(jī)原有的磁盤不變繼續(xù)存放在網(wǎng)絡(luò)存儲(chǔ)空間中。
當(dāng)虛擬機(jī)A或者B在物理機(jī)上開機(jī)啟動(dòng)時(shí),加載Linux內(nèi)核部分的內(nèi)容直接從本地磁盤讀?。ㄒ?yàn)槭菃螜C(jī)內(nèi)部通訊,不涉及網(wǎng)絡(luò),所以速度非常快)內(nèi)核數(shù)據(jù)到內(nèi)存進(jìn)行加載啟動(dòng)等正常流程。操作系統(tǒng)會(huì)從原有的網(wǎng)絡(luò)存儲(chǔ)空間讀取和加載應(yīng)用程序和數(shù)據(jù),跟原有的流程機(jī)制一樣。
通過這種方式的調(diào)整,使得虛擬機(jī)開機(jī)加載啟動(dòng)速度變快,而且在大量虛擬機(jī)同時(shí)開機(jī)時(shí)因?yàn)閮?nèi)核加載部分都是直接在本地物理設(shè)備上讀取,所以不會(huì)對(duì)存儲(chǔ)和網(wǎng)絡(luò)造成沖擊。
5結(jié)語
云計(jì)算一個(gè)很重要的特性是彈性,代表著用戶可以隨時(shí)購(gòu)買云資源,購(gòu)買數(shù)量沒有明顯限制,即買即用。本論文所討論的方案,即是有助于提升虛擬機(jī)的交付效率,縮短交付時(shí)間,同時(shí)能夠解決大量資源創(chuàng)建所帶來的沖擊。
參考文獻(xiàn)
[1](德)WolfgangMauerer,郭旭(譯).深入Linux內(nèi)核架構(gòu)[M].人民郵電出版社,2010.
[2]葉毓睿主編.軟件定義存儲(chǔ):原理、實(shí)踐與生態(tài)[M].機(jī)械工業(yè)出版社,2016.