一種固定大文件內(nèi)部資源的控制方法
【專利摘要】本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,公開了一種固定大文件內(nèi)部資源的控制方法,通過(guò)將零散數(shù)據(jù)的索引信息、數(shù)據(jù)塊信息和數(shù)據(jù)存儲(chǔ)文件分離,同時(shí)使用內(nèi)存文件映射技術(shù),從而實(shí)現(xiàn)最大化利用有限硬盤空間、并能進(jìn)行高效的文件索引和讀取。索引文件記錄了數(shù)據(jù)在數(shù)據(jù)存儲(chǔ)文件中的存放位置、大小、最后一次使用情況等信息,防止讀寫錯(cuò)誤帶來(lái)的數(shù)據(jù)損壞,每一個(gè)數(shù)據(jù)末位置都使用一個(gè)用于校驗(yàn)數(shù)據(jù)完整性的標(biāo)識(shí)符;數(shù)據(jù)塊信息文件記錄緩存文件中尚未被使用的空間信息,當(dāng)有新數(shù)據(jù)需要寫入數(shù)據(jù)存儲(chǔ)文件中時(shí),會(huì)從這個(gè)文件中查詢是否還有可使用的連續(xù)空間。本發(fā)明中的數(shù)據(jù)存儲(chǔ)文件大小可自定義,文件大小將保持不變,使得程序?qū)τ脖P空間的控制能力增強(qiáng)。
【專利說(shuō)明】
一種固定大文件內(nèi)部資源的控制方法
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及了一種固定大文件內(nèi)部資源的控制方法。
【背景技術(shù)】
[0002]當(dāng)網(wǎng)絡(luò)結(jié)構(gòu)為SAN網(wǎng)絡(luò)環(huán)境時(shí),多個(gè)主機(jī)通過(guò)磁盤共享軟件可以在同一時(shí)刻訪問同一磁盤陣列,從而實(shí)現(xiàn)對(duì)磁盤的儲(chǔ)存系統(tǒng)中保存的文件的共享以及工作流程的正常進(jìn)行。在SAN網(wǎng)絡(luò)環(huán)境中每個(gè)主機(jī)上的存儲(chǔ)節(jié)點(diǎn)共享一個(gè)儲(chǔ)存系統(tǒng),通過(guò)共享軟件的仲裁實(shí)現(xiàn)共享存儲(chǔ)系統(tǒng)中保存信息的無(wú)沖突訪問。每個(gè)存儲(chǔ)節(jié)點(diǎn)一般都需要獲取存儲(chǔ)系統(tǒng)中保存的文件包含的字節(jié)數(shù)量信息,當(dāng)獲取的文件包含的字節(jié)數(shù)量與該文件實(shí)際包含的字節(jié)數(shù)量信息不一致時(shí),則將直接導(dǎo)致文件備份的失敗,影響后續(xù)工作的進(jìn)行。
[0003]由于磁盤共享軟件的參與,以及多個(gè)存儲(chǔ)節(jié)點(diǎn)共同訪問同一存儲(chǔ)系統(tǒng),因此每個(gè)存儲(chǔ)節(jié)點(diǎn)在獲取存儲(chǔ)系統(tǒng)中保存的文件包含的字節(jié)數(shù)量信息不一定準(zhǔn)確,從而影響存儲(chǔ)系統(tǒng)中保存的文件及備份。
【發(fā)明內(nèi)容】
[0004]本發(fā)明針對(duì)現(xiàn)有技術(shù)中文件資源管理差、儲(chǔ)存信息不準(zhǔn)確的缺點(diǎn),提供了一種固定大文件內(nèi)部資源的控制方法。
[0005]為了解決上述技術(shù)問題,本發(fā)明通過(guò)下述技術(shù)方案得以解決。
[0006]—種固定大文件內(nèi)部資源的控制方法,包括如下步驟:
[0007](I)在程序啟動(dòng)時(shí),查詢指定路徑是否已生成了數(shù)據(jù)存儲(chǔ)文件;如果沒有生成數(shù)據(jù)存儲(chǔ)文件,則使用預(yù)先設(shè)定的文件大小值生成對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)文件、索引文件和數(shù)據(jù)塊信息文件;如果已存在相應(yīng)的數(shù)據(jù)存儲(chǔ)文件,那么加載其中的索引文件和數(shù)據(jù)塊信息文件,還原出數(shù)據(jù)存儲(chǔ)文件中的數(shù)據(jù)存儲(chǔ)信息,并且記錄數(shù)據(jù)存儲(chǔ)文件的可使用的空間信息;
[0008](2)在讀取索引信息后,生成一張用于查詢存儲(chǔ)信息的哈希表,哈希表在程序的運(yùn)行周期中不會(huì)被更換,其中的索引信息可以被重復(fù)使用,用于能夠更快速地查詢數(shù)據(jù)信息;
[0009](3)在數(shù)據(jù)輸入和輸出過(guò)程中,索引文件中包含的索引信息包括有標(biāo)識(shí)位、數(shù)據(jù)存儲(chǔ)起始地址、數(shù)據(jù)大小、數(shù)據(jù)最近訪問時(shí)間以及校驗(yàn)位,用于配合記錄數(shù)據(jù)信息;索引文件的頭部則存儲(chǔ)了與索引文件本身相關(guān)的頭信息,用于校驗(yàn)索引文件是否有效;
[0010](4)數(shù)據(jù)塊信息文件中包含了數(shù)據(jù)存儲(chǔ)文件中的空間使用記錄,還包括數(shù)據(jù)存儲(chǔ)文件中每份數(shù)據(jù)占用的空間大小、數(shù)據(jù)存儲(chǔ)的位置信息和數(shù)據(jù)塊的有效信息;
[0011](5)數(shù)據(jù)存儲(chǔ)文件中,順序、緊密排列存放了有效數(shù)據(jù)或未使用的存儲(chǔ)空間。
[0012]作為優(yōu)選,步驟(3)中,標(biāo)識(shí)位是一個(gè)數(shù)值,其中數(shù)值為O表示該條索引已被失效,等待下一條索引寫入,數(shù)值為I則表示該條索引有效;數(shù)據(jù)存儲(chǔ)起始地址表示該信息記錄了該條索引對(duì)應(yīng)的數(shù)據(jù)在數(shù)據(jù)存儲(chǔ)文件中的存儲(chǔ)地址;數(shù)據(jù)大小用于表明該條索引對(duì)應(yīng)的數(shù)據(jù)的大小;數(shù)據(jù)最近訪問時(shí)間是每當(dāng)該條索引所對(duì)應(yīng)的數(shù)據(jù)被訪問時(shí)所記錄的時(shí)間數(shù)據(jù),數(shù)據(jù)最近訪問時(shí)間會(huì)被更新記錄在數(shù)據(jù)塊信息文件中;校驗(yàn)位用于校驗(yàn)該條索引對(duì)應(yīng)的數(shù)據(jù)的完整性,校驗(yàn)位的值根據(jù)數(shù)據(jù)校驗(yàn)算法計(jì)算得出。
[0013]作為優(yōu)選,步驟(I)中,自動(dòng)讀取數(shù)據(jù)塊信息文件,將緩存文件的空間使用情況保存在內(nèi)存中。
[0014]作為優(yōu)選,步驟(4)和步驟(5)中,數(shù)據(jù)儲(chǔ)存文件的大小根據(jù)指定的文件大小值生成。
[0015]本發(fā)明由于采用了以上技術(shù)方案,具有顯著的技術(shù)效果:在這個(gè)系統(tǒng)中,從服務(wù)端下載數(shù)據(jù)到內(nèi)存后,為其建立索引信息,分配大文件的數(shù)據(jù)塊使用空間,并寫入大文件中??紤]到網(wǎng)絡(luò)的數(shù)據(jù)傳輸速度遠(yuǎn)及不上本地?cái)?shù)據(jù)的加載速度,這個(gè)系統(tǒng)可以保證當(dāng)客戶端需要加載相同的數(shù)據(jù)使用時(shí),能通過(guò)大文件快速找到相關(guān)的數(shù)據(jù),從而達(dá)到網(wǎng)絡(luò)數(shù)據(jù)的加速加載效果。同時(shí),由于對(duì)大文件的容量進(jìn)行了控制,并且使用了LRU算法對(duì)緩存數(shù)據(jù)進(jìn)行管理,那些長(zhǎng)久未被使用到的數(shù)據(jù)將被新的數(shù)據(jù)替換,從而使整個(gè)大文件中的數(shù)據(jù)沒有冗余的部分。
【附圖說(shuō)明】
[0016]圖1是本發(fā)明一種固定大文件內(nèi)部資源的控制方法及其設(shè)計(jì)方法的流程示意圖。
【具體實(shí)施方式】
[0017]下面結(jié)合附圖與實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)描述。
[0018]如圖1所示,一種固定大文件內(nèi)部資源的控制方法,包括如下步驟:
[0019](I)在程序啟動(dòng)時(shí),查詢指定路徑是否已生成了數(shù)據(jù)存儲(chǔ)文件;如果沒有生成數(shù)據(jù)存儲(chǔ)文件,則使用預(yù)先設(shè)定的文件大小值生成對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)文件、索引文件和數(shù)據(jù)塊信息文件;如果已存在相應(yīng)的數(shù)據(jù)存儲(chǔ)文件,那么加載其中的索引文件和數(shù)據(jù)塊信息文件,還原出數(shù)據(jù)存儲(chǔ)文件中的數(shù)據(jù)存儲(chǔ)信息,并且記錄數(shù)據(jù)存儲(chǔ)文件的可使用的空間信息;
[0020](2)在讀取索引信息后,生成一張用于查詢存儲(chǔ)信息的哈希表,哈希表在程序的運(yùn)行周期中不會(huì)被更換,其中的索引信息可以被重復(fù)使用,用于能夠更快速地查詢數(shù)據(jù)信息;
[0021](3)在數(shù)據(jù)輸入和輸出過(guò)程中,索引文件中包含的索引信息包括有標(biāo)識(shí)位、數(shù)據(jù)存儲(chǔ)起始地址、數(shù)據(jù)大小、數(shù)據(jù)最近訪問時(shí)間以及校驗(yàn)位,用于配合記錄數(shù)據(jù)信息;索引文件的頭部則存儲(chǔ)了與索引文件本身相關(guān)的頭信息,用于校驗(yàn)索引文件是否有效;
[0022](4)數(shù)據(jù)塊信息文件中包含了數(shù)據(jù)存儲(chǔ)文件中的空間使用記錄,還包括數(shù)據(jù)存儲(chǔ)文件中每份數(shù)據(jù)占用的空間大小、數(shù)據(jù)存儲(chǔ)的位置信息和數(shù)據(jù)塊的有效信息;
[0023](5)數(shù)據(jù)存儲(chǔ)文件中,順序、緊密排列存放了有效數(shù)據(jù)或未使用的存儲(chǔ)空間。
[0024]步驟(3)中,標(biāo)識(shí)位是一個(gè)數(shù)值,其中數(shù)值為O表示該條索引已被失效,等待下一條索引寫入,數(shù)值為I則表示該條索引有效;數(shù)據(jù)存儲(chǔ)起始地址表示該信息記錄了該條索引對(duì)應(yīng)的數(shù)據(jù)在數(shù)據(jù)存儲(chǔ)文件中的存儲(chǔ)地址;數(shù)據(jù)大小用于表明該條索引對(duì)應(yīng)的數(shù)據(jù)的大?。粩?shù)據(jù)最近訪問時(shí)間是每當(dāng)該條索引所對(duì)應(yīng)的數(shù)據(jù)被訪問時(shí)所記錄的時(shí)間數(shù)據(jù),數(shù)據(jù)最近訪問時(shí)間會(huì)被更新記錄在數(shù)據(jù)塊信息文件中;校驗(yàn)位用于校驗(yàn)該條索引對(duì)應(yīng)的數(shù)據(jù)的完整性,校驗(yàn)位的值根據(jù)數(shù)據(jù)校驗(yàn)算法計(jì)算得出。
[0025]步驟(I)中,自動(dòng)讀取數(shù)據(jù)塊信息文件,將緩存文件的空間使用情況保存在內(nèi)存中。
[0026]步驟(4)和步驟(5)中,數(shù)據(jù)儲(chǔ)存文件的大小根據(jù)指定的文件大小值生成。
[0027]當(dāng)有新數(shù)據(jù)需要寫入時(shí),其寫入流程為:先查找數(shù)據(jù)存儲(chǔ)文件中可寫入空閑塊位置,在該位置寫入數(shù)據(jù),在數(shù)據(jù)塊信息文件中標(biāo)識(shí)該塊已使用,再在索引文件中寫入該過(guò)索引信息并設(shè)置校驗(yàn)位。如果索引寫入時(shí)系統(tǒng)異常推出等情況導(dǎo)致索引異常,在下一次讀取索引文件時(shí)可判斷該索引無(wú)效,并刪除數(shù)據(jù)存儲(chǔ)文件中的對(duì)應(yīng)數(shù)據(jù)。如果數(shù)據(jù)塊管理索引出現(xiàn)異常,只是未標(biāo)識(shí)數(shù)據(jù)塊存在數(shù)據(jù),因?yàn)槲磳懭胨饕募瑢?duì)數(shù)據(jù)無(wú)影響。在數(shù)據(jù)寫入過(guò)程中異常,因?yàn)槲锤目臻e塊和索引管理,對(duì)整個(gè)存儲(chǔ)系統(tǒng)無(wú)影響。
[0028]實(shí)施例1
[0029]—份新數(shù)據(jù)需要寫入數(shù)據(jù)存儲(chǔ)文件時(shí),其寫入流程為:先查找數(shù)據(jù)存儲(chǔ)文件中可寫入空閑塊位置,在該位置寫入數(shù)據(jù),在數(shù)據(jù)塊信息文件中標(biāo)識(shí)該塊已使用,再在索引文件中寫入該數(shù)據(jù)存儲(chǔ)信息并設(shè)置校驗(yàn)位。
[0030]總之,以上所述僅為本發(fā)明的較佳實(shí)施例,凡依本發(fā)明申請(qǐng)專利范圍所作的均等變化與修飾,皆應(yīng)屬本發(fā)明專利的涵蓋范圍。
【主權(quán)項(xiàng)】
1.一種固定大文件內(nèi)部資源的控制方法,其特征包括如下步驟: (1)在程序啟動(dòng)時(shí),查詢指定路徑是否已生成了數(shù)據(jù)存儲(chǔ)文件;如果沒有生成數(shù)據(jù)存儲(chǔ)文件,則使用預(yù)先設(shè)定的文件大小值生成對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)文件、索引文件和數(shù)據(jù)塊信息文件;如果已存在相應(yīng)的數(shù)據(jù)存儲(chǔ)文件,那么加載其中的索引文件和數(shù)據(jù)塊信息文件,還原出數(shù)據(jù)存儲(chǔ)文件中的數(shù)據(jù)存儲(chǔ)信息,并且記錄數(shù)據(jù)存儲(chǔ)文件的可使用的空間信息; (2)在讀取索引信息后,生成一張用于查詢存儲(chǔ)信息的哈希表,哈希表在程序的運(yùn)行周期中不會(huì)被更換,其中的索引信息可以被重復(fù)使用,用于能夠更快速地查詢數(shù)據(jù)信息; (3)在數(shù)據(jù)輸入和輸出過(guò)程中,索引文件中包含的索引信息包括有標(biāo)識(shí)位、數(shù)據(jù)存儲(chǔ)起始地址、數(shù)據(jù)大小、數(shù)據(jù)最近訪問時(shí)間以及校驗(yàn)位,用于配合記錄數(shù)據(jù)信息;索引文件的頭部則存儲(chǔ)了與索引文件本身相關(guān)的頭信息,用于校驗(yàn)索引文件是否有效; (4)數(shù)據(jù)塊信息文件中包含了數(shù)據(jù)存儲(chǔ)文件中的空間使用記錄,還包括數(shù)據(jù)存儲(chǔ)文件中每份數(shù)據(jù)占用的空間大小、數(shù)據(jù)存儲(chǔ)的位置信息和數(shù)據(jù)塊的有效信息; (5)數(shù)據(jù)存儲(chǔ)文件中,順序、緊密排列存放了有效數(shù)據(jù)或未使用的存儲(chǔ)空間。2.根據(jù)權(quán)利要求1所述的一種固定大文件內(nèi)部資源的控制方法,其特征在于:步驟(3)中,標(biāo)識(shí)位是一個(gè)數(shù)值,其中數(shù)值為O表示該條索引已被失效,等待下一條索引寫入,數(shù)值為I則表示該條索引有效;數(shù)據(jù)存儲(chǔ)起始地址表示該信息記錄了該條索引對(duì)應(yīng)的數(shù)據(jù)在數(shù)據(jù)存儲(chǔ)文件中的存儲(chǔ)地址;數(shù)據(jù)大小用于表明該條索引對(duì)應(yīng)的數(shù)據(jù)的大小;數(shù)據(jù)最近訪問時(shí)間是每當(dāng)該條索引所對(duì)應(yīng)的數(shù)據(jù)被訪問時(shí)所記錄的時(shí)間數(shù)據(jù),數(shù)據(jù)最近訪問時(shí)間會(huì)被更新記錄在數(shù)據(jù)塊信息文件中;校驗(yàn)位用于校驗(yàn)該條索引對(duì)應(yīng)的數(shù)據(jù)的完整性,校驗(yàn)位的值根據(jù)數(shù)據(jù)校驗(yàn)算法計(jì)算得出。3.根據(jù)權(quán)利要求1所述的一種固定大文件內(nèi)部資源的控制方法,其特征在于:步驟(I)中,自動(dòng)讀取數(shù)據(jù)塊信息文件,將緩存文件的空間使用情況保存在內(nèi)存中。4.根據(jù)權(quán)利要求1所述的一種固定大文件內(nèi)部資源的控制方法,其特征在于:步驟(4)和步驟(5)中,數(shù)據(jù)儲(chǔ)存文件的大小根據(jù)指定的文件大小值生成。
【文檔編號(hào)】G06F3/06GK106095331SQ201610377680
【公開日】2016年11月9日
【申請(qǐng)日】2016年5月31日
【發(fā)明人】駱關(guān)培, 俞蔚
【申請(qǐng)人】浙江科瀾信息技術(shù)有限公司