一種基于超級塊及細粒度內(nèi)存分配的數(shù)據(jù)掉電保護方法
【專利摘要】本發(fā)明提供一種基于超級塊及細粒度內(nèi)存分配的數(shù)據(jù)掉電保護方法,其方法提供有效的非易失內(nèi)存分配方案,使得linux原有內(nèi)存分配函數(shù)適用于非易失內(nèi)存,實現(xiàn)非易失內(nèi)存和普通內(nèi)存的無縫結合;提供通過超級塊記錄數(shù)據(jù)區(qū)塊,可快速重構數(shù)據(jù)結構的方法。本發(fā)明借助linux內(nèi)核內(nèi)存分配方案,在非易失內(nèi)存隨意分配任意大小內(nèi)存,實現(xiàn)非易失內(nèi)存與普通內(nèi)存無縫結合;并且記錄超級塊;系統(tǒng)掉電后,非易失內(nèi)存中數(shù)據(jù)在BIOS控制下拷貝至SSD硬盤;系統(tǒng)重啟后,SSD硬盤中數(shù)據(jù)在BIOS控制下拷貝至非易失內(nèi)存,數(shù)據(jù)恢復模塊根據(jù)超級塊中記錄依次找到臟頁并將臟頁數(shù)據(jù)刷寫回磁盤的方法,可擴展型強。
【專利說明】
一種基于超級塊及細粒度內(nèi)存分配的數(shù)據(jù)掉電保護方法
【技術領域】
[0001]本發(fā)明涉及計算機系統(tǒng)及存儲領域,具體地說是一種基于超級塊及細粒度內(nèi)存分配的數(shù)據(jù)掉電保護方法。
【背景技術】
[0002]當向存儲系統(tǒng)中磁盤寫數(shù)據(jù)時,為了加快速度,數(shù)據(jù)首先寫到緩存模塊,緩存數(shù)據(jù)到磁盤的刷寫異步完成。由于緩存所在的內(nèi)存是易失性存儲介質(zhì),當系統(tǒng)異常斷電時,還未寫入到磁盤的緩存數(shù)據(jù)會丟失。
[0003]一種數(shù)據(jù)緩存保護方法是系統(tǒng)掉電后,通過UPS電源或者電池提供最小系統(tǒng),此時CPU可繼續(xù)工作,完成數(shù)據(jù)到磁盤的刷寫,此種方法對電池的要求較高,增加成本;另一種掉電保護方法是系統(tǒng)掉電后,電池供電非易失內(nèi)存,緩存數(shù)據(jù)存放于非易失內(nèi)存上,并由B1S負責把非易失內(nèi)存中的數(shù)據(jù)拷貝至Flash ;當系統(tǒng)上電后,B1S首先負責把Flash中的數(shù)據(jù)拷貝回非易失內(nèi)存,數(shù)據(jù)刷寫模塊刷寫臟頁回磁盤。
[0004]針對第二種方法,Linux內(nèi)核啟動時,B1S探測內(nèi)存類型,而非易失內(nèi)存類型不在識別范圍,系統(tǒng)不能識別到非易失內(nèi)存,導致緩存數(shù)據(jù)不能有效存儲于非易失內(nèi)存區(qū)中。一種做法是修改內(nèi)核,使得系統(tǒng)啟動能夠識別到非易失內(nèi)存,并抽象為字符設備或者塊設備使用。這種方式能夠保護數(shù)據(jù),但擴展性較弱,內(nèi)存分配不夠靈活,容易造成內(nèi)存浪費。
[0005]本發(fā)明將解決高效管理非易失內(nèi)存難題和數(shù)據(jù)快速重建的難題。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的目的是克服現(xiàn)有技術中存在的不足,提供一種基于超級塊及細粒度內(nèi)存分配的數(shù)據(jù)掉電保護方法。
[0007]本發(fā)明的技術方案是按以下方式實現(xiàn)的,其方法中提供有效的非易失內(nèi)存分配方案,使得Iinux原有內(nèi)存分配函數(shù)適用于非易失內(nèi)存,實現(xiàn)非易失內(nèi)存和普通內(nèi)存的無縫結合;提供通過超級塊記錄數(shù)據(jù)區(qū)塊,可快速重構數(shù)據(jù)結構的方法;
非易失內(nèi)存細粒度分配:
Linux內(nèi)核識別到內(nèi)存段后,不再通過虛擬設備的方式來訪問,而是修改內(nèi)核使得非易失內(nèi)存和普通內(nèi)存實現(xiàn)無縫結合,通過Iinux原有的分配方案可以在非易失內(nèi)存區(qū)分配;將B1S識別到的內(nèi)存建立zone區(qū),加入頁表機制及buddy機制,使得對非易失內(nèi)存段的訪問和管理和普通內(nèi)存相似;
超級塊區(qū)段管理:
為了實現(xiàn)系統(tǒng)重啟后數(shù)據(jù)結構的快速重構,借助于超級塊元數(shù)據(jù)存儲機制,當數(shù)據(jù)需要保護時,首先在非易失內(nèi)存申請空間,然后在超級塊區(qū)做記錄;通過讀取超級塊中元數(shù)據(jù)可以方便找到保護數(shù)據(jù);超級塊位于非易失內(nèi)存區(qū)首部和尾部,通過首尾校驗的方式可以確保元數(shù)據(jù)的一致性。
[0008]本發(fā)明的優(yōu)點是: 本發(fā)明的一種基于超級塊及細粒度內(nèi)存分配的數(shù)據(jù)掉電保護方法借助Iinux內(nèi)核內(nèi)存分配方案,在非易失內(nèi)存隨意分配任意大小內(nèi)存,實現(xiàn)非易失內(nèi)存與普通內(nèi)存無縫結合;并且記錄超級塊;系統(tǒng)掉電后,非易失內(nèi)存中數(shù)據(jù)在B1S控制下拷貝至SSD硬盤;系統(tǒng)重啟后,SSD硬盤中數(shù)據(jù)在B1S控制下拷貝至非易失內(nèi)存,數(shù)據(jù)恢復模塊根據(jù)超級塊中記錄依次找到臟頁并將臟頁數(shù)據(jù)刷寫回磁盤的方法,可擴展型強。
【專利附圖】
【附圖說明】
[0009]圖1為BBU掉電保護結構示意圖。
[0010]圖2為掉電保護流程示意圖。
【具體實施方式】
[0011]下面結合附圖對本發(fā)明的一種基于超級塊及細粒度內(nèi)存分配的數(shù)據(jù)掉電保護方法作以下詳細說明。
[0012]如圖1-2所示,本發(fā)明的一種基于超級塊及細粒度內(nèi)存分配的數(shù)據(jù)掉電保護方法,其方法中提供有效的非易失內(nèi)存分配方案,使得Iinux原有內(nèi)存分配函數(shù)適用于非易失內(nèi)存,實現(xiàn)非易失內(nèi)存和普通內(nèi)存的無縫結合;提供通過超級塊記錄數(shù)據(jù)區(qū)塊,可快速重構數(shù)據(jù)結構的方法;
非易失內(nèi)存細粒度分配:
Linux內(nèi)核識別到內(nèi)存段后,不再通過虛擬設備的方式來訪問,而是修改內(nèi)核使得非易失內(nèi)存和普通內(nèi)存實現(xiàn)無縫結合,通過Iinux原有的分配方案可以在非易失內(nèi)存區(qū)分配;將B1S識別到的內(nèi)存建立zone區(qū),加入頁表機制及buddy機制,使得對非易失內(nèi)存段的訪問和管理和普通內(nèi)存相似;
超級塊區(qū)段管理:
為了實現(xiàn)系統(tǒng)重啟后數(shù)據(jù)結構的快速重構,借助于超級塊元數(shù)據(jù)存儲機制,當數(shù)據(jù)需要保護時,首先在非易失內(nèi)存申請空間,然后在超級塊區(qū)做記錄;通過讀取超級塊中元數(shù)據(jù)可以方便找到保護數(shù)據(jù);超級塊位于非易失內(nèi)存區(qū)首部和尾部,通過首尾校驗的方式可以確保元數(shù)據(jù)的一致性。
[0013]如圖1所示,系統(tǒng)內(nèi)存分為兩部分:普通內(nèi)存和非易失內(nèi)存,普通內(nèi)存掉電后數(shù)據(jù)完全丟失,非易失內(nèi)存掉電后,可由BBU模塊檢測意外掉電,電池供電,數(shù)據(jù)繼續(xù)存在,并在B1S控制下寫入SSD硬盤。
[0014]掉電保護示意圖如圖2所示,正常工作時,緩存數(shù)據(jù)存放于非易失內(nèi)存段,當系統(tǒng)掉電時,普通內(nèi)存、CPU、硬盤等組件都不在工作,BBU模塊檢測出掉電事件,電池給非易失內(nèi)存供電,B1S相關程序完全拷貝非易失數(shù)據(jù)至SSD硬盤;人為重啟后,B1S首先從SSD硬盤拷貝數(shù)據(jù)至非易失內(nèi)存,還原掉電前狀態(tài),加載數(shù)據(jù)恢復模塊,根據(jù)超級塊元數(shù)據(jù)信息以此找到臟頁刷寫回磁盤。
[0015]非易失內(nèi)存段是B1S能夠識別的物理內(nèi)存,當?shù)綦姇r,BBU能夠繼續(xù)給該內(nèi)存供電。
[0016]細粒度分配指用戶能夠繼續(xù)使用Iinux內(nèi)核提供的分配函數(shù)分配任意大小的內(nèi)存,實現(xiàn)普通內(nèi)存管理和非易失內(nèi)存管理的無縫結合。
[0017]本發(fā)明的一種基于超級塊及細粒度內(nèi)存分配的數(shù)據(jù)掉電保護方法其加工制作非常簡單方便,按照說明書附圖所示即可加工。
[0018]除說明書所述的技術特征外,均為本專業(yè)技術人員的已知技術。
【權利要求】
1.一種基于超級塊及細粒度內(nèi)存分配的數(shù)據(jù)掉電保護方法,其特征在于提供有效的非易失內(nèi)存分配方案,使得Iinux原有內(nèi)存分配函數(shù)適用于非易失內(nèi)存,實現(xiàn)非易失內(nèi)存和普通內(nèi)存的無縫結合;提供通過超級塊記錄數(shù)據(jù)區(qū)塊,可快速重構數(shù)據(jù)結構的方法; 非易失內(nèi)存細粒度分配: Linux內(nèi)核識別到內(nèi)存段后,不再通過虛擬設備的方式來訪問,而是修改內(nèi)核使得非易失內(nèi)存和普通內(nèi)存實現(xiàn)無縫結合,通過Iinux原有的分配方案可以在非易失內(nèi)存區(qū)分配;將B1S識別到的內(nèi)存建立zone區(qū),加入頁表機制及buddy機制,使得對非易失內(nèi)存段的訪問和管理和普通內(nèi)存相似; 超級塊區(qū)段管理: 為了實現(xiàn)系統(tǒng)重啟后數(shù)據(jù)結構的快速重構,借助于超級塊元數(shù)據(jù)存儲機制,當數(shù)據(jù)需要保護時,首先在非易失內(nèi)存申請空間,然后在超級塊區(qū)做記錄;通過讀取超級塊中元數(shù)據(jù)可以方便找到保護數(shù)據(jù);超級塊位于非易失內(nèi)存區(qū)首部和尾部,通過首尾校驗的方式可以確保元數(shù)據(jù)的一致性。
【文檔編號】G06F12/08GK104268103SQ201410500850
【公開日】2015年1月7日 申請日期:2014年9月26日 優(yōu)先權日:2014年9月26日
【發(fā)明者】繆祥虎, 吳慶民 申請人:浪潮電子信息產(chǎn)業(yè)股份有限公司