專利名稱:一種數(shù)據(jù)存儲(chǔ)方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)共享數(shù)據(jù)技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)存儲(chǔ)方法及裝置。
背景技術(shù):
隨著互聯(lián)網(wǎng)發(fā)展,在線視頻點(diǎn)播服務(wù)已成為互聯(lián)網(wǎng)中一項(xiàng)廣泛應(yīng)用的服 務(wù)。為了能夠?yàn)橛脩籼峁└忧逦傲鲿车脑诰€視頻,在線視頻點(diǎn)播業(yè)務(wù)中普遍使用 P2P (Peer-to-Peer,點(diǎn)對(duì)點(diǎn))或P2SP(Peer to Server&Peer,點(diǎn)對(duì)服務(wù)器和點(diǎn))技術(shù)來(lái)提高 視頻數(shù)據(jù)傳輸速度,保證視頻內(nèi)容播放流暢。P2P就是網(wǎng)絡(luò)中客戶端可以直接連接到網(wǎng)絡(luò)中其它客戶端去獲取數(shù)據(jù),而不是像 P2S(Peer to Server,點(diǎn)對(duì)服務(wù)器)那樣只能連接到服務(wù)器去獲取數(shù)據(jù)。即網(wǎng)絡(luò)中客戶端 在接收數(shù)據(jù)的同時(shí),還要向其它客戶端上傳本地接收的數(shù)據(jù)。P2SP實(shí)際上是對(duì)P2P技術(shù)的進(jìn)一步延伸,它不但支持P2P技術(shù),同時(shí)還通過(guò)檢索服 務(wù)器數(shù)據(jù)庫(kù)把服務(wù)器資源和P2P資源整合到了 一起。視頻點(diǎn)播服務(wù)商多采用P2SP技術(shù),客戶端在線視頻點(diǎn)播過(guò)程中,將接收的視頻數(shù) 據(jù)進(jìn)行緩存,當(dāng)有其它客戶端點(diǎn)播該客戶端緩存的視頻數(shù)據(jù)對(duì)應(yīng)的視頻內(nèi)容時(shí),除了可以 從服務(wù)器獲取該視頻內(nèi)容外,還可以從已緩存了該視頻內(nèi)容的一個(gè)或多個(gè)客戶端同時(shí)獲取 該視頻內(nèi)容,因此可大大提高視頻數(shù)據(jù)的傳輸速度??梢?jiàn),提高數(shù)據(jù)傳輸速度一個(gè)最可行的辦法是增加數(shù)據(jù)來(lái)源。P2P技術(shù)和P2SP技 術(shù)基于該原理在客戶端緩存其接收的數(shù)據(jù),由于這些數(shù)據(jù)可以被其他客戶端共享,本文將 客戶端緩存的這些數(shù)據(jù)稱為共享數(shù)據(jù),網(wǎng)絡(luò)中客戶端互相共享網(wǎng)絡(luò)中其它客戶端緩存的共 享數(shù)據(jù),從而增加了數(shù)據(jù)來(lái)源。客戶端對(duì)接收的共享數(shù)據(jù)采用的緩存方式具體為在客戶端確定要在線使用共享數(shù)據(jù)時(shí),由文件系統(tǒng)為要使用的共享數(shù)據(jù)分配硬盤 空間,并將接收的共享數(shù)據(jù)緩存在所分配的硬盤空間中。文件系統(tǒng)是操作系統(tǒng)中負(fù)責(zé)管理和存儲(chǔ)文件信息的軟件機(jī)構(gòu)。上述在線視頻點(diǎn)播 過(guò)程中緩存的共享數(shù)據(jù)并不是操作系統(tǒng)根據(jù)用戶指令進(jìn)行存儲(chǔ)的,本文將操作系統(tǒng)根據(jù)用 戶指令存儲(chǔ)的數(shù)據(jù)稱為用戶數(shù)據(jù)。采用該方式時(shí),由于共享數(shù)據(jù)經(jīng)文件系統(tǒng)按用戶數(shù)據(jù)對(duì)待進(jìn)行存儲(chǔ),在文件系統(tǒng) 有用戶數(shù)據(jù)寫入硬盤時(shí)不會(huì)再占用這些共享數(shù)據(jù)占用的硬盤空間。因此采用該方式的缺點(diǎn)是共享數(shù)據(jù)的緩存占用了硬盤空間使用戶硬盤空間變小, 可能會(huì)導(dǎo)致用戶數(shù)據(jù)無(wú)法正常存儲(chǔ),從而對(duì)用戶的使用產(chǎn)生影響。另外,也可以通過(guò)增加服務(wù)器的方式來(lái)提高數(shù)據(jù)傳輸速度,但是增加服務(wù)器會(huì)增 加成本,不適于廣泛推廣??梢?jiàn)現(xiàn)有通過(guò)增加數(shù)據(jù)源來(lái)提供數(shù)據(jù)傳輸速率的辦法中,會(huì)導(dǎo)致增加成本或占用 用戶硬盤空間,都不是理想的提高數(shù)據(jù)傳輸速率的方案。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種數(shù)據(jù)存儲(chǔ)方法及裝置,用于優(yōu)化用戶在線使用共享數(shù)據(jù)時(shí) 的共享存儲(chǔ)方法。本發(fā)明提供一種數(shù)據(jù)存儲(chǔ)方法,包括文件系統(tǒng)確定用于緩存共享數(shù)據(jù)的目標(biāo)存儲(chǔ)區(qū)域;文件系統(tǒng)將接收的共享數(shù)據(jù)緩存到所述目標(biāo)存儲(chǔ)區(qū)域,并標(biāo)記所述目標(biāo)存儲(chǔ)區(qū)域 為可用狀態(tài),以指示文件系統(tǒng)能夠根據(jù)用戶指令在該目標(biāo)存儲(chǔ)區(qū)域?qū)懭胗脩魯?shù)據(jù);在緩存過(guò)程中獨(dú)立于文件系統(tǒng)另外記錄所緩存的共享數(shù)據(jù)在所述目標(biāo)存儲(chǔ)區(qū)域 中的位置信息,以使根據(jù)所述位置信息能獲取共享數(shù)據(jù)。本發(fā)明還提供一種數(shù)據(jù)存儲(chǔ)裝置,包括目標(biāo)區(qū)域確定單元,用于利用文件系統(tǒng)確定用于緩存共享數(shù)據(jù)的目標(biāo)存儲(chǔ)區(qū)域;緩存單元,用于利用文件系統(tǒng)將接收的共享數(shù)據(jù)緩存到所述目標(biāo)存儲(chǔ)區(qū)域;標(biāo)記單元,用于利用文件系統(tǒng)將緩存有共享數(shù)據(jù)的目標(biāo)存儲(chǔ)區(qū)域標(biāo)記為可用狀 態(tài),以指示文件系統(tǒng)能夠根據(jù)用戶指令在該目標(biāo)存儲(chǔ)區(qū)域?qū)懭胗脩魯?shù)據(jù);記錄單元,用于緩存過(guò)程中獨(dú)立于文件系統(tǒng),另外記錄所緩存的共享數(shù)據(jù)在所述 目標(biāo)存儲(chǔ)區(qū)域中的位置信息,以使根據(jù)所述位置信息能獲取共享數(shù)據(jù)。利用本發(fā)明提供的數(shù)據(jù)存儲(chǔ)方法及裝置,具有以下有益效果可在數(shù)據(jù)共享網(wǎng)絡(luò) 中的各終端節(jié)點(diǎn)上存放共享數(shù)據(jù),而不會(huì)因占用終端節(jié)點(diǎn)用戶存儲(chǔ)空間而影響終端節(jié)點(diǎn)的 性能;提高了共享數(shù)據(jù)在終端節(jié)點(diǎn)存儲(chǔ)的穩(wěn)定性;通過(guò)將共享數(shù)據(jù)存放在各終端節(jié)點(diǎn),增 加了共享數(shù)據(jù)源,因此在不影響用戶使用及提供終端節(jié)點(diǎn)存儲(chǔ)穩(wěn)定性的情況下,大大提高 了用戶在線使用共享數(shù)據(jù)的數(shù)據(jù)傳輸速率。
圖1為本發(fā)明數(shù)據(jù)存儲(chǔ)方法流程圖;圖2為依照本發(fā)明實(shí)施例中數(shù)據(jù)存儲(chǔ)方法流程圖;圖3為依照本發(fā)明實(shí)施例將共享數(shù)據(jù)塊緩存到作為目標(biāo)存儲(chǔ)區(qū)域的存儲(chǔ)塊的流 程圖;圖4依照本發(fā)明實(shí)施例中示例的數(shù)據(jù)存儲(chǔ)方法流程圖;圖5為依照本發(fā)明實(shí)施例中示例的數(shù)據(jù)存儲(chǔ)方法對(duì)應(yīng)的硬盤使用情況示意圖;圖6依照本發(fā)明實(shí)施例中數(shù)據(jù)存儲(chǔ)裝置結(jié)構(gòu)圖。
具體實(shí)施例方式下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明提出的數(shù)據(jù)存儲(chǔ)方法及裝置進(jìn)行更詳細(xì)地說(shuō)明。為了克服現(xiàn)有完全通過(guò)文件系統(tǒng)為共享數(shù)據(jù)分配存儲(chǔ)空間而占有用戶硬盤存儲(chǔ) 空間,本發(fā)明提供一種數(shù)據(jù)存儲(chǔ)方法,在不減少用戶硬盤存儲(chǔ)空間且不容易被覆蓋的情況 提高了在線共享數(shù)據(jù)傳輸速率,如圖1所示,該方法包括步驟S101,文件系統(tǒng)確定用于緩存共享數(shù)據(jù)的目標(biāo)存儲(chǔ)區(qū)域A ;本發(fā)明實(shí)施例中緩存共享數(shù)據(jù)的目標(biāo)存儲(chǔ)區(qū)域A由文件系統(tǒng)確定。文件系統(tǒng)是操 作系統(tǒng)中負(fù)責(zé)管理和存儲(chǔ)文件信息的軟件機(jī)構(gòu)。例如FAT(File Allocation Table)文件系統(tǒng)、NTFS (New Technology File System)文件系統(tǒng)等。具體的應(yīng)用場(chǎng)景可以是用戶在線使用共享數(shù)據(jù)X如用戶進(jìn)行在線視頻點(diǎn)播,對(duì)于 該應(yīng)用場(chǎng)景,用戶點(diǎn)擊了某個(gè)視頻文件的點(diǎn)播按鈕時(shí),則說(shuō)明用戶要在線使用共享數(shù)據(jù)。在 線使用共享數(shù)據(jù)的特點(diǎn)是,用戶僅需要讀取共享數(shù)據(jù),對(duì)共享數(shù)據(jù)的存儲(chǔ)不是必要的。用戶 要在線使用共享數(shù)據(jù)時(shí),會(huì)對(duì)用戶接收的共享數(shù)據(jù)進(jìn)行緩存,具體緩存的數(shù)據(jù)在存儲(chǔ)單元 (比如硬盤)中的存儲(chǔ)位置是由文件系統(tǒng)確定的。步驟S102,文件系統(tǒng)將接收的共享數(shù)據(jù)χ緩存到目標(biāo)存儲(chǔ)區(qū)域A,并標(biāo)記目標(biāo)存 儲(chǔ)區(qū)域A為可用狀態(tài),以指示文件系統(tǒng)能夠根據(jù)用戶指令在該目標(biāo)存儲(chǔ)區(qū)域A寫入用戶數(shù) 據(jù);這樣,文件系統(tǒng)根據(jù)用戶指令確定要向硬盤空間寫入用戶數(shù)據(jù)時(shí),從硬盤空間中 的標(biāo)記為可用狀態(tài)的存儲(chǔ)區(qū)域中,為要寫入的用戶數(shù)據(jù)分配存儲(chǔ)空間;并將用戶數(shù)據(jù)寫入 到為該用戶數(shù)據(jù)所分配的存儲(chǔ)空間中。對(duì)于文件系統(tǒng)接收共享數(shù)據(jù)χ的應(yīng)用場(chǎng)景,可以是用戶在線使用共享數(shù)據(jù)X過(guò)程 接收共享數(shù)據(jù)X,也可以是預(yù)先由服務(wù)器部署的。文件系統(tǒng)確定了共享數(shù)據(jù)X的目標(biāo)存儲(chǔ)區(qū) 域A,并在用戶接收共享數(shù)據(jù)過(guò)程中將接收的共享數(shù)據(jù)X緩存到目標(biāo)存儲(chǔ)區(qū)域A。不同的是 文件系統(tǒng)將緩存了共享數(shù)據(jù)χ的目標(biāo)存儲(chǔ)區(qū)域A標(biāo)記為可用狀態(tài)。標(biāo)記為可用狀態(tài)意味著 如果文件系統(tǒng)接收用戶指令要寫入新的用戶數(shù)據(jù)時(shí),該目標(biāo)存儲(chǔ)區(qū)域A對(duì)于文件系統(tǒng)來(lái)說(shuō) 是用戶存儲(chǔ)可用空間,且在有新的用戶數(shù)據(jù)寫入目標(biāo)存儲(chǔ)區(qū)域A之前,目標(biāo)存儲(chǔ)區(qū)域A仍存 儲(chǔ)的是共享數(shù)據(jù)X。注意本發(fā)明中標(biāo)記為可用狀態(tài),用于指示文件系統(tǒng)可在目標(biāo)存儲(chǔ)區(qū)域A寫入用戶 數(shù)據(jù),但并不指示能夠?qū)懭牍蚕頂?shù)據(jù),所以緩存有共享數(shù)據(jù)的目標(biāo)存儲(chǔ)區(qū)域A對(duì)于文件系 統(tǒng)來(lái)說(shuō)為用戶存儲(chǔ)可用空間,因此共享數(shù)據(jù)χ的緩存對(duì)于文件系統(tǒng)是不可見(jiàn),因此緩存共 享數(shù)據(jù)χ的目標(biāo)存儲(chǔ)區(qū)域A被文件系統(tǒng)視為裸盤。步驟S103,在緩存過(guò)程中,獨(dú)立于文件系統(tǒng)另外記錄所緩存的共享數(shù)據(jù)在目標(biāo)存 儲(chǔ)區(qū)域A中的位置信息,以使網(wǎng)絡(luò)中需要使用該共享數(shù)據(jù)的終端能夠根據(jù)所述位置信息獲 取共享數(shù)據(jù)。既然共享數(shù)據(jù)χ的緩存對(duì)文件系統(tǒng)是不可見(jiàn)的,所以本發(fā)明要獨(dú)立于文件系統(tǒng)另 外記錄所緩存的共享數(shù)據(jù)在目標(biāo)存儲(chǔ)區(qū)域A中的位置信息,具體地,如記錄A的物理位置索 引及A緩存的共享數(shù)據(jù)文件名等。這樣在接收到網(wǎng)絡(luò)中任一用戶包括該用戶本身的共享數(shù) 據(jù)請(qǐng)求時(shí),可以根據(jù)另外記錄的上述位置信息檢索到請(qǐng)求的共享數(shù)據(jù),從而實(shí)現(xiàn)向網(wǎng)絡(luò)中 需要使用該共享數(shù)據(jù)的終端能夠獲取該共享數(shù)據(jù)??梢?jiàn),本發(fā)明對(duì)共享數(shù)據(jù)的緩存并不是完全獨(dú)立于文件系統(tǒng)盲目存儲(chǔ),其存儲(chǔ)位 置是由文件系統(tǒng)確定,本發(fā)明對(duì)共享數(shù)據(jù)的存儲(chǔ)也并不是完全由文件系統(tǒng)進(jìn)行管理,文件 系統(tǒng)在完成確定緩存位置及將共享數(shù)據(jù)緩存到其確定的緩存位置后,會(huì)將這些緩存位置標(biāo) 記為可用狀態(tài),相當(dāng)于釋放了共享數(shù)據(jù)占用的存儲(chǔ)空間,而本發(fā)明通過(guò)獨(dú)立于文件系統(tǒng)另 外記錄所緩存共享數(shù)據(jù)的存儲(chǔ)位置信息,可以實(shí)現(xiàn)向網(wǎng)絡(luò)中任一用戶終端傳輸共享數(shù)據(jù)。因此,本發(fā)明在不影響用戶體驗(yàn)的前提下,使用閑置的硬盤空間和帶寬,可在數(shù)據(jù) 共享網(wǎng)絡(luò)中的各終端節(jié)點(diǎn)上存放共享數(shù)據(jù),而不會(huì)因占用終端節(jié)點(diǎn)用戶存儲(chǔ)空間而影響終 端節(jié)點(diǎn)的性能;提高了共享數(shù)據(jù)在終端節(jié)點(diǎn)存儲(chǔ)的穩(wěn)定性;通過(guò)將共享數(shù)據(jù)存放在各終端節(jié)點(diǎn),增加了共享數(shù)據(jù)源,因此在不影響用戶使用及提供終端節(jié)點(diǎn)存儲(chǔ)穩(wěn)定性的情況下提 高了用戶在線使用共享數(shù)據(jù)的數(shù)據(jù)傳輸速率。依照本發(fā)明的較佳實(shí)施例中,為了進(jìn)一步降低共享數(shù)據(jù)被覆蓋的風(fēng)險(xiǎn),大的共享 數(shù)據(jù)文件應(yīng)該被分散成“塊”,寫在硬盤的不同位置。目前文件系統(tǒng)最小空間分配單位是 “簇”,但對(duì)于裸盤應(yīng)用來(lái)說(shuō),以“簇”為單位分散數(shù)據(jù),讀寫效率過(guò)低,且空間管理代價(jià)較大。 因此,本發(fā)明較佳實(shí)施例中,文件系統(tǒng)將若干連續(xù)的“簇”組合在一起,在邏輯上構(gòu)成預(yù)設(shè)容 量的存儲(chǔ)塊,這樣裸盤空間分配和管理將以存儲(chǔ)塊為基本單位,進(jìn)一步降低共享數(shù)據(jù)被覆 蓋風(fēng)險(xiǎn)且方便了裸盤管理。本實(shí)施例中的數(shù)據(jù)存儲(chǔ)方法,如圖2所示,包括步驟S201,確定用戶要接收的的共享數(shù)據(jù)χ的總數(shù)據(jù)量Xl ;如用戶在線視頻點(diǎn)播時(shí),如果點(diǎn)擊了某個(gè)視頻文件,可與獲取到該視頻文件的總 大小。步驟S202,文件系統(tǒng)獲取硬盤空間中未寫入數(shù)據(jù)的存儲(chǔ)塊;文件系統(tǒng)作為對(duì)文件存儲(chǔ)和管理的系統(tǒng),能夠獲取硬盤空間的數(shù)據(jù)占用請(qǐng)情況, 具體地,可用DeviceIOControl函數(shù)的FSCTL_GET_VOLUME_BITMAP選項(xiàng)獲知磁盤的bitmap 的使用情況,以便從硬盤中未被寫入任何數(shù)據(jù)的存儲(chǔ)空間作為目標(biāo)存儲(chǔ)區(qū)域。本實(shí)施例中對(duì)存儲(chǔ)空間進(jìn)行了存儲(chǔ)塊劃分,因此以存儲(chǔ)塊為單位獲取未寫入任何 數(shù)據(jù)的存儲(chǔ)塊。步驟S203,將未寫入數(shù)據(jù)的存儲(chǔ)塊中至少一個(gè)存儲(chǔ)塊作為目標(biāo)存儲(chǔ)區(qū)域A,目標(biāo) 存儲(chǔ)區(qū)域A的總?cè)萘坎恍∮诳倲?shù)據(jù)量Xl ;優(yōu)選地,選取存儲(chǔ)塊時(shí),選取使用頻率比較低即不經(jīng)常被使用的存儲(chǔ)塊作為目標(biāo) 存儲(chǔ)區(qū)域A。這樣可以降低共享數(shù)據(jù)被覆蓋的風(fēng)險(xiǎn)。本實(shí)施例中文件系統(tǒng)通過(guò)建立分塊表維護(hù)劃分得到的存儲(chǔ)塊使用信息,優(yōu)選地, 根據(jù)文件系統(tǒng)建立的用于維護(hù)劃分得到的存儲(chǔ)塊使用信息的分塊表,獲取不同存儲(chǔ)塊對(duì)應(yīng) 的使用頻率及當(dāng)前使用情況;根據(jù)不同存儲(chǔ)塊對(duì)應(yīng)的使用頻率及當(dāng)前使用情況,確定硬盤 空間中未寫入數(shù)據(jù)的存儲(chǔ)塊;按使用頻率從低到高的順序選取未寫入數(shù)據(jù)的存儲(chǔ)塊作為目 標(biāo)存儲(chǔ)區(qū)域。上述劃分得到每一存儲(chǔ)塊包括若干個(gè)連續(xù)的簇,分塊表維護(hù)的每一存儲(chǔ)塊使用信 息,具體包括1)存儲(chǔ)塊中有任一簇被寫入用戶數(shù)據(jù)時(shí),將該存儲(chǔ)塊的當(dāng)前使用情況標(biāo)記為系統(tǒng) 已用空間;有此標(biāo)記的存儲(chǔ),既不能寫入用戶數(shù)據(jù)也不能寫入共享數(shù)據(jù);2)存儲(chǔ)塊中每一簇既未被寫入用戶數(shù)據(jù)且未被寫入共享數(shù)據(jù)時(shí),將該存儲(chǔ)塊標(biāo)記 為裸盤可用空間;有此標(biāo)記的存儲(chǔ)塊,既可以寫入用戶據(jù)也可以寫入共享數(shù)據(jù)。3)存儲(chǔ)塊中有所有簇被寫入共享數(shù)據(jù)時(shí),將存儲(chǔ)塊標(biāo)記為裸盤已用空間;由于共享數(shù)據(jù)塊是以窗體文件方式移動(dòng)的,所以如果存儲(chǔ)塊緩存共享數(shù)據(jù)時(shí)所有 簇被寫入共享數(shù)據(jù)。本實(shí)施例從標(biāo)記為裸盤可用空間的存儲(chǔ)塊中,按使用頻率從低到高的順序選取存儲(chǔ)塊作為目標(biāo)存儲(chǔ)區(qū)域。標(biāo)記為裸盤已用空間的存儲(chǔ)塊對(duì)于文件系統(tǒng)來(lái)說(shuō)為可用狀態(tài),可以被寫入用戶數(shù) 據(jù)。從而實(shí)現(xiàn)以塊為單位標(biāo)記。對(duì)于標(biāo)記為系統(tǒng)已用空間,但有部分簇被寫入用戶數(shù)據(jù)部 分簇被寫入共享數(shù)據(jù)的存儲(chǔ),可以進(jìn)一步細(xì)化該存儲(chǔ)的標(biāo)記。以實(shí)現(xiàn)向該存儲(chǔ)塊中寫入共 享數(shù)據(jù)的位置能夠?qū)懭胗脩魯?shù)據(jù)。步驟S204,將接收的共享數(shù)據(jù)分成與預(yù)設(shè)容量相匹配的共享數(shù)據(jù)塊后,分別緩存 到作為目標(biāo)存儲(chǔ)區(qū)域的存儲(chǔ)塊中;這樣,實(shí)現(xiàn)了一個(gè)的共享數(shù)據(jù)文件被拆分成多個(gè)數(shù)據(jù)塊的分塊存儲(chǔ),一方面方便 裸盤管理,一方面降低共享數(shù)據(jù)被覆蓋的風(fēng)險(xiǎn)。步驟S205,標(biāo)記緩存有共享數(shù)據(jù)的作為目標(biāo)存儲(chǔ)區(qū)域A的存儲(chǔ)塊為可用狀態(tài),以 指示文件系統(tǒng)能夠根據(jù)用戶指令在這存儲(chǔ)塊寫入用戶數(shù)據(jù);通過(guò)該步驟,作為目標(biāo)存儲(chǔ)區(qū)域A的存儲(chǔ)塊對(duì)于文件系統(tǒng)來(lái)說(shuō)被視為用戶存儲(chǔ)可 用空間。文件系統(tǒng)將作為目標(biāo)存儲(chǔ)區(qū)域A的存儲(chǔ)塊標(biāo)記為可用狀態(tài),此時(shí)如果文件系統(tǒng)有 新的用戶數(shù)據(jù)寫入請(qǐng)求,則此部分存儲(chǔ)塊可接受新的用戶數(shù)據(jù)寫入從而覆蓋原數(shù)據(jù)塊,但 在有新的用戶數(shù)據(jù)寫入之前,此存儲(chǔ)塊仍存儲(chǔ)的是之前寫入的共享數(shù)據(jù)塊。步驟S206,在緩存過(guò)程中獨(dú)立于文件系統(tǒng),另外記錄所緩存的共享數(shù)據(jù)在作為目 標(biāo)存儲(chǔ)區(qū)域A的存儲(chǔ)塊中位置信息,以使網(wǎng)絡(luò)中需要使用該共享數(shù)據(jù)的終端能夠獲取共享 數(shù)據(jù)。本發(fā)明實(shí)施例中在緩存過(guò)程中記錄所緩存的共享數(shù)據(jù)在所述目標(biāo)存儲(chǔ)區(qū)域中位 置信息,具體包括獲取緩存有共享數(shù)據(jù)的存儲(chǔ)塊對(duì)應(yīng)的位置信息,位置信息包括該存儲(chǔ) 塊所緩存的共享數(shù)據(jù)文件名和該存儲(chǔ)塊的物理位置索引;將獲取的不同存儲(chǔ)塊對(duì)應(yīng)的位置 信息保存到能夠被操作系統(tǒng)查找到的文件中。優(yōu)選地,如圖3所示,步驟S204具體包括以下步驟步驟S2041,文件系統(tǒng)創(chuàng)建至少一個(gè)窗體文件,并按設(shè)定規(guī)則為每一窗體文件分配 預(yù)設(shè)容量的存儲(chǔ)區(qū)域,窗體文件總大小與總數(shù)據(jù)量Xi相匹配;在需要向存儲(chǔ)空間寫入共享數(shù)據(jù)χ時(shí),文件系統(tǒng)創(chuàng)建窗體文件并為每一個(gè)創(chuàng)建的 窗體文件分配預(yù)設(shè)容量的存儲(chǔ)空間,這樣窗體文件大小與存儲(chǔ)塊大小相等,總的窗體文件 大小與總數(shù)據(jù)量Xl相匹配,因此可以先將共享數(shù)據(jù)文件放在窗體文件中。具體地,可以利用Windows操作系統(tǒng)提供的創(chuàng)建窗體文件函數(shù)CreateFile創(chuàng)建窗 體文件。步驟S2042,通過(guò)將接收的共享數(shù)據(jù)寫入到創(chuàng)建的窗體文件中,將接收的共享數(shù)據(jù) 分成與預(yù)設(shè)容量相匹配的共享數(shù)據(jù)塊;步驟S2043,將寫入共享數(shù)據(jù)的窗體文件按一一對(duì)應(yīng)方式移至作為目標(biāo)存儲(chǔ)區(qū)域 的存儲(chǔ)塊。利用創(chuàng)建窗體文件函數(shù)CreateFile創(chuàng)建窗體文件時(shí),窗體文件的位置是由確定 算法按設(shè)定規(guī)則決定的,而不是任意指定的,因此文件系統(tǒng)創(chuàng)建的窗體文件幾乎不會(huì)剛好 與存儲(chǔ)塊的位置重合,所以要經(jīng)過(guò)一次移動(dòng)的過(guò)程使共享數(shù)據(jù)塊存儲(chǔ)于存儲(chǔ)塊中,將共享 數(shù)據(jù)塊移動(dòng)到預(yù)先指定的存儲(chǔ)塊,這樣將便于對(duì)存儲(chǔ)塊進(jìn)行管理。
具體地,可以利用操作系統(tǒng)提供的移動(dòng)窗體文件函數(shù)NtFsControlFile,將寫入共 享數(shù)據(jù)的窗體文件按一一對(duì)應(yīng)方式移至作為目標(biāo)存儲(chǔ)區(qū)域的存儲(chǔ)塊。Windows提供的移動(dòng)窗體文件函數(shù)NtFsControlFile可將數(shù)據(jù)塊從磁盤中的一個(gè) 存儲(chǔ)位置移至另一個(gè)存儲(chǔ)位置,Windows中的磁盤整理程序即是通過(guò)該函數(shù)實(shí)現(xiàn),磁盤整理 程序是將在磁盤中不連續(xù)存儲(chǔ)的數(shù)據(jù)轉(zhuǎn)至連續(xù)的物理存儲(chǔ)位置,并可指定目標(biāo)存儲(chǔ)位置。優(yōu)選地,將寫入共享數(shù)據(jù)的窗體文件按一一對(duì)應(yīng)方式移至作為目標(biāo)存儲(chǔ)區(qū)域的存 儲(chǔ)塊過(guò)程中,還包括步驟S2044,確定目標(biāo)存儲(chǔ)區(qū)域中有存儲(chǔ)塊已寫入共享數(shù)據(jù)塊之外的數(shù)據(jù)時(shí),停止 向該存儲(chǔ)塊移動(dòng)窗體文件;有可能在移動(dòng)過(guò)程,某個(gè)存儲(chǔ)塊被文件系統(tǒng)寫入用戶數(shù)據(jù)而更新為系統(tǒng)已用空 間,此時(shí)要停止向該存儲(chǔ)塊移動(dòng)窗體文件。步驟S2045,待另外確定未寫入數(shù)據(jù)的存儲(chǔ)塊后,將停止移動(dòng)的窗體文件重新移動(dòng) 至另外確定的存儲(chǔ)塊中。文件系統(tǒng)實(shí)現(xiàn)文件的存儲(chǔ)管理時(shí),對(duì)于一個(gè)文件的存儲(chǔ)通常會(huì)記錄該文件的物理 位置索引,且文件系統(tǒng)依據(jù)物理位置索引確定用戶存儲(chǔ)可用空間。文件系統(tǒng)刪除一個(gè)文件 時(shí),存在一個(gè)特點(diǎn)僅刪除記錄的該文件在硬盤中物理位置的索引,而不覆蓋數(shù)據(jù)本身,這 樣該文件占用的硬盤空間被文件系統(tǒng)視為用戶存儲(chǔ)可用空間。因此,只要另外記錄文件的 物理位置索引,仍然可以讀取被文件系統(tǒng)刪除的文件。優(yōu)選地,文件系統(tǒng)將目標(biāo)存儲(chǔ)區(qū)域標(biāo)記為可用狀態(tài),具體包括通過(guò)刪除移動(dòng)后的 窗體文件在文件系統(tǒng)中的物理位置索引,將作為目標(biāo)存儲(chǔ)區(qū)域的存儲(chǔ)塊標(biāo)記為可用狀態(tài)。下面結(jié)合一個(gè)具體示例說(shuō)明本發(fā)明實(shí)施例提供的數(shù)據(jù)存儲(chǔ)過(guò)程,如圖4所示,包 括步驟S401,確定用戶要接收的共享數(shù)據(jù)χ的總數(shù)據(jù)量Xl ;假設(shè)共享數(shù)據(jù)χ的總數(shù)據(jù)量不大于劃分的存儲(chǔ)塊的容量。步驟S402,文件系統(tǒng)獲取硬盤空間中未寫入數(shù)據(jù)的存儲(chǔ)塊;如圖5所示,掃描整體硬盤,獲取到以存儲(chǔ)塊為單位的硬盤基本信息及使用狀態(tài), 包括各存儲(chǔ)塊的編號(hào)及使用狀態(tài),從而獲取到未寫入數(shù)據(jù)的存儲(chǔ)塊;步驟S403,從未寫入數(shù)據(jù)的存儲(chǔ)塊選取編號(hào)為4的存儲(chǔ)塊作為目標(biāo)存儲(chǔ)區(qū)域A,作 為寫入共享數(shù)據(jù)x的目標(biāo)位置,如圖5中Stepl對(duì)應(yīng)部分;步驟S404,創(chuàng)建一個(gè)窗體文件,并按設(shè)定規(guī)則為該窗體文件分配預(yù)設(shè)容量的編號(hào) 為m的存儲(chǔ)塊;步驟S405,將接收的共享數(shù)據(jù)χ寫入到創(chuàng)建的窗體文件中,即將共享數(shù)據(jù)寫入到 存儲(chǔ)塊m,如圖5所示中st印2對(duì)應(yīng)部分;窗體文件占用的硬盤空間由操作系統(tǒng)決定,通常不會(huì)與目標(biāo)位置重合。步驟S406,調(diào)用操作系統(tǒng)API,將寫入共享數(shù)據(jù)的窗體文件移至編號(hào)為4的存儲(chǔ)塊 中,如圖5中st印3對(duì)應(yīng)部分。步驟S407,刪除移動(dòng)后的窗體文件在文件系統(tǒng)中的物理位置索引,釋放窗體文件 占用的硬盤空間,并在分塊表將存儲(chǔ)塊4標(biāo)記為裸盤已用空間,如圖5中st印4對(duì)應(yīng)部分。 本文將存儲(chǔ)塊4中存儲(chǔ)的共享數(shù)據(jù)稱為裸盤文件。
11
該步驟中,編號(hào)為4的存儲(chǔ)塊中,寫入了有效的共享數(shù)據(jù)。由于最后刪除了窗體文 件在文件系統(tǒng)中的物理位置索引,對(duì)文件系統(tǒng)來(lái)說(shuō),存儲(chǔ)塊4區(qū)域未被使用,仍然屬于可用 空間。這樣,文件系統(tǒng)仍然可以向存儲(chǔ)塊4區(qū)域?qū)懭胗脩魯?shù)據(jù),而在被覆蓋之前,存儲(chǔ)塊4 區(qū)域中的保存的裸盤文件一直有效。步驟S408,對(duì)于已經(jīng)寫入共享數(shù)據(jù)的存儲(chǔ)塊,記錄該存儲(chǔ)塊對(duì)應(yīng)的位置信息,包括 存儲(chǔ)塊物理位置索引、存儲(chǔ)的共享數(shù)據(jù)文件名、在文件中的偏移量、寫入時(shí)間、狀態(tài)(正常、 損壞、破損但可恢復(fù))等。將全部寫入共享數(shù)據(jù)的存儲(chǔ)塊即標(biāo)記為裸盤已用空間的存儲(chǔ)塊 的位置信息保存到一個(gè)操作系統(tǒng)可見(jiàn)的正常文件中,作為全部共享數(shù)據(jù)的索引。該步驟的記錄過(guò)程是在向步驟S406中緩存共享數(shù)據(jù)塊過(guò)程中完成的。本發(fā)明提供的上述數(shù)據(jù)存儲(chǔ)方法,可在網(wǎng)絡(luò)節(jié)點(diǎn)的存儲(chǔ)設(shè)備中存儲(chǔ)共享數(shù)據(jù)以備 用,且不會(huì)占用節(jié)點(diǎn)的存儲(chǔ)空間的方法,將共享數(shù)據(jù)存放于網(wǎng)絡(luò)節(jié)點(diǎn)中,可大大節(jié)省共享數(shù) 據(jù)提供者的存儲(chǔ)成本。具體應(yīng)用時(shí),本發(fā)明提供的數(shù)據(jù)存儲(chǔ)方法,可在P2P網(wǎng)絡(luò)中的各P節(jié)點(diǎn)存放共享數(shù) 據(jù),例如可將廣告等不是很重要的數(shù)據(jù)內(nèi)容以該方法存放在P中,需要時(shí)可及時(shí)從P獲取, 而在各P節(jié)點(diǎn)需要使用存儲(chǔ)空間存放非P2P網(wǎng)絡(luò)共享數(shù)據(jù)時(shí),可即時(shí)釋放出該部分存放共 享數(shù)據(jù)的存儲(chǔ)空間,以便P進(jìn)行使用,而不會(huì)消耗P過(guò)多資源。依照本發(fā)明另一實(shí)施例中,還提供一種數(shù)據(jù)存儲(chǔ)裝置,如圖6所示,包括目標(biāo) 區(qū)域確定單元601,用于利用文件系統(tǒng)確定用于緩存共享數(shù)據(jù)的目標(biāo)存儲(chǔ)區(qū)域;緩存單元 602,用于利用文件系統(tǒng)將接收的共享數(shù)據(jù)緩存到所述目標(biāo)存儲(chǔ)區(qū)域;標(biāo)記單元603,用于 利用文件系統(tǒng)將緩存有共享數(shù)據(jù)的目標(biāo)存儲(chǔ)區(qū)域標(biāo)記為可用狀態(tài),以指示文件系統(tǒng)能夠根 據(jù)用戶指令在該目標(biāo)存儲(chǔ)區(qū)域?qū)懭胗脩魯?shù)據(jù);記錄單元604,用于緩存過(guò)程中獨(dú)立于文件 系統(tǒng),另外記錄所緩存的共享數(shù)據(jù)在所述目標(biāo)存儲(chǔ)區(qū)域中位置信息,以使根據(jù)所述位置信 息能獲取該共享數(shù)據(jù)。較佳地,該裝置還包括存儲(chǔ)塊劃分單元605,用于在確定用于緩存共享數(shù)據(jù)的目 標(biāo)存儲(chǔ)區(qū)域之前,利用文件系統(tǒng)將硬盤空間在邏輯上劃分為至少兩個(gè)預(yù)設(shè)容量的存儲(chǔ)塊; 所述目標(biāo)區(qū)域確定單元601具體包括數(shù)據(jù)量確定單元601a,用于確定要接收的共享數(shù)據(jù) 的總數(shù)據(jù)量;空閑存儲(chǔ)塊獲取單元601b,用于利用文件系統(tǒng)獲取硬盤空間中未寫入數(shù)據(jù)的 存儲(chǔ)塊;目標(biāo)存儲(chǔ)塊確定單元601c,利用文件系統(tǒng)將未寫入數(shù)據(jù)的存儲(chǔ)塊中至少一個(gè)存 儲(chǔ)塊作為目標(biāo)存儲(chǔ)區(qū)域,所述目標(biāo)存儲(chǔ)區(qū)域的總?cè)萘坎恍∮谒隹倲?shù)據(jù)量;所述緩存單元 602,具體用于利用文件系統(tǒng)將接收的共享數(shù)據(jù)分成與預(yù)設(shè)容量相匹配的共享數(shù)據(jù)塊后,分 別緩存到作為目標(biāo)存儲(chǔ)區(qū)域的存儲(chǔ)塊中。較佳地,所述緩存單元602,具體包括窗體文件創(chuàng)建單元602a,用于利用文件系 統(tǒng)創(chuàng)建至少一個(gè)窗體文件,并按設(shè)定規(guī)則為每一窗體文件分配所述預(yù)設(shè)容量的存儲(chǔ)區(qū)域, 所述窗體文件總大小與所述總數(shù)據(jù)量相匹配;分塊寫入單元602b,用于利用文件系統(tǒng)通過(guò) 將接收的共享數(shù)據(jù)寫入到創(chuàng)建的窗體文件中,將接收的共享數(shù)據(jù)分成與預(yù)設(shè)容量相匹配 的共享數(shù)據(jù)塊;窗體文件移動(dòng)單元602c,用于利用文件系統(tǒng)將寫入共享數(shù)據(jù)的窗體文件按 一一對(duì)應(yīng)方式移至作為目標(biāo)存儲(chǔ)區(qū)域的存儲(chǔ)塊。較佳地,該所述緩存單元還包括停止移動(dòng)單元602d,用于將寫入共享數(shù)據(jù)的窗 體文件按一一對(duì)應(yīng)方式移至作為目標(biāo)存儲(chǔ)區(qū)域的存儲(chǔ)塊過(guò)程中,確定目標(biāo)存儲(chǔ)區(qū)域中有存儲(chǔ)塊已寫入共享數(shù)據(jù)塊之外的數(shù)據(jù)時(shí),停止向該存儲(chǔ)塊移動(dòng)窗體文件;重新移動(dòng)單元 602e,用于待另外確定未寫入數(shù)據(jù)的存儲(chǔ)塊后,將停止移動(dòng)的窗體文件重新移動(dòng)至另外確 定的存儲(chǔ)塊中。所述窗體文件創(chuàng)建單元602a具體利用操作系統(tǒng)提供的創(chuàng)建窗體文件函數(shù),創(chuàng)建 至少一個(gè)窗體文件;所述窗體文件移動(dòng)單元602c,具體利用操作系統(tǒng)提供的移動(dòng)窗體文件 函數(shù),將寫入共享數(shù)據(jù)的窗體文件按一一對(duì)應(yīng)方式移至作為目標(biāo)存儲(chǔ)區(qū)域的存儲(chǔ)塊。本實(shí)施例中所述標(biāo)記單元603,具體用于通過(guò)刪除移動(dòng)后的窗體文件在文件系統(tǒng) 中的物理位置索引,將作為目標(biāo)存儲(chǔ)區(qū)域的存儲(chǔ)塊標(biāo)記為可用狀態(tài);所述記錄單元604,具 體用于在緩存過(guò)程中,獨(dú)立于文件系統(tǒng)另外記錄所緩存的共享數(shù)據(jù)在作為目標(biāo)存儲(chǔ)區(qū)域的 存儲(chǔ)塊中的位置信息。較佳地,所述空閑存儲(chǔ)塊獲取單元601b,具體包括存儲(chǔ)塊使用信息獲取單元, 用于根據(jù)文件系統(tǒng)建立的用于維護(hù)劃分得到的存儲(chǔ)塊使用信息的分塊表,獲取不同存儲(chǔ) 塊對(duì)應(yīng)的使用頻率及當(dāng)前使用情況;空閑存儲(chǔ)塊確定單元,用于根據(jù)不同存儲(chǔ)塊對(duì)應(yīng)的使 用頻率及當(dāng)前使用情況,確定硬盤空間中未寫入數(shù)據(jù)的存儲(chǔ)塊;所述目標(biāo)存儲(chǔ)塊確定單元 601c,具體用于按使用頻率從低到高的順序選取未寫入數(shù)據(jù)的存儲(chǔ)塊作為目標(biāo)存儲(chǔ)區(qū)域。所述記錄單元604,具體包括位置信息獲取單元604a,用于在緩存過(guò)程中獲取緩 存有共享數(shù)據(jù)的存儲(chǔ)塊對(duì)應(yīng)的位置信息,所述位置信息包括該存儲(chǔ)塊所緩存的共享數(shù)據(jù)文 件名和該存儲(chǔ)塊的物理位置索引;集中存儲(chǔ)單元604b,用于獨(dú)立于文件系統(tǒng),將獲取的不 同存儲(chǔ)塊對(duì)應(yīng)的位置信息保存到能夠被操作系統(tǒng)查找到的文件中。顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精 神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍 之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
1權(quán)利要求
一種數(shù)據(jù)存儲(chǔ)方法,其特征在于,包括文件系統(tǒng)確定用于緩存共享數(shù)據(jù)的目標(biāo)存儲(chǔ)區(qū)域;文件系統(tǒng)將接收的共享數(shù)據(jù)緩存到所述目標(biāo)存儲(chǔ)區(qū)域,并標(biāo)記所述目標(biāo)存儲(chǔ)區(qū)域?yàn)榭捎脿顟B(tài),以指示文件系統(tǒng)能夠根據(jù)用戶指令在該目標(biāo)存儲(chǔ)區(qū)域?qū)懭胗脩魯?shù)據(jù);在緩存過(guò)程中獨(dú)立于文件系統(tǒng)另外記錄所緩存的共享數(shù)據(jù)在所述目標(biāo)存儲(chǔ)區(qū)域中的位置信息,以使根據(jù)所述位置信息能獲取該共享數(shù)據(jù)。
2.如權(quán)利要求1所述的方法,其特征在于所述文件系統(tǒng)確定用于緩存共享數(shù)據(jù)的目 標(biāo)存儲(chǔ)區(qū)域之前,還包括所述文件系統(tǒng)將硬盤空間在邏輯上劃分為至少兩個(gè)預(yù)設(shè)容量的存儲(chǔ)塊; 所述文件系統(tǒng)確定用于緩存共享數(shù)據(jù)的目標(biāo)存儲(chǔ)區(qū)域,具體包括 確定要接收的共享數(shù)據(jù)的總數(shù)據(jù)量; 獲取硬盤空間中未寫入數(shù)據(jù)的存儲(chǔ)塊;將未寫入數(shù)據(jù)的存儲(chǔ)塊中至少一個(gè)存儲(chǔ)塊作為目標(biāo)存儲(chǔ)區(qū)域,所述目標(biāo)存儲(chǔ)區(qū)域的總 容量不小于所述總數(shù)據(jù)量;所述文件系統(tǒng)將接收的共享數(shù)據(jù)緩存到所述目標(biāo)存儲(chǔ)區(qū)域,具體包括 將接收的共享數(shù)據(jù)分成與預(yù)設(shè)容量相匹配的共享數(shù)據(jù)塊后,分別緩存到作為目標(biāo)存儲(chǔ) 區(qū)域的存儲(chǔ)塊中。
3.如權(quán)利要求2所述的方法,其特征在于,所述文件系統(tǒng)將接收的共享數(shù)據(jù)分成與預(yù) 設(shè)容量相匹配的共享數(shù)據(jù)塊,具體包括文件系統(tǒng)創(chuàng)建至少一個(gè)窗體文件,并按設(shè)定規(guī)則為每一窗體文件分配所述預(yù)設(shè)容量的 存儲(chǔ)區(qū)域,所述窗體文件總大小與所述總數(shù)據(jù)量相匹配;通過(guò)將接收的共享數(shù)據(jù)寫入到創(chuàng)建的窗體文件中,將接收的共享數(shù)據(jù)分成與預(yù)設(shè)容量 相匹配的共享數(shù)據(jù)塊;所述將共享數(shù)據(jù)塊分別緩存到作為目標(biāo)存儲(chǔ)區(qū)域的存儲(chǔ)塊中,具體包括 將寫入共享數(shù)據(jù)的窗體文件按一一對(duì)應(yīng)方式移至作為目標(biāo)存儲(chǔ)區(qū)域的存儲(chǔ)塊。
4.如權(quán)利要求3所述的方法,其特征在于,所述文件系統(tǒng)將所述目標(biāo)存儲(chǔ)區(qū)域標(biāo)記為 可用狀態(tài),具體包括通過(guò)刪除移動(dòng)后的窗體文件在文件系統(tǒng)中的物理位置索引,將作為目標(biāo)存儲(chǔ)區(qū)域的存 儲(chǔ)塊標(biāo)記為可用狀態(tài);所述在緩存過(guò)程中另外記錄所緩存的共享數(shù)據(jù)在所述目標(biāo)存儲(chǔ)區(qū)域?qū)?yīng)的位置信息, 具體包括在緩存過(guò)程中,獨(dú)立于文件系統(tǒng)另外記錄所緩存的共享數(shù)據(jù)在作為目標(biāo)存儲(chǔ)區(qū)域的存 儲(chǔ)塊中的位置信息。
5.如權(quán)利要求3所述的方法,其特征在于,將寫入共享數(shù)據(jù)的窗體文件按一一對(duì)應(yīng)方 式移至作為目標(biāo)存儲(chǔ)區(qū)域的存儲(chǔ)塊過(guò)程中,還包括確定目標(biāo)存儲(chǔ)區(qū)域中有存儲(chǔ)塊已寫入共享數(shù)據(jù)塊之外的數(shù)據(jù)時(shí),停止向該存儲(chǔ)塊移動(dòng) 窗體文件;待另外確定未寫入數(shù)據(jù)的存儲(chǔ)塊后,將停止移動(dòng)的窗體文件重新移動(dòng)至另外確定的存 儲(chǔ)塊中。
6.如權(quán)利要求3所述的方法,其特征在于,所述創(chuàng)建至少一個(gè)窗體文件具體包括 利用操作系統(tǒng)提供的創(chuàng)建窗體文件函數(shù),創(chuàng)建至少一個(gè)窗體文件;所述將寫入共享數(shù)據(jù)的窗體文件按一一對(duì)應(yīng)方式移至作為目標(biāo)存儲(chǔ)區(qū)域的存儲(chǔ)塊,具 體包括利用操作系統(tǒng)提供的移動(dòng)窗體文件函數(shù),將寫入共享數(shù)據(jù)的窗體文件按一一對(duì)應(yīng)方式 移至作為目標(biāo)存儲(chǔ)區(qū)域的存儲(chǔ)塊。
7.如權(quán)利要求2所述的方法,其特征在于,所述文件系統(tǒng)獲取硬盤空間中未寫入數(shù)據(jù) 的存儲(chǔ)塊,具體包括根據(jù)文件系統(tǒng)建立的用于維護(hù)劃分得到的存儲(chǔ)塊使用信息的分塊表,獲取不同存儲(chǔ)塊 對(duì)應(yīng)的使用頻率及當(dāng)前使用情況;根據(jù)不同存儲(chǔ)塊對(duì)應(yīng)的使用頻率及當(dāng)前使用情況,確定硬盤空間中未寫入數(shù)據(jù)的存儲(chǔ)塊;所述文件系統(tǒng)將未寫入數(shù)據(jù)的存儲(chǔ)塊中至少一個(gè)存儲(chǔ)塊作為目標(biāo)存儲(chǔ)區(qū)域,具體包括按使用頻率從低到高的順序選取未寫入數(shù)據(jù)的存儲(chǔ)塊作為目標(biāo)存儲(chǔ)區(qū)域。
8.如權(quán)利要求7所述的方法,其特征在于,所述劃分得到每一存儲(chǔ)塊包括若干個(gè)連續(xù) 的簇,所述分塊表對(duì)每一存儲(chǔ)塊使用信息的維護(hù),具體包括存儲(chǔ)塊中有任一簇被寫入用戶數(shù)據(jù)時(shí),將該存儲(chǔ)塊的當(dāng)前使用情況標(biāo)記為系統(tǒng)已用空間;存儲(chǔ)塊中每一簇既未被寫入用戶數(shù)據(jù)且未被寫入共享數(shù)據(jù)時(shí),將該存儲(chǔ)塊標(biāo)記為裸盤 可用空間;存儲(chǔ)塊中所有簇被寫入共享數(shù)據(jù)時(shí),將該存儲(chǔ)塊標(biāo)記為裸盤已用空間; 按使用頻率從低到高的順序選取未寫入數(shù)據(jù)的存儲(chǔ)塊作為目標(biāo)存儲(chǔ)區(qū)域,具體包括 從標(biāo)記為裸盤可用空間的存儲(chǔ)塊中,按使用頻率從低到高的順序選取存儲(chǔ)塊作為目標(biāo) 存儲(chǔ)區(qū)域。
9.如權(quán)利要求2所述的方法,其特征在于,在緩存過(guò)程中另外記錄所緩存的共享數(shù)據(jù) 在所述目標(biāo)存儲(chǔ)區(qū)域中的位置信息,具體包括獲取緩存有共享數(shù)據(jù)的存儲(chǔ)塊對(duì)應(yīng)的位置信息,所述位置信息包括該存儲(chǔ)塊所緩存的 共享數(shù)據(jù)文件名和該存儲(chǔ)塊的物理位置索引;獨(dú)立于文件系統(tǒng),將獲取的不同存儲(chǔ)塊對(duì)應(yīng)的位置信息保存到能夠被操作系統(tǒng)查找到 的文件中。
10.如權(quán)利要求1 9任一所述的方法,其特征在于,還包括文件系統(tǒng)根據(jù)用戶指令確定要向硬盤空間寫入用戶數(shù)據(jù)時(shí),從硬盤空間中的標(biāo)記為可 用狀態(tài)的存儲(chǔ)區(qū)域中,為要寫入的用戶數(shù)據(jù)分配存儲(chǔ)空間;所述文件系統(tǒng)將用戶數(shù)據(jù)寫入到為該用戶數(shù)據(jù)所分配的存儲(chǔ)空間中。
11.一種數(shù)據(jù)存儲(chǔ)裝置,其特征在于,包括目標(biāo)區(qū)域確定單元,用于利用文件系統(tǒng)確定用于緩存共享數(shù)據(jù)的目標(biāo)存儲(chǔ)區(qū)域; 緩存單元,用于利用文件系統(tǒng)將接收的共享數(shù)據(jù)緩存到所述目標(biāo)存儲(chǔ)區(qū)域; 標(biāo)記單元,用于利用文件系統(tǒng)將緩存有共享數(shù)據(jù)的目標(biāo)存儲(chǔ)區(qū)域標(biāo)記為可用狀態(tài),以指示文件系統(tǒng)能夠根據(jù)用戶指令在該目標(biāo)存儲(chǔ)區(qū)域?qū)懭胗脩魯?shù)據(jù);記錄單元,用于緩存過(guò)程中獨(dú)立于文件系統(tǒng),另外記錄所緩存的共享數(shù)據(jù)在所述目標(biāo) 存儲(chǔ)區(qū)域中的位置信息,以使根據(jù)所述位置信息能獲取共享數(shù)據(jù)。
12.如權(quán)利要求11所述的裝置,其特征在于,該裝置還包括存儲(chǔ)塊劃分單元,用于在確定用于緩存共享數(shù)據(jù)的目標(biāo)存儲(chǔ)區(qū)域之前,利用所述文件 系統(tǒng)將硬盤空間在邏輯上劃分為至少兩個(gè)預(yù)設(shè)容量的存儲(chǔ)塊; 所述目標(biāo)區(qū)域確定單元具體包括 數(shù)據(jù)量確定單元,用于確定要接收的共享數(shù)據(jù)的總數(shù)據(jù)量; 空閑存儲(chǔ)塊獲取單元,用于利用文件系統(tǒng)獲取硬盤空間中未寫入數(shù)據(jù)的存儲(chǔ)塊; 目標(biāo)存儲(chǔ)塊確定單元,利用文件系統(tǒng)將未寫入數(shù)據(jù)的存儲(chǔ)塊中至少一個(gè)存儲(chǔ)塊作為目 標(biāo)存儲(chǔ)區(qū)域,所述目標(biāo)存儲(chǔ)區(qū)域的總?cè)萘坎恍∮谒隹倲?shù)據(jù)量;所述緩存單元,具體用于利用文件系統(tǒng)將接收的共享數(shù)據(jù)分成與預(yù)設(shè)容量相匹配的共 享數(shù)據(jù)塊后,分別緩存到作為目標(biāo)存儲(chǔ)區(qū)域的存儲(chǔ)塊中。
13.如權(quán)利要求12所述的裝置,其特征在于,所述緩存單元,具體包括窗體文件創(chuàng)建單元,用于利用文件系統(tǒng)創(chuàng)建至少一個(gè)窗體文件,并按設(shè)定規(guī)則為每一 窗體文件分配所述預(yù)設(shè)容量的存儲(chǔ)區(qū)域,所述窗體文件總大小與所述總數(shù)據(jù)量相匹配;分塊寫入單元,用于利用文件系統(tǒng)通過(guò)將接收的共享數(shù)據(jù)寫入到創(chuàng)建的窗體文件中, 將接收的共享數(shù)據(jù)分成與預(yù)設(shè)容量相匹配的共享數(shù)據(jù)塊;窗體文件移動(dòng)單元,用于利用文件系統(tǒng)將寫入共享數(shù)據(jù)的窗體文件按一一對(duì)應(yīng)方式移 至作為目標(biāo)存儲(chǔ)區(qū)域的存儲(chǔ)塊。
14.如權(quán)利要求13所述的裝置,其特征在于,所述標(biāo)記單元,具體用于通過(guò)刪除移動(dòng) 后的窗體文件在文件系統(tǒng)中的物理位置索引,將作為目標(biāo)存儲(chǔ)區(qū)域的存儲(chǔ)塊標(biāo)記為可用狀 態(tài);所述記錄單元,具體用于在緩存過(guò)程中,獨(dú)立于文件系統(tǒng)另外記錄所緩存的共享數(shù)據(jù) 在作為目標(biāo)存儲(chǔ)區(qū)域的存儲(chǔ)中的位置信息。
15.如權(quán)利要求13所述的裝置,其特征在于,所述緩存單元還包括停止移動(dòng)單元,用于將寫入共享數(shù)據(jù)的窗體文件按一一對(duì)應(yīng)方式移至作為目標(biāo)存儲(chǔ)區(qū) 域的存儲(chǔ)塊過(guò)程中,確定目標(biāo)存儲(chǔ)區(qū)域中有存儲(chǔ)塊已寫入共享數(shù)據(jù)塊之外的數(shù)據(jù)時(shí),停止 向該存儲(chǔ)塊移動(dòng)窗體文件;重新移動(dòng)單元,用于待另外確定未寫入數(shù)據(jù)的存儲(chǔ)塊后,將停止移動(dòng)的窗體文件重新 移動(dòng)至另外確定的存儲(chǔ)塊中。
16.如權(quán)利要求13所述的裝置,其特征在于,所述窗體文件創(chuàng)建單元具體利用操作系 統(tǒng)提供的創(chuàng)建窗體文件函數(shù),創(chuàng)建至少一個(gè)窗體文件;所述窗體文件移動(dòng)單元,具體利用操作系統(tǒng)提供的移動(dòng)窗體文件函數(shù),將寫入共享數(shù) 據(jù)的窗體文件按一一對(duì)應(yīng)方式移至作為目標(biāo)存儲(chǔ)區(qū)域的存儲(chǔ)塊。
17.如權(quán)利要求12所述的裝置,其特征在于,所述空閑存儲(chǔ)塊獲取單元,具體包括存儲(chǔ)塊使用信息獲取單元,用于根據(jù)文件系統(tǒng)建立的用于維護(hù)劃分得到的存儲(chǔ)塊使用 信息的分塊表,獲取不同存儲(chǔ)塊對(duì)應(yīng)的使用頻率及當(dāng)前使用情況;空閑存儲(chǔ)塊確定單元,用于根據(jù)不同存儲(chǔ)塊對(duì)應(yīng)的使用頻率及當(dāng)前使用情況,確定硬盤空間中未寫入數(shù)據(jù)的存儲(chǔ)塊;所述目標(biāo)存儲(chǔ)塊確定單元,具體用于按使用頻率從低到高的順序選取未寫入數(shù)據(jù)的存 儲(chǔ)塊作為目標(biāo)存儲(chǔ)區(qū)域。
18.如權(quán)利要求12所述的裝置,其特征在于,所述記錄單元,具體包括 位置信息獲取單元,用于在緩存過(guò)程中獲取緩存有共享數(shù)據(jù)的存儲(chǔ)塊對(duì)應(yīng)的位置信 息,所述位置信息包括該存儲(chǔ)塊所緩存的共享數(shù)據(jù)的文件名和該存儲(chǔ)塊的物理位置索引;集中存儲(chǔ)單元,用于獨(dú)立于文件系統(tǒng),將獲取的不同存儲(chǔ)塊對(duì)應(yīng)的位置信息保存到能 夠被操作系統(tǒng)查找到的文件中。
全文摘要
本發(fā)明涉及數(shù)據(jù)共享技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)存儲(chǔ)方法及裝置,該方法包括文件系統(tǒng)確定用于緩存共享數(shù)據(jù)的目標(biāo)存儲(chǔ)區(qū)域;文件系統(tǒng)將接收的共享數(shù)據(jù)緩存到所述目標(biāo)存儲(chǔ)區(qū)域,并標(biāo)記所述目標(biāo)存儲(chǔ)區(qū)域?yàn)榭捎脿顟B(tài),以指示文件系統(tǒng)能夠根據(jù)用戶指令在該目標(biāo)存儲(chǔ)區(qū)域?qū)懭胗脩魯?shù)據(jù);在緩存過(guò)程中獨(dú)立于文件系統(tǒng)另外記錄所緩存的共享數(shù)據(jù)在所述目標(biāo)存儲(chǔ)區(qū)域中的位置信息,以使根據(jù)所述位置信息能獲取該共享數(shù)據(jù)。本發(fā)明提供數(shù)據(jù)存儲(chǔ)方法及裝置,使共享數(shù)據(jù)在單個(gè)網(wǎng)絡(luò)終端存儲(chǔ)時(shí),不會(huì)影響用戶硬盤存儲(chǔ)空間且提高了共享數(shù)據(jù)在單個(gè)網(wǎng)絡(luò)終端存儲(chǔ)的穩(wěn)定性。
文檔編號(hào)G06F17/30GK101968791SQ201010252868
公開(kāi)日2011年2月9日 申請(qǐng)日期2010年8月10日 優(yōu)先權(quán)日2010年8月10日
發(fā)明者王璟琦 申請(qǐng)人:深圳市飄移網(wǎng)絡(luò)技術(shù)有限公司