專利名稱:訪問專有文件系統(tǒng)的方法
技術領域:
本發(fā)明涉及計算機技術,具體涉及在多操作系統(tǒng)情況下從一個操 作系統(tǒng)對另一操作系統(tǒng)的專有文件系統(tǒng)進行訪問的方法。
背景技術:
在當前以及未來的PC設備上,運行兩個或者多個操作系統(tǒng)(同步或者異步)己經(jīng)成為必然,比如雙模式電腦的多操作系統(tǒng)異步運行, 以及未來支持虛擬化技術下,多操作系統(tǒng)同步運行等等。從用戶需求的角度看,多個操作系統(tǒng)之間需要數(shù)據(jù)的共享,因為 這些數(shù)據(jù)都同屬于用戶。但是,在一個操作系統(tǒng)中使用另外一個操作系統(tǒng)的數(shù)據(jù)存在很多障礙,尤其是專有文件系統(tǒng),比如NTFS。另外, 由于文件系統(tǒng)的不開放,導致在知識產(chǎn)權以及兼容性上存在相當多的 問題?,F(xiàn)有的解決方案有兩類。 一種是運行專有文件系統(tǒng)的虛擬環(huán)境, 通過虛擬機來完成文件的讀取以及存儲等,比如Captive軟件操作 NTFS的方式。另一種根據(jù)已經(jīng)理解的文件系統(tǒng)結構去重新書寫文件系 統(tǒng)驅動,比如目前正在開發(fā)的Linux Kernel對NTFS的支持。以上這兩種方式最大的問題專有文件系統(tǒng)的知識產(chǎn)權問題。對于 第二種,專有文件系統(tǒng)的任何改變都會導致驅動失效。因此,需要一 種新的思路去解決類似于NTFS這樣專有文件系統(tǒng)的共享方式。NTFS 最主要的知識產(chǎn)權,存在于其文件系統(tǒng)驅動NTFS FSD和數(shù)據(jù)描述 NTFS Metadata (元數(shù)據(jù))。上述的解決方案基本上無法回避專有文件系統(tǒng)的知識產(chǎn)權問題。 因此,需要從操作系統(tǒng)及軟件架構的角度解決專有系統(tǒng)的共享問題
發(fā)明內(nèi)容
鑒于現(xiàn)有技術的上述問題,完成了本發(fā)明。本發(fā)明的目的是提出 一種訪問專有文件系統(tǒng)的方法,它能夠在第二操作系統(tǒng)下訪問第一操 作系統(tǒng)專有的文件系統(tǒng)。在本發(fā)明的一個方面,提供了一種描述數(shù)據(jù)的數(shù)據(jù)組織的方法, 包括步驟通過與不同的操作系統(tǒng)相對應的不同類型的元數(shù)據(jù)描述來描述同一數(shù)據(jù)的數(shù)據(jù)組織。根據(jù)本發(fā)明的實施例,所述步驟包括通過與第一操作系統(tǒng)和第 二操作系統(tǒng)相對應的第一元數(shù)據(jù)描述和第二元數(shù)據(jù)描述來描述同一數(shù) 據(jù)的數(shù)據(jù)組織。根據(jù)本發(fā)明的實施例,所述步驟包括在專有文件系統(tǒng)下增加附 加元數(shù)據(jù)描述來在不同專有系統(tǒng)下數(shù)據(jù)的數(shù)據(jù)組織。在本發(fā)明的另一個方面,提出了一種訪問專有文件系統(tǒng)的方法,包括利用軟件驅動來監(jiān)控在第一操作系統(tǒng)下對專有文件系統(tǒng)的操作;基于監(jiān)控結果形成用于描述所述專有文件系統(tǒng)的元數(shù)據(jù);將所述元數(shù) 據(jù)存儲在與所述專有文件系統(tǒng)無關的指定存儲區(qū)域;以及在第二操作系統(tǒng)下基于所述元數(shù)據(jù)訪問所述專有文件系統(tǒng)。根據(jù)本發(fā)明的實施例,該方法還包括步驟以日志的方式記錄所 述專有文件系統(tǒng)的數(shù)據(jù)在所述第二操作系統(tǒng)下的變化。根據(jù)本發(fā)明的實施例,該方法還包括步驟基于所述日志在所述 第一操作系統(tǒng)下更新所述專有文件系統(tǒng)的數(shù)據(jù)。根據(jù)本發(fā)明的實施例,所述日志僅僅能夠在所述第一操作系統(tǒng)下根據(jù)本發(fā)明的實施例,該所述監(jiān)控步驟包括通過回調(diào)機制,截 獲對所述專有文件系統(tǒng)的操作請求;以及通過所述第一操作系統(tǒng)的內(nèi) 部系統(tǒng)調(diào)用,獲得所述第一操作系統(tǒng)的內(nèi)核數(shù)據(jù)結構,作為所述監(jiān)控結果。根據(jù)本發(fā)明的實施例,所述第一操作系統(tǒng)是WINDOWS操作系 統(tǒng),而所述第二操作系統(tǒng)是LINUX操作系統(tǒng)。利用本發(fā)明的方法,在專有文件系統(tǒng)運行環(huán)境中(比如,NTFS
的運行環(huán)境是微軟操作系統(tǒng)),通過Call-Back機制,在專有文件系統(tǒng) 上增加Shdl。該Shell的主要功能是截獲對專有文件系統(tǒng)的10操作, 根據(jù)這些10操作以及相應的數(shù)據(jù)塊描述,在專有文件系統(tǒng)之外保存 一塊區(qū)域,專門用來保存對數(shù)據(jù)塊的描述(metadata)。這樣,專有文 件系統(tǒng)下的數(shù)據(jù)除了本身的描述數(shù)據(jù),還有另一套可以被解讀的新的 描述數(shù)據(jù),根據(jù)該另一套描述數(shù)據(jù),其它的操作系統(tǒng)可以比較容易的 訪問到原始數(shù)據(jù)塊,繞開專有文件系統(tǒng)的數(shù)據(jù)描述部分。
通過下面結合附圖對發(fā)明進行的詳細描述,將使本發(fā)明的上述特征和優(yōu)點更加明顯,其中圖l是用于說明在多操作系統(tǒng)情況下如何從一個操作系統(tǒng)訪問另 一操作系統(tǒng)下的專有文件的軟件結構示意圖;圖2示出了在WINDOWS系統(tǒng)下初始化和輔助元數(shù)據(jù)重構過程的 流程圖;圖3示出了啟動操作系統(tǒng)的過程;圖4示出了在WIND0WS系統(tǒng)下如何訪問輔助元數(shù)據(jù)的流程圖;以及圖5示出了在LINUX系統(tǒng)下訪問WINDOWS系統(tǒng)的專有文件系統(tǒng)的流程圖。
具體實施方式
下面,參考附圖詳細說明本發(fā)明的優(yōu)選實施方式。在附圖中,雖 然示于不同的附圖中,但相同的附圖標記用于表示相同的或相似的組 件。為了清楚和簡明,包含在這里的己知的功能和結構的詳細描述將 被省略,否則它們將使本發(fā)明的主題不清楚。本發(fā)明的系統(tǒng)主要表現(xiàn)形式為一套軟件以及相應的文件系統(tǒng)驅 動。圖1就以NTFS為專有文件系統(tǒng)的范例,描述在Linux下,如何 通過本發(fā)明來實現(xiàn)多個操作系統(tǒng)下數(shù)據(jù)的共享。圖1是用于說明在多操作系統(tǒng)情況下如何從一個操作系統(tǒng)訪問另
一操作系統(tǒng)下的專有文件的軟件結構示意圖。如圖1所示,輔助元數(shù)據(jù)管理器(Auxiliary metadata manager,簡 稱AMM) 11是一個建立在Windows平臺的應用程序,主要功能是負 責管理Auxiliary Metadata中的日志內(nèi)容,完成Linux系統(tǒng)下,寫、修 改NTFS文件系統(tǒng)時留下的日志。另外,輔助元數(shù)據(jù)管理器11根據(jù) 日志內(nèi)容,調(diào)用Windows平臺的NTFS驅動14,按照日志信息,通過 介質或盤驅動器16對盤17進行真正的讀寫操作,以保持Metadata與 實際數(shù)據(jù)布局的一致性。圖1中,Shell部分包括NTFS I/O過濾器13以及VPB過濾器 15,它通過回調(diào)(Callback)機制,截獲對NTFS文件系統(tǒng)的操作請求, 通過Windows內(nèi)核的內(nèi)部系統(tǒng)調(diào)用,獲得FCB(文件控制塊)及CCB (命令控制塊)等Windows內(nèi)核數(shù)據(jù)結構,建立對整個NTFS文件系 統(tǒng)存儲映像的認知。然后將該映像認知重新組織成新的映像描述形式, 即輔助元數(shù)據(jù),存儲在輔助元數(shù)據(jù)存儲區(qū)域18中。另外,輔助元數(shù)據(jù)管理器11隨Windows操作系統(tǒng)啟動而啟動, 并在系統(tǒng)中一直運行,輪詢輔助元數(shù)據(jù),當發(fā)生改變則啟動日志的執(zhí) 行。當系統(tǒng)關機時,輔助元數(shù)據(jù)管理器11收到關機信號,則關閉文 件系統(tǒng)IO之前,完成日志更新任務,并把自己關閉。如圖1所示,NTFS I/O過濾器13掛接在Windows系統(tǒng)的I/O系 統(tǒng)管理器12上,從而截獲任何對NTFS系統(tǒng)的操作請求。VPB過濾 器15設置在Windows系統(tǒng)的文件系統(tǒng)驅動14和介質或盤驅動器16 之間,過濾任何從文件系統(tǒng)驅動14發(fā)來的巻參數(shù)塊VPB,從而獲得 對NTFS數(shù)據(jù)的具體操作請求。這樣,輔助元數(shù)據(jù)管理器11就可以用 輔助元數(shù)據(jù)來描述任何對NTFS系統(tǒng)的數(shù)據(jù)塊的操作,并將輔助元數(shù) 據(jù)存儲在與Windows系統(tǒng)的元數(shù)據(jù)存儲區(qū)無關的輔助元數(shù)據(jù)存儲區(qū) 域18中。在Linux端,構建了一個基于輔助元數(shù)據(jù)(Auxiliary Metadata) 的虛擬文件系統(tǒng)21,該虛擬文件系統(tǒng)21由輔助文件系統(tǒng)驅動22所驅 動,通過巻管理器23來訪問輔助元數(shù)據(jù)存儲區(qū)域18中的輔助元數(shù)據(jù), 了解NTFS文件系統(tǒng)在磁盤上的布局,從而完成在Linux端的讀寫操
作。這里,對原來NTFS映像的修改(增、刪及修改),通過日志操作 記錄在輔助元數(shù)據(jù)存儲區(qū)域18,由Shell (同步或者異步)完成修改 的更新操作。這樣,可以輔助元數(shù)據(jù)的形式建立對專有文件系統(tǒng)的合 法共享過程。圖2示出了在WINDOWS系統(tǒng)下初始化和輔助元數(shù)據(jù)重構過程的流程圖。如圖2所示,初始化過程由應用層的輔助元數(shù)據(jù)管理器11來啟動完成。首先,計算機在啟動時,自動加載輔助元數(shù)據(jù)管理器11 (步驟 S21)。在加載之后,輔助元數(shù)據(jù)管理器11首先檢査是否存在Shell程 序(步驟S22)。如果不存在Shall程序,則啟動Shell程序(步驟S23)。然后,輔 助元數(shù)據(jù)管理器11開始解釋或構造輔助元數(shù)據(jù),以在內(nèi)存中構建一 個新的文件系統(tǒng)。構造輔助元數(shù)據(jù)的過程具體如下輔助元數(shù)據(jù)管理器11首先獲 得NTFS的根FCB (文件控制塊)節(jié)點(步驟S24)。然后,判斷是否 有FCB (步驟S25)。如果沒有,則流程結束。否則,巻管理器23獲 取與當前的FCB相對應的CCB (命令控制塊)禾卩VPB (巻參數(shù)塊) (步驟S26)。在獲得相應的CCB和VPB之后,根據(jù)對應CCB (命令控制塊) 和VPB (巻參數(shù)塊)數(shù)據(jù)結構中對于NTFS文件系統(tǒng)數(shù)據(jù)塊的描述, 來組織輔助元數(shù)據(jù)的內(nèi)容,并通過巻管理器23將組織的輔助元數(shù)據(jù)寫 入輔助元數(shù)據(jù)存儲區(qū)域18中。然后,取下一FCB (步驟S28),流程轉到步驟S25,重復上述的 操作。這樣,從該根節(jié)點開始,遍歷所有FCB (文件控制塊),根據(jù) 對應CCB (命令控制塊)禾PVPB (巻參數(shù)塊)數(shù)據(jù)結構中對于NTFS 文件系統(tǒng)數(shù)據(jù)塊的描述,來組織輔助元數(shù)據(jù)的內(nèi)容,最終使得輔助元 數(shù)據(jù)能夠完整地表述當前NTFS文件系統(tǒng)的狀態(tài)。圖3示出了啟動操作系統(tǒng)的過程。首先操作系統(tǒng)啟動(步驟S31),同時,加載Shall驅動器(步驟S32)。 Shell作為Windows的一個缺
省的Driver,隨系統(tǒng)啟動而啟動。在加載了 Shall驅動器之后,Shell首先檢査輔助元數(shù)據(jù)存儲區(qū)域 18中的輔助元數(shù)據(jù),從其中尋找日志記錄(步驟S23)。如果沒有曰 志,則流程結束。否則,Shall根據(jù)日志記錄,更新NTFS系統(tǒng)(步驟 S24)。下面對照圖4描述,在輔助元數(shù)據(jù)構造完成后,當NTFS的文件 系統(tǒng)發(fā)生變化(文件數(shù)據(jù)更新,刪增等),輔助元數(shù)據(jù)管理器11如何 更改輔助元數(shù)據(jù)來保證與NTFS文件系統(tǒng)數(shù)據(jù)描述的一致性。圖4示 出了在WINDOWS系統(tǒng)下如何訪問輔助元數(shù)據(jù)的流程圖。NTFS I/O過濾器13隨時判斷當前有無對NTFS的1/0請求。如 果有,則NTFS 1/0過濾器13截獲所有對NTFS的操作請求(步驟S41 ), 并按照當前時刻設立時間戳(步驟S42)。然后,NTFS 1/0過濾器13 回調(diào)到NTFS的FSD (文件系統(tǒng)驅動)14 (步驟S43)。當NTFS的FSD14處理完成數(shù)據(jù)布局,發(fā)送VPB (巻參數(shù)塊) 到介質或盤驅動器16之前,VPB過濾器15截獲處理后的信息,根 據(jù)時間戳,以及NTFSFSD的請求和FCB, CCB信息,獲得該數(shù)據(jù)在 磁盤17上的映像更改(步驟S44)。然后,將本次更改,通過VPB過濾器15轉化成相應的輔助元數(shù) 據(jù),然后回調(diào)VPB(步驟S45),并判斷NTFS的修改操作是否成功(步 驟S46)。如果沒有成功,則流程轉到步驟S44,重復上述的步驟。如 果NTFS的修改操作成功,則重新修改輔助元數(shù)據(jù)(步驟S47)。圖5示出了在LINUX系統(tǒng)下訪問WINDOWS系統(tǒng)的專有文件系 統(tǒng)的流程圖。在Linux端的正常使用過程是指,Linux上的應用程序使用和訪 問輔助文件系統(tǒng)上的數(shù)據(jù)的過程。輔助文件系統(tǒng)驅動22被看成一個新型的文件系統(tǒng),它掛接在VFS (虛擬文件系統(tǒng))21上,并作為Linux識別NTFS數(shù)據(jù)的主元數(shù)據(jù), 通過該主元數(shù)據(jù),Linux的應用完全可以操控NTFS所控制的數(shù)據(jù)區(qū)。當Linux上的應用程序訪問NTFS文件系統(tǒng)對應的數(shù)據(jù)時(步驟 S51), Linux的VFS (虛擬文件系統(tǒng))21首先檢查輔助文件系統(tǒng)驅動
22是否存在(步驟S52)。如果存在其它的文件系統(tǒng),則加載其它的 文件系統(tǒng)驅動(步驟S53)。如果不存在輔助文件系統(tǒng)驅動22,則調(diào)相應的文件系統(tǒng)驅動程序 進入到內(nèi)存中來,并執(zhí)行(步驟S54)。然后,輔助文件系統(tǒng)驅動22 首先按照約定通過巻管理器23訪問輔助元數(shù)據(jù)存儲區(qū)域18中的輔助 元數(shù)據(jù)(步驟S55),并依據(jù)元數(shù)據(jù)的內(nèi)容構建對NTFS文件系統(tǒng)的數(shù) 據(jù)塊描述(步驟S56)。當輔助文件系統(tǒng)驅動22存在時,按照其文件系統(tǒng)的元數(shù)據(jù)的描 述,來進行文件操作(步驟S57)。因為輔助元數(shù)據(jù)描述的是NTFS文 件系統(tǒng)的數(shù)據(jù)布局,所以Linux下的應用在輔助元數(shù)據(jù)指引下訪問的 數(shù)據(jù)塊和NTFS是同一數(shù)據(jù)。這樣,就實現(xiàn)Linux系統(tǒng)對NTFS數(shù)據(jù) 的訪問。輔助文件系統(tǒng)滿足作為文件系統(tǒng)的各種基本要求 *能夠創(chuàng)建,修改和刪除文件*能夠在安全和可控的方式共享文件并在它們之間傳遞信息 *能夠以適于應用程序的形式來使文件的內(nèi)容結構化 *能夠通過它們的符號/邏輯名,而不是物理設備名稱,來識別存 儲的文件*能夠邏輯地査看數(shù)據(jù),而不處理更詳細的物理視圖同時,輔助文件系統(tǒng)也是一個日志型文件操作系統(tǒng),它對輔助元 數(shù)據(jù)的所有修改操作,都被記錄到日志中。需要注意的是,它與傳統(tǒng) 日志文件系統(tǒng)并不相同,因為輔助元數(shù)據(jù)還要實現(xiàn)NTFS的統(tǒng)一,所以并不刪除日志。相反,刪除日志操作是在WhKk)WS系統(tǒng)下由Shdl驅動來完成的。上面的描述僅用于實現(xiàn)本發(fā)明的實施方式,本領域的技術人員應 該理解,在不脫離本發(fā)明的范圍的任何修改或局部替換,均應該屬于 本發(fā)明的權利要求來限定的范圍,因此,本發(fā)明的保護范圍應該以權 利要求書的保護范圍為準。
權利要求
1. 一種描述數(shù)據(jù)的數(shù)據(jù)組織的方法,包括步驟通過與不同的操作系統(tǒng)相對應的不同類型的元數(shù)據(jù)描述來描述同一數(shù)據(jù)的數(shù)據(jù)組織。
2. 如權利要求l所述的方法,其特征在于,所述步驟包括通過與第一操作系統(tǒng)和第二操作系統(tǒng)相對應的第一元數(shù)據(jù)描述 和第二元數(shù)據(jù)描述來描述同一數(shù)據(jù)的數(shù)據(jù)組織。
3. 如權利要求l所述的方法,其特征在于,所述步驟包括在專有文件系統(tǒng)下增加附加元數(shù)據(jù)描述來在不同專有系統(tǒng)下數(shù) 據(jù)的數(shù)據(jù)組織。
4. 一種訪問專有文件系統(tǒng)的方法,包括步驟利用軟件驅動來監(jiān)控在第一操作系統(tǒng)下對專有文件系統(tǒng)的操作;基于監(jiān)控結果形成用于描述所述專有文件系統(tǒng)的元數(shù)據(jù);將所述元數(shù)據(jù)存儲在與所述專有文件系統(tǒng)無關的指定存儲區(qū)域;以及在第二操作系統(tǒng)下基于所述元數(shù)據(jù)訪問所述專有文件系統(tǒng)。
5. 如權利要求4所述的方法,其特征在于,還包括步驟以日志的方式記錄所述專有文件系統(tǒng)的數(shù)據(jù)在所述第二操作系 統(tǒng)下的變化。
6. 如權利要求5所述的方法,其特征在于,還包括步驟 基于所述日志在所述第一操作系統(tǒng)下更新所述專有文件系統(tǒng)的數(shù)據(jù)。
7. 如權利要求6所述的方法,其特征在于,所述日志僅僅能夠在所述第一操作系統(tǒng)下被刪除。
8. 如權利要求4所述的方法,其特征在于,所述監(jiān)控步驟包括通過回調(diào)機制,截獲對所述專有文件系統(tǒng)的操作請求;以及 通過所述第一操作系統(tǒng)的內(nèi)部系統(tǒng)調(diào)用,獲得所述第一操作系統(tǒng) 的內(nèi)核數(shù)據(jù)結構,作為所述監(jiān)控結果。
9.如權利要求4到8之一所述的方法,其特征在于,所述第一操 作系統(tǒng)是WINDOWS操作系統(tǒng),而所述第二操作系統(tǒng)是LINUX操作系
全文摘要
公開了一種訪問專有文件系統(tǒng)的方法,以解決在一個操作系統(tǒng)下訪問另一操作系統(tǒng)專有的文件系統(tǒng)所引起的知識產(chǎn)權問題。該方法包括步驟利用軟件驅動來監(jiān)控在第一操作系統(tǒng)下對專有文件系統(tǒng)的操作;基于監(jiān)控結果形成用于描述所述專有文件系統(tǒng)的元數(shù)據(jù);將所述元數(shù)據(jù)存儲在與所述專有文件系統(tǒng)無關的指定存儲區(qū)域;以及在第二操作系統(tǒng)下基于所述元數(shù)據(jù)訪問所述專有文件系統(tǒng)。利用本發(fā)明的方法,可以從操作系統(tǒng)及軟件架構的角度解決專有文件系統(tǒng)的共享問題。
文檔編號G06F17/30GK101211358SQ200610171669
公開日2008年7月2日 申請日期2006年12月31日 優(yōu)先權日2006年12月31日
發(fā)明者峰 金 申請人:聯(lián)想(北京)有限公司