專(zhuān)利名稱(chēng):共享文件數(shù)據(jù)塊的方法及解除共享文件數(shù)據(jù)塊的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)技術(shù),尤其涉及一種共享文件數(shù)據(jù)塊的方法、一種解除共享文 件數(shù)據(jù)塊的方法以及一種實(shí)現(xiàn)文件數(shù)據(jù)塊共享及解除共享的裝置。
背景技術(shù):
目前,在所有的計(jì)算機(jī)文件系統(tǒng)下,文件都擁有獨(dú)立的數(shù)據(jù)塊存儲(chǔ)空間。如果需要 將某個(gè)文件的某個(gè)數(shù)據(jù)塊復(fù)制到另一個(gè)文件中或添加到另一個(gè)文件的末尾時(shí),需要首先從 源文件中讀取這個(gè)數(shù)據(jù)塊的數(shù)據(jù),然后再把該數(shù)據(jù)塊的數(shù)據(jù)寫(xiě)入另一個(gè)文件中間或者寫(xiě)到 另一個(gè)文件的末尾,也就是在另一個(gè)文件的存儲(chǔ)空間保存這個(gè)數(shù)據(jù)塊的數(shù)據(jù)或者說(shuō)內(nèi)容。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問(wèn)題是提供一種共享文件數(shù)據(jù)塊的方法,提高復(fù)制文件數(shù) 據(jù)塊的速度,節(jié)省復(fù)制空間。為解決上述技術(shù)問(wèn)題,本發(fā)明提出了一種共享文件數(shù)據(jù)塊的方法,包括步驟(a),根據(jù)共享數(shù)據(jù)塊所在源文件的元數(shù)據(jù)結(jié)構(gòu)查找到共享數(shù)據(jù)塊的存儲(chǔ)地 址;步驟(b),修改目標(biāo)文件的元數(shù)據(jù),使目標(biāo)文件的元數(shù)據(jù)引用所述共享數(shù)據(jù)塊的存 儲(chǔ)地址。進(jìn)一步地,上述方法還可具有以下特點(diǎn),還包括步驟(C),在所述共享數(shù)據(jù)塊的 原有引用計(jì)數(shù)基礎(chǔ)上加1,所述共享數(shù)據(jù)塊的引用計(jì)數(shù)等于所述共享數(shù)據(jù)塊當(dāng)前被目標(biāo)文 件的元數(shù)據(jù)引用的次數(shù)。進(jìn)一步地,上述方法還可具有以下特點(diǎn),所述步驟(b)具體為若將所述共享數(shù)據(jù)塊添加到目標(biāo)文件中,則修改目標(biāo)文件元數(shù)據(jù)中的文件長(zhǎng)度信 息,使修改后該目標(biāo)文件的長(zhǎng)度等于追加數(shù)據(jù)后的實(shí)際文件長(zhǎng)度,然后使該目標(biāo)文件的元 數(shù)據(jù)引用所述共享數(shù)據(jù)塊的存儲(chǔ)地址;若將所述共享數(shù)據(jù)塊替換目標(biāo)文件的數(shù)據(jù)塊,則先 將目標(biāo)文件的元數(shù)據(jù)中指向被替換數(shù)據(jù)塊的地址釋放掉,然后將所述共享數(shù)據(jù)塊的存儲(chǔ)地 址添加到該目標(biāo)文件的元數(shù)據(jù)中原來(lái)指向被替換數(shù)據(jù)塊的地址。本發(fā)明還提出了一種解除共享文件數(shù)據(jù)塊的方法,包括步驟(a),修改目標(biāo)文件的元數(shù)據(jù),使該目標(biāo)文件的元數(shù)據(jù)中指向共享數(shù)據(jù)塊的空 間內(nèi)容為空。進(jìn)一步地,上述方法還可具有以下特點(diǎn),還包括步驟(b),在所述共享數(shù)據(jù)塊的 原有引用計(jì)數(shù)基礎(chǔ)上減1,所述共享數(shù)據(jù)塊的引用計(jì)數(shù)等于所述共享數(shù)據(jù)塊當(dāng)前被目標(biāo)文 件的元數(shù)據(jù)引用的次數(shù),當(dāng)引用計(jì)數(shù)不為0時(shí),不能釋放存儲(chǔ)共享數(shù)據(jù)塊的空間。本發(fā)明還提出了一種實(shí)現(xiàn)文件數(shù)據(jù)塊共享及解除共享的裝置,包括查找模塊,用于根據(jù)共享數(shù)據(jù)塊所在源文件的元數(shù)據(jù)結(jié)構(gòu)查找到共享數(shù)據(jù)塊的存 儲(chǔ)地址;
引用模塊,用于修改目標(biāo)文件的元數(shù)據(jù),使目標(biāo)文件的元數(shù)據(jù)引用所述共享數(shù)據(jù) 塊的存儲(chǔ)地址;解除模塊,用于修改目標(biāo)文件的元數(shù)據(jù),使目標(biāo)文件的元數(shù)據(jù)中指向共享數(shù)據(jù)塊 的空間內(nèi)容為空。進(jìn)一步地,上述裝置還可具有以下特點(diǎn),還包括計(jì)數(shù)模塊,用于在目標(biāo)文件的元數(shù) 據(jù)引用所述共享數(shù)據(jù)塊的存儲(chǔ)地址后,在所述共享數(shù)據(jù)塊的原有引用計(jì)數(shù)基礎(chǔ)上加1,在目 標(biāo)文件的元數(shù)據(jù)中指向共享數(shù)據(jù)塊的空間內(nèi)容修改為空后,在所述共享數(shù)據(jù)塊的原有引用 計(jì)數(shù)基礎(chǔ)上減1,所述共享數(shù)據(jù)塊的引用計(jì)數(shù)等于所述共享數(shù)據(jù)塊當(dāng)前被目標(biāo)文件的元數(shù) 據(jù)引用的次數(shù)。應(yīng)用本發(fā)明可以直接將一個(gè)文件的某個(gè)或某些數(shù)據(jù)塊的數(shù)據(jù)直接轉(zhuǎn)換成另一個(gè) 文件的指定位置的數(shù)據(jù),免去了讀取數(shù)據(jù)塊內(nèi)容和將數(shù)據(jù)塊內(nèi)容寫(xiě)入到另一個(gè)文件中指定 位置的過(guò)程,提高了復(fù)制文件的速度,并且在復(fù)制數(shù)據(jù)塊的過(guò)程中不需要專(zhuān)門(mén)的復(fù)制空間, 從而節(jié)省了存儲(chǔ)空間。
圖1是本發(fā)明共享文件數(shù)據(jù)塊的方法流程圖;圖2是本發(fā)明解除共享文件數(shù)據(jù)塊的方法流程圖;圖3是本發(fā)明實(shí)現(xiàn)文件數(shù)據(jù)塊共享及解除共享的裝置結(jié)構(gòu)圖;圖4是本發(fā)明共享文件數(shù)據(jù)塊的方法應(yīng)用示意圖;圖5是本發(fā)明解除共享文件數(shù)據(jù)塊的方法應(yīng)用示意圖。
具體實(shí)施例方式以下結(jié)合附圖對(duì)本發(fā)明的原理和特征進(jìn)行描述,所舉實(shí)例只用于解釋本發(fā)明,并 非用于限定本發(fā)明的范圍。圖1是本發(fā)明共享文件數(shù)據(jù)塊的方法流程圖,如圖1所示,本發(fā)明共享文件數(shù)據(jù)塊 的方法流程包括步驟101,根據(jù)共享數(shù)據(jù)塊所在源文件的元數(shù)據(jù)結(jié)構(gòu)查找到共享數(shù)據(jù)塊的存儲(chǔ)地 址;這里,共享數(shù)據(jù)塊的存儲(chǔ)地址指的是共享數(shù)據(jù)塊在物理介質(zhì)的物理位置。步驟102,修改目標(biāo)文件的元數(shù)據(jù),使目標(biāo)文件的元數(shù)據(jù)引用共享數(shù)據(jù)塊的存儲(chǔ)地 址;這里一般有兩種情形,一種是將共享數(shù)據(jù)塊添加到目標(biāo)文件中,也就是在目標(biāo)文 件原有數(shù)據(jù)的基礎(chǔ)上再增加共享數(shù)據(jù)塊的數(shù)據(jù),另一種是用共享數(shù)據(jù)塊替換到目標(biāo)文件的 某些數(shù)據(jù)塊。如果將共享數(shù)據(jù)塊添加到目標(biāo)文件中,則修改目標(biāo)文件元數(shù)據(jù)中的文件長(zhǎng)度 信息,使修改后該目標(biāo)文件的長(zhǎng)度等于追加數(shù)據(jù)后的實(shí)際文件長(zhǎng)度,然后使該目標(biāo)文件的 元數(shù)據(jù)引用所述共享數(shù)據(jù)塊的存儲(chǔ)地址;若用所述共享數(shù)據(jù)塊替換目標(biāo)文件的數(shù)據(jù)塊,則 先將目標(biāo)文件的元數(shù)據(jù)中指向被替換數(shù)據(jù)塊的地址釋放掉,然后將所述共享數(shù)據(jù)塊的存儲(chǔ) 地址添加到該目標(biāo)文件的元數(shù)據(jù)中原來(lái)指向被替換數(shù)據(jù)塊的地址。步驟103,在共享數(shù)據(jù)塊的原有引用計(jì)數(shù)基礎(chǔ)上加1,共享數(shù)據(jù)塊的引用計(jì)數(shù)等于該共享數(shù)據(jù)塊當(dāng)前被目標(biāo)文件的元數(shù)據(jù)引用的次數(shù)。這里,共享數(shù)據(jù)塊的引用計(jì)數(shù)初始值為0,表示沒(méi)有目標(biāo)文件引用該共享數(shù)據(jù)塊。 假設(shè)共享數(shù)據(jù)塊的引用計(jì)數(shù)為5,則表示當(dāng)前引用該共享數(shù)據(jù)塊的目標(biāo)文件有5件。需要說(shuō) 明的是,每一個(gè)共享數(shù)據(jù)塊都各自有一個(gè)引用計(jì)數(shù)。比如有數(shù)據(jù)塊A和數(shù)據(jù)塊B兩個(gè)共享 數(shù)據(jù)塊,則數(shù)據(jù)塊A和數(shù)據(jù)塊B各自有一個(gè)引用計(jì)數(shù)。當(dāng)然,使用共享數(shù)據(jù)塊的引用計(jì)數(shù)的 目的是為了方便了解共享數(shù)據(jù)塊的引用狀態(tài),在本發(fā)明的其他實(shí)施例中,如果并不需要了 解共享數(shù)據(jù)塊的引用狀態(tài),則可以省略步驟103。本發(fā)明共享文件數(shù)據(jù)塊的方法應(yīng)用示意圖如圖4所示。圖4中,(a)為共享數(shù)據(jù) 塊數(shù)據(jù)塊1和數(shù)據(jù)塊2的所在的源文件的元數(shù)據(jù),(b)為引用共享數(shù)據(jù)塊數(shù)據(jù)塊1和數(shù)據(jù) 塊2的目標(biāo)文件的元數(shù)據(jù)。本發(fā)明的共享文件數(shù)據(jù)塊的方法可以直接將一個(gè)文件的某個(gè)或某些數(shù)據(jù)塊的數(shù) 據(jù)直接轉(zhuǎn)換成另一個(gè)文件的指定位置的數(shù)據(jù),免去了讀取數(shù)據(jù)塊內(nèi)容和將數(shù)據(jù)塊內(nèi)容寫(xiě)入 到另一個(gè)文件中指定位置的過(guò)程,提高了復(fù)制文件的速度,并且在復(fù)制數(shù)據(jù)塊的過(guò)程中不 需要專(zhuān)門(mén)的復(fù)制空間,從而節(jié)省了存儲(chǔ)空間。本發(fā)明還提出了一種解除共享文件數(shù)據(jù)塊的方法,圖2是本發(fā)明解除共享文件數(shù) 據(jù)塊的方法流程圖,如圖2所示,本發(fā)明解除共享文件數(shù)據(jù)塊的方法包括步驟201,修改目標(biāo)文件的元數(shù)據(jù),使該目標(biāo)文件的元數(shù)據(jù)中指向共享數(shù)據(jù)塊的空 間內(nèi)容為空;步驟202,在共享數(shù)據(jù)塊的原有引用計(jì)數(shù)基礎(chǔ)上減1,共享數(shù)據(jù)塊的引用計(jì)數(shù)等于 該共享數(shù)據(jù)塊當(dāng)前被目標(biāo)文件的元數(shù)據(jù)引用的次數(shù),當(dāng)引用計(jì)數(shù)不為0時(shí),不能釋放存儲(chǔ) 共享數(shù)據(jù)塊的空間。如果引用計(jì)數(shù)大于0則修改完成,引用計(jì)數(shù)大于0時(shí)不可以將共享數(shù)據(jù)塊的數(shù)據(jù) 從存儲(chǔ)空間刪除即將此共享數(shù)據(jù)塊釋放掉,如果引用計(jì)數(shù)等于0則可以將此共享數(shù)據(jù)塊釋 放掉。本發(fā)明解除共享文件數(shù)據(jù)塊的方法應(yīng)用示意圖如圖5所示。圖5中,(a)為共享 數(shù)據(jù)塊數(shù)據(jù)塊1和數(shù)據(jù)塊2的所在的源文件的元數(shù)據(jù),(b)為引用共享數(shù)據(jù)塊數(shù)據(jù)塊1和 數(shù)據(jù)塊2的目標(biāo)文件的元數(shù)據(jù)。圖5表示解除源文件對(duì)共享數(shù)據(jù)塊數(shù)據(jù)塊1和數(shù)據(jù)塊2的本發(fā)明還提出了一種實(shí)現(xiàn)文件數(shù)據(jù)塊共享及解除共享的裝置,圖3是本發(fā)明實(shí)現(xiàn) 文件數(shù)據(jù)塊共享及解除共享的裝置結(jié)構(gòu)圖,如圖3所示,本發(fā)明實(shí)現(xiàn)文件數(shù)據(jù)塊共享及解 除共享的裝置包括查找模塊31,用于根據(jù)共享數(shù)據(jù)塊所在源文件的元數(shù)據(jù)結(jié)構(gòu)查找到共享數(shù)據(jù)塊的 存儲(chǔ)地址;引用模塊32,用于修改目標(biāo)文件的元數(shù)據(jù),使目標(biāo)文件的元數(shù)據(jù)引用所述共享數(shù) 據(jù)塊的存儲(chǔ)地址;解除模塊33,用于修改目標(biāo)文件的元數(shù)據(jù),使目標(biāo)文件的元數(shù)據(jù)中指向共享數(shù)據(jù) 塊的空間內(nèi)容為空。再如圖3所示,本發(fā)明實(shí)現(xiàn)文件數(shù)據(jù)塊共享及解除共享的裝置還可以包括計(jì)數(shù)模 塊34,用于在目標(biāo)文件的元數(shù)據(jù)引用共享數(shù)據(jù)塊的存儲(chǔ)地址后,在該共享數(shù)據(jù)塊的原有引用計(jì)數(shù)基礎(chǔ)上加1,在目標(biāo)文件的元數(shù)據(jù)中指向共享數(shù)據(jù)塊的空間內(nèi)容修改為空后,在該共 享數(shù)據(jù)塊的原有引用計(jì)數(shù)基礎(chǔ)上減1,共享數(shù)據(jù)塊的引用計(jì)數(shù)等于共享數(shù)據(jù)塊當(dāng)前被目標(biāo) 文件的元數(shù)據(jù)引用的次數(shù)。本發(fā)明的實(shí)現(xiàn)文件數(shù)據(jù)塊共享及解除共享的裝置能夠直接將一個(gè)文件的某個(gè)或 某些數(shù)據(jù)塊的數(shù)據(jù)直接轉(zhuǎn)換成另一個(gè)文件的指定位置的數(shù)據(jù),免去了讀取數(shù)據(jù)塊內(nèi)容和將 數(shù)據(jù)塊內(nèi)容寫(xiě)入到另一個(gè)文件中指定位置的過(guò)程,提高了復(fù)制文件的速度,并且在復(fù)制數(shù) 據(jù)塊的過(guò)程中不需要專(zhuān)門(mén)的復(fù)制空間,從而節(jié)省了存儲(chǔ)空間。以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和 原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種共享文件數(shù)據(jù)塊的方法,其特征在于,包括步驟(a),根據(jù)共享數(shù)據(jù)塊所在源文件的元數(shù)據(jù)結(jié)構(gòu)查找到共享數(shù)據(jù)塊的存儲(chǔ)地址; 步驟(b),修改目標(biāo)文件的元數(shù)據(jù),使目標(biāo)文件的元數(shù)據(jù)引用所述共享數(shù)據(jù)塊的存儲(chǔ)地址。
2.根據(jù)權(quán)利要求1所述的共享文件數(shù)據(jù)塊的方法,其特征在于,還包括步驟(c),在所 述共享數(shù)據(jù)塊的原有引用計(jì)數(shù)基礎(chǔ)上加1,所述共享數(shù)據(jù)塊的引用計(jì)數(shù)等于所述共享數(shù)據(jù) 塊當(dāng)前被目標(biāo)文件的元數(shù)據(jù)引用的次數(shù)。
3.根據(jù)權(quán)利要求1所述的共享文件數(shù)據(jù)塊的方法,其特征在于,所述步驟(b)具體為 若將所述共享數(shù)據(jù)塊添加到目標(biāo)文件中,則修改目標(biāo)文件元數(shù)據(jù)中的文件長(zhǎng)度信息,使修改后該目標(biāo)文件的長(zhǎng)度等于追加數(shù)據(jù)后的實(shí)際文件長(zhǎng)度,然后使該目標(biāo)文件的元數(shù)據(jù) 引用所述共享數(shù)據(jù)塊的存儲(chǔ)地址;若將所述共享數(shù)據(jù)塊替換目標(biāo)文件的數(shù)據(jù)塊,則先將目 標(biāo)文件的元數(shù)據(jù)中指向被替換數(shù)據(jù)塊的地址釋放掉,然后將所述共享數(shù)據(jù)塊的存儲(chǔ)地址添 加到該目標(biāo)文件的元數(shù)據(jù)中原來(lái)指向被替換數(shù)據(jù)塊的地址。
4.一種解除共享文件數(shù)據(jù)塊的方法,其特征在于,包括步驟(a),修改目標(biāo)文件的元數(shù)據(jù),使該目標(biāo)文件的元數(shù)據(jù)中指向共享數(shù)據(jù)塊的空間內(nèi) 容為空。
5.根據(jù)權(quán)利要求4所述的解除共享文件數(shù)據(jù)塊的方法,其特征在于,還包括步驟(b), 在所述共享數(shù)據(jù)塊的原有引用計(jì)數(shù)基礎(chǔ)上減1,所述共享數(shù)據(jù)塊的引用計(jì)數(shù)等于所述共享 數(shù)據(jù)塊當(dāng)前被目標(biāo)文件的元數(shù)據(jù)引用的次數(shù),當(dāng)引用計(jì)數(shù)不為0時(shí),不能釋放存儲(chǔ)共享數(shù) 據(jù)塊的空間。
6.一種實(shí)現(xiàn)文件數(shù)據(jù)塊共享及解除共享的裝置,其特征在于,包括查找模塊,用于根據(jù)共享數(shù)據(jù)塊所在源文件的元數(shù)據(jù)結(jié)構(gòu)查找到共享數(shù)據(jù)塊的存儲(chǔ)地址;引用模塊,用于修改目標(biāo)文件的元數(shù)據(jù),使目標(biāo)文件的元數(shù)據(jù)引用所述共享數(shù)據(jù)塊的 存儲(chǔ)地址;解除模塊,用于修改目標(biāo)文件的元數(shù)據(jù),使目標(biāo)文件的元數(shù)據(jù)中指向共享數(shù)據(jù)塊的空 間內(nèi)容為空。
7.根據(jù)權(quán)利要求6所述的實(shí)現(xiàn)文件數(shù)據(jù)塊共享的裝置,其特征在于,還包括計(jì)數(shù)模塊, 用于在目標(biāo)文件的元數(shù)據(jù)引用所述共享數(shù)據(jù)塊的存儲(chǔ)地址后,在所述共享數(shù)據(jù)塊的原有引 用計(jì)數(shù)基礎(chǔ)上加1,在目標(biāo)文件的元數(shù)據(jù)中指向共享數(shù)據(jù)塊的空間內(nèi)容修改為空后,在所述 共享數(shù)據(jù)塊的原有引用計(jì)數(shù)基礎(chǔ)上減1,所述共享數(shù)據(jù)塊的引用計(jì)數(shù)等于所述共享數(shù)據(jù)塊 當(dāng)前被目標(biāo)文件的元數(shù)據(jù)引用的次數(shù)。
全文摘要
本發(fā)明涉及一種共享文件數(shù)據(jù)塊的方法及解除共享文件數(shù)據(jù)塊的方法,共享文件數(shù)據(jù)塊的方法包括步驟(a),根據(jù)共享數(shù)據(jù)塊所在源文件的元數(shù)據(jù)結(jié)構(gòu)查找到共享數(shù)據(jù)塊的存儲(chǔ)地址;步驟(b),修改目標(biāo)文件的元數(shù)據(jù),使目標(biāo)文件的元數(shù)據(jù)引用所述共享數(shù)據(jù)塊的存儲(chǔ)地址。應(yīng)用本發(fā)明可以直接將一個(gè)文件的某個(gè)或某些數(shù)據(jù)塊的數(shù)據(jù)直接轉(zhuǎn)換成另一個(gè)文件的指定位置的數(shù)據(jù),免去了讀取數(shù)據(jù)塊內(nèi)容和將數(shù)據(jù)塊內(nèi)容寫(xiě)入到另一個(gè)文件中指定位置的過(guò)程,提高了復(fù)制文件的速度,并且在復(fù)制數(shù)據(jù)塊的過(guò)程中不需要專(zhuān)門(mén)的復(fù)制空間,從而節(jié)省了存儲(chǔ)空間。
文檔編號(hào)G06F12/02GK101996228SQ20091030574
公開(kāi)日2011年3月30日 申請(qǐng)日期2009年8月18日 優(yōu)先權(quán)日2009年8月18日
發(fā)明者王鳴心 申請(qǐng)人:北京艾德斯科技有限公司