趙 凱
北京電子科技職業(yè)學(xué)院 北京 100016
基于虛擬化技術(shù)的網(wǎng)絡(luò)平臺設(shè)計與實現(xiàn)
趙 凱
北京電子科技職業(yè)學(xué)院 北京 100016
互聯(lián)網(wǎng)經(jīng)過幾十年的發(fā)展,給人們的生活帶來了意想不到的改變,出現(xiàn)了很多新的應(yīng)用和需求,同時互聯(lián)網(wǎng)及其體系結(jié)構(gòu)在可擴展性、安全性、可移動性、能源消耗等方面的問題也越來越突出,網(wǎng)絡(luò)虛擬化可以有效解決當(dāng)前互聯(lián)網(wǎng)及其體系結(jié)構(gòu)中存在的問題,主要討論了在虛擬化環(huán)境體系結(jié)構(gòu)、資源管理方式并使用虛擬化技術(shù)構(gòu)建網(wǎng)絡(luò)平臺,提高了服務(wù)器的穩(wěn)定性和利用率,降低了數(shù)據(jù)維護的成本和復(fù)雜度。
虛擬化;網(wǎng)絡(luò)平臺;資源管理
虛擬化技術(shù)誕生于20世紀(jì)60年代,隨著虛擬化技術(shù)的迅猛發(fā)展,計算機硬件性能不斷提升,硬件對虛擬化技術(shù)支持的逐步成熟和完善,使得把日常工作環(huán)境遷移到虛擬化平臺之上成為可能。虛擬化技術(shù)是一種對計算機資源進行抽象模擬的技術(shù),通過獲取關(guān)鍵硬件的控制權(quán),模擬出全部或部分硬件資源,如CPU、內(nèi)存、I/O設(shè)備等,這些虛擬硬件資源在使用上與真實設(shè)備沒什么區(qū)別,虛擬機的實現(xiàn)與運行對于上層應(yīng)用軟件來說是透明的。[1]網(wǎng)絡(luò)平臺的虛擬化就是利用了這種思想,通過對物理資源的劃分和抽象,產(chǎn)生多個虛擬機,并使用各個虛擬系統(tǒng)之間實現(xiàn)有效隔離,即一個虛擬系統(tǒng)的崩潰不會影響到其他系統(tǒng)的正常運行。虛擬化的網(wǎng)絡(luò)平臺具有較好的封裝性(虛擬機的克隆、掛起等)、多實例性(一臺計算機上運行多個虛擬機,實現(xiàn)資源的調(diào)試優(yōu)化)、隔離性(虛擬系統(tǒng)相對獨立,互不影響)、硬件無關(guān)性(虛擬化是資源的邏輯表示,不受物理限制的約束)優(yōu)勢并擁有特權(quán)功能,虛擬化層(即監(jiān)視層)處于客戶操作系統(tǒng)的下層,具有更高的特權(quán),入侵檢測及病毒檢測就是在虛擬化層的典型應(yīng)用,由于客戶操作系統(tǒng)無法繞過該層,客戶機中的病毒也很難攻擊到物理機,從而保證了設(shè)備的安全性。[2]目前,典型的虛擬機軟件有Vmware公司產(chǎn)品、Microsoft公司產(chǎn)品及基于GPL開源軟件(Xen,KVM),本文中使用KVM構(gòu)建虛擬化網(wǎng)絡(luò)平臺。
KVM是Kernel-based Virtual Machine的簡稱,是基于X86硬件的虛擬化技術(shù),運行要求Intel VT-x或AMD SVM的支持,從Linux-2.6.20開始被包含在Linux內(nèi)核中。[3]KVM基本結(jié)構(gòu)有兩部分,一部分是KVM Driver,另一部分是Qemu模塊。其中,KVM Driver負(fù)責(zé)虛擬機的創(chuàng)建、虛擬內(nèi)存的管理與分配、虛擬CPU寄存器的讀寫及虛擬CPU的運行等;Qemu主要用于I/O的虛擬化及相關(guān)訪問途徑的處理,KVM的結(jié)構(gòu)如圖1所示。
圖1
KVM在Linux原有模式基礎(chǔ)上增加了客戶模式,客戶模式擁有自己的內(nèi)核模式和用戶模式,在虛擬機運行時,3種模式的分工如下。
客戶模式:執(zhí)行非I/O的客戶代碼,客戶機系統(tǒng)運行在此模式下。
用戶模式:執(zhí)行客戶的I/O代碼,Qemu運行在此模式下。
內(nèi)核模式:實現(xiàn)到客戶模式的切換,KVM Driver工作在此模式下,KVM Driver在整個KVM中還可以起到虛擬機監(jiān)控器的作用。
圖1中的/dev/kvm是在內(nèi)核中創(chuàng)建的標(biāo)準(zhǔn)字符設(shè)備,通過ioctl系統(tǒng)調(diào)用訪問內(nèi)核完成虛擬機的創(chuàng)建與初始化;KVM_vm是創(chuàng)建的指向特定虛擬機實例的文件描述符,通過這個文件描述符對特定虛擬機進行訪問控制;KVM_vcpu指向為虛擬機創(chuàng)建的虛擬處理器的文件描述符,通過該描述符使用ioctl系統(tǒng)調(diào)用設(shè)置和調(diào)度虛擬處理器的運行。
由于KVM采用全虛擬化技術(shù)[4],客戶機不需要修改就可以運行,工作過程如下:用戶模式的Qemu利用接口libkvm通過ioctl系統(tǒng)調(diào)用進入內(nèi)核模式,KVM Driver為虛擬機創(chuàng)建虛擬內(nèi)存和虛擬CPU后執(zhí)行VMLAUCH指令進入客戶模式??蛻粝到y(tǒng)裝載時,如發(fā)生I/O事件或信號隊列中有信號到達(dá),進入用戶模式處理,如出現(xiàn)外部中斷等事件,則暫??蛻魴C系統(tǒng)的執(zhí)行,退出客戶模式進行必要的處理后再重新進入客戶模式。
2.1 虛擬化網(wǎng)絡(luò)平臺的設(shè)計
隨著信息技術(shù)的不斷發(fā)展和革新,Web應(yīng)用、郵件應(yīng)用及第三方業(yè)務(wù)應(yīng)用呈爆炸式增長。以高職院校為例,社會上對復(fù)合型人才要求越來越高,為了滿足這個需要,高職院校在信息化設(shè)備上進行了大量的投入,建立起了一定規(guī)模的實驗實訓(xùn)場所,并購置了大量的實驗設(shè)備,如PC機、小型服務(wù)器等。這對于提升教學(xué)的質(zhì)量和穩(wěn)定教學(xué)秩序方面起到了非常大的作用,在實踐教學(xué)環(huán)節(jié)大量投入的過程中,也產(chǎn)生了一些問題,如隨著設(shè)備數(shù)量的增加,存在著資源浪費問題、設(shè)備老化問題、服務(wù)器利用率不高、資源分配不均等,這些都對日常教學(xué)運行產(chǎn)生了不良的影響。使用虛擬化技術(shù)可以有效地解決上述問題,達(dá)到節(jié)約資源、提高資源使用效率的目的。
由于大量的設(shè)備已經(jīng)投入使用,所以在設(shè)計虛擬化網(wǎng)絡(luò)平臺時要充分考慮現(xiàn)有設(shè)備向虛擬平臺中遷移的問題,虛擬網(wǎng)絡(luò)平臺的結(jié)構(gòu)應(yīng)便于主機的遷移;虛擬平臺中的數(shù)據(jù)應(yīng)統(tǒng)一存儲和管理,便于對數(shù)據(jù)的維護;充分考慮資源分配的動態(tài)平衡及系統(tǒng)安全問題等?,F(xiàn)有網(wǎng)絡(luò)環(huán)境見表1。
表1
Kvm-server為虛擬網(wǎng)絡(luò)平臺,需要將已經(jīng)存在的客戶機Vg1、Vg2及服務(wù)器manager遷移到新建的虛擬網(wǎng)絡(luò)平臺中,由于KVM虛擬化技術(shù)已經(jīng)被內(nèi)置到Linux中,與Linux系統(tǒng)同屬于開源代碼,具有天然的穩(wěn)定性及安全性,與Linux系統(tǒng)結(jié)合非常緊密,使用KVM技術(shù)搭建虛擬化網(wǎng)絡(luò)平臺是很好的選擇。
2.2 部署虛擬化網(wǎng)絡(luò)平臺
2.2.1 安裝虛擬化系統(tǒng)平臺
KVM自Linux2.6.20之后就被集成到了Linux系統(tǒng)之中,它使用Linux自身的調(diào)度器進行管理,相對于Xen技術(shù),其核心源碼較少,KVM是目前學(xué)術(shù)界主流的VMM之一。由于KVM技術(shù)需要硬件的支持,所以在安裝虛擬化網(wǎng)絡(luò)平臺之前要先檢測系統(tǒng)的環(huán)境,看CPU是否支持KVM,使用命令如下:[root@localhost~]#grep -E -o ‘vmx|svm’ /proc/ cpuinfo,如顯示信息為“vmx”,說明該機的CPU支持KVM技術(shù),可以進行安裝。安裝方法為[root@ localhost~]#yum install kvm kmod-kvm qemu kvmqemu-img virt-viewer virt-manager,系統(tǒng)會顯示安裝過程及安裝成功的提示。為保險,安裝完成后可以再使用[root@localhost 桌面]# lsmod | grep kvm 命令檢查一下,如出現(xiàn)“kvmxxxxxx x ”說明KVM安裝成功。
2.2.2 配置虛擬網(wǎng)絡(luò)環(huán)境
在KVM中運行的虛擬機默認(rèn)采用NAT方式進行連接,無法與外界進行通訊,但可以與同臺KVM下的其他虛擬機通訊,為了使虛擬機能與其他網(wǎng)絡(luò)主機進行通訊,需要將網(wǎng)卡模式由NAT改為橋接方式。操作過程為先使用“yum install bridgeutils tunctl”命令安裝橋接工具,安裝成功后,使用“cp ifcfg-eth0 ifcfg-br0”命令將原有網(wǎng)卡文件復(fù)制為網(wǎng)橋文件,在原來的網(wǎng)卡配置文件中增加“BRIDGE=br0”,修改網(wǎng)橋配置文件,將DEVICE后面的值改為“br0”,類型設(shè)置為“bridge”,具體內(nèi)容如下:
文件配置成功后,需要執(zhí)行“service network restart”命令重新啟動網(wǎng)絡(luò)服務(wù)進程,以使配置生效,如開啟了防火墻,需要使用“iptables -I FORWARD -m physdev -physdev-is-bridge -j ACCEPT”放行,配置完成后,可以使用“brctl show”顯示虛擬網(wǎng)絡(luò)的情況。
2.2.3 配置KVM的存儲環(huán)境
本文使用存儲池加LVM的方式解決KVM中虛擬機的存儲問題,通過在宿主機上創(chuàng)建存儲池,可以簡化KVM存儲設(shè)備的管理,實現(xiàn)存儲空間的預(yù)留分配。使用LVM技術(shù)可以把所有存儲放到一個卷組中,該卷組是物理磁盤設(shè)備的抽象,所以如果超出可用磁盤空間最大值,可向卷組中添加新的設(shè)備,從而極大簡化了增加存儲空間的過程,使得存儲空間分配更加靈活,增加、刪除存儲操作更加容易。
KVM創(chuàng)建的存儲池可以理解為一種映射關(guān)系,即將某一塊掛接至宿主機上的存儲空間形成可被KVM使用的邏輯存儲池,以方便虛擬機的管理,默認(rèn)情況下,KVM將這些存儲池的配置文件存放于/etc/libvirt/storage中,KVM的存儲池配置文件以“.xml”的形式存在,可以使用virsh pool命令查看、創(chuàng)建、激活、注冊、刪除存儲池,本文中的存儲池名為storagepool.img;存儲池創(chuàng)建成功后,為每個虛擬機創(chuàng)建邏輯卷,作為虛擬主機的硬盤。以服務(wù)器“manager”為例,為其創(chuàng)建容量為100 G,初始分配10 G,文件格式為qcow2的存儲空間,邏輯卷的創(chuàng)建方法為virsh vol-create-as —pool manager_pool —name manager.img —capacity 100 G —allocation 10 G —format qcow2,虛擬主機VG1和VG2的創(chuàng)建方法與manager相同,不再重復(fù)。
2.2.4 虛擬網(wǎng)絡(luò)平臺主機遷移
遷移技術(shù)分為靜態(tài)遷移和動態(tài)遷移兩種,靜態(tài)遷移是指虛擬機關(guān)機的情況下從一臺物理機遷移到另一臺物理機,只需要將原虛擬機鏡像和對應(yīng)的配置文件遷移到另一臺物理機上就可以了。靜態(tài)遷移技術(shù)相對簡單,但遷移過程中,被遷移的虛擬主機必須停止運行。動態(tài)遷移也稱為在線遷移,即保證虛擬機上服務(wù)正常運行的同時,將一個虛擬機系統(tǒng)從一個物理主機移動到另一個物理主機的過程,該過程不會對最終用戶造成明顯的影響,遷移過程對用戶而言是透明的[5],動態(tài)遷移適應(yīng)于對虛擬機服務(wù)可用性要求高的場合。本處使用KVM動態(tài)遷移技術(shù)實現(xiàn)manager,Vg1,Vg2的動態(tài)遷移。以遷移manager為例,實現(xiàn)方法如下。第一步,打開虛擬機管理器,方法是在命令行中輸入“virt-manager”或單擊“應(yīng)用程序→管理工具→虛擬系統(tǒng)管理器”。第二步,右擊“l(fā)ocalhost (QEMU)”→“Details”,在新彈出的界面中選擇“存儲”選項卡。第三步,點擊左下角的添加符號,添加存儲池,并選擇存儲池類型,選擇存儲池路徑→“完成”。第四步,選中剛創(chuàng)建的存儲池,點擊“新建卷”,輸入存儲卷名稱及空間容量即可。第五步,點擊虛擬系統(tǒng)管理器中的“創(chuàng)建新虛擬機”,根據(jù)向?qū)нx擇系統(tǒng)參數(shù),存儲設(shè)備選擇剛創(chuàng)建的邏輯卷。第六步,在虛擬系統(tǒng)管理器選擇“文件”菜單中的“添加連接”,選擇遠(yuǎn)程主機,主機名為“192.168.1.23”,點擊“連接”。第七步,在虛擬系統(tǒng)管理器中右擊剛安裝好的系統(tǒng)→“遷移”,在“連接性”處輸入“192.168.1.23”,點擊“遷移”,遷移工作完成,Vg1和Vg2的操作方法與manager相同,此處不再說明。
將Vg1,Vg2,manager部署到虛擬網(wǎng)絡(luò)平臺中,使用virsh start 命令激活,均成功啟動,說明該網(wǎng)絡(luò)平臺的部署是成功的。通過虛擬化平臺的運行,將各個相對獨立的主機整合到一個虛擬網(wǎng)絡(luò)平臺上,大大提高了服務(wù)器的資源利用率,降低了維護和管理的成本。將上述內(nèi)容部署到一臺CPU型號為corei3的PC機上,Linux可模擬出4個CPU,一般情況下, CPU的使用率在5%~30%左右,內(nèi)存使用率為30%左右,訪問高峰時CPU的利用率可達(dá)到80%以上,網(wǎng)絡(luò)和存儲I/O的使用率達(dá)到物理設(shè)備的85%以上。由此可以看出,在虛擬平臺運行過程中,整個系統(tǒng)受到物理主機的制約較大,在物理主機方面,CPU,RAM,數(shù)據(jù)存儲及I/O訪問還存在提升空間,Linux系統(tǒng)支持多網(wǎng)卡的綁定,可以在系統(tǒng)中增加網(wǎng)卡,將多塊網(wǎng)卡綁定形成一張邏輯網(wǎng)卡,實現(xiàn)鏈路的冗余及流量的負(fù)載均衡,通過改善硬件環(huán)境,可以對虛擬網(wǎng)絡(luò)平臺起到一定的優(yōu)化作用。
隨著網(wǎng)絡(luò)技術(shù)的發(fā)展和完善,虛擬化的實現(xiàn)方法也是多種多樣,數(shù)據(jù)的可靠性、安全性、存儲容量和管理方法也有越來越多的解決方案,本文使用Linux系統(tǒng),采用主流的KVM虛擬化技術(shù)搭建虛擬網(wǎng)絡(luò)平臺,對虛擬網(wǎng)絡(luò)平臺的網(wǎng)絡(luò)環(huán)境、存儲環(huán)境及主機遷移等問題進行了探討,較大的提升了主機的利用率?;诰W(wǎng)絡(luò)的虛擬化技術(shù)作為未來的發(fā)展方向,受到了更多人的關(guān)注,也必將給人們的生活帶來更大的改變。
[1]虛擬化技術(shù)基礎(chǔ)[EB/OL].http://blog.chinaunix.net/ u3/110913/showart_2185421.html.
[2]KVM 開源項目[EB/OL].http://www.Linux-kvm.org/ page/Main_Page.
[3]JinHai, LiaoXiaofei. Virtualization Technology for Computing System[J].China Basic Science,2008,10(6):12.
[4]Zhang Y.virtualization Technology for Trustworthy Network Research[J].Chinese Journal of Computers,2009,32(3):417-423.
[5]The Xensource Company[EB/OL]. http://www.Xensource. com/, 2011.
Design and Implementation of Network Platform Based on Virtualization Technology
Zhao Kai
Beijing Polytechnic, Beijing, 100016, China
After decades of development, bring the beat all changes to people's life, there are many new applications and requirements, at the same time, the Internet and its architecture in scalability, security, mobility, energy consumption and other issues are also increasingly prominent. Network virtualization can effectively solve the existing problems in the Internet and its system structure, this paper mainly discussed in the virtual environment system structure, resource management and the use of virtualization technology to construct network platform, improve the stability of the server and utilization rate, reduce the cost and complexity of the data maintenance
virtualization; network platform; resource management
2015-07-07
趙凱,碩士,副教授。