專利名稱:同一磁盤分區(qū)上的多個文件系統(tǒng)接口訪問調(diào)節(jié)裝置和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種同一磁盤分區(qū)上的多個文件系統(tǒng)接口訪問調(diào)節(jié)裝置和方法。
背景技術(shù):
文件系統(tǒng)是依附于媒體存儲介質(zhì)的一種文件管理和文件存儲的軟件系統(tǒng)。在實際的系統(tǒng)中,一般都處于操作系統(tǒng)和應(yīng)用程序之間,是應(yīng)用程序?qū)崿F(xiàn)各類文件操作的基礎(chǔ),也是溝通抽象的文件和實際的硬件存儲單元的橋梁。在當(dāng)前幾乎所有的計算機(jī)系統(tǒng)中,文件系統(tǒng)被廣泛應(yīng)用。只要計算機(jī)系統(tǒng)安裝了操作系統(tǒng),那么在該系統(tǒng)上必然就同樣安裝有文件系統(tǒng)。在一般的系統(tǒng)中,文件系統(tǒng)與磁盤分區(qū)是一一對應(yīng)的,即每個分區(qū)都有自己的文件系統(tǒng),所有這個分區(qū)上的數(shù)據(jù)內(nèi)容都是按照該文件系統(tǒng)的組織方式和存儲方式來處理。 而文件系統(tǒng)對上則也是提供一個固定的接口,如標(biāo)準(zhǔn)系統(tǒng)調(diào)用接口,以便上層調(diào)用。然而,在某些系統(tǒng)中,要求存在一個分區(qū)多種文件系統(tǒng)的機(jī)制,在這里,所謂分區(qū)是指采用相同的數(shù)據(jù)組織方式的一段存儲區(qū)域集合,在物理和邏輯上,該存儲區(qū)域都是連續(xù)的。該系統(tǒng)有如下特征1.多個文件系統(tǒng)在存儲介質(zhì)上存儲數(shù)據(jù)的格式一致,但其實現(xiàn)方式不一致,特別是它們對上層提供的接口是不一致的,且這兩組接口之間具備不可替代性;2.多個文件系統(tǒng)能訪問同一地址的數(shù)據(jù)內(nèi)容;3.多個文件所提供的對上層的接口在層次關(guān)系上也是不一樣的,存在一個文件系統(tǒng)的接口在操作系統(tǒng)用戶空間,而另一個文件系統(tǒng)的接口在操作系統(tǒng)內(nèi)核空間的情況。例如,在如圖1所示的系統(tǒng)中,分別存在著UDF 1文件系統(tǒng)101和UDF2文件系統(tǒng) 102。盡管它們所訪問的最終磁盤分區(qū)103和調(diào)用的驅(qū)動程序104是相同的,但各自針對不同的應(yīng)用,UDF2文件系統(tǒng)接口最終提供內(nèi)核的系統(tǒng)調(diào)用接口 106,處于內(nèi)核空間中;而UDFl 文件系統(tǒng)接口則提供應(yīng)用層API105,該API處于用戶空間,訪問磁盤分區(qū),同時還能通過 UDFl文件系統(tǒng)接口 105訪問磁盤分區(qū),且該接口與系統(tǒng)調(diào)用接口 106是不一致的。上述系統(tǒng)在只有一個文件系統(tǒng)被使用,而另一個在同一時刻并不投入使用時,是可以正確執(zhí)行的。但如果在系統(tǒng)中出現(xiàn)多個文件系統(tǒng)同時被調(diào)用的情況,那么系統(tǒng)將會產(chǎn)生沖突。當(dāng)兩個不同的文件系統(tǒng)同時訪問同一物理磁盤塊時,后續(xù)執(zhí)行的文件訪問操作將影響前面的磁盤操作結(jié)果。例如,對于同一個地址的磁盤塊,后續(xù)的寫入操作覆蓋之前已經(jīng)寫入的數(shù)據(jù)內(nèi)容,因而使得前面的寫入數(shù)據(jù)丟失,從而破壞了文件操作的執(zhí)行結(jié)果。本發(fā)明目的在于解決在一個分區(qū)的多個文件系統(tǒng)能共同使用的技術(shù)障礙,特別是針對多文件系統(tǒng)寫沖突的解決方法。
發(fā)明內(nèi)容
本發(fā)明的目的在于,針對多個文件系統(tǒng)共用一個分區(qū)的特定應(yīng)用場合,解決這多個文件系統(tǒng)同時工作會產(chǎn)生的沖突問題,提供一種同一磁盤分區(qū)上的多個文件系統(tǒng)接口訪問調(diào)節(jié)裝置,所述多個文件系統(tǒng)包括一個第一文件系統(tǒng),為位于內(nèi)核層的文件系統(tǒng);和至少一個第二文件系統(tǒng),為位于用戶層的文件系統(tǒng),所述調(diào)節(jié)裝置具有同步模塊,用于協(xié)調(diào)所述磁盤分區(qū)上的各個文件系統(tǒng)的操作。根據(jù)本發(fā)明的另 一實施方式的同一磁盤分區(qū)上的多個文件系統(tǒng)接口訪問調(diào)節(jié)裝置,所述多個文件系統(tǒng)中的任意一個文件系統(tǒng)被使用時,所述同步模塊進(jìn)行如下操作檢測步驟,當(dāng)有程序執(zhí)行時同步模塊檢測計算機(jī)系統(tǒng)是否處于寫磁盤模式;允許步驟,所述計算機(jī)系統(tǒng)為非寫磁盤模式時允許所述程序執(zhí)行;保護(hù)步驟,如果被執(zhí)行的所述程序包括寫操作,則將所述計算機(jī)系統(tǒng)置為寫磁盤模式;同步步驟,在執(zhí)行包括寫操作的所述程序后,同步模塊對所述磁盤分區(qū)上的所述多個文件系統(tǒng)中的其他文件系統(tǒng)進(jìn)行更新。根據(jù)本發(fā)明的另一實施方式的同一磁盤分區(qū)上的多個文件系統(tǒng)接口訪問調(diào)節(jié)裝置,所述同步模塊為文件同步模塊,且位于所述磁盤分區(qū)上的各個文件系統(tǒng)的上層,所述文件同步模塊用于協(xié)調(diào)所述磁盤分區(qū)上的各個文件系統(tǒng)對同一文件的操作。根據(jù)本發(fā)明的另一實施方式的同一磁盤分區(qū)上的多個文件系統(tǒng)接口訪問調(diào)節(jié)裝置,所述同步模塊為磁盤訪問橋接模塊,且位于所述磁盤分區(qū)上的各個文件系統(tǒng)的下層,所述磁盤訪問橋接模塊用于協(xié)調(diào)所述磁盤分區(qū)上的各個文件系統(tǒng)對同一磁盤塊的操作。根據(jù)本發(fā)明的另一實施方式的同一磁盤分區(qū)上的多個文件系統(tǒng)接口訪問調(diào)節(jié)裝置,所述第一文件系統(tǒng)為UDF文件系統(tǒng),所述第二文件系統(tǒng)為iVDR文件系統(tǒng)。本發(fā)明的目的還在于提供一種同一磁盤分區(qū)上的多個文件系統(tǒng)接口訪問方法,所述多個文件系統(tǒng)包括一個第一文件系統(tǒng),為位于內(nèi)核層的文件系統(tǒng);和至少一個第二文件系統(tǒng),為位于用戶層的文件系統(tǒng),所述多個文件系統(tǒng)之間具有同步模塊,所述多個文件系統(tǒng)中的任意一個文件系統(tǒng)被使用時,所述方法包括步驟檢測步驟,當(dāng)有程序執(zhí)行時同步模塊檢測計算機(jī)系統(tǒng)是否處于寫磁盤模式;允許步驟,所述計算機(jī)系統(tǒng)為非寫磁盤模式時允許所述程序執(zhí)行;保護(hù)步驟,如果被執(zhí)行的所述程序包括寫操作,則將所述計算機(jī)系統(tǒng)置為寫磁盤模式;同步步驟,在執(zhí)行包括寫操作的所述程序后,同步模塊對所述磁盤分區(qū)上的所述多個文件系統(tǒng)中的其他文件系統(tǒng)進(jìn)行更新。根據(jù)本發(fā)明的另一實施方式的同一磁盤分區(qū)上的多個文件系統(tǒng)接口訪問方法,所述同步模塊為文件同步模塊,且位于所述磁盤分區(qū)上的各個文件系統(tǒng)的上層,所述文件同步模塊用于協(xié)調(diào)所述磁盤分區(qū)上的各個文件系統(tǒng)對同一文件的操作。根據(jù)本發(fā)明的另一實施方式的同一磁盤分區(qū)上的多個文件系統(tǒng)接口訪問方法,所述同步模塊為磁盤訪問橋接模塊,且位于所述磁盤分區(qū)上的各個文件系統(tǒng)的下層,所述磁盤訪問橋接模塊用于協(xié)調(diào)所述磁盤分區(qū)上的各個文件系統(tǒng)對同一磁盤塊的操作。根據(jù)本發(fā)明的另一實施方式的同一磁盤分區(qū)上的多個文件系統(tǒng)接口訪問方法,所述第一文件系統(tǒng)為UDF文件系統(tǒng),所述第二文件系統(tǒng)為iVDR文件系統(tǒng)。根據(jù)本發(fā)明所述的同一磁盤分區(qū)上的多個文件系統(tǒng)接口訪問裝置和方法,可以保護(hù)正在進(jìn)行磁盤寫入的文件操作,使得在此期間的其他可能破壞文件內(nèi)容的磁盤操作不能被執(zhí)行,從而保證了對文件對應(yīng)的磁盤空間的獨占性,由于所有的文件操作都是通過同步模塊進(jìn)行同步的,保證了多文件系統(tǒng)下的文件訪問是同步的,從而避免了數(shù)據(jù)沖突的產(chǎn)生。 本發(fā)明有效地解決了多個文件系統(tǒng)同時工作可能產(chǎn)生的數(shù)據(jù)沖突問題。
圖1是現(xiàn)有技術(shù)中的多文件系統(tǒng)共享同一磁盤分區(qū)的結(jié)構(gòu)示意圖。圖2是本發(fā)明所涉及的第1實施例的系統(tǒng)結(jié)構(gòu)示意圖。圖3是本發(fā)明所涉及的第1實施例的多文件系統(tǒng)中實現(xiàn)文件操作調(diào)用的工作流程圖。圖4是本發(fā)明所涉及的第1實施例的實際文件寫操作的示意圖。圖5是本發(fā)明所涉及的第2實施例的系統(tǒng)結(jié)構(gòu)示意圖。圖6是本發(fā)明所涉及的第2實施例的多文件系統(tǒng)中實現(xiàn)文件操作調(diào)用的工作流程圖。圖7是本發(fā)明所涉及的第2實施例的實際文件寫操作的示意圖。圖8是本發(fā)明所涉及的第3實施例所述系統(tǒng)的結(jié)構(gòu)示意圖。
具體實施例方式以下參照
本發(fā)明的第1個實施例。圖2是本實施例所述系統(tǒng)的結(jié)構(gòu)示意圖。圖示的最底層為磁盤分區(qū)207,它是整個物理磁盤介質(zhì)的一部分空間。基于該磁盤分區(qū)之上是磁盤設(shè)備驅(qū)動206,設(shè)備驅(qū)動層的作用是通過指令方式驅(qū)動物理磁盤工作,使得磁盤可以正確地實現(xiàn)讀,寫,擦除等操作。文件系統(tǒng)層基于磁盤驅(qū)動層之上,利用磁盤驅(qū)動層提供的磁盤訪問接口來操作底層磁盤。文件系統(tǒng)層的作用是將具有抽象意義的文件轉(zhuǎn)換為具體的按照特定方式組織的磁盤數(shù)據(jù)。在本文所述的系統(tǒng)中,存在2個不同的文件系統(tǒng)。 這里所謂的不同主要體現(xiàn)在1.文件系統(tǒng)對上提供的接口 API不同。2.文件系統(tǒng)內(nèi)部處理程序所在的層次不同。在圖2所示的系統(tǒng)中,左側(cè)文件系統(tǒng)1模塊204是處于用戶層的文件系統(tǒng),它通過磁盤驅(qū)動提供的接口實現(xiàn)磁盤訪問,對上則提供應(yīng)用層的API供上層應(yīng)用程序調(diào)用;右側(cè)文件系統(tǒng)2模塊205是處于內(nèi)核層的文件系統(tǒng),它直接利用了磁盤驅(qū)動提供的內(nèi)部接口實現(xiàn)磁盤訪問,而對上則是通過標(biāo)準(zhǔn)的系統(tǒng)調(diào)用,向用戶層的應(yīng)用程序提供文件操作,從其結(jié)構(gòu)上看,文件系統(tǒng)2模塊的上下接口和具體實現(xiàn)都在內(nèi)核層完成?;趦蓚€文件系統(tǒng)之上,是用于協(xié)調(diào)文件操作的調(diào)節(jié)裝置,其具有文件同步模塊 203。此外,該文件同步模塊緊貼文件系統(tǒng)層之上。同時,在該系統(tǒng)中,文件同步模塊203向上提供了多組接口函數(shù),每組接口函數(shù)的集合能獨立完成所有的文件操作,而各組接口函數(shù)所完成的功能則是相同的,或者是類似的。在文件系統(tǒng)之上是應(yīng)用層,由于原有的多文件系統(tǒng)支持多種接口的文件調(diào)用。因此,加入文件同步模塊203的系統(tǒng)同樣支持多種文件接口的文件調(diào)用。即
1.應(yīng)用1模塊201通過文件同步模塊203的接口函數(shù)集間接調(diào)用文件系統(tǒng)1進(jìn)行操作。所有與應(yīng)用1相關(guān)的文件操作最終必然落到文件系統(tǒng)1模塊中,而不會落到其他文件系統(tǒng)模塊,如文件系統(tǒng)2中。2.應(yīng)用2模塊202通過文件同步模塊203的接口函數(shù)集間接調(diào)用文件系統(tǒng)2進(jìn)行操作。所有與應(yīng)用2相關(guān)的文件操作最終必然落到文件系統(tǒng)2模塊中,而不會落到其他文件系統(tǒng)模塊中。以下說明文件同步模塊203的具體工作過程以應(yīng)用1調(diào)用文件操作301為例,首先文件訪問要求從應(yīng)用1中產(chǎn)生,并且這個訪問請求通過文件同步模塊203提供的接口函數(shù)集傳入文件同步模塊內(nèi)部302 ;文件同步模塊在收到來自應(yīng)用1的訪問請求時,檢查狀態(tài)標(biāo)志“正在寫入”是否為真303(檢測步驟), 該狀態(tài)標(biāo)志代表了來自于其他應(yīng)用接口函數(shù)正處于磁盤寫入操作中,這里所述的磁盤寫入操作不僅僅只文件寫操作,同時也包括文件同步,目錄創(chuàng)建等與磁盤數(shù)據(jù)寫入有關(guān)的操作。 如果存在磁盤寫入操作,那么程序直接返回,其返回值代表“磁盤忙碌”;如果當(dāng)前沒有來自于其他文件操作接口函數(shù)的磁盤寫入操作,那么磁盤操作請求被傳遞到文件系統(tǒng)1模塊中,進(jìn)行實際的文件操作(允許步驟);但在磁盤操作請求傳遞之前,文件同步模塊203先進(jìn)行文件訪問類型檢查304 ;如果來自應(yīng)用1的文件訪問是一個磁盤讀取類型的操作306, 那么文件同步模塊內(nèi)部203不進(jìn)行任何其他操作,直接將訪問請求及其參數(shù)傳遞到實際文件系統(tǒng)1上,文件系統(tǒng)1在通過內(nèi)部處理完成實際文件讀相關(guān)操作308后返回至文件同步模塊203,文件同步模塊203不經(jīng)處理的再次將該返回值返回到上一層的應(yīng)用1的調(diào)用中, 以此,完成了整個文件訪問操作;如果來自本次應(yīng)用1的文件訪問是一個磁盤寫入類型的操作(包括同時進(jìn)行讀取和寫入的磁盤操作),那么文件同步模塊203內(nèi)部將設(shè)置一個“正在寫入”的狀態(tài)標(biāo)志305,用以阻止其他應(yīng)用的文件操作函數(shù)在此階段的非法操作(保護(hù)步驟),通過該狀態(tài)標(biāo)志,其他文件操作函數(shù)在此期間的訪問將返回“磁盤忙碌”,在設(shè)置標(biāo)志位后,文件同步模塊將繼續(xù)調(diào)用實際文件操作307,該操作同樣會落到文件系統(tǒng)1模塊提供的文件操作中,并且執(zhí)行實際的與磁盤寫入相關(guān)的操作308,在執(zhí)行完畢后返回,返回值再次回到文件同步模塊中,此時,文件同步模塊并不直接將該值返回上一層應(yīng)用層,而是執(zhí)行一個額外的操作——磁盤同步309,所謂磁盤同步操作是指將內(nèi)存中磁盤的鏡像數(shù)據(jù)進(jìn)行更新,使得內(nèi)存中與磁盤相對應(yīng)的數(shù)據(jù)是一致的(同步步驟)。在磁盤同步操作執(zhí)行完 畢后,模塊將前述返回值返回上一層,從而完成本次寫操作。在上述過程中,文件同步模塊對應(yīng)文件處理本身是透明的,即,在傳遞應(yīng)用層數(shù)據(jù)不對數(shù)據(jù)本身做任何處理,即使實際傳遞的數(shù)據(jù)發(fā)生了錯誤,也不會影響傳遞本身。以上描述了應(yīng)用程序從應(yīng)用1發(fā)起的文件操作的執(zhí)行流程。對于由應(yīng)用2發(fā)起的文件操作過程,其處理的方式完全相同,只是文件訪問的數(shù)據(jù)落在了文件系統(tǒng)2中。以實際的對文件filel. txt的寫訪問為例,圖4顯示了 filel. txt在實際系統(tǒng)的存儲情況,該系統(tǒng)存在2個共享同一磁盤分區(qū)的文件系統(tǒng)iVDR_FS (405)和UDF (407),其中, iVDR_FS 為日立為專有的 iVDR(Information of Versatile Disk for Removable usage) 硬盤所開發(fā)的文件系統(tǒng),它位于整個系統(tǒng)的用戶空間,通過用戶層的應(yīng)用程序接口供上層應(yīng)用調(diào)用;而UDF為統(tǒng)一光盤格式(Universal Disc Format),廣泛應(yīng)用于一般的光盤文件系統(tǒng)。從圖中可以看到,文件filel. txt在磁盤409的分區(qū)410中占用了一段位置固定的地址空間411。所有對filel. txt的操作在磁盤上反映為對該段地址空間的操作。文件系統(tǒng)通過ATA(Advanced Technology Attachment)指令系統(tǒng)訪問磁盤,而該文件在不同的文件系統(tǒng)中有不同的鏡像。圖中,在文件系統(tǒng)iVDR_FS(404)中存在著filel. txt內(nèi)存鏡像405, 而在文件系統(tǒng)UDF (406)中同樣存在著filel. txt內(nèi)存鏡像407,且這2個filel. txt鏡像是完全獨立的。當(dāng)應(yīng)用1在進(jìn)行寫操作時(401),應(yīng)用2同時請求對filel. txt進(jìn)行寫操作(402),此時,在文件同步模塊403內(nèi)部的狀態(tài)檢查303中,因為狀態(tài)標(biāo)志“正在寫入”已經(jīng)置位,因此應(yīng)用2的寫操作請求被返回“磁盤忙碌”。而應(yīng)用1在執(zhí)行了正常的寫入操作后, 出現(xiàn)iVDR_FS文件系統(tǒng)的filel. txt (405)與實際磁盤空間411狀態(tài)一致,而UDF文件系統(tǒng)的filel. txt (407)與實際磁盤空間411狀態(tài)不一致的情況,此時,文件同步模塊403執(zhí)行圖3中的磁盤同步更新309,用實際磁盤空間的數(shù)據(jù)來更新UDF文件系統(tǒng)中的filel. txt, 經(jīng)過更新后的filel. txt文件同樣保持了與磁盤空間對應(yīng)數(shù)據(jù)411的一致性。在執(zhí)行完所有上述操作后,應(yīng)用1從文件同步模塊返回,從而完成了應(yīng)用1對filel. txt的寫操作。此時,應(yīng)用2再次調(diào)用寫filel. txt操作,由于此時狀態(tài)標(biāo)志“正在寫入”已經(jīng)被清除,因此可以繼續(xù)向下執(zhí)行,在實現(xiàn)了通過UDF寫filel. txt操作后,同樣會有文件同步模塊403更新 iVDR_FS文件系統(tǒng)的filel. txt文件數(shù)據(jù),并在更新完畢后從文件同步模塊中返回應(yīng)用2, 從而完成了應(yīng)用1和應(yīng)用2對相同文件的寫訪問操作通過本實施例的文件同步模塊,可以在應(yīng)用層避免來自2個文件系統(tǒng)的應(yīng)用程序在同時訪問該分區(qū)時產(chǎn)生沖突,從而提供了一個穩(wěn)定的多文件系統(tǒng)共享同一分區(qū)的工作方式。以下參照
本發(fā)明的第2個實施例。圖5是本實施例所述系統(tǒng)的結(jié)構(gòu)示意圖。相比第1實施例的系統(tǒng)示意圖,主要是用于實現(xiàn)多個文件系統(tǒng)訪問調(diào)節(jié)的同步模塊在系統(tǒng)中的位置發(fā)生了變化。圖示的最底層為磁盤分區(qū)507,該磁盤分區(qū)上層即為磁盤設(shè)備驅(qū)動506,而磁盤設(shè)備驅(qū)動上面是是用于協(xié)調(diào)文件操作的調(diào)節(jié)裝置,其具有磁盤訪問橋接模塊505。在磁盤訪問橋接模塊505之上是多個隸屬于不同層次,提供不同接口的文件系統(tǒng)503,504,在每個不同的文件系統(tǒng)之上,則是根據(jù)對應(yīng)文件系統(tǒng)的接口定制的應(yīng)用程序501,502。這里所述的磁盤訪問橋接模塊505處于內(nèi)核層,其內(nèi)部對應(yīng)的是內(nèi)核操作,并且,根據(jù)其系統(tǒng)架構(gòu),該模塊對應(yīng)的都是磁盤操作,而并不關(guān)心文件本身。磁盤訪問橋接模塊的上層接口以實際的磁盤塊地址和占用的磁盤空間為依據(jù)進(jìn)行操作。以下說明系統(tǒng)中磁盤訪問橋接模塊505的具體工作過程以應(yīng)用1的文件操作為例,首先文件訪問要求從應(yīng)用1中產(chǎn)生(601),通過文件系統(tǒng)1的接口調(diào)用實際的文件操作,在文件系統(tǒng)1中,對應(yīng)的文件操作被轉(zhuǎn)換成更加底層的磁盤訪問操作602,對文件的讀寫,在文件系統(tǒng)中轉(zhuǎn)化為對具體的磁盤地址的讀寫操作,即磁盤操作指令;磁盤操作指令調(diào)用來自磁盤訪問橋接模塊505的內(nèi)部函數(shù)610,實現(xiàn)磁盤同步管理,具體包括磁盤訪問橋接模塊505首先檢查內(nèi)部的磁盤正在寫狀態(tài)標(biāo)志603 (檢測步驟),如果對應(yīng)磁盤正處于寫入操作,那么程序直接返回“磁盤忙碌”;如果當(dāng)前沒有來自于文件系統(tǒng)的磁盤寫入操作,那么實際的磁盤操作指令被傳遞到磁盤驅(qū)動中,從而實現(xiàn)真正的磁盤操作(允許步驟)。但是,在實際磁盤操作指令被傳遞前,磁盤訪問橋接模塊還作了如下處理磁盤訪問橋接模塊505判斷磁盤操作指令的訪問類型604 如果來自本次應(yīng)用1 的文件訪問是一個磁盤讀取類型的操作605,那么磁盤訪問橋接模塊505內(nèi)部不進(jìn)行任何其他操作,直接將訪問指令及其參數(shù)傳遞給磁盤驅(qū)動,調(diào)用完成后,來自磁盤驅(qū)動的返回值也將被透明的向上傳遞,從而完成了整個文件讀訪問;
如果來自本次應(yīng)用1的文件 訪問是一個磁盤寫入類型的操作,那么磁盤訪問橋接模塊505內(nèi)部將設(shè)置一個“正在寫入”的狀態(tài)標(biāo)志606,用以阻止其他磁盤訪問指令在該階段訪問磁盤(保護(hù)步驟),在設(shè)置標(biāo)志位后,磁盤訪問橋接模塊505將調(diào)用磁盤驅(qū)動程序 607,通過磁盤驅(qū)動訪問磁盤分區(qū),并且執(zhí)行實際的與磁盤寫入操作608,在執(zhí)行完畢后返回,返回值再次回到磁盤訪問橋接模塊505內(nèi)部,此時,磁盤訪問橋接模塊505并不直接將返回值返回上層文件系統(tǒng),而是先執(zhí)行磁盤同步更新609,即將本地寫入操作對應(yīng)的各文件系統(tǒng)的內(nèi)存鏡像重新更新,使得內(nèi)存與磁盤中相應(yīng)地址的這部分?jǐn)?shù)據(jù)保持一致(同步步驟)。在該同步操作執(zhí)行完畢后,磁盤訪問橋接模塊505將前述返回值返回上一層,從而完成本次文件寫操作。以上描述了應(yīng)用程序從應(yīng)用1發(fā)起的文件操作的執(zhí)行流程。對于由應(yīng)用2發(fā)起的文件操作過程,其處理的方式是完全相同的。圖7示例了對通過多個文件系統(tǒng)同時對文件file2. txt的實際寫訪問。如圖所示, 系統(tǒng)存在2個共享同一磁盤分區(qū)711的文件系統(tǒng)iVDRFS(405)和UDF(407),其中,iVDR FS 為日立為專有的 iVDR(Informationof Versatile Disk for Removable usage)硬盤所開發(fā)的文件系統(tǒng),它位于整個系統(tǒng)的用戶空間,通過用戶層的應(yīng)用程序接口供上層應(yīng)用調(diào)用; 而UDF為統(tǒng)一光盤格式(Universal Disc Format),廣泛應(yīng)用于一般的光盤文件系統(tǒng)。文件file2. txt在磁盤709的分區(qū)710中占用了一段特定地址的空間711。所有對file2. txt的操作最終都通過文件系統(tǒng)轉(zhuǎn)化為對該分區(qū)的此段空間的操作。文件file2. txt在不同的文件系統(tǒng)中存在不同的鏡像。圖7中,在文件系統(tǒng)iVDR_FS(704)中存在著 file2. txt內(nèi)存鏡像703,而在UDF文件系統(tǒng)(706)中同樣存在著file2. txt內(nèi)存鏡像705, 且這2個file2.txt鏡像是完全獨立的。當(dāng)應(yīng)用1進(jìn)行寫操作時(701),應(yīng)用2同時請求對 file2. txt (705)進(jìn)行寫操作(702),在寫操作請求被傳遞至文件系統(tǒng)后,文件系統(tǒng)iVDR_FS 和UDF分別把請求寫操作的文件轉(zhuǎn)化為具體的磁盤地址空間,并將寫操作請求繼續(xù)傳遞給磁盤訪問橋接模塊707。因此,磁盤訪問橋接模塊707將先后接收到2個磁盤寫請求。而在磁盤訪問橋接模塊707內(nèi)部,由于同一時刻只允許一個磁盤寫操作,因此稍后請求的磁盤寫操作將在其狀態(tài)檢查603時,返回“磁盤忙碌”,從而避免了兩個磁盤操作因為同時而可能產(chǎn)生的數(shù)據(jù)丟失。例如,file2通過iVDR_FS的磁盤寫請求被率先執(zhí)行,而在其執(zhí)行的過程中file2通過UDF文件系統(tǒng)的磁盤操作被請求。則通過UDF文件系統(tǒng)的磁盤操作將被返回“磁盤忙碌”,通過UDF文件系統(tǒng)的磁盤操作在收到“磁盤忙碌”返回后,繼續(xù)向上返回,直至返回到應(yīng)用2中。而經(jīng)過iVDR_FS的file2在執(zhí)行了實際的磁盤寫入操作后,使得iVDR_ FS文件系統(tǒng)的file2. txt (703)與實際磁盤空間711狀態(tài)一致,但UDF文件系統(tǒng)的file2. txt (705)卻與實際磁盤空間711狀態(tài)不一致。因此,磁盤訪問橋接模塊707執(zhí)行圖6中的磁盤同步更新609,通過實際磁盤空間的數(shù)據(jù)來更新UDF文件系統(tǒng)中的file2. txt,經(jīng)過更新后的file2. txt文件同樣保持了與磁盤空間對應(yīng)數(shù)據(jù)711的一致性。在執(zhí)行完所有上述操作后,文件同步模塊返回,從而完成了應(yīng)用1對file2.txt的寫操作。此時,應(yīng)用2可以再次調(diào)用寫file2. txt操作,在經(jīng)過文件至磁盤空間的轉(zhuǎn)化后,由于此時狀態(tài)標(biāo)志“正在寫入”已經(jīng)被清除,因此可以繼續(xù)向下執(zhí)行,在實現(xiàn)了通過UDF寫file2. txt操作后,同樣會有文件同步模塊更新iVDR_FS文件系統(tǒng)的file2. txt文件數(shù)據(jù),并在更新完畢后從文件同步模塊中返回應(yīng)用2,從而完成了應(yīng)用1和應(yīng)用2對相同文件的寫訪問操作。
通過本實施例所述系統(tǒng)的磁盤訪問橋接模塊,在同一分區(qū)下訪問2個處于不同層次空間的文件系統(tǒng)所對應(yīng)的應(yīng)用不會產(chǎn)生沖突,因為該磁盤訪問橋接模塊在底層通過其內(nèi)部處理邏輯防止了不同文件系統(tǒng)對同一物理地址的非法訪問。從而提供了一個穩(wěn)定的多文件系統(tǒng)共享同一分區(qū)的工作方式。由于磁盤訪問橋接模塊處在更為底層的內(nèi)核空間,因此相比實施例1,本實施例的處理速度更加迅速,對系統(tǒng)內(nèi)存資源的占用更加小。以下說明本發(fā)明的第3個實施例。圖8是本實施例所述系統(tǒng)的結(jié)構(gòu)示意圖。第1實施例展示了存在2個文件系統(tǒng)共享同一磁盤分區(qū)的條件下避免文件訪問沖突的問題。在本實施例中,存在著3個文件系統(tǒng)共享同一磁盤分區(qū)。圖8示意了所述系統(tǒng), 相比于圖2,差別在于增加了一個處于用戶空間的文件系統(tǒng)以及其對應(yīng)的應(yīng)用層程序。因此,本系統(tǒng)存在2個處于用戶空間的文件系統(tǒng)程序801,201,和1個處于內(nèi)核空間的文件系統(tǒng)程序202。文件同步模塊203用于協(xié)調(diào)上述3個文件系統(tǒng)相關(guān)的所有文件操作。在本系統(tǒng)中,文件同步模塊203向上提供了 3組接口函數(shù),每組接口函數(shù)的集合能獨立完成所有的文件操作,而各組接口函數(shù)所完成的功能則是相同的,或者是類似的。本實施例所述的文件同步模塊其工作原理和工作流程與實施例1的文件同步模塊203是完全一致的,該模塊同樣適用于多個文件系統(tǒng)的應(yīng)用系統(tǒng)。通過本實施例所述系統(tǒng)的文件同步模塊,可以避免3個及以上文件系統(tǒng)的應(yīng)用程序在同時訪問同一磁盤分區(qū)時產(chǎn)生沖突,從而保證了同一磁盤分區(qū)下的多個文件系統(tǒng)同時工作。
權(quán)利要求
1.一種同一磁盤分區(qū)上的多個文件系統(tǒng)接口訪問調(diào)節(jié)裝置,其特征在于 所述多個文件系統(tǒng)包括一個第一文件系統(tǒng),為位于內(nèi)核層的文件系統(tǒng);和至少一個第二文件系統(tǒng),為位于用戶層的文件系統(tǒng),所述調(diào)節(jié)裝置具有同步模塊,用于協(xié)調(diào)所述磁盤分區(qū)上的各個文件系統(tǒng)的操作。
2.如權(quán)利要求1所述的同一磁盤分區(qū)上的多個文件系統(tǒng)接口訪問調(diào)節(jié)裝置,其特征在于所述多個文件系統(tǒng)中的任意一個文件系統(tǒng)被使用時,所述同步模塊進(jìn)行如下操作 檢測步驟,當(dāng)有程序執(zhí)行時同步模塊檢測計算機(jī)系統(tǒng)是否處于寫磁盤模式; 允許步驟,所述計算機(jī)系統(tǒng)為非寫磁盤模式時允許所述程序執(zhí)行; 保護(hù)步驟,如果被執(zhí)行的所述程序包括寫操作,則將所述計算機(jī)系統(tǒng)置為寫磁盤模式;同步步驟,在執(zhí)行包括寫操作的所述程序后,同步模塊對所述磁盤分區(qū)上的所述多個文件系統(tǒng)中的其他文件系統(tǒng)進(jìn)行更新。
3.如權(quán)利要求1或2所述的同一磁盤分區(qū)上的多個文件系統(tǒng)接口訪問調(diào)節(jié)裝置,其特征在于所述同步模塊為文件同步模塊,且位于所述磁盤分區(qū)上的各個文件系統(tǒng)的上層,所述文件同步模塊用于協(xié)調(diào)所述磁盤分區(qū)上的各個文件系統(tǒng)對同一文件的操作。
4.如權(quán)利要求1或2所述的同一磁盤分區(qū)上的多個文件系統(tǒng)接口訪問調(diào)節(jié)裝置,其特征在于所述同步模塊為磁盤訪問橋接模塊,且位于所述磁盤分區(qū)上的各個文件系統(tǒng)的下層, 所述磁盤訪問橋接模塊用于協(xié)調(diào)所述磁盤分區(qū)上的各個文件系統(tǒng)對同一磁盤塊的操作。
5.如權(quán)利要求1或2所述的同一磁盤分區(qū)上的多個文件系統(tǒng)接口訪問調(diào)節(jié)裝置,其特征在于所述第一文件系統(tǒng)為UDF文件系統(tǒng),所述第二文件系統(tǒng)為iVDR文件系統(tǒng)。
6.一種同一磁盤分區(qū)上的多個文件系統(tǒng)接口訪問方法,其特征在于 所述多個文件系統(tǒng)包括一個第一文件系統(tǒng),為位于內(nèi)核層的文件系統(tǒng);和至少一個第二文件系統(tǒng),為位于用戶層的文件系統(tǒng), 所述多個文件系統(tǒng)之間具有同步模塊,所述多個文件系統(tǒng)中的任意一個文件系統(tǒng)被使用時,所述方法包括步驟 檢測步驟,當(dāng)有程序執(zhí)行時同步模塊檢測計算機(jī)系統(tǒng)是否處于寫磁盤模式; 允許步驟,所述計算機(jī)系統(tǒng)為非寫磁盤模式時允許所述程序執(zhí)行; 保護(hù)步驟,如果被執(zhí)行的所述程序包括寫操作,則將所述計算機(jī)系統(tǒng)置為寫磁盤模式;同步步驟,在執(zhí)行包括寫操作的所述程序后,同步模塊對所述磁盤分區(qū)上的所述多個文件系統(tǒng)中的其他文件系統(tǒng)進(jìn)行更新。
7.如權(quán)利要求6所述的同一磁盤分區(qū)上的多個文件系統(tǒng)接口訪問方法,其特征在于 所述同步模塊為文件同步模塊,且位于所述磁盤分區(qū)上的各個文件系統(tǒng)的上層,所述文件同步模塊用于協(xié)調(diào)所述磁盤分區(qū)上的各個文件系統(tǒng)對同一文件的操作。
8.如權(quán)利要求6所述的同一磁盤分區(qū)上的多個文件系統(tǒng)接口訪問方法,其特征在于 所述同步模塊為磁盤訪問橋接模塊,且位于所述磁盤分區(qū)上的各個文件系統(tǒng)的下層,所述磁盤訪問橋接模塊用于協(xié)調(diào)所述磁盤分區(qū)上的各個文件系統(tǒng)對同一磁盤塊的操作。
9.如權(quán)利要求6 8所述的同一磁盤分區(qū)上的多個文件系統(tǒng)接口訪問方法,其特征在于所述第一文件系統(tǒng)為UDF文件系統(tǒng),所述第二文件系統(tǒng)為iVDR文件系統(tǒng)。
全文摘要
本發(fā)明提供一種同一磁盤分區(qū)上的多個文件系統(tǒng)接口訪問調(diào)節(jié)裝置和方法,所述多個文件系統(tǒng)包括一個第一文件系統(tǒng),為位于內(nèi)核層的文件系統(tǒng);和至少一個第二文件系統(tǒng),為位于用戶層的文件系統(tǒng),所述調(diào)節(jié)裝置具有同步模塊,用于協(xié)調(diào)所述磁盤分區(qū)上的各個文件系統(tǒng)的操作。所述多個文件系統(tǒng)中的任意一個文件系統(tǒng)被使用時,所述同步模塊進(jìn)行如下操作檢測步驟、允許步驟、保護(hù)步驟、同步步驟。本發(fā)明有效地解決了多個文件系統(tǒng)同時工作可能產(chǎn)生的數(shù)據(jù)沖突問題。
文檔編號G06F17/30GK102419757SQ201010299828
公開日2012年4月18日 申請日期2010年9月28日 優(yōu)先權(quán)日2010年9月28日
發(fā)明者東嶋重樹, 王鴻鳴, 藤井由紀(jì)夫, 顧錦華 申請人:株式會社日立制作所