一種共享文件的訪問方法、系統(tǒng)及相關(guān)設(shè)備的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,具體涉及一種共享文件的訪問方法、系統(tǒng)及相關(guān)設(shè)備。
【背景技術(shù)】
[0002]硬件輔助虛擬化技術(shù)是指在一臺(tái)物理宿主機(jī)上開一個(gè)進(jìn)程模擬計(jì)算機(jī)硬件,從而虛擬化出多個(gè)虛擬機(jī)(Virtual Machine,簡稱VM)。各個(gè)虛擬機(jī)之間相互隔離,擁有各自的操作系統(tǒng)(Operating System,簡稱OS),各自獨(dú)立運(yùn)行業(yè)務(wù)。比較常見的是通過Qemu在Linux平臺(tái)上模擬虛擬機(jī),如圖1所示,一種Linux KVM-Qemu模型,其中,Qemu是一款能夠在Linux平臺(tái)上模擬出虛擬機(jī)的軟件,KVM(Kernel_based Virtual Machine)是Linux中的模塊,該KVM模塊創(chuàng)建出多個(gè)線程vcpu,作為模擬的CPU提供給Qemu使用。
[0003]Linux與虛擬機(jī)之間存在文件共享需求。其中,虛擬機(jī)需要各種各樣的配置文件和數(shù)據(jù)來運(yùn)行業(yè)務(wù),這些配置文件和數(shù)據(jù)保存在Linux中,因此,Linux需要將這些配置文件和數(shù)據(jù)共享給虛擬機(jī)。
[0004]目前在Linux與虛擬機(jī)中的文件共享技術(shù)通過網(wǎng)絡(luò)文件系統(tǒng)(NetworkFileSystem,簡稱NFS)實(shí)現(xiàn)。NFS安裝在虛擬文件系統(tǒng)(Virtual File System,簡稱VFS)下。如圖2所示,Linux與虛擬機(jī)之間通過Linux內(nèi)核的網(wǎng)橋互聯(lián),Linux將文件共享給虛擬機(jī)實(shí)際就是Linux與虛擬機(jī)之間通過網(wǎng)絡(luò)完成文件操作。在文件共享時(shí),對(duì)文件的操作信息在端口(socket)中生成網(wǎng)絡(luò)報(bào)文,依次經(jīng)過虛擬機(jī)的TCP/IP層、ΕΤΗ接口,到達(dá)虛擬網(wǎng)卡,到達(dá)Linux的網(wǎng)橋,再依次經(jīng)過達(dá)Linux的TCP/IP層、端口(socket)到達(dá)NFS??梢钥闯觯瑘D2所示的現(xiàn)有技術(shù)中,文件共享時(shí)涉及到Linux內(nèi)核的網(wǎng)橋,需要將Linux和虛擬機(jī)的虛擬網(wǎng)卡進(jìn)行配置,Linux與虛擬機(jī)之間需要通過NFS服務(wù),需要經(jīng)過的組件較多,也就是存在多次操作信息拷貝,使得共享效率較低。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實(shí)施例提供了一種共享文件的訪問方法、系統(tǒng)及相關(guān)設(shè)備,用于簡化文件訪問流程,提高文件訪問效率。
[0006]本發(fā)明第一方面提供了一種共享文件的訪問方法,應(yīng)用于虛擬機(jī),上述虛擬機(jī)運(yùn)行在宿主機(jī)上,上述虛擬機(jī)中安裝有虛擬主機(jī)文件系統(tǒng)(Virtual Host File System,簡稱VHFS),上述宿主機(jī)的文件被共享到上述VHFS中,上述共享文件的訪問方法可包括:
[0007]上述虛擬機(jī)檢測對(duì)上述VHFS中共享文件的操作,獲得操作信息;
[0008]上述虛擬機(jī)根據(jù)上述操作信息生成VHFS請(qǐng)求,并將上述VHFS請(qǐng)求寫入上述虛擬機(jī)的內(nèi)存,上述VHFS請(qǐng)求用于請(qǐng)求上述宿主機(jī)在上述宿主機(jī)上完成對(duì)上述共享文件的上述操作;
[0009]上述虛擬機(jī)將上述VHFS請(qǐng)求所在內(nèi)存的地址寫入預(yù)置通用寄存器,并調(diào)用系統(tǒng)切換指令以使上述宿主機(jī)處理上述VHFS請(qǐng)求。
[0010]可以看出,本發(fā)明第一方面中,虛擬機(jī)通過檢測對(duì)VHFS中共享文件的操作,以獲得操作信息,然后根據(jù)操作信息生成VHFS請(qǐng)求,將VHFS請(qǐng)求寫入虛擬機(jī)的內(nèi)存中,之后再將VHFS請(qǐng)求所在內(nèi)存的地址寫入預(yù)置通用寄存器,調(diào)用系統(tǒng)切換指令后退出,然后由宿主機(jī)來執(zhí)行后續(xù)對(duì)VHFS請(qǐng)求的操作。其中,由于預(yù)置的寄存器可以由虛擬機(jī)操作,也可以由宿主機(jī)操作,而虛擬機(jī)的內(nèi)存也是從宿主機(jī)的內(nèi)存中劃分給虛擬機(jī)的,因此,宿主機(jī)可以從預(yù)置通用寄存器中拿到VHFS請(qǐng)求所在內(nèi)存的地址,然后去內(nèi)存中讀取VHFS請(qǐng)求,然后處理該VHFS請(qǐng)求。本發(fā)明實(shí)施例中整個(gè)對(duì)文件的操作步驟比較簡單,不需要拷貝,能夠有效提高文件共享中處理文件的效率。
[0011]在本發(fā)明一些實(shí)施例中,上述虛擬機(jī)檢測對(duì)上述VHFS中共享文件的操作,獲得操作信息包括:上述虛擬機(jī)檢測對(duì)上述VHFS中共享文件的操作,獲得操作信息,上述操作信息包括文件信息和操作命令,上述文件操作命令所指示的操作包括文件打開操作、文件讀取操作、文件寫入操作、文件創(chuàng)建操作和瀏覽目錄操作中的任意一種。
[0012]在本發(fā)明一些實(shí)施例中,上述虛擬機(jī)根據(jù)上述操作信息生成VHFS請(qǐng)求包括:當(dāng)上述操作命令所指示的操作為文件讀取操作或文件寫入操作時(shí),上述虛擬機(jī)獲取上述共享文件所在緩沖區(qū)的虛擬機(jī)邏輯地址,將上述虛擬機(jī)邏輯地址轉(zhuǎn)換成上述虛擬機(jī)物理地址;上述虛擬機(jī)根據(jù)上述文件信息、上述操作命令和上述虛擬機(jī)物理地址,生成上述VHFS請(qǐng)求。
[0013]在本發(fā)明一些實(shí)施例中,上述虛擬機(jī)將上述VHFS請(qǐng)求所在內(nèi)存的地址寫入預(yù)置通用寄存器,并調(diào)用系統(tǒng)切換指令以使上述宿主機(jī)處理上述VHFS請(qǐng)求包括:上述虛擬機(jī)將上述VHFS請(qǐng)求所在內(nèi)存的地址寫入上述預(yù)置通用寄存器;上述虛擬機(jī)調(diào)用vmcall指令退出非根模式,以使上述宿主機(jī)獲得控制權(quán)處理上述VHFS請(qǐng)求。
[0014]在本發(fā)明一些實(shí)施例中,上述虛擬機(jī)將上述VHFS請(qǐng)求所在內(nèi)存的地址寫入預(yù)置通用寄存器,并調(diào)用系統(tǒng)切換指令以使上述宿主機(jī)處理上述VHFS請(qǐng)求包括:上述虛擬機(jī)將上述VHFS請(qǐng)求所在內(nèi)存的地址寫入上述宿主機(jī)虛擬的外設(shè)部件互連標(biāo)準(zhǔn)PCI設(shè)備,并觸發(fā)上述虛擬機(jī)退出非根模式,以使上述宿主機(jī)獲得控制權(quán)處理上述VHFS請(qǐng)求。
[0015]可選地,上述文件信息包括文件描述符或文件路徑或文件的節(jié)點(diǎn)索引。
[0016]本發(fā)明第二方面提供了一種共享文件的訪問方法,上述宿主機(jī)運(yùn)行著若干虛擬機(jī),每一個(gè)虛擬機(jī)中安裝有虛擬主機(jī)文件系統(tǒng)VHFS,上述宿主機(jī)的文件被共享到每一個(gè)虛擬機(jī)的VHFS中,上述共享文件的訪問方法可包括:
[0017]上述宿主機(jī)檢測到上述虛擬機(jī)調(diào)用系統(tǒng)切換指令,從預(yù)置通用寄存器中讀取VHFS請(qǐng)求所在內(nèi)存的地址,上述VHFS請(qǐng)求為上述虛擬機(jī)根據(jù)用戶對(duì)上述虛擬機(jī)中的VHFS的共享文件的操作生成,上述VHFS請(qǐng)求用于請(qǐng)求上述宿主機(jī)在上述宿主機(jī)上完成對(duì)上述共享文件的上述操作;
[0018]上述宿主機(jī)根據(jù)讀取的上述VHFS請(qǐng)求所在內(nèi)存的地址,讀取上述VHFS請(qǐng)求,根據(jù)上述VHFS請(qǐng)求執(zhí)行對(duì)上述共享文件的上述操作。
[0019]可選地,上述操作信息包括文件信息和操作命令,上述文件操作命令所指示的操作包括文件打開操作、文件讀取操作、文件寫入操作、文件創(chuàng)建操作和瀏覽目錄操作中的任意一種。
[0020]在本發(fā)明一些實(shí)施例中,上述根據(jù)上述VHFS請(qǐng)求執(zhí)行對(duì)上述共享文件的上述操作包括:當(dāng)上述操作命令所指示的操作包括上述文件打開操作或文件讀取操作時(shí),上述宿主機(jī)將上述虛擬機(jī)物理地址轉(zhuǎn)換成主機(jī)邏輯地址;上述宿主機(jī)根據(jù)上述主機(jī)邏輯地址以及上述文件信息,查找到上述共享文件;上述宿主機(jī)對(duì)查找到的上述共享文件執(zhí)行上述操作命令所指示的操作。
[0021]在本發(fā)明一些實(shí)施例中,上述根據(jù)上述VHFS請(qǐng)求完成對(duì)上述共享文件的上述操作之后包括:上述宿主機(jī)將執(zhí)行上述操作的操作結(jié)果,返回給上述虛擬機(jī)。
[0022]可選地,上述文件信息包括文件描述符或文件路徑或文件的節(jié)點(diǎn)索引。
[0023]本發(fā)明第三方面提供了一種虛擬機(jī),上述虛擬機(jī)運(yùn)行在宿主機(jī)上,上述虛擬機(jī)中安裝有虛擬主機(jī)文件系統(tǒng)VHFS,上述宿主機(jī)的文件被共享到上述VHFS中,上述虛擬機(jī)包括:
[0024]VHFS處理模塊,用于檢測對(duì)上述VHFS中共享文件的操作,獲得操作信息;根據(jù)上述操作信息生成VHFS請(qǐng)求,并將上述VHFS請(qǐng)求寫入上述虛擬機(jī)的內(nèi)存,上述VHFS請(qǐng)求用于請(qǐng)求上述宿主機(jī)在上述宿主機(jī)上完成對(duì)上述共享文件的上述操作;將上述VHFS請(qǐng)求所在內(nèi)存的地址寫入預(yù)置通用寄存器,并調(diào)用系統(tǒng)切換指令以使上述宿主機(jī)處理上述VHFS請(qǐng)求。
[0025]在本發(fā)明一些實(shí)施例中,上述VHFS處理模塊具體用于,檢測對(duì)上述VHFS中共享文件的操作,獲得操作信息,上述操作信息包括文件信息和操作命令,上述文件操作命令所指示的操作包括文件打開操作、文件讀取操作、文件寫入操作、文件創(chuàng)建操作和瀏覽目錄操作中的任意一種。
[0026]在本發(fā)明一些實(shí)施例中,上述VHFS處理模塊具體用于,當(dāng)上述操作命令所指示的操作為文件讀取操作或文件寫入操作時(shí),獲取上述共享文件所在緩沖區(qū)的虛擬機(jī)邏輯地址,將上述虛擬機(jī)邏輯地址轉(zhuǎn)換成上述虛擬機(jī)物理地址;根據(jù)上述文件信息、上述操作命令和上述虛擬機(jī)物理地址,生成上述VHFS請(qǐng)求,上述VHFS請(qǐng)求包括上述文件信息、上述操作命令和上述共享文件所在緩沖區(qū)的虛擬機(jī)物理地址。
[0027]在本發(fā)明一些實(shí)施例中,上述VHFS處理模塊具體用于,將上述VHFS請(qǐng)求所在內(nèi)存的地址寫入上述預(yù)置通用寄存器;調(diào)用vmcall指令退出非根模式,以使上述宿主機(jī)處理上述VHFS請(qǐng)求。
[0028]在本發(fā)明一些實(shí)施例中,上述VHFS處理模塊具體用于,將上述VHFS請(qǐng)求所在內(nèi)存的地址寫入上述宿主機(jī)虛擬的外設(shè)部件互連標(biāo)準(zhǔn)PCI設(shè)備,并觸發(fā)上述虛擬機(jī)退出非根模式,以使上述宿主機(jī)獲得控制權(quán)處理上述VHFS請(qǐng)求。
[0029]可選地,上述文件信息包括文件描述符或文件路徑或文件的節(jié)點(diǎn)索引。
[0030]本發(fā)明第四方面提供了一種宿主機(jī),上述宿主機(jī)運(yùn)行著若干虛擬機(jī),每一個(gè)虛擬機(jī)中安裝有虛擬主機(jī)文件系統(tǒng)VHFS,上述宿主機(jī)的文件被共享到每一個(gè)虛擬機(jī)的VHFS中,上述宿主機(jī)包括:
[0031]VHFSD處理模塊,用于檢測到上述虛擬機(jī)調(diào)用系統(tǒng)切換指令,從預(yù)置通用寄存器中讀取VHFS請(qǐng)求所在內(nèi)存的地址,上述VHFS請(qǐng)求為上述虛擬機(jī)根據(jù)用戶對(duì)上述虛擬機(jī)中的VHFS的共享文件的操作生成,上述VHFS請(qǐng)求用于請(qǐng)求上述宿主機(jī)在上述宿