控制非易失性數(shù)據(jù)存儲子系統(tǒng)的方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
【背景技術(shù)】
[0001]在當(dāng)前傳統(tǒng)的非易失性數(shù)據(jù)存儲子系統(tǒng)中,需要盤(或具有其它幾何形狀的存儲介質(zhì))來進(jìn)行除數(shù)據(jù)的簡單非易失性存儲和檢索以外的大量任務(wù)。例如,應(yīng)頻繁地驗證并記錄非易失性存儲介質(zhì)的健康狀況以確保以非易失性方式存儲在介質(zhì)上的數(shù)據(jù)的完整性。這里有時將與非易失性介質(zhì)的健康狀況有關(guān)的任務(wù)稱為“數(shù)據(jù)完整性任務(wù)”或“數(shù)據(jù)完整性檢查”。這些數(shù)據(jù)完整性檢查可能需要非易失性存儲介質(zhì)的極大比例的容量和/或非易失性存儲子系統(tǒng)的極大比例的帶寬。
[0002]在包括非易失性存儲子系統(tǒng)的計算機系統(tǒng)檢測到外部電源的丟失(lost)的情況下,該計算機系統(tǒng)傳統(tǒng)上進(jìn)入緊急停機過程。在該停機時間段內(nèi),該系統(tǒng)傳統(tǒng)上通過不間斷電源(UPS)供電,其中該UPS可以使計算機系統(tǒng)的操作生命延長短的時間段(通常為幾分鐘)。在該時間段內(nèi),將保持在主機系統(tǒng)上的動態(tài)存儲器(即,易失性存儲器的形式)中的被稱為“寫高速緩存”的特定數(shù)據(jù)在適當(dāng)時間“下載”至非易失性存儲子系統(tǒng)的非易失性存儲介質(zhì)。然而,應(yīng)用程序是在如下假設(shè)下運行的:在僅將應(yīng)用程序的數(shù)據(jù)寫入易失性存儲器的寫高速緩存的情況下,寫操作成功。由于該原因,如果在將應(yīng)用程序的數(shù)據(jù)從易失性存儲器下載至非易失性存儲子系統(tǒng)的非易失性存儲介質(zhì)之前發(fā)生電力故障(即,UPS電力用光),則極有可能至少一些應(yīng)用程序數(shù)據(jù)(例如,在線數(shù)據(jù))將丟失,而這當(dāng)然一般是不好的結(jié)果。
[0003]作為術(shù)語附注,這里的“非易失性”(non-Volatile)是指所保存的數(shù)據(jù)的維持不需要電力或需要非常非常少的電力的數(shù)據(jù)存儲。如本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,非易失性存儲子系統(tǒng)通常的確需要用以寫入數(shù)據(jù)(或在允許數(shù)據(jù)的覆寫(overwrite)的非易失性數(shù)據(jù)存儲子系統(tǒng)中覆寫數(shù)據(jù))的電力(通常是電功率)。
【發(fā)明內(nèi)容】
[0004]根據(jù)本發(fā)明的一些方面,存在一種用于控制非易失性數(shù)據(jù)存儲子系統(tǒng)的方法、系統(tǒng)和/或計算機程序產(chǎn)品,其中所述非易失性數(shù)據(jù)存儲子系統(tǒng)是主計算機系統(tǒng)的一部分,并且包括非易失性存儲介質(zhì)和非易失性子系統(tǒng)控制器。該方法、系統(tǒng)和/或計算機程序產(chǎn)品進(jìn)行以下步驟(未必按以下順序):(i)利用所述非易失性數(shù)據(jù)存儲子系統(tǒng)控制器來響應(yīng)于電源危險信號進(jìn)入電力危險模式;以及(ii)在所述電力危險模式期間,利用所述非易失性數(shù)據(jù)存儲子系統(tǒng)并且持續(xù)地對所述非易失性數(shù)據(jù)存儲子系統(tǒng)控制器要進(jìn)行的指令列表重新排序。至少所述指令列表的重新排序由運行在計算機硬件上的計算機軟件來進(jìn)行。
【附圖說明】
[0005]圖1是根據(jù)本發(fā)明的主機計算機系統(tǒng)的第一實施例的示意圖;
[0006]圖2是示出至少部分由第一實施例的主機計算機系統(tǒng)進(jìn)行的處理的流程圖;以及
[0007]圖3是第一實施例的主機計算機系統(tǒng)的一部分的示意圖。
【具體實施方式】
[0008]在本發(fā)明的一些實施例中,電源危險(hazard)狀況(即,表示電源有可能丟失的狀況)導(dǎo)致非易失性存儲介質(zhì)控制器(例如,盤驅(qū)動器控制器)在電源危險狀況的持續(xù)時間內(nèi)以不同模式進(jìn)行工作。更具體地,一組規(guī)則控制非易失性存儲命令的重新排序以優(yōu)化在電源的確丟失的情況下將存儲的數(shù)據(jù)種類。本【具體實施方式】部分分成以下子部分:(i)硬件和軟件環(huán)境;(ii)第一實施例;(iii)更多說明和/或?qū)嵤├灰约?iv)定義。
[0009]1.硬件和軟件環(huán)境
[0010]所屬技術(shù)領(lǐng)域的技術(shù)人員知道,本發(fā)明的各個方面可以實現(xiàn)為系統(tǒng)、方法或計算機程序產(chǎn)品。因此,本發(fā)明的各個方面可以具體實現(xiàn)為以下形式,即:完全的硬件實施方式、完全的軟件實施方式(包括固件、駐留軟件、微代碼等),或硬件和軟件方面結(jié)合的實施方式,這里可以統(tǒng)稱為“電路”、“模塊”或“系統(tǒng)”。此外,在一些實施例中,本發(fā)明的各個方面還可以實現(xiàn)為在一個或多個計算機可讀介質(zhì)中的計算機程序產(chǎn)品的形式,該計算機可讀介質(zhì)中包含計算機可讀的程序代碼/指令。
[0011]可以采用一個或多個計算機可讀介質(zhì)的任意組合。計算機可讀介質(zhì)可以是計算機可讀信號介質(zhì)或者計算機可讀存儲介質(zhì)。計算機可讀存儲介質(zhì)例如可以是一但不限于一電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合。計算機可讀存儲介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個或多個導(dǎo)線的電連接、便攜式計算機盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPR0M或閃存)、光纖、便攜式緊湊盤只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、或者上述的任意合適的組合。在本文件中,計算機可讀存儲介質(zhì)可以是任何包含或存儲程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。
[0012]計算機可讀的信號介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號,其中承載了計算機可讀的程序代碼。這種傳播的數(shù)據(jù)信號可以采用多種形式,包括——但不限于——電磁信號、光信號或上述的任意合適的組合。計算機可讀的信號介質(zhì)還可以是計算機可讀存儲介質(zhì)以外的任何計算機可讀介質(zhì),該計算機可讀介質(zhì)可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序。
[0013]計算機可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括一但不限于一無線、有線、光纜、RF等等,或者上述的任意合適的組合。
[0014]可以以包括以下的一個或多個編程語言的任何組合來編寫用于執(zhí)行本發(fā)明的方面的操作的計算機程序代碼:諸如Java(注釋:術(shù)語“Java”可能在世界范圍內(nèi)的各種司法管轄權(quán)限內(nèi)均受到商標(biāo)權(quán)保護,并且這里僅參考在這些商標(biāo)權(quán)可能存在的范圍內(nèi)由標(biāo)記適當(dāng)命名的產(chǎn)品或服務(wù)來使用)、Smalltalk或C++等的面向?qū)ο蟮木幊陶Z言、以及諸如“C”編程語言或類似的編程語言等的傳統(tǒng)的過程編程語言。程序代碼可以整體在用戶的計算機上執(zhí)行、部分在用戶的計算機上執(zhí)行、作為單機軟件包執(zhí)行、部分在用戶的計算機上執(zhí)行并且部分在遠(yuǎn)程計算機上執(zhí)行、或整體在遠(yuǎn)程計算機或服務(wù)器上執(zhí)行。在后者場景中,遠(yuǎn)程計算機可以經(jīng)由包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)的任何類型的網(wǎng)絡(luò)連接至用戶的計算機,或者可以(例如,經(jīng)由使用因特網(wǎng)服務(wù)提供商(Internet Service Provider)的因特網(wǎng))連接至外部計算機。
[0015]下面將參照根據(jù)本發(fā)明實施例的方法、裝置(系統(tǒng))和計算機程序產(chǎn)品的流程圖和/或框圖描述本發(fā)明。應(yīng)當(dāng)理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機程序指令實現(xiàn)。這些計算機程序指令可以提供給通用計算機、專用計算機或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機器,使得這些計算機程序指令在通過計算機或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行時,產(chǎn)生了實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的裝置。
[0016]也可以把這些計算機程序指令存儲在計算機可讀介質(zhì)中,這些指令使得計算機、其它可編程數(shù)據(jù)處理裝置、或其他設(shè)備以特定方式工作,從而,存儲在計算機可讀介質(zhì)中的指令就產(chǎn)生出包括實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的指令