本發(fā)明涉及虛擬文件系統(tǒng)領(lǐng)域,尤其涉及一種基于DAS架構(gòu)存儲(chǔ)服務(wù)器的虛擬文件系統(tǒng)及其文件管理方法。
背景技術(shù):
隨著互聯(lián)網(wǎng)和視頻技術(shù)的飛速發(fā)展,人們對(duì)視頻質(zhì)量要求不斷提升,導(dǎo)致視頻數(shù)據(jù)傳輸量不斷增加,隨之要求視頻存儲(chǔ)服務(wù)器不斷提高視頻讀寫(xiě)速率,以滿足及時(shí)響應(yīng)用戶(hù)視頻讀寫(xiě)請(qǐng)求的目的。當(dāng)前磁盤(pán)存儲(chǔ)服務(wù)器主要包括DAS、NAS和SAN三種架構(gòu)。其中,DAS(Direct Access Storage,即直接連接存儲(chǔ))是指將存儲(chǔ)設(shè)備通過(guò)SCSI接口或光纖通道直接連接到一臺(tái)計(jì)算機(jī)上。NAS(Network Attached Storage,即網(wǎng)絡(luò)連接存儲(chǔ))是指將存儲(chǔ)設(shè)備通過(guò)標(biāo)準(zhǔn)的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)(例如以太網(wǎng)),連接到一群計(jì)算機(jī)上。SAN(Storage Area Network,即存儲(chǔ)區(qū)域網(wǎng)絡(luò))是指通過(guò)光纖通道連接到一群計(jì)算機(jī)上。
在實(shí)際應(yīng)用過(guò)程中,酒店、公寓、地方電視臺(tái)等中小型企業(yè)受成本限制,一般不會(huì)選用技術(shù)復(fù)雜且成本高的NAS架構(gòu)或SAN架構(gòu)的存儲(chǔ)服務(wù)器進(jìn)行視頻數(shù)據(jù)存儲(chǔ),通常會(huì)采用DAS架構(gòu)的存儲(chǔ)服務(wù)器進(jìn)而視頻數(shù)據(jù)存儲(chǔ),DAS架構(gòu)的存儲(chǔ)服務(wù)器主要依賴(lài)存儲(chǔ)服務(wù)器的主機(jī)操作系統(tǒng)進(jìn)行數(shù)據(jù)的讀寫(xiě)操作和存儲(chǔ)維護(hù)管理。DAS架構(gòu)的存儲(chǔ)服務(wù)器的具有成本低、結(jié)構(gòu)簡(jiǎn)單,不需要專(zhuān)門(mén)的技術(shù)人員維護(hù)等優(yōu)點(diǎn),在普通數(shù)據(jù)存儲(chǔ)并且對(duì)讀寫(xiě)操作的IO性能(Input/Output性能,即輸入輸出性能)要求不高時(shí),可滿足基本需求。但在需要大并發(fā)讀寫(xiě)操作時(shí),DAS架構(gòu)的存儲(chǔ)服務(wù)器只能通過(guò)配置RAID(Redundant Arrays of Independent Disks,即獨(dú)立冗余磁盤(pán)陳列)卡,提高與存儲(chǔ)服務(wù)器相連的磁盤(pán)陣列整體的讀寫(xiě)速率?,F(xiàn)有DAS架構(gòu)的存儲(chǔ)服務(wù)器,即使配置有RAID卡,若多個(gè)用戶(hù)集中訪問(wèn)同一視頻資源時(shí),也會(huì)形成整個(gè)存儲(chǔ)服務(wù)器的IO性能瓶頸,導(dǎo)致存儲(chǔ)該視頻資源的磁盤(pán)緊張,影響存儲(chǔ)服務(wù)器的IO性能。并且,即使多個(gè)訪問(wèn)請(qǐng)求不是訪問(wèn)同一視頻資源但多個(gè)訪問(wèn)請(qǐng)求對(duì)應(yīng)的視頻資源在同一磁盤(pán)上,也有可能導(dǎo)致磁盤(pán)緊張,影響存儲(chǔ)服務(wù)器的IO性能。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要解決的技術(shù)問(wèn)題在于,針對(duì)現(xiàn)有技術(shù)的缺陷,提供基于DAS架構(gòu)存儲(chǔ)服務(wù)器的虛擬文件系統(tǒng)及其文件管理方法,用以提高存儲(chǔ)服務(wù)器的讀寫(xiě)速率。
本發(fā)明解決其技術(shù)問(wèn)題所采用的技術(shù)方案是:一種基于DAS架構(gòu)存儲(chǔ)服務(wù)器的虛擬文件系統(tǒng),包括任務(wù)管理子系統(tǒng)和緩存子系統(tǒng);
所述任務(wù)管理子系統(tǒng),用于接收來(lái)自請(qǐng)求終端的文件操作任務(wù),在所述文件操作任務(wù)的任務(wù)類(lèi)型為讀寫(xiě)文件任務(wù)時(shí),將所述文件操作任務(wù)發(fā)送給所述緩存子系統(tǒng);
所述緩存子系統(tǒng),用于接收所述文件操作任務(wù);在所述文件操作任務(wù)的任務(wù)類(lèi)型為讀文件任務(wù)時(shí),從緩存空間中獲取與所述文件操作任務(wù)相對(duì)應(yīng)的待讀取文件數(shù)據(jù),并將所述待讀取文件數(shù)據(jù)發(fā)送給所述任務(wù)管理子系統(tǒng);或者,在所述文件操作任務(wù)的任務(wù)類(lèi)型為寫(xiě)文件任務(wù)時(shí),將所述文件操作任務(wù)對(duì)應(yīng)的待寫(xiě)入文件數(shù)據(jù)寫(xiě)入所述緩存空間;
所述任務(wù)管理子系統(tǒng),用于接收所述待讀取文件數(shù)據(jù),并將所述待讀取文件數(shù)據(jù)發(fā)送給所述請(qǐng)求終端。
優(yōu)選地,所述虛擬文件系統(tǒng)還包括存儲(chǔ)子系統(tǒng);
所述緩存子系統(tǒng),用于判斷接收到所述文件操作任務(wù)的任務(wù)類(lèi)型為讀文件任務(wù)還是寫(xiě)文件任務(wù);
所述緩存子系統(tǒng),用于在接收到所述文件操作任務(wù)的任務(wù)類(lèi)型為讀文件任務(wù)時(shí),判斷緩存空間中是否存在與所述文件操作任務(wù)相對(duì)應(yīng)的待讀取文件數(shù)據(jù);若存在,則更新所述緩存空間內(nèi)的文件數(shù)據(jù),并將所述待讀取文件數(shù)據(jù)發(fā)送給所述任務(wù)管理子系統(tǒng);若不存在,則將所述文件操作任務(wù)發(fā)送給所述存儲(chǔ)子系統(tǒng);
所述存儲(chǔ)子系統(tǒng),用于接收所述文件操作任務(wù),獲取與所述文件操作任務(wù)相對(duì)應(yīng)的待讀取文件數(shù)據(jù),并將所述待讀取文件數(shù)據(jù)發(fā)送給所述緩存子系統(tǒng);
所述緩存子系統(tǒng),用于接收來(lái)自所述存儲(chǔ)子系統(tǒng)的所述待讀取文件數(shù)據(jù),將所述待讀取文件數(shù)據(jù)添加到所述緩存空間內(nèi),更新所述緩存空間內(nèi)的文件數(shù)據(jù);并將所述待讀取文件數(shù)據(jù)發(fā)送給所述任務(wù)管理子系統(tǒng);
所述緩存子系統(tǒng),用于在接收到所述文件操作任務(wù)的任務(wù)類(lèi)型為寫(xiě)文件任務(wù)時(shí),所述文件操作任務(wù)包括所述待寫(xiě)入文件數(shù)據(jù);將所述待寫(xiě)入文件數(shù)據(jù)添加到所述緩存空間內(nèi),更新所述緩存空間的文件數(shù)據(jù);并將所述文件操作任務(wù)發(fā)送給所述存儲(chǔ)子系統(tǒng);
所述存儲(chǔ)子系統(tǒng),用于接收所述文件操作任務(wù),并存儲(chǔ)所述待寫(xiě)入文件數(shù)據(jù)。
優(yōu)選地,所述虛擬文件系統(tǒng)還包括與主機(jī)操作系統(tǒng)建立內(nèi)存映射關(guān)系的目錄子系統(tǒng);
所述目錄子系統(tǒng),用于采用預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)管理存儲(chǔ)在所述存儲(chǔ)子系統(tǒng)中的文件數(shù)據(jù)對(duì)應(yīng)的文件目錄信息;
所述存儲(chǔ)子系統(tǒng),用于將磁盤(pán)依空間大小劃分成存儲(chǔ)段、存儲(chǔ)塊和存儲(chǔ)頁(yè)三級(jí)存儲(chǔ)結(jié)構(gòu),并將所述文件數(shù)據(jù)存儲(chǔ)在至少一個(gè)所述存儲(chǔ)頁(yè)上;所述文件目錄信息記錄每一所述文件數(shù)據(jù)對(duì)應(yīng)的至少一個(gè)存儲(chǔ)地址;
或者,所述存儲(chǔ)子系統(tǒng),用于將存儲(chǔ)在所述存儲(chǔ)子系統(tǒng)中的文件數(shù)據(jù)劃分成若干子文件數(shù)據(jù),并將所述若干子文件數(shù)據(jù)均勻分布并存儲(chǔ)在所有磁盤(pán)上;所述文件目錄信息記錄每一所述子文件數(shù)據(jù)對(duì)應(yīng)的磁盤(pán)地址。
優(yōu)選地,還包括:所述任務(wù)管理子系統(tǒng),用于在所述文件操作任務(wù)的任務(wù)類(lèi)型為管理文件任務(wù)時(shí),將所述文件操作任務(wù)發(fā)送給所述目錄子系統(tǒng);所述管理文件任務(wù)包括創(chuàng)建文件任務(wù)、刪除文件任務(wù)、修改文件任務(wù)或查找文件任務(wù);
所述目錄子系統(tǒng),用于接收并執(zhí)行所述文件操作任務(wù)。
優(yōu)選地,所述目錄子系統(tǒng),用于在所述文件操作任務(wù)的任務(wù)類(lèi)型為創(chuàng)建文件任務(wù)時(shí),判斷所述文件操作任務(wù)所要?jiǎng)?chuàng)建的文件的文件大小是否已確定;
所述目錄子系統(tǒng),用于在所述文件大小已確定時(shí),通過(guò)所述任務(wù)管理子系統(tǒng)向所述存儲(chǔ)子系統(tǒng)發(fā)送申請(qǐng)緩存空間請(qǐng)求,接收所述存儲(chǔ)子系統(tǒng)的分配緩存空間;基于所述文件操作任務(wù)生成一創(chuàng)建文件目錄信息,將所述創(chuàng)建文件目錄信息與所述分配緩存空間相關(guān)聯(lián),并將所述創(chuàng)建文件目錄信息添加到所述預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)中;
所述目錄子系統(tǒng),用于在所述文件大小未確定時(shí),基于所述文件操作任務(wù)生成一創(chuàng)建文件目錄信息,并將所述創(chuàng)建文件目錄信息添加到所述預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)中。
本發(fā)明還提供一種基于DAS架構(gòu)存儲(chǔ)服務(wù)器的虛擬文件系統(tǒng)的文件管理方法,所述虛擬文件系統(tǒng)包括任務(wù)管理子系統(tǒng)和緩存子系統(tǒng);
所述任務(wù)管理子系統(tǒng)接收來(lái)自請(qǐng)求終端的文件操作任務(wù),在所述文件操作任務(wù)的任務(wù)類(lèi)型為讀寫(xiě)文件任務(wù)時(shí),將所述文件操作任務(wù)發(fā)送給所述緩存子系統(tǒng);
所述緩存子系統(tǒng)接收所述文件操作任務(wù);在所述文件操作任務(wù)的任務(wù)類(lèi)型為讀文件任務(wù)時(shí),從緩存空間中獲取與所述文件操作任務(wù)相對(duì)應(yīng)的待讀取文件數(shù)據(jù),并將所述待讀取文件數(shù)據(jù)發(fā)送給所述任務(wù)管理子系統(tǒng);或者,在所述文件操作任務(wù)的任務(wù)類(lèi)型為寫(xiě)文件任務(wù)時(shí),將所述文件操作任務(wù)對(duì)應(yīng)的待寫(xiě)入文件數(shù)據(jù)寫(xiě)入所述緩存空間;
所述任務(wù)管理子系統(tǒng)接收所述待讀取文件數(shù)據(jù),并將所述待讀取文件數(shù)據(jù)發(fā)送給所述請(qǐng)求終端。
優(yōu)選地,所述虛擬文件系統(tǒng)還包括存儲(chǔ)子系統(tǒng);
所述緩存子系統(tǒng)判斷接收到所述文件操作任務(wù)的任務(wù)類(lèi)型為讀文件任務(wù)還是寫(xiě)文件任務(wù);
所述緩存子系統(tǒng)在接收到所述文件操作任務(wù)的任務(wù)類(lèi)型為讀文件任務(wù)時(shí),判斷緩存空間中是否存在與所述文件操作任務(wù)相對(duì)應(yīng)的待讀取文件數(shù)據(jù);若存在,則更新所述緩存空間內(nèi)的文件數(shù)據(jù),并將所述待讀取文件數(shù)據(jù)發(fā)送給所述任務(wù)管理子系統(tǒng);若不存在,則將所述文件操作任務(wù)發(fā)送給所述存儲(chǔ)子系統(tǒng);
所述存儲(chǔ)子系統(tǒng)接收所述文件操作任務(wù),獲取與所述文件操作任務(wù)相對(duì)應(yīng)的待讀取文件數(shù)據(jù),并將所述待讀取文件數(shù)據(jù)發(fā)送給所述緩存子系統(tǒng);
所述緩存子系統(tǒng)接收來(lái)自所述存儲(chǔ)子系統(tǒng)的所述待讀取文件數(shù)據(jù),將所述待讀取文件數(shù)據(jù)添加到所述緩存空間內(nèi),更新所述緩存空間內(nèi)的文件數(shù)據(jù);并將所述待讀取文件數(shù)據(jù)發(fā)送給所述任務(wù)管理子系統(tǒng);
所述緩存子系統(tǒng)在接收到所述文件操作任務(wù)的任務(wù)類(lèi)型為寫(xiě)文件任務(wù)時(shí),所述文件操作任務(wù)包括所述待寫(xiě)入文件數(shù)據(jù);將所述待寫(xiě)入文件數(shù)據(jù)添加到所述緩存空間內(nèi),更新所述緩存空間的文件數(shù)據(jù);并將所述文件操作任務(wù)發(fā)送給所述存儲(chǔ)子系統(tǒng);
所述存儲(chǔ)子系統(tǒng)接收所述文件操作任務(wù),并存儲(chǔ)所述待寫(xiě)入文件數(shù)據(jù)。
優(yōu)選地,所述虛擬文件系統(tǒng)還包括與主機(jī)操作系統(tǒng)建立內(nèi)存映射關(guān)系的目錄子系統(tǒng);所述目錄子系統(tǒng)采用預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)管理存儲(chǔ)在所述存儲(chǔ)子系統(tǒng)中的文件數(shù)據(jù)對(duì)應(yīng)的文件目錄信息;
所述存儲(chǔ)子系統(tǒng)將磁盤(pán)依空間大小劃分成存儲(chǔ)段、存儲(chǔ)塊和存儲(chǔ)頁(yè)三級(jí)存儲(chǔ)結(jié)構(gòu),并將所述文件數(shù)據(jù)存儲(chǔ)在至少一個(gè)所述存儲(chǔ)頁(yè)上;所述文件目錄信息記錄每一所述文件數(shù)據(jù)對(duì)應(yīng)的至少一個(gè)存儲(chǔ)地址;
或者,所述存儲(chǔ)子系統(tǒng)將存儲(chǔ)在所述存儲(chǔ)子系統(tǒng)中的文件數(shù)據(jù)劃分成若干子文件數(shù)據(jù),并將所述若干子文件數(shù)據(jù)均勻分布并存儲(chǔ)在所有磁盤(pán)上;所述文件目錄信息記錄每一所述子文件數(shù)據(jù)對(duì)應(yīng)的磁盤(pán)地址。
優(yōu)選地,還包括:
所述任務(wù)管理子系統(tǒng)在判斷所述文件操作任務(wù)的任務(wù)類(lèi)型為管理文件任務(wù)時(shí),將所述文件操作任務(wù)發(fā)送給所述目錄子系統(tǒng);所述管理文件任務(wù)包括創(chuàng)建文件任務(wù)、刪除文件任務(wù)、修改文件任務(wù)或查找文件任務(wù);
所述目錄子系統(tǒng)接收并執(zhí)行所述文件操作任務(wù)。
優(yōu)選地,還包括:所述目錄子系統(tǒng)在所述文件操作任務(wù)的任務(wù)類(lèi)型為創(chuàng)建文件任務(wù)時(shí),判斷所述文件操作任務(wù)所要?jiǎng)?chuàng)建的文件的文件大小是否已確定;
所述目錄子系統(tǒng)在所述文件大小已確定時(shí),通過(guò)所述任務(wù)管理子系統(tǒng)向所述存儲(chǔ)子系統(tǒng)發(fā)送申請(qǐng)緩存空間請(qǐng)求,接收所述存儲(chǔ)子系統(tǒng)的分配緩存空間;基于所述文件操作任務(wù)生成一創(chuàng)建文件目錄信息,將所述創(chuàng)建文件目錄信息與所述分配緩存空間相關(guān)聯(lián),并將所述創(chuàng)建文件目錄信息添加到所述預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)中;
所述目錄子系統(tǒng)在所述文件大小未確定時(shí),基于所述文件操作任務(wù)生成一創(chuàng)建文件目錄信息,并將所述創(chuàng)建文件目錄信息添加到所述預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)中。
本發(fā)明與現(xiàn)有技術(shù)相比具有如下優(yōu)點(diǎn):本發(fā)明所提供的基于DAS架構(gòu)存儲(chǔ)服務(wù)器的虛擬文件系統(tǒng)及其文件管理方法,任務(wù)管理子系統(tǒng)在接收任務(wù)類(lèi)型為讀寫(xiě)文件任務(wù)的文件操作任務(wù)時(shí),將文件操作任務(wù)發(fā)送給緩存子系統(tǒng);緩存子系統(tǒng)在文件操作任務(wù)的任務(wù)類(lèi)型為讀文件任務(wù)時(shí),從緩存空間獲取與文件操作任務(wù)相對(duì)應(yīng)的待讀取文件數(shù)據(jù)并發(fā)送給任務(wù)管理子系統(tǒng);在文件操作任務(wù)的任務(wù)類(lèi)型為寫(xiě)文件任務(wù)時(shí),將與文件操作任務(wù)相對(duì)應(yīng)的待寫(xiě)入文件數(shù)據(jù)寫(xiě)入緩存空間。該虛擬文件系統(tǒng)中設(shè)置緩存子系統(tǒng)對(duì)文件操作任務(wù)進(jìn)行處理,可屏蔽對(duì)磁盤(pán)或磁盤(pán)陣列的重復(fù)讀取,以降低文件操作任務(wù)對(duì)磁盤(pán)或磁盤(pán)陣列的讀寫(xiě)壓力,減少磁盤(pán)或磁盤(pán)陣列的IO支出,以保證磁盤(pán)或磁盤(pán)陣列的IO性能。
附圖說(shuō)明
下面將結(jié)合附圖及實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明,附圖中:
圖1是本發(fā)明實(shí)施例1中基于DAS架構(gòu)存儲(chǔ)服務(wù)器的虛擬文件系統(tǒng)的原理框圖。
圖2是本發(fā)明實(shí)施例2中基于DAS架構(gòu)存儲(chǔ)服務(wù)器的虛擬文件系統(tǒng)的文件管理方法的一流程圖。
圖中:11、任務(wù)管理子系統(tǒng);12、緩存子系統(tǒng);13、存儲(chǔ)子系統(tǒng);14、目錄子系統(tǒng)。
具體實(shí)施方式
為了對(duì)本發(fā)明的技術(shù)特征、目的和效果有更加清楚的理解,現(xiàn)對(duì)照附圖詳細(xì)說(shuō)明本發(fā)明的具體實(shí)施方式。
實(shí)施例1
圖1示出本實(shí)施例中的基于DAS架構(gòu)的虛擬文件系統(tǒng)的原理框圖。在基于DAS架構(gòu)存儲(chǔ)服務(wù)器中,存儲(chǔ)服務(wù)器與磁盤(pán)或磁盤(pán)陣列通過(guò)SCSI接口直接相連,在存儲(chǔ)服務(wù)器上設(shè)有用于實(shí)現(xiàn)對(duì)磁盤(pán)或磁盤(pán)陣列上的文件數(shù)據(jù)進(jìn)行IO讀寫(xiě)和存儲(chǔ)維護(hù)管理、數(shù)據(jù)備份和恢復(fù)要求等功能的主機(jī)操作系統(tǒng);其中,磁盤(pán)陣列包括至少二個(gè)磁盤(pán)。本實(shí)施例所提供的基于DAS架構(gòu)存儲(chǔ)服務(wù)器的虛擬文件系統(tǒng)中,虛擬文件系統(tǒng)與主機(jī)操作系統(tǒng)預(yù)先建立內(nèi)存映射關(guān)系,具體包括任務(wù)管理子系統(tǒng)11、緩存子系統(tǒng)12、目錄子系統(tǒng)14和存儲(chǔ)子系統(tǒng)13;其中,目錄子系統(tǒng)14與主機(jī)操作系統(tǒng)建立內(nèi)存映射關(guān)系。
目錄子系統(tǒng)14用于采用預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)管理存儲(chǔ)在虛擬文件系統(tǒng)中的每一文件數(shù)據(jù)對(duì)應(yīng)的文件目錄信息。具體地,目錄子系統(tǒng)14中的文件目錄信息以?xún)?nèi)存映射方式存儲(chǔ)在主機(jī)操作系統(tǒng)上,從而使目錄子系統(tǒng)14中的文件目錄信息可實(shí)時(shí)更新,進(jìn)而保證文件目錄信息的安全和實(shí)時(shí)有效。由于目錄子系統(tǒng)14與主機(jī)操作系統(tǒng)建立內(nèi)存映射關(guān)系,使得每次主機(jī)操作系統(tǒng)啟動(dòng)時(shí),均需加載目錄子系統(tǒng)14。本實(shí)施例中,目錄子系統(tǒng)14用于管理虛擬文件系統(tǒng)中所有的文件數(shù)據(jù),記錄文件數(shù)據(jù)的文件目錄信息(包括文件大小、存儲(chǔ)地址等),實(shí)現(xiàn)創(chuàng)建文件、刪除文件、修改文件和查找文件等管理文件任務(wù)。本實(shí)施例中目錄子系統(tǒng)14所采用的預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)為紅黑樹(shù)數(shù)據(jù)結(jié)構(gòu),使得執(zhí)行創(chuàng)建文件、刪除文件、修改文件和查找文件等管理文件任務(wù)可保持在較低的時(shí)間復(fù)雜度下??梢岳斫獾?,在保持較低的時(shí)間復(fù)雜度的情況下,預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)還可以為其他數(shù)據(jù)結(jié)構(gòu)。
任務(wù)管理子系統(tǒng)11負(fù)責(zé)接收并管理請(qǐng)求終端發(fā)送的訪問(wèn)虛擬文件系統(tǒng)的文件操作任務(wù),文件操作任務(wù)的任務(wù)類(lèi)型包括讀寫(xiě)文件任務(wù)和管理文件任務(wù);其中,讀寫(xiě)文件任務(wù)包括讀文件任務(wù)和寫(xiě)文件任務(wù);管理文件任務(wù)包括創(chuàng)建文件任務(wù)、刪除文件任務(wù)、修改文件任務(wù)和查找文件任務(wù)。每一個(gè)文件操作任務(wù)對(duì)應(yīng)一任務(wù)數(shù)據(jù)塊,該任務(wù)數(shù)據(jù)塊用于存儲(chǔ)與任務(wù)相關(guān)的任務(wù)信息,包括但不限于任務(wù)類(lèi)型、文件名稱(chēng)、文件大小、創(chuàng)建時(shí)間、任務(wù)執(zhí)行狀態(tài)、碼率、視頻類(lèi)型、壓縮格式等。另外,任務(wù)數(shù)據(jù)塊不存儲(chǔ)具體的文件數(shù)據(jù),但與文件數(shù)據(jù)的存儲(chǔ)地址相關(guān)聯(lián)。具體地,在文件操作任務(wù)的任務(wù)類(lèi)型為讀文件任務(wù)時(shí),將其對(duì)應(yīng)的任務(wù)數(shù)據(jù)塊與獲取到的待讀取文件數(shù)據(jù)的存儲(chǔ)地址相關(guān)聯(lián);在文件操作任務(wù)的任務(wù)類(lèi)型為寫(xiě)文件任務(wù)時(shí),將其對(duì)應(yīng)的任務(wù)數(shù)據(jù)塊與待寫(xiě)入文件數(shù)據(jù)的存儲(chǔ)地址相關(guān)聯(lián)。在虛擬文件系統(tǒng)中,基于文件操作任務(wù)的任務(wù)數(shù)據(jù)塊實(shí)現(xiàn)虛擬文件系統(tǒng)各子系統(tǒng)之間的通信調(diào)用。任務(wù)管理子系統(tǒng)11會(huì)根據(jù)每一文件操作任務(wù)的任務(wù)數(shù)據(jù)塊上的任務(wù)類(lèi)型,將文件操作任務(wù)發(fā)送給相應(yīng)的子系統(tǒng)進(jìn)行處理,并將處理結(jié)果返回給發(fā)送文件操作任務(wù)的請(qǐng)求終端。本實(shí)施例中,任務(wù)管理子系統(tǒng)11在接收到的文件操作任務(wù)的任務(wù)類(lèi)型為讀寫(xiě)文件任務(wù)時(shí),將文件操作任務(wù)發(fā)送給緩存子系統(tǒng)12進(jìn)行處理;在接收到的文件操作任務(wù)的任務(wù)類(lèi)型為管理文件任務(wù)時(shí),將文件操作任務(wù)發(fā)送給目錄子系統(tǒng)14進(jìn)行處理。
緩存子系統(tǒng)12用于管理緩存空間中緩存的所有文件數(shù)據(jù),接收任務(wù)管理子系統(tǒng)11發(fā)送的任務(wù)類(lèi)型為讀寫(xiě)文件任務(wù)的文件操作任務(wù),并對(duì)接收到的任務(wù)類(lèi)型為讀寫(xiě)文件任務(wù)的文件操作任務(wù)進(jìn)行處理。具體地,緩存子系統(tǒng)12接收到任務(wù)類(lèi)型為讀文件任務(wù)的文件操作任務(wù)時(shí),先查看緩存空間中是否存在與文件操作任務(wù)相對(duì)應(yīng)的待讀取文件數(shù)據(jù),若存在待讀取文件數(shù)據(jù),則直接將緩存的待讀取文件數(shù)據(jù)返回給任務(wù)管理子系統(tǒng)11,并通過(guò)任務(wù)管理子系統(tǒng)11發(fā)送給請(qǐng)求終端;若不存在待讀取文件數(shù)據(jù),則將文件操作任務(wù)發(fā)送給存儲(chǔ)子系統(tǒng)13,從存儲(chǔ)子系統(tǒng)13獲取待讀取文件數(shù)據(jù)并返回給任務(wù)管理子系統(tǒng)11。緩存子系統(tǒng)12接收到任務(wù)類(lèi)型為寫(xiě)文件任務(wù)的文件操作任務(wù)(此時(shí)文件操作任務(wù)中包含待寫(xiě)入文件數(shù)據(jù))時(shí),會(huì)先將文件操作任務(wù)所包含的待寫(xiě)入文件數(shù)據(jù)存儲(chǔ)在緩存空間內(nèi),更新緩存空間的文件數(shù)據(jù),然后將待寫(xiě)入文件數(shù)據(jù)發(fā)送存儲(chǔ)子系統(tǒng)13,由存儲(chǔ)子系統(tǒng)13存儲(chǔ)到磁盤(pán)或磁盤(pán)陣列上。
可以理解地,緩存子系統(tǒng)12預(yù)先向主機(jī)操作系統(tǒng)申請(qǐng)緩存空間,作為虛擬文件系統(tǒng)的緩存,并獨(dú)立使用,緩存子系統(tǒng)的2將申請(qǐng)到的緩存空間以頁(yè)大小為單位,劃分成多個(gè)緩存頁(yè)。緩存子系統(tǒng)12負(fù)責(zé)管理緩存空間內(nèi)各緩存頁(yè)的緩存頁(yè)狀態(tài),以確定緩存頁(yè)處于空閑狀態(tài)還是使用狀態(tài)。若處于空閑狀態(tài),則可向緩存頁(yè)直接寫(xiě)入新的文件數(shù)據(jù)并緩存;若處于使用狀態(tài),即記錄緩存頁(yè)中緩存的文件數(shù)據(jù)在存儲(chǔ)子系統(tǒng)13中的存儲(chǔ)地址,該存儲(chǔ)地址包括文件數(shù)據(jù)在磁盤(pán)或磁盤(pán)陣列中的存儲(chǔ)段地址、存儲(chǔ)塊地址和存儲(chǔ)頁(yè)地址,通過(guò)該存儲(chǔ)地址可直接定位內(nèi)存中相應(yīng)的文件數(shù)據(jù)。
進(jìn)一步地,緩存子系統(tǒng)12對(duì)基于文件操作任務(wù)而獲取到的待讀取文件數(shù)據(jù)(從存儲(chǔ)子系統(tǒng)13)或待寫(xiě)入文件數(shù)據(jù)(從文件操作任務(wù)),均需在緩存空間中緩存一份,將其存儲(chǔ)在空閑狀態(tài)的緩存頁(yè)上,形成緩存空間的文件數(shù)據(jù),以便于再次接收到任務(wù)類(lèi)型為讀文件任務(wù)的文件操作任務(wù)時(shí),可直接將緩存空間的文件數(shù)據(jù)中獲取相應(yīng)的待讀取文件數(shù)據(jù)返回給任務(wù)管理子系統(tǒng)11,無(wú)需將文件操作任務(wù)發(fā)送給存儲(chǔ)子系統(tǒng)13以獲取相應(yīng)的待讀取文件數(shù)據(jù),從而過(guò)濾掉一部分任務(wù)類(lèi)型為讀文件任務(wù)的文件操作任務(wù),使得只有在緩存空間的文件數(shù)據(jù)中不存在相應(yīng)的待讀取文件數(shù)據(jù)時(shí)才會(huì)從存儲(chǔ)子系統(tǒng)13獲取待讀取文件任務(wù),以減輕磁盤(pán)的IO壓力。可以理解地,在將待讀取文件數(shù)據(jù)或待寫(xiě)入文件數(shù)據(jù)加入緩存空間時(shí),需先檢查緩存空間是否已滿;若緩存空間已滿,即緩存空間內(nèi)不存在可緩存待讀取文件數(shù)據(jù)或待寫(xiě)入文件數(shù)據(jù)的處于空閑狀態(tài)的緩存頁(yè),此時(shí)需采用預(yù)設(shè)的淘汰算法,淘汰舊的緩存頁(yè)上緩存的文件數(shù)據(jù)。該緩存淘汰算法包括但不限于RAND算法,FIFO算法,LFU算法,LRU算法,OPT算法。
存儲(chǔ)子系統(tǒng)13負(fù)責(zé)管理磁盤(pán)或磁盤(pán)陣列,并配合完成文件操作任務(wù)。具體地,存儲(chǔ)子系統(tǒng)13負(fù)責(zé)管理存儲(chǔ)服務(wù)器上的磁盤(pán)或磁盤(pán)陣列,將磁盤(pán)或磁盤(pán)陣列依空間大小劃分成存儲(chǔ)段、存儲(chǔ)塊和存儲(chǔ)頁(yè)三級(jí)存儲(chǔ)結(jié)構(gòu)(即將磁盤(pán)或磁盤(pán)陣列依空間大小劃分成若干存儲(chǔ)段,每一存儲(chǔ)頁(yè)劃分成若干存儲(chǔ)塊,每一存儲(chǔ)塊劃分成若干存儲(chǔ)頁(yè)),并將文件數(shù)據(jù)存儲(chǔ)在至少一個(gè)存儲(chǔ)頁(yè)上。存儲(chǔ)子系統(tǒng)13還定義數(shù)據(jù)結(jié)構(gòu)以管理存儲(chǔ)段、存儲(chǔ)塊和存儲(chǔ)頁(yè)的狀態(tài)信息,并確定各級(jí)存儲(chǔ)結(jié)構(gòu)(包括存儲(chǔ)段、存儲(chǔ)塊和存儲(chǔ)頁(yè))處于空閑狀態(tài)還是使用狀態(tài)。若為空閑狀態(tài)則表示對(duì)應(yīng)的磁盤(pán)空間為空,可直接寫(xiě)入文件數(shù)據(jù);若為使用狀態(tài)則表示對(duì)應(yīng)的磁盤(pán)空間被占用,不可直接寫(xiě)入文件數(shù)據(jù)。存儲(chǔ)子系統(tǒng)13還建立任務(wù)鏈表,用于接收來(lái)自緩存子系統(tǒng)12的任務(wù)類(lèi)型為讀寫(xiě)文件任務(wù)的文件操作任務(wù);并在文件操作任務(wù)的任務(wù)類(lèi)型為讀文件任務(wù)時(shí),從磁盤(pán)或磁盤(pán)陣列上獲取待讀取文件數(shù)據(jù)并返回給緩存子系統(tǒng)12,此時(shí)不修改磁盤(pán)或磁盤(pán)陣列上的文件數(shù)據(jù);在文件操作任務(wù)的任務(wù)類(lèi)型為寫(xiě)文件任務(wù)時(shí),將待寫(xiě)入文件數(shù)據(jù)寫(xiě)入磁盤(pán)或磁盤(pán)陣列,修改磁盤(pán)或磁盤(pán)陣列上的文件數(shù)據(jù),并將待寫(xiě)入文件數(shù)據(jù)的文件目錄信息添加到目錄子系統(tǒng)14中。
在一種具體實(shí)施方式中,存儲(chǔ)子系統(tǒng)13將磁盤(pán)或磁盤(pán)陣列依空間大小劃分成存儲(chǔ)段、存儲(chǔ)塊和存儲(chǔ)頁(yè)三級(jí)存儲(chǔ)結(jié)構(gòu),并將文件數(shù)據(jù)存儲(chǔ)在至少一個(gè)存儲(chǔ)頁(yè)上;相應(yīng)地,目錄子系統(tǒng)14中的文件目錄信息記錄每一文件數(shù)據(jù)對(duì)應(yīng)的存儲(chǔ)地址,該存儲(chǔ)地址包括存儲(chǔ)段地址、存儲(chǔ)塊地址和存儲(chǔ)頁(yè)地址。由于磁盤(pán)或磁盤(pán)陣列被劃分成存儲(chǔ)段、存儲(chǔ)塊和存儲(chǔ)頁(yè)三級(jí)存儲(chǔ)結(jié)構(gòu),文件數(shù)據(jù)存儲(chǔ)在磁盤(pán)或磁盤(pán)陣列時(shí),會(huì)存儲(chǔ)在W個(gè)存儲(chǔ)頁(yè)上,W個(gè)存儲(chǔ)頁(yè)可能屬于M個(gè)存儲(chǔ)塊,M個(gè)存儲(chǔ)塊可能屬于N個(gè)存儲(chǔ)段,N個(gè)存儲(chǔ)段可能屬于不同的磁盤(pán)。相應(yīng)地,目錄子系統(tǒng)14中該文件數(shù)據(jù)對(duì)應(yīng)的文件目錄信息中記錄N個(gè)存儲(chǔ)段的存儲(chǔ)段地址,N個(gè)存儲(chǔ)段地址下記錄M個(gè)存儲(chǔ)塊地址,M個(gè)存儲(chǔ)塊地址下記錄W個(gè)存儲(chǔ)頁(yè)地址??梢岳斫獾?,每一存儲(chǔ)頁(yè)的空間大小一般為物理磁盤(pán)頁(yè)的整數(shù)倍,使得磁盤(pán)或磁盤(pán)陣列在獲取待讀取文件數(shù)據(jù)或?qū)懭氪龑?xiě)入文件數(shù)據(jù)時(shí)正好對(duì)應(yīng)物理磁盤(pán)頁(yè),以避免為物理磁盤(pán)頁(yè)的非整數(shù)倍而產(chǎn)生多余的讀寫(xiě)操作。如若存儲(chǔ)頁(yè)為1.5倍物理磁盤(pán)頁(yè)時(shí),在執(zhí)行任務(wù)類(lèi)型為讀寫(xiě)文件任務(wù)時(shí)需對(duì)物理磁盤(pán)頁(yè)讀寫(xiě)2次。物理磁盤(pán)頁(yè)一般是512K或1024K,相應(yīng)地,定義虛擬文件系統(tǒng)的存儲(chǔ)子系統(tǒng)13的存儲(chǔ)頁(yè)的磁盤(pán)空間大小為512K或1024K。
在另一具體實(shí)施方式中,存儲(chǔ)子系統(tǒng)13將存儲(chǔ)在存儲(chǔ)子系統(tǒng)13中的文件數(shù)據(jù)劃分成若干子文件數(shù)據(jù),并將若干子文件數(shù)據(jù)均勻分布并存儲(chǔ)在所有磁盤(pán)上;文件目錄信息記錄每一子文件數(shù)據(jù)對(duì)應(yīng)的磁盤(pán)地址。本實(shí)施例中的磁盤(pán)均為存儲(chǔ)磁盤(pán)而非系統(tǒng)盤(pán)。在該具體實(shí)施方式中,無(wú)需將磁盤(pán)或磁盤(pán)陣列劃分成存儲(chǔ)段、存儲(chǔ)塊和存儲(chǔ)頁(yè)三級(jí)存儲(chǔ)結(jié)構(gòu),而是在給待寫(xiě)入磁盤(pán)或磁盤(pán)陣列的文件數(shù)據(jù)分配磁盤(pán)空間時(shí),先將文件數(shù)據(jù)切分成N個(gè)子文件數(shù)據(jù),再將N個(gè)子文件數(shù)據(jù)均勻分布并存儲(chǔ)在所有磁盤(pán)上。如待寫(xiě)入文件數(shù)據(jù)為XXX.ts,存儲(chǔ)時(shí)需將文件數(shù)據(jù)切分成XXX_0.ts,XXX_1.ts,XXX_2.ts等子文件數(shù)據(jù),并將上述子文件數(shù)據(jù)均勻分布并存儲(chǔ)在所有磁盤(pán)上。在該具體實(shí)施方式中,磁盤(pán)工作線程不是直接讀寫(xiě)磁盤(pán),而是要打開(kāi)對(duì)應(yīng)的子文件數(shù)據(jù),并完成讀寫(xiě)文件任務(wù)。相應(yīng)地,目錄子系統(tǒng)14中的文件目錄信息記錄的不是文件數(shù)據(jù)對(duì)應(yīng)的存儲(chǔ)段、存儲(chǔ)塊和存儲(chǔ)頁(yè)所形成的存儲(chǔ)地址,而是記錄文件數(shù)據(jù)被切分成哪些子文件數(shù)據(jù)以及各子文件數(shù)據(jù)對(duì)應(yīng)的磁盤(pán)地址。
可以理解地,不管是對(duì)磁盤(pán)或磁盤(pán)陣列進(jìn)行存儲(chǔ)段、存儲(chǔ)塊和存儲(chǔ)頁(yè)三級(jí)存儲(chǔ)結(jié)構(gòu)劃分,并將文件數(shù)據(jù)存儲(chǔ)在至少一個(gè)存儲(chǔ)頁(yè)上;還是將文件數(shù)據(jù)劃分成若干子文件數(shù)據(jù),并將若干子文件數(shù)據(jù)均勻分布并存儲(chǔ)在所有磁盤(pán)上,均可使一文件數(shù)據(jù)存儲(chǔ)在不同的磁盤(pán)上,大大降低用戶(hù)訪問(wèn)同一個(gè)磁盤(pán)上文件數(shù)據(jù)的概率。由于文件數(shù)據(jù)分別存儲(chǔ)在不同磁盤(pán)上,對(duì)文件數(shù)據(jù)進(jìn)行訪問(wèn)時(shí)會(huì)使用不同的磁盤(pán),從而實(shí)現(xiàn)在大并發(fā)訪問(wèn)磁盤(pán)時(shí),訪問(wèn)量是分配到不同的磁盤(pán)上,這樣避免了單塊磁盤(pán)IO短板對(duì)整體性能的影響。
可以理解地,在基于DAS架構(gòu)存儲(chǔ)服務(wù)器啟動(dòng)時(shí),其主機(jī)操作系統(tǒng)啟動(dòng),相應(yīng)地,與主機(jī)操作系統(tǒng)建立內(nèi)存映射關(guān)系的虛擬文件系統(tǒng)也啟動(dòng),即任務(wù)管理子系統(tǒng)11和緩存子系統(tǒng)12、存儲(chǔ)子系統(tǒng)13和目錄子系統(tǒng)14同時(shí)啟動(dòng)。其中,目錄子系統(tǒng)14啟動(dòng)時(shí)加載主機(jī)操作系統(tǒng)的文件數(shù)據(jù)對(duì)應(yīng)的文件目錄信息,采用紅黑樹(shù)數(shù)據(jù)結(jié)構(gòu)管理文件目錄信息,該文件目錄信息為內(nèi)存映射文件,在目錄子系統(tǒng)14修改內(nèi)存的文件目錄信息時(shí),主機(jī)操作系統(tǒng)上的文件目錄信息也會(huì)同步更新。任務(wù)管理子系統(tǒng)11啟動(dòng)時(shí)完成數(shù)據(jù)結(jié)構(gòu)的初始化,用于接收來(lái)自請(qǐng)求終端的文件操作任務(wù)并根據(jù)任務(wù)類(lèi)型將文件操作任務(wù)分別發(fā)送給緩存子系統(tǒng)12或目錄子系統(tǒng)14。緩存子系統(tǒng)12啟動(dòng)時(shí)可先向存儲(chǔ)子系統(tǒng)13申請(qǐng)?jiān)谝淮髩K內(nèi)存作為緩存空間,并將內(nèi)存劃分成多個(gè)緩存頁(yè),建立數(shù)據(jù)結(jié)構(gòu)管理緩存空間上的所有緩存頁(yè)的緩存頁(yè)狀態(tài)??梢岳斫獾?,在緩存子系統(tǒng)12啟動(dòng)時(shí),緩存空間上所有的緩存頁(yè)均處于空閑狀態(tài)。存儲(chǔ)子系統(tǒng)13啟動(dòng)時(shí)從存儲(chǔ)服務(wù)器上獲取可用來(lái)存儲(chǔ)文件數(shù)據(jù)的磁盤(pán)或磁盤(pán)陣列,在獲取到磁盤(pán)或磁盤(pán)陣列時(shí),對(duì)每一磁盤(pán)進(jìn)行編號(hào),為每一磁盤(pán)創(chuàng)建一磁盤(pán)工作線程,磁盤(pán)工作線程用于將自己所屬的磁盤(pán)作為一個(gè)大文件進(jìn)行操作(即將磁盤(pán)或磁盤(pán)陣列作為一個(gè)大文件,磁盤(pán)工作線程操作時(shí)直接讀寫(xiě)磁盤(pán),而無(wú)需在磁盤(pán)上創(chuàng)建文件),并將大文件依據(jù)磁盤(pán)空間大小劃分為存儲(chǔ)段、存儲(chǔ)塊和存儲(chǔ)頁(yè)三級(jí)存儲(chǔ)結(jié)構(gòu),建立數(shù)據(jù)結(jié)構(gòu)管理存儲(chǔ)段、存儲(chǔ)塊和存儲(chǔ)頁(yè)的狀態(tài)信息。存儲(chǔ)子系統(tǒng)13啟動(dòng)時(shí)還創(chuàng)建任務(wù)鏈表對(duì)應(yīng)的工作線程,負(fù)責(zé)接收文件操作任務(wù)并將文件操作任務(wù)分配給各磁盤(pán)工作線程,并將執(zhí)行文件操作任務(wù)的結(jié)果返回。
本實(shí)施例提供一種基于DAS架構(gòu)存儲(chǔ)服務(wù)器的虛擬文件系統(tǒng),用于實(shí)現(xiàn)對(duì)存儲(chǔ)在存儲(chǔ)子系統(tǒng)13中的文件數(shù)據(jù)進(jìn)行訪問(wèn)(包括讀寫(xiě)操作),即用于根據(jù)任務(wù)類(lèi)型為讀寫(xiě)文件任務(wù)的文件操作任務(wù)獲取待讀取文件數(shù)據(jù)或?qū)⒋龑?xiě)入文件數(shù)據(jù)存儲(chǔ)在存儲(chǔ)子系統(tǒng)13。具體地,該基于DAS架構(gòu)存儲(chǔ)服務(wù)器的虛擬文件系統(tǒng)包括:
任務(wù)管理子系統(tǒng)11,用于接收來(lái)自請(qǐng)求終端的文件操作任務(wù),在文件操作任務(wù)的任務(wù)類(lèi)型為讀寫(xiě)文件任務(wù)時(shí),將文件操作任務(wù)發(fā)送給緩存子系統(tǒng)12。即任務(wù)管理子系統(tǒng)11在接收到文件操作任務(wù)時(shí),需根據(jù)文件操作任務(wù)對(duì)應(yīng)的任務(wù)數(shù)據(jù)塊確定文件操作任務(wù)的任務(wù)類(lèi)型。具體地,文件操作任務(wù)的任務(wù)類(lèi)型包括讀寫(xiě)文件任務(wù)和管理文件任務(wù);其中,讀寫(xiě)文件任務(wù)包括讀文件任務(wù)和寫(xiě)文件任務(wù);管理文件任務(wù)包括創(chuàng)建文件任務(wù)、刪除文件任務(wù)、修改文件任務(wù)和查找文件任務(wù)。
緩存子系統(tǒng)12,用于接收文件操作任務(wù);在文件操作任務(wù)的任務(wù)類(lèi)型為讀文件任務(wù)時(shí),從緩存空間中獲取與文件操作任務(wù)相對(duì)應(yīng)的待讀取文件數(shù)據(jù),并將待讀取文件數(shù)據(jù)發(fā)送給任務(wù)管理子系統(tǒng)11;或者,在文件操作任務(wù)的任務(wù)類(lèi)型為寫(xiě)文件任務(wù)時(shí),將文件操作任務(wù)對(duì)應(yīng)的待寫(xiě)入文件數(shù)據(jù)寫(xiě)入緩存空間??梢岳斫獾?,在文件操作任務(wù)的任務(wù)類(lèi)型為寫(xiě)文件任務(wù)時(shí),文件操作任務(wù)包含待寫(xiě)入文件數(shù)據(jù),將待寫(xiě)入文件數(shù)據(jù)寫(xiě)入緩存空間并緩存,以使緩存子系統(tǒng)12接收到下一任務(wù)類(lèi)型為讀文件任務(wù)時(shí),可從緩存空間獲取的相應(yīng)待讀取文件數(shù)據(jù),并發(fā)送給任務(wù)管理子系統(tǒng)11。
任務(wù)管理子系統(tǒng)11,用于接收待讀取文件數(shù)據(jù),并將待讀取文件文件數(shù)據(jù)發(fā)送給請(qǐng)求終端,以使請(qǐng)求終端獲取與文件操作任務(wù)相應(yīng)的待讀取文件數(shù)據(jù)。
在該具體實(shí)施方式中,任務(wù)管理子系統(tǒng)11在接收任務(wù)類(lèi)型為讀寫(xiě)文件任務(wù)的文件操作任務(wù)時(shí),將該文件操作任務(wù)發(fā)送給緩存子系統(tǒng)12;緩存子系統(tǒng)12在文件操作任務(wù)的任務(wù)類(lèi)型為讀文件任務(wù)時(shí),從緩存空間獲取與文件操作任務(wù)相對(duì)應(yīng)的待讀取文件數(shù)據(jù)并發(fā)送給任務(wù)管理子系統(tǒng)11;在文件操作任務(wù)的任務(wù)類(lèi)型為寫(xiě)文件任務(wù)時(shí),將與文件操作任務(wù)相對(duì)應(yīng)的待寫(xiě)入文件數(shù)據(jù)寫(xiě)入緩存空間。該虛擬文件系統(tǒng)中設(shè)置緩存子系統(tǒng)12對(duì)文件操作任務(wù)進(jìn)行處理,可屏蔽對(duì)磁盤(pán)或磁盤(pán)陣列的重復(fù)讀取,以降低文件操作任務(wù)對(duì)磁盤(pán)或磁盤(pán)陣列的讀寫(xiě)壓力,減少磁盤(pán)或磁盤(pán)陣列的IO支出,以保證磁盤(pán)或磁盤(pán)陣列的IO性能。
進(jìn)一步地,基于DAS架構(gòu)存儲(chǔ)服務(wù)器的虛擬文件系統(tǒng),在對(duì)任務(wù)類(lèi)型為讀文件任務(wù)的文件操作任務(wù)進(jìn)行處理時(shí),可屏蔽對(duì)同一待讀取文件數(shù)據(jù)的重復(fù)讀取。
具體地,緩存子系統(tǒng)12,用于在接收到文件操作任務(wù)的任務(wù)類(lèi)型為讀文件任務(wù)時(shí),判斷緩存空間中是否存在與文件操作任務(wù)相對(duì)應(yīng)的待讀取文件數(shù)據(jù)。若緩存空間中存在與文件操作任務(wù)相對(duì)應(yīng)的待讀取文件數(shù)據(jù),則更新緩存空間內(nèi)的文件數(shù)據(jù),并將待讀取文件數(shù)據(jù)發(fā)送給任務(wù)管理子系統(tǒng)11。若緩存空間不存在與文件操作任務(wù)相對(duì)應(yīng)的待讀取文件數(shù)據(jù),則將文件操作任務(wù)發(fā)送給存儲(chǔ)子系統(tǒng)13。
存儲(chǔ)子系統(tǒng)13,用于接收文件操作任務(wù),獲取與文件操作任務(wù)相對(duì)應(yīng)的待讀取文件數(shù)據(jù),并將待讀取文件數(shù)據(jù)發(fā)送給緩存子系統(tǒng)12。
緩存子系統(tǒng)12,用于接收來(lái)自存儲(chǔ)子系統(tǒng)13的待讀取文件數(shù)據(jù),將待讀取文件數(shù)據(jù)添加到緩存空間內(nèi),更新緩存空間內(nèi)的文件數(shù)據(jù);并將待讀取文件數(shù)據(jù)發(fā)送給任務(wù)管理子系統(tǒng)11。
緩存子系統(tǒng)12基于文件操作任務(wù)讀取待讀取文件數(shù)據(jù)包括隨機(jī)讀取和順序讀取兩種情形。在隨機(jī)讀取時(shí),需指明待讀取文件數(shù)據(jù)的起始位置和文件大小,計(jì)算起始位置處于緩存空間的具體緩存頁(yè),從具體緩存頁(yè)開(kāi)始查找緩存空間是否存在與文件操作任務(wù)相對(duì)應(yīng)的待讀取文件數(shù)據(jù),若緩存空間中存在相應(yīng)的待讀取文件數(shù)據(jù),則更新緩存空間緩存的文件數(shù)據(jù),以防止待讀取文件數(shù)據(jù)被緩存子系統(tǒng)12預(yù)設(shè)的淘汰算法淘汰,并將待讀取文件數(shù)據(jù)發(fā)送給任務(wù)管理子系統(tǒng)11;若緩存空間中不存在相應(yīng)的待讀取文件數(shù)據(jù),則將文件操作任務(wù)發(fā)送給存儲(chǔ)子系統(tǒng)13,由存儲(chǔ)子系統(tǒng)13讀取待讀取文件數(shù)據(jù)。在順序讀取時(shí),可指定待讀取文件數(shù)據(jù)的起始位置,也可以采用默認(rèn)的起始位置,并根據(jù)起始位置及文件大小計(jì)算起始位置在緩存空間的具體緩存頁(yè),從具體緩存頁(yè)開(kāi)始查找緩存空間是否存在與文件操作任務(wù)相對(duì)應(yīng)的待讀取文件數(shù)據(jù),若找到則將待讀取文件數(shù)據(jù)復(fù)制返回給任務(wù)管理子系統(tǒng)11;若沒(méi)有找到則提交到存儲(chǔ)子系統(tǒng)13,由存儲(chǔ)子系統(tǒng)13完成讀操作。
可以理解地,在緩存子系統(tǒng)12接收任務(wù)類(lèi)型為讀文件任務(wù)的文件操作任務(wù)時(shí),先從緩存空間查找是否存在與文件操作任務(wù)相對(duì)應(yīng)的待讀取文件數(shù)據(jù),在緩存空間存在待讀取文件數(shù)據(jù)時(shí),將待讀取文件數(shù)據(jù)發(fā)送給任務(wù)管理子系統(tǒng)11,以完成該文件操作任務(wù),無(wú)需將文件操作任務(wù)發(fā)送給存儲(chǔ)子系統(tǒng)13,從屏蔽對(duì)磁盤(pán)或磁盤(pán)陣列中相同的待讀取文件數(shù)據(jù)的重復(fù)讀取,導(dǎo)致磁盤(pán)或磁盤(pán)陣列緊張,影響磁盤(pán)磁盤(pán)陣列的IO性能。由于待讀取文件數(shù)據(jù)存儲(chǔ)在至少一個(gè)存儲(chǔ)頁(yè)中,或者待讀取文件數(shù)據(jù)劃分成若干子文件數(shù)據(jù)存儲(chǔ)在不同的磁盤(pán)上,在存儲(chǔ)子系統(tǒng)13基于文件操作任務(wù)訪問(wèn)磁盤(pán)或磁盤(pán)陣列時(shí),會(huì)將文件操作任務(wù)分配到不同的磁盤(pán)或磁盤(pán)陣列上,以達(dá)到壓力均分,以降低磁盤(pán)或磁盤(pán)陣列的IO壓力。在從緩存子系統(tǒng)12中直接獲取待讀取文件數(shù)據(jù)或接收來(lái)自存儲(chǔ)子系統(tǒng)13的待讀取文件數(shù)據(jù)時(shí),均需更新緩存空間的文件數(shù)據(jù),以避免待讀取文件數(shù)據(jù)被緩存子系統(tǒng)12預(yù)設(shè)的淘汰算法淘汰,無(wú)法實(shí)現(xiàn)在緩存子系統(tǒng)12中屏蔽對(duì)相同的待讀取文件數(shù)據(jù)的文件操作任務(wù)重復(fù)讀取。
在一具體實(shí)施方式中,基于DAS架構(gòu)存儲(chǔ)服務(wù)器的虛擬文件系統(tǒng),在實(shí)現(xiàn)對(duì)任務(wù)類(lèi)型為寫(xiě)文件任務(wù)的文件操作任務(wù)進(jìn)行處理時(shí),以屏蔽后續(xù)對(duì)該文件操作任務(wù)所包含的待寫(xiě)入文件數(shù)據(jù)的重復(fù)讀取。
具體地,緩存子系統(tǒng)12,用于在接收到文件操作任務(wù)的任務(wù)類(lèi)型為寫(xiě)文件任務(wù)時(shí),文件操作任務(wù)包括待寫(xiě)入文件數(shù)據(jù);將待寫(xiě)入文件數(shù)據(jù)添加到緩存空間內(nèi),更新緩存空間的文件數(shù)據(jù);并將文件操作任務(wù)發(fā)送給存儲(chǔ)子系統(tǒng)13??梢岳斫獾兀恳蝗蝿?wù)類(lèi)型為寫(xiě)文件任務(wù)的文件操作任務(wù)均包括待寫(xiě)入文件數(shù)據(jù),緩存子系統(tǒng)12接收到該文件操作任務(wù)時(shí),需將文件操作任務(wù)對(duì)應(yīng)的待寫(xiě)入文件數(shù)據(jù)寫(xiě)入緩存空間,形成緩存空間的文件數(shù)據(jù),使得緩存子系統(tǒng)12在后續(xù)接收到任務(wù)類(lèi)型為讀文件數(shù)據(jù)的文件操作任務(wù)時(shí),可從緩存空間中將新寫(xiě)入緩存空間的文件數(shù)據(jù)作為相應(yīng)的待讀取文件數(shù)據(jù)發(fā)送給任務(wù)管理子系統(tǒng)11,以屏蔽對(duì)磁盤(pán)或磁盤(pán)陣列中相同的待讀取文件數(shù)據(jù)的重復(fù)讀取,避免磁盤(pán)或磁盤(pán)陣列緊張,從而影響磁盤(pán)或磁盤(pán)陣列的IO性能。
存儲(chǔ)子系統(tǒng)13,用于接收文件操作任務(wù),并存儲(chǔ)待寫(xiě)入文件數(shù)據(jù)。具體地,存儲(chǔ)子系統(tǒng)13將磁盤(pán)或磁盤(pán)陣列依空間大小劃分成存儲(chǔ)段、存儲(chǔ)塊和存儲(chǔ)頁(yè)三級(jí)存儲(chǔ)結(jié)構(gòu),并將文件數(shù)據(jù)存儲(chǔ)在至少一個(gè)存儲(chǔ)頁(yè)上。或者,存儲(chǔ)子系統(tǒng)13將存儲(chǔ)在存儲(chǔ)子系統(tǒng)13中的文件數(shù)據(jù)劃分成若干子文件數(shù)據(jù),并將若干子文件數(shù)據(jù)均勻分布在磁盤(pán)上??梢岳斫獾兀瑢⒋龑?xiě)入文件數(shù)據(jù)存儲(chǔ)在至少一個(gè)存儲(chǔ)頁(yè)中,或者將待寫(xiě)入文件數(shù)據(jù)劃分成若干子文件數(shù)據(jù)存儲(chǔ)在不同的磁盤(pán)上,對(duì)文件數(shù)據(jù)進(jìn)行訪問(wèn)(包括讀寫(xiě)文件任務(wù))時(shí)會(huì)使用不同的磁盤(pán),從而實(shí)現(xiàn)在大并發(fā)訪問(wèn)磁盤(pán)時(shí),訪問(wèn)量是分配到不同的磁盤(pán)上,使得每一磁盤(pán)的IO壓力降低,這樣避免了單塊磁盤(pán)IO短板對(duì)整體性能的影響。
緩存子系統(tǒng)12基于文件操作任務(wù)寫(xiě)入待寫(xiě)入文件數(shù)據(jù)包括隨機(jī)寫(xiě)入和順序?qū)懭雰煞N情況。在順序?qū)懭霑r(shí),無(wú)需指定將待寫(xiě)入文件數(shù)據(jù)寫(xiě)入緩存空間的寫(xiě)入位置,緩存子系統(tǒng)12根據(jù)待寫(xiě)入文件數(shù)據(jù)的文件大小,將待寫(xiě)入文件數(shù)據(jù)寫(xiě)入當(dāng)前緩存空間的文件數(shù)據(jù)的尾部,并將待寫(xiě)入文件數(shù)據(jù)提交到存儲(chǔ)子系統(tǒng)13,由存儲(chǔ)子系統(tǒng)13將待寫(xiě)入文件數(shù)據(jù)寫(xiě)入具體磁盤(pán)上,完成寫(xiě)操作。在隨機(jī)寫(xiě)入的情況下,需指定待寫(xiě)入文件數(shù)據(jù)在緩存空間的寫(xiě)入位置,緩存子系統(tǒng)12根據(jù)起始位置,確定具體緩存頁(yè),并將待寫(xiě)入文件數(shù)據(jù)寫(xiě)入具體緩存頁(yè)中。同時(shí),緩存子系統(tǒng)12將任務(wù)類(lèi)型為寫(xiě)文件任務(wù)的文件操作任務(wù)發(fā)送給存儲(chǔ)子系統(tǒng)13,由存儲(chǔ)子系統(tǒng)13將待寫(xiě)入文件數(shù)據(jù)寫(xiě)入具體磁盤(pán)上,完成寫(xiě)操作。
本實(shí)施例提供一種基于DAS架構(gòu)存儲(chǔ)服務(wù)器的虛擬文件系統(tǒng),用于實(shí)現(xiàn)任務(wù)類(lèi)型為文件管理任務(wù)的文件操作任務(wù)進(jìn)行處理,該文件管理任務(wù)包括創(chuàng)建文件任務(wù)、刪除文件任務(wù)、修改文件任務(wù)或查找文件任務(wù)。具體地,該基于DAS架構(gòu)存儲(chǔ)服務(wù)器的虛擬文件系統(tǒng)包括:
任務(wù)管理子系統(tǒng)11,用于在文件操作任務(wù)的任務(wù)類(lèi)型為管理文件任務(wù)時(shí),將文件操作任務(wù)發(fā)送給目錄子系統(tǒng)14。其中,管理文件任務(wù)包括創(chuàng)建文件任務(wù)、刪除文件任務(wù)、修改文件任務(wù)或查找文件任務(wù)。
目錄子系統(tǒng)14,用于接收并執(zhí)行文件操作任務(wù)。本實(shí)施例中采用紅黑樹(shù)數(shù)據(jù)結(jié)構(gòu)管理存儲(chǔ)子系統(tǒng)13中的每一文件數(shù)據(jù)對(duì)應(yīng)的文件目錄信息,目錄子系統(tǒng)14接收到任務(wù)類(lèi)型為管理文件任務(wù)的文件操作任務(wù)時(shí),可根據(jù)文件操作任務(wù)分別實(shí)現(xiàn)對(duì)文件的創(chuàng)建、刪除、修改或查找功能。
進(jìn)一步地,在文件操作任務(wù)的任務(wù)類(lèi)型為創(chuàng)建文件任務(wù)時(shí),該基于DAS架構(gòu)存儲(chǔ)服務(wù)器的虛擬文件系統(tǒng)還包括:
目錄子系統(tǒng)14,用于在文件操作任務(wù)的任務(wù)類(lèi)型為創(chuàng)建文件任務(wù)時(shí),判斷文件操作任務(wù)所要?jiǎng)?chuàng)建的文件的文件大小是否已確定??梢岳斫獾兀夸涀酉到y(tǒng)14在接收到任務(wù)類(lèi)型為創(chuàng)建文件任務(wù)的文件操作任務(wù)時(shí),根據(jù)文件操作任務(wù)對(duì)應(yīng)的任務(wù)數(shù)據(jù)塊確定該文件操作任務(wù)所要?jiǎng)?chuàng)建的文件的文件大小是否已確定。
目錄子系統(tǒng)14,用于在文件大小已確定時(shí),通過(guò)任務(wù)管理子系統(tǒng)11向存儲(chǔ)子系統(tǒng)13發(fā)送申請(qǐng)緩存空間請(qǐng)求,接收存儲(chǔ)子系統(tǒng)13的分配緩存空間;基于文件操作任務(wù)生成一創(chuàng)建文件目錄信息,將創(chuàng)建文件目錄信息與分配緩存空間相關(guān)聯(lián),并將創(chuàng)建文件目錄信息添加到預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)中。在VOD點(diǎn)播視頻等場(chǎng)景下,文件操作任務(wù)所要?jiǎng)?chuàng)建文件的文件大小已確定。具體地,目錄子系統(tǒng)14需先通過(guò)任務(wù)管理子系統(tǒng)11向存儲(chǔ)子系統(tǒng)13發(fā)出申請(qǐng)X大小空間的緩存空間請(qǐng)求,以調(diào)用存儲(chǔ)子系統(tǒng)13接口。存儲(chǔ)子系統(tǒng)13接收到緩存空間請(qǐng)求后,計(jì)算X大小空間對(duì)應(yīng)的存儲(chǔ)段的個(gè)數(shù)Y,并將Y個(gè)存儲(chǔ)段均分在所有磁盤(pán)上,以形成分配緩存空間。存儲(chǔ)子系統(tǒng)13將分配好的分配緩存空間對(duì)應(yīng)的段數(shù)據(jù)結(jié)構(gòu)返回給目錄子系統(tǒng)14,段數(shù)據(jù)結(jié)構(gòu)里記錄存儲(chǔ)段所包含的存儲(chǔ)塊信息。目錄子系統(tǒng)14基于文件操作任務(wù)生成一創(chuàng)建文件目錄信息,并將該創(chuàng)建文件目錄信息與接收到分配緩存空間對(duì)應(yīng)的段數(shù)據(jù)結(jié)構(gòu)相關(guān)聯(lián)。目錄子系統(tǒng)14將創(chuàng)建文件目錄信息添加到紅黑樹(shù)數(shù)據(jù)結(jié)構(gòu)中,完成一個(gè)文件大小已確定的文件的創(chuàng)建??梢岳斫獾兀瑸榱朔值酶?xì),還可將X大小空間按存儲(chǔ)塊為單位進(jìn)行劃分,計(jì)算存儲(chǔ)塊的數(shù)量,并將所有存儲(chǔ)塊均分在所有磁盤(pán)上,以形成分配緩存空間;相應(yīng)地,存儲(chǔ)子系統(tǒng)13向目錄子系統(tǒng)14返回塊數(shù)據(jù)結(jié)構(gòu),塊數(shù)據(jù)結(jié)構(gòu)里記錄存儲(chǔ)塊所包含的存儲(chǔ)頁(yè)信息。
目錄子系統(tǒng)14,用于在文件大小未確定時(shí),基于文件操作任務(wù)生成一創(chuàng)建文件目錄信息,并將創(chuàng)建文件目錄信息添加到預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)中。在文件操作任務(wù)所要?jiǎng)?chuàng)建文件的文件大小未確定的情況下,只需基于文件操作任務(wù)生成一創(chuàng)建文件目錄信息,再將創(chuàng)建文件目錄信息添加到紅黑樹(shù)數(shù)據(jù)結(jié)構(gòu)中,即可完成一個(gè)文件大小未確定的文件的創(chuàng)建,在將待寫(xiě)入文件數(shù)據(jù)寫(xiě)入文件大小未確定的文件時(shí)再臨時(shí)申請(qǐng)緩存空間,每次臨時(shí)申請(qǐng)可申請(qǐng)一個(gè)存儲(chǔ)段的緩存空間,將待寫(xiě)入文件數(shù)據(jù)寫(xiě)入申請(qǐng)到的緩存空間,并釋放緩存空間(存儲(chǔ)段)沒(méi)有使用的存儲(chǔ)塊。
本實(shí)施例所提供的基于DAS架構(gòu)存儲(chǔ)服務(wù)器的虛擬文件系統(tǒng),通過(guò)建立存儲(chǔ)子系統(tǒng)13,使多個(gè)請(qǐng)求終端訪問(wèn)相同的文件數(shù)據(jù)時(shí),實(shí)際訪問(wèn)的是緩存空間中的文件數(shù)據(jù),不對(duì)磁盤(pán)或磁盤(pán)陣列造成讀寫(xiě)壓力,減少磁盤(pán)或磁盤(pán)陣列的IO支出。另外,存儲(chǔ)子系統(tǒng)13將磁盤(pán)或磁盤(pán)陣列依空間大小劃分成存儲(chǔ)段、存儲(chǔ)塊和存儲(chǔ)頁(yè)三級(jí)存儲(chǔ)結(jié)構(gòu),并將文件數(shù)據(jù)存儲(chǔ)在至少一個(gè)存儲(chǔ)頁(yè)上;或者,存儲(chǔ)子系統(tǒng)13將存儲(chǔ)在存儲(chǔ)子系統(tǒng)13中的文件數(shù)據(jù)劃分成若干子文件數(shù)據(jù),并將若干子文件數(shù)據(jù)均勻分布在所有磁盤(pán)上。上述兩種存儲(chǔ)方式,均可使得一文件數(shù)據(jù)存儲(chǔ)在不同的磁盤(pán)上,降低用戶(hù)訪問(wèn)同一磁盤(pán)上的文件數(shù)據(jù)的概率,在大并發(fā)訪問(wèn)磁盤(pán)時(shí),將訪問(wèn)量分配給所有磁盤(pán),避免單塊磁盤(pán)IO短板對(duì)整個(gè)性能造成影響。
實(shí)施例2
本實(shí)施例提供一種基于DAS架構(gòu)存儲(chǔ)服務(wù)器的虛擬文件系統(tǒng)的文件管理方法,用于實(shí)現(xiàn)對(duì)存儲(chǔ)在存儲(chǔ)子系統(tǒng)13中的文件數(shù)據(jù)進(jìn)行訪問(wèn)(包括讀寫(xiě)操作),即用于根據(jù)任務(wù)類(lèi)型為讀寫(xiě)文件任務(wù)的文件操作任務(wù)獲取待讀取文件數(shù)據(jù)或?qū)⒋龑?xiě)入文件數(shù)據(jù)存儲(chǔ)在存儲(chǔ)子系統(tǒng)13。具體地,該基于DAS架構(gòu)存儲(chǔ)服務(wù)器的虛擬文件系統(tǒng)的文件管理方法包括:
S10:任務(wù)管理子系統(tǒng)11接收來(lái)自請(qǐng)求終端的文件操作任務(wù),并確定文件操作任務(wù)的任務(wù)類(lèi)型。具體地,文件操作任務(wù)的任務(wù)類(lèi)型包括讀寫(xiě)文件任務(wù)和管理文件任務(wù);其中,讀寫(xiě)文件任務(wù)包括讀文件任務(wù)和寫(xiě)文件任務(wù);管理文件任務(wù)包括創(chuàng)建文件任務(wù)、刪除文件任務(wù)、修改文件任務(wù)和查找文件任務(wù)。
S20:任務(wù)管理子系統(tǒng)11在文件操作任務(wù)的任務(wù)類(lèi)型為讀寫(xiě)文件任務(wù)時(shí),將文件操作任務(wù)發(fā)送給緩存子系統(tǒng)12。即任務(wù)管理子系統(tǒng)11在接收到文件操作任務(wù)時(shí),需根據(jù)文件操作任務(wù)對(duì)應(yīng)的任務(wù)數(shù)據(jù)塊確定文件操作任務(wù)的任務(wù)類(lèi)型。
S30:緩存子系統(tǒng)12接收文件操作任務(wù);在文件操作任務(wù)的任務(wù)類(lèi)型為讀文件任務(wù)時(shí),從緩存空間中獲取與文件操作任務(wù)相對(duì)應(yīng)的待讀取文件數(shù)據(jù),并將待讀取文件數(shù)據(jù)發(fā)送給任務(wù)管理子系統(tǒng)11;或者,在文件操作任務(wù)的任務(wù)類(lèi)型為寫(xiě)文件任務(wù)時(shí),將文件操作任務(wù)對(duì)應(yīng)的待寫(xiě)入文件數(shù)據(jù)寫(xiě)入緩存空間??梢岳斫獾?,在文件操作任務(wù)的任務(wù)類(lèi)型為寫(xiě)文件任務(wù)時(shí),文件操作任務(wù)包含待寫(xiě)入文件數(shù)據(jù),將待寫(xiě)入文件數(shù)據(jù)寫(xiě)入緩存空間并緩存,以使緩存子系統(tǒng)12接收到下一任務(wù)類(lèi)型為讀文件任務(wù)時(shí),可從緩存空間獲取的相應(yīng)待讀取文件數(shù)據(jù),并發(fā)送給任務(wù)管理子系統(tǒng)11。
S40:任務(wù)管理子系統(tǒng)11接收待讀取文件數(shù)據(jù),并將待讀取文件文件數(shù)據(jù)發(fā)送給請(qǐng)求終端,以使請(qǐng)求終端獲取與文件操作任務(wù)相應(yīng)的待讀取文件數(shù)據(jù)。
S50:任務(wù)管理子系統(tǒng)11在文件操作任務(wù)的任務(wù)類(lèi)型為管理文件任務(wù)時(shí),將文件操作任務(wù)發(fā)送給目錄子系統(tǒng)14。其中,管理文件任務(wù)包括創(chuàng)建文件任務(wù)、刪除文件任務(wù)、修改文件任務(wù)或查找文件任務(wù)。
S60:目錄子系統(tǒng)14接收并執(zhí)行文件操作任務(wù)。本實(shí)施例中采用紅黑樹(shù)數(shù)據(jù)結(jié)構(gòu)管理存儲(chǔ)子系統(tǒng)13中的每一文件數(shù)據(jù)對(duì)應(yīng)的文件目錄信息,目錄子系統(tǒng)14接收到任務(wù)類(lèi)型為管理文件任務(wù)的文件操作任務(wù)時(shí),可根據(jù)文件操作任務(wù)分別實(shí)現(xiàn)對(duì)文件的創(chuàng)建、刪除、修改或查找功能。
在該具體實(shí)施方式中,任務(wù)管理子系統(tǒng)11在接收任務(wù)類(lèi)型為讀寫(xiě)文件任務(wù)的文件操作任務(wù)時(shí),將該文件操作任務(wù)發(fā)送給緩存子系統(tǒng)12;緩存子系統(tǒng)12在文件操作任務(wù)的任務(wù)類(lèi)型為讀文件任務(wù)時(shí),從緩存空間獲取與文件操作任務(wù)相對(duì)應(yīng)的待讀取文件數(shù)據(jù)并發(fā)送給任務(wù)管理子系統(tǒng)11;在文件操作任務(wù)的任務(wù)類(lèi)型為寫(xiě)文件任務(wù)時(shí),將與文件操作任務(wù)相對(duì)應(yīng)的待寫(xiě)入文件數(shù)據(jù)寫(xiě)入緩存空間。該虛擬文件系統(tǒng)中設(shè)置緩存子系統(tǒng)12對(duì)文件操作任務(wù)進(jìn)行處理,可屏蔽對(duì)磁盤(pán)或磁盤(pán)陣列的重復(fù)讀取,以降低文件操作任務(wù)對(duì)磁盤(pán)或磁盤(pán)陣列的讀寫(xiě)壓力,減少磁盤(pán)或磁盤(pán)陣列的IO支出,以保證磁盤(pán)或磁盤(pán)陣列的IO性能。
進(jìn)一步地,基于DAS架構(gòu)存儲(chǔ)服務(wù)器的虛擬文件系統(tǒng)的文件管理方法,在對(duì)任務(wù)類(lèi)型為讀文件任務(wù)的文件操作任務(wù)進(jìn)行處理時(shí),可屏蔽對(duì)同一待讀取文件數(shù)據(jù)的重復(fù)讀取,即步驟S20具體包括:
S21:緩存子系統(tǒng)12在接收到文件操作任務(wù)的任務(wù)類(lèi)型為讀文件任務(wù)時(shí),判斷緩存空間中是否存在與文件操作任務(wù)相對(duì)應(yīng)的待讀取文件數(shù)據(jù)。若緩存空間中存在與文件操作任務(wù)相對(duì)應(yīng)的待讀取文件數(shù)據(jù),則更新緩存空間內(nèi)的文件數(shù)據(jù),并將待讀取文件數(shù)據(jù)發(fā)送給任務(wù)管理子系統(tǒng)11。若緩存空間不存在與文件操作任務(wù)相對(duì)應(yīng)的待讀取文件數(shù)據(jù),則將文件操作任務(wù)發(fā)送給存儲(chǔ)子系統(tǒng)13。
S22:存儲(chǔ)子系統(tǒng)13接收文件操作任務(wù),獲取與文件操作任務(wù)相對(duì)應(yīng)的待讀取文件數(shù)據(jù),并將待讀取文件數(shù)據(jù)發(fā)送給緩存子系統(tǒng)12。
S23:緩存子系統(tǒng)12接收來(lái)自存儲(chǔ)子系統(tǒng)13的待讀取文件數(shù)據(jù),將待讀取文件數(shù)據(jù)添加到緩存空間內(nèi),更新緩存空間內(nèi)的文件數(shù)據(jù);并將待讀取文件數(shù)據(jù)發(fā)送給任務(wù)管理子系統(tǒng)11。
緩存子系統(tǒng)12基于文件操作任務(wù)讀取待讀取文件數(shù)據(jù)包括隨機(jī)讀取和順序讀取兩種情形。在隨機(jī)讀取時(shí),需指明待讀取文件數(shù)據(jù)的起始位置和文件大小,計(jì)算起始位置處于緩存空間的具體緩存頁(yè),從具體緩存頁(yè)開(kāi)始查找緩存空間是否存在與文件操作任務(wù)相對(duì)應(yīng)的待讀取文件數(shù)據(jù),若緩存空間中存在相應(yīng)的待讀取文件數(shù)據(jù),則更新緩存空間緩存的文件數(shù)據(jù),以防止待讀取文件數(shù)據(jù)被緩存子系統(tǒng)12預(yù)設(shè)的淘汰算法淘汰,并將待讀取文件數(shù)據(jù)發(fā)送給任務(wù)管理子系統(tǒng)11;若緩存空間中不存在相應(yīng)的待讀取文件數(shù)據(jù),則將文件操作任務(wù)發(fā)送給存儲(chǔ)子系統(tǒng)13,由存儲(chǔ)子系統(tǒng)13讀取待讀取文件數(shù)據(jù)。在順序讀取時(shí),可指定待讀取文件數(shù)據(jù)的起始位置,也可以采用默認(rèn)的起始位置,并根據(jù)起始位置及文件大小計(jì)算起始位置在緩存空間的具體緩存頁(yè),從具體緩存頁(yè)開(kāi)始查找緩存空間是否存在與文件操作任務(wù)相對(duì)應(yīng)的待讀取文件數(shù)據(jù),若找到則將待讀取文件數(shù)據(jù)復(fù)制返回給任務(wù)管理子系統(tǒng)11;若沒(méi)有找到則提交到存儲(chǔ)子系統(tǒng)13,由存儲(chǔ)子系統(tǒng)13完成讀操作。
可以理解地,在緩存子系統(tǒng)12接收任務(wù)類(lèi)型為讀文件任務(wù)的文件操作任務(wù)時(shí),先從緩存空間查找是否存在與文件操作任務(wù)相對(duì)應(yīng)的待讀取文件數(shù)據(jù),在緩存空間存在待讀取文件數(shù)據(jù)時(shí),將待讀取文件數(shù)據(jù)發(fā)送給任務(wù)管理子系統(tǒng)11,以完成該文件操作任務(wù),無(wú)需將文件操作任務(wù)發(fā)送給存儲(chǔ)子系統(tǒng)13,從屏蔽對(duì)磁盤(pán)或磁盤(pán)陣列中相同的待讀取文件數(shù)據(jù)的重復(fù)讀取,導(dǎo)致磁盤(pán)或磁盤(pán)陣列緊張,影響磁盤(pán)磁盤(pán)陣列的IO性能。由于待讀取文件數(shù)據(jù)存儲(chǔ)在至少一個(gè)存儲(chǔ)頁(yè)中,或者待讀取文件數(shù)據(jù)劃分成若干子文件數(shù)據(jù)存儲(chǔ)在不同的磁盤(pán)上,在存儲(chǔ)子系統(tǒng)13基于文件操作任務(wù)訪問(wèn)磁盤(pán)或磁盤(pán)陣列時(shí),會(huì)將文件操作任務(wù)分配到不同的磁盤(pán)或磁盤(pán)陣列上,以達(dá)到壓力均分,以降低磁盤(pán)或磁盤(pán)陣列的IO壓力。在從緩存子系統(tǒng)12中直接獲取待讀取文件數(shù)據(jù)或接收來(lái)自存儲(chǔ)子系統(tǒng)13的待讀取文件數(shù)據(jù)時(shí),均需更新緩存空間的文件數(shù)據(jù),以避免待讀取文件數(shù)據(jù)被緩存子系統(tǒng)12預(yù)設(shè)的淘汰算法淘汰,無(wú)法實(shí)現(xiàn)在緩存子系統(tǒng)12中屏蔽對(duì)相同的待讀取文件數(shù)據(jù)的文件操作任務(wù)重復(fù)讀取。
在一具體實(shí)施方式中,基于DAS架構(gòu)存儲(chǔ)服務(wù)器的虛擬文件系統(tǒng)的文件管理方法,在實(shí)現(xiàn)對(duì)任務(wù)類(lèi)型為寫(xiě)文件任務(wù)的文件操作任務(wù)進(jìn)行處理時(shí),以屏蔽后續(xù)對(duì)該文件操作任務(wù)所包含的待寫(xiě)入文件數(shù)據(jù)的重復(fù)讀取,即步驟S20還包括:
S24:緩存子系統(tǒng)12在接收到文件操作任務(wù)的任務(wù)類(lèi)型為寫(xiě)文件任務(wù)時(shí),文件操作任務(wù)包括待寫(xiě)入文件數(shù)據(jù);將待寫(xiě)入文件數(shù)據(jù)添加到緩存空間內(nèi),更新緩存空間的文件數(shù)據(jù);并將文件操作任務(wù)發(fā)送給存儲(chǔ)子系統(tǒng)13??梢岳斫獾?,每一任務(wù)類(lèi)型為寫(xiě)文件任務(wù)的文件操作任務(wù)均包括待寫(xiě)入文件數(shù)據(jù),緩存子系統(tǒng)12接收到該文件操作任務(wù)時(shí),需將文件操作任務(wù)對(duì)應(yīng)的待寫(xiě)入文件數(shù)據(jù)寫(xiě)入緩存空間,形成緩存空間的文件數(shù)據(jù),使得緩存子系統(tǒng)12在后續(xù)接收到任務(wù)類(lèi)型為讀文件數(shù)據(jù)的文件操作任務(wù)時(shí),可從緩存空間中將新寫(xiě)入緩存空間的文件數(shù)據(jù)作為相應(yīng)的待讀取文件數(shù)據(jù)發(fā)送給任務(wù)管理子系統(tǒng)11,以屏蔽對(duì)磁盤(pán)或磁盤(pán)陣列中相同的待讀取文件數(shù)據(jù)的重復(fù)讀取,避免磁盤(pán)或磁盤(pán)陣列緊張,從而影響磁盤(pán)或磁盤(pán)陣列的IO性能。
S25:存儲(chǔ)子系統(tǒng)13接收文件操作任務(wù),并存儲(chǔ)待寫(xiě)入文件數(shù)據(jù)。具體地,存儲(chǔ)子系統(tǒng)13將磁盤(pán)或磁盤(pán)陣列依空間大小劃分成存儲(chǔ)段、存儲(chǔ)塊和存儲(chǔ)頁(yè)三級(jí)存儲(chǔ)結(jié)構(gòu),并將文件數(shù)據(jù)存儲(chǔ)在至少一個(gè)存儲(chǔ)頁(yè)上。或者,存儲(chǔ)子系統(tǒng)13將存儲(chǔ)在存儲(chǔ)子系統(tǒng)13中的文件數(shù)據(jù)劃分成若干子文件數(shù)據(jù),并將若干子文件數(shù)據(jù)均勻分布在磁盤(pán)上??梢岳斫獾兀瑢⒋龑?xiě)入文件數(shù)據(jù)存儲(chǔ)在至少一個(gè)存儲(chǔ)頁(yè)中,或者將待寫(xiě)入文件數(shù)據(jù)劃分成若干子文件數(shù)據(jù)存儲(chǔ)在不同的磁盤(pán)上,對(duì)文件數(shù)據(jù)進(jìn)行訪問(wèn)(包括讀寫(xiě)文件任務(wù))時(shí)會(huì)使用不同的磁盤(pán),從而實(shí)現(xiàn)在大并發(fā)訪問(wèn)磁盤(pán)時(shí),訪問(wèn)量是分配到不同的磁盤(pán)上,使得每一磁盤(pán)的IO壓力降低,這樣避免了單塊磁盤(pán)IO短板對(duì)整體性能的影響。
緩存子系統(tǒng)12基于文件操作任務(wù)寫(xiě)入待寫(xiě)入文件數(shù)據(jù)包括隨機(jī)寫(xiě)入和順序?qū)懭雰煞N情況。在順序?qū)懭霑r(shí),無(wú)需指定將待寫(xiě)入文件數(shù)據(jù)寫(xiě)入緩存空間的寫(xiě)入位置,緩存子系統(tǒng)12根據(jù)待寫(xiě)入文件數(shù)據(jù)的文件大小,將待寫(xiě)入文件數(shù)據(jù)寫(xiě)入當(dāng)前緩存空間的文件數(shù)據(jù)的尾部,并將待寫(xiě)入文件數(shù)據(jù)提交到存儲(chǔ)子系統(tǒng)13,由存儲(chǔ)子系統(tǒng)13將待寫(xiě)入文件數(shù)據(jù)寫(xiě)入具體磁盤(pán)上,完成寫(xiě)操作。在隨機(jī)寫(xiě)入的情況下,需指定待寫(xiě)入文件數(shù)據(jù)在緩存空間的寫(xiě)入位置,緩存子系統(tǒng)12根據(jù)起始位置,確定具體緩存頁(yè),并將待寫(xiě)入文件數(shù)據(jù)寫(xiě)入具體緩存頁(yè)中。同時(shí),緩存子系統(tǒng)12將任務(wù)類(lèi)型為寫(xiě)文件任務(wù)的文件操作任務(wù)發(fā)送給存儲(chǔ)子系統(tǒng)13,由存儲(chǔ)子系統(tǒng)13將待寫(xiě)入文件數(shù)據(jù)寫(xiě)入具體磁盤(pán)上,完成寫(xiě)操作。
本實(shí)施例提供一種基于DAS架構(gòu)存儲(chǔ)服務(wù)器的虛擬文件系統(tǒng)的文件管理方法,用于實(shí)現(xiàn)任務(wù)類(lèi)型為文件管理任務(wù)的文件操作任務(wù)進(jìn)行處理,該文件管理任務(wù)包括創(chuàng)建文件任務(wù)、刪除文件任務(wù)、修改文件任務(wù)或查找文件任務(wù)。
進(jìn)一步地,在文件操作任務(wù)的任務(wù)類(lèi)型為創(chuàng)建文件任務(wù)時(shí),該基于DAS架構(gòu)存儲(chǔ)服務(wù)器的虛擬文件系統(tǒng)的文件管理方法的步驟S60具體包括:
S61:目錄子系統(tǒng)14在文件操作任務(wù)的任務(wù)類(lèi)型為創(chuàng)建文件任務(wù)時(shí),判斷文件操作任務(wù)所要?jiǎng)?chuàng)建的文件的文件大小是否已確定。可以理解地,目錄子系統(tǒng)14在接收到任務(wù)類(lèi)型為創(chuàng)建文件任務(wù)的文件操作任務(wù)時(shí),根據(jù)文件操作任務(wù)對(duì)應(yīng)的任務(wù)數(shù)據(jù)塊確定該文件操作任務(wù)所要?jiǎng)?chuàng)建的文件的文件大小是否已確定。
S62:目錄子系統(tǒng)14在文件大小已確定時(shí),通過(guò)任務(wù)管理子系統(tǒng)11向存儲(chǔ)子系統(tǒng)13發(fā)送申請(qǐng)緩存空間請(qǐng)求,接收存儲(chǔ)子系統(tǒng)13的分配緩存空間;基于文件操作任務(wù)生成一創(chuàng)建文件目錄信息,將創(chuàng)建文件目錄信息與分配緩存空間相關(guān)聯(lián),并將創(chuàng)建文件目錄信息添加到預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)中。在VOD點(diǎn)播視頻等場(chǎng)景下,文件操作任務(wù)所要?jiǎng)?chuàng)建文件的文件大小已確定。具體地,目錄子系統(tǒng)14需先通過(guò)任務(wù)管理子系統(tǒng)11向存儲(chǔ)子系統(tǒng)13發(fā)出申請(qǐng)X大小空間的緩存空間請(qǐng)求,以調(diào)用存儲(chǔ)子系統(tǒng)13接口。存儲(chǔ)子系統(tǒng)13接收到緩存空間請(qǐng)求后,計(jì)算X大小空間對(duì)應(yīng)的存儲(chǔ)段的個(gè)數(shù)Y,并將Y個(gè)存儲(chǔ)段均分在所有磁盤(pán)上,以形成分配緩存空間。存儲(chǔ)子系統(tǒng)13將分配好的分配緩存空間對(duì)應(yīng)的段數(shù)據(jù)結(jié)構(gòu)返回給目錄子系統(tǒng)14,段數(shù)據(jù)結(jié)構(gòu)里記錄存儲(chǔ)段所包含的存儲(chǔ)塊信息。目錄子系統(tǒng)14基于文件操作任務(wù)生成一創(chuàng)建文件目錄信息,并將該創(chuàng)建文件目錄信息與接收到分配緩存空間對(duì)應(yīng)的段數(shù)據(jù)結(jié)構(gòu)相關(guān)聯(lián)。目錄子系統(tǒng)14將創(chuàng)建文件目錄信息添加到紅黑樹(shù)數(shù)據(jù)結(jié)構(gòu)中,完成一個(gè)文件大小已確定的文件的創(chuàng)建??梢岳斫獾兀瑸榱朔值酶?xì),還可將X大小空間按存儲(chǔ)塊為單位進(jìn)行劃分,計(jì)算存儲(chǔ)塊的數(shù)量,并將所有存儲(chǔ)塊均分在所有磁盤(pán)上,以形成分配緩存空間;相應(yīng)地,存儲(chǔ)子系統(tǒng)13向目錄子系統(tǒng)14返回塊數(shù)據(jù)結(jié)構(gòu),塊數(shù)據(jù)結(jié)構(gòu)里記錄存儲(chǔ)塊所包含的存儲(chǔ)頁(yè)信息。
S63:目錄子系統(tǒng)14在文件大小未確定時(shí),基于文件操作任務(wù)生成一創(chuàng)建文件目錄信息,并將創(chuàng)建文件目錄信息添加到預(yù)設(shè)數(shù)據(jù)結(jié)構(gòu)中。在文件操作任務(wù)所要?jiǎng)?chuàng)建文件的文件大小未確定的情況下,只需基于文件操作任務(wù)生成一創(chuàng)建文件目錄信息,再將創(chuàng)建文件目錄信息添加到紅黑樹(shù)數(shù)據(jù)結(jié)構(gòu)中,即可完成一個(gè)文件大小未確定的文件的創(chuàng)建,在將待寫(xiě)入文件數(shù)據(jù)寫(xiě)入文件大小未確定的文件時(shí)再臨時(shí)申請(qǐng)緩存空間,每次臨時(shí)申請(qǐng)可申請(qǐng)一個(gè)存儲(chǔ)段的緩存空間,將待寫(xiě)入文件數(shù)據(jù)寫(xiě)入申請(qǐng)到的緩存空間,并釋放緩存空間(存儲(chǔ)段)沒(méi)有使用的存儲(chǔ)塊。
本實(shí)施例所提供的基于DAS架構(gòu)存儲(chǔ)服務(wù)器的虛擬文件系統(tǒng)的文件管理方法,通過(guò)建立存儲(chǔ)子系統(tǒng)13,使多個(gè)請(qǐng)求終端訪問(wèn)相同的文件數(shù)據(jù)時(shí),實(shí)際訪問(wèn)的是緩存空間中的文件數(shù)據(jù),不對(duì)磁盤(pán)或磁盤(pán)陣列造成讀寫(xiě)壓力,減少磁盤(pán)或磁盤(pán)陣列的IO支出。另外,存儲(chǔ)子系統(tǒng)13將磁盤(pán)或磁盤(pán)陣列依空間大小劃分成存儲(chǔ)段、存儲(chǔ)塊和存儲(chǔ)頁(yè)三級(jí)存儲(chǔ)結(jié)構(gòu),并將文件數(shù)據(jù)存儲(chǔ)在至少一個(gè)存儲(chǔ)頁(yè)上;或者,存儲(chǔ)子系統(tǒng)13將存儲(chǔ)在存儲(chǔ)子系統(tǒng)13中的文件數(shù)據(jù)劃分成若干子文件數(shù)據(jù),并將若干子文件數(shù)據(jù)均勻分布在所有磁盤(pán)上。上述兩種存儲(chǔ)方式,均可使得一文件數(shù)據(jù)存儲(chǔ)在不同的磁盤(pán)上,降低用戶(hù)訪問(wèn)同一磁盤(pán)上的文件數(shù)據(jù)的概率,在大并發(fā)訪問(wèn)磁盤(pán)時(shí),將訪問(wèn)量分配給所有磁盤(pán),避免單塊磁盤(pán)IO短板對(duì)整個(gè)性能造成影響。
本發(fā)明是通過(guò)幾個(gè)具體實(shí)施例進(jìn)行說(shuō)明的,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)明白,在不脫離本發(fā)明范圍的情況下,還可以對(duì)本發(fā)明進(jìn)行各種變換和等同替代。另外,針對(duì)特定情形或具體情況,可以對(duì)本發(fā)明做各種修改,而不脫離本發(fā)明的范圍。因此,本發(fā)明不局限于所公開(kāi)的具體實(shí)施例,而應(yīng)當(dāng)包括落入本發(fā)明權(quán)利要求范圍內(nèi)的全部實(shí)施方式。