欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種磁盤分區(qū)故障修復(fù)方法及裝置的制作方法

文檔序號:6434659閱讀:385來源:國知局
專利名稱:一種磁盤分區(qū)故障修復(fù)方法及裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別是涉及一種磁盤分區(qū)故障修復(fù)方法及裝置。
背景技術(shù)
隨著科技的飛速發(fā)展和時(shí)代的進(jìn)步,計(jì)算機(jī)設(shè)備已經(jīng)成為幾乎人人必備的工具, 人們可以通過計(jì)算機(jī)設(shè)備對文件進(jìn)行保存、查看、修改、刪除等操作,大大提高了文件管理的效率。計(jì)算機(jī)中用于存放信息的存儲設(shè)備主要是硬盤,但是硬盤不能直接使用,必須對硬盤進(jìn)行分割,分割成的一塊一塊的硬盤區(qū)域,這中磁盤區(qū)域就稱為磁盤分區(qū)。在傳統(tǒng)的磁盤管理中,將一個(gè)硬盤分為兩大類分區(qū)主分區(qū)和擴(kuò)展分區(qū)。主分區(qū)是能夠安裝操作系統(tǒng), 能夠進(jìn)行計(jì)算機(jī)啟動(dòng)的分區(qū)。通常,主分區(qū)是獨(dú)立的,也是硬盤的第一個(gè)分區(qū),實(shí)際應(yīng)用中所見的C盤通常就是主分區(qū)。在一個(gè)硬盤中最多只能存在4個(gè)主分區(qū)。如果一個(gè)硬盤上需要超過4個(gè)以上的磁盤分塊,那么就需要使用擴(kuò)展分區(qū)了。如果使用擴(kuò)展分區(qū),那么一個(gè)物理硬盤上最多只能3個(gè)主分區(qū)和1個(gè)擴(kuò)展分區(qū)。擴(kuò)展分區(qū)不能直接使用,它必須經(jīng)過第二次分割成為一個(gè)一個(gè)的邏輯分區(qū)(例如D盤、E盤、F盤等等),然后才可以使用,也即,可以將文件存放到某邏輯分區(qū),當(dāng)需要查看該文件時(shí),就到該邏輯分區(qū)對應(yīng)的盤符下查找。但是在實(shí)際應(yīng)用中,可能會(huì)出現(xiàn)以下現(xiàn)象某計(jì)算機(jī)本來具有多個(gè)主分區(qū),或者擴(kuò)展分區(qū)中具有多個(gè)邏輯分區(qū),但在某次開機(jī)之后發(fā)現(xiàn),有部分甚至全部主分區(qū)無法打開,或者部分甚至全部的邏輯分區(qū)已經(jīng)不見了,其中保存的數(shù)據(jù)也隨之丟失。因此,迫切需要本領(lǐng)域技術(shù)人員解決的技術(shù)問題就在于,如何避免發(fā)生用戶數(shù)據(jù)丟失的現(xiàn)象。

發(fā)明內(nèi)容
本發(fā)明提供了一種磁盤分區(qū)故障修復(fù)方法及裝置,能夠避免由于分區(qū)重疊造成的分區(qū)丟失,進(jìn)而造成用戶數(shù)據(jù)丟失的現(xiàn)象。本發(fā)明提供了如下方案 一種磁盤分區(qū)故障修復(fù)方法,包括
獲取磁盤當(dāng)前分區(qū)以及其下一分區(qū)的分區(qū)信息;
根據(jù)所述分區(qū)信息,判斷當(dāng)前分區(qū)與其下一分區(qū)之間是否存在分區(qū)重疊;
如果存在分區(qū)重疊,通過修改分區(qū)表中的分區(qū)信息進(jìn)行修復(fù)。其中,當(dāng)所述當(dāng)前分區(qū)及其下一分區(qū)均為擴(kuò)展分區(qū)中的邏輯分區(qū)時(shí),所述獲取磁盤當(dāng)前分區(qū)以及其下一分區(qū)的分區(qū)信息包括通過以下方式獲取第一邏輯分區(qū)以及第二邏輯分區(qū)的分區(qū)信息
根據(jù)所述第一邏輯分區(qū)的上一分區(qū)的分區(qū)表中標(biāo)記的分區(qū)信息,確定所述第一邏輯分區(qū)的結(jié)束位置所在的物理扇區(qū)號;
根據(jù)所述第一邏輯分區(qū)的分區(qū)表中標(biāo)記的分區(qū)信息,確定所述第二邏輯分區(qū)的起始位置所在的物理扇區(qū)號;
所述判斷當(dāng)前分區(qū)與其下一分區(qū)之間是否存在分區(qū)重疊包括通過以下方式判斷第一邏輯分區(qū)與第二邏輯分區(qū)之間是否存在分區(qū)重疊
判斷所述第一邏輯分區(qū)的結(jié)束位置所在的物理扇區(qū)號是否大于所述第二邏輯分區(qū)的起始位置所在的物理扇區(qū)號,如果是,則所述第一邏輯分區(qū)與所述第二邏輯分區(qū)之間存在分區(qū)重疊;
其中,所述第二邏輯分區(qū)是所述第一邏輯分區(qū)的下一分區(qū)。其中,當(dāng)所述當(dāng)前分區(qū)為主分區(qū),其下一分區(qū)為主分區(qū)或擴(kuò)展分區(qū)時(shí),所述獲取磁盤當(dāng)前分區(qū)以及其下一分區(qū)的分區(qū)信息包括
根據(jù)磁盤0磁道0扇區(qū)中的分區(qū)表中標(biāo)記的分區(qū)信息,確定所述當(dāng)前分區(qū)的結(jié)束位置所在的物理扇區(qū)號,以及下一分區(qū)的起始位置所在的物理扇區(qū)號; 所述判斷當(dāng)前分區(qū)與其下一分區(qū)之間是否存在分區(qū)重疊包括 判斷所述當(dāng)前分區(qū)的結(jié)束位置所在的物理扇區(qū)號是否大于所述下一分區(qū)的起始位置所在的物理扇區(qū)號,如果是,則所述當(dāng)前分區(qū)與下一分區(qū)之間存在分區(qū)重疊。其中,所述如果存在分區(qū)重疊,通過修改分區(qū)表中的分區(qū)信息進(jìn)行修復(fù)包括 將所述下一分區(qū)中的數(shù)據(jù)全部轉(zhuǎn)移到其他可用分區(qū)中;
確定所述當(dāng)前分區(qū)與下一分區(qū)之間的重疊區(qū)域;
根據(jù)所述重疊區(qū)域?qū)?yīng)的總扇區(qū)數(shù),修改所述下一分區(qū)的分區(qū)表中標(biāo)記的所述下一分區(qū)的起始地址,并減小所述下一分區(qū)的分區(qū)表中標(biāo)記的所述下一分區(qū)的數(shù)據(jù)段占用的總扇區(qū)數(shù);
根據(jù)修改后的下一分區(qū)的分區(qū)表,將所述下一分區(qū)進(jìn)行格式化操作; 將所述下一分區(qū)中的數(shù)據(jù)重新存入所述下一分區(qū)中。一種磁盤分區(qū)故障修復(fù)裝置,包括
分區(qū)信息獲取單元,用于獲取磁盤當(dāng)前分區(qū)以及其下一分區(qū)的分區(qū)信息; 判斷單元,用于根據(jù)所述分區(qū)信息,判斷當(dāng)前分區(qū)與其下一分區(qū)之間是否存在分區(qū)重
疊;
修復(fù)單元,用于如果存在分區(qū)重疊,則修改分區(qū)表中的分區(qū)信息,并依據(jù)修改后的分區(qū)表中的分區(qū)信息,對相應(yīng)的分區(qū)進(jìn)行格式化操作。其中,當(dāng)所述當(dāng)前分區(qū)及其下一分區(qū)均為擴(kuò)展分區(qū)中的邏輯分區(qū)時(shí),所述分區(qū)信息獲取單元包括
結(jié)束位置確定子單元,用于根據(jù)所述第一邏輯分區(qū)的上一分區(qū)的分區(qū)表中標(biāo)記的分區(qū)信息,確定所述第一邏輯分區(qū)的結(jié)束位置所在的物理扇區(qū)號;
起始位置確定子單元,用于根據(jù)第一邏輯分區(qū)的分區(qū)表中標(biāo)記的分區(qū)信息,確定所述第二邏輯分區(qū)的起始位置所在的物理扇區(qū)號;
所述判斷單元具體用于判斷所述第一邏輯分區(qū)的結(jié)束位置所在的物理扇區(qū)號是否大于所述第二邏輯分區(qū)的起始位置所在的物理扇區(qū)號,如果是,則所述第一邏輯分區(qū)與所述第二邏輯分區(qū)之間存在分區(qū)重疊;
其中,所述第二邏輯分區(qū)是所述第一邏輯分區(qū)的下一分區(qū)。其中,當(dāng)所述當(dāng)前分區(qū)為主分區(qū),其下一分區(qū)為主分區(qū)或擴(kuò)展分區(qū)時(shí),所述分區(qū)信息獲取單元具體用于根據(jù)磁盤0磁道0扇區(qū)中的分區(qū)表中標(biāo)記的分區(qū)信息,確定所述當(dāng)前分區(qū)的結(jié)束位置所在的物理扇區(qū)號,以及下一分區(qū)的起始位置所在的物理扇區(qū)號;
所述判斷單元具體用于判斷所述當(dāng)前分區(qū)的結(jié)束位置所在的物理扇區(qū)號是否大于所述下一分區(qū)的起始位置所在的物理扇區(qū)號,如果是,則所述當(dāng)前分區(qū)與下一分區(qū)之間存在
分區(qū)重疊。其中,所述修復(fù)單元包括
數(shù)據(jù)轉(zhuǎn)移子單元,用于將所述下一分區(qū)中的數(shù)據(jù)全部轉(zhuǎn)移到其他可用分區(qū)中; 重疊區(qū)域確定子單元,用于確定所述當(dāng)前分區(qū)與下一分區(qū)之間的重疊區(qū)域; 分區(qū)表修改子單元,用于根據(jù)所述重疊區(qū)域?qū)?yīng)的總扇區(qū)數(shù),修改所述下一分區(qū)的分區(qū)表中標(biāo)記的所述下一分區(qū)的起始地址,并減小所述下一分區(qū)的分區(qū)表中標(biāo)記的所述下一分區(qū)的數(shù)據(jù)段占用的總扇區(qū)數(shù);
格式化子單元,用于根據(jù)修改后的下一分區(qū)的分區(qū)表,將所述下一分區(qū)進(jìn)行格式化操
作;
數(shù)據(jù)存取子單元,用于將所述下一分區(qū)中的數(shù)據(jù)重新存入所述下一分區(qū)中。根據(jù)本發(fā)明提供的具體實(shí)施例,本發(fā)明公開了以下技術(shù)效果
通過本發(fā)明,可以首先判斷出磁盤分區(qū)之間是否存在分區(qū)重疊的現(xiàn)象,如果存在,則可以通過修改分區(qū)表中的分區(qū)信息,來達(dá)到修復(fù)的目的。這樣,就可以避免由于分區(qū)重疊造成的分區(qū)丟失,進(jìn)而造成用戶數(shù)據(jù)丟失的現(xiàn)象。


為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1是本發(fā)明實(shí)施例提供的方法的流程圖; 圖2是本發(fā)明實(shí)施例提供的裝置的示意圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。首先需要說明的是,在磁盤的0扇區(qū)0磁道中存在分區(qū)表,該分區(qū)表中標(biāo)記了各個(gè)主分區(qū)的起始地址、結(jié)束地址,以及擴(kuò)展分區(qū)的起始地址等分區(qū)信息。每個(gè)主分區(qū)的起始位置處都保存有DBR (—般占用63個(gè)扇區(qū),當(dāng)然也可能是其他數(shù)目),以及MFT (Master File Table,主文件表)或者FAT (File Allocation Table,文件配置表)文件表等,如果這些數(shù)據(jù)被破壞,會(huì)導(dǎo)致對應(yīng)的主分區(qū)無法打開。另外,擴(kuò)展分區(qū)的每個(gè)邏輯分區(qū)由分區(qū)信息段(一般包括分區(qū)表以及主文件表等,這部分占用的磁盤總扇區(qū)數(shù)通常是固定的,例如在某種系統(tǒng)中共占用63個(gè)扇區(qū))和數(shù)據(jù)段兩部分組成,其中,分區(qū)表通常位于每個(gè)邏輯分區(qū)的起始位置,用于保存當(dāng)前邏輯分區(qū)的分區(qū)信息以及下一分區(qū)的分區(qū)信息,數(shù)據(jù)段用于保存具體的數(shù)據(jù)。邏輯分區(qū)是鏈表形式保存在磁盤中,倘若硬盤丟失了分區(qū)表,數(shù)據(jù)就無法按順序讀取和寫入,導(dǎo)致無法操作。而本發(fā)明人在實(shí)現(xiàn)本發(fā)明的過程中發(fā)現(xiàn),之所以會(huì)出現(xiàn)主分區(qū)無法打開或者邏輯分區(qū)丟失的現(xiàn)象,一種可能的原因就在于在電腦使用一段時(shí)間后,系統(tǒng)越來越慢,此時(shí)避免不了要重裝系統(tǒng),而限于電腦重裝的復(fù)雜性和耗時(shí),GHOST做系統(tǒng)已經(jīng)越來越普及。所謂 GHOST,實(shí)際上是一種硬盤備份還原工具,它采取鏡象系統(tǒng)分區(qū)或者文件夾的方式備份和還原數(shù)據(jù)。但是,由于現(xiàn)在網(wǎng)上各種形式的GHOST軟件和系統(tǒng)鏡像文件,很多不規(guī)范,給用戶系統(tǒng)帶來了風(fēng)險(xiǎn)。其中一種風(fēng)險(xiǎn)就是引起分區(qū)重疊的問題,也即,GHOST自帶的分區(qū)信息和原用戶的分區(qū)信息之間存在沖突,從而造成分區(qū)重疊。此外,一些是使用了有BUG的分區(qū)軟件,也可能造成分區(qū)的重疊。分區(qū)重疊是指某分區(qū)與下一分區(qū)之間在占用的扇區(qū)上存在交疊的部分。這種重疊可能發(fā)生在不同主分區(qū)之間,還有可能出現(xiàn)在主分區(qū)與擴(kuò)展分區(qū)之間,還可能出現(xiàn)在擴(kuò)展分區(qū)的不同邏輯分區(qū)之間。以邏輯分區(qū)之間的分區(qū)重疊為例,如果某一邏輯分區(qū)(例如為B分區(qū))的分區(qū)表,寫入到前面邏輯分區(qū)(例如為A分區(qū))的數(shù)據(jù)段中,此時(shí),一旦A分區(qū)數(shù)據(jù)被寫滿,則必然會(huì)把 B分區(qū)的分區(qū)表給覆蓋。如前文所述,由于邏輯分區(qū)是鏈表形式保存在磁盤中,當(dāng)前面分區(qū)丟失,后面的分區(qū)將全部丟失,因此,這種分區(qū)重疊的現(xiàn)象會(huì)造成邏輯分區(qū)的丟失,進(jìn)而造成用戶數(shù)據(jù)的丟失。尤其是現(xiàn)在游戲和影音文件等的體積越來越大,一個(gè)磁盤分區(qū)經(jīng)常被寫滿,這樣,一旦發(fā)生分區(qū)重疊,則分區(qū)丟失的情況就會(huì)越來越多。例如,第一個(gè)邏輯分區(qū)的分區(qū)表保存在了其前面主分區(qū)中(即第一個(gè)邏輯分區(qū)的起始位置小于最后一個(gè)主分區(qū)的結(jié)束位置),這樣分區(qū)就會(huì)重疊,當(dāng)最后一個(gè)主分區(qū)寫滿后,第一個(gè)邏輯分區(qū)的分區(qū)表就會(huì)被覆蓋,這樣第一個(gè)邏輯分區(qū)就會(huì)丟失。而第一個(gè)邏輯分區(qū)的分區(qū)表中又記錄了第二個(gè)邏輯分區(qū)的起始信息,因此,第一個(gè)邏輯分區(qū)丟失之后,第二個(gè)邏輯分區(qū)也隨之丟失,以此類推, 只要第一個(gè)邏輯分區(qū)丟失,后面的邏輯分區(qū)將全部丟失。如果是主分區(qū)C與主分區(qū)D之間存在分區(qū)重疊,則主分區(qū)D中的DBR、MFT等數(shù)據(jù)可能會(huì)被主分區(qū)C中的數(shù)據(jù)覆蓋,造成主分區(qū)D無法打開。在以上分析基礎(chǔ)上,本發(fā)明實(shí)施例提供了一種磁盤分區(qū)故障修復(fù)方法,參見圖1, 該方法包括以下步驟
5101獲取磁盤當(dāng)前分區(qū)以及其下一分區(qū)的分區(qū)信息;
5102根據(jù)所述分區(qū)信息,判斷當(dāng)前分區(qū)與其下一分區(qū)之間是否存在分區(qū)重疊; 對于某物理磁盤而言,在其0磁道0扇區(qū)保存了該物理磁盤的主分區(qū)以及擴(kuò)展分區(qū)的
地址,因此,通過讀取物理磁盤0磁道0扇區(qū)的信息,即可獲取到主分區(qū)的地址以及擴(kuò)展分區(qū)的地址。需要說明的是,由于磁盤被劃分為多個(gè)扇區(qū),并按照一定規(guī)則編號為1、2、3……, 因此,主分區(qū)及擴(kuò)展分區(qū)的地址通常可以用所在扇區(qū)的物理扇區(qū)號來表示,例如為 176715。該地址通常是一個(gè)絕對的值,也就是說,如果0磁道0扇區(qū)中記載的擴(kuò)展分區(qū)的起始扇區(qū)的物理扇區(qū)號是176715,則擴(kuò)展分區(qū)就是從該扇區(qū)號為176715的扇區(qū)開始的。
另外需要說明的是,在實(shí)際應(yīng)用中,用戶可能在自己的計(jì)算機(jī)中配備多塊硬盤,也就是說存在多個(gè)物理磁盤,此時(shí),可以每個(gè)物理磁盤都可能會(huì)發(fā)生邏輯分區(qū)重疊的現(xiàn)象,因此,可以首先枚舉所有物理磁盤,獲取所有物理磁盤的句柄,并分別在各個(gè)物理磁盤的0磁道0扇區(qū)中獲取各自的擴(kuò)展分區(qū)的地址的相關(guān)信息。而如果需要獲取邏輯分區(qū)的分區(qū)信息,則如前文所述,由于每個(gè)邏輯分區(qū)都有自己的分區(qū)表,每個(gè)分區(qū)表中都保存有當(dāng)前邏輯分區(qū)以及邏輯分區(qū)的分區(qū)信息(包括分區(qū)的起始位置以及占用的總扇區(qū)數(shù)等),因此,邏輯分區(qū)的分區(qū)信息,可以從邏輯分區(qū)的分區(qū)表中。
需要說明的是,在擴(kuò)展分區(qū)的邏輯分區(qū)中,在每個(gè)邏輯分區(qū)的開始位置扇區(qū)有EBR (Extended Boot Record)。EBR和MBR不同,它沒有引導(dǎo)代碼,而是保存了兩個(gè)分區(qū)表第一個(gè)分區(qū)表是當(dāng)前分區(qū)除本分區(qū)DBR (DBR 一般占用63扇區(qū),也有2048或者其他值)之外數(shù)據(jù)區(qū)的起始扇區(qū)和占用的扇區(qū)數(shù);第二個(gè)分區(qū)表是下一個(gè)分區(qū)的起始扇區(qū)數(shù)和占用的扇區(qū)數(shù)(包含DBR及數(shù)據(jù)區(qū)在內(nèi))。在下一分區(qū)的起始位置又包含兩個(gè)分區(qū)表(如果有三個(gè)邏輯分區(qū)以上)第一個(gè)分區(qū)表記錄了除本分區(qū)DBR之外數(shù)據(jù)區(qū)的起始扇區(qū)和占用的扇區(qū)數(shù),第二個(gè)分區(qū)表中記錄了第三個(gè)擴(kuò)展分區(qū)的起始扇區(qū)和占用的扇區(qū)數(shù)。依次類推,邏輯分區(qū)中的分區(qū)表是以鏈表形式保存的。邏輯分區(qū)的起始地址實(shí)際可以從其上一個(gè)邏輯分區(qū)的分區(qū)表中獲取。例如,第一個(gè)邏輯分區(qū)A的起始扇區(qū)取該邏輯分區(qū)所在擴(kuò)展分區(qū)的起始扇區(qū),它的結(jié)束位置為起始扇區(qū)加上它所占用的扇區(qū)數(shù)。第二個(gè)邏輯分區(qū)B的起始地址取邏輯分區(qū) A中的分區(qū)表中第二個(gè)分區(qū)表項(xiàng)記錄的起始地址和占用的扇區(qū)數(shù)。后面的某邏輯分區(qū)Y占用扇區(qū)的判斷依據(jù)以前面的邏輯分區(qū)X中的分區(qū)表中第二個(gè)分區(qū)表項(xiàng)記錄的起始扇區(qū)和占用的扇區(qū)數(shù)為準(zhǔn)。當(dāng)某一邏輯分區(qū)A的起始扇區(qū)所在位置加上它所占用的扇區(qū)數(shù)大于它后面邏輯分區(qū)B (A與B在同一擴(kuò)展分區(qū)中)的起始扇區(qū)所在的位置,就會(huì)造成分區(qū)重疊。例如A邏輯分區(qū)起始扇區(qū)是1000扇區(qū),它占用2000個(gè)扇區(qū),B邏輯分區(qū)起始扇區(qū)在2920扇區(qū),占用1000個(gè)扇區(qū)。這樣A邏輯分區(qū)中結(jié)束扇區(qū)應(yīng)該是3000扇區(qū),而邏輯分區(qū)B起始扇區(qū)是2920,A的結(jié)束扇區(qū)大于B開始扇區(qū),他們共有80個(gè)扇區(qū)的重疊。這80 個(gè)扇區(qū)中可能記錄著B分區(qū)的分區(qū)表、DBR和一些其他數(shù)據(jù)(NTFS中可能會(huì)有MFT,F(xiàn)AT格式中,可能會(huì)有FAT表)。當(dāng)A邏輯分區(qū)寫滿后,就會(huì)在這80個(gè)扇區(qū)寫入數(shù)據(jù),然后,B分區(qū)中的分區(qū)表、DBR和其他數(shù)據(jù)就會(huì)被破壞,導(dǎo)致B分區(qū)及其后面的分區(qū)全部丟失,從而造成這些分區(qū)上的數(shù)據(jù)全部丟失,以用戶造成損失。因此,具體在獲取磁盤當(dāng)前分區(qū)以及其下一分區(qū)的分區(qū)信息時(shí),可以獲取當(dāng)前分區(qū)所在的結(jié)束扇區(qū)的物理扇區(qū)號,以及下一分區(qū)所在的起始扇區(qū)的物理扇區(qū)號;這樣,就可以通過判斷當(dāng)前分區(qū)所在的結(jié)束扇區(qū)的物理扇區(qū)號是否大于其下一分區(qū)所在的起始扇區(qū)的物理扇區(qū)號,如果是,則當(dāng)前分區(qū)與其下一分區(qū)之間存在分區(qū)重疊。具體的,如果當(dāng)前分區(qū)及其下一分區(qū)均為擴(kuò)展分區(qū)中的邏輯分區(qū)時(shí),所述獲取磁盤當(dāng)前分區(qū)以及其下一分區(qū)的分區(qū)信息包括通過以下方式獲取第一邏輯分區(qū)以及第二邏輯分區(qū)的分區(qū)信息根據(jù)所述第一邏輯分區(qū)的上一分區(qū)的分區(qū)表中標(biāo)記的分區(qū)信息,確定所述第一邏輯分區(qū)的結(jié)束位置所在的物理扇區(qū)號;根據(jù)所述第一邏輯分區(qū)的分區(qū)表中標(biāo)記的分區(qū)信息,確定所述第二邏輯分區(qū)的起始位置所在的物理扇區(qū)號;然后,判斷所述第一邏輯分區(qū)的結(jié)束位置所在的物理扇區(qū)號是否大于所述第二邏輯分區(qū)的起始位置所在的物理扇區(qū)號,如果是,則所述第一邏輯分區(qū)與所述第二邏輯分區(qū)之間存在分區(qū)重疊。其中,根據(jù)第一邏輯分區(qū)的上一分區(qū)的分區(qū)表中記錄的分區(qū)信息,確定所述第一邏輯分區(qū)的結(jié)束位置所在的物理扇區(qū)號時(shí),具體可以為查詢所述第一邏輯分區(qū)的上一分區(qū)的分區(qū)表,從中獲取第一邏輯分區(qū)的起始扇區(qū)偏移值以及占用的總扇區(qū)數(shù);根據(jù)該第一邏輯分區(qū)的起始扇區(qū)偏移值以及該邏輯分區(qū)占用的總扇區(qū)數(shù),獲取該第一邏輯扇區(qū)的結(jié)束扇區(qū)偏移值;根據(jù)該第一邏輯扇區(qū)的結(jié)束扇區(qū)偏移值以及擴(kuò)展分區(qū)的起始地址獲取該第一邏輯分區(qū)所在的結(jié)束位置所在的物理扇區(qū)號。根據(jù)所述第一邏輯分區(qū)的分區(qū)表中記錄的分區(qū)信息,確定第二邏輯分區(qū)的起始位置所在的物理扇區(qū)號時(shí),具體可以為查詢所述第一邏輯分區(qū)的分區(qū)表,從中獲取所述第二邏輯分區(qū)的起始扇區(qū)偏移值;根據(jù)該第二邏輯扇區(qū)的起始扇區(qū)偏移值以及擴(kuò)展分區(qū)的起始地址獲取該第二邏輯分區(qū)的起始位置所在的物理扇區(qū)號。如果當(dāng)前分區(qū)為主分區(qū),其下一分區(qū)為主分區(qū)或擴(kuò)展分區(qū)時(shí),則具體在獲取磁盤當(dāng)前分區(qū)以及其下一分區(qū)的分區(qū)信息時(shí),可以是根據(jù)磁盤0磁道0扇區(qū)中的分區(qū)表中標(biāo)記的分區(qū)信息,確定所述當(dāng)前分區(qū)的結(jié)束位置所在的物理扇區(qū)號,以及下一分區(qū)的起始位置所在的物理扇區(qū)號;進(jìn)而,通過判斷當(dāng)前分區(qū)的結(jié)束位置所在的物理扇區(qū)號是否大于下一分區(qū)的起始位置所在的物理扇區(qū)號,如果是,則當(dāng)前分區(qū)與下一分區(qū)之間存在分區(qū)重疊。需要說明的是,具體實(shí)現(xiàn)時(shí),除了利用起始扇區(qū)的扇區(qū)號以及結(jié)束扇區(qū)的扇區(qū)號來表示邏輯分區(qū)的起始位置及結(jié)束位置以外,還可以利用其它的信息來表示,例如,起始字節(jié)、結(jié)束字節(jié)等等?;蛘?,由于分區(qū)表中記載的“偏移量”均是相對于擴(kuò)展分區(qū)的起始地址的,因此。如果不計(jì)算起始扇區(qū)及結(jié)束扇區(qū)的物理扇區(qū)號,而是之間利用起始扇區(qū)及結(jié)束扇區(qū)的“偏移量”來判斷邏輯扇區(qū)之間是否存在分區(qū)重疊也是可以的,這里不再贅述。S103 如果存在分區(qū)重疊,通過修改分區(qū)表中的分區(qū)信息進(jìn)行修復(fù)。例如,如果發(fā)現(xiàn)第一主分區(qū)與第二主分區(qū)之間存在重疊,則可以重寫0磁道0扇區(qū)的分區(qū)表中標(biāo)記的第一主分區(qū)的分區(qū)信息,將第一主分區(qū)減小。或者,首先將第二主分區(qū)中的數(shù)據(jù)全部導(dǎo)出,重寫0磁道0扇區(qū)的分區(qū)表中標(biāo)記的第二主分區(qū)的分區(qū)信息,將第二主分區(qū)減小,然后將第二主分區(qū)進(jìn)行格式化操作,之后再將數(shù)據(jù)導(dǎo)入到該第二主分區(qū)中。又如,如果發(fā)現(xiàn)第一邏輯分區(qū)與第二邏輯分區(qū)之間存在分區(qū)重疊,則可以通過重寫第一邏輯分區(qū)或者第二邏輯分區(qū)的分區(qū)表中的分區(qū)信息,來進(jìn)行修復(fù)。具體實(shí)現(xiàn)時(shí),如果通過修改第一邏輯分區(qū)的分區(qū)表中的分區(qū)信息進(jìn)行修復(fù),則可以首先確定第一邏輯分區(qū)與第二邏輯分區(qū)的重疊區(qū)域,并確定出重疊區(qū)域包含的總扇區(qū)數(shù)(例如當(dāng)?shù)谝环謪^(qū)的結(jié)束位置所在的物理扇區(qū)號是99,第二邏輯分區(qū)的起始位置所在的物理扇區(qū)號是97時(shí),從第97到第99扇區(qū)則為第一邏輯分區(qū)與第二邏輯分區(qū)之間的重疊區(qū)域,其中共包含了三個(gè)扇區(qū)),之后在對第一邏輯分區(qū)的分區(qū)表中的分區(qū)信息進(jìn)行修改時(shí),就可以根據(jù)重疊區(qū)域?qū)?yīng)的總扇區(qū)數(shù),來減小第一邏輯分區(qū)的分區(qū)表中標(biāo)記的第一邏輯分區(qū)的數(shù)據(jù)段占用的總扇區(qū)數(shù)(例如在原來的基礎(chǔ)上減去3,或者是某大于3的值),并修改第一邏輯分區(qū)的分區(qū)表中標(biāo)記的第二邏輯分區(qū)的起始扇區(qū)偏移值以及占用的總扇區(qū)數(shù)(起始扇區(qū)的偏移值相當(dāng)于是第二邏輯分區(qū)實(shí)際的起始位置對應(yīng)的偏移值,占用的總扇區(qū)數(shù)相當(dāng)于是第二邏輯分區(qū)實(shí)際占用的總扇區(qū)數(shù))。這樣,根據(jù)第一邏輯分區(qū)的分區(qū)表中記載的關(guān)于第一邏輯分區(qū)的分區(qū)信息向第一邏輯分區(qū)中寫數(shù)據(jù)時(shí),由于標(biāo)記的結(jié)束位置已經(jīng)提前了(例如原來是第99扇區(qū),修改后為第96扇區(qū)),因此,最多只能寫到第96扇區(qū),而不會(huì)被寫到第97扇區(qū),而第二邏輯分區(qū)的分區(qū)表是寫在第97扇區(qū),因此,就不會(huì)再被第一邏輯分區(qū)中的數(shù)據(jù)所覆蓋了。如果通過修改第二邏輯分區(qū)的分區(qū)表中的分區(qū)信息進(jìn)行修復(fù),則首先需要將第二邏輯分區(qū)的數(shù)據(jù)全部轉(zhuǎn)移保存到其他分區(qū)中。然后,根據(jù)第一邏輯分區(qū)的分區(qū)表中標(biāo)記的第二邏輯分區(qū)的起始扇區(qū)偏移值,以及邏輯分區(qū)的分區(qū)信息段占用的總扇區(qū)數(shù),修改第二邏輯分區(qū)的分區(qū)表中標(biāo)記的第二邏輯分區(qū)的數(shù)據(jù)段起始扇區(qū)偏移值(例如,直接將第一邏輯分區(qū)的分區(qū)表中標(biāo)記的第二邏輯分區(qū)的起始扇區(qū)偏移值,加上63,作為修改后的第二邏輯分區(qū)的分區(qū)表中標(biāo)記的第二邏輯分區(qū)的數(shù)據(jù)段起始扇區(qū)偏移值;當(dāng)然,還可以直接在原第二邏輯分區(qū)的數(shù)據(jù)段起始扇區(qū)偏移值基礎(chǔ)上,加上第一邏輯分區(qū)與第二邏輯分區(qū)之間的重疊區(qū)域占用的總扇區(qū)數(shù),得到的結(jié)果是一樣的),以及第二邏輯分區(qū)的數(shù)據(jù)段占用的總扇區(qū)數(shù)。之后,再對第二邏輯分區(qū)進(jìn)行格式化操作,并將第二邏輯分區(qū)中的數(shù)據(jù)重新寫入到該第二邏輯分區(qū)中。這樣,根據(jù)第一邏輯分區(qū)的分區(qū)表中記載的關(guān)于第一邏輯分區(qū)的分區(qū)信息向第一邏輯分區(qū)中寫數(shù)據(jù)時(shí),最多仍能寫到第99扇區(qū),但是第二邏輯分區(qū)的起始位置已經(jīng)推后了(例如原來是第97扇區(qū),修改后為第100扇區(qū)),因此,就不會(huì)再被第一邏輯分區(qū)中的數(shù)據(jù)所覆蓋了。需要說明的是,通過上述兩種實(shí)現(xiàn)方式,都可以達(dá)到修復(fù)磁盤分區(qū)故障的目的。其中,在第一種實(shí)現(xiàn)方式下,由于不需要對分區(qū)信息段進(jìn)行移動(dòng),因此,可以更高效得完成修復(fù),并且不會(huì)存在分區(qū)信息段的信息被破壞的風(fēng)險(xiǎn),因此更為實(shí)用。當(dāng)然在第一種實(shí)現(xiàn)方式下,如果重疊區(qū)域存在尚未刪除的文件,則可以將文件轉(zhuǎn)存到第一邏輯分區(qū)以外的其他邏輯分區(qū)中,避免造成未刪除數(shù)據(jù)的丟失。但是,由于在實(shí)際應(yīng)用中,磁盤可以分為NTFS格式和FAT格式,而兩種格式之間存在不同之處。例如,NTFS由MFT來保存文件結(jié)構(gòu)。MFT是分段記錄的。格式化一個(gè)分區(qū)后, 首先會(huì)生成根目錄的MFT數(shù)據(jù)A,它用來記錄一定大小的數(shù)據(jù),當(dāng)這部分?jǐn)?shù)據(jù)寫滿后,會(huì)新生成一段MFT數(shù)據(jù)B,A結(jié)尾有個(gè)指針指向B,當(dāng)B記錄的結(jié)構(gòu)被寫滿后,會(huì)在后面繼續(xù)生成 MFT數(shù)據(jù)。也就是說MFT是動(dòng)態(tài)生成的。大概形式如表1所示
表1
|mfta丨數(shù)據(jù)區(qū) |mftb丨數(shù)據(jù)區(qū) |mftc丨數(shù)據(jù)區(qū) |···|… 其中,A指向B,B指向C,C指向后面,依此類推。而FAT是格式化后,就按照空間大小,按指定比例分配一定大小的文件表。后面就不再改變。大概形式如表2所示
表2_
Μ Τ件表I數(shù)據(jù)區(qū)I
理論上,當(dāng)分區(qū)A是NTFS格式時(shí),并且當(dāng)分區(qū)A最后一個(gè)MFT表指定的空間,沒有到分區(qū)結(jié)束時(shí),既可以通過減少A分區(qū)的大小的方式,也可以通過減小B分區(qū)的方式,使分區(qū)A 與分區(qū)B之間不再重疊。但是,如果分區(qū)A的最后一個(gè)MFT表指定的空間,已經(jīng)到了分區(qū)結(jié)束位置,或者,如果分區(qū)A是FAT分區(qū)時(shí),在減少A分區(qū)大小時(shí),就會(huì)產(chǎn)生沖突。因?yàn)榉謪^(qū)A中的結(jié)束區(qū)域已經(jīng)被MFT或者FAT標(biāo)記,這會(huì)使得分區(qū)表與MFT或FAT中標(biāo)記的信息不一致。因此,在本發(fā)明的優(yōu)選實(shí)施例中,如果當(dāng)前分區(qū)A與下一分區(qū)B之間發(fā)生分區(qū)重疊,可以均通過減小該下一分區(qū)B的大小的方式來實(shí)現(xiàn)修復(fù),由于在減小分區(qū)B時(shí),會(huì)重新對分區(qū)B進(jìn)行格式化,因此,不會(huì)產(chǎn)生沖突的問題。也即,具體實(shí)現(xiàn)時(shí),無論哪種分區(qū)之間發(fā)生重疊,都可以通過以下方式進(jìn)行修復(fù)將所述下一分區(qū)中的數(shù)據(jù)全部轉(zhuǎn)移到其他可用分區(qū)中;確定所述當(dāng)前分區(qū)與下一分區(qū)之間的重疊區(qū)域;根據(jù)所述重疊區(qū)域?qū)?yīng)的總扇區(qū)數(shù),修改所述下一分區(qū)的分區(qū)表中標(biāo)記的所述下一分區(qū)的起始地址,并減小所述下一分區(qū)的分區(qū)表中標(biāo)記的所述下一分區(qū)的數(shù)據(jù)段占用的總扇區(qū)數(shù),使其分區(qū)連續(xù)。根據(jù)修改后的下一分區(qū)的分區(qū)表,將所述下一分區(qū)進(jìn)行格式化操作;最后,再將所述下一分區(qū)中的數(shù)據(jù)重新存入所述下一分區(qū)中。或者,也可以在進(jìn)行修復(fù)之前判斷當(dāng)前分區(qū)是何種格式,如果是NTFS格式,則繼續(xù)判斷其最后一個(gè)MFT指定的空間是否已經(jīng)到了分區(qū)的結(jié)束位置,如果是,則減小下一分區(qū)的大小,并對該下一分區(qū)進(jìn)行格式化。如果還沒有到該當(dāng)前分區(qū)的結(jié)束位置,則既可以減小當(dāng)前分區(qū)的大小,也可以減小下一分區(qū)的大小。如果當(dāng)前分區(qū)是FAT格式,則只能減小下一分區(qū)的大小,并對該下一分區(qū)進(jìn)行格式化??傊ㄟ^本發(fā)明實(shí)施例提供的磁盤分區(qū)故障修復(fù)方法,可以首先判斷出磁盤分區(qū)之間是否存在分區(qū)重疊的現(xiàn)象,如果存在,則可以通過修改分區(qū)表中的分區(qū)信息,來達(dá)到修復(fù)的目的。這樣,就可以避免由于分區(qū)重疊造成的分區(qū)丟失,進(jìn)而造成用戶數(shù)據(jù)丟失的現(xiàn)象。與本發(fā)明實(shí)施例提供的磁盤分區(qū)故障修復(fù)方法相對應(yīng),本發(fā)明實(shí)施例還提供了一種磁盤分區(qū)故障修復(fù)裝置,參見圖2,該裝置包括
分區(qū)信息獲取單元201,用于獲取磁盤當(dāng)前分區(qū)以及其下一分區(qū)的分區(qū)信息; 判斷單元202,用于根據(jù)所述分區(qū)信息,判斷當(dāng)前分區(qū)與其下一分區(qū)之間是否存在分區(qū)
重疊;
修復(fù)單元203,用于如果存在分區(qū)重疊,通過修改分區(qū)表中的分區(qū)信息進(jìn)行修復(fù)。具體實(shí)現(xiàn)時(shí),當(dāng)所述當(dāng)前分區(qū)及其下一分區(qū)均為擴(kuò)展分區(qū)中的邏輯分區(qū)時(shí),分區(qū)信息獲取單元201可以包括結(jié)束位置確定子單元,用于根據(jù)所述第一邏輯分區(qū)的上一分區(qū)的分區(qū)表中標(biāo)記的分區(qū)信息,確定所述第一邏輯分區(qū)的結(jié)束位置所在的物理扇區(qū)號;
起始位置確定子單元,用于根據(jù)第一邏輯分區(qū)的分區(qū)表中標(biāo)記的分區(qū)信息,確定所述第二邏輯分區(qū)的起始位置所在的物理扇區(qū)號;
判斷單元202具體可以用于判斷所述第一邏輯分區(qū)的結(jié)束位置所在的物理扇區(qū)號是否大于所述第二邏輯分區(qū)的起始位置所在的物理扇區(qū)號,如果是,則所述第一邏輯分區(qū)與所述第二邏輯分區(qū)之間存在分區(qū)重疊;
其中,所述第二邏輯分區(qū)是所述第一邏輯分區(qū)的下一分區(qū)。當(dāng)所述當(dāng)前分區(qū)為主分區(qū),其下一分區(qū)為主分區(qū)或擴(kuò)展分區(qū)時(shí),分區(qū)信息獲取單元201具體用于根據(jù)磁盤0磁道0扇區(qū)中的分區(qū)表中標(biāo)記的分區(qū)信息,確定所述當(dāng)前分區(qū)的結(jié)束位置所在的物理扇區(qū)號,以及下一分區(qū)的起始位置所在的物理扇區(qū)號;
判斷單元202具體用于判斷所述當(dāng)前分區(qū)的結(jié)束位置所在的物理扇區(qū)號是否大于所述下一分區(qū)的起始位置所在的物理扇區(qū)號,如果是,則所述當(dāng)前分區(qū)與下一分區(qū)之間存在
分區(qū)重疊。具體在對磁盤分區(qū)故障進(jìn)行修復(fù)時(shí),修復(fù)單元204具體可以包括 數(shù)據(jù)轉(zhuǎn)移子單元,用于將所述下一分區(qū)中的數(shù)據(jù)全部轉(zhuǎn)移到其他可用分區(qū)中; 重疊區(qū)域確定子單元,用于確定所述當(dāng)前分區(qū)與下一分區(qū)之間的重疊區(qū)域;
分區(qū)表修改子單元,用于根據(jù)所述重疊區(qū)域?qū)?yīng)的總扇區(qū)數(shù),修改所述下一分區(qū)的分區(qū)表中標(biāo)記的所述下一分區(qū)的起始地址,并減小所述下一分區(qū)的分區(qū)表中標(biāo)記的所述下一分區(qū)的數(shù)據(jù)段占用的總扇區(qū)數(shù),使其分區(qū)連續(xù)。格式化子單元,用于根據(jù)修改后的下一分區(qū)的分區(qū)表,將所述下一分區(qū)進(jìn)行格式化操作;
數(shù)據(jù)存取子單元,用于將所述下一分區(qū)中的數(shù)據(jù)重新存入所述下一分區(qū)中。總之,通過本發(fā)明實(shí)施例提供的磁盤分區(qū)故障修復(fù)裝置,可以首先判斷出磁盤分區(qū)之間是否存在分區(qū)重疊的現(xiàn)象,如果存在,則可以通過修改分區(qū)表中的分區(qū)信息,來達(dá)到修復(fù)的目的。這樣,就可以避免由于分區(qū)重疊造成的分區(qū)丟失,進(jìn)而造成用戶數(shù)據(jù)丟失的現(xiàn)象。通過以上的實(shí)施方式的描述可知,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件平臺的方式來實(shí)現(xiàn)?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品可以存儲在存儲介質(zhì)中,如ROM/RAM、磁碟、光盤等,包括若干指令用以使得一臺計(jì)算機(jī)設(shè)備 (可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,各個(gè)實(shí)施例之間相同相似的部分互相參見即可,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處。尤其,對于裝置或系統(tǒng)實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述得比較簡單,相關(guān)之處參見方法實(shí)施例的部分說明即可。以上所描述的裝置及系統(tǒng)實(shí)施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動(dòng)的情況下,即可以理解并實(shí)施。以上對本發(fā)明所提供的磁盤分區(qū)故障修復(fù)方法及裝置,進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想, 在具體實(shí)施方式
及應(yīng)用范圍上均會(huì)有改變之處。綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。
權(quán)利要求
1.一種磁盤分區(qū)故障修復(fù)方法,其特征在于,包括 獲取磁盤當(dāng)前分區(qū)以及其下一分區(qū)的分區(qū)信息;根據(jù)所述分區(qū)信息,判斷當(dāng)前分區(qū)與其下一分區(qū)之間是否存在分區(qū)重疊; 如果存在分區(qū)重疊,通過修改分區(qū)表中的分區(qū)信息進(jìn)行修復(fù)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,當(dāng)所述當(dāng)前分區(qū)及其下一分區(qū)均為擴(kuò)展分區(qū)中的邏輯分區(qū)時(shí),所述獲取磁盤當(dāng)前分區(qū)以及其下一分區(qū)的分區(qū)信息包括通過以下方式獲取第一邏輯分區(qū)以及第二邏輯分區(qū)的分區(qū)信息根據(jù)所述第一邏輯分區(qū)的上一分區(qū)的分區(qū)表中標(biāo)記的分區(qū)信息,確定所述第一邏輯分區(qū)的結(jié)束位置所在的物理扇區(qū)號;根據(jù)所述第一邏輯分區(qū)的分區(qū)表中標(biāo)記的分區(qū)信息,確定所述第二邏輯分區(qū)的起始位置所在的物理扇區(qū)號;所述判斷當(dāng)前分區(qū)與其下一分區(qū)之間是否存在分區(qū)重疊包括通過以下方式判斷第一邏輯分區(qū)與第二邏輯分區(qū)之間是否存在分區(qū)重疊判斷所述第一邏輯分區(qū)的結(jié)束位置所在的物理扇區(qū)號是否大于所述第二邏輯分區(qū)的起始位置所在的物理扇區(qū)號,如果是,則所述第一邏輯分區(qū)與所述第二邏輯分區(qū)之間存在分區(qū)重疊;其中,所述第二邏輯分區(qū)是所述第一邏輯分區(qū)的下一分區(qū)。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,當(dāng)所述當(dāng)前分區(qū)為主分區(qū),其下一分區(qū)為主分區(qū)或擴(kuò)展分區(qū)時(shí),所述獲取磁盤當(dāng)前分區(qū)以及其下一分區(qū)的分區(qū)信息包括根據(jù)磁盤0磁道0扇區(qū)中的分區(qū)表中標(biāo)記的分區(qū)信息,確定所述當(dāng)前分區(qū)的結(jié)束位置所在的物理扇區(qū)號,以及下一分區(qū)的起始位置所在的物理扇區(qū)號; 所述判斷當(dāng)前分區(qū)與其下一分區(qū)之間是否存在分區(qū)重疊包括 判斷所述當(dāng)前分區(qū)的結(jié)束位置所在的物理扇區(qū)號是否大于所述下一分區(qū)的起始位置所在的物理扇區(qū)號,如果是,則所述當(dāng)前分區(qū)與下一分區(qū)之間存在分區(qū)重疊。
4.根據(jù)權(quán)利要求2或3所述的方法,其特征在于,所述如果存在分區(qū)重疊,通過修改分區(qū)表中的分區(qū)信息進(jìn)行修復(fù)包括將所述下一分區(qū)中的數(shù)據(jù)全部轉(zhuǎn)移到其他可用分區(qū)中; 確定所述當(dāng)前分區(qū)與下一分區(qū)之間的重疊區(qū)域;根據(jù)所述重疊區(qū)域?qū)?yīng)的總扇區(qū)數(shù),修改所述下一分區(qū)的分區(qū)表中標(biāo)記的所述下一分區(qū)的起始地址,并減小所述下一分區(qū)的分區(qū)表中標(biāo)記的所述下一分區(qū)的數(shù)據(jù)段占用的總扇區(qū)數(shù);根據(jù)修改后的下一分區(qū)的分區(qū)表,將所述下一分區(qū)進(jìn)行格式化操作; 將所述下一分區(qū)中的數(shù)據(jù)重新存入所述下一分區(qū)中。
5.一種磁盤分區(qū)故障修復(fù)裝置,其特征在于,包括分區(qū)信息獲取單元,用于獲取磁盤當(dāng)前分區(qū)以及其下一分區(qū)的分區(qū)信息; 判斷單元,用于根據(jù)所述分區(qū)信息,判斷當(dāng)前分區(qū)與其下一分區(qū)之間是否存在分區(qū)重疊;修復(fù)單元,用于如果存在分區(qū)重疊,則修改分區(qū)表中的分區(qū)信息,并依據(jù)修改后的分區(qū)表中的分區(qū)信息,對相應(yīng)的分區(qū)進(jìn)行格式化操作。
6.根據(jù)權(quán)利要求5所述的裝置,其特征在于,當(dāng)所述當(dāng)前分區(qū)及其下一分區(qū)均為擴(kuò)展分區(qū)中的邏輯分區(qū)時(shí),所述分區(qū)信息獲取單元包括結(jié)束位置確定子單元,用于根據(jù)所述第一邏輯分區(qū)的上一分區(qū)的分區(qū)表中標(biāo)記的分區(qū)信息,確定所述第一邏輯分區(qū)的結(jié)束位置所在的物理扇區(qū)號;起始位置確定子單元,用于根據(jù)第一邏輯分區(qū)的分區(qū)表中標(biāo)記的分區(qū)信息,確定所述第二邏輯分區(qū)的起始位置所在的物理扇區(qū)號;所述判斷單元具體用于判斷所述第一邏輯分區(qū)的結(jié)束位置所在的物理扇區(qū)號是否大于所述第二邏輯分區(qū)的起始位置所在的物理扇區(qū)號,如果是,則所述第一邏輯分區(qū)與所述第二邏輯分區(qū)之間存在分區(qū)重疊;其中,所述第二邏輯分區(qū)是所述第一邏輯分區(qū)的下一分區(qū)。
7.根據(jù)權(quán)利要求5所述的裝置,其特征在于,當(dāng)所述當(dāng)前分區(qū)為主分區(qū),其下一分區(qū)為主分區(qū)或擴(kuò)展分區(qū)時(shí),所述分區(qū)信息獲取單元具體用于根據(jù)磁盤0磁道0扇區(qū)中的分區(qū)表中標(biāo)記的分區(qū)信息,確定所述當(dāng)前分區(qū)的結(jié)束位置所在的物理扇區(qū)號,以及下一分區(qū)的起始位置所在的物理扇區(qū)號;所述判斷單元具體用于判斷所述當(dāng)前分區(qū)的結(jié)束位置所在的物理扇區(qū)號是否大于所述下一分區(qū)的起始位置所在的物理扇區(qū)號,如果是,則所述當(dāng)前分區(qū)與下一分區(qū)之間存在分區(qū)重疊。
8.根據(jù)權(quán)利要求2或3所述的裝置,其特征在于,所述修復(fù)單元包括 數(shù)據(jù)轉(zhuǎn)移子單元,用于將所述下一分區(qū)中的數(shù)據(jù)全部轉(zhuǎn)移到其他可用分區(qū)中; 重疊區(qū)域確定子單元,用于確定所述當(dāng)前分區(qū)與下一分區(qū)之間的重疊區(qū)域;分區(qū)表修改子單元,用于根據(jù)所述重疊區(qū)域?qū)?yīng)的總扇區(qū)數(shù),修改所述下一分區(qū)的分區(qū)表中標(biāo)記的所述下一分區(qū)的起始地址,并減小所述下一分區(qū)的分區(qū)表中標(biāo)記的所述下一分區(qū)的數(shù)據(jù)段占用的總扇區(qū)數(shù);格式化子單元,用于根據(jù)修改后的下一分區(qū)的分區(qū)表,將所述下一分區(qū)進(jìn)行格式化操作;數(shù)據(jù)存取子單元,用于將所述下一分區(qū)中的數(shù)據(jù)重新存入所述下一分區(qū)中。
全文摘要
本發(fā)明公開了一種磁盤分區(qū)故障修復(fù)方法及裝置,其中,所述方法包括獲取磁盤當(dāng)前分區(qū)以及其下一分區(qū)的分區(qū)信息;根據(jù)所述分區(qū)信息,判斷當(dāng)前分區(qū)與其下一分區(qū)之間是否存在分區(qū)重疊;如果存在分區(qū)重疊,通過修改分區(qū)表中的分區(qū)信息進(jìn)行修復(fù)。通過本發(fā)明,能夠避免由于分區(qū)重疊造成的分區(qū)丟失或者無法打開,進(jìn)而造成用戶數(shù)據(jù)丟失的現(xiàn)象。
文檔編號G06F11/00GK102331953SQ20111029833
公開日2012年1月25日 申請日期2011年9月28日 優(yōu)先權(quán)日2011年9月28日
發(fā)明者于天佐, 劉科, 唐智, 陸坡, 陳佃曉, 陳耀攀 申請人:奇智軟件(北京)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1
百色市| 五河县| 泰兴市| 会东县| 聂荣县| 台湾省| 湖南省| 义马市| 全南县| 武穴市| 邛崃市| 济源市| 葫芦岛市| 安达市| 肇州县| 赫章县| 甘肃省| 杨浦区| 荣成市| 芦山县| 新河县| 广元市| 会理县| 犍为县| 读书| 昔阳县| 元江| 海晏县| 乡城县| 安吉县| 阿尔山市| 龙井市| 海兴县| 长乐市| 道真| 唐海县| 唐海县| 汉寿县| 随州市| 克山县| 洮南市|