間(根據(jù)BBU的型號而決定)的供電,使內(nèi)存(DDR3)中的數(shù)據(jù)不丟失。操作系 統(tǒng)需要在BBU電力耗盡之前快速的將內(nèi)存中的數(shù)據(jù)寫入系統(tǒng)盤,避免斷電造成內(nèi)存數(shù)據(jù)丟 失。
[0052] 但是,mSATA接口 SSD的寫性能不理想,通過長期測試,大致總結(jié)出下述2個主要 問題:
[0053] 問題1 :對mSATA接口 SSD進(jìn)行IMB(IA)大?。╉樞?qū)憸y試,如圖2A所示的測試 結(jié)果,當(dāng)寫入數(shù)據(jù)量增大時,寫入速度由開始的75MB/S下降至20MB/S,不滿足設(shè)備斷電時 系統(tǒng)需求的寫入表現(xiàn)。
[0054] 可以理解的,SSD內(nèi)的可寫空間減少會導(dǎo)致SSD的寫入速度降低。
[0055] 問題2 :對mSATA接口 SSD進(jìn)行隨機(jī)寫(如16并發(fā)4K隨機(jī)寫)之后,進(jìn)行IMB (1/ 〇大小)順序?qū)憸y試,如圖2B所示的測試結(jié)果,順序?qū)懙膶懭胨俣炔▌雍艽?,平均寫入速?由120MB/S降低為60MB/S,不滿足設(shè)備斷電時系統(tǒng)需求的寫入表現(xiàn)。
[0056] 可以理解的,由于SSD具有磨損均衡(Wear Leveling)特性,因此,隨機(jī)寫會造成 SSD上的物理碎片空間增多,連續(xù)可寫空間減少。雖然所述緩存區(qū)的邏輯地址連續(xù),但物理 地址連續(xù)性差,導(dǎo)致IMB大小的順序?qū)懙膶懭胨俣却蠓陆?。如果SSD內(nèi)的物理碎片空間 超過一定比例,在進(jìn)行順序?qū)懙耐瑫r,SSD控制器在后臺進(jìn)行碎片整理,會導(dǎo)致寫入速度的 波動。
[0057] 需要說明的,在圖2A、圖2B中,橫坐標(biāo)表示寫入的數(shù)據(jù)量,縱坐標(biāo)表示寫入速度。
[0058] 針對上述技術(shù)問題,本發(fā)明實(shí)施例公開了一種設(shè)備掉電時的數(shù)據(jù)保存方法及裝 置,當(dāng)電源上電時,對系統(tǒng)盤中的緩存區(qū)進(jìn)行Trim操作,并通過順序?qū)懙姆绞綄憹M所述緩 存區(qū),可實(shí)現(xiàn)占用所述系統(tǒng)盤內(nèi)的大段的連續(xù)可寫空間;當(dāng)電源斷電時,對寫滿的所述緩存 區(qū)進(jìn)行Trim操作,為內(nèi)存中的數(shù)據(jù)騰出所述大段的連續(xù)可寫空間,可實(shí)現(xiàn)在將內(nèi)存數(shù)據(jù)快 速寫入所述系統(tǒng)盤。需要說明的,本發(fā)明實(shí)施例中涉及的所述設(shè)備是指存儲設(shè)備,例如磁盤 陣列。以下分別進(jìn)行詳細(xì)說明。
[0059] 參見圖3,圖3是本發(fā)明實(shí)施例提供的一種設(shè)備掉電時的數(shù)據(jù)保存方法的流程示 意圖。在圖3所示的方法中,當(dāng)電源上電時,對系統(tǒng)盤中的緩存區(qū)進(jìn)行Trim操作,并通過順 序?qū)懙姆绞綄憹M所述緩存區(qū),可實(shí)現(xiàn)盡可能多的占用連續(xù)的可寫空間;當(dāng)電源斷電時,通過 對寫滿的所述緩存區(qū)進(jìn)行Trim操作,可實(shí)現(xiàn)騰出已被占用的連續(xù)的可寫空間,將內(nèi)存中的 數(shù)據(jù)寫入所述緩存區(qū),可實(shí)現(xiàn)將內(nèi)存數(shù)據(jù)快速的寫入所述緩存區(qū)。如圖3所示,該方法包 括:
[0060] S101,當(dāng)檢測到設(shè)備的上電信號時,將系統(tǒng)盤的緩存區(qū)內(nèi)的數(shù)據(jù)保存到第一備份 位置;所述系統(tǒng)盤是固態(tài)硬盤,包括:所述緩存區(qū)、操作系統(tǒng)存儲區(qū)和日志存儲區(qū),其中,所 述操作系統(tǒng)存儲區(qū)用于存儲操作系統(tǒng),所述日志存儲區(qū)用于存儲所述操作系統(tǒng)的系統(tǒng)日 VI、J、O
[0061] S103,響應(yīng)所述上電信號,對所述緩存區(qū)進(jìn)行Trim操作,并通過順序?qū)懙姆绞?,?用預(yù)設(shè)大小的數(shù)據(jù)塊寫滿所述緩存區(qū)??梢岳斫獾?,對所述緩存區(qū)進(jìn)行Trim操作可增加所 述系統(tǒng)盤內(nèi)的連續(xù)可寫空間,為后續(xù)順序盡可能多的占用連續(xù)的可寫空間提供條件。在對 所述緩存區(qū)進(jìn)行Trim操作之后,通過順序?qū)懙姆绞?,利用預(yù)設(shè)大小的數(shù)據(jù)塊(如IMB的數(shù) 據(jù)塊)寫滿所述緩存區(qū),可實(shí)現(xiàn)盡可能多的占用連續(xù)的可寫空間。
[0062] 優(yōu)選的,在對所述緩存區(qū)進(jìn)行Trim操作時,還可以對所述日志存儲區(qū)和/或所述 操作系統(tǒng)存儲區(qū)進(jìn)行Trim操作,進(jìn)一步的增加所述系統(tǒng)盤內(nèi)的連續(xù)可寫空間。
[0063] S105,當(dāng)檢測到所述設(shè)備的斷電信號時,對寫滿的所述緩存區(qū)進(jìn)行Trim操作,將 內(nèi)存中的數(shù)據(jù)寫入所述緩存區(qū)。具體的,可以通過順序?qū)懙姆绞綄?nèi)存中的數(shù)據(jù)寫入所述 緩存區(qū)。可以理解的,對寫滿的所述緩存區(qū)進(jìn)行Trim操作可騰出大段已占用的連續(xù)可寫空 間,為將所述內(nèi)存中的數(shù)據(jù)快速的寫入所述系統(tǒng)盤提供條件。
[0064] 本發(fā)明實(shí)施例中,所述第一備份位置可以是指機(jī)械硬盤或固態(tài)硬盤等存儲介質(zhì)。 所述第一備份位置既可以是所述設(shè)備內(nèi)部的存儲介質(zhì),也可以是與所述設(shè)備相連的外部存 儲介質(zhì)。
[0065] 具體實(shí)現(xiàn)中,在將系統(tǒng)盤的緩存區(qū)內(nèi)的數(shù)據(jù)保存到第一備份位置之前,還可以對 所述系統(tǒng)盤進(jìn)行邏輯分區(qū),分區(qū)后的所述系統(tǒng)盤包括:所述緩存區(qū)、所述操作系統(tǒng)存儲區(qū)和 所述日志存儲區(qū)。
[0066] 可選的,如圖4所示,所述系統(tǒng)盤除了包括:所述緩存區(qū)、所述操作系統(tǒng)存儲區(qū)和 所述日志存儲區(qū)外,還可包括預(yù)留區(qū)。優(yōu)選的,在所述設(shè)備上電時,為了進(jìn)一步的增加所述 系統(tǒng)盤的可寫空間,在對所述緩存區(qū)進(jìn)行Trim操作時,還可以對所述預(yù)留區(qū)進(jìn)行Trim操 作。
[0067] 具體實(shí)現(xiàn)中,由于所述操作系統(tǒng)運(yùn)行時所產(chǎn)生的系統(tǒng)日志通常數(shù)據(jù)量比較小,因 此可通過隨機(jī)寫的方式將所述系統(tǒng)日志寫入所述日志存儲區(qū)。
[0068] 可以理解的,由于在所述設(shè)備上電時,已經(jīng)通過順序?qū)懙姆绞綄憹M了所述緩存區(qū), 即盡可能多的占用連續(xù)的可寫空間,因此,只能將所述操作系統(tǒng)產(chǎn)生的系統(tǒng)日志寫入所述 連續(xù)可寫空間之外的空間,可有效的控制隨機(jī)寫入所述系統(tǒng)日志所產(chǎn)生的碎片空間,有利 于提高所述設(shè)備斷電時將內(nèi)存中的數(shù)據(jù)寫入所述緩存區(qū)的寫入速度。
[0069] 需要說明的,上述SlOl和S103執(zhí)行在所述操作系統(tǒng)運(yùn)行之前,可保證在所述操作 系統(tǒng)運(yùn)行之前,所述緩存區(qū)已通過順序?qū)懙姆绞奖粚憹M。
[0070] 采用本發(fā)明實(shí)施例,對前述問題1進(jìn)行測試,具體如下:
[0071] 如圖5A所示,對所述系統(tǒng)盤進(jìn)行多個周期的IMB(IA)大小)的順序?qū)憸y試,在每 個周期內(nèi),隨著寫入數(shù)據(jù)的增加,所述系統(tǒng)盤的寫入速度明顯降低。但是,寫滿所述緩存區(qū) 之后,再對所述緩存區(qū)進(jìn)行Trim操作,所述系統(tǒng)盤的寫入速度恢復(fù)到最大值。統(tǒng)計(jì)地來看, 每個周期內(nèi)所述系統(tǒng)盤的平均寫速度基本穩(wěn)定。
[0072] 對比圖2A(無 Trim操作)可知,在向所述緩存區(qū)寫入數(shù)據(jù)之前先對所述緩存區(qū)進(jìn) 行Trim操作可有效增加所述系統(tǒng)盤的可寫空間,提高所述系統(tǒng)盤的寫入速度。
[0073] 采用本發(fā)明實(shí)施例,對前述問題2進(jìn)行測試,具體如下:
[0074] 如圖5B所示,對所述系統(tǒng)盤進(jìn)行隨機(jī)寫(如16并發(fā)4K隨機(jī)寫)之后,進(jìn)行1MB(I/ 〇大小)順序?qū)憸y試,IMB順序?qū)懙膶懭胨俣缺容^穩(wěn)定。統(tǒng)計(jì)地來看,所述順序?qū)懙钠骄鶎?入速度可達(dá)90MB/S,滿足設(shè)備斷電時系統(tǒng)需求的寫入速度。
[0075] 對比圖2B (無寫滿所述緩存區(qū))可知,在向所述系統(tǒng)盤進(jìn)行隨機(jī)寫之前,通過順序 寫的方式寫滿所述緩存區(qū)可實(shí)現(xiàn)盡可能多的占用連續(xù)的可寫空間,有效的控制所述隨機(jī)寫 產(chǎn)生的碎片空間,提高順序?qū)憰r所述系統(tǒng)盤的寫入速度。
[0076] 實(shí)際應(yīng)用中,所述系統(tǒng)盤還可以包括其他分區(qū),不限于所述緩存區(qū)、所述日志存儲 區(qū)、所述操作系統(tǒng)存儲區(qū)和所述預(yù)留區(qū)。
[0077] 實(shí)施本發(fā)明實(shí)施例,當(dāng)電源上電時,通過對系統(tǒng)盤中的緩存區(qū)進(jìn)行Trim操作,并 通過順序?qū)懙姆绞綄憹M所述緩存區(qū),可實(shí)現(xiàn)盡可能多的占用連續(xù)的可寫空間;當(dāng)電源斷電 時,通過對寫滿的所述緩存區(qū)進(jìn)行Trim操作,可實(shí)現(xiàn)騰出已被占用的連續(xù)的可寫空間,將 內(nèi)存中的數(shù)據(jù)寫入所述緩存區(qū),可實(shí)現(xiàn)將內(nèi)存數(shù)據(jù)快速的寫入所述緩存區(qū)。
[0078] 參見圖6,圖6是本發(fā)明實(shí)施例提供的另一種設(shè)備掉電時的數(shù)據(jù)保存方法的流程 示意圖。在圖6所示的方法中,當(dāng)電源上電時,對整個系統(tǒng)盤進(jìn)行Trim操作,并通過順序?qū)?的方式寫滿所述緩存區(qū),可實(shí)現(xiàn)占用所述緩存區(qū)大小的連續(xù)的可寫空間;當(dāng)電源斷電時,通 過對寫滿的所述緩存區(qū)進(jìn)行Trim操作,可實(shí)現(xiàn)騰出所述緩存區(qū)大小的連續(xù)的可寫空間,將 內(nèi)存中的數(shù)據(jù)寫入所述緩存區(qū),可實(shí)現(xiàn)將內(nèi)存數(shù)據(jù)更加快速的寫入所述緩存區(qū)。圖6所示 方法是圖3所示方法的進(jìn)一步改進(jìn),圖6沒有提及的內(nèi)容請參考圖3的描述。如圖6所示, 該方法包括:
[0079] S201,當(dāng)檢測到設(shè)備的上電信號時,將系統(tǒng)盤的緩存區(qū)的數(shù)據(jù)保存到第一備份位 置;所述系統(tǒng)盤是固態(tài)硬盤,包括:所述緩存區(qū)、操作系統(tǒng)存儲區(qū)和日志存儲區(qū),其中,所述 操作系統(tǒng)存儲區(qū)用于存儲操作系統(tǒng),所述日志存儲區(qū)用于存儲所述操作系統(tǒng)的系統(tǒng)日志。
[0080] S203,將所述操作系統(tǒng)存儲區(qū)中的數(shù)據(jù)和所述日志存儲區(qū)中的數(shù)據(jù)保存到第二備 份位置。
[0081] S205,響應(yīng)所述上電信號,對所述緩存區(qū)、所述操作系統(tǒng)存儲區(qū)和所述日志存儲區(qū) 進(jìn)行Trim操作。可以理解的,S205即是對整個所述系統(tǒng)盤進(jìn)行Trim操作,可實(shí)現(xiàn)將所述 系統(tǒng)盤恢復(fù)成整盤可寫狀態(tài),為后續(xù)的順序?qū)懱峁┩耆B續(xù)的可寫空間。
[0082] S207,通過順序?qū)懙姆绞?,利用預(yù)設(shè)大小的數(shù)據(jù)塊寫滿所述緩存區(qū)。可以理解的, 在對整個所述系統(tǒng)盤進(jìn)行Trim操作之后,通過順序?qū)懙姆绞剑妙A(yù)設(shè)大小的數(shù)據(jù)塊(如 IMB的數(shù)據(jù)塊)寫滿所述緩存區(qū),可實(shí)現(xiàn)占用所述緩存區(qū)大?。ㄈ鐖D4中的30G)的連續(xù)的 可寫空間。
[0083] S209,將保存到所述第二備份位置處的所述操作系統(tǒng)存儲區(qū)中的數(shù)據(jù)和所述日志 存儲區(qū)中的數(shù)據(jù)分別重新寫入所述操作系統(tǒng)存儲區(qū)和所述日志存儲區(qū)。
[0084] 可以理解的,由于已經(jīng)通過順序?qū)懙姆绞秸加昧讼到y(tǒng)盤中的所述緩存區(qū)大小(如 30G)的連續(xù)可寫空間,因此,S209只能將所述操作系統(tǒng)存儲區(qū)中的數(shù)據(jù)和所述日志存儲區(qū) 中的數(shù)據(jù)寫到被占用的所述連續(xù)可寫空間之外的空間,可有效控制S209產(chǎn)生的碎片空間。
[0085] 優(yōu)選的,可通過順序?qū)懙姆绞綄⑺龅诙浞菸恢锰幍乃霾僮飨到y(tǒng)存儲區(qū)中的 數(shù)據(jù)和所述日志存儲區(qū)中的數(shù)據(jù)分別重新寫入所述操作系統(tǒng)存儲區(qū)和所述日志存儲區(qū),可 實(shí)現(xiàn)盡可能多的占用連續(xù)的可寫空間,使得所述系統(tǒng)