麥劍 譚偉良 胡新勇

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