本發(fā)明涉及存儲技術領域,尤其涉及一種防止數據丟失的保護方法和裝置。
背景技術:
針對高可靠性的存儲設備,通過掉電保護技術,可以在主電源掉電時,通過BBU(Backup Battery Unit,電池備用單元)供電,以對數據進行保護,從而有效提高系統(tǒng)可用性,避免由于掉電引起的數據丟失。具體的,在系統(tǒng)的主電源正常工作時,BBU不對內存和內存控制器供電,在系統(tǒng)的主電源掉電后,由BBU對內存和內存控制器供電。其中,該BBU是主電源掉電后,為存儲設備供電的電池模塊,因此在主電源掉電后,可以使用BBU進行數據保護處理。
在上述方式中,在系統(tǒng)的主電源掉電后,BBU通過對內存、內存控制器和非易失性存儲介質供電,以使得將內存和內存控制器中的數據寫入到非易失性存儲介質中,在數據寫入完成后,則關閉BBU,并最終關閉整個存儲設備。而當主電源恢復后,則可以對寫入到非易失性存儲介質中的數據進行恢復。
上述方式會導致業(yè)務恢復時間偏長,不利于業(yè)務的快速恢復。具體的,假設主電源掉電只是一個供電閃斷的過程,也會關閉整個存儲設備,在主電源恢復后,需要重新啟動存儲設備,并重新加載各業(yè)務模塊,而這些操作會消耗較長時間,導致業(yè)務恢復時間偏長,不利于業(yè)務(如關鍵錄像業(yè)務)的快速恢復。
技術實現要素:
本發(fā)明提供一種防止數據丟失的保護方法,應用于存儲設備上,包括:
在主電源掉電后,啟動第一定時器和備用供電單元,并通過所述備用供電單元對磁盤以及內存控制器進行供電處理,以將磁盤緩存內的數據寫入到所述磁盤的數據存儲介質中,并將系統(tǒng)緩存和陣列緩存內的數據寫入到非易失性存儲介質中;在所述第一定時器超時之前,若檢測到所述主電源恢復供電,通過所述主電源對所述磁盤以及所述內存控制器進行供電處理,并關閉所述備用供電單元;在所述第一定時器超時時,若檢測到所述主電源還沒有恢復供電,如果當前已經成功將系統(tǒng)緩存和陣列緩存內的數據均寫入到所述非易失性存儲介質中,則關閉所述備用供電單元,并對所述存儲設備進行關閉處理。
所述方法進一步包括:
在所述主電源掉電后,斷開所述存儲設備的前端網絡,凍結所述陣列緩存,以禁止更改陣列緩存內的數據,并將所述存儲設備的工作模式調整為節(jié)電模式。
所述方法進一步包括:
在所述主電源掉電后,啟動第二定時器,所述第二定時器的超時時間小于所述第一定時器的超時時間;在所述第二定時器超時時,若檢測到所述主電源還沒有恢復供電,則停止通過所述備用供電單元對所述磁盤進行供電處理;
在所述第二定時器超時之前,若檢測到所述主電源恢復供電,通過所述主電源對所述磁盤以及所述內存控制器進行供電處理,并關閉所述備用供電單元。
所述方法進一步包括:
在所述第一定時器超時之前,若檢測到所述備用供電單元的剩余電量小于預設閾值,且當前已經成功將系統(tǒng)緩存和陣列緩存內的數據均寫入到所述非易失性存儲介質中,則關閉所述備用供電單元,并對所述存儲設備進行關閉處理。
所述方法進一步包括:
在所述主電源恢復供電時,則重新恢復所述存儲設備的前端網絡,并允許更改所述陣列緩存內的數據,并將所述存儲設備的工作模式調整為正常模式。
本發(fā)明提供一種防止數據丟失的保護裝置,應用于存儲設備上,包括:
中斷檢測模塊,用于在所述存儲設備的主電源掉電之后,啟動第一定時器和備用供電單元,并通過所述備用供電單元對所述存儲設備的磁盤以及內存控制器進行供電處理,以將磁盤緩存內的數據寫入到所述磁盤的數據存儲介質中,并將系統(tǒng)緩存和陣列緩存內的數據寫入到非易失性存儲介質中;恢復模塊,用于在所述第一定時器超時之前,若檢測到所述主電源恢復供電,則通過所述主電源對所述磁盤以及所述內存控制器進行供電處理,并關閉所述備用供電單元;關閉模塊,用于在所述第一定時器超時時,若檢測到所述主電源還沒有恢復供電,如果當前已經成功將系統(tǒng)緩存和陣列緩存內的數據均寫入到所述非易失性存儲介質中,則關閉所述備用供電單元,并對所述存儲設備進行關閉處理。
在一個例子中,所述中斷檢測模塊,還用于在所述存儲設備的主電源掉電之后,斷開所述存儲設備的前端網絡,凍結所述陣列緩存,以禁止更改陣列緩存內的數據,并將所述存儲設備的工作模式調整為節(jié)電模式。
所述中斷檢測模塊,還用于在所述存儲設備的主電源掉電之后,啟動第二定時器,所述第二定時器的超時時間小于所述第一定時器的超時時間;
所述關閉模塊,還用于在所述第二定時器超時時,若檢測到所述主電源還沒有恢復供電,則停止通過所述備用供電單元對所述磁盤進行供電處理;
所述恢復模塊,還用于在所述第二定時器超時之前,若檢測到主電源恢復供電,通過主電源對磁盤以及內存控制器進行供電處理,并關閉備用供電單元。
還包括:電量檢測模塊,用于在所述第一定時器超時之前,檢測所述備用供電單元的剩余電量;若檢測到所述備用供電單元的剩余電量小于預設閾值,且當前已經成功將所述系統(tǒng)緩存和所述陣列緩存內的數據均寫入到所述非易失性存儲介質中,則關閉所述備用供電單元,并對所述存儲設備進行關閉處理。
在一個例子中,所述中斷檢測模塊,還用于在所述主電源恢復供電時,則重新恢復所述存儲設備的前端網絡,并允許更改所述陣列緩存內的數據,并將所述存儲設備的工作模式調整為正常模式。
基于上述技術方案,本發(fā)明實施例中,在主電源掉電后,可以通過備用供電單元對磁盤以及內存控制器進行供電處理,以將磁盤緩存內的數據寫入到磁盤的數據存儲介質中,并將系統(tǒng)緩存和陣列緩存內的數據寫入到非易失性存儲介質中,從而保證存儲設備的各級緩存(如磁盤緩存、系統(tǒng)緩存和陣列緩存)的數據安全,在主電源掉電后,保證磁盤緩存、系統(tǒng)緩存和陣列緩存中的數據都不丟失。而且,即使已經將系統(tǒng)緩存和陣列緩存內的數據寫入到非易失性存儲介質中,也不是立刻關閉存儲設備,而是先等待一段時間,若在這段時間內,主電源已經恢復供電,即主電源閃斷的情況下,由于沒有關閉存儲設備,也就不需要執(zhí)行重新啟動存儲設備,并重新加載各業(yè)務模塊等流程,從而縮短業(yè)務數據的恢復時間,恢復業(yè)務數據的時間可以節(jié)省幾分鐘,可以對業(yè)務數據進行快速恢復,如秒級恢復業(yè)務數據,使得爭分奪秒的錄像等業(yè)務可以及時恢復。
附圖說明
為了更加清楚地說明本發(fā)明實施例或者現有技術中的技術方案,下面將對本發(fā)明實施例或者現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明中記載的一些實施例,對于本領域普通技術人員來講,還可以根據這些附圖獲得其他的附圖。
圖1是本發(fā)明一種實施方式中的防止數據丟失的保護方法的流程圖;
圖2是本發(fā)明一種實施方式中的存儲設備的硬件結構圖;
圖3是本發(fā)明一種實施方式中的防止數據丟失的保護裝置的結構圖。
具體實施方式
在本發(fā)明使用的術語僅僅是出于描述特定實施例的目的,而非限制本發(fā)明。本發(fā)明和權利要求書中所使用的單數形式的“一種”、“所述”和“該”也旨在包括多數形式,除非上下文清楚地表示其它含義。還應當理解,本文中使用的術語“和/或”是指包含一個或多個相關聯的列出項目的任何或所有可能組合。
應當理解,盡管在本發(fā)明可能采用術語第一、第二、第三等來描述各種信息,但這些信息不應限于這些術語。這些術語僅用來將同一類型的信息彼此區(qū)分開。例如,在不脫離本發(fā)明范圍的情況下,第一信息也可以被稱為第二信息,類似地,第二信息也可以被稱為第一信息。取決于語境,此外,所使用的詞語“如果”可以被解釋成為“在……時”或“當……時”或“響應于確定”。
本發(fā)明實施例中提出一種防止數據丟失的保護方法,該方法可以應用于包括備用供電單元的存儲設備上,該備用供電單元可以包括但不限于BBU等。參見圖1所示,為本發(fā)明實施例中的防止數據丟失的保護方法的流程圖:
步驟101,在主電源掉電后,啟動第一定時器(第一定時器的超時時間可以根據實際經驗進行配置,如120秒)和備用供電單元,并通過備用供電單元對磁盤以及內存控制器進行供電處理,以將磁盤緩存內的數據寫入到磁盤的數據存儲介質中,并將系統(tǒng)緩存和陣列緩存內的數據寫入到非易失性存儲介質中。
步驟102,在該第一定時器超時之前,若檢測到主電源恢復供電,則通過該主電源對磁盤以及內存控制器進行供電處理,并關閉該備用供電單元。
步驟103,在該第一定時器超時時,若檢測到主電源還沒有恢復供電,如果當前已經成功將系統(tǒng)緩存和陣列緩存內的數據均寫入到非易失性存儲介質中,則關閉備用供電單元,并對存儲設備進行關閉處理(即關機處理)。如果當前沒有成功將系統(tǒng)緩存和陣列緩存內的數據均寫入到非易失性存儲介質中,則繼續(xù)通過備用供電單元供電,一直等到成功將系統(tǒng)緩存和陣列緩存內的數據均寫入到非易失性存儲介質中,才關閉備用供電單元,并對存儲設備進行關閉處理。
針對步驟101,在一個例子中,主電源可以為市電,該市電是工頻交流電。當然,該主電源還可以為其它類型的電源,本發(fā)明實施例中對此不做限制。
在一個例子中,在主電源掉電后,可以啟動備用供電單元,并通過備用供電單元對磁盤以及內存控制器進行供電處理。備用供電單元是主電源掉電后,為存儲設備供電的電池模塊,用于進行數據保護。在主電源正常工作時,關閉備用供電單元,在主電源掉電后,啟動備用供電單元。與傳統(tǒng)方式不同的是,備用供電單元不僅需要對內存控制器進行供電處理,還對磁盤進行供電處理。
其中,存儲設備的緩存包括多級緩存,如磁盤緩存、陣列緩存、系統(tǒng)緩存等。在主電源掉電后,需要保證磁盤緩存、陣列緩存、系統(tǒng)緩存中的數據都不丟失。而且由于磁盤緩存位于磁盤上,因此在主電源掉電后,只要對磁盤進行供電處理(如對SCU(Storage Controller Unit,存儲控制單元)上的磁盤進行供電處理),就可以保證磁盤的正常運行,從而可以將磁盤緩存內的數據寫入到磁盤的數據存儲介質中。由于陣列緩存和系統(tǒng)緩存位于內存控制器上,因此在主電源掉電后,只要對內存控制器進行供電處理,就可以保證內存控制器的正常運行,從而可以將系統(tǒng)緩存和陣列緩存內的數據寫入到非易失性存儲介質中。
其中,根據緩存的不同情況,可以對不同緩存采用不同的存儲方案,以對緩存中的數據進行保護。例如,對于磁盤緩存,由于寫到磁盤緩存中的數據,無法從磁盤緩存中提取出來,再寫到非易失性存儲介質中,只能寫到磁盤的數據存儲介質,才能夠保證不丟失;因此,可以將磁盤緩存內的數據寫入到磁盤的數據存儲介質中,該數據存儲介質可以為磁盤盤片。對于陣列緩存和系統(tǒng)緩存,由于寫到陣列緩存和系統(tǒng)緩存中的數據,可以寫到非易失性存儲介質中,因此,可以將陣列緩存和系統(tǒng)緩存內的數據寫入到非易失性存儲介質中。
在一個例子中,在主電源掉電后,還可以斷開存儲設備的前端網絡,凍結陣列緩存,以禁止更改陣列緩存內的數據,并將存儲設備的工作模式調整為節(jié)電模式?;诖?,在主電源掉電后,立刻發(fā)起中斷處理,切入異常處理流程。在此異常處理流程中,可以通過備用供電單元對磁盤以及內存控制器進行供電處理,在供電過程中,可以將磁盤緩存內的數據寫入到磁盤的數據存儲介質中,并將系統(tǒng)緩存和陣列緩存內的數據寫入到非易失性存儲介質中。此外,還可以斷開存儲設備的前端網絡,并凍結陣列緩存,以禁止更改陣列緩存內的數據,并將存儲設備的工作模式調整為節(jié)電模式,由備用供電單元進行供電處理。
其中,通過斷開存儲設備的前端網絡,可以保證存儲設備的系統(tǒng)緩存中的數據不會發(fā)生變化,不會再有新的數據需要寫入到存儲設備,避免這些數據寫入失敗。通過凍結陣列緩存,則可以禁止更改陣列緩存內的數據,即可以保證存儲設備的陣列緩存中不會再寫入新數據,也不會將陣列緩存的數據刪除。而且,在凍結陣列緩存后,陣列緩存內的數據無法寫入到磁盤緩存,且斷開存儲設備的前端網絡后,也無法將新數據寫入到磁盤緩存,從而保證磁盤緩存中也不會再寫入新數據。通過將存儲設備的工作模式調整為節(jié)電模式,例如,調整系統(tǒng)風扇等模塊進入節(jié)電模式,則可以減少備用供電單元的電量消耗。
基于上述方式,本發(fā)明實施例中,在主電源掉電后,可以通過備用供電單元對磁盤以及內存控制器進行供電處理,將磁盤緩存內的數據寫入到磁盤的數據存儲介質中,并將系統(tǒng)緩存和陣列緩存內的數據寫入到非易失性存儲介質中,從而保證存儲設備的各級緩存(如磁盤緩存、系統(tǒng)緩存和陣列緩存)的數據安全,在主電源掉電后,保證磁盤緩存、系統(tǒng)緩存和陣列緩存中的數據都不丟失。
在一個例子中,為了縮短業(yè)務數據的恢復時間,還需要區(qū)分主電源掉電的情況,是主電源長久停電還是主電源閃斷,以進行不同的處理。其中,若是主電源長久停電,則可以關閉存儲設備,若是主電源閃斷,則不需要關閉存儲設備,從而在保證各級緩存內數據安全的情況下,縮短業(yè)務數據恢復時間。
為了區(qū)分主電源掉電的情況,則可以啟動第一定時器,第一定時器的超時時間可根據實際經驗配置,如120秒等。在第一定時器超時之前,若檢測到主電源恢復供電,則說明主電源掉電的情況是主電源閃斷,在第一定時器超時時,若檢測到主電源還沒有恢復供電,則說明主電源掉電的情況是主電源長久停電。
針對步驟102和步驟103,在該第一定時器超時之前,若檢測到主電源恢復供電,則說明主電源閃斷,通過該主電源對磁盤以及內存控制器進行供電處理,并關閉該備用供電單元。在該第一定時器超時時,若檢測到主電源還沒有恢復供電,則說明主電源長久停電,關閉該備用供電單元,并對存儲設備進行關閉處理。其中,在第一定時器超時時,不是直接關閉該備用供電單元,而是先判斷是否已經成功將系統(tǒng)緩存和陣列緩存內的數據均寫入到非易失性存儲介質中。若當前已經成功將系統(tǒng)緩存和陣列緩存內的數據均寫入到非易失性存儲介質中,則關閉該備用供電單元,并對存儲設備進行關閉處理。若當前沒有成功將系統(tǒng)緩存和陣列緩存內的數據均寫入到非易失性存儲介質中,則通過備用供電單元供電,一直等到成功將系統(tǒng)緩存和陣列緩存內的數據均寫入到非易失性存儲介質中,才關閉備用供電單元,并對存儲設備進行關閉處理。
在一個例子中,在主電源恢復供電時,則切回正常處理流程,通過主電源對磁盤以及內存控制器進行供電處理,關閉備用供電單元,重新恢復存儲設備的前端網絡,允許更改所述陣列緩存內的數據(即允許向陣列緩存內寫入新數據,也可以將陣列緩存的數據刪除),將存儲設備的工作模式調整為正常模式。
其中,通過恢復存儲設備的前端網絡,可以將新數據寫入到存儲設備,繼而提供數據寫入業(yè)務,保證存儲設備的功能。通過允許更改所述陣列緩存內的數據(即解凍陣列緩存),可以允許向陣列緩存內寫入新數據,也可以將陣列緩存的數據刪除,此外,陣列緩存內的數據可以寫入到磁盤緩存,且恢復存儲設備的前端網絡后,可以將新數據寫入到磁盤緩存,即存儲設備的磁盤緩存中也可以寫入新數據。通過將存儲設備的工作模式調整為正常模式,如調整系統(tǒng)風扇等模塊退出節(jié)電模式,則可以保證存儲設備的正常使用。
綜上所述,在主電源閃斷的情況下,現有業(yè)務恢復流程可以包括如下階段:緩存數據->關機->重啟->模塊加載->業(yè)務恢復,業(yè)務恢復需要幾分鐘甚至十幾分鐘,而本發(fā)明實施例的業(yè)務恢復流程可以包括如下階段:緩存數據->業(yè)務恢復,業(yè)務恢復的時間可以為秒級恢復,從而顯著縮短了業(yè)務數據的恢復時間。
在一個例子中,在第一定時器超時時,如果主電源沒有恢復供電,則說明主電源長久停電,此時關閉備用供電單元,并對存儲設備進行關閉處理。
其中,在第一定時器超時時關閉備用供電單元,而不是一直開啟備用供電單元的原因是:備用供電單元是存儲設備上自帶,可反復充放電,并在主電源異常掉電情況下供電的電池模塊,不能在主電源一次異常掉電后,就將備用供電單元的電量全耗費完畢。由于第一定時器超時時,若主電源還沒有恢復供電,則說明主電源將長時間掉電,不能稱為供電閃斷。因此,在保證各級緩存數據安全的情況下,最多達到X秒(如第一定時器超時時間120秒),就可以關閉備用供電單元,并對存儲設備進行關閉處理,而不是一直開啟備用供電單元。
在一個例子中,在第一定時器超時之前,還可以對備用供電單元的剩余電量進行持續(xù)檢測,若檢測到備用供電單元的剩余電量小于預設閾值,且當前已經成功將系統(tǒng)緩存和陣列緩存內的數據均寫入到非易失性存儲介質中,則即使第一定時器還沒有超時,也可以關閉備用供電單元,并對存儲設備進行關閉處理。此外,若檢測到備用供電單元的剩余電量小于預設閾值,且當前沒有成功將系統(tǒng)緩存和陣列緩存內的數據均寫入到非易失性存儲介質中,則繼續(xù)通過備用供電單元供電,一直等到成功將系統(tǒng)緩存和陣列緩存內的數據均寫入到非易失性存儲介質中,才關閉備用供電單元,并對存儲設備進行關閉處理。
其中,該預設閾值可以根據實際經驗進行配置,其可以為一個電量值,也可以為備用供電單元的總電量的一個比例值,通過配置該預設閾值,在保證各級緩存數據安全的情況下,可以保證備用供電單元電量的使用在一定范圍內。
綜上所述,在主電源掉電后,若備用供電單元的剩余電量小于預設閾值或者第一定時器超時時,即使主電源還沒有恢復供電,如果當前已經完成將系統(tǒng)緩存和陣列緩存內的數據寫入到非易失性存儲介質,則可以關閉該備用供電單元,并對存儲設備進行關閉處理,從而合理使用備用供電單元的電量。
在一個例子中,在主電源掉電后,還可以啟動第二定時器,第二定時器的超時時間小于第一定時器的超時時間。在第二定時器超時時,若檢測到主電源還沒有恢復供電,則可以停止通過備用供電單元對磁盤進行供電處理,此時,還會通過備用供電單元繼續(xù)對內存控制器進行供電處理,即不關閉備用供電單元。在第二定時器超時之前,若檢測到主電源恢復供電,則可以通過主電源對磁盤以及內存控制器進行供電處理,并關閉備用供電單元。
其中,第二定時器的超時時間可以根據實際經驗進行配置。在一個例子中,將磁盤緩存內的數據寫入到磁盤的數據存儲介質中的寫入時間是固定的,如5秒,在配置第二定時器的超時時間時,可以參考該寫入時間,即可以將該超時時間設置的大于該寫入時間,以保證磁盤緩存內的所有數據均能夠寫入到磁盤的數據存儲介質中。此外,由于使用備用供電單元為磁盤供電是一個非常消耗電量的操作,因此該超時時間設置的不能過大,從而節(jié)省備用供電單元的電量。
在一個例子中,在第二定時器超時時,若檢測到主電源還沒有恢復供電,由于磁盤緩存內的數據已經寫入到磁盤的數據存儲介質中,為了節(jié)省備用供電單元的電量,則可以停止通過備用供電單元對磁盤進行供電處理,此時繼續(xù)通過備用供電單元對內存控制器進行供電處理。而且,由于第二定時器的超時時間的合理配置,使得在第二定時器超時之前,就可以將磁盤緩存內的數據全部保護到磁盤的數據存儲介質中,在主電源恢復后,業(yè)務恢復快。
進一步的,在第二定時器超時之前,若檢測到主電源恢復供電,只需要對磁盤進行上電處理,就可以將磁盤狀態(tài)恢復為正常。
此外,在第二定時器超時之前,若檢測到主電源恢復供電,則說明主電源閃斷,通過該主電源對磁盤以及內存控制器進行供電處理,并關閉備用供電單元。其中,在主電源恢復供電時,則切回正常處理流程,可以通過該主電源對磁盤以及內存控制器進行供電處理,關閉該備用供電單元,重新恢復存儲設備的前端網絡,允許更改所述陣列緩存內的數據(即允許向陣列緩存內寫入新數據,也可以將陣列緩存的數據刪除),將存儲設備的工作模式調整為正常模式。
其中,通過恢復存儲設備的前端網絡,可以將新數據寫入到存儲設備,繼而提供數據寫入業(yè)務,保證存儲設備的功能。通過允許更改所述陣列緩存內的數據(即解凍陣列緩存),可以允許向陣列緩存內寫入新數據,也可以將陣列緩存的數據刪除,此外,陣列緩存內的數據可以寫入到磁盤緩存,且恢復存儲設備的前端網絡后,可以將新數據寫入到磁盤緩存,即存儲設備的磁盤緩存中也可以寫入新數據。通過將存儲設備的工作模式調整為正常模式,如調整系統(tǒng)風扇等模塊退出節(jié)電模式,則可以保證存儲設備的正常使用。
綜上所述,在主電源閃斷的情況下,現有業(yè)務恢復流程可以包括如下階段:緩存數據->關機->重啟->模塊加載->業(yè)務恢復,業(yè)務恢復需要幾分鐘甚至十幾分鐘,而本發(fā)明實施例的業(yè)務恢復流程可以包括如下階段:緩存數據->業(yè)務恢復,業(yè)務恢復的時間可以為秒級恢復,從而顯著縮短了業(yè)務數據的恢復時間。
在一個例子中,可以每隔N秒(如1秒)就檢測一次主電源是否恢復供電,例如,通過查詢電源的輸入電壓等信息,檢測到主電源是否恢復供電。
綜上所述,即使已經將系統(tǒng)緩存和陣列緩存內的數據寫入到非易失性存儲介質中,也不是立刻關閉存儲設備,而是先等待一段時間,若在這段時間內,主電源已經恢復供電,即主電源閃斷的情況下,由于沒有關閉存儲設備,也就不需要執(zhí)行重新啟動存儲設備,并重新加載各業(yè)務模塊等流程,從而縮短業(yè)務數據的恢復時間,恢復業(yè)務數據的時間可以節(jié)省幾分鐘,可以對業(yè)務數據進行快速恢復,如秒級恢復業(yè)務數據,使得爭分奪秒的錄像等業(yè)務可以及時恢復。
在一個例子中,如果在第一定時器超時時,檢測到主電源還沒有恢復供電,在關閉備用供電單元,并對存儲設備進行關閉處理之后,當主電源恢復供電后,會重新啟動存儲設備,并將非易失性存儲介質中的數據恢復到系統(tǒng)緩存和陣列緩存。其中,針對“將非易失性存儲介質中的數據恢復到系統(tǒng)緩存和陣列緩存”的過程,在主電源掉電,且在將系統(tǒng)緩存和陣列緩存內的數據寫入到非易失性存儲介質時,還可以為這些寫入的數據設置有效標志位,這樣,在主電源恢復供電時,在將非易失性存儲介質中的數據恢復到系統(tǒng)緩存和陣列緩存的過程中,就可以直接將設置有該有效標志位的數據,恢復到系統(tǒng)緩存和陣列緩存中。
以下結合具體的應用場景,對本發(fā)明實施例的上述過程進行進一步的說明。
步驟1、主電源掉電,啟動第一定時器、第二定時器和備用供電單元。
步驟2、通過備用供電單元對磁盤以及內存控制器進行供電處理,以將磁盤緩存內的數據寫入到磁盤的數據存儲介質中,將系統(tǒng)緩存和陣列緩存內的數據寫入到非易失性存儲介質中。斷開存儲設備的前端網絡,凍結所述陣列緩存,以禁止更改陣列緩存內的數據,并將存儲設備的工作模式調整為節(jié)電模式。
步驟3、在第二定時器超時之前,檢測主電源是否已經恢復供電。
如果已經恢復供電,則執(zhí)行步驟4,如果沒有恢復供電,則執(zhí)行步驟5。
步驟4、通過主電源對磁盤和內存控制器進行供電處理,關閉備用供電單元。
步驟5、停止通過備用供電單元對磁盤進行供電處理(即磁盤斷電),通過備用供電單元對內存控制器進行供電處理,將系統(tǒng)緩存和陣列緩存內的數據寫入到非易失性存儲介質中。若完成系統(tǒng)緩存和陣列緩存的數據寫入,執(zhí)行步驟6。
步驟6、在第一定時器超時之前,檢測主電源是否已經恢復供電。
如果已經恢復供電,則執(zhí)行步驟7,如果沒有恢復供電,則執(zhí)行步驟8。
步驟7、通過主電源對磁盤和內存控制器進行供電處理,關閉備用供電單元。
步驟8、若備用供電單元的剩余電量小于預設閾值或者第一定時器超時時,主電源還沒有恢復供電,如果當前已經將系統(tǒng)緩存和陣列緩存內的數據寫入到非易失性存儲介質中,則關閉該備用供電單元,并對存儲設備進行關閉處理。
基于與上述方法同樣的發(fā)明構思,本發(fā)明實施例中還提供一種防止數據丟失的保護裝置,可以應用在存儲設備上。該防止數據丟失的保護裝置可以通過軟件實現,也可以通過硬件或者軟硬件結合的方式實現。以軟件實現為例,作為一個邏輯意義上的裝置,是通過其所在的存儲設備的處理器,讀取非易失性存儲器中對應的計算機程序指令形成的。從硬件層面而言,如圖2所示,為防止數據丟失的保護裝置所在的存儲設備的一種硬件結構圖,除了圖2所示的處理器、非易失性存儲器外,存儲設備還可以包括其他硬件,如負責處理報文的轉發(fā)芯片、網絡接口、內存等;從硬件結構上來講,該存儲設備還可能是分布式設備,可能包括多個接口卡,以便在硬件層面進行報文處理的擴展。
如圖3所示,為本發(fā)明提出的防止數據丟失的保護裝置的結構圖,包括:中斷檢測模塊11,用于在所述存儲設備的主電源掉電后,啟動第一定時器和備用供電單元,并通過所述備用供電單元對所述存儲設備的磁盤以及內存控制器進行供電處理,以將磁盤緩存內的數據寫入到所述磁盤的數據存儲介質中,并將系統(tǒng)緩存和陣列緩存內的數據寫入到非易失性存儲介質中;恢復模塊12,用于在所述第一定時器超時之前,若檢測到所述主電源恢復供電,則通過所述主電源對所述磁盤以及所述內存控制器進行供電處理,并關閉所述備用供電單元;關閉模塊13,用于在所述第一定時器超時時,若檢測到所述主電源還沒有恢復供電,如果當前已經成功將系統(tǒng)緩存和陣列緩存內的數據均寫入到所述非易失性存儲介質中,則關閉所述備用供電單元,并對所述存儲設備進行關閉處理。
在一個例子中,所述中斷檢測模塊11,還用于在所述存儲設備的主電源掉電之后,斷開所述存儲設備的前端網絡,凍結所述陣列緩存,以禁止更改陣列緩存內的數據,并將所述存儲設備的工作模式調整為節(jié)電模式。
所述中斷檢測模塊11,還用于在所述存儲設備的主電源掉電之后,啟動第二定時器,所述第二定時器的超時時間小于所述第一定時器的超時時間;所述關閉模塊13,還用于在所述第二定時器超時時,若檢測到所述主電源還沒有恢復供電,則停止通過所述備用供電單元對所述磁盤進行供電處理;所述恢復模塊12,還用于在所述第二定時器超時之前,若檢測到主電源恢復供電,則通過主電源對磁盤以及內存控制器進行供電處理,并關閉備用供電單元。
在一個例子中,該防止數據丟失的保護裝置還包括(在圖中未體現):
電量檢測模塊,用于在所述第一定時器超時之前,檢測所述備用供電單元的剩余電量;若檢測到所述備用供電單元的剩余電量小于預設閾值,且當前已經成功將所述系統(tǒng)緩存和所述陣列緩存內的數據均寫入到所述非易失性存儲介質中,則關閉所述備用供電單元,并對所述存儲設備進行關閉處理。
在一個例子中,所述中斷檢測模塊11,還用于在所述主電源恢復供電時,則重新恢復所述存儲設備的前端網絡,并允許更改所述陣列緩存內的數據,并將所述存儲設備的工作模式調整為正常模式。
其中,本發(fā)明裝置的各個模塊可以集成于一體,也可以分離部署。上述模塊可以合并為一個模塊,也可以進一步拆分成多個子模塊。
基于上述技術方案,本發(fā)明實施例中,在主電源掉電后,可以通過備用供電單元對磁盤以及內存控制器進行供電處理,以將磁盤緩存內的數據寫入到磁盤的數據存儲介質中,并將系統(tǒng)緩存和陣列緩存內的數據寫入到非易失性存儲介質中,從而保證存儲設備的各級緩存(如磁盤緩存、系統(tǒng)緩存和陣列緩存)的數據安全,在主電源掉電后,保證磁盤緩存、系統(tǒng)緩存和陣列緩存中的數據都不丟失。而且,即使已經將系統(tǒng)緩存和陣列緩存內的數據寫入到非易失性存儲介質中,也不是立刻關閉存儲設備,而是先等待一段時間,若在這段時間內,主電源已經恢復供電,即主電源閃斷的情況下,由于沒有關閉存儲設備,也就不需要執(zhí)行重新啟動存儲設備,并重新加載各業(yè)務模塊等流程,從而縮短業(yè)務數據的恢復時間,恢復業(yè)務數據的時間可以節(jié)省幾分鐘,可以對業(yè)務數據進行快速恢復,如秒級恢復業(yè)務數據,使得爭分奪秒的錄像等業(yè)務可以及時恢復。
通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件平臺的方式來實現,當然也可以通過硬件,但很多情況下前者是更佳的實施方式?;谶@樣的理解,本發(fā)明的技術方案本質上或者說對現有技術做出貢獻的部分可以以軟件產品的形式體現出來,該計算機軟件產品存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)執(zhí)行本發(fā)明各個實施例所述的方法。本領域技術人員可以理解附圖只是一個優(yōu)選實施例的示意圖,附圖中的模塊或流程并不一定是實施本發(fā)明所必須的。
本領域技術人員可以理解實施例中的裝置中的模塊可以按照實施例描述進行分布于實施例的裝置中,也可以進行相應變化位于不同于本實施例的一個或多個裝置中。上述實施例的模塊可以合并為一個模塊,也可進一步拆分成多個子模塊。上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。
以上公開的僅為本發(fā)明的幾個具體實施例,但是,本發(fā)明并非局限于此,任何本領域的技術人員能思之的變化都應落入本發(fā)明的保護范圍。