服務(wù)器虛擬化技術(shù)是一種將物理服務(wù)器資源抽象、整合和分配的技術(shù),它允許在一臺(tái)物理服務(wù)器上運(yùn)行多個(gè)虛擬機(jī),這種技術(shù)可以提高服務(wù)器的利用率,降低能耗,簡(jiǎn)化管理和維護(hù),服務(wù)器虛擬化的實(shí)現(xiàn)主要依賴于虛擬機(jī)監(jiān)視器(Virtual Machine Monitor,VMM)或稱為Hypervisor。
服務(wù)器虛擬化技術(shù)的代碼實(shí)現(xiàn)涉及很多方面,包括CPU調(diào)度、內(nèi)存管理、I/O設(shè)備虛擬化等,這里以開源虛擬化平臺(tái)Xen為例,簡(jiǎn)要介紹其代碼結(jié)構(gòu)。
Xen的代碼結(jié)構(gòu)主要包括以下幾個(gè)部分:
1、Hypervisor:負(fù)責(zé)管理和分配硬件資源,為虛擬機(jī)提供抽象的硬件環(huán)境,主要源代碼文件包括:hypervisor.c、sched.c、memory.c、pmu.c等。
2、Xen Store:用于存儲(chǔ)虛擬機(jī)的配置信息和磁盤鏡像等數(shù)據(jù),主要源代碼文件包括:store_server.c、store_client.c、store_if.c等。
3、Xen Bus:為虛擬機(jī)提供I/O設(shè)備的虛擬化支持,主要源代碼文件包括:xenbus.c、xenpci.c、xenusb.c等。
4、Xen Network:為虛擬機(jī)提供網(wǎng)絡(luò)連接功能,主要源代碼文件包括:netfront.c、netback.c、e1000.c等。
5、Xen Toolstack:包括Xen的管理和監(jiān)控工具,如Xen API、XenStore API、Xen Hypercall API等,主要源代碼文件包括:xentoollog.c、xentoolcomm.c、xentoollib.c等。
6、Xen Domain:表示一個(gè)虛擬機(jī)實(shí)例,包括操作系統(tǒng)和應(yīng)用程序,源代碼文件根據(jù)不同的操作系統(tǒng)和應(yīng)用程序有所不同。
7、Xen Control Domain:一種特殊的虛擬機(jī),用于管理和控制其他虛擬機(jī),主要源代碼文件包括:domain0.c、console.c、sysrq.c等。
這些源代碼文件共同構(gòu)成了Xen虛擬化平臺(tái)的實(shí)現(xiàn),需要注意的是,這里的代碼結(jié)構(gòu)只是一個(gè)簡(jiǎn)單的概述,實(shí)際的代碼實(shí)現(xiàn)要復(fù)雜得多,還有其他虛擬化平臺(tái),如VMware、KVM等,它們的代碼實(shí)現(xiàn)也有所不同。