一種實(shí)現(xiàn)小文件存取的方法及裝置制造方法
【專利摘要】本發(fā)明公開了一種實(shí)現(xiàn)小文件存取的方法及裝置,其中該實(shí)現(xiàn)小文件存取的方法包括:檢測寫入文件的大小;將寫入文件的大小與預(yù)先給定的閾值進(jìn)行比較,當(dāng)寫入文件的大小小于或等于給定閾值時(shí),則將寫入文件的數(shù)據(jù)存放在數(shù)據(jù)結(jié)構(gòu)inode中,并且在所述inode中添加標(biāo)志位為1;否則,將所述寫入文件存入inode指向的數(shù)據(jù)塊中,在所述inode中添加標(biāo)志位為0;根據(jù)所述inode中的標(biāo)志位讀取寫入文件的數(shù)據(jù)。該小文件存取的方法大大提高了小文件存儲和讀取的速度。
【專利說明】一種實(shí)現(xiàn)小文件存取的方法及裝置
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計(jì)算機(jī)存儲技術(shù),尤指一種實(shí)現(xiàn)小文件存取的方法及裝置。
【背景技術(shù)】
[0002] 小文件一般指1MB以下的文件。大量小文件的存儲和讀取一直是存儲系統(tǒng)的難以 解決的難題,尤其隨著計(jì)算機(jī)技術(shù)的發(fā)展,數(shù)據(jù)會越來越多。
[0003] 現(xiàn)有技術(shù)一般是這樣存放數(shù)據(jù)的:首先創(chuàng)建一個(gè)數(shù)據(jù)結(jié)構(gòu)(inode),每個(gè)inode是 唯一的,且分別指向一個(gè)數(shù)據(jù)塊,將寫入文件的數(shù)據(jù)存放在這個(gè)數(shù)據(jù)塊中,inode和數(shù)據(jù)塊 是一一對應(yīng)的?,F(xiàn)在的多數(shù)文件系統(tǒng),并不區(qū)別對待小文件和大文件,即不按照文件的大小 進(jìn)行區(qū)分,都是一樣的存儲和讀取。這就使得大量的隨機(jī)讀寫小文件會很慢,延遲很高。如 何加快小文件的存取速度,一直是個(gè)懸而未決的難題。
【發(fā)明內(nèi)容】
[0004] 為了解決上述問題,本發(fā)明提供了一種實(shí)現(xiàn)小文件存取的方法及裝置,能夠有效 提高小文件存儲和讀取的速度。
[0005] 為了達(dá)到上述發(fā)明目的,本發(fā)明公開了一種實(shí)現(xiàn)小文件存取的方法,包括:
[0006] 檢測寫入文件的大?。?br>
[0007] 將寫入文件的大小與預(yù)先給定的閾值進(jìn)行比較,當(dāng)寫入文件的大小小于或等于給 定閾值時(shí),則將寫入文件的數(shù)據(jù)存放在數(shù)據(jù)結(jié)構(gòu)inode中,并且在inode中添加標(biāo)志位為1 ; 否則,將寫入文件存入inode指向的數(shù)據(jù)塊中,在inode中添加標(biāo)志位為0 ;
[0008] 根據(jù)inode中的標(biāo)志位讀取寫入文件的數(shù)據(jù)。
[0009] 進(jìn)一步地,根據(jù)inode中的標(biāo)志位讀取寫入文件的數(shù)據(jù),包括:
[0010] 當(dāng)inode添加的標(biāo)志位為1時(shí),在inode中讀取寫入文件的數(shù)據(jù);
[0011] 當(dāng)inode添加的標(biāo)志位為0時(shí),則在inode指向的數(shù)據(jù)塊中讀取寫入文件的數(shù)據(jù)。
[0012] 本發(fā)明還公開了一種實(shí)現(xiàn)小文件存取的裝置,包括:文件大小檢測模塊、比較模 塊、第一存儲模塊、第二存儲模塊和讀取模塊;其中,
[0013] 文件大小檢測模塊,用于檢測寫入文件的大小,并將檢測結(jié)果傳給比較模塊;
[0014] 比較模塊,用于將寫入文件的大小與預(yù)先給定的閾值進(jìn)行比較;
[0015] 第一存儲模塊,用于當(dāng)寫入文件的大小小于或等給定于閾值時(shí),則將寫入文件的 數(shù)據(jù)存放在數(shù)據(jù)結(jié)構(gòu)inode中,并且在inode中添加標(biāo)志位為1 ;
[0016] 第二存儲模塊,用于當(dāng)寫入文件的大小大于給定閾值時(shí),將寫入文件存入inode 指向的數(shù)據(jù)塊中,在inode中添加標(biāo)志位為0 ;
[0017] 讀取模塊,用于根據(jù)inode中的標(biāo)志位讀取寫入文件的數(shù)據(jù)。
[0018] 進(jìn)一步地,讀取模塊裝置包括:第一讀取模塊和第二讀取模塊;其中,
[0019] 第一讀取模塊,用于當(dāng)inode添加的標(biāo)志位為1時(shí),在inode中讀取寫入文件的數(shù) 據(jù);
[0020] 第二讀取模塊,用于當(dāng)inode添加的標(biāo)志位為0時(shí),則在inode指向的數(shù)據(jù)塊中讀 取寫入文件的數(shù)據(jù)。
[0021] 本申請技術(shù)方案提供的實(shí)現(xiàn)小文件存取的方法,包括:檢測寫入文件的大??;將 寫入文件的大小與預(yù)先給定的閾值進(jìn)行比較,當(dāng)寫入文件的大小小于或等于給定閾值時(shí), 則將寫入文件的數(shù)據(jù)存放在數(shù)據(jù)結(jié)構(gòu)inode中,并且在所述inode中添加標(biāo)志位為1 ;否 貝1J,將所述寫入文件存入inode指向的數(shù)據(jù)塊中,在所述inode中添加標(biāo)志位為0 ;根據(jù)所 述inode中的標(biāo)志位讀取寫入文件的數(shù)據(jù)。本申請的技術(shù)方案大大提高了小文件存儲和讀 取的速度。
【專利附圖】
【附圖說明】
[0022] 此處所說明的附圖用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,本發(fā) 明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:
[0023] 圖1為本發(fā)明實(shí)現(xiàn)小文件存取的方法的流程圖;
[0024] 圖2為本發(fā)明實(shí)現(xiàn)小文件存取的裝置的組成結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0025] 下面結(jié)合附圖及具體實(shí)施例對本發(fā)明進(jìn)行詳細(xì)說明。
[0026] 圖1是本發(fā)明實(shí)現(xiàn)小文件存取的方法的流程圖,如圖1所示,包括以下步驟:
[0027] 步驟101,檢測寫入文件的大小。
[0028] 文件系統(tǒng)提供相應(yīng)的函數(shù)來實(shí)現(xiàn)如何檢測寫入文件的大小,為本領(lǐng)域技術(shù)人員熟 知的公知常識,在此不再贅述。
[0029] 步驟102,將寫入文件的大小與預(yù)先給定的閾值進(jìn)行比較,當(dāng)寫入文件的大小小于 或等于給定閾值時(shí),則將寫入文件的數(shù)據(jù)存放在數(shù)據(jù)結(jié)構(gòu)inode中,并且在所述inode中添 加標(biāo)志位為1 ;否則,將所述寫入文件存入inode指向的數(shù)據(jù)塊中,在所述inode中添加標(biāo) 志位為0。
[0030] 數(shù)據(jù)塊是硬盤上存放數(shù)據(jù)的最小單元?,F(xiàn)有技術(shù)就是將數(shù)據(jù)就存放在數(shù)據(jù)塊中, 至于inode與數(shù)據(jù)塊的對應(yīng)關(guān)系屬于本領(lǐng)域的公知常識,在此不再贅述。
[0031] inode是UNIX操作系統(tǒng)中的一種數(shù)據(jù)結(jié)構(gòu),其本質(zhì)是結(jié)構(gòu)體,它包含了與文件 系統(tǒng)中各個(gè)文件相關(guān)的一些重要信息。在UNIX中創(chuàng)建文件系統(tǒng)時(shí),同時(shí)將會創(chuàng)建大量的 inode。通常,文件系統(tǒng)磁盤空間中大約百分之一空間分配給了 inode表。
[0032] 需要說明的是,預(yù)先給定的閾值是需要根據(jù)實(shí)際應(yīng)用情況來確定的。例如,1M,適 用于動漫渲染類似的應(yīng)用。
[0033] 步驟103,根據(jù)該inode中的標(biāo)志位讀取寫入文件的數(shù)據(jù)。
[0034] 本步驟具體包括:
[0035] 當(dāng)inode添加的標(biāo)志位為1時(shí),在inode中讀取寫入文件的數(shù)據(jù);
[0036] 當(dāng)inode添加的標(biāo)志位為0時(shí),則在inode指向的數(shù)據(jù)塊中讀取寫入文件的數(shù)據(jù)。
[0037] 上述方法中,將小于或等于閾值的寫入文件的數(shù)據(jù)存儲在inode中,省去了從 inode到數(shù)據(jù)塊的指向,并且減少了存儲和讀取(訪問)的時(shí)間,從而提高了存儲和讀取的 速度。而對于不存放在inode中的寫入文件的數(shù)據(jù),數(shù)據(jù)的讀取方式不受影響,即按照現(xiàn)有 技術(shù)在inode指向的數(shù)據(jù)塊中讀取文件的數(shù)據(jù)。
[0038] 圖2為本發(fā)明實(shí)現(xiàn)小文件存取的裝置的組成結(jié)構(gòu)示意圖,如圖2所示,包括:文件 大小檢測模塊、比較模塊、第一存儲模塊、第二存儲模塊和讀取模塊。其中,
[0039] 文件大小檢測模塊,用于檢測寫入文件的大小,并將檢測結(jié)果傳給比較模塊。
[0040] 比較模塊,用于將寫入文件的大小與預(yù)先給定的閾值進(jìn)行比較,并在數(shù)據(jù)結(jié)構(gòu) inode中添加標(biāo)志位為1或0。
[0041] 第一存儲模塊,用于當(dāng)寫入文件的大小小于或等給定于閾值時(shí),則將寫入文件的 數(shù)據(jù)存放在數(shù)據(jù)結(jié)構(gòu)inode中,并且在所述inode中添加標(biāo)志位為1。
[0042] 第二存儲模塊,用于當(dāng)寫入文件的大小大于給定閾值時(shí),將所述寫入文件存入 inode指向的數(shù)據(jù)塊中,在所述inode中添加標(biāo)志位為0。
[0043] 讀取模塊,用于根據(jù)所述inode中的標(biāo)志位讀取寫入文件的數(shù)據(jù)。
[0044] 進(jìn)一步地,上述讀取模塊包括:第一讀取模塊和第二讀取模塊;其中,
[0045] 第一讀取模塊,用于當(dāng)所述inode添加的標(biāo)志位為1時(shí),在所述inode中讀取所述 寫入文件的數(shù)據(jù)。
[0046] 第二讀取模塊,用于當(dāng)所述inode添加的標(biāo)志位為0時(shí),則在inode指向的數(shù)據(jù)塊 中讀取所述寫入文件的數(shù)據(jù)。
[0047] 通過上述文件大小檢測模塊、比較模塊、第一存儲模塊、第二存儲模塊和讀取模塊 的配合,將小于或等于閾值的寫入文件的數(shù)據(jù)存儲在inode中,省去了從inode到數(shù)據(jù)塊的 指向,并且減少了存儲和讀?。ㄔL問)的時(shí)間,從而提高了存儲和讀取的速度。而對于不存 放在inode中的寫入文件的數(shù)據(jù),通過第二存儲模塊和第二讀取模塊,使得數(shù)據(jù)的讀寫方 式不受影響。
[0048] 本領(lǐng)域普通技術(shù)人員可以理解上述方法中的全部或部分步驟可通過程序來指令 相關(guān)硬件完成,所述程序可以存儲于計(jì)算機(jī)可讀存儲介質(zhì)中,如只讀存儲器、磁盤或光盤 等??蛇x地,上述實(shí)施例的全部或部分步驟也可以使用一個(gè)或多個(gè)集成電路來實(shí)現(xiàn)。相應(yīng) 地,上述實(shí)施例中的各模塊/單元可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能模塊的 形式實(shí)現(xiàn)。本申請不限制于任何特定形式的硬件和軟件的結(jié)合。
[〇〇49] 以上所述,僅為本發(fā)明的較佳實(shí)例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本 發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范 圍之內(nèi)。
【權(quán)利要求】
1. 一種實(shí)現(xiàn)小文件存取的方法,包括: 檢測寫入文件的大??; 將寫入文件的大小與預(yù)先給定的閾值進(jìn)行比較,當(dāng)寫入文件的大小小于或等于給定閾 值時(shí),則將寫入文件的數(shù)據(jù)存放在數(shù)據(jù)結(jié)構(gòu)inode中,并且在所述inode中添加標(biāo)志位為1 ; 否則,將所述寫入文件存入inode指向的數(shù)據(jù)塊中,在所述inode中添加標(biāo)志位為0 ; 根據(jù)所述inode中的標(biāo)志位讀取寫入文件的數(shù)據(jù)。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述inode中的標(biāo)志位讀取寫入 文件的數(shù)據(jù),包括: 當(dāng)所述inode添加的標(biāo)志位為1時(shí),在所述inode中讀取所述寫入文件的數(shù)據(jù); 當(dāng)所述inode添加的標(biāo)志位為0時(shí),則在inode指向的數(shù)據(jù)塊中讀取所述寫入文件的 數(shù)據(jù)。
3. -種實(shí)現(xiàn)小文件存取的裝置,包括:文件大小檢測模塊、比較模塊、第一存儲模塊、 第二存儲模塊和讀取模塊;其中, 文件大小檢測模塊,用于檢測寫入文件的大小,并將檢測結(jié)果傳給比較模塊; 比較模塊,用于將寫入文件的大小與預(yù)先給定的閾值進(jìn)行比較; 第一存儲模塊,用于當(dāng)寫入文件的大小小于或等給定于閾值時(shí),則將寫入文件的數(shù)據(jù) 存放在數(shù)據(jù)結(jié)構(gòu)inode中,并且在所述inode中添加標(biāo)志位為1 ; 第二存儲模塊,用于當(dāng)寫入文件的大小大于給定閾值時(shí),將所述寫入文件存入inode 指向的數(shù)據(jù)塊中,在所述inode中添加標(biāo)志位為0 ; 讀取模塊,用于根據(jù)所述inode中的標(biāo)志位讀取寫入文件的數(shù)據(jù)。
4. 根據(jù)權(quán)利要求3所述的裝置,其特征在于,所述讀取模塊裝置包括:第一讀取模塊和 第二讀取模塊;其中, 第一讀取模塊,用于當(dāng)所述inode添加的標(biāo)志位為1時(shí),在所述inode中讀取所述寫入 文件的數(shù)據(jù); 第二讀取模塊,用于當(dāng)所述inode添加的標(biāo)志位為0時(shí),貝U在inode指向的數(shù)據(jù)塊中讀 取所述寫入文件的數(shù)據(jù)。
【文檔編號】G06F17/30GK104102708SQ201410334182
【公開日】2014年10月15日 申請日期:2014年7月14日 優(yōu)先權(quán)日:2014年7月14日
【發(fā)明者】張敬海 申請人:浪潮(北京)電子信息產(chǎn)業(yè)有限公司