專利名稱:數(shù)據(jù)讀寫方法、裝置、存儲(chǔ)體及網(wǎng)絡(luò)設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)存儲(chǔ)技術(shù),尤其涉及一種數(shù)據(jù)讀寫方法、裝置、存儲(chǔ)體及網(wǎng)絡(luò)設(shè)備。
背景技術(shù):
與非閃存(nand flash)是非易失存儲(chǔ)器,廣泛應(yīng)用于嵌入式系統(tǒng)以及各種閃存盤 (例如U盤)。nand flash的物理結(jié)構(gòu)由頁(page)和塊(block)組成;一個(gè)頁大小為512 字節(jié)(Byte),每個(gè)頁還有16字節(jié)的附加區(qū)域(Spare area),可以用于存放與該頁有關(guān)的一些信息,例如錯(cuò)誤檢查與糾正碼(Error Correcting Code ;簡稱為ECC);—個(gè)塊由相鄰的 32個(gè)頁組成,也就是16KB大小。頁為讀操作的基本單位,塊為擦除操作的基本單位,在寫一個(gè)區(qū)域之前,要對(duì)包含這個(gè)區(qū)域的整個(gè)塊進(jìn)行擦除操作,不管寫多大的數(shù)據(jù)量,都要將區(qū)域所在的整塊進(jìn)行擦除。而nand flash單塊可擦除的次數(shù)有個(gè)上限,超過這個(gè)上限,這一塊就會(huì)變成壞塊,該塊中存儲(chǔ)的內(nèi)容會(huì)丟失。對(duì)于多層單元(Multi-Level Cell ;簡稱為 MLC)nand flash,這個(gè)上限為10000次。MLC nand flash現(xiàn)今廣泛應(yīng)用于大容量存儲(chǔ)體,如 4G存儲(chǔ)體、8G存儲(chǔ)體。大容量MLC nand flash存儲(chǔ)體經(jīng)常使用的fat32文件系統(tǒng)。fat32文件系統(tǒng)以簇 (cluster)來管理、分配存儲(chǔ)體的空間,對(duì)存儲(chǔ)體空間按簇進(jìn)行編碼,使用32比特(bit)、也就是4個(gè)字節(jié)來標(biāo)識(shí)一個(gè)簇。在fat32文件系統(tǒng)中,每個(gè)數(shù)據(jù)文件具體存放在存儲(chǔ)體的哪個(gè)位置是通過文件分配表中的簇鏈來管理的。文件分配表是用來存放存儲(chǔ)體中所有數(shù)據(jù)文件所在位置的表格,它指示了數(shù)據(jù)文件都存放在哪些簇里面,所以文件分配表里面的數(shù)據(jù)都是簇號(hào);簇鏈?zhǔn)怯杀硎緮?shù)據(jù)文件所占用的下一個(gè)簇的簇號(hào)鏈接而成。fat32文件系統(tǒng)雖然以簇作為管理、分配存儲(chǔ)體空間的最小單位,但是fat32文件系統(tǒng)下存儲(chǔ)體的最小尋址單位是扇區(qū),為512字節(jié),底層驅(qū)動(dòng)軟件也是按扇區(qū)對(duì)存儲(chǔ)體進(jìn)行讀寫操作的,簇只是fat32 文件系統(tǒng)上層的一個(gè)邏輯概念。如果設(shè)備頻繁操作這個(gè)MLC nand flash存儲(chǔ)體,例如設(shè)備頻繁的往MLC nand flash存儲(chǔ)體里面寫數(shù)據(jù)文件(例如新建文件、往舊文件后面追加新數(shù)據(jù)等),就會(huì)觸發(fā)頻繁的修改MLC nand flash存儲(chǔ)體里面的文件分配表,而所有修改文件分配表的操作都會(huì)落在文件分配表對(duì)應(yīng)的block中,每次修改文件分配表都會(huì)擦除對(duì)應(yīng)的block,很快文件分配表對(duì)應(yīng)的block的擦除次數(shù)就會(huì)達(dá)到nand flash的額定上限。由于達(dá)到上限的block將會(huì)變?yōu)閴纳葏^(qū),里面存儲(chǔ)的數(shù)據(jù)就會(huì)丟失,也就是說當(dāng)文件分配表對(duì)應(yīng)的block變?yōu)閴膮^(qū)時(shí), 文件分配表中的數(shù)據(jù)就會(huì)丟失,從而導(dǎo)致整個(gè)MLC nand flash存儲(chǔ)體中其他數(shù)據(jù)文件都被丟失。
發(fā)明內(nèi)容
本發(fā)明提供一種數(shù)據(jù)讀寫方法、裝置、存儲(chǔ)體及網(wǎng)絡(luò)設(shè)備,用以解決文件分配表對(duì)應(yīng)的block的擦除次數(shù)達(dá)到額定上限而導(dǎo)致文件分配表以及MLCnand flash存儲(chǔ)體中其他文件數(shù)據(jù)被丟失的問題。本發(fā)明提供一種數(shù)據(jù)讀寫方法,包括當(dāng)對(duì)存儲(chǔ)體中原始文件分配表對(duì)應(yīng)的塊區(qū)間進(jìn)行讀寫操作時(shí),根據(jù)所述原始文件分配表對(duì)應(yīng)的塊區(qū)間的地址和偏移地址,將對(duì)所述原始文件分配表對(duì)應(yīng)的塊區(qū)間的讀寫操作映射為對(duì)所述存儲(chǔ)體中存儲(chǔ)備份文件分配表的第一備份區(qū)間的讀寫操作;其中,所述第一備份區(qū)間的大小與所述原始文件分配表對(duì)應(yīng)的塊區(qū)間的大小相同,所述偏移地址為所述原始文件分配表對(duì)應(yīng)的塊區(qū)間到所述第一備份區(qū)間的地址偏移量;根據(jù)所述第一備份區(qū)間的起始時(shí)間和當(dāng)前時(shí)間,判斷所述第一備份區(qū)間是否到達(dá)使用極限;當(dāng)所述第一備份區(qū)間到達(dá)使用極限時(shí),將所述第一備份區(qū)間中存儲(chǔ)的備份文件分配表復(fù)制到所述存儲(chǔ)體中下一個(gè)備份區(qū)間中,將所述下一個(gè)備份區(qū)間作為新的第一備份區(qū)間,設(shè)置所述新的第一備份區(qū)間的起始時(shí)間,并重新設(shè)置所述偏移地址,然后根據(jù)所述原始文件分配表對(duì)應(yīng)的塊區(qū)間的地址和重新設(shè)置后的偏移地址,將對(duì)所述原始文件分配表對(duì)應(yīng)的塊區(qū)間的讀寫操作映射為對(duì)所述新的第一備份區(qū)間的讀寫操作,并根據(jù)對(duì)所述原始文件分配表對(duì)應(yīng)的塊區(qū)間進(jìn)行讀寫操作的讀寫指令完成對(duì)所述新的第一備份區(qū)間的讀寫操作;當(dāng)所述第一備份區(qū)間未到達(dá)使用極限時(shí),根據(jù)對(duì)所述原始文件分配表對(duì)應(yīng)的塊區(qū)間進(jìn)行讀寫操作的讀寫指令完成對(duì)所述第一備份區(qū)間的讀寫操作。本發(fā)明提供一種數(shù)據(jù)讀寫裝置,包括映射模塊,用于在對(duì)存儲(chǔ)體中原始文件分配表對(duì)應(yīng)的塊區(qū)間進(jìn)行讀寫操作時(shí),根據(jù)所述原始文件分配表對(duì)應(yīng)的塊區(qū)間的地址和偏移地址,將對(duì)所述原始文件分配表對(duì)應(yīng)的塊區(qū)間的讀寫操作映射為對(duì)所述存儲(chǔ)體中存儲(chǔ)備份文件分配表的第一備份區(qū)間的讀寫操作;其中,所述第一備份區(qū)間的大小與所述原始文件分配表對(duì)應(yīng)的塊區(qū)間的大小相同,所述偏移地址為所述原始文件分配表對(duì)應(yīng)的塊區(qū)間到所述第一備份區(qū)間的地址偏移量;判斷模塊,用于根據(jù)所述第一備份區(qū)間的起始時(shí)間和當(dāng)前時(shí)間,判斷所述第一備份區(qū)間是否到達(dá)使用極限;第一讀寫模塊,用于在所述第一備份區(qū)間到達(dá)使用極限時(shí),將所述第一備份區(qū)間中存儲(chǔ)的備份文件分配表復(fù)制到所述存儲(chǔ)體中下一個(gè)備份區(qū)間中,將所述下一個(gè)備份區(qū)間作為新的第一備份區(qū)間,設(shè)置所述新的第一備份區(qū)間的起始時(shí)間,并重新設(shè)置所述偏移地址,然后根據(jù)所述原始文件分配表對(duì)應(yīng)的塊區(qū)間的地址和重新設(shè)置后的偏移地址,將對(duì)所述原始文件分配表對(duì)應(yīng)的塊區(qū)間的讀寫操作映射為對(duì)所述新的第一備份區(qū)間的讀寫操作, 并根據(jù)對(duì)所述原始文件分配表對(duì)應(yīng)的塊區(qū)間進(jìn)行讀寫操作的讀寫指令完成對(duì)所述新的第一備份區(qū)間的讀寫操作;第二讀寫模塊,用于在所述第一備份區(qū)間未到達(dá)使用極限時(shí),根據(jù)對(duì)所述原始文件分配表對(duì)應(yīng)的塊區(qū)間進(jìn)行讀寫操作的讀寫指令完成對(duì)所述第一備份區(qū)間的讀寫操作。本發(fā)明實(shí)施例提供一種存儲(chǔ)體,第一塊區(qū)間和至少一個(gè)備份區(qū)間;所述第一塊區(qū)間,用于存儲(chǔ)原始文件分配表;所述至少一個(gè)備份區(qū)間中包括第一備份區(qū)間,所述第一備份區(qū)間用于存儲(chǔ)備份文件分配表;
其中,每個(gè)備份區(qū)間的大小與所述第一塊區(qū)間的大小相同。本發(fā)明提供一種網(wǎng)絡(luò)設(shè)備,包括本發(fā)明提供的任一數(shù)據(jù)讀寫裝置和本發(fā)明提供的任一存儲(chǔ)體。本發(fā)明的數(shù)據(jù)讀寫方法、裝置、存儲(chǔ)體及網(wǎng)絡(luò)設(shè)備,通過在存儲(chǔ)體的備份區(qū)間中存儲(chǔ)備份文件分配表,當(dāng)對(duì)原始文件分配表對(duì)應(yīng)的塊區(qū)間進(jìn)行讀寫操作時(shí),將對(duì)原始文件分配表對(duì)應(yīng)的塊區(qū)間的讀寫操作映射為對(duì)備份文件分配表對(duì)應(yīng)的備份區(qū)間的讀寫操作,當(dāng)存儲(chǔ)備份文件分配表的備份區(qū)間未達(dá)到使用極限時(shí),直接根據(jù)讀寫指令完成對(duì)備份區(qū)間的讀寫操作,當(dāng)存儲(chǔ)備份文件分配表的備份區(qū)間達(dá)到使用極限時(shí),重新將備份文件分配表復(fù)制到下一個(gè)備份區(qū)間,并根據(jù)讀寫指令完成對(duì)下一個(gè)備份區(qū)間的讀寫操作,而不再對(duì)原始文件分配表進(jìn)行頻繁的讀寫操作,即實(shí)現(xiàn)了對(duì)文件分配表的讀寫操作,又解決了因?qū)υ嘉募峙浔磉M(jìn)行頻繁讀寫操作使其對(duì)應(yīng)的塊區(qū)間的擦除次數(shù)達(dá)到額定上限而導(dǎo)致原始文件分配表和存儲(chǔ)體中其他數(shù)據(jù)文件被丟失的問題。
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明一實(shí)施例提供的存儲(chǔ)體的結(jié)構(gòu)示意圖;圖2為本發(fā)明另一實(shí)施例提供的存儲(chǔ)體的結(jié)構(gòu)示意圖;圖3為本發(fā)明一實(shí)施例提供的數(shù)據(jù)讀寫方法的流程圖;圖4為本發(fā)明另一實(shí)施例提供的數(shù)據(jù)讀寫方法的流程圖;圖5為本發(fā)明又一實(shí)施例提供的數(shù)據(jù)讀寫方法的流程圖;圖6A為本發(fā)明再一實(shí)施例提供的數(shù)據(jù)讀寫方法的流程;圖6B為本發(fā)明再一實(shí)施例提供的存儲(chǔ)體的結(jié)構(gòu)示意圖;圖7為本發(fā)明一實(shí)施例提供的數(shù)據(jù)讀寫裝置的結(jié)構(gòu)示意圖;圖8為本發(fā)明另一實(shí)施例提供的數(shù)據(jù)讀寫裝置的結(jié)構(gòu)示意圖。
具體實(shí)施例方式為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。圖1為本發(fā)明一實(shí)施例提供的存儲(chǔ)體的結(jié)構(gòu)示意圖。本實(shí)施例的存儲(chǔ)體可由MLC nand flash構(gòu)成,并且采用fat32文件系統(tǒng)進(jìn)行管理。如圖1所示,本實(shí)施例的存儲(chǔ)體包括第一塊區(qū)間11和至少一個(gè)備份區(qū)間12。其中,第一塊區(qū)間11用于存儲(chǔ)原始文件分配表。所謂原始文件分配表即為fat32 文件系統(tǒng)下用于管理每個(gè)數(shù)據(jù)文件具體存放位置的文件分配表。至少一個(gè)備份區(qū)間12是預(yù)先留出的存儲(chǔ)空間,主要用于存儲(chǔ)備份文件分配表。其中,備份文件分配表是根據(jù)原始文件分配表生成的,也就是說備份文件分配表基于原始文件分配表,但并不完全等同于原始文件分配表。例如最初的備份文件分配表就是原始文件分配表的備份,與原始文件分配表相同,但是隨著數(shù)據(jù)讀寫裝置不斷對(duì)存儲(chǔ)體進(jìn)行讀寫操作,數(shù)據(jù)讀寫裝置就會(huì)為存儲(chǔ)體中所增加的新文件或?qū)εf文件增加的新數(shù)據(jù)而更新備份文件分配表,此時(shí),在對(duì)原始文件分配表進(jìn)行更新之前,備份文件分配表與原始文件分配表并不完全相同。基于上述可見,備份區(qū)間12和第一塊區(qū)間11的大小相同。例如以4G的存儲(chǔ)體, 每個(gè)簇的大小為32個(gè)扇區(qū)(即16K)為例進(jìn)行說明。對(duì)于這樣一個(gè)4G的nand flash存儲(chǔ)體,其文件分配表的大小為4G/16K = (4X 1024X 1024X 1024)/(16*1024) = 1048576 = 1M。也就是說,第一塊區(qū)間11的大小以及每個(gè)備份區(qū)間12的大小均為1M。在本實(shí)施例中,每個(gè)備份區(qū)間12都有使用極限,也就是允許擦除的次數(shù)的額定上限。當(dāng)備份區(qū)間的擦除次數(shù)達(dá)到其額定上限時(shí),說明該備份區(qū)間的使用極限到了,該備份區(qū)間就會(huì)變?yōu)閴纳葏^(qū),其中所存儲(chǔ)的數(shù)據(jù)就會(huì)被丟失。在正常使用過程中,至少一個(gè)備份區(qū)間 12中僅有一個(gè)備份區(qū)間12中存儲(chǔ)有備份文件分配表,將存儲(chǔ)有備份文件分配表的備份區(qū)間稱為第一備份區(qū)間。當(dāng)?shù)谝粋浞輩^(qū)間的使用極限到達(dá)時(shí),數(shù)據(jù)讀寫裝置就會(huì)將備份文件分配表從第一備份區(qū)間中復(fù)制到下一個(gè)備份區(qū)間中,下一個(gè)備份區(qū)間就會(huì)作為新的第一備份區(qū)間。在本實(shí)施例中,對(duì)每個(gè)備份區(qū)間12在存儲(chǔ)體中的位置不做限定,且各個(gè)備份區(qū)間 12可以是存儲(chǔ)體中不連續(xù)的多個(gè)存儲(chǔ)空間,也可以由存儲(chǔ)體中的一塊連續(xù)的存儲(chǔ)空間構(gòu)成。另外,備份區(qū)間12的個(gè)數(shù)可以根據(jù)對(duì)文件分配表的讀寫操作的頻繁程度以及存儲(chǔ)體中block的擦除次數(shù)的額定上限來確定。本實(shí)施例對(duì)備份區(qū)間12的個(gè)數(shù)不做具體限定,例如如果希望備份100份文件分配表,則需要預(yù)留100個(gè)備份區(qū)間12,對(duì)于大小為IM的備份區(qū)間12來說,整個(gè)存儲(chǔ)體就需要預(yù)留出100M大小的存儲(chǔ)空間。本實(shí)施例的存儲(chǔ)體,通過預(yù)先留出存儲(chǔ)備份文件分配表的備份區(qū)間,將原始文件分配表生成的備份文件分配表存儲(chǔ)在其中一個(gè)備份區(qū)間中,允許數(shù)據(jù)讀寫裝置將對(duì)原始文件分配表的讀寫操作轉(zhuǎn)換為對(duì)備份文件分配表的讀寫操作,也就將對(duì)存儲(chǔ)原始文件分配表的塊區(qū)間的擦除操作轉(zhuǎn)換為對(duì)備份區(qū)間的擦除操作,并且在一個(gè)備份區(qū)間的使用極限到達(dá)時(shí)繼續(xù)轉(zhuǎn)換為對(duì)下一個(gè)備份區(qū)間的擦除操作,從而解決了因nand flash存儲(chǔ)體中原始文件分配表對(duì)應(yīng)的block的擦除次數(shù)達(dá)到上限而使fat32文件系統(tǒng)中的原始文件分配表被提前破壞進(jìn)而導(dǎo)致nand flash存儲(chǔ)體中其他數(shù)據(jù)文件被(由于文件分配表被破壞而訪問不到) 丟失的問題。圖2為本發(fā)明另一實(shí)施例提供的存儲(chǔ)體的結(jié)構(gòu)示意圖。如圖2所示,本實(shí)施例基于圖1所示實(shí)施例實(shí)現(xiàn),如圖2所示,本實(shí)施例的存儲(chǔ)體還包括第二塊區(qū)間13。第二塊區(qū)間13,用于存儲(chǔ)數(shù)據(jù)文件。進(jìn)一步,如圖2所示,本實(shí)施例的存儲(chǔ)體還包括引導(dǎo)區(qū)間14和保留區(qū)間15。其中,引導(dǎo)區(qū)間14中存儲(chǔ)有與對(duì)存儲(chǔ)體進(jìn)行讀寫操作的數(shù)據(jù)讀寫裝置有關(guān)的各種數(shù)據(jù),例如數(shù)據(jù)讀寫裝置的引導(dǎo)程序等。保留區(qū)間15是保留區(qū)間,暫時(shí)未被使用。本實(shí)施例的存儲(chǔ)體通過劃分引導(dǎo)區(qū)間14和保留區(qū)間15,并將引導(dǎo)區(qū)間14和保留區(qū)間15劃分在第一塊區(qū)間之前,實(shí)現(xiàn)了與標(biāo)準(zhǔn)文件系統(tǒng)對(duì)應(yīng)的存儲(chǔ)體結(jié)構(gòu),為與標(biāo)準(zhǔn)文件系統(tǒng)兼容打下了基石出。進(jìn)一步,如圖2所示,本實(shí)施例的存儲(chǔ)體包括兩個(gè)第一塊區(qū)間11,其中一個(gè)記為 FAT1,另一個(gè)即為FAT2。其中,F(xiàn)ATl中存儲(chǔ)的是所述的原始文件分配表,F(xiàn)AT2在標(biāo)準(zhǔn)fat32 文件系統(tǒng)中可用可不用,完全是FATl的一個(gè)實(shí)時(shí)鏡像,無特別價(jià)值,在后面不做描述。進(jìn)一步,如圖2所示,在本實(shí)施例的存儲(chǔ)體中,備份區(qū)間12依次相鄰,且位于第二塊區(qū)間13之后,亦即位于存儲(chǔ)體的最后面。在這種劃分方式中,可以將備份文件分配表放在存儲(chǔ)體的最后面,即放在存儲(chǔ)體中數(shù)據(jù)文件之后,備份區(qū)間12之前的部分與現(xiàn)有nand flash存儲(chǔ)體的結(jié)構(gòu)完全相同,使得不需要對(duì)fat32文件系統(tǒng)本身做任何的修改,在實(shí)現(xiàn)對(duì)文件分配表進(jìn)行備份的同時(shí),實(shí)現(xiàn)了對(duì)fat32文件系統(tǒng)的透明,也達(dá)到了與標(biāo)準(zhǔn)文件系統(tǒng)兼容的目的。在現(xiàn)有技術(shù)中,第一塊區(qū)間11中的第一部分用于存放原始文件分配表,對(duì)原始文件分配表的訪問就是對(duì)存儲(chǔ)原始文件分配表的物理區(qū)域的訪問。而在本實(shí)施例的存儲(chǔ)體結(jié)構(gòu)中,允許將對(duì)原始文件分配表的訪問從第一次啟機(jī)后就映射為對(duì)備份區(qū)間12中的備份文件分配表的訪問。也就是說,在實(shí)際運(yùn)行過程中,數(shù)據(jù)讀寫裝置真正訪問的是存儲(chǔ)體中某個(gè)存儲(chǔ)有備份文件分配表的備份區(qū)間12?;谏鲜隹梢姡诒緦?shí)施例中,原始文件分配表反而相當(dāng)于備份文件分配表的一個(gè)備份或鏡像,故本實(shí)施例的存儲(chǔ)體允許在因備份區(qū)間的使用達(dá)到使用極限而切換到下一個(gè)備份區(qū)間12的時(shí)候,根據(jù)當(dāng)前的備份文件分配表來更新原始文件分配表。其中,備份區(qū)間12的切換次數(shù)遠(yuǎn)小于對(duì)原始文件分配表的讀寫次數(shù)。進(jìn)一步,還允許根據(jù)當(dāng)前正在使用中的備份文件分配表來更新原始文件分配表,即將當(dāng)前正在使用的備份文件分配表中的最新數(shù)據(jù)完全同步原始文件分配表中。但是,由于對(duì)原始文件分配表的更新操作也是對(duì)原始文件分配表對(duì)應(yīng)的塊區(qū)間的擦除操作,故上述根據(jù)當(dāng)前正在使用中的備份文件分配表更新原始文件分配表的操作可以周期性的執(zhí)行,或者在有必要的時(shí)候執(zhí)行,而不能實(shí)時(shí)執(zhí)行,以保證對(duì)原始文件分配表進(jìn)行最少次數(shù)的更新操作,延長原始文件分配表對(duì)應(yīng)的塊區(qū)間的使用壽命。通過上述對(duì)原始文件分配表的更新操作,使得在不考慮后面的備份文件分配表的情況下,更新后的原始文件分配表本身就是一個(gè)標(biāo)準(zhǔn)的文件分配表,這樣存儲(chǔ)體就是一個(gè)標(biāo)準(zhǔn)的fat32分區(qū)存儲(chǔ)體,使得存儲(chǔ)體除了被數(shù)據(jù)讀寫裝置使用外,還可以被卸載下來被其他使用標(biāo)準(zhǔn)文件系統(tǒng)的設(shè)備使用,達(dá)到了與標(biāo)準(zhǔn)系統(tǒng)的兼容性。進(jìn)一步,如圖2所示,本實(shí)施例的存儲(chǔ)體還可以包括參數(shù)存儲(chǔ)區(qū)間16,并且為了與標(biāo)準(zhǔn)文件系統(tǒng)相兼容,參數(shù)存儲(chǔ)區(qū)間16設(shè)置在第二塊區(qū)間13之后,更為具體的是設(shè)置在所有備份區(qū)間12之后。參數(shù)存儲(chǔ)區(qū)間16用來存儲(chǔ)與各個(gè)備份區(qū)間12相關(guān)的參數(shù)信息,例如作為第一備份區(qū)間的備份區(qū)間的起始時(shí)間、第一備份區(qū)間與第一塊區(qū)間11之間的偏移地址、第一塊區(qū)間11的大小等等。其中,備份區(qū)間12的起始時(shí)間是指一個(gè)備份區(qū)間開始被使用的時(shí)間。數(shù)據(jù)讀寫裝置可以將當(dāng)前時(shí)間與備份區(qū)間12的起始時(shí)間相減,來判斷備份區(qū)間12是否達(dá)到使用極限。在本實(shí)施例中,當(dāng)一個(gè)備份區(qū)間的使用(受限于block的額定擦除次數(shù))達(dá)到使用極限時(shí),數(shù)據(jù)讀寫裝置中的fat32文件系統(tǒng)就會(huì)將備份文件分配表同步(一次拷貝)到下一個(gè)備份區(qū)間,從而對(duì)新的備份區(qū)間進(jìn)行讀寫操作,這樣,解決了因nand flash使用壽命短而導(dǎo)致nand flash上文件分配表被提前破壞進(jìn)而導(dǎo)致nand flash存儲(chǔ)體上其他數(shù)據(jù)文
8件(由于文件分配表破壞而訪問不到)丟失的問題。圖3為本發(fā)明一實(shí)施例提供的數(shù)據(jù)讀寫方法的流程圖。如圖3所示,本實(shí)施例的方法包括步驟301、當(dāng)對(duì)存儲(chǔ)體中原始文件分配表對(duì)應(yīng)的塊區(qū)間進(jìn)行讀寫操作時(shí),根據(jù)原始文件分配表對(duì)應(yīng)的塊區(qū)間的地址和偏移地址,將對(duì)原始文件分配表對(duì)應(yīng)的塊區(qū)間的讀寫操作映射為對(duì)存儲(chǔ)體中存儲(chǔ)備份文件分配表的第一備份區(qū)間的讀寫操作。本實(shí)施例中的存儲(chǔ)體為圖1或圖2所示的存儲(chǔ)體。其中,第一備份區(qū)間是預(yù)先留出的至少一個(gè)備份區(qū)間中的一個(gè),其大小與原始文件分配表對(duì)應(yīng)的塊區(qū)間(即第一塊區(qū)間) 的大小相同。本實(shí)施例的偏移地址為原始文件分配表對(duì)應(yīng)的塊區(qū)間到第一備份區(qū)間的地址偏移量。當(dāng)數(shù)據(jù)讀寫裝置對(duì)存儲(chǔ)體進(jìn)行讀寫操作,例如在存儲(chǔ)體中寫入新的數(shù)據(jù)文件或在已有數(shù)據(jù)文件中寫入新數(shù)據(jù),又或者讀取存儲(chǔ)體中某個(gè)數(shù)據(jù)文件時(shí),就需要對(duì)原始文件分配表進(jìn)行讀寫操作,以獲取需要讀寫的數(shù)據(jù)文件在存儲(chǔ)體中的位置信息。當(dāng)數(shù)據(jù)讀寫裝置對(duì)原始文件分配表進(jìn)行讀寫操作時(shí),可以將原始文件分配表對(duì)應(yīng)的塊區(qū)間的地址和偏移地址相加,獲取存儲(chǔ)備份文件分配表的第一備份區(qū)間的地址,將對(duì)原始文件分配表的讀寫操作轉(zhuǎn)換為對(duì)備份文件分配表的讀寫操作,也就是將對(duì)原始文件分配表對(duì)應(yīng)的塊區(qū)間的擦除操作轉(zhuǎn)換為對(duì)第一備份區(qū)間的擦除操作。在此說明,在本發(fā)明各實(shí)施例中,所述數(shù)據(jù)讀寫裝置對(duì)原始文件分配表或備份文件分配表進(jìn)行讀寫操作主要是指由數(shù)據(jù)讀寫裝置中的fat32文件系統(tǒng)對(duì)原始文件分配表或備份文件分配表進(jìn)行讀寫操作。步驟302、根據(jù)第一備份區(qū)間的起始時(shí)間和當(dāng)前時(shí)間,判斷第一備份區(qū)間是否達(dá)到使用極限;當(dāng)判斷結(jié)果為是時(shí),執(zhí)行步驟303 ;當(dāng)判斷結(jié)果為否時(shí),執(zhí)行步驟304。在數(shù)據(jù)讀寫裝置對(duì)第一備份區(qū)間進(jìn)行讀寫操作之前,首先用當(dāng)前時(shí)間減去第一備份區(qū)間的起始時(shí)間,根據(jù)兩個(gè)時(shí)間的差值來判斷第一備份區(qū)間的使用是否已經(jīng)達(dá)到使用極限。其中,由于nand flash存儲(chǔ)體中block具有使用壽命,當(dāng)擦除次數(shù)達(dá)到額定上限時(shí),就會(huì)成為壞區(qū),故本實(shí)施例的第一備份區(qū)間也有使用壽命。在本實(shí)施例中,當(dāng)?shù)谝粋浞輩^(qū)間開始使用時(shí),設(shè)置其起始時(shí)間,通過起始時(shí)間和當(dāng)前時(shí)間來記錄第一備份區(qū)間的使用壽命,只需要在開始使用時(shí)設(shè)置一次起始時(shí)間即可,不需要反復(fù)對(duì)存儲(chǔ)體進(jìn)行讀寫操作,有利于減少對(duì)存儲(chǔ)體的讀寫操作。例如當(dāng)當(dāng)前時(shí)間與起始時(shí)間的差值達(dá)到預(yù)設(shè)時(shí)間門限時(shí),說明第一備份區(qū)間的使用達(dá)到使用極限;反之,則沒有達(dá)到使用極限。其中,時(shí)間門限可以根據(jù)具體的nand flash存儲(chǔ)體的使用情況而定。步驟303、將第一備份區(qū)間中存儲(chǔ)的備份文件分配表復(fù)制到存儲(chǔ)體中下一個(gè)備份區(qū)間中,將下一個(gè)備份區(qū)間作為新的第一備份區(qū)間,設(shè)置新的第一備份區(qū)間的起始時(shí)間,并重新設(shè)置偏移地址,然后根據(jù)原始文件分配表對(duì)應(yīng)的塊區(qū)間的地址和重新設(shè)置后的偏移地址,將對(duì)原始文件分配表對(duì)應(yīng)的塊區(qū)間的讀寫操作映射為對(duì)新的第一備份區(qū)間的讀寫操作,并根據(jù)對(duì)原始文件分配表對(duì)應(yīng)的塊區(qū)間進(jìn)行讀寫操作的讀寫指令完成對(duì)新的第一備份區(qū)間的讀寫操作。當(dāng)?shù)谝粋浞輩^(qū)間的使用到達(dá)使用極限時(shí),數(shù)據(jù)讀寫裝置將備份文件分配表從當(dāng)前第一備份區(qū)間中復(fù)制到存儲(chǔ)體的下一個(gè)備份區(qū)間中,并將備份文件分配表復(fù)制到的下一個(gè)備份區(qū)間作為新的第一備份區(qū)間。與此同時(shí),數(shù)據(jù)讀寫裝置設(shè)置新的第一備份區(qū)間的起始時(shí)間,即記錄當(dāng)前時(shí)間,將當(dāng)前時(shí)間作為新的第一備份區(qū)間的起始時(shí)間,并重新設(shè)置偏移地址。其中,重新設(shè)置后的偏移地址是由重新設(shè)置前的偏移地址加上第一備份區(qū)間的大小得到的?;谏鲜?,數(shù)據(jù)讀寫裝置重新將原始文件分配表對(duì)應(yīng)的塊區(qū)間的地址和重新設(shè)置后的偏移地址相加,得到新的第一備份區(qū)間的地址;然后將對(duì)原始文件分配表的讀寫操作映射為對(duì)新的第一備份區(qū)間中的備份文件分配表的讀寫操作,也就是將對(duì)原始文件分配表對(duì)應(yīng)的塊區(qū)間的讀寫操作(或者說擦除操作)映射為對(duì)第一備份區(qū)間的讀寫操作。然后,數(shù)據(jù)讀寫裝置根據(jù)對(duì)原始文件分配表對(duì)應(yīng)的塊區(qū)間進(jìn)行讀寫操作的讀寫指令完成對(duì)新的第一備份區(qū)間的讀寫操作。步驟304、根據(jù)對(duì)原始文件分配表對(duì)應(yīng)的塊區(qū)間進(jìn)行讀寫操作的讀寫指令完成對(duì)第一備份區(qū)間的讀寫操作。當(dāng)?shù)谝粋浞輩^(qū)間的使用未到達(dá)使用極限時(shí),數(shù)據(jù)讀寫裝置直接根據(jù)對(duì)原始文件分配表對(duì)應(yīng)的塊區(qū)間進(jìn)行讀寫操作的讀寫指令完成對(duì)第一備份區(qū)間的讀寫操作。其中,數(shù)據(jù)讀寫裝置根據(jù)讀寫指令對(duì)存儲(chǔ)體中的某個(gè)存儲(chǔ)空間進(jìn)行讀寫的操作屬于現(xiàn)有技術(shù),在本實(shí)施例中不做詳細(xì)論述。本實(shí)施例的數(shù)據(jù)讀寫方法,當(dāng)數(shù)據(jù)讀寫裝置對(duì)原始文件分配表進(jìn)行讀寫操作時(shí), 將對(duì)原始文件分配表的讀寫操作轉(zhuǎn)換為對(duì)備份文件分配表的讀寫操作,從而將對(duì)原始文件分配表對(duì)應(yīng)的塊區(qū)間的讀寫操作轉(zhuǎn)換為對(duì)存儲(chǔ)備份文件分配表的備份區(qū)間的讀寫操作,而在一個(gè)備份區(qū)間的使用到達(dá)使用極限時(shí),將備份文件分配表復(fù)制到下一個(gè)備份區(qū)間,從而將對(duì)原始文件分配表對(duì)應(yīng)的塊區(qū)間的讀寫操作轉(zhuǎn)換為對(duì)另一個(gè)備份區(qū)間的讀寫操作,解決了現(xiàn)有技術(shù)中因?qū)υ嘉募峙浔韺?duì)應(yīng)的塊區(qū)間的讀寫次數(shù)達(dá)到額定上限時(shí)導(dǎo)致原始文件分配表被破壞進(jìn)而導(dǎo)致整個(gè)存儲(chǔ)體上的數(shù)據(jù)文件被丟失的問題。本實(shí)施例在fat32文件系統(tǒng)對(duì)原始文件分配表進(jìn)行頻繁讀寫時(shí)的效果尤為顯著。圖4為本發(fā)明另一實(shí)施例提供的數(shù)據(jù)讀寫方法的流程圖。本實(shí)施例基于圖3所示實(shí)施例實(shí)現(xiàn),如圖4所示,本實(shí)施例的方法在步驟301之前包括步驟300、獲取第一備份區(qū)間的起始時(shí)間和偏移地址。其中,在存儲(chǔ)體預(yù)留備份區(qū)間時(shí),數(shù)據(jù)讀寫裝置就會(huì)根據(jù)存儲(chǔ)體中各備份區(qū)間的位置,將各備份區(qū)間與原始文件分配表對(duì)應(yīng)的塊區(qū)間的地址偏移量存儲(chǔ)起來。其中,地址偏移量即為偏移地址。同時(shí),在備份區(qū)間被使用時(shí),數(shù)據(jù)讀寫裝置還會(huì)將表征備份區(qū)間在何時(shí)開始使用的起始時(shí)間記錄并存儲(chǔ)起來。本實(shí)施例對(duì)偏移地址和起始時(shí)間等參數(shù)的具體存儲(chǔ)位置不作限定。例如可以在存儲(chǔ)體中單獨(dú)劃分一小塊存儲(chǔ)空間,專門用來存儲(chǔ)上述參數(shù), 如圖2所示的參數(shù)存儲(chǔ)區(qū)間16。該在存儲(chǔ)體中單獨(dú)劃分參數(shù)存儲(chǔ)區(qū)間的存儲(chǔ)方案并不受數(shù)據(jù)讀寫裝置的引導(dǎo)程序是否存儲(chǔ)在存儲(chǔ)體的引導(dǎo)區(qū)間的限制。又例如由于地址偏移量以及起始時(shí)間所占用的存儲(chǔ)空間比較小,故當(dāng)數(shù)據(jù)讀寫裝置的引導(dǎo)程序存儲(chǔ)在存儲(chǔ)體之外的其他存儲(chǔ)空間中時(shí),可以將地址偏移量和起始時(shí)間存儲(chǔ)在存儲(chǔ)引導(dǎo)程序的存儲(chǔ)空間中;當(dāng)數(shù)據(jù)讀寫裝置的引導(dǎo)程序存儲(chǔ)在存儲(chǔ)體中的引導(dǎo)區(qū)間中時(shí),為了能夠與標(biāo)準(zhǔn)文件系統(tǒng)相兼容,可以單獨(dú)將地址偏移量和起始時(shí)間存儲(chǔ)在獨(dú)立于存儲(chǔ)體之前的存儲(chǔ)空間中。這樣,當(dāng)數(shù)據(jù)讀寫裝置對(duì)原始文件分配表進(jìn)行讀寫操作時(shí),需要先從存儲(chǔ)體之外的存儲(chǔ)空間中或從存儲(chǔ)體中專門劃分出的參數(shù)存儲(chǔ)區(qū)間中獲取第一備份區(qū)間到原始文件分配表對(duì)應(yīng)的塊區(qū)間的偏移地址,以及第一備份區(qū)間的起始時(shí)間,為后續(xù)操作步驟打下基石出。進(jìn)一步,當(dāng)各備份區(qū)間位于存儲(chǔ)體中數(shù)據(jù)文件之后,即位于存儲(chǔ)體的最后面,且彼此相鄰時(shí),可以直接存儲(chǔ)第一個(gè)備份區(qū)間到原始文件分配表對(duì)應(yīng)的塊區(qū)間的偏移地址和每個(gè)備份區(qū)間的大小即可。由于每個(gè)備份區(qū)間的大小相同,故當(dāng)由一個(gè)備份區(qū)間移動(dòng)到下一個(gè)備份區(qū)間時(shí),可以將前一備份區(qū)間對(duì)應(yīng)的偏移地址加上一個(gè)備份區(qū)間的大小得到下一個(gè)備份區(qū)間對(duì)應(yīng)的偏移地址。在這種存儲(chǔ)體結(jié)構(gòu)下,所存儲(chǔ)的偏移地址的數(shù)據(jù)量更小,所占用的存儲(chǔ)空間更小。進(jìn)一步,原始文件分配表對(duì)應(yīng)的塊區(qū)間的地址也會(huì)與偏移地址和起始時(shí)間等存儲(chǔ)在一起,即或者存儲(chǔ)在獨(dú)立于存儲(chǔ)體的存儲(chǔ)空間或存儲(chǔ)在存儲(chǔ)體的參數(shù)存儲(chǔ)區(qū)間中。更進(jìn)一步,如圖4所示,本實(shí)施例的數(shù)據(jù)讀寫方法在步驟303之后還包括步驟305、存儲(chǔ)新的第一備份區(qū)間的起始時(shí)間和重新設(shè)置后的偏移地址。具體的,在切換到新的備份區(qū)間后,數(shù)據(jù)讀寫裝置需要將新的第一備份區(qū)間的起始時(shí)間和重新設(shè)置后的偏移地址存儲(chǔ)到存儲(chǔ)體之外的存儲(chǔ)空間中(例如與引導(dǎo)程序存儲(chǔ)在一起)或存儲(chǔ)在存儲(chǔ)體中劃分出的參數(shù)存儲(chǔ)區(qū)間中,為數(shù)據(jù)讀寫裝置下一次對(duì)存儲(chǔ)體進(jìn)行讀寫操作打下基礎(chǔ)。在本實(shí)施例中,通過將第一備份區(qū)間的起始時(shí)間、偏移地址和原始文件分配表對(duì)應(yīng)的塊區(qū)間的地址存儲(chǔ)到起來,為對(duì)存儲(chǔ)體進(jìn)行讀寫操作打下了基礎(chǔ)。另外,與現(xiàn)有技術(shù)相比,本實(shí)施例雖然有新的信息需要存儲(chǔ),但由于上述信息存儲(chǔ)在存儲(chǔ)體之外的存儲(chǔ)空間中或者將存儲(chǔ)體中的參數(shù)存儲(chǔ)區(qū)間放置在存儲(chǔ)體中數(shù)據(jù)文件之后,故無需對(duì)fat32文件系統(tǒng)進(jìn)行修改,實(shí)現(xiàn)了與標(biāo)準(zhǔn)文件系統(tǒng)的兼容。圖5為本發(fā)明又一實(shí)施例提供的數(shù)據(jù)讀寫方法的流程圖。本實(shí)施例基于圖4所示實(shí)施例實(shí)現(xiàn),如圖5所示,本實(shí)施例的方法在步驟300之前包括步驟200、在數(shù)據(jù)讀寫裝置第一次上電時(shí)的初始化過程中,數(shù)據(jù)讀寫裝置將原始文件分配表復(fù)制到存儲(chǔ)體的第一個(gè)備份區(qū)間中,將第一個(gè)備份區(qū)間作為第一備份區(qū)間,并將第一備份區(qū)間中存儲(chǔ)的原始文件分配表作為備份文件分配表,并設(shè)置第一備份區(qū)間的起始時(shí)間和偏移地址。在本實(shí)施例中,為了減少對(duì)原始文件分配表對(duì)應(yīng)的塊區(qū)間的讀寫操作,當(dāng)數(shù)據(jù)讀寫裝置在第一次上電時(shí)的初始化過程中,數(shù)據(jù)讀寫裝置的驅(qū)動(dòng)程序主動(dòng)將原始文件分配表拷貝到存儲(chǔ)體上第一個(gè)備份區(qū)間中,此時(shí)第一個(gè)備份區(qū)間即為所述的第一備份區(qū)間,而被復(fù)制到第一備份區(qū)間中的原始文件分配表即為備份文件分配表,為后續(xù)數(shù)據(jù)讀寫裝置的 fat32文件系統(tǒng)對(duì)存儲(chǔ)體進(jìn)行讀寫操作打下了基礎(chǔ)。與此同時(shí),數(shù)據(jù)讀寫裝置設(shè)置第一備份區(qū)間的起始時(shí)間,用來記錄第一備份區(qū)間的使用情況。數(shù)據(jù)讀寫裝置設(shè)置第一備份區(qū)間到原始文件分配表對(duì)應(yīng)的塊區(qū)間的偏移地址。其中,該偏移地址可以就是預(yù)先存儲(chǔ)到存儲(chǔ)體上專門劃分出的存儲(chǔ)空間或獨(dú)立于存儲(chǔ)體的其他存儲(chǔ)空間中的第一個(gè)備份區(qū)間到原始文件分配表對(duì)應(yīng)的塊區(qū)間的地址偏移量。基于上述,當(dāng)數(shù)據(jù)讀寫裝置的fat32文件系統(tǒng)對(duì)原始文件分配表發(fā)起讀寫操作時(shí),數(shù)據(jù)讀寫裝置就可以將原始文件分配表對(duì)應(yīng)的塊區(qū)間的地址加上偏移地址,獲得第一備份區(qū)間的地址;然后將對(duì)原始文件分配表的讀寫操作映射為對(duì)備份文件分配表的讀寫操作,也就是將對(duì)對(duì)原始文件分配表對(duì)應(yīng)的塊區(qū)間的讀寫操作映射為第一備份區(qū)間的讀寫操作。在本實(shí)施例中,數(shù)據(jù)讀寫裝置在第一次上電時(shí),將原始文件分配表復(fù)制到第一個(gè)備份區(qū)間中形成備份文件分配表,使得數(shù)據(jù)讀寫裝置對(duì)原始文件分配表進(jìn)行讀寫操作時(shí), 能夠?qū)?duì)原始文件分配表的讀寫操作轉(zhuǎn)換為對(duì)備份文件分配表的讀寫操作,解決了因?qū)υ嘉募峙浔韺?duì)應(yīng)的塊區(qū)間進(jìn)行讀寫操作的次數(shù)到達(dá)額定上限而導(dǎo)致原始文件分配表被破壞進(jìn)而導(dǎo)致整個(gè)存儲(chǔ)體中數(shù)據(jù)文件被丟失的問題。另外,本實(shí)施例還為本發(fā)明其他方法實(shí)施例打了基礎(chǔ)。進(jìn)一步,在上述各實(shí)施例的基礎(chǔ)上,為了使存儲(chǔ)體能夠與標(biāo)準(zhǔn)文件系統(tǒng)相兼容,本實(shí)施例的數(shù)據(jù)讀寫方法中還包括數(shù)據(jù)讀寫裝置在將備份文件分配表復(fù)制到新的第一備份區(qū)間中時(shí)即在備份區(qū)間進(jìn)行切換時(shí)用當(dāng)前備份文件分配表對(duì)原始文件分配表進(jìn)行更新。該更新過程可以包括數(shù)據(jù)讀寫裝置可以先用切換前第一備份區(qū)間中的備份文件分配表更新原始文件分配表,然后再將備份文件分配表復(fù)制到新的第一備份區(qū)間中;或者包括數(shù)據(jù)讀寫裝置在將備份文件分配表復(fù)制到新的第一備份區(qū)間中之后,用新的第一備份區(qū)間中的備份文件分配表更新原始文件分配表。進(jìn)一步,上述在備份區(qū)間發(fā)生切換時(shí),利用新的第一備份區(qū)間中的備份文件分配表對(duì)原始文件分配表進(jìn)行更新的操作也可以由用戶手動(dòng)完成,即獨(dú)立于數(shù)據(jù)讀寫操作過程而實(shí)現(xiàn)。更進(jìn)一步,用戶還可以通過手動(dòng)方式使用當(dāng)前正在使用的備份文件分配表更新原始文件分配表,即將當(dāng)前正在使用的備份文件分配表中的最新數(shù)據(jù)完全同步原始文件分配表中。用戶手動(dòng)更新原始文件分配表的操作可以在任何時(shí)間執(zhí)行,例如包括在發(fā)生備份區(qū)間切換時(shí)執(zhí)行,也包括在未發(fā)生備份區(qū)間切換時(shí)執(zhí)行。通過上述操作,在不考慮后面的備份文件分配表的情況下,原始文件分配表身就是一個(gè)標(biāo)準(zhǔn)的文件分配表,這樣存儲(chǔ)體就是一個(gè)標(biāo)準(zhǔn)的fat32分區(qū)存儲(chǔ)體,使得存儲(chǔ)體除了被數(shù)據(jù)讀寫裝置使用外,還可以被卸載下來被其他使用標(biāo)準(zhǔn)文件系統(tǒng)的設(shè)備使用,達(dá)到了與標(biāo)準(zhǔn)系統(tǒng)的兼容性。圖6A為本發(fā)明再一實(shí)施例提供的數(shù)據(jù)讀寫方法的流程。本實(shí)施例基于圖6B所示存儲(chǔ)體結(jié)構(gòu)來實(shí)現(xiàn),圖6B中的引導(dǎo)扇區(qū)、保留扇區(qū)、FAT1、FAT2以及文件數(shù)據(jù)區(qū)分別等同于圖2中的引導(dǎo)區(qū)間、保留區(qū)間、第一塊區(qū)間、第一塊區(qū)間和第二塊區(qū)間,圖6B中的FAT3-FATN 相當(dāng)于圖2中的多個(gè)備份區(qū)間。如圖6A所示,本實(shí)施例的數(shù)據(jù)讀寫方法包括步驟600、數(shù)據(jù)讀寫裝置第一次上電運(yùn)行時(shí)進(jìn)行初始化操作。在該步驟600中,數(shù)據(jù)讀寫裝置獲取原始文件分配表所在區(qū)域(即圖6B中所示的 FAT1)的第一個(gè)扇區(qū)和最后一個(gè)扇區(qū)的扇區(qū)號(hào),分別記為fat_tbl_start_sector和fat_ tbl_end_sector。在該步驟600中,數(shù)據(jù)讀寫裝置還會(huì)獲取原始文件分配表所在區(qū)域或者每個(gè)備份區(qū)間的大小,記為sunusectors。在本實(shí)施例中,以扇區(qū)為單位,則數(shù)據(jù)讀寫裝置獲取原始文件分配表所在區(qū)域或者每個(gè)備份區(qū)間占用的扇區(qū)個(gè)數(shù)。在該步驟600中,數(shù)據(jù)讀寫裝置還獲取存儲(chǔ)體末尾第一個(gè)備份區(qū)間的起始扇區(qū)號(hào),并記為 bak_start_sector。同時(shí),在該初始化過程中,數(shù)據(jù)讀寫裝置還會(huì)設(shè)定一個(gè)備份文件分配表號(hào)碼記錄參數(shù),記為bak_nUm,用于記錄當(dāng)前正在使用第幾個(gè)備份區(qū)間或者說正在使用第幾個(gè)備份文件分配表,即指向圖6B中所示的FAT3、FAT4….FATn中的哪一個(gè)。其中,bak_num的初值為 0,表示不使用備份文件分配表,而是使用正常的FATl ;而FAT3、FAT4….FATn分別對(duì)應(yīng)于 kik_nUm取1、2、3…η。故在后續(xù)對(duì)原始文件分配表的讀寫操作過程中,數(shù)據(jù)讀寫裝置還需要獲取bak_num的當(dāng)前取值。在該初始化過程中,數(shù)據(jù)讀寫裝置還會(huì)設(shè)定一個(gè)映射偏移(等同于偏移地址),記為mappingjffset,用于記錄當(dāng)前使用的備份區(qū)間的起始扇區(qū)地址與FATl的起始扇區(qū)地址的差值。其中,mappingjffset的初值為0。如果當(dāng)前使用的文件分配表是一個(gè)備份文件分配表,那么mappingjffset的當(dāng)前值就是備份文件分配表相對(duì)于FATl的偏移。在本實(shí)施例中,通過使用這個(gè)映射偏移實(shí)現(xiàn)在底層驅(qū)動(dòng)中將FATl映射到各個(gè)備份文件分配表中去, 而這個(gè)映射對(duì)FAT32文件系統(tǒng)來說是完全透明的,不需要對(duì)fat32文件系統(tǒng)做任何修改。故在后續(xù)對(duì)原始文件分配表的讀寫操作過程中,數(shù)據(jù)讀寫裝置還會(huì)獲取mappingjffset的當(dāng)前值。另外,為了記錄當(dāng)前正在使用的備份文件分配表的起始投入使用時(shí)間,在該初始化過程中,數(shù)據(jù)讀寫裝置還會(huì)設(shè)置起始時(shí)間,記為startjime,通過這個(gè)起始時(shí)間可以判斷備份文件分配表是否達(dá)到使用極限。故在后續(xù)對(duì)原始文件分配表的讀寫操作過程中,數(shù)據(jù)讀寫裝置還會(huì)獲取當(dāng)前正在使用的備份文件分配表的起始時(shí)間。上面設(shè)定的所有參數(shù)的初始值,即數(shù)據(jù)讀寫裝置在第一次開機(jī)運(yùn)行初始化時(shí)獲取的初值,需要被保存起來,并且數(shù)據(jù)讀寫裝置在運(yùn)行過程中對(duì)上述參數(shù)進(jìn)行更新后的值也需要保存起來,以便下次數(shù)據(jù)讀寫裝置重啟后仍能獲取這些參數(shù)并能夠使用這些參數(shù)定位到正在使用的備份文件分配表。但是,這些參數(shù)的保存的位置不受限制,只要是保存在非易失性存儲(chǔ)體中就行,這樣可以保證這些參數(shù)在數(shù)據(jù)讀寫裝置下電后不被丟失。例如當(dāng)數(shù)據(jù)讀寫裝置的引導(dǎo)程序不存儲(chǔ)在存儲(chǔ)體中時(shí),在數(shù)據(jù)讀寫裝置內(nèi)部至少存在一個(gè)非易失性存儲(chǔ)空間,因?yàn)橹辽傩枰粋€(gè)保存最初的引導(dǎo)程序的存儲(chǔ)空間。而由于這些參數(shù)所占用的空間不大,其中七個(gè)參數(shù)只要觀字節(jié)即可,因此一種較為優(yōu)選的存儲(chǔ)方式是將這些參數(shù)存儲(chǔ)在存儲(chǔ)引導(dǎo)程序的存儲(chǔ)空間中。再例如當(dāng)數(shù)據(jù)讀寫裝置的驅(qū)動(dòng)程序存儲(chǔ)在存儲(chǔ)體的引導(dǎo)區(qū)間中時(shí),可以在單獨(dú)將這些參數(shù)存儲(chǔ)在數(shù)據(jù)讀寫裝置內(nèi)部的非易失性存儲(chǔ)空間中,或者在存儲(chǔ)體最后劃分出參數(shù)存儲(chǔ)區(qū)間并將這些參數(shù)存儲(chǔ)在存儲(chǔ)體最后的參數(shù)存儲(chǔ)區(qū)間中,這樣可以使得不需要對(duì)fat32文件系統(tǒng)進(jìn)行修改,實(shí)現(xiàn)與標(biāo)準(zhǔn)文件系統(tǒng)的兼容。本實(shí)施例以單獨(dú)將這些參數(shù)存儲(chǔ)在數(shù)據(jù)讀寫裝置內(nèi)部的非易失性存儲(chǔ)空間中為例。進(jìn)一步,在上述初始化過程中,數(shù)據(jù)讀寫裝置還會(huì)將FATl中的原始文件分配表拷貝到FAT3中,并將備份文件分配表號(hào)碼記錄參數(shù)加1,即將bak_nUm置為1,同時(shí)計(jì)算映射偏移并保存。其中,可以根據(jù)公式⑴來計(jì)算新的映射偏移。mapping_offset = (bak_start_sector_fat_tbl_start_sector)+sum_ sectors X (bak—num-1) (1)通過第一次開機(jī)時(shí)的拷貝操作,使得從第一次開機(jī)起,數(shù)據(jù)讀寫裝置實(shí)際使用的就是備份文件分配表(例如FAT3中的備份文件分配表),而非FATl中的原始文件分配表。 此時(shí),mapping—offset 艮口為 bak—start—sector—fat—tbl—start—sector。步驟601、當(dāng)數(shù)據(jù)讀寫裝置判斷的fat32文件系統(tǒng)發(fā)起對(duì)存儲(chǔ)體的讀寫操作時(shí),數(shù)據(jù)讀寫裝置將讀寫操作的起始扇區(qū)號(hào)設(shè)置為變量fat_rW_SeCt0r,并判斷fat32文件系統(tǒng)發(fā)起的讀寫操作是否是對(duì)FATl進(jìn)行的讀寫操作;如果判斷結(jié)果為是,執(zhí)行步驟602 ;如果判斷結(jié)果為否,執(zhí)行步驟607。具體的,數(shù)據(jù)讀寫裝置可以通過判斷讀寫操作的起始扇區(qū)的扇區(qū)號(hào)是否落在fat_ tbl_start_sector-fat_tbl_end_sector之間,來判斷fat32文件系統(tǒng)是否對(duì)FATl發(fā)起讀寫操作。如果讀寫操作的起始扇區(qū)的扇區(qū)號(hào)落在fat_tbl_start_sect0r-fat_tbl_end_ sector之間,說明fat32文件系統(tǒng)是對(duì)FATl發(fā)起的讀寫操作,亦即對(duì)原始文件分配表進(jìn)行讀寫操作;反之,說明不是對(duì)FATl發(fā)起的讀寫操作,而是對(duì)數(shù)據(jù)文件存儲(chǔ)區(qū)發(fā)起的讀寫操作。步驟602、數(shù)據(jù)讀寫裝置根據(jù)FAT3的起始時(shí)間(即startjime)和當(dāng)前時(shí)間,判斷當(dāng)前備份文件分配表是否達(dá)到使用極限;如果判斷結(jié)果為是,執(zhí)行步驟603 ;如果判斷結(jié)果為否,執(zhí)行步驟606。對(duì)于一個(gè)存儲(chǔ)體每天訪問頻率較為固定的數(shù)據(jù)讀寫裝置來說,一個(gè)原始文件分配表或備份文件分配表可以使用的時(shí)間也是固定的,故在本實(shí)施例中只需要記下當(dāng)前備份文件分配表自何時(shí)開始使用,并判斷到當(dāng)前時(shí)間的時(shí)間間隔是否已經(jīng)超過備份文件分配表的極限使用時(shí)間即可以判斷是否達(dá)到了使用極限。步驟603、數(shù)據(jù)讀寫裝置將備份文件分配表號(hào)碼加1,并記錄新的備份文件分配表的起始使用時(shí)間為當(dāng)前時(shí)間,然后將這兩個(gè)參數(shù)保存起來,并執(zhí)行步驟604。如果備份文件分配表的使用達(dá)到了使用極限,則將bak_nUm加1,從而指向新的備份區(qū)間,也就是說指向新的備份文件分配表。同時(shí),記錄新的備份文件分配表的startjime 為當(dāng)前時(shí)間,即記錄新的備份文件分配表的起始使用時(shí)間。例如假設(shè)當(dāng)前備份文件分配表存儲(chǔ)在FAT3中,當(dāng)前備份區(qū)間為FAT3時(shí),則經(jīng)過步驟603后,bak_nUm的值就會(huì)變?yōu)?,表明即將使用FAT4中存儲(chǔ)的備份文件分配表。FAT4 對(duì)應(yīng)的start_time=當(dāng)前時(shí)間。再例如假設(shè)當(dāng)前備份文件分配表存儲(chǔ)在FAT4中,當(dāng)前備份區(qū)間為FAT4時(shí),則經(jīng)過步驟603后,bak_num的值就會(huì)變?yōu)?,表明即將使用FAT5中存儲(chǔ)的備份文件分配表。FAT5對(duì)應(yīng)的start_time =當(dāng)前時(shí)間。步驟604、數(shù)據(jù)讀寫裝置將到使用極限的備份文件分配表拷貝到下一個(gè)備份區(qū)間中,同時(shí)備份一份到FAT1,并執(zhí)行步驟605。當(dāng)當(dāng)前備份文件分配表的使用達(dá)到使用極限時(shí),數(shù)據(jù)讀寫裝置還需要將當(dāng)前剛達(dá)到使用極限的備份文件分配表到下一個(gè)備份區(qū)間中,以生成新的備份文件分配表。例如假設(shè)當(dāng)前備份文件分配表存儲(chǔ)在FAT3中,當(dāng)前備份區(qū)間為FAT3時(shí),數(shù)據(jù)讀寫裝置就會(huì)將備份文件分配表從FAT3中拷貝到FAT4中,同時(shí)使用備份文件分配表對(duì)FATl 中的原始文件分配表進(jìn)行更新。再例如假設(shè)當(dāng)前備份文件分配表存儲(chǔ)在FAT4中,當(dāng)前備份區(qū)間為FAT4時(shí),數(shù)據(jù)讀寫裝置就會(huì)將備份文件分配表從FAT4中拷貝到FAT5中,同時(shí)使用備份文件分配表對(duì)FATl中的原始文件分配表進(jìn)行更新。步驟605、數(shù)據(jù)讀寫裝置計(jì)算新的映射偏移并保存。
例如當(dāng)下一個(gè)備份區(qū)間為FAT4時(shí),根據(jù)公式(1)可以計(jì)算出新的映射偏移 mapping—offset = (bak—start_sector_fat_tbl_start_sector)+sum—sectors。再例如 對(duì)下一個(gè)備份區(qū)間為FAT5時(shí),根據(jù)公式(1)可以計(jì)算出新的映射偏移mapping—offset = (bak—start—sector-fat—tbl—start—sector)+2X sum—sectors。步驟606、數(shù)據(jù)讀寫裝置將起始扇區(qū)號(hào)fat_rw_sect0r加映射偏移得到實(shí)際讀寫操作的起始扇區(qū)號(hào)fat_rw_sector,并執(zhí)行步驟607。當(dāng)fat32文件系統(tǒng)是對(duì)原始文件分配表進(jìn)行的讀寫操作時(shí),數(shù)據(jù)讀寫裝置在發(fā)起對(duì)存儲(chǔ)體的讀寫操作之前,需要把fat_rw_sector加上映射偏移mapping_0ffset得到一個(gè)扇區(qū)號(hào),這樣就將對(duì)FATl的讀寫操作映射到真正正在使用的備份文件分配表上。這個(gè)操作對(duì)于fat32文件系統(tǒng)來說透明的,fat32文件系統(tǒng)認(rèn)為訪問的還是標(biāo)準(zhǔn)文件分配表FATl,故不需要對(duì)fat32文件系統(tǒng)做任何修改。具體的,數(shù)據(jù)讀寫裝置將fat_rW_sect0r+mapping_ offset重新賦值給變量fat_rw_sector。如果fat32文件系統(tǒng)是對(duì)正常的數(shù)據(jù)文件存儲(chǔ)區(qū)進(jìn)行讀寫操作,而不是對(duì)原始文件分配表進(jìn)行讀寫操作,則不需要對(duì)fat_rW_sector做任何調(diào)整。步驟607、數(shù)據(jù)讀寫裝置發(fā)起對(duì)起始扇區(qū)號(hào)為fat_rW_SeCt0r的扇區(qū)的讀寫操作, 并執(zhí)行步驟608。其中,當(dāng)由步驟601轉(zhuǎn)到步驟607時(shí),數(shù)據(jù)讀寫裝置是對(duì)圖6B中的數(shù)據(jù)文件存儲(chǔ)區(qū)進(jìn)行讀寫操作。其中,當(dāng)由步驟606轉(zhuǎn)到步驟607時(shí),數(shù)據(jù)讀寫裝置是對(duì)備份區(qū)間進(jìn)行讀寫操作。 例如假設(shè)當(dāng)由步驟602經(jīng)步驟606轉(zhuǎn)到步驟607時(shí),數(shù)據(jù)讀寫裝置對(duì)圖6B中的FAT3進(jìn)行讀寫操作,則當(dāng)由步驟603經(jīng)步驟604、605、606轉(zhuǎn)到步驟607時(shí),數(shù)據(jù)讀寫裝置是對(duì)圖6B 中的FAT4進(jìn)行讀寫操作。步驟608、數(shù)據(jù)讀寫裝置完成FAT32文件系統(tǒng)發(fā)起的讀寫操作。本實(shí)施例的數(shù)據(jù)讀寫方法,在存儲(chǔ)體的末尾預(yù)留多個(gè)備份區(qū)間,用于實(shí)現(xiàn)對(duì)原始文件分配表的多個(gè)備份,并通過映射偏移將對(duì)原始文件分配表的讀寫操作重定位成對(duì)備份文件分配表的讀寫操作,從而不再直接對(duì)原始文件分配表對(duì)應(yīng)的扇區(qū)進(jìn)行讀寫操作,解決了現(xiàn)有技術(shù)中因nand flash使用壽命短而導(dǎo)致nand flash上原始文件分配表被提前破壞進(jìn)而導(dǎo)致nand flash上其他數(shù)據(jù)文件丟失的問題,尤其是在對(duì)原始文件分配進(jìn)行頻繁讀寫操作時(shí),本實(shí)施例的效果會(huì)更加明顯;另外,本實(shí)施例的方法,對(duì)于fat32文件系統(tǒng)來說是透明的,不需要對(duì)fat32文件系統(tǒng)做任何修改,這樣實(shí)現(xiàn)的存儲(chǔ)體可以與標(biāo)準(zhǔn)文件系統(tǒng)相兼容。圖7為本發(fā)明一實(shí)施例提供的數(shù)據(jù)讀寫裝置的結(jié)構(gòu)示意圖。如圖7所示,本實(shí)施例的數(shù)據(jù)讀寫裝置包括映射模塊71、判斷模塊72、第一讀寫模塊73和第二讀寫模塊74。其中,映射模塊71,與存儲(chǔ)體連接,用于在對(duì)存儲(chǔ)體中原始文件分配表對(duì)應(yīng)的塊區(qū)間進(jìn)行讀寫操作時(shí),根據(jù)原始文件分配表對(duì)應(yīng)的塊區(qū)間的地址和偏移地址,將對(duì)原始文件分配表對(duì)應(yīng)的塊區(qū)間的讀寫操作映射為對(duì)存儲(chǔ)體中存儲(chǔ)備份文件分配表的第一備份區(qū)間的讀寫操作。其中,所述第一備份區(qū)間的大小與原始文件分配表對(duì)應(yīng)的塊區(qū)間的大小相同; 所述偏移地址為原始文件分配表對(duì)應(yīng)的塊區(qū)間到第一備份區(qū)間的地址偏移量。判斷模塊72,用于根據(jù)第一備份區(qū)間的起始時(shí)間和當(dāng)前時(shí)間,判斷第一備份區(qū)間是否到達(dá)使用極限。第一讀寫模塊73,與判斷模塊72和存儲(chǔ)體連接,用于在第一備份區(qū)間到達(dá)使用極限時(shí),將第一備份區(qū)間中存儲(chǔ)的備份文件分配表復(fù)制到存儲(chǔ)體中下一個(gè)備份區(qū)間中,將下一個(gè)備份區(qū)間作為新的第一備份區(qū)間,設(shè)置新的第一備份區(qū)間的起始時(shí)間,并重新設(shè)置偏移地址,然后根據(jù)原始文件分配表對(duì)應(yīng)的塊區(qū)間的地址和重新設(shè)置后的偏移地址,將對(duì)原始文件分配表對(duì)應(yīng)的塊區(qū)間的讀寫操作映射為對(duì)新的第一備份區(qū)間的讀寫操作,并根據(jù)對(duì)原始文件分配表對(duì)應(yīng)的塊區(qū)間進(jìn)行讀寫操作的讀寫指令完成對(duì)新的第一備份區(qū)間的讀寫操作。第二讀寫模塊74,與判斷模塊72和存儲(chǔ)體連接,用于在第一備份區(qū)間未到達(dá)使用極限時(shí),根據(jù)對(duì)原始文件分配表對(duì)應(yīng)的塊區(qū)間進(jìn)行讀寫操作的讀寫指令完成對(duì)第一備份區(qū)間的讀寫操作。本實(shí)施例的數(shù)據(jù)讀寫裝置的各功能模塊可用于執(zhí)行圖3所示數(shù)據(jù)讀寫方法的流程,其具體工作原理不再贅述,詳見方法實(shí)施例的描述。本實(shí)施例的數(shù)據(jù)讀寫裝置,與本發(fā)明實(shí)施例提供的存儲(chǔ)體相配合,在對(duì)原始文件分配表進(jìn)行讀寫操作時(shí),將對(duì)原始文件分配表的讀寫操作轉(zhuǎn)換為對(duì)備份文件分配表的讀寫操作,從而將對(duì)原始文件分配表對(duì)應(yīng)的塊區(qū)間的讀寫操作轉(zhuǎn)換為對(duì)存儲(chǔ)備份文件分配表的備份區(qū)間的讀寫操作,而在一個(gè)備份區(qū)間的使用到達(dá)使用極限時(shí),將備份文件分配表復(fù)制到下一個(gè)備份區(qū)間,從而將對(duì)原始文件分配表對(duì)應(yīng)的塊區(qū)間的讀寫操作轉(zhuǎn)換為對(duì)另一個(gè)備份區(qū)間的讀寫操作,解決了現(xiàn)有技術(shù)中因?qū)υ嘉募峙浔韺?duì)應(yīng)的塊區(qū)間的讀寫次數(shù)達(dá)到額定上限時(shí)導(dǎo)致原始文件分配表被破壞進(jìn)而導(dǎo)致整個(gè)存儲(chǔ)體上的數(shù)據(jù)文件被丟失的問題。圖8為本發(fā)明另一實(shí)施例提供的數(shù)據(jù)讀寫裝置的結(jié)構(gòu)示意圖。本實(shí)施例基于圖7 所示實(shí)施例實(shí)現(xiàn),如圖8所示,本實(shí)施例的裝置還包括獲取模塊81。獲取模塊81,與判斷模塊72連接,用于在映射模塊71執(zhí)行相應(yīng)映射操作之前,獲取偏移地址和第一備份區(qū)間的起始時(shí)間,并提供給判斷模塊72。進(jìn)一步,本實(shí)施例的設(shè)備還包括存儲(chǔ)模塊82。存儲(chǔ)模塊82,與第一讀寫模塊73連接,用于存儲(chǔ)新的第一備份區(qū)間的起始時(shí)間和重新設(shè)置后的偏移地址。上述獲取模塊和存儲(chǔ)模塊可用于執(zhí)行圖4所示數(shù)據(jù)讀寫方法的流程,其具體工作原理不再贅述,詳見方法實(shí)施例的描述。進(jìn)一步,本實(shí)施例的映射模塊71還用于在數(shù)據(jù)讀寫裝置第一次上電時(shí)的初始化過程中,將原始文件分配表復(fù)制到存儲(chǔ)體的第一個(gè)備份區(qū)間中,將第一個(gè)備份區(qū)間作為第一備份區(qū)間,并將第一備份區(qū)間中存儲(chǔ)的原始文件分配表作為備份文件分配表,并設(shè)置第一備份區(qū)間的起始時(shí)間和偏移地址。更進(jìn)一步,本實(shí)施例的設(shè)備還包括更新模塊83。更新模塊83,與存儲(chǔ)體連接,用于根據(jù)第一備份區(qū)間或新的第一備份區(qū)間中的備份文件分配表更新原始文件分配表。本實(shí)施例的設(shè)備還包括第三讀寫模塊84。第三讀寫模塊84,與存儲(chǔ)體連接,用于在對(duì)存儲(chǔ)體中數(shù)據(jù)文件對(duì)應(yīng)的塊區(qū)間進(jìn)行讀寫操作時(shí),根據(jù)對(duì)數(shù)據(jù)文件對(duì)應(yīng)的塊區(qū)間進(jìn)行讀寫操作的讀寫指令完成對(duì)數(shù)據(jù)文件對(duì)應(yīng)的塊區(qū)間的讀寫操作。其中,存儲(chǔ)體中各個(gè)備份區(qū)間位于存儲(chǔ)體中數(shù)據(jù)文件對(duì)應(yīng)的塊區(qū)間之后,且依次相鄰。上述各功能模塊可用于執(zhí)行圖5或圖6A所示數(shù)據(jù)讀寫方法中的相應(yīng)流程,其具體工作原理不再贅述,詳見方法實(shí)施例的描述。本實(shí)施例的數(shù)據(jù)讀寫裝置,與本發(fā)明實(shí)施例提供的存儲(chǔ)體相配合,在對(duì)原始文件分配表進(jìn)行讀寫操作時(shí),將對(duì)原始文件分配表的讀寫操作轉(zhuǎn)換為對(duì)備份文件分配表的讀寫操作,從而將對(duì)原始文件分配表對(duì)應(yīng)的塊區(qū)間的讀寫操作轉(zhuǎn)換為對(duì)存儲(chǔ)備份文件分配表的備份區(qū)間的讀寫操作,而在一個(gè)備份區(qū)間的使用到達(dá)使用極限時(shí),將備份文件分配表復(fù)制到下一個(gè)備份區(qū)間,從而將對(duì)原始文件分配表對(duì)應(yīng)的塊區(qū)間的讀寫操作轉(zhuǎn)換為對(duì)另一個(gè)備份區(qū)間的讀寫操作,解決了現(xiàn)有技術(shù)中因?qū)υ嘉募峙浔韺?duì)應(yīng)的塊區(qū)間的讀寫次數(shù)達(dá)到額定上限時(shí)導(dǎo)致原始文件分配表被破壞進(jìn)而導(dǎo)致整個(gè)存儲(chǔ)體上的數(shù)據(jù)文件被丟失的問題。本發(fā)明一實(shí)施例提供一種網(wǎng)絡(luò)設(shè)備,包括數(shù)據(jù)讀寫裝置和存儲(chǔ)體。其中,存儲(chǔ)體為本發(fā)明實(shí)施例提供的存儲(chǔ)體,其具體結(jié)構(gòu)可參見圖1或圖2或圖6B 所示。在存儲(chǔ)體中,存儲(chǔ)有各種數(shù)據(jù),例如原始文件分配表、數(shù)據(jù)文件、備份文件分配表等。其中,數(shù)據(jù)讀寫裝置,主要用于對(duì)存儲(chǔ)體進(jìn)行讀寫操作。本實(shí)施例的數(shù)據(jù)讀寫裝置為本發(fā)明上述實(shí)施例提供的數(shù)據(jù)讀寫裝置,其結(jié)構(gòu)可參見圖7或圖8所示,其具體工作原理詳見圖3-圖6A所示任一實(shí)施例的描述。本實(shí)施例的網(wǎng)絡(luò)設(shè)備,通過在存儲(chǔ)體中劃分備份區(qū)間并對(duì)原始文件分配表進(jìn)行備份,而其數(shù)據(jù)讀寫裝置通過與存儲(chǔ)體相配合,將對(duì)原始文件分配表的讀寫操作轉(zhuǎn)換為對(duì)備份文件分配表的讀寫操作,也就是將對(duì)原始文件分配表對(duì)應(yīng)的塊區(qū)間的擦除操作轉(zhuǎn)換為對(duì)備份區(qū)間的擦除操作,解決了因?qū)υ嘉募峙浔磉M(jìn)行頻繁讀寫操作導(dǎo)致其對(duì)應(yīng)的塊區(qū)間的擦除次數(shù)達(dá)到上限而使fat32文件系統(tǒng)中的原始文件分配表被提前破壞進(jìn)而導(dǎo)致存儲(chǔ)體中其他數(shù)據(jù)文件被(由于文件分配表被破壞而訪問不到)丟失的問題。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述方法實(shí)施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成,前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),執(zhí)行包括上述方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括R0M、RAM、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。最后應(yīng)說明的是以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。
權(quán)利要求
1.一種數(shù)據(jù)讀寫方法,其特征在于,包括當(dāng)對(duì)存儲(chǔ)體中原始文件分配表對(duì)應(yīng)的塊區(qū)間進(jìn)行讀寫操作時(shí),根據(jù)所述原始文件分配表對(duì)應(yīng)的塊區(qū)間的地址和偏移地址,將對(duì)所述原始文件分配表對(duì)應(yīng)的塊區(qū)間的讀寫操作映射為對(duì)所述存儲(chǔ)體中存儲(chǔ)備份文件分配表的第一備份區(qū)間的讀寫操作;其中,所述第一備份區(qū)間的大小與所述原始文件分配表對(duì)應(yīng)的塊區(qū)間的大小相同,所述偏移地址為所述原始文件分配表對(duì)應(yīng)的塊區(qū)間到所述第一備份區(qū)間的地址偏移量;根據(jù)所述第一備份區(qū)間的起始時(shí)間和當(dāng)前時(shí)間,判斷所述第一備份區(qū)間是否到達(dá)使用極限;當(dāng)所述第一備份區(qū)間到達(dá)使用極限時(shí),將所述第一備份區(qū)間中存儲(chǔ)的備份文件分配表復(fù)制到所述存儲(chǔ)體中下一個(gè)備份區(qū)間中,將所述下一個(gè)備份區(qū)間作為新的第一備份區(qū)間, 設(shè)置所述新的第一備份區(qū)間的起始時(shí)間,并重新設(shè)置所述偏移地址,然后根據(jù)所述原始文件分配表對(duì)應(yīng)的塊區(qū)間的地址和重新設(shè)置后的偏移地址,將對(duì)所述原始文件分配表對(duì)應(yīng)的塊區(qū)間的讀寫操作映射為對(duì)所述新的第一備份區(qū)間的讀寫操作,并根據(jù)對(duì)所述原始文件分配表對(duì)應(yīng)的塊區(qū)間進(jìn)行讀寫操作的讀寫指令完成對(duì)所述新的第一備份區(qū)間的讀寫操作;當(dāng)所述第一備份區(qū)間未到達(dá)使用極限時(shí),根據(jù)對(duì)所述原始文件分配表對(duì)應(yīng)的塊區(qū)間進(jìn)行讀寫操作的讀寫指令完成對(duì)所述第一備份區(qū)間的讀寫操作。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)讀寫方法,其特征在于,還包括在根據(jù)所述原始文件分配表對(duì)應(yīng)的塊區(qū)間的地址和偏移地址,將對(duì)所述原始文件分配表對(duì)應(yīng)的塊區(qū)間的讀寫操作映射為對(duì)所述存儲(chǔ)體中存儲(chǔ)備份文件分配表的第一備份區(qū)間的讀寫操作之前,獲取所述偏移地址和所述第一備份區(qū)間的起始時(shí)間;在將所述第一備份區(qū)間中存儲(chǔ)的備份文件分配表復(fù)制到所述存儲(chǔ)體中下一個(gè)備份區(qū)間中,將所述下一個(gè)備份區(qū)間作為新的第一備份區(qū)間,設(shè)置所述新的第一備份區(qū)間的起始時(shí)間,并重新設(shè)置所述偏移地址之后,存儲(chǔ)所述新的第一備份區(qū)間的起始時(shí)間和重新設(shè)置后的偏移地址。
3.根據(jù)權(quán)利要求1所述的數(shù)據(jù)讀寫方法,其特征在于,在根據(jù)所述原始文件分配表對(duì)應(yīng)的塊區(qū)間的地址和偏移地址,將對(duì)所述原始文件分配表對(duì)應(yīng)的塊區(qū)間的讀寫操作映射為對(duì)所述存儲(chǔ)體中存儲(chǔ)備份文件分配表的第一備份區(qū)間的讀寫操作之前包括將所述原始文件分配表復(fù)制到所述存儲(chǔ)體的第一個(gè)備份區(qū)間中,將所述第一個(gè)備份區(qū)間作為所述第一備份區(qū)間,并將所述第一備份區(qū)間中存儲(chǔ)的原始文件分配表作為所述備份文件分配表,并設(shè)置所述第一備份區(qū)間的起始時(shí)間和所述偏移地址。
4.根據(jù)權(quán)利要求1所述的數(shù)據(jù)讀寫方法,其特征在于,還包括在將所述第一備份區(qū)間中存儲(chǔ)的備份文件分配表復(fù)制到所述存儲(chǔ)體中下一個(gè)備份區(qū)間中,將所述下一個(gè)備份區(qū)間作為新的第一備份區(qū)間時(shí),根據(jù)所述第一備份區(qū)間或所述新的第一備份區(qū)間中的備份文件分配表更新所述原始文件分配表。
5.根據(jù)權(quán)利要求1或2或3或4所述的數(shù)據(jù)讀寫方法,其特征在于,所述存儲(chǔ)體中各個(gè)備份區(qū)間位于所述存儲(chǔ)體中數(shù)據(jù)文件對(duì)應(yīng)的塊區(qū)間之后,且依次相鄰。
6.一種數(shù)據(jù)讀寫裝置,其特征在于,包括映射模塊,用于在對(duì)存儲(chǔ)體中原始文件分配表對(duì)應(yīng)的塊區(qū)間進(jìn)行讀寫操作時(shí),根據(jù)所述原始文件分配表對(duì)應(yīng)的塊區(qū)間的地址和偏移地址,將對(duì)所述原始文件分配表對(duì)應(yīng)的塊區(qū)間的讀寫操作映射為對(duì)所述存儲(chǔ)體中存儲(chǔ)備份文件分配表的第一備份區(qū)間的讀寫操作;其中,所述第一備份區(qū)間的大小與所述原始文件分配表對(duì)應(yīng)的塊區(qū)間的大小相同,所述偏移地址為所述原始文件分配表對(duì)應(yīng)的塊區(qū)間到所述第一備份區(qū)間的地址偏移量;判斷模塊,用于根據(jù)所述第一備份區(qū)間的起始時(shí)間和當(dāng)前時(shí)間,判斷所述第一備份區(qū)間是否到達(dá)使用極限;第一讀寫模塊,用于在所述第一備份區(qū)間到達(dá)使用極限時(shí),將所述第一備份區(qū)間中存儲(chǔ)的備份文件分配表復(fù)制到所述存儲(chǔ)體中下一個(gè)備份區(qū)間中,將所述下一個(gè)備份區(qū)間作為新的第一備份區(qū)間,設(shè)置所述新的第一備份區(qū)間的起始時(shí)間,并重新設(shè)置所述偏移地址,然后根據(jù)所述原始文件分配表對(duì)應(yīng)的塊區(qū)間的地址和重新設(shè)置后的偏移地址,將對(duì)所述原始文件分配表對(duì)應(yīng)的塊區(qū)間的讀寫操作映射為對(duì)所述新的第一備份區(qū)間的讀寫操作,并根據(jù)對(duì)所述原始文件分配表對(duì)應(yīng)的塊區(qū)間進(jìn)行讀寫操作的讀寫指令完成對(duì)所述新的第一備份區(qū)間的讀寫操作;第二讀寫模塊,用于在所述第一備份區(qū)間未到達(dá)使用極限時(shí),根據(jù)對(duì)所述原始文件分配表對(duì)應(yīng)的塊區(qū)間進(jìn)行讀寫操作的讀寫指令完成對(duì)所述第一備份區(qū)間的讀寫操作。
7.根據(jù)權(quán)利要求6所述的數(shù)據(jù)讀寫裝置,其特征在于,還包括獲取模塊,用于獲取所述偏移地址和所述第一備份區(qū)間的起始時(shí)間;存儲(chǔ)模塊,用于存儲(chǔ)所述新的第一備份區(qū)間的起始時(shí)間和重新設(shè)置后的偏移地址。
8.根據(jù)權(quán)利要求6所述的數(shù)據(jù)讀寫裝置,其特征在于,所述映射模塊還用于將所述原始文件分配表復(fù)制到所述存儲(chǔ)體的第一個(gè)備份區(qū)間中,將所述第一個(gè)備份區(qū)間作為所述第一備份區(qū)間,并將所述第一備份區(qū)間中存儲(chǔ)的原始文件分配表作為備份文件分配表,并設(shè)置所述第一備份區(qū)間的起始時(shí)間和所述偏移地址。
9.根據(jù)權(quán)利要求6或7或8所述的數(shù)據(jù)讀寫裝置,其特征在于,還包括更新模塊,用于在將所述第一備份區(qū)間中存儲(chǔ)的備份文件分配表復(fù)制到所述存儲(chǔ)體中下一個(gè)備份區(qū)間中,將所述下一個(gè)備份區(qū)間作為新的第一備份區(qū)間時(shí),根據(jù)所述第一備份區(qū)間或所述新的第一備份區(qū)間中的備份文件分配表更新所述原始文件分配表。
10.一種存儲(chǔ)體,其特征在于,包括第一塊區(qū)間和至少一個(gè)備份區(qū)間;所述第一塊區(qū)間,用于存儲(chǔ)原始文件分配表;所述至少一個(gè)備份區(qū)間中包括第一備份區(qū)間,所述第一備份區(qū)間用于存儲(chǔ)備份文件分配表;其中,每個(gè)備份區(qū)間的大小與所述第一塊區(qū)間的大小相同。
11.根據(jù)權(quán)利要求10所述的存儲(chǔ)體,其特征在于,還包括第二塊區(qū)間,用于存儲(chǔ)數(shù)據(jù)文件;所述至少一個(gè)備份區(qū)間位于所述存儲(chǔ)體中所述第二塊區(qū)間之后,且依次相鄰。
12.—種網(wǎng)絡(luò)設(shè)備,其特征在于,包括權(quán)利要求6-9任一項(xiàng)所述的數(shù)據(jù)讀寫裝置和權(quán)利要求10或11所述的存儲(chǔ)體。
全文摘要
本發(fā)明提供一種數(shù)據(jù)讀寫方法、裝置、存儲(chǔ)體及網(wǎng)絡(luò)設(shè)備。其中方法包括當(dāng)對(duì)存儲(chǔ)體中原始文件分配表對(duì)應(yīng)的塊區(qū)間進(jìn)行讀寫操作時(shí),根據(jù)原始文件分配表對(duì)應(yīng)的塊區(qū)間的地址和偏移地址,將對(duì)原始文件分配表對(duì)應(yīng)的塊區(qū)間的讀寫操作映射為對(duì)存儲(chǔ)備份文件分配表的第一備份區(qū)間的讀寫操作;當(dāng)?shù)谝粋浞輩^(qū)間到達(dá)使用極限時(shí),將第一備份區(qū)間中存儲(chǔ)的備份文件分配表復(fù)制到所述存儲(chǔ)體中下一個(gè)備份區(qū)間中,將下一個(gè)備份區(qū)間作為新的第一備份區(qū)間,將對(duì)原始文件分配表對(duì)應(yīng)的塊區(qū)間的讀寫操作映射為對(duì)新的第一備份區(qū)間的讀寫操作。本發(fā)明技術(shù)方案解決了因nand flash使用壽命受限導(dǎo)致文件分配表被提前破壞進(jìn)而導(dǎo)致nand flash中其他文件數(shù)據(jù)被丟失的問題。
文檔編號(hào)G06F12/02GK102508782SQ20111029406
公開日2012年6月20日 申請(qǐng)日期2011年9月29日 優(yōu)先權(quán)日2011年9月29日
發(fā)明者全太平 申請(qǐng)人:北京星網(wǎng)銳捷網(wǎng)絡(luò)技術(shù)有限公司