国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      在文件系統(tǒng)保持活動(dòng)狀態(tài)的同時(shí)轉(zhuǎn)換文件系統(tǒng)的方法

      文檔序號(hào):6654865閱讀:192來(lái)源:國(guó)知局
      專利名稱:在文件系統(tǒng)保持活動(dòng)狀態(tài)的同時(shí)轉(zhuǎn)換文件系統(tǒng)的方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及計(jì)算機(jī)文件系統(tǒng),更具體地,涉及將一種文件系統(tǒng)類型轉(zhuǎn)換成另一種文件系統(tǒng)類型。
      背景技術(shù)
      隨著計(jì)算機(jī)及其相關(guān)存儲(chǔ)能力的進(jìn)步,其底層文件系統(tǒng)結(jié)構(gòu)可以在操作系統(tǒng)的性能和可靠性方面起到重要作用。通常,文件系統(tǒng)包括如文件的許多對(duì)象,這些文件連同與這些文件的布置和位置有關(guān)的元數(shù)據(jù)一起存儲(chǔ)在計(jì)算機(jī)系統(tǒng)上。在UNIX變體(variant)系統(tǒng)中,通常將文件系統(tǒng)視為從根目錄生長(zhǎng)出的多個(gè)目錄和文件的層級(jí)布置。通常將這種布置視為倒置樹(shù),其中多個(gè)目錄、子目錄以及文件從根目錄向下延伸,最終延伸到葉節(jié)點(diǎn)。在基于現(xiàn)代圖形用戶界面的操作系統(tǒng)內(nèi),通常將文件系統(tǒng)視為多個(gè)文件夾的布置,其可以是或者可以不是分層布置的。
      文件系統(tǒng)的實(shí)際內(nèi)部結(jié)構(gòu)及其實(shí)現(xiàn)通常對(duì)計(jì)算機(jī)系統(tǒng)的用戶來(lái)說(shuō)是隱藏的。例如,早期的UNIX文件系統(tǒng)包括這樣的目錄結(jié)構(gòu),即,其類似于具有名稱與信息節(jié)點(diǎn)編號(hào)(inode)的多個(gè)匹配對(duì)的表。信息節(jié)點(diǎn)編號(hào)本身指向信息節(jié)點(diǎn)表中的相應(yīng)的條目,該信息節(jié)點(diǎn)表使得操作系統(tǒng)可以從物理存儲(chǔ)介質(zhì)中查找并檢取該文件。因此,文件和目錄實(shí)際上并不是分級(jí)地布置在存儲(chǔ)這些文件和目錄的物理介質(zhì)上;而是文件系統(tǒng)結(jié)構(gòu)給用戶提供了這種表象。因此,通常,將目錄視為具有多個(gè)條目的表,每個(gè)條目都包括對(duì)象名和“錨定(anchor)”點(diǎn)。通過(guò)訪問(wèn)該錨定點(diǎn),操作系統(tǒng)可以定位到目錄條目中的所指對(duì)象。
      隨著操作系統(tǒng)和文件系統(tǒng)的發(fā)展和變化,已經(jīng)產(chǎn)生了用戶對(duì)能夠改變文件系統(tǒng)結(jié)構(gòu)(即,從一種類型的文件系統(tǒng)改變成另一種類型)以獲得這種發(fā)展的好處的需求。例如,在一個(gè)流行的操作系統(tǒng)的發(fā)展過(guò)程中,文件系統(tǒng)類型已從FAT16變化到FAT32,再到NTFS。雖然當(dāng)引入一種新的文件系統(tǒng)類型時(shí),能夠要求客戶對(duì)它們的所有軟件和文件進(jìn)行徹底的重新安裝,但是這會(huì)存在許多缺點(diǎn)。這種任務(wù)的成本、耗時(shí)以及復(fù)雜性可能會(huì)使得許多客戶避免進(jìn)行升級(jí)處理,即使這可能是有益的。
      因此,已對(duì)用于將文件系統(tǒng)從一種類型更新成另一類型的自動(dòng)方法進(jìn)行了開(kāi)發(fā),以使得轉(zhuǎn)換處理對(duì)用戶來(lái)說(shuō)更容易。每個(gè)不同的操作系統(tǒng)都具有它自己的已開(kāi)發(fā)出的文件系統(tǒng)轉(zhuǎn)換處理。例如,HP-UX、Solaris、AS/400以及Windows均支持這樣的特定文件系統(tǒng)和目錄結(jié)構(gòu),即,當(dāng)對(duì)它們進(jìn)行更新時(shí),它們需要特定的轉(zhuǎn)換程序來(lái)對(duì)文件系統(tǒng)類型或結(jié)構(gòu)進(jìn)行更新。在過(guò)去,所有這些不同的文件系統(tǒng)轉(zhuǎn)換處理都存在重大的缺點(diǎn)它們要求用戶在升級(jí)文件系統(tǒng)時(shí)關(guān)閉文件系統(tǒng)。因此,當(dāng)對(duì)文件系統(tǒng)進(jìn)行轉(zhuǎn)換時(shí),用戶不能使用受影響的計(jì)算機(jī)系統(tǒng)來(lái)執(zhí)行其他操作,這導(dǎo)致了操作停機(jī)期,并且往往會(huì)增加成本。
      一種用于轉(zhuǎn)換文件系統(tǒng)的另選方式被稱為“第一觸摸(firsttouch)”轉(zhuǎn)換。該文件系統(tǒng)轉(zhuǎn)換方法避免了如上所述的關(guān)閉整個(gè)文件系統(tǒng),但是帶來(lái)了它自己的一系列問(wèn)題。在第一觸摸處理中,在提供了新文件系統(tǒng)類型之后操作系統(tǒng)辨識(shí)到何時(shí)第一次“觸摸”到一文件對(duì)象。然后操作系統(tǒng)停止其處理并將該文件系統(tǒng)對(duì)象轉(zhuǎn)換成新文件系統(tǒng)類型。該類型的轉(zhuǎn)換處理會(huì)導(dǎo)致在訪問(wèn)某些文件對(duì)象時(shí)產(chǎn)生很大的延遲,并且可能出錯(cuò)。例如,如果打開(kāi)具有大量文件的目錄以進(jìn)行讀取,則該打開(kāi)處理會(huì)暫停,直到已將該整個(gè)目錄轉(zhuǎn)換成新文件系統(tǒng)類型。因此,每當(dāng)?shù)谝淮斡龅叫枰晦D(zhuǎn)換的文件系統(tǒng)對(duì)象時(shí),用戶都會(huì)看到劣化的性能。其次,該處理邏輯并不確保對(duì)文件系統(tǒng)內(nèi)的所有文件對(duì)象進(jìn)行轉(zhuǎn)換。只有那些被觸摸了的文件對(duì)象才會(huì)被轉(zhuǎn)換。因此,操作系統(tǒng)必須繼續(xù)支持兩種類型的文件系統(tǒng)結(jié)構(gòu),即使一種類型比另一類型低效。
      因此,存在對(duì)文件系統(tǒng)結(jié)構(gòu)和操作系統(tǒng)的未得到滿足的以下需求,即,允許在文件系統(tǒng)保持活動(dòng)的同時(shí),對(duì)文件系統(tǒng)類型進(jìn)行轉(zhuǎn)換,以使得不中斷對(duì)文件系統(tǒng)的操作和訪問(wèn)。

      發(fā)明內(nèi)容
      因此,本發(fā)明的實(shí)施例涉及一種文件系統(tǒng)轉(zhuǎn)換處理,其不要求關(guān)閉文件系統(tǒng)以執(zhí)行該轉(zhuǎn)換,確保了對(duì)該文件系統(tǒng)內(nèi)的所有對(duì)象進(jìn)行轉(zhuǎn)換,并且,從用戶的觀點(diǎn)來(lái)看,不會(huì)影響文件系統(tǒng)的性能和操作。
      本發(fā)明的一個(gè)方面涉及一種用于將文件系統(tǒng)從第一類型轉(zhuǎn)換成第二類型的方法。根據(jù)該方面,在將所述文件系統(tǒng)保持為活動(dòng)狀態(tài)的同時(shí),執(zhí)行轉(zhuǎn)換處理,以將所述文件系統(tǒng)中的每個(gè)第一類型目錄轉(zhuǎn)換成第二類型,然后在已將所述文件系統(tǒng)中的每個(gè)第一類型目錄轉(zhuǎn)換成第二類型時(shí)結(jié)束所述轉(zhuǎn)換處理。
      本發(fā)明的另一方面涉及用于將文件系統(tǒng)從第一類型轉(zhuǎn)換成第二類型的另一方法。根據(jù)該方面,創(chuàng)建待轉(zhuǎn)換的所述文件系統(tǒng)中的第一類型目錄的列表;然后在將所述文件系統(tǒng)保持為活動(dòng)狀態(tài)的同時(shí)將所述列表中的每個(gè)目錄轉(zhuǎn)換成第二類型。


      以下僅以示例的方式參照附圖對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行描述,在附圖中圖1例示了其上可以實(shí)現(xiàn)本發(fā)明的實(shí)施例的示例性計(jì)算機(jī)系統(tǒng);圖2示出了作為樹(shù)形圖的示例性文件系統(tǒng)結(jié)構(gòu);圖3示出了根據(jù)本發(fā)明一優(yōu)選實(shí)施例的用于在文件系統(tǒng)保持活動(dòng)的同時(shí)對(duì)文件系統(tǒng)進(jìn)行轉(zhuǎn)換的示例性算法的流程圖;圖4示出了根據(jù)本發(fā)明一優(yōu)選實(shí)施例的用于運(yùn)行圖3的轉(zhuǎn)換處理的示例性方法的更詳細(xì)的流程圖;圖5示出了根據(jù)本發(fā)明一優(yōu)選實(shí)施例的用于建立文件系統(tǒng)中的待轉(zhuǎn)換目錄的列表的示例性算法;
      圖6A示出了另一示例性文件系統(tǒng);圖6B示出了圖6A的文件系統(tǒng)的目錄列表,由根據(jù)本發(fā)明一優(yōu)選實(shí)施例的圖5的示例性算法生成該目錄列表;圖7示出了本發(fā)明一示例性實(shí)施例的用于將文件系統(tǒng)從一種類型轉(zhuǎn)換成另一類型的流程圖;圖8示出了在文件系統(tǒng)轉(zhuǎn)換過(guò)程中激活新目錄的示例性方法的詳細(xì)流程圖;圖9A到9F示出了在根據(jù)圖7和圖8的算法對(duì)示例性文件系統(tǒng)進(jìn)行轉(zhuǎn)換時(shí)該示例性文件系統(tǒng)的一系列快照(snapshot);圖10示出了與文件對(duì)象相對(duì)應(yīng)的示例性數(shù)據(jù)結(jié)構(gòu);以及圖11示出了與目錄對(duì)象相對(duì)應(yīng)的示例性數(shù)據(jù)結(jié)構(gòu)。
      具體實(shí)施例方式
      如上所述,以下討論的實(shí)施例使用了一種支持在文件系統(tǒng)保持運(yùn)行的同時(shí)將文件系統(tǒng)從一種類型自動(dòng)轉(zhuǎn)換成另一類型的文件系統(tǒng)轉(zhuǎn)換處理或軟件應(yīng)用。以下對(duì)能夠按與本發(fā)明優(yōu)選實(shí)施例相一致的方式支持該功能的這種轉(zhuǎn)換處理的具體實(shí)現(xiàn)進(jìn)行更為詳細(xì)的討論。然而,在討論這種具體實(shí)現(xiàn)之前,針對(duì)其中可能應(yīng)用這種處理的示例性硬件和軟件環(huán)境進(jìn)行簡(jiǎn)要的討論。
      下面參照附圖,其中在幾個(gè)圖中相似的標(biāo)號(hào)表示相似的部分,圖1例示了適合于實(shí)現(xiàn)與本發(fā)明優(yōu)選實(shí)施例相一致的文件系統(tǒng)轉(zhuǎn)換處理的設(shè)備10的示例性硬件和軟件環(huán)境。設(shè)備10實(shí)際上可以代表任何類型的計(jì)算機(jī)、計(jì)算機(jī)系統(tǒng)或其他可編程電子設(shè)備,包括客戶計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、便攜式計(jì)算機(jī)、手持計(jì)算機(jī)、嵌入式控制器等。此外,例如,在機(jī)群(cluster)或其他分布式計(jì)算系統(tǒng)中,可以使用一個(gè)或更多個(gè)網(wǎng)絡(luò)計(jì)算機(jī)來(lái)實(shí)現(xiàn)設(shè)備10。以下也將設(shè)備10稱為“計(jì)算機(jī)”,但是應(yīng)當(dāng)理解術(shù)語(yǔ)“設(shè)備”也可以包括其他合適的可編程電子設(shè)備。
      典型地,計(jì)算機(jī)10包括耦合到存儲(chǔ)器14的至少一個(gè)處理器12。處理器12可以代表一個(gè)或更多個(gè)處理器(例如,微處理器),存儲(chǔ)器14可以代表隨機(jī)存取存儲(chǔ)器(RAM)設(shè)備,包括計(jì)算機(jī)10的主存儲(chǔ)裝置(storage),以及任何補(bǔ)充級(jí)別的存儲(chǔ)器,例如,高速緩沖存儲(chǔ)器、非易失性或備用存儲(chǔ)器(例如,可編程或閃速存儲(chǔ)器)、只讀存儲(chǔ)器等。此外,可以認(rèn)為存儲(chǔ)器14包括在物理上位于計(jì)算機(jī)10的其他位置的存儲(chǔ)裝置(例如,位于處理器12中的任何高速緩沖存儲(chǔ)器),以及用作虛擬存儲(chǔ)器的任何存儲(chǔ)容量,例如,存儲(chǔ)在大容量存儲(chǔ)裝置16上或存儲(chǔ)在通過(guò)網(wǎng)絡(luò)18耦合到計(jì)算機(jī)10的另一計(jì)算機(jī)(例如,客戶機(jī)20)上的存儲(chǔ)容量。
      典型地,計(jì)算機(jī)10還接收許多輸入和輸出,以與外部交流信息。對(duì)于與用戶或操作員的接口,典型地,計(jì)算機(jī)10包括一個(gè)或更多個(gè)用戶輸入裝置22(例如,鍵盤、鼠標(biāo)、跟蹤球、操縱桿、觸摸墊和/或麥克風(fēng)等)和顯示器24(例如,CRT監(jiān)視器、LCD顯示板和/或揚(yáng)聲器等)?;蛘撸梢酝ㄟ^(guò)在網(wǎng)絡(luò)18上或經(jīng)由專用工作站接口等與計(jì)算機(jī)10相連接的另一計(jì)算機(jī)(例如,計(jì)算機(jī)20)來(lái)接收用戶輸入。
      作為附加存儲(chǔ)器,計(jì)算機(jī)10還可以包括一個(gè)或更多個(gè)大容量存儲(chǔ)裝置16,例如,軟盤或其他可移除硬盤、硬盤驅(qū)動(dòng)器、直接訪問(wèn)存儲(chǔ)裝置(DASD)、光驅(qū)(例如,CD驅(qū)動(dòng)器、DVD驅(qū)動(dòng)器等)和/或磁帶機(jī)等。此外,計(jì)算機(jī)10可以包括與一個(gè)或更多個(gè)網(wǎng)絡(luò)18(例如,LAN、WAN、無(wú)線網(wǎng)絡(luò)和/或因特網(wǎng)等)的接口,以允許與耦合到網(wǎng)絡(luò)的其他計(jì)算機(jī)交流信息。應(yīng)當(dāng)理解,如在現(xiàn)有技術(shù)中公知的,典型地,計(jì)算機(jī)10包括在處理器12與組成部分14、16、18、22以及24中的每一個(gè)之間的合適的模擬和/或數(shù)字接口。
      計(jì)算機(jī)10在操作系統(tǒng)30的控制下進(jìn)行操作,并執(zhí)行或依靠各種計(jì)算機(jī)軟件應(yīng)用、組件、程序、對(duì)象、模塊、數(shù)據(jù)結(jié)構(gòu)等(例如,數(shù)據(jù)庫(kù)管理系統(tǒng)32和數(shù)據(jù)庫(kù)34等)。此外,各種應(yīng)用、組件、程序、對(duì)象、模塊等也可以在例如分布式或客戶機(jī)服務(wù)器計(jì)算環(huán)境中,在通過(guò)網(wǎng)絡(luò)18耦合到計(jì)算機(jī)10的另一計(jì)算機(jī)中的一個(gè)或更多個(gè)處理器上執(zhí)行,由此可以將實(shí)現(xiàn)計(jì)算機(jī)程序的功能所需的處理分配給網(wǎng)絡(luò)上的多個(gè)計(jì)算機(jī)。操作系統(tǒng)30的一部分是對(duì)定義了在系統(tǒng)的物理存儲(chǔ)介質(zhì)上如何存儲(chǔ)和布置數(shù)據(jù)的文件系統(tǒng)類型的實(shí)現(xiàn)。將操作系統(tǒng)30視為在文件系統(tǒng)上運(yùn)行并利用關(guān)于該實(shí)現(xiàn)的知識(shí)來(lái)正確地訪問(wèn)文件系統(tǒng)內(nèi)的數(shù)據(jù)。文件系統(tǒng)數(shù)據(jù)是指操作系統(tǒng)30可以訪問(wèn)的數(shù)據(jù),而文件系統(tǒng)類型是指對(duì)如何并且在何處存儲(chǔ)和布置數(shù)據(jù)的規(guī)定。如以下更詳細(xì)討論的,本發(fā)明的實(shí)施例涉及用于將一個(gè)文件系統(tǒng)實(shí)現(xiàn)類型改變成另一類型的處理。
      如與其他軟件應(yīng)用一樣,可以將其他硬件組件并入系統(tǒng)10中。通常,這里將被執(zhí)行以實(shí)現(xiàn)本發(fā)明的實(shí)施例的例程(可以被實(shí)現(xiàn)為操作系統(tǒng)的一部分或特定應(yīng)用、組件、程序、對(duì)象、模塊或指令序列,甚至是其子集)稱為“計(jì)算機(jī)程序代碼”或簡(jiǎn)稱為“程序代碼”。典型地,程序代碼包括在不同的時(shí)間駐留在計(jì)算機(jī)的各種存儲(chǔ)器和存儲(chǔ)裝置中的一個(gè)或更多個(gè)指令,并且,當(dāng)由計(jì)算機(jī)中的一個(gè)或更多個(gè)處理器來(lái)讀取和執(zhí)行時(shí),這些指令使得該計(jì)算機(jī)執(zhí)行對(duì)于執(zhí)行實(shí)現(xiàn)了本發(fā)明的各個(gè)方面的步驟或要素所需的步驟。此外,盡管已經(jīng)并且以下還將在全功能計(jì)算機(jī)和計(jì)算機(jī)系統(tǒng)的情境下對(duì)本發(fā)明的多個(gè)優(yōu)選實(shí)施例進(jìn)行描述,但是本領(lǐng)域的技術(shù)人員將理解,可以采用各種形式將發(fā)布本發(fā)明的各種實(shí)施例發(fā)布為程序產(chǎn)品,并且無(wú)論用于實(shí)際執(zhí)行該發(fā)布的信號(hào)承載介質(zhì)的具體類型如何,這些技術(shù)都同樣適用。信號(hào)承載介質(zhì)的示例包括但是并不限于可記錄型介質(zhì)(如易失性和非易失性存儲(chǔ)裝置、軟盤和其他可移除盤、硬盤驅(qū)動(dòng)器、磁帶、光盤(例如,CD-ROM、DVD等)等),和傳輸型介質(zhì),如數(shù)字和模擬通信鏈路。
      此外,基于其中在本發(fā)明的具體實(shí)施例中實(shí)現(xiàn)了稍后描述的各種程序代碼的應(yīng)用,可以識(shí)別這些程序代碼。然而,應(yīng)當(dāng)理解,僅僅出于方便的目的而使用以下任何具體的程序術(shù)語(yǔ),因此這些技術(shù)并不限于僅在由這種術(shù)語(yǔ)表示并且/或者蘊(yùn)涵的任何特定應(yīng)用中使用。此外,鑒于存在可以將計(jì)算機(jī)程序組織成例程、過(guò)程、方法、模塊、對(duì)象等的通常的無(wú)數(shù)種方式,并且存在可以在位于典型計(jì)算機(jī)內(nèi)的各種軟件層(例如,操作系統(tǒng)、庫(kù)、API、應(yīng)用、小應(yīng)用程序等)之間分配程序功能的各種方式,應(yīng)當(dāng)理解,本發(fā)明的多個(gè)優(yōu)選實(shí)施例并不限于對(duì)這里描述的程序功能的特定組織和分配。
      本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,圖1所例示的示例性環(huán)境并不是限制性的。實(shí)際上,本領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,可以使用其他另選硬件和/或軟件環(huán)境。
      圖2示出了如圖1中的計(jì)算機(jī)的示例性文件系統(tǒng)樹(shù)200。按層級(jí)方式表示該示例性文件系統(tǒng)的文件和對(duì)象。樹(shù)200的頂端是具有兩個(gè)子目錄DirA 204和DirD 206的根目錄202。DirA 204包括2個(gè)子對(duì)象文件B 208和子目錄DirC 210。另一方面,DirD 206包括一個(gè)直接子對(duì)象DirE 212,DirE 212本身包括子對(duì)象FileF 214。根據(jù)本發(fā)明一實(shí)施例,有利地,文件系統(tǒng)將每個(gè)目錄(202、204、206、210以及212)都實(shí)現(xiàn)為直接子對(duì)象和錨定位置的列表。由此,目錄包括與它的子對(duì)象是什么有關(guān)的信息和指向各位置的相應(yīng)指針。本領(lǐng)域的普通技術(shù)人員將認(rèn)識(shí)到, 也可以包括其他對(duì)象屬性,如文件修改時(shí)間、安全屬性等。例如,如果子對(duì)象本身是目錄,則可能存在的一個(gè)屬性可以涉及其父目錄的位置或名稱;如果子對(duì)象是諸如文件的非目錄對(duì)象,則不一定要存儲(chǔ)這種屬性。
      在圖2以及隨后的文件系統(tǒng)樹(shù)結(jié)構(gòu)圖中,通常將目錄標(biāo)簽和文件標(biāo)簽示為在對(duì)象本身上或在對(duì)象本身中。該約定有利于使圖不會(huì)看起來(lái)混亂,并有利于清楚地表示哪個(gè)對(duì)象與哪個(gè)標(biāo)簽相關(guān)聯(lián)。然而,更合適的約定是將各標(biāo)簽布置成靠近樹(shù)中的父對(duì)象與子對(duì)象之間的鏈接(或線)。換句話說(shuō),圖2的根目錄202并不實(shí)際地包含DirA 204和DirD 206,而是包含到DirA的鏈接和到DirD的另一鏈接。因此,如這里所描述的,當(dāng)對(duì)DirA或DirC進(jìn)行了“重命名”時(shí),這是指對(duì)它們的相應(yīng)父目錄中的適當(dāng)?shù)逆溄舆M(jìn)行了重命名,而不是對(duì)對(duì)象本身的名稱進(jìn)行了重命名。
      文件系統(tǒng)類型規(guī)定為文件系統(tǒng)對(duì)象(例如,文件、目錄)存儲(chǔ)什么信息,該信息的格式如何,以及如何布置該信息;通常將該信息稱為元數(shù)據(jù)。在計(jì)算機(jī)系統(tǒng)的正常操作過(guò)程中,操作系統(tǒng)與應(yīng)用程序一起工作,以調(diào)用了解底層文件系統(tǒng)類型和可用元數(shù)據(jù)的進(jìn)程和例程,以正確地創(chuàng)建、刪除、打開(kāi)以及修改文件系統(tǒng)內(nèi)的對(duì)象。從一個(gè)文件系統(tǒng)類型變成另一文件系統(tǒng)類型包括改變伴隨著文件系統(tǒng)內(nèi)的各個(gè)對(duì)象的元數(shù)據(jù)(或其內(nèi)部結(jié)構(gòu))。如前所述,存在從一個(gè)文件系統(tǒng)類型轉(zhuǎn)換成另一文件系統(tǒng)類型的多個(gè)常規(guī)方法,它們都要求在轉(zhuǎn)換過(guò)程中停止對(duì)文件系統(tǒng)的訪問(wèn)。因此,對(duì)從一個(gè)文件系統(tǒng)類型到另一文件系統(tǒng)類型的轉(zhuǎn)換的以下描述并不關(guān)注于對(duì)元數(shù)據(jù)的轉(zhuǎn)變的實(shí)際機(jī)制;而是詳細(xì)描述如何在保持對(duì)文件系統(tǒng)的完全操作能力的同時(shí)對(duì)元數(shù)據(jù)進(jìn)行轉(zhuǎn)變。然而,元數(shù)據(jù)轉(zhuǎn)換的一個(gè)這種示例涉及將目錄條目從一般數(shù)據(jù)庫(kù)結(jié)構(gòu)改變成專用目錄對(duì)象。
      根據(jù)上述示例,其中目錄條目是一般數(shù)據(jù)庫(kù)記錄的操作系統(tǒng)可能使用通用數(shù)據(jù)庫(kù)訪問(wèn)和處理邏輯來(lái)處理文件系統(tǒng)操作。該邏輯在本質(zhì)上必定是通用的,以相同地處理操作系統(tǒng)遇到的目錄條目和操作系統(tǒng)遇到的其他非文件系統(tǒng)對(duì)象。然而,一種不同的文件系統(tǒng)類型可以將目錄條目實(shí)現(xiàn)為專用對(duì)象,該對(duì)象采用適當(dāng)?shù)母袷讲⒈贿m當(dāng)?shù)夭贾茫员阌诳煽亢透咝У奶幚?。操作系統(tǒng)將包括專用邏輯,該專用邏輯用于處理該專用目錄條目,同時(shí)還保持一般數(shù)據(jù)庫(kù)處理邏輯,以對(duì)在操作過(guò)程中遇到的較不專用的對(duì)象進(jìn)行處理。因此,可以對(duì)專用目錄對(duì)象進(jìn)行設(shè)計(jì),以獲得高效性、可靠性、安全性、可訪問(wèn)性等。
      轉(zhuǎn)到圖3,示出了用于在文件系統(tǒng)繼續(xù)進(jìn)行操作并可由用戶使用的同時(shí)將文件系統(tǒng)從一個(gè)類型轉(zhuǎn)換成另一類型的示例性算法的流程圖。根據(jù)圖3的具體流程圖,在沒(méi)有明顯地從用戶接收到應(yīng)當(dāng)開(kāi)始進(jìn)行轉(zhuǎn)換處理的確認(rèn)的情況下,系統(tǒng)自動(dòng)地將文件系統(tǒng)從舊型式轉(zhuǎn)換成新型式。本領(lǐng)域的普通技術(shù)人員將認(rèn)識(shí)到,在圖3的流程圖中可以包括允許用戶對(duì)是否激活轉(zhuǎn)換處理進(jìn)行控制或進(jìn)行手動(dòng)實(shí)施的可選步驟。
      在步驟302中,計(jì)算機(jī)系統(tǒng)執(zhí)行初始程序裝入或重啟。在安裝或裝入了新版本的操作系統(tǒng)之后通常需要進(jìn)行這種操作。作為初始程序裝入的一部分或者作為隨后的步驟,在步驟304中啟動(dòng)一進(jìn)程,該進(jìn)程對(duì)文件系統(tǒng)是否包括舊文件系統(tǒng)類型的對(duì)象進(jìn)行檢測(cè)。當(dāng)更新操作系統(tǒng)版本時(shí)大部分當(dāng)前的系統(tǒng)都會(huì)在文件系統(tǒng)內(nèi)具有舊型式的目錄和對(duì)象。但是,新的、出廠安裝的操作系統(tǒng)可能默認(rèn)地只具有新文件系統(tǒng)類型的已創(chuàng)建對(duì)象。此外,如果計(jì)算機(jī)系統(tǒng)(尤其是在轉(zhuǎn)換處理完成之前)遭受了崩潰,那么當(dāng)重啟該系統(tǒng)時(shí)圖3的算法將從在發(fā)生崩潰之前的某個(gè)時(shí)間點(diǎn)起自動(dòng)重新啟動(dòng)轉(zhuǎn)換例程。
      與在步驟304中對(duì)舊型式文件系統(tǒng)對(duì)象的檢測(cè)同時(shí)地,在步驟306中,操作系統(tǒng)保持文件系統(tǒng)系統(tǒng)的可用性和操作,如正常提供的那樣。在文件系統(tǒng)可操作并且可用的同時(shí),在步驟308中啟動(dòng)轉(zhuǎn)換處理,以將文件系統(tǒng)從舊類型或舊型式轉(zhuǎn)換成新類型或新型式。術(shù)語(yǔ)“舊”和“新”是將一種類型與另一種類型區(qū)別開(kāi)的一般性描述,如在這里使用的,它們并不一定將文件系統(tǒng)轉(zhuǎn)換限制為總是從較舊的文件系統(tǒng)類型轉(zhuǎn)換成較新的文件系統(tǒng)類型。這里所描述的轉(zhuǎn)換處理的實(shí)施例也可以使操作系統(tǒng)從較新近的文件系統(tǒng)類型回到較舊的類型。
      通過(guò)在保持文件系統(tǒng)的可用性的同時(shí)運(yùn)行文件系統(tǒng)轉(zhuǎn)換處理,避免了將文件系統(tǒng)關(guān)閉為非活動(dòng)狀態(tài)的需要。由此,即使正在執(zhí)行文件系統(tǒng)轉(zhuǎn)換,用戶也可以繼續(xù)訪問(wèn)并使用文件系統(tǒng)。常規(guī)多任務(wù)操作系統(tǒng)包括用于設(shè)置一進(jìn)程相對(duì)于可能正在同時(shí)執(zhí)行的其他進(jìn)程的優(yōu)先級(jí)的機(jī)制。因此,可以將用于轉(zhuǎn)換文件系統(tǒng)的進(jìn)程的優(yōu)先級(jí)設(shè)置為低優(yōu)先級(jí),以不對(duì)操作系統(tǒng)的性能造成明顯的影響;或者,如果用戶可以接受一定的可能的性能劣化,則可以將該優(yōu)先級(jí)設(shè)置成較高。在一示例性實(shí)施例中,轉(zhuǎn)換處理以最低可能優(yōu)先級(jí)作為單線程運(yùn)行。本發(fā)明的另選實(shí)施例可以基于系統(tǒng)的系統(tǒng)級(jí)或文件級(jí)活動(dòng)來(lái)動(dòng)態(tài)地改變執(zhí)行轉(zhuǎn)換處理的優(yōu)先級(jí)。例如,如果正在超過(guò)某個(gè)預(yù)定級(jí)地使用文件系統(tǒng)的特定目錄,那么轉(zhuǎn)換處理可以按較低優(yōu)先級(jí)進(jìn)行操作,或者甚至跳過(guò)該繁忙文件系統(tǒng)對(duì)象,直到它的活動(dòng)級(jí)降低。因此,可以利用文件系統(tǒng)對(duì)象的使用率來(lái)確定是否將對(duì)該對(duì)象的轉(zhuǎn)換推遲到某個(gè)較晚的時(shí)間。轉(zhuǎn)換處理還可以確定在轉(zhuǎn)換了一目錄之后將該目錄轉(zhuǎn)換回它的初始型式可能是有益的??梢曰谛阅軉?wèn)題、數(shù)據(jù)完整性問(wèn)題等來(lái)進(jìn)行該確定。類似地,可以認(rèn)為某些系統(tǒng)活動(dòng)與文件系統(tǒng)轉(zhuǎn)換不兼容,如對(duì)若干新文件的訪問(wèn)和/或創(chuàng)建的活動(dòng)。盡管可以容易地允許在不修改圖3的算法的情況下同時(shí)執(zhí)行這些活動(dòng),但是在這些處理是活動(dòng)的同時(shí)停止文件系統(tǒng)轉(zhuǎn)換是有益的。示例性處理是對(duì)新軟件應(yīng)用的安裝或出于備份和存檔的目的對(duì)數(shù)據(jù)進(jìn)行的保存或恢復(fù)。因此,本發(fā)明的實(shí)施例設(shè)想在這些類型的其他處理中的任一處理正在執(zhí)行時(shí)停止文件系統(tǒng)轉(zhuǎn)換處理。
      圖4給出了圖3中的轉(zhuǎn)換處理308的更詳細(xì)的示圖。更具體地,圖4示出了用于實(shí)現(xiàn)文件系統(tǒng)轉(zhuǎn)換處理(其將與正常的文件系統(tǒng)和操作系統(tǒng)活動(dòng)同時(shí)地進(jìn)行操作)的示例性方法的流程圖。參照?qǐng)D4的流程圖,該轉(zhuǎn)換處理開(kāi)始于在步驟402中建立在文件系統(tǒng)中存在的任何舊型式目錄的列表。一旦建立了該列表,則該處理遍歷該列表并在步驟404中將各條目從舊型式目錄轉(zhuǎn)換為新型式目錄,并在步驟406中激活新型式目錄。作為激活新型式目錄的步驟的一部分,轉(zhuǎn)換處理還可以清除到文件系統(tǒng)對(duì)象的舊型式鏈接并刪除舊型式目錄。針對(duì)舊型式目錄的列表中的每個(gè)條目重復(fù)步驟404和406。
      圖5示出了用于建立舊型式目錄的列表的示例性算法。該示例性算法按非遞歸方式來(lái)創(chuàng)建列表,與遞歸處理通常消耗的時(shí)間量和存儲(chǔ)量相比,該非遞歸方式使目錄保持打開(kāi)以進(jìn)行讀取的時(shí)間量最小化,并且使存儲(chǔ)量最小化。然而,應(yīng)當(dāng)理解,也可以使用對(duì)文件系統(tǒng)的另選但是等效的掃描方法(包括遞歸處理)來(lái)建立舊型式目錄的列表。
      根據(jù)圖5,通過(guò)在步驟502中最初添加根目錄來(lái)開(kāi)始該列表。在步驟504中,訪問(wèn)舊型式目錄列表,并讀取和識(shí)別該列表中的下一條目。當(dāng)在步驟504中首次讀取列表時(shí)根目錄是該列表中的唯一目錄,因此,在步驟506中,對(duì)該根目錄的直接、舊型式子目錄進(jìn)行識(shí)別。在步驟504的隨后的執(zhí)行中,讀取列表中的下一條目并在步驟506中識(shí)別其舊型式子目錄。如果在執(zhí)行步驟504時(shí)在列表中沒(méi)有剩余條目,則可以在步驟508中結(jié)束該處理。此外,如果在步驟506中沒(méi)有識(shí)別出舊型式子目錄,則完成了對(duì)該特定條目的處理,并且邏輯流程回到步驟504以檢取列表中的下一條目。然而,如果在步驟506中識(shí)別出舊型式子目錄,則在步驟510中將它和它的類似兄弟加入該列表。然后回到步驟504以重復(fù)該處理,在步驟504中,讀取列表中的下一條目以確定是否需要將其他條目加入列表。由此,圖5的示例性算法非遞歸地遍歷了文件系統(tǒng)樹(shù),并建立了所有舊型式目錄的列表,在文件系統(tǒng)轉(zhuǎn)換處理過(guò)程中,這些舊型式目錄將被轉(zhuǎn)換成新型式目錄。
      圖6A的示例性文件系統(tǒng)樹(shù)600描述了圖5的算法的操作以及將要建立的舊型式目錄列表。對(duì)于圖6A和6B,假設(shè)所有目錄都是舊型式目錄。通過(guò)執(zhí)行圖5的算法,根目錄602被添加到列表的頂部,然后在讀取根目錄602時(shí),將其子目錄DirA 604和DirB 606添加到該列表。通過(guò)讀取列表中的下一條目來(lái)繼續(xù)進(jìn)行該處理,當(dāng)讀取DirA 604時(shí),將其子目錄DirC 608添加到該列表。由于DirC 608是DirA 604的唯一子目錄,因此下一步從該列表讀取DirB 606,使得DirD 610和DirE 612被添加到該列表。然后從該列表讀取DirC 608,其沒(méi)有子目錄。處理繼續(xù)以對(duì)作為DirD 610的唯一子目錄的DirF 614進(jìn)行識(shí)別,并將其添加到列表。然后從該列表讀取DirE 612,其沒(méi)有子目錄。然后從該列表讀取DirF 614,其沒(méi)有子目錄。圖6B示出了所得目錄列表650。
      圖7示出了用于在文件系統(tǒng)保持完全可操作和可訪問(wèn)的同時(shí)將在文件系統(tǒng)中識(shí)別出的各舊型式目錄(例如,圖6B的列表650)轉(zhuǎn)換成新型式目錄的示例性算法的流程圖。由于該文件系統(tǒng)在轉(zhuǎn)換處理過(guò)程中保持活動(dòng),因此支持新文件系統(tǒng)類型的新操作系統(tǒng)將也包括對(duì)舊文件系統(tǒng)類型的支持。因此,通過(guò)正在執(zhí)行的應(yīng)用可以訪問(wèn)甚至刪除舊型式文件系統(tǒng)對(duì)象。然而,為了避免在轉(zhuǎn)換處理過(guò)程中向文件系統(tǒng)加入其他舊型式文件系統(tǒng)對(duì)象,有利地,操作系統(tǒng)在新型式文件系統(tǒng)實(shí)現(xiàn)中創(chuàng)建任何新對(duì)象。然而,本領(lǐng)域的普通技術(shù)人員將認(rèn)識(shí)到,可以采用能夠創(chuàng)建舊型式文件系統(tǒng)對(duì)象的另選方法,如將舊型式對(duì)象的日志保持為針對(duì)稍后的轉(zhuǎn)換創(chuàng)建的日志。
      在步驟702中,創(chuàng)建新型式根目錄,作為文件系統(tǒng)中的對(duì)象,該目錄初始時(shí)是空的。該新型式根目錄將暫時(shí)充當(dāng)新創(chuàng)建的新型式目錄的父目錄,并將在將文件系統(tǒng)完全轉(zhuǎn)換成新型式時(shí)最終成為根目錄。如果先前(如由于系統(tǒng)崩潰而)中斷了轉(zhuǎn)換處理,那么在重新啟動(dòng)該轉(zhuǎn)換處理時(shí),將已存在新型式根目錄,因此可以跳過(guò)步驟702。在另選實(shí)現(xiàn)中,在轉(zhuǎn)換處理過(guò)程中使用新型式根目錄,但是隨后丟棄它。然后在最終對(duì)舊型式根目錄進(jìn)行了轉(zhuǎn)換時(shí)創(chuàng)建與舊型式根目錄相對(duì)應(yīng)的不同的新型式根目錄。
      在步驟704中,從舊型式目錄的列表中檢取最后一個(gè)目錄條目,以進(jìn)行處理。由于文件系統(tǒng)是活動(dòng)的,因此該目錄可能已被刪除或移動(dòng),因此,該目錄可能不再存在。因此,在步驟706中,進(jìn)行檢查以確定該目錄是否仍然存在。如果不存在,則刪除該條目,并從該列表檢取新底端條目,以進(jìn)行處理。
      然而,假設(shè)該舊型式目錄不存在,那么在步驟708中在文件系統(tǒng)中創(chuàng)建與舊型式目錄相對(duì)應(yīng)的新型式目錄。該新型式目錄最初是空的,并且將需要利用到舊型式目錄中的各子對(duì)象的鏈接來(lái)填充。由此,在步驟712中,讀取舊型式目錄,以檢取其子對(duì)象。子對(duì)象可以是目錄(714、718)或文件722。此外,由于文件系統(tǒng)是活動(dòng)的,因此子目錄可以是新型式目錄714或舊型式目錄718。新型式目錄可能通過(guò)先前的轉(zhuǎn)換步驟或通過(guò)在轉(zhuǎn)換處理過(guò)程中創(chuàng)建的目錄而產(chǎn)生。舊型式目錄可能通過(guò)這樣的操作而產(chǎn)生舊型式目錄該操作導(dǎo)致將現(xiàn)有的舊型式目錄作為子目錄移動(dòng)到正在處理的當(dāng)前舊型式目錄中。
      有利地,圖6B中的示例性目錄列表650的格式將文件系統(tǒng)600中的目錄排列成從根目錄602往下到文件系統(tǒng)的葉節(jié)點(diǎn)。因此,如果通過(guò)從列表650的底端開(kāi)始并向上移動(dòng),對(duì)文件系統(tǒng)進(jìn)行轉(zhuǎn)換,則在轉(zhuǎn)換父目錄之前轉(zhuǎn)換父目錄的所有子目錄。轉(zhuǎn)換文件的順序結(jié)合對(duì)關(guān)于目錄的某些特性的設(shè)置提供了這樣的好處確保了在無(wú)法進(jìn)行檢測(cè)的情況下,在文件系統(tǒng)轉(zhuǎn)換處理過(guò)程中沒(méi)有目錄被添加到一目錄中。
      由于文件系統(tǒng)是活動(dòng)并且操作的,因此存在如下可能性在建立了列表650之后但是在實(shí)際轉(zhuǎn)換父目錄之前,將舊型式目錄移動(dòng)到舊型式父目錄中。在正常的文件系統(tǒng)操作中,當(dāng)將目錄或其他對(duì)象添加到父目錄中時(shí),父目錄找出可用條目并添加到該新對(duì)象的鏈接或引用。由于經(jīng)常從目錄中刪除對(duì)象,因此第一個(gè)可用條目空間可能并不總是位于目錄的末端,而是位于目錄結(jié)構(gòu)的中間。有些文件系統(tǒng)在目錄內(nèi)包括強(qiáng)制將新條目添加到目錄的末端的屬性。本發(fā)明的實(shí)施例使用該屬性,或者可以將其實(shí)現(xiàn)為附加特征,以使得放入正在被轉(zhuǎn)換的目錄中的任何新條目添加到該目錄的末端。由此,在步驟708中,在讀取各舊型式目錄之前,標(biāo)記該目錄,以使得要添加到該目錄的任何新條目被附加在末端而不是使用中間空閑空間。
      如果在轉(zhuǎn)換處理過(guò)程中在父目錄內(nèi)遇到了舊型式目錄,則只可能在以下情況下才會(huì)出現(xiàn)該事件在已建立了列表650之后舊型式目錄被移動(dòng)到父目錄中。當(dāng)出現(xiàn)該事件時(shí),轉(zhuǎn)換處理可能回到圖5的列表建立例程,并將新檢測(cè)到的目錄添加到列表的末端。返回到轉(zhuǎn)換處理將以新添加的條目重新啟動(dòng)轉(zhuǎn)換處理,并使得轉(zhuǎn)換處理可以繼續(xù)進(jìn)行。
      由此,當(dāng)在步驟712中遇到作為子對(duì)象的舊型式目錄718時(shí),將該子對(duì)象返回給圖5的列表建立例程,作為列表中的最后一個(gè)條目。例程402將接著照常執(zhí)行步驟506和510,以確定是否要將任何附加子目錄添加到列表中。一旦完成了該列表,則可以重新啟動(dòng)圖7的轉(zhuǎn)換處理。在步驟704中檢取該列表的新底端條目,并且文件系統(tǒng)轉(zhuǎn)換處理如前所述地繼續(xù)進(jìn)行。
      當(dāng)遇到新型式目錄714時(shí),則在步驟716中將其鏈接重命名到在步驟708中創(chuàng)建的新型式目錄中。如果遇到諸如文件的非目錄對(duì)象722,則在步驟724中將其鏈接到在步驟708中創(chuàng)建的新型式父目錄。對(duì)子對(duì)象的處理繼續(xù)進(jìn)行,直到在步驟726確定在當(dāng)前目錄中不存在其他子對(duì)象。
      此時(shí),新型式目錄具有到在正在轉(zhuǎn)換的舊型式父目錄中存在的每個(gè)子對(duì)象的鏈接。由此,在步驟728中,使舊型式目錄去激活(deactive)并使新型式目錄激活。在步驟730中,執(zhí)行清除處理,以刪除在新型式文件系統(tǒng)中不再使用的任何鏈接或文件系統(tǒng)對(duì)象(如舊型式目錄)。然后在步驟732中通過(guò)刪除剛剛完成了轉(zhuǎn)換的當(dāng)前底端條目,來(lái)更新舊型式目錄的列表。如果在列表中存在其他條目,則步驟734將邏輯流程返回到步驟704,以獲得列表中的下一底端條目。否則,轉(zhuǎn)換處理完成。
      如剛剛描述的,從最遠(yuǎn)端葉節(jié)點(diǎn)向上到根目錄,對(duì)舊型式文件系統(tǒng)的目錄進(jìn)行轉(zhuǎn)換。因此,根目錄是所轉(zhuǎn)換的最后一個(gè)目錄。如已說(shuō)明的,用于轉(zhuǎn)換目錄的該示例性方法允許對(duì)可能在建立了舊型式目錄的列表之后引入的舊型式目錄進(jìn)行檢測(cè)。本領(lǐng)域的普通技術(shù)人員將認(rèn)識(shí)到,可以使用另選方法來(lái)完成該相同的功能。例如,可以從上向下地轉(zhuǎn)換文件系統(tǒng),并且文件系統(tǒng)可以包括對(duì)文件系統(tǒng)進(jìn)行掃描的掃描邏輯,以檢測(cè)是否在轉(zhuǎn)換處理過(guò)程中添加或移動(dòng)了需要轉(zhuǎn)換的文件??梢栽谖募到y(tǒng)內(nèi)的中間節(jié)點(diǎn)處使用這種掃描邏輯,或者在聲稱已轉(zhuǎn)換了所有目錄時(shí)使用該掃描邏輯作為最終步驟。
      圖8示出了如在步驟728中執(zhí)行的從舊型式目錄到新型式目錄的激活的更詳細(xì)的圖示。該流程圖例示了用于激活新型式目錄的示例性算法。該示例性算法假設(shè)文件系統(tǒng)和操作系統(tǒng)利用類似于vnode的結(jié)構(gòu)來(lái)工作。類似于vnode的結(jié)構(gòu)是由操作系統(tǒng)創(chuàng)建的臨時(shí)數(shù)據(jù)結(jié)構(gòu),其引用了打開(kāi)的或者活動(dòng)的文件系統(tǒng)對(duì)象。典型地,當(dāng)進(jìn)程首次打開(kāi)一文件系統(tǒng)對(duì)象時(shí),將vnode標(biāo)識(shí)符返回給該進(jìn)程。需要訪問(wèn)文件系統(tǒng)對(duì)象的應(yīng)用或系統(tǒng)進(jìn)程使用該標(biāo)識(shí)符來(lái)引用vnode,該標(biāo)識(shí)符進(jìn)而引用該文件系統(tǒng)對(duì)象本身。無(wú)論有多少應(yīng)用正在使用一文件系統(tǒng)對(duì)象,對(duì)于該文件系統(tǒng)對(duì)象只存在一個(gè)vnode;因此,典型地,vnode包括作為正在使用該vnode的進(jìn)程數(shù)量的計(jì)數(shù)的屬性。由于在轉(zhuǎn)換處理過(guò)程中文件系統(tǒng)是活動(dòng)的,因此除轉(zhuǎn)換進(jìn)程以外多個(gè)不同的進(jìn)程可能正在使用要被去激活的舊型式目錄。使用新型式目錄的新vnode和刪除舊型式目錄的vnode會(huì)對(duì)正在使用該文件系統(tǒng)對(duì)象的任何進(jìn)程帶來(lái)有害影響。因此,目錄激活處理的示例性實(shí)施例將有利地按如下方式改變用于引用新型式目錄對(duì)象標(biāo)識(shí)符的舊型式目錄vnode(打開(kāi)了舊型式目錄的)多個(gè)進(jìn)程將無(wú)縫地從舊型式目錄切換到新型式目錄,而無(wú)需知道已進(jìn)行了切換。
      下面考慮圖8的算法,在步驟802中,鎖定文件系統(tǒng),使得不能改變舊型式文件系統(tǒng)對(duì)象的vnode。通過(guò)對(duì)舊型式文件系統(tǒng)對(duì)象聲明鎖定,轉(zhuǎn)換處理防止在激活/去激活處理過(guò)程中改變vonde。在步驟804中,執(zhí)行重命名,刪除到新型式目錄的臨時(shí)鏈接,刪除到舊型式目錄的鏈接,并添加到新型式目錄的永久鏈接。這使得新型式目錄對(duì)于應(yīng)用來(lái)說(shuō)是活動(dòng)的和可見(jiàn)的。
      接著,在步驟806中,將vnode更新為指向新型式文件系統(tǒng)對(duì)象。由此,vnode數(shù)量保持相同,但是將vnode修改成引用不同的文件系統(tǒng)對(duì)象(即,新型式文件系統(tǒng)對(duì)象)。還可以改變vnode的其他屬性;例如,vnode中的目錄大小可能會(huì)不同。此外,可以在vnode中改變文件系統(tǒng)對(duì)象的“類型”,以反映該vnode現(xiàn)在引用新型式對(duì)象而非舊型式對(duì)象。一旦進(jìn)行了該改變,打開(kāi)了舊型式文件系統(tǒng)對(duì)象的任何運(yùn)行進(jìn)程仍將使用現(xiàn)在指向了新型式文件系統(tǒng)對(duì)象的vnode。
      步驟808是可選步驟,當(dāng)遇到也在被稱為安裝控制塊的數(shù)據(jù)結(jié)構(gòu)內(nèi)的舊型式文件系統(tǒng)時(shí)執(zhí)行該步驟。安裝控制塊是典型地由操作系統(tǒng)保持的另一臨時(shí)數(shù)據(jù)結(jié)構(gòu),其含有關(guān)于文件系統(tǒng)的信息。例如,當(dāng)激活的新型式目錄是根目錄時(shí),則步驟808將針對(duì)該文件系統(tǒng)修改該安裝控制塊中的某些信息。這種修改例如可以包括將根目錄的指針改變成指向新型式根目錄標(biāo)識(shí)符;將一標(biāo)記改變成表示該文件系統(tǒng)完全是新型式文件系統(tǒng);以及其他屬性,如允許到文件系統(tǒng)中的一對(duì)象的最大鏈接數(shù)量。例如,如前所述,操作系統(tǒng)可以支持兩種類型的文件系統(tǒng),因此包括如下邏輯當(dāng)訪問(wèn)特定文件系統(tǒng)對(duì)象時(shí),對(duì)該對(duì)象進(jìn)行測(cè)試以確定要使用哪個(gè)版本的對(duì)象處理程序(handler)。一旦將文件系統(tǒng)標(biāo)記為完全是新型式的,則操作系統(tǒng)可以省去對(duì)舊型式文件系統(tǒng)的支持。一旦完成了可選步驟808,就可以在步驟810中通過(guò)轉(zhuǎn)換處理解除鎖定。此時(shí),使用新型式目錄條目,并且轉(zhuǎn)換處理如在圖7的算法中概述的那樣繼續(xù)執(zhí)行。
      圖9A到9F中的一系列圖示出了正在經(jīng)受根據(jù)圖7的算法的轉(zhuǎn)換處理的文件系統(tǒng)的快照。文件系統(tǒng)900足夠復(fù)雜以例示在轉(zhuǎn)換過(guò)程中可能會(huì)遇到的不同的文件系統(tǒng)結(jié)構(gòu),同時(shí)也足夠簡(jiǎn)單以使得可以進(jìn)行簡(jiǎn)要描述。由于示例性轉(zhuǎn)換處理的許多活動(dòng)對(duì)文件系統(tǒng)900的鏈接執(zhí)行操作,因此對(duì)這些鏈接賦予標(biāo)簽和編號(hào)(與前面的圖不同),以使得可以區(qū)分文件系統(tǒng)對(duì)象和到文件系統(tǒng)對(duì)象的鏈接。
      文件系統(tǒng)900包括根目錄902,該根目錄902具有被標(biāo)記為“A”的鏈接904。由鏈接904指向的目錄905包括兩個(gè)鏈接到文件907的鏈接906,和指向目錄909的鏈接908。將鏈接906標(biāo)記為“B”,將鏈接908標(biāo)記為“C”。目錄909包括被標(biāo)記為“D”的單個(gè)鏈接910,該鏈接910指向文件911。圖9A還示出了在創(chuàng)建了新型式根目錄912之后的文件系統(tǒng)900。
      針對(duì)文件系統(tǒng)900建立的舊型式目錄的列表將以DirC 909為其底端條目,因此這將是被轉(zhuǎn)換的第一個(gè)目錄。圖9B例示了在完成了對(duì)DirC 909進(jìn)行轉(zhuǎn)換的多個(gè)步驟中的一些步驟之后的文件系統(tǒng)900。
      作為起始步驟,在文件系統(tǒng)900中創(chuàng)建新型式目錄920。使用該示例性算法進(jìn)行的一個(gè)假設(shè)是所創(chuàng)建的任何目錄都將具有相同類型的父目錄。因此,通過(guò)在新型式根目錄912內(nèi)創(chuàng)建鏈接916來(lái)完成對(duì)新型式目錄的創(chuàng)建。到新型式目錄920的鏈接916將具有系統(tǒng)范圍內(nèi)唯一的名稱,因此它與其他文件系統(tǒng)對(duì)象是可區(qū)分的。當(dāng)讀取DirC 909時(shí),那么將返回FileD 911作為其子對(duì)象。因此,在新型式目錄920內(nèi)創(chuàng)建引用FileD 911的鏈接918。作為中間步驟,創(chuàng)建另一鏈接914,此時(shí)該鏈接914位于DirA 905與新型式目錄920之間。將鏈接914標(biāo)記為C′,并且它為臨時(shí)鏈接,它使得在稍后的步驟中可以進(jìn)行簡(jiǎn)單的名稱交換。創(chuàng)建鏈接914的一種示例性方式是在DirA 905中創(chuàng)建也被標(biāo)記為“C”但是使用不同的標(biāo)識(shí)符(如“200”)的鏈接。這種命名約定將在DirA 905內(nèi)創(chuàng)建兩個(gè)唯一的鏈接,但是在刪除到“C”的原始鏈接908之前第二個(gè)鏈接914對(duì)于用戶應(yīng)用來(lái)說(shuō)是不可見(jiàn)的。
      此時(shí),DirC 909的所有屬性都被反映(mirror)到新型式目錄920,以準(zhǔn)備激活新型式目錄920。圖9C例示了在激活了新型式目錄920之后的文件系統(tǒng)900。為了達(dá)到該階段,在DirA 905內(nèi)將鏈接914從C′重新標(biāo)記為“C”。其操作的副作用是刪除了鏈接908。將DirC 909的vnode內(nèi)的對(duì)象指針改變成指向文件系統(tǒng)對(duì)象920(新型式目錄)。不再需要鏈接910,此時(shí)可以刪除它。在此階段,訪問(wèn)DirC的用戶將使用新型式目錄920,而不是此時(shí)可能已被刪除的舊型式目錄909。
      一旦轉(zhuǎn)換了DirC 909,就刪除它,然后從舊型式目錄的列表中刪除它,并且對(duì)列表上的下一底端條目進(jìn)行轉(zhuǎn)換。在示例性文件系統(tǒng)900中,下一目錄是DirA 905。圖9D示出了根據(jù)圖7和圖8的算法對(duì)DirA進(jìn)行轉(zhuǎn)換的步驟。起始步驟是創(chuàng)建唯一地命名的新型式目錄926,其經(jīng)由鏈接924鏈接到新型式根目錄912。
      讀取DirA 905,并將FileB 907和DirC 920識(shí)別為子對(duì)象。因此,在新型式目錄926中創(chuàng)建了到FileB 907的鏈接930。將DirC 920識(shí)別為新型式目錄,因此在DirC 920與新型式根912之間存在鏈接916。將該鏈接916重命名為鏈接928,此時(shí)它從新型式目錄926指向DirC920。還在DirA 905的父目錄中添加鏈接922,這使得稍后可以執(zhí)行簡(jiǎn)單的重命名。具體來(lái)說(shuō),在根目錄902中創(chuàng)建被標(biāo)記為A′的鏈接922。此時(shí)可以激活新型式目錄926。
      圖9E示出了在激活了新型式目錄926之后的文件系統(tǒng)900。具體地,將來(lái)自DirA 905的所有屬性都轉(zhuǎn)移到新型式目錄926,并將鏈接922重命名為“A”。其副作用是刪除了鏈接904。舊型式目錄905的vnode被改變成引用新型式目錄926并且此時(shí)它是活動(dòng)的。刪除任何剩余的舊型式文件和鏈接。舊型式根目錄902是待轉(zhuǎn)換的剩余目錄。
      將DirA 926識(shí)別為舊型式根902的唯一子對(duì)象。由于DirA 926是新型式目錄,因此在新型式DirA 926與新型式根912之間已存在鏈接924。將鏈接924從其文件系統(tǒng)范圍內(nèi)唯一的名稱重命名為“A”。因此,破壞了從舊型式根902起始的鏈接922。將vnode改變成引用新型式根912。剩余的步驟是將安裝控制塊修改成指向新型式根912而不是指向舊型式根。由此,圖9F示出了轉(zhuǎn)換后的文件系統(tǒng)950。
      在這些圖中示出的和以上描述的示例性算法并未明顯地包括錯(cuò)誤檢查例程,以不使這些算法的創(chuàng)造性方面變模糊。然而,本領(lǐng)域的普通技術(shù)人員將認(rèn)識(shí)到,在各種不同的階段中,可以執(zhí)行合適的錯(cuò)誤檢查,以確定系統(tǒng)狀況是否準(zhǔn)許停止正在執(zhí)行的轉(zhuǎn)換處理。例如,如果遇到了已被破壞的文件系統(tǒng)或者發(fā)生了輔助存儲(chǔ)裝置的溢出,則可以停止轉(zhuǎn)換處理。當(dāng)一旦再次重新啟動(dòng)系統(tǒng)時(shí),可以再次開(kāi)始轉(zhuǎn)換處理(見(jiàn)圖3)并重新啟動(dòng)轉(zhuǎn)換處理。
      在上述轉(zhuǎn)換處理過(guò)程中,存在多個(gè)如下時(shí)期有利地,文件系統(tǒng)支持對(duì)象的兩個(gè)并行的實(shí)現(xiàn),即,按新型式文件系統(tǒng)方式和舊型式文件系統(tǒng)方式。這里將文件系統(tǒng)和操作系統(tǒng)描述為提供這種支持。然而,所述處理和結(jié)構(gòu)并不將應(yīng)用限制為文件系統(tǒng)轉(zhuǎn)換應(yīng)用,而是提供用于支持文件系統(tǒng)內(nèi)的多個(gè)、不同的、同時(shí)的對(duì)象實(shí)現(xiàn)的通用解決方案。為了提供這種支持,文件系統(tǒng)可能需要解決多個(gè)問(wèn)題,諸如如何將同一文件鏈接到具有不同文件系統(tǒng)實(shí)現(xiàn)的兩個(gè)不同的目錄中,以及如何將一個(gè)實(shí)現(xiàn)的目錄鏈接到具有另一實(shí)現(xiàn)的父目錄中。
      往回參考先前對(duì)文件系統(tǒng)的討論,將目錄視為多個(gè)條目的列表,其中每個(gè)條目都包括一名稱和一引用指針。如本領(lǐng)域的普通技術(shù)人員將理解的,在每個(gè)條目中還可能包括其他屬性。目錄條目中的引用指針指向由操作系統(tǒng)保持的數(shù)據(jù)結(jié)構(gòu)。是該數(shù)據(jù)結(jié)構(gòu)描述了文件系統(tǒng)對(duì)象并指向其在物理存儲(chǔ)介質(zhì)內(nèi)的存儲(chǔ)位置。由操作系統(tǒng)和文件系統(tǒng)來(lái)規(guī)定該數(shù)據(jù)結(jié)構(gòu),并且該數(shù)據(jù)結(jié)構(gòu)使得應(yīng)用和處理可以訪問(wèn)文件系統(tǒng)的數(shù)據(jù)。
      上述的目錄布置和其他數(shù)據(jù)結(jié)構(gòu)在本質(zhì)上是示例性的,而不應(yīng)僅限制于完全相同地與上述描述匹配的文件系統(tǒng)和操作系統(tǒng)。本領(lǐng)域的普通技術(shù)人員容易認(rèn)識(shí)到,實(shí)際上可以使用不同的虛擬文件系統(tǒng)和文件系統(tǒng)結(jié)構(gòu),并且未來(lái)將開(kāi)發(fā)其他虛擬文件系統(tǒng)和文件系統(tǒng)結(jié)構(gòu)。這種文件系統(tǒng)可以具有更少的或者甚至更多的間接引用級(jí),并且可以按等效數(shù)據(jù)結(jié)構(gòu)保持不同的信息。因此,在其最廣泛的意義上說(shuō),本發(fā)明的實(shí)施例涉及按如下方式對(duì)描述文件系統(tǒng)對(duì)象的數(shù)據(jù)結(jié)構(gòu)進(jìn)行組織,即,文件系統(tǒng)可以同時(shí)支持具有不同文件系統(tǒng)實(shí)現(xiàn)的對(duì)象。
      圖10例示了包括兩個(gè)不同錨定點(diǎn)1010、1012的文件的示例性數(shù)據(jù)結(jié)構(gòu)1002。存在到該數(shù)據(jù)結(jié)構(gòu)1002的兩個(gè)不同鏈接1007、1009。第一個(gè)鏈接1007是舊型式目錄1006,并被標(biāo)記為“FileA”,第二個(gè)鏈接1009是新型式目錄1004,并被標(biāo)記為“FileB”。這兩個(gè)目錄1004、1006鏈接到同一對(duì)象,因?yàn)閮蓚€(gè)鏈接都指向同一數(shù)據(jù)結(jié)構(gòu)1002。
      數(shù)據(jù)結(jié)構(gòu)1002包括引用它的各不同類型目錄的錨定點(diǎn)。在圖10的示例性結(jié)構(gòu)中,假設(shè)存在兩個(gè)不同類型的文件系統(tǒng),因此數(shù)據(jù)結(jié)構(gòu)1002可以具有兩個(gè)不同類型的錨定點(diǎn)1010、1012;不過(guò),在另選實(shí)施例中可以具有其他數(shù)量個(gè)可用文件系統(tǒng)類型。各數(shù)據(jù)結(jié)構(gòu)1002可以具有這兩種類型的錨定點(diǎn),但是當(dāng)沒(méi)有合適類型的目錄引用該數(shù)據(jù)結(jié)構(gòu)時(shí),這些錨定點(diǎn)可能是NULL(或某些其他值)。第一個(gè)錨定點(diǎn)1010往后指向舊型式目錄1006,另一錨定點(diǎn)1012指向新型式目錄1004。按此方式,使得操作系統(tǒng)知道兩個(gè)不同的文件系統(tǒng)實(shí)現(xiàn)引用了該文件。
      在使用中,操作系統(tǒng)可能想要確定與具有相對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)1002的文件的鏈接(例如,1007、1009)有關(guān)的信息。在這種情況下,操作系統(tǒng)可能想要唯一的信息,這取決于要在新型式文件系統(tǒng)還是在舊型式文件系統(tǒng)的環(huán)境下使用該信息。因此,操作系統(tǒng)使用錨定點(diǎn)1010、1012來(lái)追溯到合適的型式的目錄中的合適的鏈接(例如,1007、1009)。
      在上述示例性文件系統(tǒng)轉(zhuǎn)換處理的某些實(shí)施例中,一個(gè)假設(shè)是子目錄鏈接到具有相同類型的文件系統(tǒng)實(shí)現(xiàn)的父目錄中;因此,每個(gè)目錄都包括在相同文件系統(tǒng)類型的父目錄內(nèi)的錨定點(diǎn)。此外,存在如下情況子目錄鏈接到可能為不同文件系統(tǒng)實(shí)現(xiàn)的其他引用目錄中。圖11的示例性數(shù)據(jù)結(jié)構(gòu)1102例示了新型式目錄的數(shù)據(jù)結(jié)構(gòu)。具有不同文件系統(tǒng)實(shí)現(xiàn)的兩個(gè)目錄1100、1101引用了該目錄。該數(shù)據(jù)結(jié)構(gòu)1102是其中目錄鏈接到具有不同文件系統(tǒng)實(shí)現(xiàn)的不同父目錄的更一般情況的特定示例。因此,也可以相應(yīng)地對(duì)以下描述進(jìn)行修改,以描述鏈接到具有兩種型式的文件系統(tǒng)實(shí)現(xiàn)的目錄中的舊型式目錄的數(shù)據(jù)結(jié)構(gòu)。
      類似于文件數(shù)據(jù)結(jié)構(gòu)1002,目錄數(shù)據(jù)結(jié)構(gòu)1102包括往回引用合適型式的目錄的兩個(gè)不同的錨定點(diǎn)1106、1108。在許多操作系統(tǒng)和文件系統(tǒng)中,到目錄的鏈接與到文件的鏈接的不同之處的一個(gè)方面是目錄鏈接的多個(gè)屬性中的一個(gè)是“點(diǎn)-點(diǎn)”鏈接。該屬性指向或鏈接到目錄的父目錄。根據(jù)示例性數(shù)據(jù)結(jié)構(gòu)1102,點(diǎn)-點(diǎn)鏈接1110指向相同型式的父目錄新型式目錄1100。從不同型式的目錄1101起始的鏈接1104類似于文件鏈接,因?yàn)樗话c(diǎn)-點(diǎn)鏈接。因此,數(shù)據(jù)結(jié)構(gòu)1102包括各文件系統(tǒng)實(shí)現(xiàn)的錨定點(diǎn)1106、1008,并被從不同實(shí)現(xiàn)型式的引用目錄1101起始的文件型鏈接1104所引用。然而,該數(shù)據(jù)結(jié)構(gòu)被從具有相同型式的實(shí)現(xiàn)的引用目錄1100起始的目錄鏈接所引用。
      在以上示例性文件系統(tǒng)轉(zhuǎn)換處理中,有時(shí)在具有不同類型的父目錄中創(chuàng)建到子目錄的鏈接。例如,參照?qǐng)D9C,創(chuàng)建新型式目錄920,其包括到新型式根912和舊型式DirA 905的鏈接。在對(duì)數(shù)據(jù)結(jié)構(gòu)1102進(jìn)行說(shuō)明時(shí)參照該示例,新型式目錄920鏈接到具有相同實(shí)現(xiàn)類型的父目錄912。到目錄920的鏈接916的名稱對(duì)于文件系統(tǒng)來(lái)說(shuō)是唯一的。創(chuàng)建唯一名稱的一種方式可以是按照新目錄920正在取代的舊型式目錄909的文件ID和可能的生成ID對(duì)新目錄920進(jìn)行命名。這些ID在整個(gè)文件系統(tǒng)上是唯一的,并且可能得到被標(biāo)記為“21837F42”的鏈接916。由于新根目錄912尚未活動(dòng),因此鏈接916對(duì)于用戶和操作系統(tǒng)來(lái)說(shuō)是不可見(jiàn)的。然而,與目錄DirC 920相關(guān)聯(lián)的點(diǎn)-點(diǎn)鏈接指向新型式根912。在DirA 905中還存在引用新型式目錄920的鏈接914。該鏈接914對(duì)于終端用戶來(lái)說(shuō)是可見(jiàn)的,但是它與文件鏈接的類似之處是不存在與該鏈接914相關(guān)聯(lián)的點(diǎn)-點(diǎn)信息。因此,鏈接914與鏈接916在它們的相應(yīng)目錄905和912中是不同結(jié)構(gòu)的條目。在新型式目錄920的數(shù)據(jù)結(jié)構(gòu)內(nèi),到新型式實(shí)現(xiàn)的錨定點(diǎn)往回引用新型式根912,而到舊型式實(shí)現(xiàn)的錨定點(diǎn)往回引用DirA 905。結(jié)果,創(chuàng)建了從舊型式目錄可見(jiàn)的新型式目錄,而且在具有相同文件系統(tǒng)實(shí)現(xiàn)類型的父目錄中同時(shí)正確地實(shí)現(xiàn)了該新型式目錄。
      由于在上述示例性文件系統(tǒng)轉(zhuǎn)換處理中文件系統(tǒng)保持活動(dòng),因此存在如下情況在一個(gè)文件系統(tǒng)實(shí)現(xiàn)的目錄中可能創(chuàng)建了到不同實(shí)現(xiàn)的目錄的鏈接。其中可能會(huì)出現(xiàn)該情況的兩個(gè)特殊情況是在舊型式目錄中創(chuàng)建了新型式目錄,和將舊型式目錄移動(dòng)到已轉(zhuǎn)換的新型式目錄中。利用參照?qǐng)D10和11描述的數(shù)據(jù)結(jié)構(gòu),提供了這樣一種示例性方法,即,通過(guò)該方法,文件轉(zhuǎn)換處理可以將新創(chuàng)建的目錄實(shí)現(xiàn)成可以從相同類型的目錄和不同類型的目錄引用這些新創(chuàng)建的目錄。
      在其中在舊型式目錄中創(chuàng)建新型式目錄的情況下,創(chuàng)建新型式目錄的處理與剛剛參照對(duì)新目錄920的創(chuàng)建描述的處理相同,因此不再重復(fù)描述。然而,為了復(fù)述最終結(jié)果,通過(guò)類似文件的鏈接從舊型式目錄鏈接新型式目錄,還從具有新型式文件系統(tǒng)實(shí)現(xiàn)的隱藏根目錄鏈接新型式目錄。表示新型式目錄的數(shù)據(jù)結(jié)構(gòu)包括與兩個(gè)鏈接和父目錄有關(guān)的信息。
      當(dāng)將舊型式目錄移動(dòng)到新型式文件系統(tǒng)中時(shí),在新型式文件系統(tǒng)中創(chuàng)建引用舊型式目錄的鏈接。在舊型式根目錄中創(chuàng)建引用移動(dòng)后的目錄的另一鏈接。該鏈接使用唯一名稱來(lái)引用移動(dòng)后的目錄。此外,有利地,該鏈接對(duì)于用戶來(lái)說(shuō)是隱藏的,并且包括將舊型式根標(biāo)識(shí)為移動(dòng)后的目錄的父目錄的相關(guān)聯(lián)的點(diǎn)-點(diǎn)信息。因此,新型式目錄中的鏈接是文件型鏈接,而舊型式目錄中的鏈接是具有與其相關(guān)聯(lián)的合適的點(diǎn)-點(diǎn)信息的目錄鏈接。
      權(quán)利要求
      1.一種用于將文件系統(tǒng)從第一類型轉(zhuǎn)換成第二類型的方法,該方法包括以下步驟生成步驟,生成待轉(zhuǎn)換的所述文件系統(tǒng)中的所述第一類型的目錄的列表;和轉(zhuǎn)換步驟,在將所述文件系統(tǒng)保持為活動(dòng)狀態(tài)的同時(shí)將所述列表中的每個(gè)目錄轉(zhuǎn)換成所述第二類型。
      2.根據(jù)權(quán)利要求1所述的方法,還包括以下步驟當(dāng)對(duì)使用所述文件系統(tǒng)的計(jì)算機(jī)系統(tǒng)進(jìn)行初次程序裝入時(shí),順序地啟動(dòng)所述生成和轉(zhuǎn)換步驟。
      3.根據(jù)權(quán)利要求1所述的方法,所述轉(zhuǎn)換步驟還包括以下步驟檢取所述列表中的目錄的標(biāo)識(shí)符;將所述目錄轉(zhuǎn)換成第二類型目錄;和激活所述第二類型目錄。
      4.根據(jù)權(quán)利要求3所述的方法,還包括以下步驟針對(duì)所述列表中的每個(gè)目錄重復(fù)根據(jù)權(quán)利要求3所述的步驟。
      5.根據(jù)權(quán)利要求1所述的方法,其中,所述列表表示所述文件系統(tǒng)的從根目錄往下到最遠(yuǎn)葉節(jié)點(diǎn)的自頂向下圖。
      6.根據(jù)權(quán)利要求5所述的方法,其中,按與所述列表的順序相反的順序針對(duì)每個(gè)目錄執(zhí)行轉(zhuǎn)換每個(gè)目錄的所述轉(zhuǎn)換步驟。
      7.根據(jù)權(quán)利要求1所述的方法,其中,所述生成步驟還包括以下步驟a)在所述列表中添加根目錄作為當(dāng)前條目;b)對(duì)所述列表中的所述當(dāng)前條目的子目錄進(jìn)行識(shí)別;c)將所識(shí)別出的子目錄附加到所述列表;d)針對(duì)所述當(dāng)前條目?jī)?nèi)的每個(gè)子目錄重復(fù)步驟b)和c);e)如果在所述列表中存在緊接著所述當(dāng)前條目的下一目錄,則將所述列表中的所述下一目錄變成當(dāng)前條目;以及f)重復(fù)步驟b)到e),直到在所述列表中不存在下一目錄為止。
      8.根據(jù)權(quán)利要求1所述的方法,還包括以下步驟一旦某一特定目錄在所述列表中,就將所述特定目錄標(biāo)記為正在經(jīng)受轉(zhuǎn)換處理。
      9.根據(jù)權(quán)利要求8所述的方法,其中,將添加到所述特定目錄的新對(duì)象附加在所述特定目錄的末端處。
      10.根據(jù)權(quán)利要求1所述的方法,其中,所述轉(zhuǎn)換步驟還包括以下步驟a)創(chuàng)建第二類型根目錄;b)創(chuàng)建與所述列表中的特定目錄相對(duì)應(yīng)的第二類型目錄;c)在所述第二類型目錄中針對(duì)所述特定目錄的每個(gè)子對(duì)象生成相應(yīng)的鏈接;d)激活所述第二類型目錄;以及e)從所述列表移除所述特定目錄;f)刪除第一類型目錄。
      11.根據(jù)權(quán)利要求10所述的方法,還包括以下步驟創(chuàng)建與所述第二類型目錄相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu),所述數(shù)據(jù)結(jié)構(gòu)包括與所述目錄的父目錄相關(guān)聯(lián)的第一錨定點(diǎn),和與所述第二類型目錄的父目錄相關(guān)聯(lián)的第二錨定點(diǎn)。
      12.根據(jù)權(quán)利要求1所述的方法,還包括以下步驟對(duì)暫停所述轉(zhuǎn)換步驟的情況進(jìn)行檢測(cè);和響應(yīng)于所述情況,暫停所述轉(zhuǎn)換步驟。
      13.根據(jù)權(quán)利要求12所述的方法,其中,所述情況是以下情況中的一個(gè)在所述文件系統(tǒng)上的產(chǎn)品安裝;涉及所述文件系統(tǒng)的恢復(fù)操作;以及涉及所述文件系統(tǒng)的備份操作。
      14.根據(jù)權(quán)利要求1所述的方法,還包括以下步驟在對(duì)特定目錄進(jìn)行轉(zhuǎn)換之前,確定所述目錄的使用率;和基于所述使用率,推遲對(duì)所述特定目錄的轉(zhuǎn)換。
      15.根據(jù)權(quán)利要求1所述的方法,還包括以下步驟對(duì)停止所述轉(zhuǎn)換步驟的情況進(jìn)行檢測(cè);和響應(yīng)于所述情況,停止所述轉(zhuǎn)換步驟。
      16.根據(jù)權(quán)利要求15所述的方法,其中,所述情況是以下情況中的一個(gè)系統(tǒng)崩潰;在所述文件系統(tǒng)內(nèi)遇到被破壞了的對(duì)象;以及可用存儲(chǔ)裝置不足。
      17.根據(jù)權(quán)利要求15所述的方法,其中,當(dāng)隨后進(jìn)行涉及所述文件系統(tǒng)的初始程序裝入時(shí),重新啟動(dòng)所述轉(zhuǎn)換步驟。
      18.根據(jù)權(quán)利要求3所述的方法,其中,所述激活步驟還包括以下步驟對(duì)與所述目錄相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)進(jìn)行識(shí)別;將所述數(shù)據(jù)結(jié)構(gòu)改變?yōu)榕c所述第二類型目錄相關(guān)聯(lián);以及移除所述目錄。
      19.根據(jù)權(quán)利要求18所述的方法,還包括以下步驟在執(zhí)行所述改變步驟的同時(shí),施加對(duì)第一數(shù)據(jù)結(jié)構(gòu)的鎖定。
      20.一種用于將文件系統(tǒng)從第一類型轉(zhuǎn)換成第二類型的方法,該方法包括以下步驟執(zhí)行步驟,在將所述文件系統(tǒng)保持為活動(dòng)狀態(tài)的同時(shí),執(zhí)行轉(zhuǎn)換處理,以將所述文件系統(tǒng)中的所述第一類型的每個(gè)目錄轉(zhuǎn)換成所述第二類型;和結(jié)束步驟,在已將所述文件系統(tǒng)中的所述第一類型的每個(gè)目錄轉(zhuǎn)換成所述第二類型時(shí),結(jié)束所述轉(zhuǎn)換處理。
      21.根據(jù)權(quán)利要求20所述的方法,還包括以下步驟當(dāng)對(duì)使用所述文件系統(tǒng)的計(jì)算機(jī)系統(tǒng)進(jìn)行初次程序裝入時(shí),啟動(dòng)所述執(zhí)行步驟。
      22.根據(jù)權(quán)利要求20所述的方法,還包括以下步驟生成待轉(zhuǎn)換的所述文件系統(tǒng)中的所述第一類型的目錄的列表。
      23.根據(jù)權(quán)利要求22所述的方法,其中,對(duì)每個(gè)目錄進(jìn)行轉(zhuǎn)換的步驟包括以下步驟檢取所述列表中的一目錄的標(biāo)識(shí)符;將所述目錄轉(zhuǎn)換成第二類型目錄;以及激活所述第二類型目錄。
      24.一種程序產(chǎn)品,其包括程序代碼,其被配置成在執(zhí)行時(shí)生成待轉(zhuǎn)換的文件系統(tǒng)中的第一類型的目錄的列表;和在將所述文件系統(tǒng)保持為活動(dòng)狀態(tài)的同時(shí),將所述列表中的每個(gè)目錄轉(zhuǎn)換成第二類型;和信號(hào)承載介質(zhì),其承載所述程序代碼。
      25.一種設(shè)備,其包括至少一個(gè)處理器;與所述至少一個(gè)處理器相耦合的存儲(chǔ)器;以及程序代碼,其駐留在存儲(chǔ)器中并由所述至少一個(gè)處理器來(lái)執(zhí)行,所述程序代碼被配置成在將文件系統(tǒng)保持為活動(dòng)狀態(tài)的同時(shí),啟動(dòng)轉(zhuǎn)換處理,以將所述文件系統(tǒng)中的所述第一類型的每個(gè)目錄轉(zhuǎn)換成所述第二類型;并且在已將所述文件系統(tǒng)中的所述第一類型的每個(gè)目錄轉(zhuǎn)換成所述第二類型時(shí),結(jié)束所述轉(zhuǎn)換處理。
      26.根據(jù)權(quán)利要求25所述的設(shè)備,其中,所述程序代碼還被配置成非遞歸地建立所述第一類型的目錄的列表。
      27.根據(jù)權(quán)利要求25所述的設(shè)備,其中,所述程序代碼還被配置成對(duì)正在被轉(zhuǎn)換的特定目錄進(jìn)行修改,以使得將所述特定目錄中的任何新條目附加在所述特定目錄的末端。
      28.根據(jù)權(quán)利要求25所述的設(shè)備,其中,所述程序代碼還被配置成如果檢測(cè)到正在對(duì)所述文件系統(tǒng)執(zhí)行預(yù)定操作,則暫停所述轉(zhuǎn)換處理。
      29.根據(jù)權(quán)利要求25所述的設(shè)備,其中,所述程序代碼還被配置成針對(duì)正在被轉(zhuǎn)換的特定目錄,保持具有所述第一類型的第一版本和具有所述第二類型的第二版本;并且在使所述第一版本去激活的同時(shí)激活所述第二版本。
      30.根據(jù)權(quán)利要求25所述的設(shè)備,其中,所述程序代碼還被配置成在檢測(cè)到異常系統(tǒng)狀況的特定點(diǎn),停止所述轉(zhuǎn)換處理;并且在所述特定點(diǎn)重新啟動(dòng)所述轉(zhuǎn)換處理。
      31.根據(jù)權(quán)利要求25所述的設(shè)備,其中,所述程序代碼還被配置成對(duì)于正在被轉(zhuǎn)換的特定目錄,確定對(duì)所述特定目錄的使用是否超過(guò)了預(yù)定量;并且在對(duì)所述特定目錄的使用超過(guò)了所述預(yù)定量時(shí),推遲對(duì)所述特定目錄的轉(zhuǎn)換。
      32.根據(jù)權(quán)利要求31所述的設(shè)備,其中,所述程序代碼還被配置成在對(duì)所述特定目錄的使用超過(guò)了所述預(yù)定量時(shí),對(duì)與所述特定目錄不同的另一目錄進(jìn)行轉(zhuǎn)換。
      33.根據(jù)權(quán)利要求25所述的設(shè)備,其中,所述程序代碼還被配置成對(duì)于已被轉(zhuǎn)換了的特定目錄,將所述特定目錄轉(zhuǎn)換回所述第一類型。
      34.根據(jù)權(quán)利要求25所述的設(shè)備,其中,所述程序代碼還被配置成按可調(diào)優(yōu)先級(jí)執(zhí)行。
      全文摘要
      一種在文件系統(tǒng)保持活動(dòng)和完全可訪問(wèn)的同時(shí)將文件系統(tǒng)從一種實(shí)現(xiàn)類型轉(zhuǎn)換成另一類型的文件系統(tǒng)轉(zhuǎn)換處理。該轉(zhuǎn)換處理建立舊文件系統(tǒng)類型的文件系統(tǒng)中的目錄的列表,然后對(duì)每個(gè)目錄進(jìn)行轉(zhuǎn)換,直到轉(zhuǎn)換了整個(gè)文件系統(tǒng)。不是關(guān)閉文件系統(tǒng)以執(zhí)行轉(zhuǎn)換,而是轉(zhuǎn)換處理可以作為不干擾正常文件系統(tǒng)操作的后臺(tái)線程運(yùn)行。
      文檔編號(hào)G06F17/30GK1910579SQ200580002258
      公開(kāi)日2007年2月7日 申請(qǐng)日期2005年1月21日 優(yōu)先權(quán)日2004年2月12日
      發(fā)明者丹尼斯·S.·德洛梅, 瑪格麗特·R.·芬龍, 羅伯特·T.·金托特, 艾倫·L.·利弗林, 托馬斯·M.·麥克布里德, 邁克爾·J.·奧伯霍爾特澤, 杰弗里·J.·派克, 理查德·M.·瑟伊斯, 杰里·L.·范·伯格 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1