本發(fā)明涉及計(jì)算機(jī)虛擬存儲技術(shù)領(lǐng)域,特別涉及一種利用Docker容器實(shí)現(xiàn)虛擬文件系統(tǒng)的方法。
背景技術(shù):
操作系統(tǒng)可以支持多種底層不同的文件系統(tǒng)(比如NTFS,F(xiàn)AT,ext3,ext4),Linux在用戶進(jìn)程和底層文件系統(tǒng)之間加入了一個(gè)抽象層,用來給內(nèi)核和用戶進(jìn)程提供統(tǒng)一的文件系統(tǒng)視圖,稱為虛擬文件系統(tǒng)。虛擬文件系統(tǒng)一方面提供了一組統(tǒng)一的訪問文件、目錄、其他對象的接口,另一方面與底層的文件系統(tǒng)適配。
虛擬文件系統(tǒng)架構(gòu),如圖1所示。
Docker共享一個(gè)操作系統(tǒng),將容器概念進(jìn)行抽象化,不同容器之間相互隔離。Docker技術(shù)可以使容器跨越物理機(jī)器的障礙,不同的容器之間建立通信機(jī)制,Docker是一種操作系統(tǒng)上的虛擬化方式,能夠方便進(jìn)行容器的管理,可以方便使用本地物理機(jī)的操作系統(tǒng)。
Docker與虛擬機(jī)訪問地址的區(qū)別,如圖2所示。
現(xiàn)有技術(shù)下,Linux操作系統(tǒng)的虛擬文件系統(tǒng),不是一種物理文件系統(tǒng),而是一種轉(zhuǎn)換機(jī)制,是一種僅存于內(nèi)存空間的一系列數(shù)據(jù)接口。而目前這種虛擬文件系統(tǒng)存儲的開銷大,文件存儲效率較低。
技術(shù)實(shí)現(xiàn)要素:
為了解決現(xiàn)有技術(shù)的問題,本發(fā)明提供了一種利用Docker容器實(shí)現(xiàn)虛擬文件系統(tǒng)的方法,其能夠利用容器級虛擬化技術(shù)Docker進(jìn)行虛擬文件系統(tǒng)的實(shí)現(xiàn),減少現(xiàn)有虛擬文件系統(tǒng)存儲的開銷,提高文件存儲效率。
本發(fā)明所采用的技術(shù)方案如下:
一種利用Docker容器實(shí)現(xiàn)虛擬文件系統(tǒng)的方法,是創(chuàng)建一個(gè)Docker容器虛擬環(huán)境,在所述的Docker容器虛擬環(huán)境中通過容器配置,將磁盤的物理地址進(jìn)行映射,當(dāng)存儲文件時(shí)首先在所述的Docker容器虛擬環(huán)境進(jìn)行緩存,再進(jìn)行磁盤存儲。
Docker容器虛擬環(huán)境與磁盤之間還設(shè)置有磁盤緩存區(qū)域,磁盤緩存區(qū)域是在容器與磁盤之間的一塊虛擬區(qū)域,內(nèi)部保存文件的指針和一個(gè)文件操作隊(duì)列。
Docker容器虛擬環(huán)境中包含有文件修改內(nèi)容塊、文件差異塊和文件指針,進(jìn)行文件的修改和存儲操作時(shí),在所述的文件修改內(nèi)容塊中進(jìn)行操作,操作完成后,與文件差異塊中的文件數(shù)據(jù)進(jìn)行比較,如果存在差異則需要將文件修改保存到磁盤中,要存儲文件首先利用文件指針遍歷磁盤緩存區(qū)域,在磁盤緩存區(qū)域查找是否存在對應(yīng)的文件,如果磁盤緩存區(qū)域存在則對整體文件進(jìn)行修改,保存到磁盤緩存區(qū)域中,等待所有文件操作完成后,再進(jìn)行批量的文件存儲操作。
本發(fā)明提供的技術(shù)方案帶來的有益效果是:
本發(fā)明基于Linux文件系統(tǒng)進(jìn)行實(shí)現(xiàn)。本發(fā)明的基本思想是:利用容器技術(shù)構(gòu)建一個(gè)虛擬的應(yīng)用環(huán)境,在該環(huán)境中通過容器配置進(jìn)行內(nèi)部的管理,直接將磁盤物理地址進(jìn)行映射,存儲文件時(shí)首先在虛擬環(huán)境中進(jìn)行緩存,采用類似寫回法的方式直接進(jìn)行磁盤存儲,不必使用虛擬物理地址,降低磁盤訪問次數(shù),減少文件存儲操作的開銷。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對實(shí)施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為現(xiàn)有技術(shù)下的虛擬文件系統(tǒng)架構(gòu)圖;
圖2為現(xiàn)有技術(shù)下的Docker容器與虛擬機(jī)訪問地址的區(qū)別示意圖;
圖3為本發(fā)明的一種利用Docker容器實(shí)現(xiàn)虛擬文件系統(tǒng)的方法的實(shí)現(xiàn)原理圖。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。
實(shí)施例一
如附圖1所示,使用Docker容器創(chuàng)建一個(gè)虛擬環(huán)境,該環(huán)境擁有一個(gè)配置文件,使用該配置文件進(jìn)行容器的生成。底層不同的文件系統(tǒng)適配不同的容器,每一個(gè)容器中包含文件修改內(nèi)容塊、文件差異塊和文件指針等內(nèi)容。
進(jìn)行文件的修改和存儲操作時(shí),實(shí)際在文件修改內(nèi)容塊中進(jìn)行操作。操作完成后,與文件差異塊中的文件數(shù)據(jù)進(jìn)行比較,如果存在差異則需要將文件修改保存到磁盤中。要存儲文件首先利用文件指針遍歷磁盤緩存區(qū)域,磁盤緩存區(qū)域是在容器與磁盤之間的一塊虛擬區(qū)域,內(nèi)部保存文件的指針和一個(gè)文件操作隊(duì)列。
在磁盤緩存區(qū)域查找是否存在對應(yīng)的文件,如果磁盤緩存區(qū)域存在則對整體文件進(jìn)行修改,保存到緩存區(qū)中,等待所有文件操作完成后,進(jìn)行批量的文件存儲操作,只進(jìn)行一次磁盤的訪問,減少磁盤的訪問次數(shù),提高文件存儲效率。
以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。