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

一種上層文件系統(tǒng)對空洞文件快速讀取的方法及系統(tǒng)的制作方法

文檔序號:6430378閱讀:200來源:國知局

專利名稱::一種上層文件系統(tǒng)對空洞文件快速讀取的方法及系統(tǒng)的制作方法
技術領域
:本發(fā)明涉及計算機系統(tǒng)的文件系統(tǒng),特別涉及一種上層文件系統(tǒng)基于posix(PortableOperatingSystemInterfaceofUnix,ρ)洞文件加速讀取的方法及系統(tǒng)。
背景技術
:文件系統(tǒng)是一種用來存儲和組織計算機文件、目錄及其包含的數(shù)據(jù)的方法,它使文件、目錄以及數(shù)據(jù)的查找和訪問得到簡化。隨著多媒體產(chǎn)業(yè)的迅猛發(fā)展,出于成本、可靠性等多方面的考慮,越來越多的廠商選擇在產(chǎn)品中部署自研的分布式上層存儲系統(tǒng),分布式文件系統(tǒng)也因此得到了快速的發(fā)展。在普通應用中,無法使用上層分布式文件系統(tǒng)專有函數(shù)接口,尤其像普通程序中將一個文件或者其它對象映射進內(nèi)存的mmap等操作,無法簡單的在上層系統(tǒng)中實現(xiàn),幾乎所有的上層分布式文件系統(tǒng)選用了開源的Fuse(FilesysteminUserspace,用戶空間文件系統(tǒng))組件,完成從專用接口到通用接口的轉(zhuǎn)變,但是Fuse組件只是一個底層文件系統(tǒng)的框架,在許多應用中存在一定性能上的損失,尤其讀取空洞文件時,性能損失更為嚴重??斩次募前斩?其中無任何內(nèi)容)的文件。在文件操作中,文件位移量可以大于文件的當前長度,在這種情況下,對該文件的下一次寫將延長該文件,這就是所謂的在文件里創(chuàng)造“空洞(hole)”。讀取文件時,mmap函數(shù)將所要讀取的文件映射進內(nèi)存。在Iinux中,內(nèi)存的保護是以頁為基本單位的,即使被映射文件只有一個字節(jié)大小,內(nèi)核也會為映射分配一個頁面大小的內(nèi)存。文件一旦被映射后,調(diào)用mmap()的進程對mmapO返回地址進行訪問時,由內(nèi)核處理該訪問。如果內(nèi)核發(fā)現(xiàn)返回地址所指向的頁沒有被操作系統(tǒng)讀取過,則向Fuse組件發(fā)出讀取頁請求。Fuse組件接收到讀取頁請求后,不論所讀取的頁是否是空洞,都向上層文件系統(tǒng)發(fā)送讀取請求。上層文件系統(tǒng)收到讀取請求后,讀取相關頁并返回給Fuse組件,F(xiàn)use組件再將其返回給調(diào)用mmapO的進程。由上述分析可見,在現(xiàn)有技術中,F(xiàn)use組件收到讀取頁請求后,不管所讀取的頁是否是空洞,都向上層文件系統(tǒng)發(fā)送讀取請求,上層文件系統(tǒng)收到讀取請求進行相應的讀取后再將讀取的相關頁返回給Fuse組件。因此,讀取空洞文件時,性能損失較為嚴重。同時,當遇到大量的文件空洞時,F(xiàn)use帶來的系統(tǒng)內(nèi)存復制的壓力和進程切換的壓力,會極大地拖累系統(tǒng)讀取的速度。
發(fā)明內(nèi)容本發(fā)明的目的在于提供一種上層文件系統(tǒng)對空洞文件快速讀取的方法及系統(tǒng),能更好地解決Fuse讀取空洞文件時性能損失嚴重導致系統(tǒng)內(nèi)存復制和進程切換時壓力過大的問題。根據(jù)本發(fā)明的一個方面,提供了一種上層文件系統(tǒng)對空洞文件快速讀取的方法,所述方法包括以下步驟A、在Fuse內(nèi)核組件上外掛空洞文件處理系統(tǒng);B、所述空洞文件處理系統(tǒng)通過對上層文件系統(tǒng)的文件進行空洞判別,查找文件的空洞頁,給所述空洞頁添加空洞標識;C、在讀取文件過程中,對于帶有空洞標識的空洞頁,所述空洞文件處理系統(tǒng)中止上層文件系統(tǒng)對其讀取。其中,所述步驟B包括Bi、應用程序創(chuàng)建新文件;B2、Fuse內(nèi)核組件判斷所創(chuàng)建的新文件是否是空洞文件,如果是空洞文件,則向所述空洞文件處理系統(tǒng)發(fā)送添加空洞標識的請求;B3、所述空洞文件處理系統(tǒng)接收到所述添加空洞標識的請求后,查找所述文件的空洞頁,并給所述空洞頁添加空洞標識。其中,所述步驟B還包括B4、應用程序向Fuse內(nèi)核組件發(fā)送查詢文件屬性的請求;B5、Fuse內(nèi)核組件接收到所述查詢文件屬性的請求后,判斷所述文件是否是空洞文件,如果是空洞文件,則向所述空洞文件處理系統(tǒng)發(fā)送更新空洞標識的的請求;B6、所述空洞文件處理系統(tǒng)接收到所述更新空洞標識的請求后,判斷所述空洞文件是否需要更新空洞標識,如果需要,則更新所述空洞頁的空洞標識。其中,所述步驟B6包括B61、所述空洞文件處理系統(tǒng)接收到所述更新空洞標識的請求后,查詢所述空洞文件對應的空洞信息的版本號,并將所述版本號發(fā)送給上層文件系統(tǒng);B62、上層文件系統(tǒng)比較所接收到的版本號和上層文件系統(tǒng)中所述空洞文件的空洞信息對應的版本號,如果所接收到的版本號小于上層文件系統(tǒng)中所述空洞文件的空洞信息對應的版本號,則上層文件系統(tǒng)將增量的空洞頁屬性發(fā)送給所述空洞文件處理系統(tǒng);B63、所述空洞文件處理系統(tǒng)根據(jù)所述增量的空洞頁屬性更新所述空洞標識。其中,所述步驟C包括Cl、應用程序向Fuse內(nèi)核組件發(fā)送讀取頁請求;C2、Fuse內(nèi)核組件接收到所述讀取頁請求后,向所述空洞文件處理系統(tǒng)發(fā)送檢查空洞的請求;C3、所述空洞文件處理系統(tǒng)接收到檢查空洞的請求后,根據(jù)所述空洞標識判斷所述讀取頁是否是空洞頁,如果是空洞頁,則中止上層文件系統(tǒng)對其讀取,直接返回到應用程序,反之,向Fuse內(nèi)核組件發(fā)送讀取請求,F(xiàn)use內(nèi)核讀取所述讀取頁后將其返回給應用程序。根據(jù)本發(fā)明的另一方面,提供了一種上層文件系統(tǒng)對空洞文件快速讀取的系統(tǒng),所述系統(tǒng)包括上層文件系統(tǒng),用于讀取文件頁;Fuse內(nèi)核組件,用于向空洞文件處理系統(tǒng)發(fā)送檢查空洞的請求,并在所述空洞文件處理系統(tǒng)反饋不是空洞時,向上層文件系統(tǒng)發(fā)送讀取文件頁的請求;外掛在所述Fuse內(nèi)核組件的空洞文件處理系統(tǒng);其中,所述空洞文件處理系統(tǒng)通過對上層文件系統(tǒng)的文件進行空洞判別,查找文件的空洞頁,給所述空洞頁添加空洞標識;在讀取文件過程中,對于帶有空洞標識的空洞頁,所述空洞文件處理系統(tǒng)中止上層文件系統(tǒng)對其讀取。其中,所述系統(tǒng)還包括應用程序,用于向所述Fuse內(nèi)核組件發(fā)送讀取頁請求,并接收所述讀取頁。Fuse上層模塊,用于負責所述Fuse內(nèi)核組件和所述上層文件系統(tǒng)之間的通信。其中,所述應用程序還用于向Fuse內(nèi)核組件發(fā)送創(chuàng)建新文件的請求;所述Fuse內(nèi)核組件還用于判斷所創(chuàng)建的文件是否是空洞文件,如果是空洞文件,則向所述空洞文件處理系統(tǒng)發(fā)送添加空洞標識的請求;所述空洞文件處理系統(tǒng)還用于在接收到所述添加空洞標識的請求后,查找所述文件的空洞頁,并給所述空洞頁添加空洞標識。其中,所述應用程序還用于向Fuse內(nèi)核組件發(fā)送查詢文件屬性的請求;所述Fuse內(nèi)核組件還用于在接收到所述查詢文件屬性的請求后,判斷所述文件是否是空洞文件,如果是空洞文件,則向所述空洞文件處理系統(tǒng)發(fā)送更新空洞標識的的請求;所述空洞文件處理系統(tǒng)還用于接收到所述更新空洞標識的請求后,判斷所述空洞文件是否需要更新空洞標識,如果需要,則查找所述文件的空洞頁,更新所述空洞頁的空洞標識。其中,所述應用程序還用于向Fuse內(nèi)核組件發(fā)送讀取頁請求;所述Fuse內(nèi)核組件還用于接收到所述讀取頁請求后,向所述空洞文件處理系統(tǒng)發(fā)送檢查空洞的請求;所述空洞文件處理系統(tǒng)還用于在接收到檢查空洞的請求后,根據(jù)所述的空洞標識判斷所述讀取頁是否是空洞頁,如果是空洞頁,則中止上層文件系統(tǒng)對其讀取,直接返回到應用程序,反之,向Fuse內(nèi)核組件發(fā)送讀取請求,F(xiàn)use內(nèi)核讀取所述讀取頁后將其返回給應用程序。與現(xiàn)有技術相比較,本發(fā)明的有益效果在于在使用Fuse為posix服務提供擴展時,提高讀取空洞文件的速度,并降低讀取空洞文件時給系統(tǒng)內(nèi)存復制帶來的壓力。圖1是本發(fā)明實施例提供的一種上層文件系統(tǒng)對空洞文件快速讀取的方法的原理圖;圖2是本發(fā)明實施例提供的新建文件時標記空洞的方法的流程圖;圖3是本發(fā)明實施例提供的讀取文件屬性時標記空洞的方法的流程圖;圖4是本發(fā)明實施例提供的一種上層文件系統(tǒng)對空洞文件快速讀取的方法的流程圖5是本發(fā)明實施例提供的一種上層文件系統(tǒng)對空洞文件快速讀取的系統(tǒng)的結(jié)構(gòu)圖。具體實施例方式以下結(jié)合附圖對本發(fā)明的優(yōu)選實施例進行詳細說明,應當理解,以下所說明的優(yōu)選實施例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明。圖1是本發(fā)明實施例提供的一種上層文件系統(tǒng)對空洞文件快速讀取的方法的原理圖,如圖1所示,所述方法包括以下步驟步驟S101,在Fuse內(nèi)核組件上外掛空洞文件處理系統(tǒng);Fuse包括Fuse內(nèi)核組件和Fuse上層模塊,其中,F(xiàn)use內(nèi)核組件和空洞文件處理系統(tǒng)存在接口,F(xiàn)use內(nèi)核組件接收到內(nèi)核的頁請求后,會通過其與空洞文件處理系統(tǒng)的接口,請求空洞文件處理系統(tǒng)判別所要讀取的頁是否是空洞。步驟S102,所述空洞文件處理系統(tǒng)通過對上層文件系統(tǒng)的文件進行空洞判別,查找并標記文件的空洞頁,給所述空洞頁添加空洞標識;新建文件時,F(xiàn)use內(nèi)核組件發(fā)現(xiàn)新建文件是空洞文件后,調(diào)用空洞文件處理系統(tǒng),記錄空洞信息即空洞的內(nèi)存地址和空洞長度。通過記錄空洞的內(nèi)存地址和空洞長度,在讀取文件時可以判斷所要讀取的頁的內(nèi)存地址是否在某個空洞的內(nèi)存地址及空洞長度確定的地址范圍內(nèi),如果所讀取頁的地址在此范圍內(nèi),則此頁是空洞頁。在查詢已有文件屬性時,F(xiàn)use內(nèi)核組件發(fā)現(xiàn)獲得屬性請求后,調(diào)用空洞文件處理系統(tǒng),空洞文件處理系統(tǒng)查找出該文件的空洞信息版本號,并經(jīng)Fuse內(nèi)核組件轉(zhuǎn)發(fā)給Fuse上層模塊。Fuse上層模塊和上層文件系統(tǒng)獲得上層文件系統(tǒng)的空洞文件對應的空洞信息的版本號,并與接收到的空洞信息版本號相比較,如果獲得的文件的空洞信息版本號大于接收到的版本號,則將增量的空洞屬性返回給Fuse內(nèi)核組件,并轉(zhuǎn)發(fā)給空洞文件處理系統(tǒng),空洞文件處理系統(tǒng)根據(jù)增量的空洞屬性更新空洞信息,記錄增量的空洞的內(nèi)存地址及空洞長度,同時更新空洞信息版本號。步驟S103,在讀取文件過程中,對于帶有空洞標識的空洞頁,所述空洞文件處理系統(tǒng)中止上層文件系統(tǒng)對其讀取。進程讀取文件時,F(xiàn)use內(nèi)核組件調(diào)用空洞文件處理系統(tǒng),檢查所讀取的頁是否是空洞,如果是空洞頁,則空洞文件處理系統(tǒng)不再請求上層文件系統(tǒng)讀取空洞頁,而直接通知進程。圖2是本發(fā)明實施例提供的新建文件時標記空洞的方法的流程圖,如圖2所示,所述方法包括以下步驟步驟S201,應用程序創(chuàng)建新文件。應用程序新建文件之后,調(diào)用標準截長函數(shù)Ftrimcate將新創(chuàng)建的文件的大小改為Ftrimcate長度參數(shù)指定的大小。步驟S202,F(xiàn)use內(nèi)核組件調(diào)用空洞文件處理系統(tǒng)。Fuse內(nèi)核組件發(fā)現(xiàn)截長請求后,比較Ftruncate的長度參數(shù)length與新建文件的長度isize。如果length大于isize,則表明截長后的文件是空洞文件,調(diào)用空洞文件處理系統(tǒng)接口。步驟S203,記錄空洞信息。空洞文件處理系統(tǒng)對空洞文件的空洞進行標識,記錄截長后的文件的當前實際的長度k和空洞信息,所述空洞信息是空洞文件中空洞的地址和空洞的長度??斩次募幚硐到y(tǒng)記錄空洞信息后通知Fuse上層模塊。步驟S204,上層文件系統(tǒng)對空洞文件做相應處理并通知Fuse內(nèi)核組件。Fuse上層模塊接收到空洞處理系統(tǒng)的通知后,轉(zhuǎn)給上層文件系統(tǒng),上層文件系統(tǒng)根據(jù)Ftrimcate請求對上層文件做相應的處理,比如修改文件長度、更新修改時間等屬性,之后,上層文件系統(tǒng)將處理結(jié)果經(jīng)Fuse上層模塊返回給Fuse內(nèi)核組件。步驟S205,F(xiàn)use內(nèi)核組件修改空洞文件的相應信息。Fuse內(nèi)核組件接收上層文件系統(tǒng)的處理結(jié)果后,對所述結(jié)果進行相應的處理,更新索引節(jié)點inode的長度、接收時間、修改時間。步驟S206,F(xiàn)use內(nèi)核組件通知應用程序。Fuse內(nèi)核組件完成相應的處理后,通知應用程序操作成功。圖3是本發(fā)明實施例提供的讀取文件屬性時標記空洞的方法的流程圖,如圖3所示,所述方法包括以下步驟步驟S301,查詢文件屬性。應用程序調(diào)用Istat函數(shù)發(fā)出獲得文件屬性請求,Istat函數(shù)返回文件的相關屬性信息,包括文件所在設備的標識、文件結(jié)點號、文件保護模式、硬連接數(shù)、文件用戶標識、文件用戶組標識、文件所表示的特殊設備文件的設備標識、總大小、文件系統(tǒng)的塊大小、分配給文件的塊的數(shù)量、最后訪問時間、最后修改時間、最后狀態(tài)改變時間。步驟S302,調(diào)用空洞文件處理系統(tǒng)的接口。Fuse內(nèi)核組件檢測到Istat函數(shù)后,判斷Istat函數(shù)對應的緩存是否失效,如果緩存已經(jīng)失效表示其他進程可能對文件進行了修改,F(xiàn)use內(nèi)核組件調(diào)用空洞文件處理系統(tǒng)的接口,請求查詢空洞信息的版本號。步驟S303,查詢當前空洞信息的版本號并發(fā)送給Fuse內(nèi)核組件??斩次募幚硐到y(tǒng)查找出空洞文件的空洞信息的版本號,并將其返回給Fuse內(nèi)核組件,F(xiàn)use內(nèi)核組件將其轉(zhuǎn)發(fā)給Fuse上層模塊。步驟S304,比較空洞信息的版本號,并返回空洞屬性。Fuse上層模塊接收到版本號后,比較上層文件系統(tǒng)的空洞文件對應的空洞信息的版本號和接收到的版本號,如果上層文件系統(tǒng)的空洞文件的空洞信息的版本號大于接收到的版本號,則表明上層文件系統(tǒng)的空洞文件已經(jīng)被其他程序修改,因此要將增量的空洞信息返回給空洞文件處理系統(tǒng),所述空洞信息包括發(fā)生變化的各個空洞的地址及各個空洞的長度。步驟S305,更新空洞信息,并向Fuse內(nèi)核組件發(fā)送空洞信息。空洞文件處理系統(tǒng)接收到增量的空洞信息后修改空洞標識。比如,空洞變成實體數(shù)據(jù)后,在空洞信息中刪除該空洞的地址及空洞的長度;新增空洞后,則記錄新增空洞的地址及空洞長度??斩次募幚硐到y(tǒng)更新了空洞信息后,更改空洞信息的版本號,并將空洞信息發(fā)送給Fuse內(nèi)核組件。步驟S306,轉(zhuǎn)發(fā)空洞信息。空洞文件處理系統(tǒng)更新空洞信息之后,通知Fuse內(nèi)核組件操作成功,F(xiàn)use內(nèi)核組件將文件屬性發(fā)送給應用程序。步驟S307,得到文件屬性。應用程序接收到文件屬性,完成查詢文件屬性的過程。圖4是本發(fā)明實施例提供的一種上層文件系統(tǒng)對空洞文件快速讀取的方法的流程圖,如圖4所示,所述方法包括以下步驟步驟S401,對空洞文件的空洞進行標識。對空洞文件進行空洞標識通常包括兩種情況,一種是新建文件時,對文件的空洞進行標識,另外一種是讀取已有文件屬性時,對文件的空洞進行標識。新建文件時,對空洞的標識執(zhí)行圖2所示的新建文件時標記空洞的方法的流程。讀取已有文件的屬性時,對空洞的標識執(zhí)行圖3所示的讀取文件屬性時標記空洞的方法的流程。步驟S402,應用程序發(fā)出讀取頁面的請求。Mmap建立文件的內(nèi)存地址映射,并讀取相應的內(nèi)存地址對應的內(nèi)容。內(nèi)核如果發(fā)現(xiàn)所述內(nèi)存地址對應的頁沒有被操作系統(tǒng)讀取過,則向注冊的文件系統(tǒng)模塊Fuse發(fā)出讀取頁面請求。步驟S403,F(xiàn)use內(nèi)核組件請求空洞文件處理系統(tǒng)檢查當前讀取是否為空洞。Fuse內(nèi)核組件收到應用程序的讀取頁面請求后,內(nèi)核分配相關頁,F(xiàn)use內(nèi)核組件調(diào)用空洞文件處理系統(tǒng)檢查所述頁是否是空洞。步驟S404,檢查是否是空洞。空洞文件處理系統(tǒng)根據(jù)所述頁的內(nèi)存地址及空洞信息中的空洞地址和空洞長度判斷所述頁是否是空洞,如果所述頁的內(nèi)存地址在某個空洞地址和其空洞長度確定的地址范圍內(nèi),則所述頁是空洞頁,執(zhí)行步驟S405,否則執(zhí)行步驟S406。步驟S405,直接返回到應用程序??斩次募幚硐到y(tǒng)將內(nèi)核分配的頁清零后,直接通知應用程序。步驟S406,轉(zhuǎn)發(fā)讀取請求。如果不是空洞頁,空洞文件處理系統(tǒng)向Fuse內(nèi)核組件發(fā)送讀取請求。Fuse內(nèi)核組件將該請求轉(zhuǎn)發(fā)給上層文件系統(tǒng)。步驟S407,讀取相應的頁。上層文件系統(tǒng)和Fuse上層模塊接收到Fuse內(nèi)核組件的讀取請求后,讀取相關信息并將其返回給Fuse內(nèi)核組件。步驟S408,轉(zhuǎn)發(fā)相應的頁。Fuse內(nèi)核組件得到上層文件系統(tǒng)和Fuse上層模塊返回的相關頁后,將其發(fā)送給應用程序。步驟S409,應用程序得到相關頁。應用程序接收到Fuse內(nèi)核組件發(fā)送的相關頁,完成讀取流程。圖5是本發(fā)明實施例提供的一種上層文件系統(tǒng)對空洞文件快速讀取的系統(tǒng)的結(jié)構(gòu)圖,如圖5所示,所述系統(tǒng)包括應用程序1、Fuse內(nèi)核組件2、空洞文件處理系統(tǒng)3、Fuse上層模塊4和上層文件系統(tǒng)5。其中,F(xiàn)use上層模塊4和上層文件系統(tǒng)5用于讀取文件頁;Fuse內(nèi)核組件2,用于向空洞文件處理系統(tǒng)3發(fā)送檢查空洞的請求,并在空洞文件處理系統(tǒng)3反饋不是空洞時,向Fuse上層模塊4發(fā)送讀取文件頁的請求;空洞文件處理系統(tǒng)3通過對所讀取的文件進行空洞判別,查找并標記文件的空洞頁,給所述空洞頁添加空洞標識。在讀取文件過程中,對于帶有空洞標識的空洞頁,所述空洞文件處理系統(tǒng)2中止上層文件系統(tǒng)5對其讀取。所述系統(tǒng)首先對空洞文件進行空洞標識??斩礃俗R分為兩種情況,一種是在新建文件時進行標識,另外一種是在讀取文件屬性時進行標識。新建文件時,應用程序1創(chuàng)建新文件后,調(diào)用標準截長請求即Ftrimcate函數(shù)將新創(chuàng)建的文件的大小改為函數(shù)長度參數(shù)指定的大小。Fuse內(nèi)核組件2接收到截長請求后,比較Ftruncate的長度參數(shù)length與創(chuàng)建的文件的原來長度isize。如果length大于isize,則表明截長后的文件是空洞文件,調(diào)用空洞文件處理系統(tǒng)3接口,請求添加空洞標識??斩次募幚硐到y(tǒng)3記錄截長后的文件的當前實際的長度k和空洞信息,所述空洞信息包括空洞地址和空洞長度。讀取文件屬性時,應用程序1發(fā)出獲得文件屬性請求。Fuse內(nèi)核組件2發(fā)現(xiàn)獲得文件屬性請求后,如果內(nèi)核發(fā)現(xiàn)文件屬性對應的緩存已經(jīng)失效,則表明文件已被其他程序更改或使用,因此調(diào)用空洞文件處理系統(tǒng)3的接口請求空洞信息的版本號??斩次募幚硐到y(tǒng)3查找出空洞文件的空洞信息的版本號,并將其返回給Fuse內(nèi)核組件2,F(xiàn)use內(nèi)核組件2將其轉(zhuǎn)發(fā)給Fuse上層模塊4。Fuse上層模塊4接收到版本號后,比較上層文件系統(tǒng)5的空洞文件的空洞信息的版本號并與接收到的版本號相比較,如果上層文件系統(tǒng)的空洞文件的空洞信息的版本號大于接收到的版本號,則表明上層文件系統(tǒng)的空洞文件已經(jīng)被其他程序修改,因此要將增量的空洞信息返回給空洞文件處理系統(tǒng)3??斩次募幚硐到y(tǒng)3接收到增量的空洞信息后更新空洞標識。系統(tǒng)在進行了空洞標識后,讀取文件時,根據(jù)空洞標識快速讀取。應用程序1發(fā)出讀取頁面的請求,F(xiàn)use內(nèi)核組件2收到應用程序的讀取頁面請求后,內(nèi)核分配相關頁,F(xiàn)use內(nèi)核組件2調(diào)用空洞文件處理系統(tǒng)3檢查所讀取的頁面是否為空洞,如果是空洞,則直接返回到應用程序1,否則向Fuse內(nèi)核組件2發(fā)送讀取請求。Fuse內(nèi)核組件2將該讀取請求轉(zhuǎn)發(fā)給Fuse上層模塊4和上層文件系統(tǒng)5。Fuse上層模塊4和上層文件系統(tǒng)5接收到Fuse內(nèi)核組件2的讀取請求后,讀取相關信息并將其返回給Fuse內(nèi)核組件2。Fuse內(nèi)核組件2得到Fuse上層模塊4和上層文件系統(tǒng)5返回的相關頁后,將其發(fā)送給應用程序1。綜上所述,本發(fā)明通過預先標記空洞頁,解決了Fuse讀取空洞文件時性能損失嚴重導致系統(tǒng)內(nèi)存復制和進程切換時壓力過大的問題,增強其對空洞文件的支持力度,在存在文件空洞的情況下,可以快速的返回,而不需要走復雜的調(diào)度到上層文件系統(tǒng)中,提高了讀取某些存在大量空洞的文件的性能。盡管上文對本發(fā)明進行了詳細說明,但是本發(fā)明不限于此,本
技術領域
技術人員可以根據(jù)本發(fā)明的原理進行各種修改。因此,凡按照本發(fā)明原理所作的修改,都應當理解為落入本發(fā)明的保護范圍。權(quán)利要求1.一種上層文件系統(tǒng)對空洞文件快速讀取的方法,其特征在于,所述方法包括以下步驟A、在Fuse內(nèi)核組件上外掛空洞文件處理系統(tǒng);B、所述空洞文件處理系統(tǒng)通過對上層文件系統(tǒng)的文件進行空洞判別,查找文件的空洞頁,給所述空洞頁添加空洞標識;C、在讀取文件過程中,對于帶有空洞標識的空洞頁,所述空洞文件處理系統(tǒng)中止上層文件系統(tǒng)對其讀取。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟B包括Bi、應用程序創(chuàng)建新文件;B2、Fuse內(nèi)核組件判斷所創(chuàng)建的新文件是否是空洞文件,如果是空洞文件,則向所述空洞文件處理系統(tǒng)發(fā)送添加空洞標識的請求;B3、所述空洞文件處理系統(tǒng)接收到所述添加空洞標識的請求后,查找所述文件的空洞頁,并給所述空洞頁添加空洞標識。3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟B還包括B4、應用程序向Fuse內(nèi)核組件發(fā)送查詢文件屬性的請求;B5、Fuse內(nèi)核組件接收到所述查詢文件屬性的請求后,判斷所述文件是否是空洞文件,如果是空洞文件,則向所述空洞文件處理系統(tǒng)發(fā)送更新空洞標識的的請求;B6、所述空洞文件處理系統(tǒng)接收到所述更新空洞標識的請求后,判斷所述空洞文件是否需要更新空洞標識,如果需要,則更新所述空洞頁的空洞標識。4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述步驟B6包括B61、所述空洞文件處理系統(tǒng)接收到所述更新空洞標識的請求后,查詢所述空洞文件對應的空洞信息的版本號,并將所述版本號發(fā)送給上層文件系統(tǒng);B62、上層文件系統(tǒng)比較所接收到的版本號和上層文件系統(tǒng)中所述空洞文件的空洞信息對應的版本號,如果所接收到的版本號小于上層文件系統(tǒng)中所述空洞文件的空洞信息對應的版本號,則上層文件系統(tǒng)將增量的空洞頁屬性發(fā)送給所述空洞文件處理系統(tǒng);B63、所述空洞文件處理系統(tǒng)根據(jù)所述增量的空洞頁屬性更新所述空洞標識。5.根據(jù)權(quán)利要求1-4任一項所述的方法,其特征在于,所述步驟C包括Cl、應用程序向Fuse內(nèi)核組件發(fā)送讀取頁請求;C2、Fuse內(nèi)核組件接收到所述讀取頁請求后,向所述空洞文件處理系統(tǒng)發(fā)送檢查空洞的請求;C3、所述空洞文件處理系統(tǒng)接收到檢查空洞的請求后,根據(jù)所述空洞標識判斷所述讀取頁是否是空洞頁,如果是空洞頁,則中止上層文件系統(tǒng)對其讀取,直接返回到應用程序,反之,向Fuse內(nèi)核組件發(fā)送讀取請求,F(xiàn)use內(nèi)核讀取所述讀取頁后將其返回給應用程序。6.一種上層文件系統(tǒng)對空洞文件快速讀取的系統(tǒng),其特征在于,所述系統(tǒng)包括上層文件系統(tǒng),用于讀取文件頁;Fuse內(nèi)核組件,用于向空洞文件處理系統(tǒng)發(fā)送檢查空洞的請求,并在所述空洞文件處理系統(tǒng)反饋不是空洞時,向上層文件系統(tǒng)發(fā)送讀取文件頁的請求;外掛在所述Fuse內(nèi)核組件的空洞文件處理系統(tǒng);其中,所述空洞文件處理系統(tǒng)通過對上層文件系統(tǒng)的文件進行空洞判別,查找文件的空洞頁,給所述空洞頁添加空洞標識;在讀取文件過程中,對于帶有空洞標識的空洞頁,所述空洞文件處理系統(tǒng)中止上層文件系統(tǒng)對其讀取。7.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括應用程序,用于向所述Fuse內(nèi)核組件發(fā)送讀取頁請求,并接收所述讀取頁。Fuse上層模塊,用于負責所述Fuse內(nèi)核組件和所述上層文件系統(tǒng)之間的通信。8.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述應用程序還用于向Fuse內(nèi)核組件發(fā)送創(chuàng)建新文件的請求;所述Fuse內(nèi)核組件還用于判斷所創(chuàng)建的文件是否是空洞文件,如果是空洞文件,則向所述空洞文件處理系統(tǒng)發(fā)送添加空洞標識的請求;所述空洞文件處理系統(tǒng)還用于在接收到所述添加空洞標識的請求后,查找所述文件的空洞頁,并給所述空洞頁添加空洞標識。9.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述應用程序還用于向Fuse內(nèi)核組件發(fā)送查詢文件屬性的請求;所述Fuse內(nèi)核組件還用于在接收到所述查詢文件屬性的請求后,判斷所述文件是否是空洞文件,如果是空洞文件,則向所述空洞文件處理系統(tǒng)發(fā)送更新空洞標識的的請求;所述空洞文件處理系統(tǒng)還用于接收到所述更新空洞標識的請求后,判斷所述空洞文件是否需要更新空洞標識,如果需要,則查找所述文件的空洞頁,更新所述空洞頁的空洞標識。10.根據(jù)權(quán)利要求7-9任一項所述的系統(tǒng),其特征在于,所述應用程序還用于向Fuse內(nèi)核組件發(fā)送讀取頁請求;所述Fuse內(nèi)核組件還用于接收到所述讀取頁請求后,向所述空洞文件處理系統(tǒng)發(fā)送檢查空洞的請求;所述空洞文件處理系統(tǒng)還用于在接收到檢查空洞的請求后,根據(jù)所述的空洞標識判斷所述讀取頁是否是空洞頁,如果是空洞頁,則中止上層文件系統(tǒng)對其讀取,直接返回到應用程序,反之,向Fuse內(nèi)核組件發(fā)送讀取請求,F(xiàn)use內(nèi)核讀取所述讀取頁后將其返回給應用程序。全文摘要本發(fā)明公開了一種上層文件系統(tǒng)對空洞文件快速讀取的方法及系統(tǒng),所述方法包括在Fuse內(nèi)核組件上外掛空洞文件處理系統(tǒng);所述空洞文件處理系統(tǒng)通過對上層文件系統(tǒng)的文件進行空洞判別,查找并標記文件的空洞頁,給所述空洞頁添加空洞標識;在讀取文件過程中,對于帶有空洞標識的空洞頁,所述空洞文件處理系統(tǒng)中止上層文件系統(tǒng)對其讀取。本發(fā)明通過預先標記空洞頁,解決了fuse讀取空洞文件時性能損失嚴重導致系統(tǒng)內(nèi)存復制和進程切換時壓力過大的問題,增強其對空洞文件的支持力度,在存在文件空洞的情況下,可以快速的返回,而不需要走復雜的調(diào)度到上層文件系統(tǒng)中,提高了讀取某些存在大量空洞的文件的性能。文檔編號G06F17/30GK102298619SQ20111022827公開日2011年12月28日申請日期2011年8月10日優(yōu)先權(quán)日2011年8月10日發(fā)明者嚴耀華,朱鵬,王瑜申請人:中興通訊股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
广平县| 鄂尔多斯市| 沾化县| 永康市| 永康市| 江门市| 遵义县| 宜君县| 山丹县| 察哈| 文昌市| 色达县| 鄄城县| 丰镇市| 天镇县| 明溪县| 华池县| 定远县| 京山县| 沙湾县| 永济市| 鹤壁市| 澎湖县| 曲沃县| 罗甸县| 林芝县| 蒲城县| 班戈县| 同德县| 子长县| 郓城县| 泸水县| 泰安市| 吴旗县| 九江县| 阳春市| 阳江市| 通辽市| 卓资县| 中西区| 洛扎县|