用于磁盤數(shù)據(jù)管理的方法和裝置的制造方法
【專利摘要】本發(fā)明的實(shí)施例提供了一種用于磁盤數(shù)據(jù)管理的方法和裝置。該方法包括從磁盤獲取BMS數(shù)據(jù)。該方法還包括基于該BMS數(shù)據(jù),確定該磁盤中的壞扇區(qū),并且修復(fù)在所確定的壞扇區(qū)中存儲(chǔ)的數(shù)據(jù)。由于BMS由磁盤自身執(zhí)行且BMS數(shù)據(jù)根據(jù)該磁盤對(duì)BMS的執(zhí)行而被記錄,在完成磁盤檢測(cè)的過程中,無需從磁盤讀取和檢驗(yàn)數(shù)據(jù),這極大地減少了磁盤檢測(cè)的資源消耗和時(shí)間成本、避免了因?yàn)閷?duì)磁盤的讀取而造成的額外磁盤磨損,并且磁盤檢測(cè)的準(zhǔn)確性得以提高,因?yàn)镮/O端口的連接故障不會(huì)影響到對(duì)壞扇區(qū)的判斷。
【專利說明】
用于磁盤數(shù)據(jù)管理的方法和裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明的各種實(shí)施方式涉及數(shù)據(jù)存儲(chǔ)領(lǐng)域,并且更具體地,涉及用于磁盤數(shù)據(jù)管理的方法和裝置。
【背景技術(shù)】
[0002]對(duì)于許多數(shù)據(jù)存儲(chǔ)系統(tǒng)而言,數(shù)據(jù)完整性是一個(gè)重要的問題。在數(shù)據(jù)存儲(chǔ)系統(tǒng)中,由于磁盤的扇區(qū)中所存儲(chǔ)的數(shù)據(jù)長(zhǎng)期未被訪問或者其他原因,可能形成壞扇區(qū)。磁盤檢測(cè)(disk scrubbing)技術(shù)被設(shè)計(jì)用于防止數(shù)據(jù)存儲(chǔ)系統(tǒng)的磁盤上的壞扇區(qū)、并且在壞扇區(qū)中的數(shù)據(jù)被實(shí)際訪問之前修復(fù)這些數(shù)據(jù)。常規(guī)的磁盤檢測(cè)技術(shù)包括如下步驟:從磁盤順序地讀取數(shù)據(jù);檢驗(yàn)所讀取的數(shù)據(jù)的正確性;如果數(shù)據(jù)不正確或者無法從磁盤的扇區(qū)讀取數(shù)據(jù),則修復(fù)該數(shù)據(jù)。在具有多個(gè)磁盤的數(shù)據(jù)存儲(chǔ)系統(tǒng)中,對(duì)于每個(gè)磁盤,均要執(zhí)行上述過程。
[0003]常規(guī)的磁盤檢測(cè)技術(shù)存在諸多缺陷:(I)系統(tǒng)資源消耗的問題。因?yàn)樾枰獜拇疟P讀取和檢驗(yàn)數(shù)據(jù),該磁盤檢測(cè)過程造成了大量的系統(tǒng)資源消耗。例如,在磁盤檢測(cè)過程中,大量1/0(輸入/輸出)資源、內(nèi)存資源、CPU(中央處理單元)資源被占用,這將影響到正常的I/o讀取操作和系統(tǒng)處理速度。(2)時(shí)間成本的問題。磁盤讀操作耗費(fèi)時(shí)間較大。隨著數(shù)據(jù)存儲(chǔ)系統(tǒng)趨于具有更大的容量,例如4TB甚至更大的容量,磁盤檢測(cè)的完成將花費(fèi)更多的時(shí)間。在數(shù)據(jù)存儲(chǔ)系統(tǒng)具有多個(gè)磁盤的情況下,因?yàn)镮/O資源的限制,需要對(duì)多個(gè)磁盤依次讀取和檢驗(yàn)數(shù)據(jù),進(jìn)一步增加了處理時(shí)間。(3)檢測(cè)結(jié)果的準(zhǔn)確性問題。在上述磁盤檢測(cè)過程中,因?yàn)樯婕暗酱疟P讀操作,I/O端口的連接問題也會(huì)影響檢測(cè)結(jié)果。例如,I/O端口自身的故障將導(dǎo)致該磁盤檢測(cè)過程判斷無法通過該I/O端口讀取的數(shù)據(jù)需要被修復(fù)。
[4]磁盤磨損的問題。因磁盤檢測(cè)而讀取磁盤的數(shù)據(jù),還將造成磁盤的磨損。
【發(fā)明內(nèi)容】
[0004]鑒于上述以及其他潛在問題,本發(fā)明的實(shí)施方式提供了用于磁盤數(shù)據(jù)管理的方法和裝置。
[0005]根據(jù)本發(fā)明的第一方面,提供了一種用于磁盤數(shù)據(jù)管理的方法。該方法包括從磁盤獲取BMS (Background Medium Scan,后臺(tái)介質(zhì)掃描)數(shù)據(jù)。該方法還包括基于該BMS數(shù)據(jù),確定該磁盤中的壞扇區(qū),并且修復(fù)在所確定的壞扇區(qū)中存儲(chǔ)的數(shù)據(jù)。
[0006]根據(jù)一個(gè)實(shí)施例,該BMS數(shù)據(jù)根據(jù)該磁盤對(duì)BMS的執(zhí)行而被記錄。
[0007]根據(jù)一個(gè)實(shí)施例,該方法進(jìn)一步包括在磁盤執(zhí)行BMS之前,配置用于BMS的參數(shù)。該參數(shù)包括以下各項(xiàng)中的至少一項(xiàng)=BMS間隔時(shí)間和BMS執(zhí)行前的最小空閑時(shí)間。
[0008]根據(jù)一個(gè)實(shí)施例,BMS數(shù)據(jù)包括BMS狀態(tài)信息和BMS結(jié)果條目?;贐MS數(shù)據(jù),確定磁盤中的壞扇區(qū)進(jìn)一步包括:基于BMS狀態(tài)彳目息確定最后一次BMS的執(zhí)彳丁時(shí)間期間;基于最后一次BMS的執(zhí)行時(shí)間期間,從BMS結(jié)果條目中標(biāo)識(shí)根據(jù)最后一次BMS的執(zhí)行而被記錄的BMS結(jié)果條目;以及根據(jù)所標(biāo)識(shí)的BMS結(jié)果條目,確定磁盤的壞扇區(qū)。
[0009]根據(jù)一個(gè)實(shí)施例,每個(gè)BMS結(jié)果條目至少包括扇區(qū)的錯(cuò)誤類型、錯(cuò)誤發(fā)生時(shí)間、位置和修復(fù)狀態(tài),錯(cuò)誤類型至少包括已修復(fù)錯(cuò)誤和介質(zhì)錯(cuò)誤。根據(jù)所標(biāo)識(shí)的BMS結(jié)果條目,確定磁盤的壞扇區(qū)進(jìn)一步包括:從所標(biāo)識(shí)的BMS結(jié)果條目中確定第一結(jié)果條目,第一結(jié)果條目包括指示介質(zhì)錯(cuò)誤的錯(cuò)誤類型和指示扇區(qū)未被修正的修復(fù)狀態(tài);以及根據(jù)第一結(jié)果條目中所包括的位置確定磁盤的壞扇區(qū)。
[0010]根據(jù)一個(gè)實(shí)施例,該方法進(jìn)一步包括在獲取BMS數(shù)據(jù)之前,從磁盤查詢BMS狀態(tài)信息,以確定BMS的執(zhí)行是否完成。
[0011]根據(jù)一個(gè)實(shí)施例,修復(fù)在所確定的壞扇區(qū)中存儲(chǔ)的數(shù)據(jù)包括:根據(jù)RAID冗余,修復(fù)在所確定的壞扇區(qū)中存儲(chǔ)的數(shù)據(jù)并且將所確定的壞扇區(qū)重定位到磁盤的其他可用扇區(qū)。
[0012]根據(jù)一個(gè)實(shí)施例,該方法進(jìn)一步包括基于根據(jù)至少一次BMS的執(zhí)行而被記錄的BMS結(jié)果條目,生成與磁盤的健康狀況有關(guān)的指示。
[0013]根據(jù)本發(fā)明的第二方面,提供了一種用于磁盤數(shù)據(jù)管理的裝置。該裝置包括獲取單元,被配置為從磁盤獲取后臺(tái)介質(zhì)掃描BMS數(shù)據(jù)。該裝置還包括確定單元,被配置為基于BMS數(shù)據(jù),確定磁盤中的壞扇區(qū);以及修復(fù)單元,被配置為修復(fù)在所確定的壞扇區(qū)中存儲(chǔ)的數(shù)據(jù)。
[0014]根據(jù)一個(gè)實(shí)施例,該BMS數(shù)據(jù)根據(jù)該磁盤對(duì)BMS的執(zhí)行而被記錄。
[0015]根據(jù)一個(gè)實(shí)施例,該裝置進(jìn)一步包括配置單元,被配置為在磁盤執(zhí)行BMS之前,配置用于BMS的參數(shù)。該參數(shù)包括以下各項(xiàng)中的至少一項(xiàng):BMS間隔時(shí)間和BMS執(zhí)行前的最小空閑時(shí)間。
[0016]根據(jù)一個(gè)實(shí)施例,BMS數(shù)據(jù)包括BMS狀態(tài)信息和BMS結(jié)果條目。確定單元包括:執(zhí)行時(shí)間確定單元,被配置為基于BMS狀態(tài)信息確定最后一次BMS的執(zhí)行時(shí)間期間;以及結(jié)果條目識(shí)別單元,被配置為基于最后一次BMS的執(zhí)行時(shí)間期間,從BMS結(jié)果條目中標(biāo)識(shí)根據(jù)最后一次BMS的執(zhí)行而被記錄的BMS結(jié)果條目。確定單元被配置為根據(jù)所標(biāo)識(shí)的BMS結(jié)果條目,確定磁盤的壞扇區(qū)。
[0017]根據(jù)一個(gè)實(shí)施例,每個(gè)BMS結(jié)果條目至少包括扇區(qū)的錯(cuò)誤類型、錯(cuò)誤發(fā)生時(shí)間、位置和修復(fù)狀態(tài),錯(cuò)誤類型至少包括已修復(fù)錯(cuò)誤和介質(zhì)錯(cuò)誤。確定單元進(jìn)一步被配置為:從所標(biāo)識(shí)的BMS結(jié)果條目中確定第一結(jié)果條目,第一結(jié)果條目包括指示介質(zhì)錯(cuò)誤的錯(cuò)誤類型和指示扇區(qū)未被修正的修復(fù)狀態(tài);以及根據(jù)第一結(jié)果條目中所包括的位置確定磁盤的壞扇區(qū)。
[0018]根據(jù)一個(gè)實(shí)施例,該裝置進(jìn)一步包括查詢單元,被配置為在獲取BMS數(shù)據(jù)之前,從磁盤查詢BMS狀態(tài)信息,以確定BMS的執(zhí)行是否完成。
[0019]根據(jù)一個(gè)實(shí)施例,修復(fù)單元進(jìn)一步被配置為:根據(jù)RAID冗余,修復(fù)在所確定的壞扇區(qū)中存儲(chǔ)的數(shù)據(jù)并且將所確定的壞扇區(qū)重定位到磁盤的其他可用扇區(qū)。
[0020]根據(jù)一個(gè)實(shí)施例,該裝置進(jìn)一步包括指示生成單元,被配置為基于根據(jù)至少一次BMS的執(zhí)行而被記錄的BMS結(jié)果條目,生成與磁盤的健康狀況有關(guān)的指示。
[0021]通過下文描述將會(huì)理解,根據(jù)本發(fā)明的實(shí)施例,磁盤的BMS能力被用來實(shí)現(xiàn)磁盤檢測(cè)。通過從磁盤獲取根據(jù)BMS的執(zhí)行而被記錄的BMS數(shù)據(jù),例如BMS狀態(tài)信息和BMS結(jié)果條目,可以確定磁盤的壞扇區(qū)并且修復(fù)壞扇區(qū)中所存儲(chǔ)的數(shù)據(jù),達(dá)到前瞻性地檢測(cè)磁盤壞扇區(qū)和檢測(cè)磁盤失效的目的。由于BMS由磁盤自身執(zhí)行且BMS數(shù)據(jù)根據(jù)該磁盤對(duì)BMS的執(zhí)行而被記錄,在完成磁盤檢測(cè)的過程中,無需從磁盤讀取和檢驗(yàn)數(shù)據(jù),這極大地減少了磁盤檢測(cè)的資源消耗和時(shí)間成本、避免了因?yàn)閷?duì)磁盤的讀取而造成的額外磁盤磨損,并且磁盤檢測(cè)的準(zhǔn)確性得以提高,因?yàn)镮/o端口的連接故障不會(huì)影響到對(duì)壞扇區(qū)的判斷。
【附圖說明】
[0022]通過結(jié)合附圖對(duì)本公開的示例性實(shí)施方式進(jìn)行更詳細(xì)的描述,本公開的上述以及其它目的、特征和優(yōu)勢(shì)將變得更加明顯,其中,在本公開示例性實(shí)施方式中,相同的參考標(biāo)號(hào)通常代表相同部件。
[0023]圖1示出了適于用來實(shí)現(xiàn)本發(fā)明的實(shí)施方式的示例性計(jì)算機(jī)系統(tǒng)/服務(wù)器的框圖;
[0024]圖2示出了根據(jù)本發(fā)明的實(shí)施例的用于磁盤數(shù)據(jù)管理的方法的流程圖;
[0025]圖3示出了根據(jù)本發(fā)明的實(shí)施例的示例BMS狀態(tài)頁面格式的示圖;
[0026]圖4示出了根據(jù)本發(fā)明的實(shí)施例的示例BMS結(jié)果頁面格式的示圖;以及
[0027]圖5示出了根據(jù)本發(fā)明的實(shí)施例的用于磁盤數(shù)據(jù)管理的裝置的框圖。
【具體實(shí)施方式】
[0028]下面將參照附圖更詳細(xì)地描述本公開的優(yōu)選實(shí)施方式。雖然附圖中顯示了本公開的優(yōu)選實(shí)施方式,然而應(yīng)該理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施方式所限制。相反,提供這些實(shí)施方式是為了使本公開更加透徹和完整,并且能夠?qū)⒈竟_的范圍完整地傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0029]圖1示出了適于用來實(shí)現(xiàn)本發(fā)明的實(shí)施方式的示例性計(jì)算機(jī)系統(tǒng)/服務(wù)器12的框圖。圖1顯示的計(jì)算機(jī)系統(tǒng)/服務(wù)器12僅僅是一個(gè)示例,不應(yīng)對(duì)本發(fā)明的實(shí)施方式的功能和使用范圍帶來任何限制。
[0030]如圖1所示,計(jì)算機(jī)系統(tǒng)/服務(wù)器12以通用計(jì)算設(shè)備的形式表現(xiàn)。計(jì)算機(jī)系統(tǒng)/服務(wù)器12的組件可以包括但不限于:一個(gè)或者多個(gè)處理器或者處理單元16,系統(tǒng)存儲(chǔ)器28,連接不同系統(tǒng)組件(包括系統(tǒng)存儲(chǔ)器28和處理單元16)的總線18。
[0031]總線18表示幾類總線結(jié)構(gòu)中的一種或多種,包括存儲(chǔ)器總線或者存儲(chǔ)器控制器,外圍總線,圖形加速端口,處理器或者使用多種總線結(jié)構(gòu)中的任意總線結(jié)構(gòu)的局域總線。舉例來說,這些體系結(jié)構(gòu)包括但不限于工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線,微通道體系結(jié)構(gòu)(MAC)總線,增強(qiáng)型ISA總線、視頻電子標(biāo)準(zhǔn)協(xié)會(huì)(VESA)局域總線以及外圍組件互連(PCI)總線。
[0032]計(jì)算機(jī)系統(tǒng)/服務(wù)器12典型地包括多種計(jì)算機(jī)系統(tǒng)可讀介質(zhì)。這些介質(zhì)可以是任何能夠被計(jì)算機(jī)系統(tǒng)/服務(wù)器12訪問的可用介質(zhì),包括易失性和非易失性介質(zhì),可移動(dòng)的和不可移動(dòng)的介質(zhì)。
[0033]系統(tǒng)存儲(chǔ)器28可以包括易失性存儲(chǔ)器形式的計(jì)算機(jī)系統(tǒng)可讀介質(zhì),例如存儲(chǔ)器30和/或緩存器32。計(jì)算機(jī)系統(tǒng)/服務(wù)器12可以進(jìn)一步包括其他可移動(dòng)/不可移動(dòng)的、易失性/非易失性計(jì)算機(jī)系統(tǒng)存儲(chǔ)介質(zhì)。盡管圖1中未示出,可以提供用于對(duì)可移動(dòng)非易失性磁盤(例如“軟盤,,)讀寫的磁盤驅(qū)動(dòng)器,以及對(duì)可移動(dòng)非易失性光盤(例如⑶-R0M,DVD-ROM或者其他光介質(zhì))讀寫的光盤驅(qū)動(dòng)器。在這些情況下,每個(gè)驅(qū)動(dòng)器可以通過一個(gè)或者多個(gè)數(shù)據(jù)介質(zhì)接口與總線18相連。存儲(chǔ)器28可以包括至少一個(gè)程序產(chǎn)品,該程序產(chǎn)品具有一組(例如至少一個(gè))程序模塊,這些程序模塊被配置以執(zhí)行本發(fā)明各實(shí)施方式的功倉(cāng)泛。
[0034]具有一組(至少一個(gè))程序模塊42的程序/實(shí)用工具40,可以存儲(chǔ)在例如存儲(chǔ)器28中,這樣的程序模塊42包括——但不限于——操作系統(tǒng)、一個(gè)或者多個(gè)應(yīng)用程序、其他程序模塊以及程序數(shù)據(jù),這些示例中的每一個(gè)或某種組合中可能包括網(wǎng)絡(luò)環(huán)境的實(shí)現(xiàn)。程序模塊42通常執(zhí)行本發(fā)明所描述的實(shí)施方式中的功能和/或方法。
[0035]根據(jù)需要,計(jì)算機(jī)系統(tǒng)/服務(wù)器12也可以與一個(gè)或多個(gè)外部設(shè)備(例如顯示設(shè)備
24、存儲(chǔ)設(shè)備14等)通信,還可與一個(gè)或者多個(gè)使得用戶能與該計(jì)算機(jī)系統(tǒng)/服務(wù)器12交互的設(shè)備通信,和/或與使得該計(jì)算機(jī)系統(tǒng)/服務(wù)器12能與一個(gè)或多個(gè)其他計(jì)算設(shè)備進(jìn)行通信的任何設(shè)備(例如網(wǎng)卡,調(diào)制解調(diào)器等等)通信。這種通信可以通過輸入/輸出(I/O)接口 22進(jìn)行。并且,計(jì)算機(jī)系統(tǒng)/服務(wù)器12還可以通過網(wǎng)絡(luò)適配器20與一個(gè)或者多個(gè)網(wǎng)絡(luò)(例如局域網(wǎng)(LAN),廣域網(wǎng)(WAN)和/或公共網(wǎng)絡(luò),例如因特網(wǎng))通信。如圖所示,網(wǎng)絡(luò)適配器20通過總線18與計(jì)算機(jī)系統(tǒng)/服務(wù)器12的其他模塊通信。應(yīng)當(dāng)明白,盡管圖中未示出,可以結(jié)合計(jì)算機(jī)系統(tǒng)/服務(wù)器12使用其他硬件和/或軟件模塊,包括但不限于:微代碼、設(shè)備驅(qū)動(dòng)器、冗余處理單元、外部磁盤驅(qū)動(dòng)陣列、RAID系統(tǒng)、磁帶驅(qū)動(dòng)器以及數(shù)據(jù)備份存儲(chǔ)系統(tǒng)等。
[0036]在對(duì)示例實(shí)施例的描述中,術(shù)語“包括”及其類似用語表示開放性包含,即“包括但不限于”。術(shù)語“基于”表示“至少部分地基于”。術(shù)語“一個(gè)實(shí)施例”或“該實(shí)施例”表示“至少一個(gè)實(shí)施例”。
[0037]下面將詳細(xì)描述本發(fā)明的實(shí)施例。通過下文描述將會(huì)理解,本發(fā)明的核心創(chuàng)造性思想之一在于:利用磁盤的BMS能力來實(shí)現(xiàn)磁盤檢測(cè)。通過從磁盤獲取根據(jù)BMS的執(zhí)行而被記錄的BMS數(shù)據(jù),例如BMS狀態(tài)信息和BMS結(jié)果條目,可以確定磁盤的壞扇區(qū)并且修復(fù)壞扇區(qū)中所存儲(chǔ)的數(shù)據(jù),達(dá)到前瞻性地檢測(cè)磁盤壞扇區(qū)和檢測(cè)磁盤失效的目的。由于BMS由磁盤自身執(zhí)行且BMS數(shù)據(jù)根據(jù)該磁盤對(duì)BMS的執(zhí)行而被記錄,在完成磁盤檢測(cè)的過程中,無需從磁盤讀取和檢驗(yàn)數(shù)據(jù),這極大地減少了磁盤檢測(cè)的資源消耗和時(shí)間成本、避免了因?yàn)閷?duì)磁盤的讀取而造成的額外磁盤磨損,并且磁盤檢測(cè)的準(zhǔn)確性得以提高,因?yàn)镮/O端口的連接故障不會(huì)影響到對(duì)壞扇區(qū)的判斷。
[0038]后臺(tái)介質(zhì)掃描(BMS)是單個(gè)磁盤為了保持它的數(shù)據(jù)的良好狀態(tài)而執(zhí)行的處理。BMS過程被定義為在磁盤中執(zhí)行的、不需要任何系統(tǒng)傳送帶寬的任何操作。在BMS過程中,磁盤的數(shù)據(jù)塊不會(huì)從磁盤被讀取并保存在操作系統(tǒng)的高速緩存中。BMS過程在磁盤空閑的時(shí)候工作。在示例配置中,當(dāng)磁盤在例如大約500ms的時(shí)間內(nèi)沒有接收到任何讀/寫命令時(shí),執(zhí)行BMS。
[0039]一種示例BMS過程如下:磁盤以扇區(qū)為單位內(nèi)部地讀取數(shù)據(jù),并且以較小的ECC(錯(cuò)誤檢查和糾正)容忍度檢驗(yàn)每個(gè)扇區(qū)所存儲(chǔ)的數(shù)據(jù)是否正確。例如,在磁盤的正常讀寫過程中,以100比特/扇區(qū)的ECC容忍度判斷扇區(qū)所存儲(chǔ)的數(shù)據(jù)是否正確,而在BMS過程中,以更小的ECC容忍度、例如80比特/扇區(qū)來判斷數(shù)據(jù)的正確性。當(dāng)檢測(cè)到某個(gè)扇區(qū)所存儲(chǔ)的數(shù)據(jù)不正確時(shí),BMS過程可以以正常的ECC容忍度來修復(fù)該份數(shù)據(jù),并且嘗試將該數(shù)據(jù)重新寫入原先的扇區(qū)。然后,BMS過程驗(yàn)證被重新寫入的數(shù)據(jù)是否能夠被正確地重新讀取。如果無法被重新讀取,該扇區(qū)則被記錄為未修復(fù)扇區(qū)。如果能夠被重新讀取,該扇區(qū)則被記錄為已修復(fù)扇區(qū)。如果某個(gè)扇區(qū)中的數(shù)據(jù)一開始就無法被讀取,則BMS過程可以將該扇區(qū)記錄為未修復(fù)扇區(qū)。BMS過程還可以將該扇區(qū)標(biāo)識(shí)為需要重定位,并且當(dāng)該扇區(qū)的下一個(gè)操作時(shí)寫操作時(shí),將待寫入的數(shù)據(jù)重定位到其他扇區(qū)。
[0040]關(guān)于BMS的具體描述還可以參見,由T10,一個(gè)認(rèn)證標(biāo)準(zhǔn)委員會(huì)INCITS (InterNat1nal Committee for Informat1n Technology Standards)的技術(shù)委員會(huì)公布的文檔 “ Informat1n technology-SCSI Primary Commands-4,,和 “ Informat1ntechnology-SCSI Block Commands_3”,它們的公開內(nèi)容通過引用而整體并入本文中。
[0041]參照參見圖2,其示出了根據(jù)本發(fā)明的實(shí)施例的用于磁盤數(shù)據(jù)管理的方法200的流程圖。應(yīng)理解的是,方法200中記載的各個(gè)步驟可以按照不同的順序執(zhí)行,和/或并行執(zhí)行。方法200還可以包括附加的步驟和/或省略執(zhí)行示出的步驟。本發(fā)明的范圍在此方面不受限制。
[0042]在方法200的步驟S201,從磁盤獲取BMS數(shù)據(jù)。該BMS數(shù)據(jù)根據(jù)該磁盤對(duì)BMS的執(zhí)行而被記錄
[0043]根據(jù)本發(fā)明的實(shí)施例,執(zhí)行磁盤檢測(cè)以確保數(shù)據(jù)的完整性是基于磁盤的BMS數(shù)據(jù)。在一個(gè)實(shí)施例中,在開始對(duì)磁盤進(jìn)行磁盤檢測(cè)之前,可以首先確定該磁盤是否支持BMS。舉例而言,對(duì)BMS的能力的確定可以通過SCSI (小型計(jì)算機(jī)系統(tǒng)接口 )命令,檢驗(yàn)該磁盤是否支持BMS。
[0044]根據(jù)一個(gè)實(shí)施例,在磁盤執(zhí)行BMS之前,可以配置用于BMS的參數(shù)。可配置的參數(shù)包括以下各項(xiàng)中的至少一項(xiàng)=BMS間隔時(shí)間和BMS執(zhí)行前的最小空閑時(shí)間。BMS間隔時(shí)間可以指示兩次BMS之間的時(shí)間間隔,例如可以是上一次BMS的執(zhí)行的開始時(shí)間與下一次BMS的執(zhí)行的結(jié)束時(shí)間之間的時(shí)間長(zhǎng)度。BMS間隔時(shí)間可以根據(jù)對(duì)磁盤檢測(cè)的需要而配置為例如數(shù)小時(shí)、數(shù)十小時(shí)或者數(shù)天。例如,對(duì)于磁盤的數(shù)據(jù)完整性要求較高、或者磁盤工作環(huán)境較為惡劣的磁盤,可以配置較小的BMS間隔時(shí)間。反之,可以配置較長(zhǎng)的BMS間隔時(shí)間。BMS執(zhí)行前的最小空閑時(shí)間可以指示在一次BMS的執(zhí)行過程中,暫停BMS操作之后到重新開始BMS操作之前應(yīng)當(dāng)?shù)却淖钚】臻e時(shí)間,例如數(shù)毫秒、數(shù)十毫秒、或者數(shù)秒等。因?yàn)锽MS過程應(yīng)當(dāng)在磁盤空閑的時(shí)候工作,如果在執(zhí)行BMS的過程中磁盤接收到正常的讀、寫或者其他命令,當(dāng)前的BMS過程會(huì)被暫停。只有在完成磁盤的命令并且在最小空閑時(shí)間內(nèi)都沒有接收到其他命令,當(dāng)前的BMS過程才會(huì)重新開始。要配置的BMS參數(shù)還可以包括其他參數(shù),并且要配置的BMS間隔時(shí)間或最小空閑時(shí)間的大小還可以選擇其他數(shù)值,本發(fā)明的范圍在此方面不受限制。
[0045]根據(jù)另外的實(shí)施例,可以不必要在每個(gè)BMS的過程開始之前都配置上述參數(shù),或者可以無需單獨(dú)配置上述參數(shù)而是直接采用磁盤的默認(rèn)值。
[0046]單個(gè)磁盤在執(zhí)行BMS過程之后,會(huì)產(chǎn)生BMS數(shù)據(jù),也被稱為BMS日志數(shù)據(jù)或BMS日志頁面。BMS數(shù)據(jù)是磁盤在執(zhí)行BMS時(shí)記錄的信息,包括與BMS過程有關(guān)的信息、在BMS過程中被修復(fù)的扇區(qū)的信息、未被修復(fù)的扇區(qū)的信息等。該BMS數(shù)據(jù)被記錄在磁盤中。在本發(fā)明的實(shí)施例中,這些BMS數(shù)據(jù)可以用于對(duì)磁盤進(jìn)行診斷,以便從磁盤中識(shí)別出壞扇區(qū)。
[0047]根據(jù)一些實(shí)施例,所獲取的BMS數(shù)據(jù)可以包括BMS狀態(tài)信息和BMS結(jié)果條目。BMS狀態(tài)信息可以指示BMS的狀態(tài)(例如,是否活躍)、已執(zhí)行的BMS的數(shù)量、BMS進(jìn)度(例如,BMS完成的百分比)、以及磁盤的累計(jì)上電時(shí)間(例如,在最后一次BMS的執(zhí)行完成之后,記錄的是完成的時(shí)間)等。從磁盤獲取的BMS狀態(tài)信息的示例頁面格式在圖3中被示出。BMS結(jié)果條目與BMS所記錄的曾經(jīng)發(fā)生過錯(cuò)誤或者正存在錯(cuò)誤的扇區(qū)相關(guān)聯(lián)。在一個(gè)實(shí)施例中,每個(gè)BMS結(jié)果條目至少包括扇區(qū)的錯(cuò)誤類型、錯(cuò)誤發(fā)生時(shí)間、位置和修復(fù)狀態(tài)(是否經(jīng)由BMS過程或者其他修正操作而被修正)。從磁盤獲取的BMS結(jié)果條目的示例頁面格式在圖4中被TJK出。在圖4中,扇區(qū)的錯(cuò)誤類型由圖4的感應(yīng)鍵(sense key)指不,可以包括已修復(fù)錯(cuò)誤(recovered error)和介質(zhì)錯(cuò)誤(medium error);扇區(qū)的錯(cuò)誤發(fā)生時(shí)間由圖4的磁盤的累計(jì)上電時(shí)間指示;扇區(qū)的位置由邏輯塊尋址(LBA)指示;并且圖4的重分配狀態(tài)(reassign status)指示扇區(qū)的修復(fù)狀態(tài),例如是否被修正。
[0048]BMS結(jié)果條目的數(shù)量可以是一個(gè)或多個(gè)。在磁盤的數(shù)據(jù)完整性良好的情況下,也可能沒有BMS結(jié)果條目。對(duì)于包括BMS狀態(tài)信息和BMS結(jié)果條目在內(nèi)的BMS數(shù)據(jù)的使用在下文中被詳細(xì)描述。應(yīng)當(dāng)理解的是,BMS狀態(tài)信息和BMS結(jié)果條目可以包括以上所列舉的信息之外的內(nèi)容,并且除了圖3和4中示出的BMS狀態(tài)信息和BMS結(jié)果條目的頁面格式之外,還可以想到其他頁面格式,本發(fā)明的實(shí)施例在此方面不受限制。
[0049]因?yàn)榇疟P作為存儲(chǔ)裝置,可能不會(huì)主動(dòng)報(bào)告BMS的執(zhí)行是否完成,在一些實(shí)施例中,為了獲取BMS數(shù)據(jù),還可以從磁盤查詢BMS狀態(tài)信息以確定BMS的執(zhí)行是否完成。例如,BMS狀態(tài)信息中的BMS狀態(tài)指示了 BMS過程是否活躍,并且BMS進(jìn)度指示BMS完成的百分比。如果通過查詢BMS狀態(tài)信息,獲知BMS過程是活躍的且BMS完成的百分比不到百分之百,則可以確定當(dāng)前的BMS過程正在進(jìn)行。如果通過查詢BMS狀態(tài)信息,獲知BMS過程不活躍且BMS完成的百分比不到百分之百,則可以確定當(dāng)前的BMS過程被暫停。進(jìn)一步地,如果通過查詢BMS狀態(tài)信息,獲知BMS過程不活躍且BMS完成的百分比達(dá)到百分之百,則可以確定當(dāng)前的BMS過程已完成??梢灾芷谛缘鼗蛘呖梢园凑疹A(yù)設(shè)的其他時(shí)間間隔方式從磁盤查詢BMS狀態(tài)信息。
[0050]在一個(gè)實(shí)施例中,可以在確定BMS的執(zhí)行已完成的情況下,從磁盤獲取BMS數(shù)據(jù),此時(shí)BMS數(shù)據(jù)可以包括完整的BMS過程所記錄的信息。在另一個(gè)實(shí)施例中,可以在確定BMS完成的百分比達(dá)到預(yù)定閾值(例如,百分之五十)之后,從磁盤獲取BMS數(shù)據(jù)。在另外的實(shí)施例中,還可以無需確定BMS的執(zhí)行是否已完成,而是直接從磁盤獲取BMS數(shù)據(jù)。在BMS的執(zhí)行未完成的情況下所獲取的BMS數(shù)據(jù)可能僅包括在這個(gè)時(shí)間點(diǎn)之前已執(zhí)行的BMS所記錄的信息。
[0051]繼續(xù)參照?qǐng)D2,在步驟S202,基于該BMS數(shù)據(jù),確定該磁盤中的壞扇區(qū)。
[0052]如前面所討論的,BMS數(shù)據(jù)包含了在BMS的執(zhí)行期間檢測(cè)到的與數(shù)據(jù)錯(cuò)誤有關(guān)的信息。因此,基于該BMS數(shù)據(jù),可以確定該磁盤中的壞扇區(qū)。
[0053]在一些實(shí)施例中,由于磁盤可能已經(jīng)執(zhí)行多于一次的BMS過程,在步驟S201中獲取的BMS數(shù)據(jù)中的BMS結(jié)果條目可能包含多次BMS過程所記錄的BMS結(jié)果條目。然而,通常期望獲取最后一次的BMS的執(zhí)行所記錄的BMS結(jié)果條目,因?yàn)檫@些條目反映了最新的磁盤狀況。因此,需要從獲取的BMS結(jié)果條目中標(biāo)識(shí)出根據(jù)最后一次BMS的執(zhí)行而被記錄的BMS結(jié)果條目。在一個(gè)實(shí)施例中,該標(biāo)識(shí)可以包括:基于BMS狀態(tài)信息確定最后一次BMS的執(zhí)行時(shí)間期間;基于最后一次BMS的執(zhí)行時(shí)間期間,從BMS結(jié)果條目中標(biāo)識(shí)根據(jù)最后一次BMS的執(zhí)行而被記錄的BMS結(jié)果條目。根據(jù)所標(biāo)識(shí)的BMS結(jié)果條目,可以確定磁盤的壞扇區(qū)。
[0054]如以上所提及的,BMS狀態(tài)信息可以包括磁盤的累計(jì)上電時(shí)間。該時(shí)間可以指示該BMS狀態(tài)信息被獲取的時(shí)間,并且在最后一次BMS的執(zhí)行完成之后,該時(shí)間指示完成的時(shí)間。磁盤的累計(jì)上電時(shí)間可以例如以分鐘為單位、以小時(shí)為單位、或者以天為單位等。根據(jù)與最后一次BMS有關(guān)的磁盤的累計(jì)上電時(shí)間和與前一次BMS有關(guān)的磁盤的累計(jì)上電時(shí)間,可以確定最后一次BMS的開始時(shí)間和結(jié)束時(shí)間,即執(zhí)行時(shí)間期間。如果BMS狀態(tài)信息是在最后一次BMS的執(zhí)行未完成的時(shí)候被獲取的,那么所確定的執(zhí)行時(shí)間期間是前一次BMS的執(zhí)行完成之后到該BMS狀態(tài)信息被獲取的時(shí)間之間時(shí)間段。
[0055]確定最后一次BMS的執(zhí)行時(shí)間期間之后,由于每個(gè)BMS結(jié)果條目中包括扇區(qū)的錯(cuò)誤發(fā)生時(shí)間(例如,在檢測(cè)到錯(cuò)誤時(shí)的磁盤的累計(jì)上電時(shí)間),通過確定每個(gè)BMS結(jié)果條目所包括的扇區(qū)的錯(cuò)誤發(fā)生時(shí)間是否落在最后一次BMS的執(zhí)行時(shí)間期間內(nèi),可以標(biāo)識(shí)出根據(jù)最后一次BMS的執(zhí)行而被記錄的BMS結(jié)果條目。例如,假設(shè)最后一次BMS的執(zhí)行時(shí)間期間被確定為磁盤的上電時(shí)間6000分鐘至6120分鐘。如果一個(gè)BMS結(jié)果條目所包括的扇區(qū)的錯(cuò)誤發(fā)生時(shí)間(例如,圖4的累計(jì)上電時(shí)間)是6010分鐘,那么該時(shí)間落入在6000分鐘至6120分鐘的執(zhí)行時(shí)間期間,因此該BMS結(jié)果條目可以被確定為在最后一次BMS的執(zhí)行過程中被記錄的。
[0056]應(yīng)當(dāng)知道,除了根據(jù)以上方式之外,還可以采用其他方式標(biāo)識(shí)根據(jù)最后一次BMS的執(zhí)行而被記錄的BMS結(jié)果條目。例如,可以根據(jù)輔助信息,例如預(yù)先配置的BMS的參數(shù),確定最后一次BMS的執(zhí)行時(shí)間期間,以便從多次BMS的執(zhí)行所產(chǎn)生的BMS結(jié)果條目中標(biāo)識(shí)出屬于最后一次BMS的執(zhí)行的條目。
[0057]根據(jù)本發(fā)明的一個(gè)實(shí)施例,根據(jù)所標(biāo)識(shí)的BMS結(jié)果條目,確定磁盤的壞扇區(qū)進(jìn)一步包括:從所標(biāo)識(shí)的BMS結(jié)果條目中確定第一結(jié)果條目,第一結(jié)果條目包括指示介質(zhì)錯(cuò)誤的錯(cuò)誤類型和指示扇區(qū)未被修正的修復(fù)狀態(tài);以及根據(jù)第一結(jié)果條目中所包括的位置確定磁盤的壞扇區(qū)。
[0058]在BMS執(zhí)行期間中,當(dāng)一個(gè)扇區(qū)被檢測(cè)到數(shù)據(jù)有錯(cuò)誤但是隨后被BMS過程利用ECC修復(fù)出正確數(shù)據(jù),該扇區(qū)的錯(cuò)誤類型被BMS標(biāo)記為已修復(fù)錯(cuò)誤,而對(duì)于無法由BMS過程修復(fù)的錯(cuò)誤被標(biāo)記為介質(zhì)錯(cuò)誤。應(yīng)當(dāng)注意的是,除了介質(zhì)錯(cuò)誤和已修復(fù)錯(cuò)誤之外,BMS結(jié)果條目中的錯(cuò)誤類型還可以指示其他錯(cuò)誤類型,例如硬件錯(cuò)誤等。
[0059]當(dāng)一個(gè)結(jié)果條目的錯(cuò)誤類型指示介質(zhì)錯(cuò)誤時(shí),并非必然將該結(jié)果條目所指示的扇區(qū)確定為壞扇區(qū)。因?yàn)槌?BMS過程之外,扇區(qū)的錯(cuò)誤數(shù)據(jù)還可以通過其他渠道被修正,例如,通過磁盤廠商指定的方式被修正。這些扇區(qū)是否已被修正可以通過BMS結(jié)果條目中的修復(fù)狀態(tài)(例如,圖4的重分配狀態(tài))來指示。對(duì)于那些已被修正的扇區(qū),則可以無需在本過程中繼續(xù)修復(fù)。因此,可以將包括錯(cuò)誤類型為介質(zhì)錯(cuò)誤并且修復(fù)狀態(tài)為未修正的BMS結(jié)果條目歸類為第一結(jié)果條目。根據(jù)所標(biāo)識(shí)的第一結(jié)果條目中所包括的位置可以確定磁盤的壞扇區(qū)。
[0060]應(yīng)當(dāng)知道,除了采用以上的方式將錯(cuò)誤類型被BMS標(biāo)記為介質(zhì)錯(cuò)誤且修復(fù)狀態(tài)指示未修正的狀態(tài)的BMS結(jié)果條目對(duì)應(yīng)的扇區(qū)確定為壞扇區(qū)之外,還可以依據(jù)BMS結(jié)果條目中的其他信息確定壞扇區(qū)。在一個(gè)實(shí)施例中,可以僅根據(jù)BMS結(jié)果條目中的修復(fù)狀態(tài)來確定壞扇區(qū)。在一個(gè)示例中,可以將修復(fù)狀態(tài)為已修正的狀態(tài)的BMS結(jié)果條目對(duì)應(yīng)的扇區(qū)確定為壞扇區(qū)。在另外一個(gè)實(shí)施例中,還可以僅根據(jù)BMS結(jié)果條目中的錯(cuò)誤類型來確定壞扇區(qū)。例如,可以將錯(cuò)誤類型被BMS標(biāo)記為已修復(fù)錯(cuò)誤的BMS結(jié)果條目對(duì)應(yīng)的扇區(qū)確定為壞扇區(qū)。因?yàn)檫@些扇區(qū)曾經(jīng)發(fā)生過錯(cuò)誤,雖然錯(cuò)誤已被BMS過程或其他渠道修復(fù),但是可能期望采用例如RAID冗余來進(jìn)一步修復(fù)。又例如,還可以將錯(cuò)誤類型被BMS標(biāo)記為已修復(fù)錯(cuò)誤和介質(zhì)錯(cuò)誤的BMS結(jié)果條目對(duì)應(yīng)的扇區(qū)均確定為壞扇區(qū)。
[0061]根據(jù)本發(fā)明的一個(gè)實(shí)施例,還可以生成與所確定的壞扇區(qū)相關(guān)聯(lián)的指示,用于通知數(shù)據(jù)存儲(chǔ)系統(tǒng)或者系統(tǒng)的管理員該磁盤的壞扇區(qū)的數(shù)量、壞扇區(qū)的位置等。
[0062]在步驟S203,修復(fù)在所確定的壞扇區(qū)中存儲(chǔ)的數(shù)據(jù)。
[0063]可以利用多種數(shù)據(jù)修復(fù)方法來修復(fù)壞扇區(qū)中的數(shù)據(jù)。在一個(gè)實(shí)施例中,在該磁盤屬于RAID(獨(dú)立磁盤冗余陣列)的情況下,可以根據(jù)RAID冗余,修復(fù)在所確定的壞扇區(qū)中存儲(chǔ)的數(shù)據(jù)并且將所確定的壞扇區(qū)重定位到磁盤的其他可用扇區(qū),從而實(shí)現(xiàn)對(duì)壞扇區(qū)中的數(shù)據(jù)的修復(fù)。
[0064]根據(jù)本發(fā)明的進(jìn)一步的實(shí)施例,如果壞扇區(qū)的數(shù)量大于預(yù)定閾值,則可以生成與該磁盤有關(guān)的指示。因?yàn)檫^多的壞扇區(qū)可以指示該磁盤存在較為嚴(yán)重的問題,通過生成指示,RAID或者上層軟件或者數(shù)據(jù)存儲(chǔ)系統(tǒng)的管理員可以據(jù)此判斷是否應(yīng)當(dāng)替換該磁盤。例如,可以根據(jù)RAID冗余,將該磁盤上的數(shù)據(jù)重定位到其他磁盤。
[0065]以上方法200的步驟S201-203完成了對(duì)單個(gè)磁盤的檢測(cè)。如果需要進(jìn)行磁盤檢測(cè)的數(shù)據(jù)存儲(chǔ)系統(tǒng)具有多個(gè)磁盤,對(duì)于每個(gè)磁盤,可以同時(shí)執(zhí)行上述方法200。
[0066]在上述方法200中,無需從磁盤讀取數(shù)據(jù)并分析所存儲(chǔ)的數(shù)據(jù),而是直接利用磁盤本身的BMS過程所記錄的BMS數(shù)據(jù),只占用了很少的系統(tǒng)資源并且花費(fèi)很少的時(shí)間用于磁盤檢測(cè),并且另外也不會(huì)造成磁盤的不必要的磨損。由于不是通過從磁盤讀取數(shù)據(jù)來進(jìn)行磁盤檢測(cè),I/O端口的連接問題不會(huì)影響到磁盤檢測(cè)結(jié)果。此外,對(duì)于具有多個(gè)磁盤的數(shù)據(jù)存儲(chǔ)系統(tǒng)而言,可以對(duì)多個(gè)磁盤同時(shí)執(zhí)行磁盤檢測(cè),磁盤檢測(cè)的效率極大地提高。
[0067]從磁盤讀取數(shù)據(jù)來實(shí)現(xiàn)磁盤檢測(cè)的常規(guī)方法,相對(duì)于通過對(duì)BMS數(shù)據(jù)的分析來實(shí)現(xiàn)磁盤檢測(cè)而言,可能能夠?qū)崿F(xiàn)更多的校驗(yàn)(例如,RAID級(jí)的CRC(循環(huán)冗余校驗(yàn))),但是可以通過在本發(fā)明的磁盤檢測(cè)方法中使用其他磁盤技術(shù)來彌補(bǔ)這些缺陷(例如,使用具有CRC能力的磁盤)。
[0068]通過分析BMS數(shù)據(jù),除了能夠修復(fù)壞扇區(qū)中的數(shù)據(jù)之外,還可以診斷磁盤的其他方面。由于BMS由磁盤自身執(zhí)行,從磁盤被初次上電開始,可能已經(jīng)執(zhí)行多次BMS。通過利用這些BMS所記錄的BMS數(shù)據(jù),還可以更深入地分析BMS的情況。在本發(fā)明的一些實(shí)施例中,基于根據(jù)至少一次BMS的執(zhí)行而被記錄的BMS結(jié)果條目,生成與該磁盤的健康狀況有關(guān)的指示。在這些實(shí)施例中,可以考慮該磁盤從初次上電開始已執(zhí)行的所有BMS,也可以考慮從最后一次BMS起的預(yù)定數(shù)量的BMS,或者可以從已執(zhí)行的所有BMS中任意選定預(yù)定數(shù)量的BMS0
[0069]因?yàn)榕c每次BMS的執(zhí)行相對(duì)應(yīng)的BMS狀態(tài)信息中記錄了例如已執(zhí)行的BMS的數(shù)量以及磁盤的累計(jì)上電時(shí)間,可以根據(jù)BMS狀態(tài)信息從已執(zhí)行的BMS中標(biāo)識(shí)一次或多次BMS,并且確定根據(jù)所標(biāo)識(shí)的BMS而被記錄的BMS結(jié)果條目。例如,在最后一次BMS的執(zhí)行完成之后,磁盤總共已執(zhí)行10次BMS。如果期望考慮根據(jù)最后三次的BMS的執(zhí)行而被記錄的BMS結(jié)果條目,可以基于與已執(zhí)行的BMS相對(duì)應(yīng)的BMS狀態(tài)信息中記錄的“已執(zhí)行的BMS的數(shù)量”,確定已執(zhí)行的BMS的數(shù)量分別被記錄為10、9和8的BMS狀態(tài)信息。然后,按照BMS狀態(tài)信息中的磁盤的累計(jì)上電時(shí)間的大小,確定最后三次的BMS的執(zhí)行時(shí)間期間。最后,根據(jù)每次BMS的執(zhí)行時(shí)間期間,從磁盤的全部BMS結(jié)果條目中,標(biāo)識(shí)出根據(jù)這三次BMS的執(zhí)行而被記錄的BMS結(jié)果條目,這在以上已經(jīng)被描述。
[0070]在一個(gè)示例中,可以統(tǒng)計(jì)BMS結(jié)果條目中指示已修復(fù)錯(cuò)誤的錯(cuò)誤類型的結(jié)果條目。因?yàn)楫?dāng)已修復(fù)錯(cuò)誤的扇區(qū)數(shù)量較多時(shí),說明該磁盤較容易產(chǎn)生錯(cuò)誤且健康狀態(tài)不良好,因此可以生成相應(yīng)的指示,以使得RAID或者上層軟件或者數(shù)據(jù)存儲(chǔ)系統(tǒng)的管理員可以據(jù)此判斷是否應(yīng)當(dāng)替換該磁盤。類似地,還可以統(tǒng)計(jì)錯(cuò)誤類型為介質(zhì)錯(cuò)誤且修復(fù)狀態(tài)為已修正的結(jié)果條目。該統(tǒng)計(jì)數(shù)據(jù)指示磁盤的扇區(qū)中發(fā)生介質(zhì)錯(cuò)誤(即,BMS過程無法修復(fù)的錯(cuò)誤)且通過其他渠道被修復(fù)的扇區(qū)的數(shù)量。如果該數(shù)量較大,那么也可以生成相應(yīng)的指示,以促進(jìn)該磁盤被替換。
[0071 ] 在另一個(gè)示例中,可以根據(jù)BMS結(jié)果條目統(tǒng)計(jì)某個(gè)扇區(qū)發(fā)生已修復(fù)錯(cuò)誤或者介質(zhì)錯(cuò)誤(相應(yīng)的修復(fù)狀態(tài)為已修正或未修正)的數(shù)量。因?yàn)槿绻硞€(gè)扇區(qū)頻繁發(fā)生錯(cuò)誤,即使它的錯(cuò)誤可能在BMS過程中或者以其他方式被修復(fù),但是仍然指示該扇區(qū)的健康狀態(tài)不良好。因此,當(dāng)所統(tǒng)計(jì)的數(shù)量大于預(yù)定閾值時(shí),可以生成指示,以便由RAID或者上層軟件或者管理員來判斷對(duì)該扇區(qū)或該磁盤的處置。備選地,可以直接將該扇區(qū)重定位到磁盤的其他可用扇區(qū)。
[0072]在本發(fā)明的實(shí)施例中,BMS結(jié)果條目還可以包括已修復(fù)錯(cuò)誤的扇區(qū)或者介質(zhì)錯(cuò)誤(相應(yīng)的修復(fù)狀態(tài)為已修正或未修正)的扇區(qū)的磁頭(head)或磁柱(cylinder)的信息。在再一個(gè)示例中,基于根據(jù)至少一次BMS的執(zhí)行而被記錄的BMS結(jié)果條目,可以統(tǒng)計(jì)某個(gè)磁頭或磁柱被記錄在BMS結(jié)果條目中的數(shù)量。如果所統(tǒng)計(jì)的數(shù)量較大,說明該磁頭或磁柱可能是導(dǎo)致發(fā)生扇區(qū)的錯(cuò)誤的原因。因此,可以將該磁頭或磁柱標(biāo)記為壞磁頭或磁柱并生成相應(yīng)的指示,以使得RAID或者上層軟件或者管理員據(jù)此判斷是否應(yīng)當(dāng)修正該磁頭或磁柱、是否應(yīng)當(dāng)繼續(xù)使用該磁盤或者替換該磁盤。
[0073]以上列出了基于根據(jù)至少一次BMS的執(zhí)行而被記錄的BMS結(jié)果條目而生成與該磁盤的健康狀況有關(guān)的指示的一些示例。應(yīng)當(dāng)知道,根據(jù)實(shí)際需要,還可以利用BMS結(jié)果條目和/或BMS狀態(tài)信息,確定與磁盤相關(guān)的更多指示,本發(fā)明的實(shí)施例在此方面不受限制。
[0074]上文已經(jīng)結(jié)合若干【具體實(shí)施方式】闡釋了本發(fā)明的精神和原理。根據(jù)本發(fā)明的實(shí)施例,磁盤的BMS能力被用來實(shí)現(xiàn)磁盤檢測(cè)。通過從磁盤獲取根據(jù)BMS的執(zhí)行而被記錄的BMS數(shù)據(jù),例如BMS狀態(tài)信息和BMS結(jié)果條目,可以確定磁盤的壞扇區(qū)并且修復(fù)壞扇區(qū)中所存儲(chǔ)的數(shù)據(jù),達(dá)到前瞻性地檢測(cè)磁盤壞扇區(qū)和檢測(cè)磁盤失效的目的。由于BMS由磁盤自身執(zhí)行且BMS數(shù)據(jù)根據(jù)該磁盤對(duì)BMS的執(zhí)行而被記錄,在完成磁盤檢測(cè)的過程中,無需從磁盤讀取和檢驗(yàn)數(shù)據(jù),這極大地減少了磁盤檢測(cè)的資源消耗和時(shí)間成本、避免了因?yàn)閷?duì)磁盤的讀取而造成的額外磁盤磨損,并且磁盤檢測(cè)的準(zhǔn)確性得以提高,因?yàn)镮/O端口的連接故障不會(huì)影響到對(duì)壞扇區(qū)的判斷。
[0075]圖5示出了根據(jù)本發(fā)明的實(shí)施例的用于磁盤數(shù)據(jù)管理的裝置500的框圖。如圖5中所示,裝置500包括獲取單元501,被配置為從磁盤獲取BMS數(shù)據(jù)。該裝置還包括確定單元502,被配置為基于BMS數(shù)據(jù),確定磁盤中的壞扇區(qū);以及修復(fù)單元503,被配置為修復(fù)在所確定的壞扇區(qū)中存儲(chǔ)的數(shù)據(jù)。
[0076]根據(jù)一個(gè)實(shí)施例,BMS數(shù)據(jù)根據(jù)磁盤對(duì)BMS的執(zhí)行而被記錄。
[0077]根據(jù)一個(gè)實(shí)施例,裝置500進(jìn)一步包括配置單元,被配置為在磁盤執(zhí)行BMS之前,配置用于BMS的參數(shù)。該參數(shù)包括以下各項(xiàng)中的至少一項(xiàng):BMS間隔時(shí)間和BMS執(zhí)行前的最小空閑時(shí)間。
[0078]根據(jù)一個(gè)實(shí)施例,BMS數(shù)據(jù)包括BMS狀態(tài)信息和BMS結(jié)果條目。確定單元502包括:執(zhí)行時(shí)間確定單元,被配置為基于BMS狀態(tài)信息確定最后一次BMS的執(zhí)行時(shí)間期間;以及結(jié)果條目識(shí)別單元,被配置為基于執(zhí)行時(shí)間期間,從BMS結(jié)果條目中標(biāo)識(shí)根據(jù)最后一次BMS的執(zhí)行而被記錄的BMS結(jié)果條目。確定單元502被配置為根據(jù)所標(biāo)識(shí)的BMS結(jié)果條目,確定磁盤的壞扇區(qū)。
[0079]根據(jù)一個(gè)實(shí)施例,每個(gè)BMS結(jié)果條目至少包括扇區(qū)的錯(cuò)誤類型、錯(cuò)誤發(fā)生時(shí)間、位置和修復(fù)狀態(tài),錯(cuò)誤類型至少包括已修復(fù)錯(cuò)誤和介質(zhì)錯(cuò)誤。確定單元502進(jìn)一步被配置為:從所標(biāo)識(shí)的BMS結(jié)果條目中確定第一結(jié)果條目,第一結(jié)果條目包括指示介質(zhì)錯(cuò)誤的錯(cuò)誤類型和指示扇區(qū)未被修正的修復(fù)狀態(tài);以及根據(jù)第一結(jié)果條目中所包括的位置確定磁盤的壞扇區(qū)。
[0080]根據(jù)一個(gè)實(shí)施例,裝置500進(jìn)一步包括查詢單元,被配置為在獲取BMS數(shù)據(jù)之前,從磁盤查詢BMS狀態(tài)信息,以確定BMS的執(zhí)行是否完成。
[0081]根據(jù)一個(gè)實(shí)施例,修復(fù)單元503進(jìn)一步被配置為:根據(jù)RAID冗余,修復(fù)在所確定的壞扇區(qū)中存儲(chǔ)的數(shù)據(jù)并且將所確定的壞扇區(qū)重定位到磁盤的其他可用扇區(qū)。
[0082]根據(jù)一個(gè)實(shí)施例,裝置500進(jìn)一步包括指示生成單元,被配置為基于根據(jù)至少一次BMS的執(zhí)行而被記錄的BMS結(jié)果條目,生成與磁盤的健康狀況有關(guān)的指示。
[0083]應(yīng)當(dāng)注意,為清晰起見,圖5中沒有示出裝置500所包括的可選單元或者子單元。上文所描述的所有特征和操作分別適用于裝置500。而且,裝置500中的單元或子單元的劃分不是限制性的而是示例性的,旨在從邏輯上描述其主要功能或操作。一個(gè)單元的功能可以由多個(gè)單元來實(shí)現(xiàn);反之,多個(gè)單元亦可由一個(gè)單元來實(shí)現(xiàn)。本發(fā)明的范圍在此方面不受限制。
[0084]而且,裝置500所包含的單元可以利用各種方式來實(shí)現(xiàn),包括軟件、硬件、固件或其任意組合。例如,在某些實(shí)施方式中,裝置500可以利用軟件和/或固件來實(shí)現(xiàn)。備選地或附加地,裝置500可以部分地或者完全地基于硬件來實(shí)現(xiàn)。例如,裝置500中的一個(gè)或多個(gè)單元可以實(shí)現(xiàn)為集成電路(IC)芯片、專用集成電路(ASIC)、片上系統(tǒng)(SOC)、現(xiàn)場(chǎng)可編程門陣列(FPGA),等等。本發(fā)明的范圍在此方面不受限制。
[0085]本發(fā)明可以是系統(tǒng)、方法和/或計(jì)算機(jī)程序產(chǎn)品。計(jì)算機(jī)程序產(chǎn)品可以包括計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上載有用于使處理器實(shí)現(xiàn)本發(fā)明的各個(gè)方面的計(jì)算機(jī)可讀程序指令。
[0086]計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是可以保持和存儲(chǔ)由指令執(zhí)行設(shè)備使用的指令的有形設(shè)備。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如可以是一但不限于——電存儲(chǔ)設(shè)備、磁存儲(chǔ)設(shè)備、光存儲(chǔ)設(shè)備、電磁存儲(chǔ)設(shè)備、半導(dǎo)體存儲(chǔ)設(shè)備或者上述的任意合適的組合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的更具體的例子(非窮舉的列表)包括:便攜式計(jì)算機(jī)盤、硬盤、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦式可編程只讀存儲(chǔ)器(EPR0M或閃存)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、便攜式壓縮盤只讀存儲(chǔ)器(⑶-ROM)、數(shù)字多功能盤(DVD)、記憶棒、軟盤、機(jī)械編碼設(shè)備、例如其上存儲(chǔ)有指令的打孔卡或凹槽內(nèi)凸起結(jié)構(gòu)、以及上述的任意合適的組合。這里所使用的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)不被解釋為瞬時(shí)信號(hào)本身,諸如無線電波或者其他自由傳播的電磁波、通過波導(dǎo)或其他傳輸媒介傳播的電磁波(例如,通過光纖電纜的光脈沖)、或者通過電線傳輸?shù)碾娦盘?hào)。
[0087]這里所描述的計(jì)算機(jī)可讀程序指令可以從計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)下載到各個(gè)計(jì)算/處理設(shè)備,或者通過網(wǎng)絡(luò)、例如因特網(wǎng)、局域網(wǎng)、廣域網(wǎng)和/或無線網(wǎng)下載到外部計(jì)算機(jī)或外部存儲(chǔ)設(shè)備。網(wǎng)絡(luò)可以包括銅傳輸電纜、光纖傳輸、無線傳輸、路由器、防火墻、交換機(jī)、網(wǎng)關(guān)計(jì)算機(jī)和/或邊緣服務(wù)器。每個(gè)計(jì)算/處理設(shè)備中的網(wǎng)絡(luò)適配卡或者網(wǎng)絡(luò)接口從網(wǎng)絡(luò)接收計(jì)算機(jī)可讀程序指令,并轉(zhuǎn)發(fā)該計(jì)算機(jī)可讀程序指令,以供存儲(chǔ)在各個(gè)計(jì)算/處理設(shè)備中的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中。
[0088]用于執(zhí)行本發(fā)明操作的計(jì)算機(jī)程序指令可以是匯編指令、指令集架構(gòu)(ISA)指令、機(jī)器指令、機(jī)器相關(guān)指令、微代碼、固件指令、狀態(tài)設(shè)置數(shù)據(jù)、或者以一種或多種編程語言的任意組合編寫的源代碼或目標(biāo)代碼,所述編程語言包括面向?qū)ο蟮木幊陶Z言-諸如SmalltalKC++等,以及常規(guī)的過程式編程語言-諸如“C”語言或類似的編程語言。計(jì)算機(jī)可讀程序指令可以完全地在用戶計(jì)算機(jī)上執(zhí)行、部分地在用戶計(jì)算機(jī)上執(zhí)行、作為一個(gè)獨(dú)立的軟件包執(zhí)行、部分在用戶計(jì)算機(jī)上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計(jì)算機(jī)的情形中,遠(yuǎn)程計(jì)算機(jī)可以通過任意種類的網(wǎng)絡(luò)-包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)-連接到用戶計(jì)算機(jī),或者,可以連接到外部計(jì)算機(jī)(例如利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。在一些實(shí)施例中,通過利用計(jì)算機(jī)可讀程序指令的狀態(tài)信息來個(gè)性化定制電子電路,例如可編程邏輯電路、現(xiàn)場(chǎng)可編程門陣列(FPGA)或可編程邏輯陣列(PLA),該電子電路可以執(zhí)行計(jì)算機(jī)可讀程序指令,從而實(shí)現(xiàn)本發(fā)明的各個(gè)方面。
[0089]這里參照根據(jù)本發(fā)明實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或框圖描述了本發(fā)明的各個(gè)方面。應(yīng)當(dāng)理解,流程圖和/或框圖的每個(gè)方框以及流程圖和/或框圖中各方框的組合,都可以由計(jì)算機(jī)可讀程序指令實(shí)現(xiàn)。
[0090]這些計(jì)算機(jī)可讀程序指令可以提供給通用計(jì)算機(jī)、專用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,使得這些指令在通過計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行時(shí),產(chǎn)生了實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的裝置。也可以把這些計(jì)算機(jī)可讀程序指令存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,這些指令使得計(jì)算機(jī)、可編程數(shù)據(jù)處理裝置和/或其他設(shè)備以特定方式工作,從而,存儲(chǔ)有指令的計(jì)算機(jī)可讀介質(zhì)則包括一個(gè)制造品,其包括實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的各個(gè)方面的指令。
[0091]也可以把計(jì)算機(jī)可讀程序指令加載到計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上,使得在計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的過程,從而使得在計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上執(zhí)行的指令實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作。
[0092]附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個(gè)實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段或指令的一部分,所述模塊、程序段或指令的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動(dòng)作的專用的基于硬件的系統(tǒng)來實(shí)現(xiàn),或者可以用專用硬件與計(jì)算機(jī)指令的組合來實(shí)現(xiàn)。
[0093]以上已經(jīng)描述了本發(fā)明的各實(shí)施例,上述說明是示例性的,并非窮盡性的,并且也不限于所披露的各實(shí)施例。在不偏離所說明的各實(shí)施例的范圍和精神的情況下,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說許多修改和變更都是顯而易見的。本文中所用術(shù)語的選擇,旨在最好地解釋各實(shí)施例的原理、實(shí)際應(yīng)用或?qū)κ袌?chǎng)中的技術(shù)的技術(shù)改進(jìn),或者使本技術(shù)領(lǐng)域的其它普通技術(shù)人員能理解本文披露的各實(shí)施例。
【主權(quán)項(xiàng)】
1.一種用于磁盤數(shù)據(jù)管理的方法,包括: 從磁盤獲取后臺(tái)介質(zhì)掃描BMS數(shù)據(jù); 基于所述BMS數(shù)據(jù),確定所述磁盤中的壞扇區(qū);以及 修復(fù)在所確定的壞扇區(qū)中存儲(chǔ)的數(shù)據(jù)。2.根據(jù)權(quán)利要求1所述的方法,其中所述BMS數(shù)據(jù)根據(jù)所述磁盤對(duì)BMS的執(zhí)行而被記錄。3.根據(jù)權(quán)利要求2所述的方法,進(jìn)一步包括: 在所述磁盤執(zhí)行所述BMS之前,配置用于所述BMS的參數(shù), 其中所述參數(shù)包括以下各項(xiàng)中的至少一項(xiàng)=BMS間隔時(shí)間和BMS執(zhí)行前的最小空閑時(shí)間。4.根據(jù)權(quán)利要求2所述的方法,其中所述BMS數(shù)據(jù)包括BMS狀態(tài)信息和BMS結(jié)果條目,并且 其中基于所述BMS數(shù)據(jù),確定所述磁盤中的壞扇區(qū)進(jìn)一步包括: 基于所述BMS狀態(tài)信息確定最后一次BMS的執(zhí)行時(shí)間期間; 基于所述最后一次BMS的執(zhí)行時(shí)間期間,從所述BMS結(jié)果條目中標(biāo)識(shí)根據(jù)最后一次BMS的執(zhí)行而被記錄的BMS結(jié)果條目;以及 根據(jù)所標(biāo)識(shí)的BMS結(jié)果條目,確定所述磁盤的壞扇區(qū)。5.根據(jù)權(quán)利要求4所述的方法,其中每個(gè)BMS結(jié)果條目至少包括扇區(qū)的錯(cuò)誤類型、錯(cuò)誤發(fā)生時(shí)間、位置和修復(fù)狀態(tài),所述錯(cuò)誤類型至少包括已修復(fù)錯(cuò)誤和介質(zhì)錯(cuò)誤;并且 其中根據(jù)所標(biāo)識(shí)的BMS結(jié)果條目,確定所述磁盤的壞扇區(qū)進(jìn)一步包括: 從所標(biāo)識(shí)的BMS結(jié)果條目中確定第一結(jié)果條目,所述第一結(jié)果條目包括指示介質(zhì)錯(cuò)誤的錯(cuò)誤類型和指示所述扇區(qū)未被修正的修復(fù)狀態(tài);以及 根據(jù)所述第一結(jié)果條目中所包括的位置確定所述磁盤的壞扇區(qū)。6.根據(jù)權(quán)利要求4所述的方法,進(jìn)一步包括: 在獲取所述BMS數(shù)據(jù)之前,從所述磁盤查詢所述BMS狀態(tài)信息,以確定所述BMS的執(zhí)行是否完成。7.根據(jù)權(quán)利要求1所述的方法,其中修復(fù)在所確定的壞扇區(qū)中存儲(chǔ)的數(shù)據(jù)包括: 根據(jù)獨(dú)立磁盤冗余陣列RAID冗余,修復(fù)在所確定的壞扇區(qū)中存儲(chǔ)的數(shù)據(jù)并且將所確定的壞扇區(qū)重定位到所述磁盤的其他可用扇區(qū)。8.根據(jù)權(quán)利要求4至7中任一項(xiàng)所述的方法,進(jìn)一步包括: 基于根據(jù)至少一次BMS的執(zhí)行而被記錄的BMS結(jié)果條目,生成與所述磁盤的健康狀況有關(guān)的指不。9.一種用于磁盤數(shù)據(jù)管理的裝置,包括: 獲取單元,被配置為從磁盤獲取后臺(tái)介質(zhì)掃描BMS數(shù)據(jù); 確定單元,被配置為基于所述BMS數(shù)據(jù),確定所述磁盤中的壞扇區(qū);以及 修復(fù)單元,被配置為修復(fù)在所確定的壞扇區(qū)中存儲(chǔ)的數(shù)據(jù)。10.根據(jù)權(quán)利要求9所述的裝置,其中所述BMS數(shù)據(jù)根據(jù)所述磁盤對(duì)BMS的執(zhí)行而被記錄。11.根據(jù)權(quán)利要求9所述的裝置,進(jìn)一步包括: 配置單元,被配置為在所述磁盤執(zhí)行所述BMS之前,配置用于所述BMS的參數(shù), 其中所述參數(shù)包括以下各項(xiàng)中的至少一項(xiàng)=BMS間隔時(shí)間和BMS執(zhí)行前的最小空閑時(shí)間。12.根據(jù)權(quán)利要求9所述的裝置,其中所述BMS數(shù)據(jù)包括BMS狀態(tài)信息和BMS結(jié)果條目,并且 其中所述確定單元包括: 執(zhí)行時(shí)間確定單元,被配置為基于所述BMS狀態(tài)信息確定最后一次BMS的執(zhí)行時(shí)間期間;以及 結(jié)果條目識(shí)別單元,被配置為基于所述最后一次BMS的執(zhí)行時(shí)間期間,從所述BMS結(jié)果條目中標(biāo)識(shí)根據(jù)最后一次BMS的執(zhí)行而被記錄的BMS結(jié)果條目; 其中所述確定單元被配置為根據(jù)所標(biāo)識(shí)的BMS結(jié)果條目,確定所述磁盤的壞扇區(qū)。13.根據(jù)權(quán)利要求12所述的裝置,其中每個(gè)BMS結(jié)果條目至少包括扇區(qū)的錯(cuò)誤類型、錯(cuò)誤發(fā)生時(shí)間、位置和修復(fù)狀態(tài),所述錯(cuò)誤類型至少包括已修復(fù)錯(cuò)誤和介質(zhì)錯(cuò)誤;并且 其中所述確定單元進(jìn)一步被配置為: 從所標(biāo)識(shí)的BMS結(jié)果條目中確定第一結(jié)果條目,所述第一結(jié)果條目包括指示介質(zhì)錯(cuò)誤的錯(cuò)誤類型和指示所述扇區(qū)未被修正的修復(fù)狀態(tài);以及 根據(jù)所述第一結(jié)果條目中所包括的位置確定所述磁盤的壞扇區(qū)。14.根據(jù)權(quán)利要求12所述的裝置,進(jìn)一步包括: 查詢單元,被配置為在獲取所述BMS數(shù)據(jù)之前,從所述磁盤查詢所述BMS狀態(tài)信息,以確定所述BMS的執(zhí)行是否完成。15.根據(jù)權(quán)利要求9所述的裝置,其中所述修復(fù)單元進(jìn)一步被配置為:根據(jù)獨(dú)立磁盤冗余陣列RAID冗余,修復(fù)在所確定的壞扇區(qū)中存儲(chǔ)的數(shù)據(jù)并且將所確定的壞扇區(qū)重定位到所述磁盤的其他可用扇區(qū)。16.根據(jù)權(quán)利要求12至15中任一項(xiàng)所述的裝置,進(jìn)一步包括: 指示生成單元,被配置為基于根據(jù)至少一次BMS的執(zhí)行而被記錄的BMS結(jié)果條目,生成與所述磁盤的健康狀況有關(guān)的指示。
【文檔編號(hào)】G06F3/06GK105892932SQ201410562531
【公開日】2016年8月24日
【申請(qǐng)日】2014年10月20日
【發(fā)明人】呂滿, 鄒勇, 劉子銳, 劉旋, 吳飛
【申請(qǐng)人】伊姆西公司