專利名稱:利用虛擬設(shè)備文件系統(tǒng)擴充移動設(shè)備存儲容量的方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計算機網(wǎng)絡(luò)存儲器之間互連或傳送請求處理技術(shù)領(lǐng)域,尤其是一種利用虛擬設(shè)備文件系統(tǒng)擴充移動設(shè)備存儲容量的方法。
背景技術(shù):
隨著計算機技術(shù)和通信技術(shù)的進(jìn)步,移動設(shè)備具有越來越強的處理能力,并且以很快的速度以各種途徑接入因特網(wǎng),因此,各種移動終端的使用越來越廣泛。在個人數(shù)字助理、手機等移動設(shè)備上處理各種信息,比如看電影、聽音樂等已經(jīng)不再是遙不可及的夢想。
移動設(shè)備由于其體積以及便攜性的要求,所用的存儲介質(zhì)多為閃存卡,智能介質(zhì)卡等,存儲容量大多在幾十兆左右,而且價格高,64兆的閃存卡要200~300元,硬盤的存儲容量大,存儲成本低,硬盤容量多在幾十個千兆以上,而60千兆左右的硬盤價格也僅在600元左右。由于移動設(shè)備存儲容量的限制,使得移動設(shè)備在處理需要很大存儲容量的多媒體信息時,遇到了移動設(shè)備存儲介質(zhì)容量限制的困難,使得移動設(shè)備不能處理需要大存儲容量的多媒體數(shù)據(jù),因而,也就不能在移動設(shè)備上運行多媒體應(yīng)用。現(xiàn)有技術(shù)中已有把遠(yuǎn)端服務(wù)器和移動設(shè)備連接起來的技術(shù),使得移動設(shè)備可以利用服務(wù)器上的存儲資源,但這種技術(shù)要求移動設(shè)備能夠接入網(wǎng)絡(luò),并且移動設(shè)備利用服務(wù)器存儲容量的性能受到網(wǎng)絡(luò)帶寬的影響。
發(fā)明內(nèi)容
為了克服上述不足,本發(fā)明的目的是提供一種利用虛擬設(shè)備文件系統(tǒng)擴充移動設(shè)備存儲容量的方法,使得移動設(shè)備可以象使用本地存儲介質(zhì)一樣使用其存儲容量。
為完成上述目的,本發(fā)明采取的技術(shù)方案是用虛擬設(shè)備文件系統(tǒng)擴充移動設(shè)備存儲容量的方法,包括在移動設(shè)備上建立一個虛擬設(shè)備文件系統(tǒng)模塊,并掛入移動設(shè)備的操作系統(tǒng),通過虛擬設(shè)備文件系統(tǒng)模塊向移動設(shè)備上的應(yīng)用提供一個虛擬的存儲空間,并把對這個虛擬存儲空間的讀寫請求通過網(wǎng)絡(luò)發(fā)送到遠(yuǎn)端服務(wù)器,在遠(yuǎn)端服務(wù)器上,把從移動設(shè)備轉(zhuǎn)來的讀寫請求轉(zhuǎn)化為對服務(wù)器上本地存儲設(shè)備的讀寫請求,并把讀寫的結(jié)果通過網(wǎng)絡(luò)傳回移動設(shè)備的步驟。
操作系統(tǒng)文件接口判斷操作的文件是否位于虛擬文件系統(tǒng),若是則把讀寫請求轉(zhuǎn)發(fā)到虛擬文件系統(tǒng)模塊;設(shè)備管理器根據(jù)注冊表中的紀(jì)錄自動裝載設(shè)備驅(qū)動動態(tài)連接庫,在設(shè)備驅(qū)動動態(tài)連接庫中裝載圣何西文件系統(tǒng)驅(qū)動,將圣何西文件系統(tǒng)驅(qū)動掛載到設(shè)備管理器上,設(shè)備管理器到圣何西文件系統(tǒng)驅(qū)動中尋找掛載虛擬磁盤函數(shù),如果找到,設(shè)備管理器裝載文件系統(tǒng)管理器模塊,并傳遞圣何西文件系統(tǒng)驅(qū)動信息給文件系統(tǒng)管理器模塊,文件系統(tǒng)管理器模塊根據(jù)所得到的信息,包括文件系統(tǒng)名和文件系統(tǒng)驅(qū)動文件名,到圣何西文件系統(tǒng)驅(qū)動中調(diào)用圣荷西文件系統(tǒng)驅(qū)動掛載虛擬磁盤函數(shù),在圣荷西文件系統(tǒng)驅(qū)動掛載虛擬磁盤函數(shù)中,調(diào)用文件系統(tǒng)驅(qū)動注冊中的文件系統(tǒng)驅(qū)動注冊函數(shù),注冊所有卷;虛擬文件系統(tǒng)模塊可對操作的文件進(jìn)行打開、讀、寫、關(guān)閉或設(shè)置屬性等一種或幾種操作;應(yīng)用程序和操作系統(tǒng)的其它模塊對文件的操作是先封裝成消息然后通過網(wǎng)絡(luò)發(fā)送到遠(yuǎn)端的服務(wù)器;消息包括消息號、會話標(biāo)識、操作類型、用戶名、口令、操作參數(shù)列表等一項或幾項內(nèi)容;遠(yuǎn)端服務(wù)器上有一個監(jiān)聽服務(wù)程序,它包括對接收到的消息進(jìn)行分析,分析消息中包含的請求操作的類型、操作的對象是那個文件,根據(jù)分析的結(jié)果對服務(wù)器上的文件進(jìn)行讀、寫、打開等操作,把操作的結(jié)果通過網(wǎng)絡(luò)返回到移動設(shè)備的步驟。
本發(fā)明具有明顯的效果,本發(fā)明的虛擬設(shè)備文件系統(tǒng)并不訪問真實的本地存儲,而是通過網(wǎng)絡(luò)訪問遠(yuǎn)端個人計算機或者服務(wù)器上的存儲空間,這樣就在本地虛擬了一個存儲空間,這個存儲空間的大小完全由個人計算機或者服務(wù)器所能提供的存儲容量決定,不受其它任何限制。移動設(shè)備可使用服務(wù)器上廉價的大容量存儲空間,一切操作對移動設(shè)備用戶以及移動設(shè)備上的應(yīng)用透明,可以把個人計算機、服務(wù)器以及其它設(shè)備上的存儲空間透明地掛接到移動設(shè)備上,使用起來就象是移動設(shè)備本地的存儲一樣,用戶感覺不到任何的不同,從而極大地擴充各種移動設(shè)備的存儲容量。
圖1是本發(fā)明的系統(tǒng)的體系結(jié)構(gòu)圖;圖2是本發(fā)明在嵌入式視窗操作系統(tǒng)上的實現(xiàn)過程圖;圖3是本發(fā)明的實現(xiàn)流程圖。
下面結(jié)合附圖具體和實施方式對本發(fā)明作進(jìn)一步詳細(xì)的說明。
具體實施例方式
參閱圖1,現(xiàn)代操作系統(tǒng)中一般都提供一個抽象的文件系統(tǒng)接口模型,使得開發(fā)者可以在系統(tǒng)中加入自己開發(fā)的特定的文件系統(tǒng),比如,多用戶操作系統(tǒng)和視窗操作系統(tǒng)提供的虛擬文件系統(tǒng)接口,定義了文件的打開、讀、寫等操作的接口。
本發(fā)明中,操作系統(tǒng)對上層應(yīng)用提供了一個文件系統(tǒng)接口,通過改寫這個接口的實現(xiàn),把原來對磁盤的輸入輸出請求通過網(wǎng)絡(luò)發(fā)送到遠(yuǎn)端機器上,從而利用了遠(yuǎn)端機器上的存儲,實現(xiàn)了一個虛擬的存儲設(shè)備。
參閱圖2,本發(fā)明在windows CE(嵌入式視窗操作系統(tǒng))平臺上的實現(xiàn)。一般用戶的應(yīng)用程序面對的都是標(biāo)準(zhǔn)的操作系統(tǒng)應(yīng)用程序編程接口函數(shù),或者應(yīng)用程序編程接口的進(jìn)一步封裝,如微軟基礎(chǔ)類庫、活動模板庫等,可以說,應(yīng)用程序編程接口是應(yīng)用程序的唯一接口。系統(tǒng)的所有具體操作隱藏在統(tǒng)一的應(yīng)用程序編程接口下,其中重要的一部分便是文件與輸入輸出操作,大部分將交給文件系統(tǒng)進(jìn)行管理,其它如驅(qū)動程序開發(fā)也同樣遵循統(tǒng)一接口。
文件系統(tǒng)有許多種,常見的有FAT 16(16位的文件分配表文件系統(tǒng))、FAT 32(32位的文件分配表文件系統(tǒng))、EXT2(第二代擴展文件系統(tǒng))以及光盤上的光盤介質(zhì)文件系統(tǒng)等。光盤介質(zhì)文件系統(tǒng)提供的是數(shù)據(jù)和文件的組織形式和操作規(guī)范,并不是實現(xiàn)了所有的文件和輸入輸出功能,其內(nèi)部的許多函數(shù)都有可能是空函數(shù),真正的數(shù)據(jù)輸入輸出要交給具體設(shè)備及其驅(qū)動程序來處理。
在嵌入式視窗操作系統(tǒng)中,設(shè)備驅(qū)動分為本地設(shè)備驅(qū)動和流接口驅(qū)動。對于文件系統(tǒng)來說,面對的是所謂的塊設(shè)備,較適合用流接口驅(qū)動的模式,這是由于它由設(shè)備管理器提供默認(rèn)的、并且十分方便的管理,并且提供標(biāo)準(zhǔn)模版和導(dǎo)出函數(shù)。
設(shè)備驅(qū)動和設(shè)備管理器,設(shè)備驅(qū)動也并非只有一層,對一般情況來說,設(shè)備驅(qū)動分上下兩層,底層直接面對硬件操作,一般由硬件廠商提供;高層是在此之上針對不同的操作系統(tǒng)、不同應(yīng)用和功能的設(shè)備驅(qū)動,不需要去寫一個硬件驅(qū)動,一個上層的塊設(shè)備驅(qū)動才合適,并且假定底層設(shè)備為磁盤存儲卡。
嵌入式視窗操作系統(tǒng)中設(shè)備由設(shè)備管理器管理。設(shè)備管理器并不存在于內(nèi)核中,它是一個動態(tài)連接模塊,負(fù)責(zé)內(nèi)核與注冊表以及驅(qū)動之間的聯(lián)系或者說互操作,它可以裝載卸載設(shè)備驅(qū)動,向內(nèi)核注冊設(shè)備文件名和設(shè)備驅(qū)動函數(shù),當(dāng)設(shè)備接入時自動搜索適當(dāng)驅(qū)動并加載之。
設(shè)備驅(qū)動與設(shè)備管理器之間的交互是通過注冊表來完成的。當(dāng)運行設(shè)備驅(qū)動的裝載程序時,要向注冊表中寫入相關(guān)信息,包括驅(qū)動文件名、設(shè)備文件名、驅(qū)動程序入口函數(shù)、文件系統(tǒng)等等信息,設(shè)備管理器會根據(jù)這些信息自動管理。
文件系統(tǒng)驅(qū)動和文件系統(tǒng)驅(qū)動管理器。文件系統(tǒng)驅(qū)動實質(zhì)是一個可裝載文件系統(tǒng),是一個動態(tài)連接模塊。文件系統(tǒng)驅(qū)動通過實現(xiàn)一些固定的導(dǎo)出函數(shù),來完成文件系統(tǒng)的所有功能,并可以反過來調(diào)用文件系統(tǒng)管理器的一些函數(shù),來與之實現(xiàn)交互。
文件系統(tǒng)驅(qū)動管理器同樣包含于一個動態(tài)連接庫文件fsdmgr.dll中。它能夠為可安裝的文件系統(tǒng)提供許多服務(wù),例如創(chuàng)建文件句柄和搜索句柄、注冊注銷卷、注冊文件系統(tǒng)驅(qū)動函數(shù)等。它最重要的功能是能夠?qū)?yīng)用程序調(diào)用的應(yīng)用程序變成接口函數(shù)映射到特定文件系統(tǒng)驅(qū)動函數(shù)上。
文件系統(tǒng)驅(qū)動的名字、文件系統(tǒng)驅(qū)動文件名以及文件系統(tǒng)驅(qū)動導(dǎo)出函數(shù)的頭必須保持一致。例如原型文件系統(tǒng)驅(qū)動的名字叫SanFSD.dll(圣荷西文件系統(tǒng)驅(qū)動動態(tài)鏈接庫),文件系統(tǒng)名字SanFSD(圣荷西文件系統(tǒng)驅(qū)動),導(dǎo)出函數(shù)則為SanFSD_ReadFile()(圣荷西文件系統(tǒng)驅(qū)動動態(tài)鏈接庫的讀文件函數(shù))等,這樣才能保證文件系統(tǒng)管理器調(diào)用正確。
文件系統(tǒng)驅(qū)動調(diào)用FSDMGR_RegisterVolume()(文件系統(tǒng)驅(qū)動管理器的卷注冊函數(shù))可以注冊一個卷,取名為SanJos(圣荷西),此時嵌入式視窗操作系統(tǒng)的設(shè)備的一級目錄上會出現(xiàn)一個SanJose目錄,當(dāng)應(yīng)用程序訪問該目錄時,文件系統(tǒng)管理器判斷出這是一個SanFSD(圣荷西文件系統(tǒng)驅(qū)動)文件系統(tǒng)的卷,于是將視窗操作系統(tǒng)應(yīng)用程序編程接口映射到文件系統(tǒng)驅(qū)動內(nèi)的函數(shù)上,比如應(yīng)用程序調(diào)用FindFirstFile(查找目錄下第一個文件的函數(shù)接口),則映射到SanFSD_FindFirstFile()(圣荷西文件系統(tǒng)驅(qū)動動態(tài)鏈接庫的查找目錄下第一個文件函數(shù)),調(diào)用CreateFile()(創(chuàng)建文件的函數(shù)接口),則映射到SanFSD_CreateFile()(圣荷西文件系統(tǒng)驅(qū)動動態(tài)鏈接庫的創(chuàng)建文件的函數(shù))。
本發(fā)明的系統(tǒng)調(diào)用流程是文件系統(tǒng)驅(qū)動的動態(tài)連接庫文件中有兩個特殊的導(dǎo)出函數(shù)FSD_MountDisk(掛載磁盤設(shè)備的函數(shù)接口)和FSD_UnmountDisk(卸載磁盤設(shè)備的函數(shù)接口)。它們不是被文件系統(tǒng)驅(qū)動管理器調(diào)用的,而是設(shè)備管理器調(diào)用。實質(zhì)上,它們的函數(shù)主體是SanFSD_MountDisk(圣荷西掛載虛擬設(shè)備文件驅(qū)動的載磁盤設(shè)備的函數(shù))和SanFSD_UnmountDisk(圣荷西掛載虛擬設(shè)備文件驅(qū)動的卸載磁盤設(shè)備的函數(shù)),只是在導(dǎo)出時改了名字。
參閱圖3,首先,按照操作系統(tǒng)提供的文件系統(tǒng)接口標(biāo)準(zhǔn)要求,本發(fā)明實現(xiàn)了一個虛擬文件系統(tǒng)模塊,在這個虛擬的文件系統(tǒng)模塊中實現(xiàn)了對文件的打開、讀、寫、關(guān)閉、設(shè)置屬性等文件一周或幾種操作的處理。
當(dāng)應(yīng)用程序或者操作系統(tǒng)的其它模塊需要操作位于虛擬文件系統(tǒng)上的文件時,調(diào)用在虛擬文件系統(tǒng)接口實現(xiàn)的操作,在這些操作的實現(xiàn)中,本發(fā)明把應(yīng)用程序和操作系統(tǒng)其它模塊對文件的操作封裝成消息,通過網(wǎng)絡(luò)發(fā)送到遠(yuǎn)端的服務(wù)器。消息的內(nèi)容包括消息號、會話標(biāo)識、操作類型、用戶名、口令、操作參數(shù)列表等一項或幾項內(nèi)容。
其次,需要在遠(yuǎn)端服務(wù)器上建立一個監(jiān)聽服務(wù)程序,服務(wù)監(jiān)聽程序的功能流程包括以下步驟對接收到的消息進(jìn)行分析,分析消息中包含的請求操作的類型,如讀、寫、打開等,操作的對象是那個文件,并根據(jù)分析的結(jié)果,對服務(wù)器上的文件進(jìn)行讀、寫、打開等操作,并把操作的結(jié)果通過網(wǎng)絡(luò)返回到移動設(shè)備。
系統(tǒng)安裝好設(shè)備驅(qū)動后,設(shè)備管理器會根據(jù)注冊表中的紀(jì)錄自動裝載設(shè)備驅(qū)動動態(tài)連接庫,在本發(fā)明中的原型中是Ramdisk.dll(內(nèi)存磁盤映象動態(tài)連接庫)。在ramdisk.dll中裝載文件系統(tǒng)驅(qū)動SanFSD.dll(圣何西文件系統(tǒng)驅(qū)動),將圣何西文件系統(tǒng)驅(qū)動掛載到此設(shè)備管理器上。此時,設(shè)備管理器得到了文件系統(tǒng)名圣何西文件系統(tǒng)驅(qū)動。然后設(shè)備管理器會到SanFSD.dll中尋找函數(shù)FSD_MountDisk(掛載虛擬磁盤的函數(shù),是MyFSD_MountDisk的別名),如果找到了,設(shè)備管理器會裝載fsdmgr.dll(文件系統(tǒng)驅(qū)動管理器模塊),并傳遞圣何西文件系統(tǒng)驅(qū)動信息給文件系統(tǒng)管理器模塊。接下來,文件系統(tǒng)管理器模塊會根據(jù)所得到的信息,包括文件系統(tǒng)名SanFSD和文件系統(tǒng)驅(qū)動文件名SanFSD.dll,并到SanFSD.dll中調(diào)用SanFSD_MountDisk(圣荷西掛載虛擬設(shè)備文件驅(qū)動的掛載磁盤設(shè)備的函數(shù)),在這個函數(shù)中,必須將所有卷注冊好,也就是調(diào)用fsdmgr.dll(文件系統(tǒng)驅(qū)動管理器動態(tài)連接庫)中的函數(shù)FSDMGR_RegisterVolume(文件系統(tǒng)驅(qū)動管理器中的卷注冊函數(shù)),此時系統(tǒng)中如果出現(xiàn)SanJose目錄,文件系統(tǒng)驅(qū)動已被成功裝載,并注冊成功。
權(quán)利要求
1.用虛擬設(shè)備文件系統(tǒng)擴充移動設(shè)備存儲容量的方法,其特征在于它包括以下步驟(1)在移動設(shè)備上建立一個虛擬設(shè)備文件系統(tǒng)模塊,并掛入移動設(shè)備的操作系統(tǒng);(2)通過虛擬設(shè)備文件系統(tǒng)模塊向移動設(shè)備上的應(yīng)用提供一個虛擬的存儲空間,并把對這個虛擬存儲空間的讀寫請求通過網(wǎng)絡(luò)發(fā)送到遠(yuǎn)端服務(wù)器;(3)在遠(yuǎn)端服務(wù)器上,把從移動設(shè)備轉(zhuǎn)來的讀寫請求轉(zhuǎn)化為對服務(wù)器上本地存儲設(shè)備的讀寫請求,并把讀寫的結(jié)果通過網(wǎng)絡(luò)傳回移動設(shè)備。
2.根據(jù)權(quán)利要求1所說的用虛擬設(shè)備文件系統(tǒng)擴充移動設(shè)備存儲容量的方法,其特征在于步驟(1)還包括操作系統(tǒng)文件接口判斷操作的文件是否位于虛擬文件系統(tǒng),若是則把讀寫請求轉(zhuǎn)發(fā)到虛擬文件系統(tǒng)模塊的步驟。
3.根據(jù)權(quán)利要求1所說的用虛擬設(shè)備文件系統(tǒng)擴充移動設(shè)備存儲容量的方法,其特征在于步驟(1)進(jìn)一步包括下述步驟(1)設(shè)備管理器根據(jù)注冊表中的紀(jì)錄自動裝載圣何西虛擬設(shè)備文件系統(tǒng)驅(qū)動動態(tài)連接庫,將圣何西文件系統(tǒng)驅(qū)動掛載到設(shè)備管理器上;(2)設(shè)備管理器到圣何西文件系統(tǒng)驅(qū)動中尋找掛載虛擬磁盤函數(shù),如果找到,設(shè)備管理器裝載文件系統(tǒng)管理器模塊,并傳遞圣何西文件系統(tǒng)驅(qū)動信息給文件系統(tǒng)管理器模塊;(3)文件系統(tǒng)管理器模塊根據(jù)所得到的信息,包括文件系統(tǒng)名和文件系統(tǒng)驅(qū)動文件名,到圣何西文件系統(tǒng)驅(qū)動中調(diào)用圣荷西文件系統(tǒng)驅(qū)動掛載虛擬磁盤函數(shù);(4)在圣荷西文件系統(tǒng)驅(qū)動掛載虛擬磁盤函數(shù)中,調(diào)用文件系統(tǒng)驅(qū)動注冊中的文件系統(tǒng)驅(qū)動注冊函數(shù),注冊所有卷。
4.根據(jù)權(quán)利要求1所說的用虛擬設(shè)備文件系統(tǒng)擴充移動設(shè)備存儲容量的方法,其特征在于所說的虛擬文件系統(tǒng)模塊可對操作的文件進(jìn)行打開、讀、寫、關(guān)閉或設(shè)置屬性等一種或幾種操作。
5.根據(jù)權(quán)利要求1所說的用虛擬設(shè)備文件系統(tǒng)擴充移動設(shè)備存儲容量的方法,其特征在于應(yīng)用程序和操作系統(tǒng)的其它模塊對文件的操作是先封裝成消息然后通過網(wǎng)絡(luò)發(fā)送到遠(yuǎn)端的服務(wù)器。
6.根據(jù)權(quán)利要求5所說的用虛擬設(shè)備文件系統(tǒng)擴充移動設(shè)備存儲容量的方法,其特征在于所說的消息包括消息號、會話標(biāo)識、操作類型、用戶名、口令、操作參數(shù)列表等一項或幾項內(nèi)容。
7.根據(jù)權(quán)利要求1所說的用虛擬設(shè)備文件系統(tǒng)擴充移動設(shè)備存儲容量的方法,其特征在于遠(yuǎn)端服務(wù)器上有一個監(jiān)聽服務(wù)程序,它包括以下步驟(1)對接收到的消息進(jìn)行分析,分析消息中包含的請求操作的類型、操作的對象是那個文件;(2)根據(jù)分析的結(jié)果,對服務(wù)器上的文件進(jìn)行讀、寫、打開等操作;(3)把操作的結(jié)果通過網(wǎng)絡(luò)返回到移動設(shè)備。
全文摘要
本發(fā)明是一種利用虛擬設(shè)備文件系統(tǒng)擴充移動設(shè)備存儲容量的方法。需要解決現(xiàn)有移動設(shè)備存儲介質(zhì)容量小、價格高等問題。它包括在移動設(shè)備上建立一個虛擬設(shè)備文件系統(tǒng)模塊,并掛入移動設(shè)備的操作系統(tǒng),通過虛擬設(shè)備文件系統(tǒng)模塊向移動設(shè)備上的應(yīng)用提供一個虛擬的存儲空間,并把對這個虛擬存儲空間的讀寫請求通過網(wǎng)絡(luò)發(fā)送到遠(yuǎn)端服務(wù)器,在遠(yuǎn)端服務(wù)器上,把從移動設(shè)備轉(zhuǎn)來的讀寫請求轉(zhuǎn)化為對服務(wù)器上本地存儲設(shè)備的讀寫請求,并把讀寫的結(jié)果通過網(wǎng)絡(luò)傳回移動設(shè)備的步驟。具有使移動設(shè)備可使用服務(wù)器上廉價的大容量存儲空間等優(yōu)點,適于擴充各種移動設(shè)備的存儲容量。
文檔編號G06F12/08GK1506840SQ02155508
公開日2004年6月23日 申請日期2002年12月9日 優(yōu)先權(quán)日2002年12月9日
發(fā)明者黃飛, 牛曉勇, 袁林, 黃 飛 申請人:聯(lián)想(北京)有限公司