李曉佳 董延華 吳佳怡

摘 要:云計算作為未來網絡技術發展的方向,可以快速構建各類高效的信息化系統,其實現核心虛擬化技術也得到了用戶廣泛的重視。KVM是一種高效的虛擬化技術,提供了一種基于Linux內核的虛擬化解決方案,通過結合QEMU提供設備虛擬化,提高了資源分配的效率和靈活度,從而確保了虛擬化平臺的高效性和穩定性。本文從KVM虛擬化平臺的構建入手,對KVM虛擬化技術的優勢進行分析,具體闡述了KVM虛擬化的部署方案,為集群的創建提供了硬件支撐。
關鍵詞: 虛擬化技術;Linux內核;KVM虛擬化平臺
【Abstract】 As the direction of future network development technology, cloud computing can rapidly construct various kinds of efficient information systems, and its core virtualization technology has also been widely valued by users. KVM is an efficient virtualization technology that provides a virtualization solution based on the Linux kernel. By combining with QEMU to provide device virtualization, it improves the efficiency and flexibility of resource allocation, thus ensuring the efficiency and stability of the virtualization platform. This paper starts with the construction of KVM virtualization platform, analyzes the advantages of KVM virtualization technology, and elaborates the deployment scheme of KVM virtualization in detail, which provides hardware support for cluster creation.
【Key words】 ?virtualization technology; Linux kernel; KVM virtualization platform
0 引 言
隨著云計算概念的興起,虛擬化技術也已逐漸引起學界關注,這是云計算架構中的核心技術。研究中是用軟件的方法重新劃分和定義IT資源,打破實體結構間的不可分割的障礙,實現對IT資源的動態分配、靈活調度,簡化對資源以及對資源管理的訪問,從而提高資源的利用效率。
1 KVM虛擬化技術
主流的虛擬化技術包括KVM(Kernel-based Virtual Machine)、Xen、VMM等,其中,KVM是集成到Linux內核的虛擬機管理程序(Hypervisor),是X86架構且硬件支持虛擬化技術的全虛擬化解決方案。KVM技術核心是實現了內核中對處理器虛擬化特性的支持,但缺乏設備虛擬化以及相應的用戶空間管理虛擬機的工具[1]。相比較而言,XEN屬于外部的Hypervisor,能夠控制虛擬機,并給多個客戶機分配資源,但缺點是更新XEN版本時,需要重新編譯整個內核,容易造成系統崩潰。相比之下,KVM的結構更精簡,代碼量更少。
2 KVM與QEMU、Libvirt組件的關系
作為Linux內核驅動模塊的一部分,KVM可以用Modprobe模塊支持IntelVT或AMD-V虛擬化,并通過/dev/kvm暴露程序接口,用戶態程序可以通過/ioctl函數來訪問這個接口,使CPU的相關指令部分轉交給內核來處理[2]。
2.1 KVM與QEMU的關系
QEMU是一個獨立的虛擬化解決方案,包括獨立的處理器虛擬化、內存虛擬化以及I/O設備虛擬化,其本身可以不依賴KVM而存在,但由于KVM無法獨立完成用戶與內核模塊間的任務交互,需要借助QEMU作為用戶空間的管理工具,而QEMU同樣需要通過KVM提高硬件虛擬化的性能。
2.2 KVM與Libvirt的關系
Libvirt是面向驅動的架構設計,由API庫、Libvirtd服務以及virsh命令行管理工具組成,可以通過調用閑置的API庫實現對各種類型虛擬機的管理[3]。Libvirt提供了多種語言的編程接口,可以直接通過編程調用Libvirt提供的對外接口實現對虛擬機的操作,不同的虛擬機提供不同的驅動,從而實現相互間不受影響,有利于后期的研發拓展。
3 KVM虛擬機的實現
KVM的獲得方式有多種,研究常用yum命令直接進行安裝,操作的前提是宿主機(服務器)需要獲得支持KVM的權限。對此可做闡釋論述如下。
3.1 開啟虛擬化服務
(1)安裝虛擬化軟件配置信息如下:
#yum groupinstall Virtual*
(2)檢查KVM是否開啟成功。配置代碼為:#Ismod | grep KVM
運行后,出現如圖1所示的反饋結果即支持服務器虛擬化操作。
3.2 KVM組件安裝及網絡配置
(1)啟動libvirt腳本,此時將用到的配置代碼可寫為:#Service libvirtd start
(2)配置網卡的橋接信息。在安裝和啟動libvirtd服務后,libvirtd在服務器(宿主機)上自動生成一個virbr0(virtual network switch),連接在宿主機上的虛擬機會默認通過virbr0連接起來。但由于設計采用的是NAT網絡模式,在連接多臺虛擬機時會造成IP地址的浪費,因此在操作過程中,一般將virbr0予以關閉,再使用br0進行橋接設置。具體配置如下:
# virsh net-list
Name ? ? State ? Autostart
default ? active yes
# virsh net-destroy default
Network default destroyed
# virsh net-undefine default
Network default has been undefined
# service libvirtd restart
Stopping libvirtd daemon:[ OK ]
Starting libvirtd daemon:[ OK ]
3.3 創建虛擬服務器
(1)通過QEMU-img創建8 G的映像文件。配置代碼如下:
#qemu-img create -f raw /share/class1.raw 8G
(2)安裝CentOS 6.6版本的操作系統,配置如下:
#virt-install --virt-type kvm --name class1--ram 1024 --cdrom=/ISO/CentOS-6.6-i386-bin-DVD1.iso --disk path=/share/class1.raw --network network=default ?--graphics vnc,listen=0.0.0.0-noautoconsole
3.4 開啟遠程桌面控制
Linux中對虛擬桌面的連接共有4種方式,對此可得研究分述如下:
(1)宿主機(服務器)上使用SSH命令連接虛擬機文本界面。
(2)宿主機(服務器)上使用virt-manager命令進入虛擬機圖形管理界面。
(3)宿主機(服務器)上使用virsh命令的子命令concole通過串口連接虛擬機。
(4)遠程計算機通過虛擬計算機網絡(Virtual Network Computing,VNC)連接虛擬機圖形界面。
實驗中采用VNC進行遠程桌面的管理,具體配置如下:
(1)安裝VNC服務包。對應代碼為:
rpm -ivh /mnt/Server/vnc-server-4.1.2-9.el5.x86_64.rpm
(2)配置虛擬機監聽。對應代碼為:
# vi /etc/libvirt/qemu.conf
vnc_listen = "0.0.0.0"
vnc_password = "666666"
(3)配置VNC圖形桌面為KDE。對應代碼為:
# vi /root/.VNC/xstartup
Unset SESSION-MANAGER
Exec /etc/X11/xinit/xinitrc
4 結束語
作為當前應用最廣泛的虛擬化技術之一,KVM虛擬化為云計算的進一步發展和應用奠定了堅實的基礎,如何提高虛擬化平臺的性能是構建云平臺的關鍵,本文從分析KVM虛擬化平臺的構成入手,詳細討論了平臺的實現方法,未來將深入研究基于KVM虛擬化的批量克隆技術,從而提高虛擬化集群搭建的效率。
參考文獻
[1]彭天煒. KVM虛擬化技術在云平臺中的應用[J]. 電腦知識與技術,2015,11(14):32-33.
[2]彭曉平,張雪堅,黃波. 基于KVM的虛擬化技術研究[J]. 中國新通信,2017(20):77-80.
[3]王偉. 云計算原理與實踐[M]. 北京:人民郵電出版社,2018.