麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

一種文件系統緩存增量刷新方法及系統與流程

文檔序號:11286564閱讀:410來源:國知局
一種文件系統緩存增量刷新方法及系統與流程

本發明涉及數據處理技術領域,更具體地說,涉及一種文件系統緩存增量刷新方法及系統。



背景技術:

在海量存儲源文件的場景中,源文件的頻繁創建、讀寫、下盤引出了很多問題,有很多公司針對這種場景將源文件聚合成一個聚合文件。當創建源文件時,為提高寫操作效率,采用寫緩存模式即寫入文件系統緩存即認為數據寫成功,當緩存寫滿時數據落盤。

但是在文件已存入緩存,但緩存尚未存滿情況下,節點異常等情況下會導致使數據丟失。為讓緩存中源文件安全落盤存儲,通常采用定時刷新方案,將整個緩存全部數據刷新落盤。伴隨著用戶頻繁的寫入和定時刷新,落盤的緩存數據大小并不相等,由此為聚合文件的統一操作和小文件的管理會帶來許多麻煩。因此,如何實現緩存安全、高效、快速的刷新是一項亟待解決的問題。



技術實現要素:

有鑒于此,本發明的目的在于提供一種文件系統緩存增量刷新方法,能夠實現緩存安全、高效、快速的刷新。

為實現上述目的,本發明提供如下技術方案:

一種文件系統緩存增量刷新方法,包括:

讀取文件系統緩存記錄信息,所述緩存記錄信息中包含緩存數據大小和緩存偏移量;

判斷所述緩存數據大小是否為0且所述緩存數據量大小是否等于所述緩存數據偏移量;

當所述緩存數據大小不為0且不等于所述緩存數據偏移量時,判斷所述緩存數據大小是否大于所述緩存偏移量;

當所述緩存數據大小大于所述緩存偏移量時,將所述緩存數據偏移量與所述緩存數據大小之間的緩存數據增量刷新落盤。

優選地,所述當所述緩存數據大小大于所述緩存偏移量時,將所述緩存數據偏移量與所述緩存數據大小之間的緩存數據增量刷新落盤后,還包括:

更新所述文件系統緩存數據記錄信息。

優選地,所述讀取文件系統緩存記錄信息,所述緩存記錄信息中包含緩存數據大小和緩存偏移量后,還包括:

判斷所述文件系統緩存數據記錄信息距離上次更新的時間是否大于預設閾值;

當所述文件系統緩存數據記錄信息距離上次更新的時間大于預設閾值時,判斷所述緩存數據大小是否為0且所述緩存數據量大小是否等于所述緩存數據偏移量。

優選地,當所述緩存數據大小小于所述緩存偏移量時,記錄失敗信息。

優選地,當所述緩存數據大小等于0或所述緩存偏移量等于所述緩存數據大小時,再次讀取文件系統緩存記錄信息。

一種文件系統緩存增量刷新系統,包括:

讀取模塊,用于讀取文件系統緩存記錄信息,所述緩存記錄信息中包含緩存數據大小和緩存偏移量;

第一判斷模塊,用于判斷所述緩存數據大小是否為0且所述緩存數據量大小是否等于所述緩存數據偏移量;

第二判斷模塊,用于當所述緩存數據大小不為0且不等于所述緩存數據偏移量時,判斷所述緩存數據大小是否大于所述緩存偏移量;

處理模塊,用于當所述緩存數據大小大于所述緩存偏移量時,將所述緩存數據偏移量與所述緩存數據大小之間的緩存數據增量刷新落盤。

優選地,所述系統還包括:

更新模塊,用于更新所述文件系統緩存數據記錄信息。

優選地,所述系統還包括:

第三判斷模塊,用于判斷所述文件系統緩存數據記錄信息距離上次更新的時間是否大于預設閾值;

當所述文件系統緩存數據記錄信息距離上次更新的時間大于預設閾值時,所述第一判斷模塊判斷所述緩存數據大小是否為0且所述緩存數據量大小是否等于所述緩存數據偏移量。

優選地,當所述緩存數據大小小于所述緩存偏移量時,所述系統還包括:

記錄模塊,用于記錄失敗信息。

優選地,所述系統當所述緩存數據大小等于0或所述緩存偏移量等于所述緩存數據大小時,所述讀取模塊再次讀取文件系統緩存記錄信息。

由上述技術方案可知,本發明提供了一種文件系統緩存增量刷新方法,當需要對文件系統緩存增量進行刷新時,首先讀取文件系統緩存記錄信息,其中,緩存記錄信息中包含緩存數據大小和緩存偏移量;然后判斷緩存數據大小是否為0且所述緩存數據量大小是否等于所述緩存數據偏移量;當緩存數據大小不為0且不等于所述緩存數據偏移量時,判斷緩存數據大小是否大于緩存偏移量;當緩存數據大小大于緩存偏移量時,將緩存數據偏移量與緩存數據大小之間的緩存數據增量刷新落盤。通過在文件系統中記錄緩存的緩存偏移量和緩存大小,并利用緩存偏移量和緩存大小實現緩存數據的增量存儲,解決了定時刷新在不用刷新整個緩存的前提下聚合文件緩存大小不一致的問題,提高了緩存數據的安全性和存儲的高效性。

附圖說明

為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其它的附圖。

圖1為本發明公開的一種文件系統緩存增量刷新方法實施例1的方法流程圖;

圖2為本發明公開的一種文件系統緩存增量刷新方法實施例2的方法流程圖;

圖3為本發明公開的一種文件系統緩存增量刷新系統實施例1的結構示意圖;

圖4為本發明公開的一種文件系統緩存增量刷新系統實施例2的結構示意圖。

具體實施方式

下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其它實施例,都屬于本發明保護的范圍。

為了更加特定地強調實施的獨立性,本說明書涉及許多模塊或單元。舉例而言,模塊或單元可由硬件電路實現,該硬件電路包括特制vlsi電路或門陣列,比如邏輯芯片、晶體管,或其它組件。模塊或單元也可在可編程的硬設備中實現,比如場效可編程門陣列、可編程陣列邏輯、可編程邏輯設備等等。

模塊或單元也可在藉由各種形式的處理器所執行的軟件中實現。比如說,一可執行碼模塊可包括一個或多個實體的或邏輯的計算機指令區塊,該區塊可能形成為,比如說,對象、程序或函數。然而,鑒別模塊或單元的可執行部分不需要物理上放置在一起,但可由存于不同位置的不同指令所組成,當邏輯上組合在一起時,形成模塊或單元且達到該模塊或單元所要求的目的。

實際上,可執行碼模塊或單元可以是一單一指令或多個指令,甚至可以分布在位于不同的程序的數個不同的碼區段,并且橫跨數個存儲設備。同樣地,操作數據可被辨識及顯示于此模塊或單元中,并且可以以任何合適的形式實施且在任何合適的數據結構形式內組織。操作數據可以集合成單一數據集,或可分布在具有不同的存儲設備的不同的位置,且至少部分地只以電子信號方式存在于一系統或網絡。

本說明書所提及的“實施例”或類似用語表示與實施例有關的特性、結構或特征,包括在本發明的至少一實施例中。因此,本說明書所出現的用語“在一實施例中”、“在實施例中”以及類似用語可能但不必然都指向相同實施例。

再者,本發明所述特性、結構或特征可以以任何方式結合在一個或多個實施例中。以下說明將提供許多特定的細節,比如編程序、軟件模塊、用戶選擇、網絡交易、數據庫查詢、數據庫結構、硬件模塊、硬件電路、硬件芯片等例子,以提供對本發明實施例的了解。然而相關領域的普通技術人員將看出本發明,即使沒有利用其中一個或多個特定細節,或利用其它方法、組件、材料等亦可實施。另一方面,為避免混淆本發明,公知的結構、材料或操作并沒有詳細描述。

如圖1所示,為本發明公開的一種文件系統緩存增量刷新方法實施例1的流程圖,本方法包括以下步驟:

s101、讀取文件系統緩存記錄信息,其中,緩存記錄信息中包含緩存數據大小和緩存偏移量;

聚合文件由多個固定大小(例如:4mb)的對象組成,每個對象由多個源文件組成,源文件大小限定小于對象的大小,該文以源文件最大512kb為例說明。當在客戶端寫小于512kb的小源文件時,源文件數據不直接下盤,而是寫入到與聚合文件對象大小相等的緩存中。為方便文件系統緩存增量刷新,需記錄緩存偏移量(buf_offset)和緩存數據大小(buf_size)。

s102、判斷緩存數據大小是否為0且緩存數據量大小是否等于緩存數據偏移量;

當讀取了文件系統緩存記錄信息后,進一步判斷讀取的緩存數據大小是否為0且緩存數據量大小是否等于緩存數據偏移量,當判斷緩存數據大小為0時,或緩存數據量大小等于緩存數據偏移量時,返回重新讀取文件系統緩存記錄信息。

s103、當緩存數據大小不為0且不等于所述緩存數據偏移量時,判斷緩存數據大小是否大于緩存偏移量;

當判斷緩存數據大小不為0且不等于所述緩存數據偏移量時,進一步判斷緩存數據大小是否大于緩存偏移量。

s104、當緩存數據大小大于緩存偏移量時,將緩存數據偏移量與緩存數據大小之間的緩存數據增量刷新落盤。

當判斷緩存數據大小大于緩存偏移量時,將新寫入的源文件緩存刷新落盤,即將緩存數據偏移量與緩存數據大小之間的緩存數據增量刷新落盤。

綜上所述,在上述實施例中,當需要對文件系統緩存增量進行刷新時,首先讀取文件系統緩存記錄信息,其中,緩存記錄信息中包含緩存數據大小和緩存偏移量;然后判斷緩存數據大小是否為0且所述緩存數據量大小是否等于所述緩存數據偏移量;當緩存數據大小不為0且不等于所述緩存數據偏移量時,判斷緩存數據大小是否大于緩存偏移量;當緩存數據大小大于緩存偏移量時,將緩存數據偏移量與緩存數據大小之間的緩存數據增量刷新落盤。通過在文件系統中記錄緩存的緩存偏移量和緩存大小,并利用緩存偏移量和緩存大小實現緩存數據的增量存儲,解決了定時刷新在不用刷新整個緩存的前提下聚合文件緩存大小不一致的問題,提高了緩存數據的安全性和存儲的高效性。

如圖2所示,為本發明公開的一種文件系統緩存增量刷新方法實施例2的流程圖,本方法包括以下步驟:

s201、讀取文件系統緩存記錄信息,其中,緩存記錄信息中包含緩存數據大小和緩存偏移量;

聚合文件由多個固定大小(例如:4mb)的對象組成,每個對象由多個源文件組成,源文件大小限定小于對象的大小,該文以源文件最大512kb為例說明。當在客戶端寫小于512kb的小源文件時,源文件數據不直接下盤,而是寫入到與聚合文件對象大小相等的緩存中。為方便文件系統緩存增量刷新,需記錄緩存偏移量(buf_offset)和緩存數據大小(buf_size)。

s202、判斷文件系統緩存數據記錄信息距離上次更新的時間是否大于預設閾值;

當讀取到文件系統緩存記錄信息后,進一步判斷文件系統緩存數據記錄信息距離上次更新的時間是否大于預設閾值,即確保聚合文件緩存一定時間內未修改,以提高源文件寫緩存的連續性。

s203、當文件系統緩存數據記錄信息距離上次更新的時間大于預設閾值時,判斷緩存數據大小是否為0且緩存數據量大小是否等于緩存數據偏移量;

當文件系統緩存數據記錄信息距離上次更新的時間大于預設閾值時,進一步判斷緩存數據大小是否為0且所述緩存數據量大小是否等于所述緩存數據偏移量。

s204、當緩存數據大小不為0且不等于緩存數據偏移量時,判斷緩存數據大小是否大于緩存偏移量;

當判斷緩存數據大小不為0且不等于所述緩存數據偏移量時,進一步判斷緩存數據大小是否大于緩存偏移量。

s205、當緩存數據大小等于0或緩存偏移量等于所述緩存數據大小時,再次讀取文件系統緩存記錄信息;

當緩存數據大小等于0或緩存偏移量等于緩存數據大小時,返回重新讀取文件系統緩存記錄信息。

s206、當緩存數據大小大于緩存偏移量時,將緩存數據偏移量與緩存數據大小之間的緩存數據增量刷新落盤;

當判斷緩存數據大小大于緩存偏移量時,將新寫入的源文件緩存刷新落盤,即將緩存數據偏移量與緩存數據大小之間的緩存數據增量刷新落盤。

s207、更新文件系統緩存數據記錄信息;

當將緩存數據偏移量與緩存數據大小之間的緩存數據增量刷新落盤后,進一步實時更新文件系統緩存數據記錄信息。

s208、當緩存數據大小小于緩存偏移量時,記錄失敗信息。

綜上所述,在上述實施例中,當需要對文件系統緩存增量進行刷新時,首先讀取文件系統緩存記錄信息,其中,緩存記錄信息中包含緩存數據大小和緩存偏移量;然后判斷緩存數據大小是否為0且緩存數據量大小是否等于緩存數據偏移量;當緩存數據大小不為0且不等于所述緩存數據偏移量時,判斷緩存數據大小是否大于緩存偏移量;當緩存數據大小大于緩存偏移量時,將緩存數據偏移量與緩存數據大小之間的緩存數據增量刷新落盤。通過在文件系統中記錄緩存的緩存偏移量和緩存大小,并利用緩存偏移量和緩存大小實現緩存數據的增量存儲,解決了定時刷新在不用刷新整個緩存的前提下聚合文件緩存大小不一致的問題,提高了緩存數據的安全性和存儲的高效性。

如圖3所示,為本發明公開的一種文件系統緩存增量刷新系統實施例1的結構示意圖,本系統包括:

讀取模塊301,用于讀取文件系統緩存記錄信息,其中,緩存記錄信息中包含緩存數據大小和緩存偏移量;

聚合文件由多個固定大小(例如:4mb)的對象組成,每個對象由多個源文件組成,源文件大小限定小于對象的大小,該文以源文件最大512kb為例說明。當在客戶端寫小于512kb的小源文件時,源文件數據不直接下盤,而是寫入到與聚合文件對象大小相等的緩存中。為方便文件系統緩存增量刷新,需記錄緩存偏移量(buf_offset)和緩存數據大小(buf_size)。

第一判斷模塊302,用于判斷緩存數據大小是否為0且所述緩存數據量大小是否等于所述緩存數據偏移量;

當讀取了文件系統緩存記錄信息后,進一步判斷讀取的緩存數據大小是否為0且緩存數據量大小是否等于緩存數據偏移量,當判斷緩存數據大小為0時,或緩存數據量大小等于緩存數據偏移量時,返回重新讀取文件系統緩存記錄信息。

第二判斷模塊303,用于當緩存數據大小不為0且不等于所述緩存數據偏移量時,判斷緩存數據大小是否大于緩存偏移量;

當判斷緩存數據大小不為0且不等于所述緩存數據偏移量時,進一步判斷緩存數據大小是否大于緩存偏移量。

處理模塊304,用于當緩存數據大小大于緩存偏移量時,將緩存數據偏移量與緩存數據大小之間的緩存數據增量刷新落盤。

當判斷緩存數據大小大于緩存偏移量時,將新寫入的源文件緩存刷新落盤,即將緩存數據偏移量與緩存數據大小之間的緩存數據增量刷新落盤。

綜上所述,在上述實施例中,當需要對文件系統緩存增量進行刷新時,首先讀取文件系統緩存記錄信息,其中,緩存記錄信息中包含緩存數據大小和緩存偏移量;然后判斷緩存數據大小是否為0且所述緩存數據量大小是否等于所述緩存數據偏移量;當緩存數據大小不為0且不等于所述緩存數據偏移量時,判斷緩存數據大小是否大于緩存偏移量;當緩存數據大小大于緩存偏移量時,將緩存數據偏移量與緩存數據大小之間的緩存數據增量刷新落盤。通過在文件系統中記錄緩存的緩存偏移量和緩存大小,并利用緩存偏移量和緩存大小實現緩存數據的增量存儲,解決了定時刷新在不用刷新整個緩存的前提下聚合文件緩存大小不一致的問題,提高了緩存數據的安全性和存儲的高效性。

如圖4所示,為本發明公開的一種文件系統緩存增量刷新系統實施例2的結構示意圖,本系統包括:

讀取模塊401,用于讀取文件系統緩存記錄信息,其中,緩存記錄信息中包含緩存數據大小和緩存偏移量;

聚合文件由多個固定大小(例如:4mb)的對象組成,每個對象由多個源文件組成,源文件大小限定小于對象的大小,該文以源文件最大512kb為例說明。當在客戶端寫小于512kb的小源文件時,源文件數據不直接下盤,而是寫入到與聚合文件對象大小相等的緩存中。為方便文件系統緩存增量刷新,需記錄緩存偏移量(buf_offset)和緩存數據大小(buf_size)。

第三判斷模塊402,用于判斷文件系統緩存數據記錄信息距離上次更新的時間是否大于預設閾值;

當讀取到文件系統緩存記錄信息后,進一步判斷文件系統緩存數據記錄信息距離上次更新的時間是否大于預設閾值,即確保聚合文件緩存一定時間內未修改,以提高源文件寫緩存的連續性。

第一判斷模塊403,用于當文件系統緩存數據記錄信息距離上次更新的時間大于預設閾值時,判斷緩存數據大小是否為0且所述緩存數據量大小是否等于所述緩存數據偏移量;

當文件系統緩存數據記錄信息距離上次更新的時間大于預設閾值時,進一步判斷緩存數據大小是否為0且所述緩存數據量大小是否等于所述緩存數據偏移量。

第二判斷模塊404,用于當緩存數據大小不為0且不等于所述緩存數據偏移量時,判斷緩存數據大小是否大于緩存偏移量;

當判斷緩存數據大小不為0且不等于所述緩存數據偏移量時,進一步判斷緩存數據大小是否大于緩存偏移量。

讀取模塊401,還用于當緩存數據大小等于0或緩存偏移量等于所述緩存數據大小時,再次讀取文件系統緩存記錄信息;

當緩存數據大小等于0或緩存偏移量等于緩存數據大小時,返回重新讀取文件系統緩存記錄信息。

處理模塊405,用于當緩存數據大小大于緩存偏移量時,將緩存數據偏移量與緩存數據大小之間的緩存數據增量刷新落盤;

當判斷緩存數據大小大于緩存偏移量時,將新寫入的源文件緩存刷新落盤,即將緩存數據偏移量與緩存數據大小之間的緩存數據增量刷新落盤。

更新模塊406,用于更新文件系統緩存數據記錄信息;

當將緩存數據偏移量與緩存數據大小之間的緩存數據增量刷新落盤后,進一步實時更新文件系統緩存數據記錄信息。

記錄模塊407,用于當緩存數據大小小于緩存偏移量時,記錄失敗信息。

綜上所述,在上述實施例中,當需要對文件系統緩存增量進行刷新時,首先讀取文件系統緩存記錄信息,其中,緩存記錄信息中包含緩存數據大小和緩存偏移量;然后判斷緩存數據大小是否為0且緩存數據量大小是否等于緩存數據偏移量;當緩存數據大小不為0且不等于所述緩存數據偏移量時,判斷緩存數據大小是否大于緩存偏移量;當緩存數據大小大于緩存偏移量時,將緩存數據偏移量與緩存數據大小之間的緩存數據增量刷新落盤。通過在文件系統中記錄緩存的緩存偏移量和緩存大小,并利用緩存偏移量和緩存大小實現緩存數據的增量存儲,解決了定時刷新在不用刷新整個緩存的前提下聚合文件緩存大小不一致的問題,提高了緩存數據的安全性和存儲的高效性。

本說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其它實施例的不同之處,各個實施例之間相同相似部分互相參見即可。

對所公開的實施例的上述說明,使本領域專業技術人員能夠實現或使用本發明。對這些實施例的多種修改對本領域的專業技術人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發明的精神或范圍的情況下,在其它實施例中實現。因此,本發明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。

當前第1頁1 2 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
主站蜘蛛池模板: 银川市| 延边| 周至县| 淳化县| 桂平市| 桃园市| 盐边县| 镇雄县| 锡林浩特市| 赤水市| 朝阳市| 安陆市| 鹿泉市| 桓台县| 绥滨县| 桑植县| 仁布县| 大同县| 宿松县| 莱州市| 柳江县| 砚山县| 两当县| 盐山县| 苏尼特左旗| 松原市| 永春县| 泰和县| 开封县| 沈丘县| 安阳市| 竹溪县| 长沙县| 益阳市| 抚顺市| 新建县| 万荣县| 惠水县| 天全县| 天门市| 日照市|