欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種檢測方法及裝置與流程

文檔序號:11063406閱讀:819來源:國知局
一種檢測方法及裝置與制造工藝

本發(fā)明涉及信息處理領(lǐng)域的硬盤檢測技術(shù),尤其涉及一種檢測方法及裝置。



背景技術(shù):

分布式存儲系統(tǒng)往往采用機械磁盤作為存儲設(shè)備。這種存儲設(shè)備發(fā)生故障的概率很大。目前,在解決存儲設(shè)備的問題時,往往采用被動掃描的方式,即:存儲設(shè)備直接接入存儲系統(tǒng)使用;在存儲設(shè)備使用過程中發(fā)現(xiàn)讀寫失敗時,對存儲設(shè)備中的存儲單元,比如,磁盤中的一塊存儲區(qū)域,觸發(fā)探測機制;當(dāng)檢測到存儲單元出現(xiàn)故障后,記錄存儲單元中壞扇區(qū)個數(shù)和位置并重新分配一塊扇區(qū)進行數(shù)據(jù)遷移和訪問。

可見,上述現(xiàn)有技術(shù)提供的檢測存儲單元的操作為一種被動方式,也就是在在經(jīng)過探測確定存儲單元出現(xiàn)故障后才會進行相應(yīng)的處理。但是,上述方案很難保證有效的檢測到訪問量較少的存儲單元,無法對整個存儲系統(tǒng)的存儲能力提供保障。



技術(shù)實現(xiàn)要素:

有鑒于此,本發(fā)明實施例的目的在于提供一種檢測方法及裝置,能至少解決現(xiàn)有技術(shù)存在的上述問題。

本發(fā)明實施例提供了一種檢測方法,所述方法包括:

檢測分析存儲系統(tǒng)中各存儲單元響應(yīng)讀寫操作的記錄數(shù)據(jù),得到所述存儲單元的讀寫特征參數(shù);

基于所述存儲單元的讀寫特征參數(shù),預(yù)測得到空閑時長;

在所述空閑時長的第一時段對所述存儲系統(tǒng)中存儲單元的讀寫操作進行監(jiān)控,得到第一監(jiān)控結(jié)果;

若所述第一監(jiān)控結(jié)果表征在所述第一時段內(nèi)無對存儲系統(tǒng)中存儲單元的讀寫操作,則生成第一操作指令;

根據(jù)所述第一操作指令,在所述空閑時長的第二時段內(nèi)對存儲系統(tǒng)中存儲單元進行檢測并確定檢測結(jié)果;其中,所述第二時段為所述空閑時長除去所述第一時段后的剩余時長中的至少部分時長。

本發(fā)明實施例還提供了一種檢測裝置,所述裝置包括:

預(yù)測單元,用于檢測分析存儲系統(tǒng)中各存儲單元響應(yīng)讀寫操作的記錄數(shù)據(jù),得到所述存儲單元的讀寫特征參數(shù);基于所述存儲單元的讀寫特征參數(shù),預(yù)測得到空閑時長;

檢測單元,用于在所述空閑時長的第一時段對所述存儲系統(tǒng)中存儲單元的讀寫操作進行監(jiān)控,得到第一監(jiān)控結(jié)果;若所述第一監(jiān)控結(jié)果表征在所述第一時段內(nèi)無對存儲系統(tǒng)中存儲單元的讀寫操作,則生成第一操作指令;根據(jù)所述第一操作指令,在所述空閑時長的第二時段內(nèi)對存儲系統(tǒng)中存儲單元進行檢測并確定檢測結(jié)果;其中,所述第二時段為所述空閑時長除去所述第一時段后的剩余時長中的至少部分時長。

本發(fā)明實施例所提供的檢測方法及裝置,能夠首先主動學(xué)習(xí)存儲系統(tǒng)中各個存儲單元的讀寫操作預(yù)測得到空閑時長,然后在空閑時長的第一時段內(nèi)進行監(jiān)控,如果監(jiān)控結(jié)果表征在第一時段內(nèi)無針對存儲單元的讀寫操作,則進入第二時段對存儲系統(tǒng)中的存儲單元進行檢測并得到檢測結(jié)果。如此,由于對存儲系統(tǒng)采取了主動的檢測方式,能夠保證有效的檢測到訪問量較少的存儲單元,從而保障了存儲系統(tǒng)的存儲能力。

附圖說明

圖1為本發(fā)明實施例檢測方法流程示意圖一;

圖2為本發(fā)明實施例空閑時長組成結(jié)構(gòu)示意圖一;

圖3為本發(fā)明實施例檢測方法流程示意圖二;

圖4為本發(fā)明實施例空閑時長組成結(jié)構(gòu)示意圖二;

圖5為本發(fā)明實施例檢測流程示意圖;

圖6為本發(fā)明實施例硬盤分塊示意圖;

圖7為本發(fā)明實施例檢測裝置組成結(jié)構(gòu)示意圖。

具體實施方式

下面結(jié)合附圖及具體實施例對本發(fā)明實施例再作進一步詳細的說明。

實施例一、

本發(fā)明實施例提供了一種檢測方法,如圖1所述,所述方法包括:

步驟11:檢測分析存儲系統(tǒng)中各存儲單元響應(yīng)讀寫操作的記錄數(shù)據(jù),得到所述存儲單元的讀寫特征參數(shù);

步驟12:基于所述存儲單元的讀寫特征參數(shù),預(yù)測得到空閑時長;

步驟13:在所述空閑時長的第一時段對所述存儲系統(tǒng)中存儲單元的讀寫操作進行監(jiān)控,得到第一監(jiān)控結(jié)果;

步驟14:若所述第一監(jiān)控結(jié)果表征在所述第一時段內(nèi)無對存儲系統(tǒng)中存儲單元的讀寫操作,則生成第一操作指令;

步驟15:根據(jù)所述第一操作指令,在所述空閑時長的第二時段內(nèi)對存儲系統(tǒng)中存儲單元進行檢測并確定檢測結(jié)果;其中,所述第二時段為所述空閑時長除去所述第一時段后的剩余時長中的至少部分時長。

本實施例可以應(yīng)用于使用硬盤的設(shè)備或集群中,比如,可以應(yīng)用于服務(wù)器集群、臺式機、筆記本電腦等設(shè)備。

上述存儲系統(tǒng)可以為包括有至少一個存儲設(shè)備;另外,所述存儲設(shè)備包括有至少一個存儲單元。

其中,所述存儲設(shè)備可以為硬盤,比如,硬盤有固態(tài)硬盤,新式硬盤、機械硬盤(HDD)。所述存儲單元可以為硬盤上的塊,每一個塊可以為64K-128K。

本實施例中采用了空閑等待的策略。也就是說,通過步驟11-步驟12對第一預(yù)設(shè)時長內(nèi)存儲系統(tǒng)收到的中各存儲單元響應(yīng)讀寫操作的記錄數(shù)據(jù),得到所述存儲單元的讀寫特征參數(shù),即業(yè)務(wù)I/O情況,預(yù)測得到空閑時長;通 過預(yù)測得到空閑時長確定接下來一段時間可能的I/O分布情況從而避免掃描過程中對前端業(yè)務(wù)I/O訪問造成影響。

開啟執(zhí)行檢測的頻率可以根據(jù)實際情況進行設(shè)置,如果檢測的頻率太低會導(dǎo)致不能及時發(fā)現(xiàn)壞扇區(qū)造成數(shù)據(jù)丟失,頻率太高則可能會影響前端I/O性能?;诶鋽?shù)據(jù)盤的應(yīng)用場景(對于熱盤往往沒等掃描就因為I/O訪問已經(jīng)發(fā)現(xiàn)磁盤壞扇區(qū)),本實施例將采用固定周期頻率(如每兩個月)的方式對磁盤進行一次檢測,也就是說,可以每隔固定周期頻率執(zhí)行一次步驟11-步驟15。因為,一方面固定周期頻率的方式更簡單可控,另一方面從長遠來,其掃描效果和動態(tài)周期頻率的方式是一樣的。將每一個檢測周期作為一個時間段。對每個時間段分兩個階段進行工作:學(xué)習(xí)階段和檢測階段。

第一,所述學(xué)習(xí)階段,上述步驟11,所述檢測分析存儲系統(tǒng)中各存儲單元響應(yīng)讀寫操作的記錄數(shù)據(jù),得到所述存儲單元的讀寫特征參數(shù)可以包括:檢測分析存儲系統(tǒng)中各存儲單元響應(yīng)讀寫操作的記錄數(shù)據(jù),至少將所述讀寫操作的時間戳記錄為所述存儲單元的讀寫特征參數(shù)。

其中,所述檢測分析存儲系統(tǒng)中各存儲單元響應(yīng)讀寫操作的記錄數(shù)據(jù)可以為:存儲系統(tǒng)接收到讀寫請求時,分析所述讀寫請求獲取到響應(yīng)所述請求的目標存儲單元,獲取到針對所述目標存儲單元的讀取操作次數(shù)、以及讀取操作的時間戳。

相應(yīng)的,上述步驟12所述基于所述存儲單元的讀寫特征參數(shù),預(yù)測得到空閑時長,包括:基于執(zhí)行讀寫操作的時間戳,確定相鄰的讀寫操作之間的平均時長,將得到的所述平均時長作為所述空閑時長。比如,統(tǒng)計系統(tǒng)收到的I/O情況預(yù)測出接下來的檢測周期即空閑時長,比如10秒收到了2個I/O請求,則空閑時長為5秒。

第二,在空閑時長內(nèi)針對存儲系統(tǒng)進行檢測,也就是進入了檢測階段。

在檢測階段可以具備三個不同的時段,在檢測階段中必須具備的時段為第一時段,也可以稱之為監(jiān)控時段,在第一時段內(nèi)保持對存儲系統(tǒng)中存儲單元的讀寫操作進行監(jiān)控,獲取到第一監(jiān)控結(jié)果。

所述得到第一監(jiān)控結(jié)果之后,還可以包括有:若所述第一監(jiān)控結(jié)果表征在所述第一時段內(nèi)有針對存儲系統(tǒng)中存儲單元的讀寫操作,則在本次完成的第一時段之后再增加第一時段,仍然保持對存儲系統(tǒng)中存儲單元的讀寫操作進行監(jiān)控,再次獲取到第一監(jiān)控結(jié)果。

在空閑時長結(jié)束之前,如果檢測到第一監(jiān)控結(jié)果為表征在所述第一時段內(nèi)無對存儲系統(tǒng)中存儲單元的讀寫操作,則生成第一操作指令。

所述在所述空閑時長的第二時段內(nèi)對存儲系統(tǒng)中存儲單元進行檢測并確定檢測結(jié)果,包括:在所述空閑時長的第二時段內(nèi)對所述存儲單元進行M次檢測,其中,每一次檢測針對所述存儲單元中的不同存儲區(qū)域;M為大于等于1的正整數(shù);將所述M次檢測得到的結(jié)果作為所述檢測結(jié)果。其中,M次檢測可以為:周期性的生成檢測指令,基于檢測指令對存儲單元進行檢測。另外,在相鄰的兩次檢測之間可以具備一定的間隔,比如圖2所示,假設(shè)黑色陰影21部分標識對存儲單元進行檢測的時間,在兩個黑色陰影標識的時間之間具備一個間隔22。

可見,采用上述方案,能夠首先主動學(xué)習(xí)存儲系統(tǒng)中各個存儲單元的讀寫操作預(yù)測得到空閑時長,然后在空閑時長的第一時段內(nèi)進行監(jiān)控,如果監(jiān)控結(jié)果表征在第一時段內(nèi)無針對存儲單元的讀寫操作,則進入第二時段對存儲系統(tǒng)中的存儲單元進行檢測并得到檢測結(jié)果。如此,由于對存儲系統(tǒng)采取了主動的檢測方式,能夠保證有效的檢測到訪問量較少的存儲單元,從而保證長時間不訪問的存儲單元的存儲能力。

實施例二、

本發(fā)明實施例提供了一種檢測方法,如圖3所述,所述方法包括:

步驟31:檢測分析存儲系統(tǒng)中各存儲單元響應(yīng)讀寫操作的記錄數(shù)據(jù),得到所述存儲單元的讀寫特征參數(shù);

步驟32:基于所述存儲單元的讀寫特征參數(shù),預(yù)測得到空閑時長;

步驟33:在所述空閑時長的第一時段對所述存儲系統(tǒng)中存儲單元的讀寫操 作進行監(jiān)控,得到第一監(jiān)控結(jié)果;

步驟34:若所述第一監(jiān)控結(jié)果表征在所述第一時段內(nèi)無對所述存儲單元的讀寫操作,則在第三時段內(nèi)設(shè)置對所述存儲單元的讀寫操作進行監(jiān)控,得到第二監(jiān)控結(jié)果;

步驟35:若所述第二監(jiān)控結(jié)果表征在所述第三時段內(nèi)無對所述存儲單元的讀寫操作,則生成第一操作指令;

步驟36:根據(jù)所述第一操作指令,在所述空閑時長的第二時段內(nèi)對存儲系統(tǒng)中存儲單元進行檢測并確定檢測結(jié)果;其中,所述第二時段為所述空閑時長除去所述第一時段后的剩余時長中的至少部分時長。

本實施例可以應(yīng)用于使用硬盤的設(shè)備或集群中,比如,可以應(yīng)用于服務(wù)器集群、臺式機、筆記本電腦等設(shè)備。

上述存儲系統(tǒng)可以為包括有至少一個存儲設(shè)備;另外,所述存儲設(shè)備包括有至少一個存儲單元。

其中,所述存儲設(shè)備可以為硬盤。所述存儲單元可以為硬盤上的塊,每一個塊可以為64K-128K。

本實施例中采用了空閑等待的策略。也就是說,通過步驟31-步驟32對第一預(yù)設(shè)時長內(nèi)存儲系統(tǒng)收到的中各存儲單元響應(yīng)讀寫操作的記錄數(shù)據(jù),得到所述存儲單元的讀寫特征參數(shù),即業(yè)務(wù)I/O情況,預(yù)測得到空閑時長;通過預(yù)測得到空閑時長確定接下來一段時間可能的I/O分布情況從而避免掃描過程中對前端業(yè)務(wù)I/O訪問造成影響。

開啟執(zhí)行檢測的頻率可以根據(jù)實際情況進行設(shè)置,如果檢測的頻率太低會導(dǎo)致不能及時發(fā)現(xiàn)壞扇區(qū)造成數(shù)據(jù)丟失,頻率太高則可能會影響前端I/O性能?;诶鋽?shù)據(jù)盤的應(yīng)用場景(對于熱盤往往沒等掃描就因為I/O訪問已經(jīng)發(fā)現(xiàn)磁盤壞扇區(qū)),本實施例將采用固定周期頻率(如每兩個月)的方式對磁盤進行一次檢測,也就是說,可以每隔固定周期頻率執(zhí)行一次步驟31-步驟36。因為,一方面固定周期頻率的方式更簡單可控,另一方面從長遠來,其掃描效果和動態(tài)周期頻率的方式是一樣的。將每一個檢測周期作為一 個時間段。對每個時間段分兩個階段進行工作:學(xué)習(xí)階段和檢測階段。

第一,所述學(xué)習(xí)階段,上述步驟31,所述檢測分析存儲系統(tǒng)中各存儲單元響應(yīng)讀寫操作的記錄數(shù)據(jù),得到所述存儲單元的讀寫特征參數(shù)可以包括:檢測分析存儲系統(tǒng)中各存儲單元響應(yīng)讀寫操作的記錄數(shù)據(jù),至少將所述讀寫操作的時間戳記錄為所述存儲單元的讀寫特征參數(shù)。

其中,所述檢測分析存儲系統(tǒng)中各存儲單元響應(yīng)讀寫操作的記錄數(shù)據(jù)可以為:存儲系統(tǒng)接收到讀寫請求時,分析所述讀寫請求獲取到響應(yīng)所述請求的目標存儲單元,獲取到針對所述目標存儲單元的讀取操作次數(shù)、以及讀取操作的時間戳。

相應(yīng)的,上述步驟32所述基于所述存儲單元的讀寫特征參數(shù),預(yù)測得到空閑時長,包括:基于執(zhí)行讀寫操作的時間戳,確定相鄰的讀寫操作之間的平均時長,將得到的所述平均時長作為所述空閑時長。比如,統(tǒng)計系統(tǒng)收到的I/O情況預(yù)測出接下來的檢測周期即空閑時長,比如10秒收到了2個I/O請求,則空閑時長為5秒。

第二,在空閑時長內(nèi)針對存儲系統(tǒng)進行檢測,也就是進入了檢測階段。

在檢測階段可以具備三個不同的時段,在檢測階段中必須具備的時段為第一時段,也可以稱之為監(jiān)控時段,在第一時段內(nèi)保持對存儲系統(tǒng)中存儲單元的讀寫操作進行監(jiān)控,獲取到第一監(jiān)控結(jié)果。

所述得到第一監(jiān)控結(jié)果之后,還可以包括有:若所述第一監(jiān)控結(jié)果表征在所述第一時段內(nèi)有針對存儲系統(tǒng)中存儲單元的讀寫操作,則在本次完成的第一時段之后再增加第一時段,仍然保持對存儲系統(tǒng)中存儲單元的讀寫操作進行監(jiān)控,再次獲取到第一監(jiān)控結(jié)果。

在空閑時長結(jié)束之前,如果檢測到第一監(jiān)控結(jié)果為表征在所述第一時段內(nèi)無對存儲系統(tǒng)中存儲單元的讀寫操作,則生成第一操作指令。

所述在所述空閑時長的第二時段內(nèi)對存儲系統(tǒng)中存儲單元進行檢測并確定檢測結(jié)果,包括:在所述空閑時長的第二時段內(nèi)對所述存儲單元進行M次檢測,其中,每一次檢測針對所述存儲單元中的不同存儲區(qū)域;M為大于等于1的正 整數(shù);將所述M次檢測得到的結(jié)果作為所述檢測結(jié)果。其中,M次檢測可以為:周期性的生成檢測指令,基于檢測指令對存儲單元進行檢測。另外,在相鄰的兩次檢測之間可以具備一定的間隔。

另外,與實施例一不同在于,本實施例在第一時段與第二時段之間,還增加了第三時段,可以將第三時段作為監(jiān)控以及檢測之間的等待時段。比如,假設(shè)空閑時長為5秒,那么相當(dāng)于每五秒鐘進行一次循環(huán)。

以圖4所示來對本實施例進行的時段劃分進行描述,首先可以根據(jù)實際情況確定每兩個月進行一次檢測,每兩個月可以作為一個檢測時段41,在每次檢測中包括有學(xué)習(xí)階段411以及檢測階段;檢測階段可以循環(huán)操作,在每一個循環(huán)中可以分別包括有三個時間段——第一時段4121用于監(jiān)控讀寫操作、第三時段4122用于等待并繼續(xù)監(jiān)控是否有讀寫操作、第二時段4123用于進行檢測。

其中,上述三個時間段的長度設(shè)置可以根據(jù)實際情況進行,比如,第一時段即監(jiān)控讀寫操作的時段,可以設(shè)置為空閑時長的1/5長,比如,空閑時長為5s時,第一時段可以為1s;第三時段也就是等待時段,也可以與第一時段長度相同,另外,第二時段即進行檢測的時段的長度,可以大于第一時段,或者,可以大于第一時段與第三時段之和。

在第一時段內(nèi)一旦發(fā)現(xiàn)沒有I/O請求時立刻進入第三時段。在第三時段內(nèi),如果仍然沒有I/O請求則進入第二時段即剩余空閑時間,反之退回到第一時段即監(jiān)控時間對I/O重新監(jiān)控。在第二時段(剩余空閑時間)內(nèi),每隔一定單位時間向磁盤下發(fā)Verify命令進行磁盤壞扇區(qū)探測,直至剩余空閑時間完畢。

整個檢測算法的流程圖5,包括:

步驟501:首先設(shè)置針對空閑時長的觀察周期(T);

步驟502:在預(yù)設(shè)的學(xué)習(xí)時長(t-size)內(nèi),基于所述存儲單元的讀寫特征參數(shù),預(yù)測得到空閑時長(idle-time),并且確定每一次檢測的數(shù)據(jù)塊大小;將設(shè)置t1=t2,t2=t2+t-size;

其中,假設(shè)數(shù)據(jù)塊可以分為64K、96K和128K三種大小;相應(yīng)的,所述每一次檢測的數(shù)據(jù)塊大小可以根據(jù)實際情況進行設(shè)置,比如,基于所述存儲單元的讀寫特征參數(shù),獲取到I/O的訪問次數(shù)不小于第一門限時,則確定當(dāng)前訪問繁忙,將每一次檢測的數(shù)據(jù)塊大小選擇為最小一塊,即64k;如果訪問次數(shù)小于第一門限值不小于第二門限值時,確定當(dāng)前訪問正常,可以將每一次檢測的數(shù)據(jù)塊的大小選擇為適中,即96k;如果訪問次數(shù)小于第二門限值,則當(dāng)前訪問較小,將檢測的數(shù)據(jù)塊大小選擇為最大,即128k。上述第一門限值和第二門限值均根據(jù)實際情況設(shè)置,第一門限值大于第二門限值。如此,以保證使檢測盡量避免服務(wù)的正常訪問。

步驟503:判斷掃描是否結(jié)束,如果結(jié)束則結(jié)束處理流程;否則,執(zhí)行步驟504;

其中,判斷掃描是否結(jié)束可以為從操作系統(tǒng)內(nèi)核命令讀到磁盤設(shè)備的空間大小(當(dāng)然也可以通過配置文件獲取),并且掃描程序會記錄當(dāng)前掃描到的位置;根據(jù)當(dāng)前掃描的位置以及磁盤設(shè)備的大小來確定是否掃描結(jié)束。

步驟504:判斷t2和t1之間的差值是否小于預(yù)設(shè)的T值,若是,則執(zhí)行步驟505;否則,返回步驟502;

本步驟中,t2和t1是兩個時刻,他們直接的時間段即確定了一個掃描周期(每個周期都有一段學(xué)習(xí)時間和若干個循環(huán)重復(fù)的探測時間(又分三個階段))。t1表示這段周期的起始時刻,t2表示當(dāng)前時刻,如圖4所示,剛開始t1和t2相等都在開始位置,掃描開始后t2逐步向后移動,先+t_size跳到圖中所示的a位置,然后開始“檢測階段”然后調(diào)到圖中所示的b位置開始檢測,以此循環(huán)進行,知道t2走到某一個時刻時和t1相差大于一個周期T,周期T可以為圖4中的時段41,則需要重新開始一輪“學(xué)習(xí)+檢測+檢測”的過程。

步驟505:在所述空閑時長的第一時段對所述存儲系統(tǒng)中存儲單元的讀寫操作進行監(jiān)控,得到第一監(jiān)控結(jié)果;

步驟506:若所述第一監(jiān)控結(jié)果表征在所述第一時段內(nèi)無對所述存儲單元的讀寫操作,則檢測在第三時段內(nèi)設(shè)置對所述存儲單元的讀寫操作進行監(jiān)控, 得到第二監(jiān)控結(jié)果;若所述第二監(jiān)控結(jié)果表征在所述第三時段內(nèi)無對所述存儲單元的讀寫操作,則執(zhí)行步驟507;否則,返回步驟505;

步驟507:每隔預(yù)設(shè)的時長進行一次檢測,得到檢測結(jié)果;

步驟508:將t2設(shè)置為當(dāng)前時刻值,返回步驟503。

可見,采用上述方案,能夠首先主動學(xué)習(xí)存儲系統(tǒng)中各個存儲單元的讀寫操作預(yù)測得到空閑時長,然后在空閑時長的第一時段內(nèi)進行監(jiān)控,如果監(jiān)控結(jié)果表征在第一時段內(nèi)無針對存儲單元的讀寫操作,則進入第二時段對存儲系統(tǒng)中的存儲單元進行檢測并得到檢測結(jié)果。如此,由于對存儲系統(tǒng)采取了主動的檢測方式,能夠保證有效的檢測到訪問量較少的存儲單元,從而保障了存儲系統(tǒng)的存儲能力。

另外,由于上述方案采用空閑等待的方式,對存儲系統(tǒng)的讀寫操作進行了監(jiān)控和預(yù)測,并在下發(fā)檢測磁盤命令時采用了等待和間隔的策略,如此就能夠極大避免和前端業(yè)務(wù)I/O產(chǎn)生沖突。

實施例三、

本發(fā)明實施例提供了一種檢測方法,如圖3所述,所述方法包括:

步驟31:檢測分析存儲系統(tǒng)中各存儲單元響應(yīng)讀寫操作的記錄數(shù)據(jù),得到所述存儲單元的讀寫特征參數(shù);

步驟32:基于所述存儲單元的讀寫特征參數(shù),預(yù)測得到空閑時長;

步驟33:在所述空閑時長的第一時段對所述存儲系統(tǒng)中存儲單元的讀寫操作進行監(jiān)控,得到第一監(jiān)控結(jié)果;

步驟34:若所述第一監(jiān)控結(jié)果表征在所述第一時段內(nèi)無對所述存儲單元的讀寫操作,則在第三時段內(nèi)設(shè)置對所述存儲單元的讀寫操作進行監(jiān)控,得到第二監(jiān)控結(jié)果;

步驟35:若所述第二監(jiān)控結(jié)果表征在所述第三時段內(nèi)無對所述存儲單元的讀寫操作,則生成第一操作指令;

步驟36:根據(jù)所述第一操作指令,在所述空閑時長的第二時段內(nèi)對存儲系 統(tǒng)中存儲單元進行檢測并確定檢測結(jié)果;其中,所述第二時段為所述空閑時長除去所述第一時段后的剩余時長中的至少部分時長。

本實施例可以應(yīng)用于使用硬盤的設(shè)備或集群中,比如,可以應(yīng)用于服務(wù)器集群、臺式機、筆記本電腦等設(shè)備。

上述存儲系統(tǒng)可以為包括有至少一個存儲設(shè)備;另外,所述存儲設(shè)備包括有至少一個存儲單元。

其中,所述存儲設(shè)備可以為硬盤。所述存儲單元可以為硬盤上的塊,每一個塊可以為64K-128K。

本實施例中采用了空閑等待的策略。也就是說,通過步驟31-步驟32對第一預(yù)設(shè)時長內(nèi)存儲系統(tǒng)收到的中各存儲單元響應(yīng)讀寫操作的記錄數(shù)據(jù),得到所述存儲單元的讀寫特征參數(shù),即業(yè)務(wù)I/O情況,預(yù)測得到空閑時長;通過預(yù)測得到空閑時長確定接下來一段時間可能的I/O分布情況從而避免掃描過程中對前端業(yè)務(wù)I/O訪問造成影響。

開啟執(zhí)行檢測的頻率可以根據(jù)實際情況進行設(shè)置,如果檢測的頻率太低會導(dǎo)致不能及時發(fā)現(xiàn)壞扇區(qū)造成數(shù)據(jù)丟失,頻率太高則可能會影響前端I/O性能?;诶鋽?shù)據(jù)盤的應(yīng)用場景(對于熱盤往往沒等掃描就因為I/O訪問已經(jīng)發(fā)現(xiàn)磁盤壞扇區(qū)),本實施例將采用固定周期頻率(如每兩個月)的方式對磁盤進行一次檢測,也就是說,可以每隔固定周期頻率執(zhí)行一次步驟31-步驟36。因為,一方面固定周期頻率的方式更簡單可控,另一方面從長遠來,其掃描效果和動態(tài)周期頻率的方式是一樣的。將每一個檢測周期作為一個時間段。對每個時間段分兩個階段進行工作:學(xué)習(xí)階段和檢測階段。

第一,所述學(xué)習(xí)階段,上述步驟31,所述檢測分析存儲系統(tǒng)中各存儲單元響應(yīng)讀寫操作的記錄數(shù)據(jù),得到所述存儲單元的讀寫特征參數(shù)可以包括:檢測分析存儲系統(tǒng)中各存儲單元響應(yīng)讀寫操作的記錄數(shù)據(jù),至少將所述讀寫操作的時間戳記錄為所述存儲單元的讀寫特征參數(shù)。

其中,所述檢測分析存儲系統(tǒng)中各存儲單元響應(yīng)讀寫操作的記錄數(shù)據(jù)可以為:存儲系統(tǒng)接收到讀寫請求時,分析所述讀寫請求獲取到響應(yīng)所述請求的目 標存儲單元,獲取到針對所述目標存儲單元的讀取操作次數(shù)、以及讀取操作的時間戳。

相應(yīng)的,上述步驟32所述基于所述存儲單元的讀寫特征參數(shù),預(yù)測得到空閑時長,包括:基于執(zhí)行讀寫操作的時間戳,確定相鄰的讀寫操作之間的平均時長,將得到的所述平均時長作為所述空閑時長。比如,統(tǒng)計系統(tǒng)收到的I/O情況預(yù)測出接下來的檢測周期即空閑時長,比如10秒收到了2個I/O請求,則空閑時長為5秒。

第二,在空閑時長內(nèi)針對存儲系統(tǒng)進行檢測,也就是進入了檢測階段。

在檢測階段可以具備三個不同的時段,在檢測階段中必須具備的時段為第一時段,也可以稱之為監(jiān)控時段,在第一時段內(nèi)保持對存儲系統(tǒng)中存儲單元的讀寫操作進行監(jiān)控,獲取到第一監(jiān)控結(jié)果。

所述得到第一監(jiān)控結(jié)果之后,還可以包括有:若所述第一監(jiān)控結(jié)果表征在所述第一時段內(nèi)有針對存儲系統(tǒng)中存儲單元的讀寫操作,則在本次完成的第一時段之后再增加第一時段,仍然保持對存儲系統(tǒng)中存儲單元的讀寫操作進行監(jiān)控,再次獲取到第一監(jiān)控結(jié)果。

在空閑時長結(jié)束之前,如果檢測到第一監(jiān)控結(jié)果為表征在所述第一時段內(nèi)無對存儲系統(tǒng)中存儲單元的讀寫操作,則生成第一操作指令。

優(yōu)選地,本實施例還提供了以下幾種檢測方式:

方式一、所述在所述空閑時長的第二時段內(nèi)對存儲系統(tǒng)中存儲單元進行檢測并確定檢測結(jié)果,包括:在所述空閑時長的第二時段內(nèi)對所述存儲單元進行M次檢測,其中,每一次檢測針對所述存儲單元中的不同存儲區(qū)域;M為大于等于1的正整數(shù);將所述M次檢測得到的結(jié)果作為所述檢測結(jié)果。其中,M次檢測可以為:周期性的生成檢測指令,基于檢測指令對存儲單元進行檢測。另外,在相鄰的兩次檢測之間可以具備一定的間隔。

方式二、檢測所述存儲單元所在存儲設(shè)備的使用狀態(tài);所述存儲設(shè)備為第一使用狀態(tài),則對所述存儲單元采用第一掃描方式進行檢測并確定檢測結(jié)果;所述存儲設(shè)備為第二使用狀態(tài),則對所述存儲單元采用第二掃描方式進行檢測 并確定檢測結(jié)果。

其中,所述第一使用狀態(tài)以及第二使用狀態(tài)不同,所述第一使用狀態(tài)可以為新接入系統(tǒng)的硬盤;第二使用狀態(tài),可以為已經(jīng)投入使用的硬盤,也就是說在存儲單元中存入數(shù)據(jù)信息的狀態(tài)。

所述第一掃描方式為:基于物理位置,對所述L塊存儲單元進行順序掃描;其中,L為大于等于1的正整數(shù);所述第二掃描方式為:分別將L塊所述存儲單元中物理位置相鄰的N塊存儲單元劃分為一個存儲組,每一次掃描均選取不同存儲組中的一塊存儲單元進行掃描;N為大于等于1且小于等于L的正整數(shù)。。

其中,第一掃描方式可以稱為順序掃描,第二掃描方式可以稱為交錯掃描。假設(shè),第一掃描方式即所述順序掃描即按照從前到后的方式依次對磁盤掃描,顯然掃描的總次數(shù)為L/l。順序掃描的方式適合系統(tǒng)剛接入新數(shù)據(jù)盤時對磁盤進行快速掃描。

第二掃描方式即交錯掃描方式是指將磁盤分塊后跳躍式掃描。將存儲設(shè)備分為N塊,每塊則包含L/N大小的扇區(qū);每次掃描扇區(qū)大小仍然為l,則每塊需要掃描L/N/l次,設(shè)為R。所述交錯掃描如圖6所示,即首先掃描第1塊頭部l大小的扇區(qū),隨后向后跳躍L/N跳到第2塊區(qū)域,掃描頭部l的扇區(qū),隨后跳躍到下一塊區(qū)域依次掃描,掃描結(jié)束后返回到第1塊區(qū)域接著上次掃描的位置掃描第2個l大小的扇區(qū),以此類推。

交錯掃描的方式適合于使用過程中進行掃描。因為在大多數(shù)分布式存儲系統(tǒng)中存儲設(shè)備均是按塊進行訪問的,并且這種交錯掃描方式更利于快速發(fā)現(xiàn)大容量數(shù)據(jù)盤中的壞扇區(qū)。一般分布式存儲系統(tǒng)都是按塊,比如2G一個塊,每一塊即為本實施例中所述的一個存儲單元,分塊存儲和訪問。隨著業(yè)務(wù)使用,壞扇區(qū)、壞道也會不連續(xù)的出現(xiàn),這時從頭往后的順序掃描對于磁盤后面存儲單元訪問引起的壞扇區(qū)來說就非常不好,比如一個磁盤上最后一個存儲單元有壞扇區(qū)的話,若按順序掃描則必須從前往后順序掃描到最后才可以檢測到;而交錯掃描的方式由于是“跳躍式”的掃描當(dāng)然可以很快發(fā)現(xiàn)壞扇區(qū)。

另外,與實施例還增加了第三時段,可以將第三時段作為監(jiān)控以及檢測之 間的等待時段。比如,假設(shè)空閑時長為5秒,那么相當(dāng)于每五秒鐘進行一次循環(huán)。

以圖4所示來對本實施例進行的時段劃分進行描述,首先可以根據(jù)實際情況確定每兩個月進行一次檢測,每兩個月可以作為一個檢測時段41,在每次檢測中包括有學(xué)習(xí)階段411以及檢測階段;檢測階段可以循環(huán)操作,在每一個循環(huán)中可以分別包括有三個時間段——第一時段4121用于監(jiān)控讀寫操作、第三時段4122用于等待并繼續(xù)監(jiān)控是否有讀寫操作、第二時段4123用于進行檢測。

在第一時段內(nèi)一旦發(fā)現(xiàn)沒有I/O請求時立刻進入第三時段。在第三時段內(nèi),如果仍然沒有I/O請求則進入第二時段即剩余空閑時間,反之退回到第一時段即監(jiān)控時間對I/O重新監(jiān)控。

在第二時段(剩余空閑時間)內(nèi),每隔一定單位時間向磁盤下發(fā)Verify命令進行磁盤壞扇區(qū)探測,直至剩余空閑時間完畢。

將以上的策略細化,則得到掃描算法的主要流程:

第一步、程序在初始化,選擇相應(yīng)的掃描策略:順序掃描還是交錯掃描,設(shè)置周期T,代表多長時間重新進行系統(tǒng)負載情況的統(tǒng)計分析,設(shè)置當(dāng)前時間t=0。

第二步、監(jiān)控系統(tǒng)I/O一段時間Δt,得到此時系統(tǒng)負載的周期性大體變化情況,根據(jù)此時負載的分布函數(shù),確定空閑等待時間、剩余空閑時間和掃描數(shù)據(jù)塊的大小。

第三步、查詢系統(tǒng)I/O狀態(tài)。如果系統(tǒng)在空閑等待時間內(nèi)沒有來自前端的I/O請求,則在剩余空閑時間內(nèi),每隔一段時間發(fā)送一次Verify命令。

第四步、如果tnow-t<T,轉(zhuǎn)到第三步,否則,轉(zhuǎn)到第二步。

可見,采用上述方案,能夠首先主動學(xué)習(xí)存儲系統(tǒng)中各個存儲單元的讀寫操作預(yù)測得到空閑時長,然后在空閑時長的第一時段內(nèi)進行監(jiān)控,如果監(jiān)控結(jié)果表征在第一時段內(nèi)無針對存儲單元的讀寫操作,則進入第二時段對存儲系統(tǒng) 中的存儲單元進行檢測并得到檢測結(jié)果。如此,由于對存儲系統(tǒng)采取了主動的檢測方式,能夠保證有效的檢測到訪問量較少的存儲單元,從而保證長時間不訪問的存儲單元的存儲能力。

另外,由于上述方案采用空閑等待的方式,對存儲系統(tǒng)的讀寫操作進行了監(jiān)控和預(yù)測,并在下發(fā)檢測磁盤命令時采用了等待和間隔的策略,如此就能夠極大避免和前端業(yè)務(wù)I/O產(chǎn)生沖突。還采用了交錯掃描的方式進行掃描,這種跳躍式的掃描更利于大容量磁盤壞扇區(qū)的發(fā)現(xiàn),速度相比傳統(tǒng)的順序掃描方式快很多。

實施例四、

本發(fā)明實施例提供了一種檢測裝置,如圖7所示,所述裝置包括:

預(yù)測單元71,用于檢測分析存儲系統(tǒng)中各存儲單元響應(yīng)讀寫操作的記錄數(shù)據(jù),得到所述存儲單元的讀寫特征參數(shù);基于所述存儲單元的讀寫特征參數(shù),預(yù)測得到空閑時長;

檢測單元72,用于在所述空閑時長的第一時段對所述存儲系統(tǒng)中存儲單元的讀寫操作進行監(jiān)控,得到第一監(jiān)控結(jié)果;若所述第一監(jiān)控結(jié)果表征在所述第一時段內(nèi)無對存儲系統(tǒng)中存儲單元的讀寫操作,則生成第一操作指令;根據(jù)所述第一操作指令,在所述空閑時長的第二時段內(nèi)對存儲系統(tǒng)中存儲單元進行檢測并確定檢測結(jié)果;其中,所述第二時段為所述空閑時長除去所述第一時段后的剩余時長中的至少部分時長。

本實施例中所述的檢測裝置可以應(yīng)用于使用硬盤的設(shè)備或集群中,比如,可以應(yīng)用于服務(wù)器集群、臺式機、筆記本電腦等設(shè)備。

上述存儲系統(tǒng)可以為包括有至少一個存儲設(shè)備;另外,所述存儲設(shè)備包括有至少一個存儲單元。

其中,所述存儲設(shè)備可以為硬盤。所述存儲單元可以為硬盤上的塊,每一個塊可以為64K-128K。

本實施例中采用了空閑等待的策略。也就是說,對第一預(yù)設(shè)時長內(nèi)存儲 系統(tǒng)收到的中各存儲單元響應(yīng)讀寫操作的記錄數(shù)據(jù),得到所述存儲單元的讀寫特征參數(shù),即業(yè)務(wù)I/O情況,預(yù)測得到空閑時長;通過預(yù)測得到空閑時長確定接下來一段時間可能的I/O分布情況從而避免掃描過程中對前端業(yè)務(wù)I/O訪問造成影響。

開啟執(zhí)行檢測的頻率可以根據(jù)實際情況進行設(shè)置,如果檢測的頻率太低會導(dǎo)致不能及時發(fā)現(xiàn)壞扇區(qū)造成數(shù)據(jù)丟失,頻率太高則可能會影響前端I/O性能。基于冷數(shù)據(jù)盤的應(yīng)用場景(對于熱盤往往沒等掃描就因為I/O訪問已經(jīng)發(fā)現(xiàn)磁盤壞扇區(qū)),本實施例將采用固定周期頻率(如每兩個月)的方式對磁盤進行一次檢測。

第一,所述學(xué)習(xí)階段,所述預(yù)測單元,用于檢測分析存儲系統(tǒng)中各存儲單元響應(yīng)讀寫操作的記錄數(shù)據(jù),至少將所述讀寫操作的時間戳記錄為所述存儲單元的讀寫特征參數(shù);。

其中,所述檢測分析存儲系統(tǒng)中各存儲單元響應(yīng)讀寫操作的記錄數(shù)據(jù)可以為:存儲系統(tǒng)接收到讀寫請求時,分析所述讀寫請求獲取到響應(yīng)所述請求的目標存儲單元,獲取到針對所述目標存儲單元的讀取操作次數(shù)、以及讀取操作的時間戳。

相應(yīng)的,所述預(yù)測單元,用于基于執(zhí)行讀寫操作的時間戳,確定相鄰的讀寫操作之間的平均時長,將得到的所述平均時長作為所述空閑時長。比如,統(tǒng)計系統(tǒng)收到的I/O情況預(yù)測出接下來的檢測周期即空閑時長,比如10秒收到了2個I/O請求,則空閑時長為5秒。

第二,在空閑時長內(nèi)針對存儲系統(tǒng)進行檢測,也就是進入了檢測階段。

在檢測階段可以具備三個不同的時段,在檢測階段中必須具備的時段為第一時段,也可以稱之為監(jiān)控時段,在第一時段內(nèi)保持對存儲系統(tǒng)中存儲單元的讀寫操作進行監(jiān)控,獲取到第一監(jiān)控結(jié)果。

所述得到第一監(jiān)控結(jié)果之后,所述檢測單元,用于若所述第一監(jiān)控結(jié)果表征在所述第一時段內(nèi)有針對存儲系統(tǒng)中存儲單元的讀寫操作,則在本次完成的第一時段之后再增加第一時段,仍然保持對存儲系統(tǒng)中存儲單元的讀寫操作進 行監(jiān)控,再次獲取到第一監(jiān)控結(jié)果。

在空閑時長結(jié)束之前,如果檢測到第一監(jiān)控結(jié)果為表征在所述第一時段內(nèi)無對存儲系統(tǒng)中存儲單元的讀寫操作,則生成第一操作指令。

所述檢測單元,用于在所述空閑時長的第二時段內(nèi)對所述存儲單元進行M次檢測,其中,每一次檢測針對所述存儲單元中的不同存儲區(qū)域;M為大于等于1的正整數(shù);將所述M次檢測得到的結(jié)果作為所述檢測結(jié)果。其中,M次檢測可以為:周期性的生成檢測指令,基于檢測指令對存儲單元進行檢測。另外,在相鄰的兩次檢測之間可以具備一定的間隔,比如圖2所示,假設(shè)黑色陰影21部分標識對存儲單元進行檢測的時間,在兩個黑色陰影標識的時間之間具備一個間隔22。

可見,采用上述方案,能夠首先主動學(xué)習(xí)存儲系統(tǒng)中各個存儲單元的讀寫操作預(yù)測得到空閑時長,然后在空閑時長的第一時段內(nèi)進行監(jiān)控,如果監(jiān)控結(jié)果表征在第一時段內(nèi)無針對存儲單元的讀寫操作,則進入第二時段對存儲系統(tǒng)中的存儲單元進行檢測并得到檢測結(jié)果。如此,由于對存儲系統(tǒng)采取了主動的檢測方式,能夠保證有效的檢測到訪問量較少的存儲單元,從而保障了存儲系統(tǒng)的存儲能力。

實施例五、

本發(fā)明實施例提供了一種檢測裝置,如圖7所示,所述裝置包括:

預(yù)測單元71,用于檢測分析存儲系統(tǒng)中各存儲單元響應(yīng)讀寫操作的記錄數(shù)據(jù),得到所述存儲單元的讀寫特征參數(shù);基于所述存儲單元的讀寫特征參數(shù),預(yù)測得到空閑時長;

檢測單元72,用于在所述空閑時長的第一時段對所述存儲系統(tǒng)中存儲單元的讀寫操作進行監(jiān)控,得到第一監(jiān)控結(jié)果;若所述第一監(jiān)控結(jié)果表征在所述第一時段內(nèi)無對存儲系統(tǒng)中存儲單元的讀寫操作,則生成第一操作指令;根據(jù)所述第一操作指令,在所述空閑時長的第二時段內(nèi)對存儲系統(tǒng)中存儲單元進行檢測并確定檢測結(jié)果;其中,所述第二時段為所述空閑時長除去所述第一時段后 的剩余時長中的至少部分時長。

本實施例可以應(yīng)用于使用硬盤的設(shè)備或集群中,比如,可以應(yīng)用于服務(wù)器集群、臺式機、筆記本電腦等設(shè)備。

上述存儲系統(tǒng)可以為包括有至少一個存儲設(shè)備;另外,所述存儲設(shè)備包括有至少一個存儲單元。

本實施例中采用了空閑等待的策略。也就是說,對第一預(yù)設(shè)時長內(nèi)存儲系統(tǒng)收到的中各存儲單元響應(yīng)讀寫操作的記錄數(shù)據(jù),得到所述存儲單元的讀寫特征參數(shù),即業(yè)務(wù)I/O情況,預(yù)測得到空閑時長;通過預(yù)測得到空閑時長確定接下來一段時間可能的I/O分布情況從而避免掃描過程中對前端業(yè)務(wù)I/O訪問造成影響。

開啟執(zhí)行檢測的頻率可以根據(jù)實際情況進行設(shè)置,如果檢測的頻率太低會導(dǎo)致不能及時發(fā)現(xiàn)壞扇區(qū)造成數(shù)據(jù)丟失,頻率太高則可能會影響前端I/O性能。

對每個時間段分兩個階段進行工作:學(xué)習(xí)階段和檢測階段。

第一,所述學(xué)習(xí)階段,所述預(yù)測單元,用于檢測分析存儲系統(tǒng)中各存儲單元響應(yīng)讀寫操作的記錄數(shù)據(jù),至少將所述讀寫操作的時間戳記錄為所述存儲單元的讀寫特征參數(shù)。

其中,所述檢測分析存儲系統(tǒng)中各存儲單元響應(yīng)讀寫操作的記錄數(shù)據(jù)可以為:存儲系統(tǒng)接收到讀寫請求時,分析所述讀寫請求獲取到響應(yīng)所述請求的目標存儲單元,獲取到針對所述目標存儲單元的讀取操作次數(shù)、以及讀取操作的時間戳。

相應(yīng)的,所述預(yù)測單元,用于基于執(zhí)行讀寫操作的時間戳,確定相鄰的讀寫操作之間的平均時長,將得到的所述平均時長作為所述空閑時長。比如,統(tǒng)計系統(tǒng)收到的I/O情況預(yù)測出接下來的檢測周期即空閑時長,比如10秒收到了2個I/O請求,則空閑時長為5秒。

第二,在空閑時長內(nèi)針對存儲系統(tǒng)進行檢測,也就是進入了檢測階段。

在檢測階段可以具備三個不同的時段,在檢測階段中必須具備的時段為 第一時段,也可以稱之為監(jiān)控時段,在第一時段內(nèi)保持對存儲系統(tǒng)中存儲單元的讀寫操作進行監(jiān)控,獲取到第一監(jiān)控結(jié)果。

所述檢測單元,用于若所述第一監(jiān)控結(jié)果表征在所述第一時段內(nèi)有針對存儲系統(tǒng)中存儲單元的讀寫操作,則在本次完成的第一時段之后再增加第一時段,仍然保持對存儲系統(tǒng)中存儲單元的讀寫操作進行監(jiān)控,再次獲取到第一監(jiān)控結(jié)果。

在空閑時長結(jié)束之前,如果檢測到第一監(jiān)控結(jié)果為表征在所述第一時段內(nèi)無對存儲系統(tǒng)中存儲單元的讀寫操作,則生成第一操作指令。

所述檢測單元,用于在所述空閑時長的第二時段內(nèi)對所述存儲單元進行M次檢測,其中,每一次檢測針對所述存儲單元中的不同存儲區(qū)域;M為大于等于1的正整數(shù);將所述M次檢測得到的結(jié)果作為所述檢測結(jié)果。其中,M次檢測可以為:周期性的生成檢測指令,基于檢測指令對存儲單元進行檢測。另外,在相鄰的兩次檢測之間可以具備一定的間隔。

另外,實施例還增加了第三時段,可以將第三時段作為監(jiān)控以及檢測之間的等待時段。比如,假設(shè)空閑時長為5秒,那么相當(dāng)于每五秒鐘進行一次循環(huán)。

以圖4所示來對本實施例進行的時段劃分進行描述,首先可以根據(jù)實際情況確定每兩個月進行一次檢測,每兩個月可以作為一個檢測時段41,在每次檢測中包括有學(xué)習(xí)階段411以及檢測階段;檢測階段可以循環(huán)操作,在每一個循環(huán)中可以分別包括有三個時間段——第一時段4121用于監(jiān)控讀寫操作、第三時段4122用于等待并繼續(xù)監(jiān)控是否有讀寫操作、第二時段4123用于進行檢測。

在第一時段內(nèi)一旦發(fā)現(xiàn)沒有I/O請求時立刻進入第三時段。在第三時段內(nèi),如果仍然沒有I/O請求則進入第二時段即剩余空閑時間,反之退回到第一時段即監(jiān)控時間對I/O重新監(jiān)控。

在第二時段(剩余空閑時間)內(nèi),每隔一定單位時間向磁盤下發(fā)Verify命令進行磁盤壞扇區(qū)探測,直至剩余空閑時間完畢。

可見,采用上述方案,能夠首先主動學(xué)習(xí)存儲系統(tǒng)中各個存儲單元的讀寫操作預(yù)測得到空閑時長,然后在空閑時長的第一時段內(nèi)進行監(jiān)控,如果監(jiān)控結(jié)果表征在第一時段內(nèi)無針對存儲單元的讀寫操作,則進入第二時段對存儲系統(tǒng)中的存儲單元進行檢測并得到檢測結(jié)果。如此,由于對存儲系統(tǒng)采取了主動的檢測方式,能夠保證有效的檢測到訪問量較少的存儲單元,從而保障了存儲系統(tǒng)的存儲能力。

另外,由于上述方案采用空閑等待的方式,對存儲系統(tǒng)的讀寫操作進行了監(jiān)控和預(yù)測,并在下發(fā)檢測磁盤命令時采用了等待和間隔的策略,如此就能夠極大避免和前端業(yè)務(wù)I/O產(chǎn)生沖突。

實施例六、

本發(fā)明實施例提供了一種檢測裝置,如圖7所示,所述裝置包括:

預(yù)測單元71,用于檢測分析存儲系統(tǒng)中各存儲單元響應(yīng)讀寫操作的記錄數(shù)據(jù),得到所述存儲單元的讀寫特征參數(shù);基于所述存儲單元的讀寫特征參數(shù),預(yù)測得到空閑時長;

檢測單元72,用于在所述空閑時長的第一時段對所述存儲系統(tǒng)中存儲單元的讀寫操作進行監(jiān)控,得到第一監(jiān)控結(jié)果;若所述第一監(jiān)控結(jié)果表征在所述第一時段內(nèi)無對存儲系統(tǒng)中存儲單元的讀寫操作,則生成第一操作指令;根據(jù)所述第一操作指令,在所述空閑時長的第二時段內(nèi)對存儲系統(tǒng)中存儲單元進行檢測并確定檢測結(jié)果;其中,所述第二時段為所述空閑時長除去所述第一時段后的剩余時長中的至少部分時長。

本實施例可以應(yīng)用于使用硬盤的設(shè)備或集群中,比如,可以應(yīng)用于服務(wù)器集群、臺式機、筆記本電腦等設(shè)備。

上述存儲系統(tǒng)可以為包括有至少一個存儲設(shè)備;另外,所述存儲設(shè)備包括有至少一個存儲單元。

其中,所述存儲設(shè)備可以為硬盤,比如,硬盤有固態(tài)硬盤(SSD盤,新式硬盤)、機械硬盤(HDD傳統(tǒng)硬盤)。所述存儲單元可以為硬盤上的塊,每一 個塊可以為64K-128K。

本實施例中采用了空閑等待的策略。也就是說,對第一預(yù)設(shè)時長內(nèi)存儲系統(tǒng)收到的中各存儲單元響應(yīng)讀寫操作的記錄數(shù)據(jù),得到所述存儲單元的讀寫特征參數(shù),即業(yè)務(wù)I/O情況,預(yù)測得到空閑時長;通過預(yù)測得到空閑時長確定接下來一段時間可能的I/O分布情況從而避免掃描過程中對前端業(yè)務(wù)I/O訪問造成影響。

開啟執(zhí)行檢測的頻率可以根據(jù)實際情況進行設(shè)置,如果檢測的頻率太低會導(dǎo)致不能及時發(fā)現(xiàn)壞扇區(qū)造成數(shù)據(jù)丟失,頻率太高則可能會影響前端I/O性能?;诶鋽?shù)據(jù)盤的應(yīng)用場景(對于熱盤往往沒等掃描就因為I/O訪問已經(jīng)發(fā)現(xiàn)磁盤壞扇區(qū)),本實施例將采用固定周期頻率(如每兩個月)的方式對磁盤進行一次檢測,也就是說,可以每隔固定周期頻率執(zhí)行一次步驟31-步驟36。因為,一方面固定周期頻率的方式更簡單可控,另一方面從長遠來,其掃描效果和動態(tài)周期頻率的方式是一樣的。將每一個檢測周期作為一個時間段。對每個時間段分兩個階段進行工作:學(xué)習(xí)階段和檢測階段。

第一,所述學(xué)習(xí)階段,檢測分析存儲系統(tǒng)中各存儲單元響應(yīng)讀寫操作的記錄數(shù)據(jù),至少將所述讀寫操作的時間戳記錄為所述存儲單元的讀寫特征參數(shù)。

其中,所述檢測分析存儲系統(tǒng)中各存儲單元響應(yīng)讀寫操作的記錄數(shù)據(jù)可以為:存儲系統(tǒng)接收到讀寫請求時,分析所述讀寫請求獲取到響應(yīng)所述請求的目標存儲單元,獲取到針對所述目標存儲單元的讀取操作次數(shù)、以及讀取操作的時間戳。

相應(yīng)的,基于執(zhí)行讀寫操作的時間戳,確定相鄰的讀寫操作之間的平均時長,將得到的所述平均時長作為所述空閑時長。比如,統(tǒng)計系統(tǒng)收到的I/O情況預(yù)測出接下來的檢測周期即空閑時長,比如10秒收到了2個I/O請求,則空閑時長為5秒。

第二,在空閑時長內(nèi)針對存儲系統(tǒng)進行檢測,也就是進入了檢測階段。

在檢測階段可以具備三個不同的時段,在檢測階段中必須具備的時段為第一時段,也可以稱之為監(jiān)控時段,在第一時段內(nèi)保持對存儲系統(tǒng)中存儲單 元的讀寫操作進行監(jiān)控,獲取到第一監(jiān)控結(jié)果。

所述得到第一監(jiān)控結(jié)果之后,還可以包括有:若所述第一監(jiān)控結(jié)果表征在所述第一時段內(nèi)有針對存儲系統(tǒng)中存儲單元的讀寫操作,則在本次完成的第一時段之后再增加第一時段,仍然保持對存儲系統(tǒng)中存儲單元的讀寫操作進行監(jiān)控,再次獲取到第一監(jiān)控結(jié)果。

在空閑時長結(jié)束之前,如果檢測到第一監(jiān)控結(jié)果為表征在所述第一時段內(nèi)無對存儲系統(tǒng)中存儲單元的讀寫操作,則生成第一操作指令。

優(yōu)選地,本實施例還提供了以下幾種檢測方式:

方式一、所述預(yù)測單元,用于在所述空閑時長的第二時段內(nèi)對所述存儲單元進行M次檢測,其中,每一次檢測針對所述存儲單元中的不同存儲區(qū)域;M為大于等于1的正整數(shù);將所述M次檢測得到的結(jié)果作為所述檢測結(jié)果。其中,M次檢測可以為:周期性的生成檢測指令,基于檢測指令對存儲單元進行檢測。另外,在相鄰的兩次檢測之間可以具備一定的間隔。

方式二、檢測所述存儲單元所在存儲設(shè)備的使用狀態(tài);所述存儲設(shè)備為第一使用狀態(tài),則對所述存儲單元采用第一掃描方式進行檢測并確定檢測結(jié)果;所述存儲設(shè)備為第二使用狀態(tài),則對所述存儲單元采用第二掃描方式進行檢測并確定檢測結(jié)果。

所述第一掃描方式為:基于物理位置,對所述L塊存儲單元進行順序掃描;其中,L為大于等于1的正整數(shù);所述第二掃描方式為:分別將L塊所述存儲單元中物理位置相鄰的N塊存儲單元劃分為一個存儲組,每一次掃描均選取不同存儲組中的一塊存儲單元進行掃描;N為大于等于1且小于等于L的正整數(shù)。

其中,第一掃描方式可以稱為順序掃描,第二種掃描方式可以稱為交錯掃描。

假設(shè),將磁盤看作一條條帶,每次掃描的扇區(qū)大小為l:所述順序掃描即按照從前到后的方式依次對磁盤掃描,顯然掃描的總次數(shù)為L/l。順序掃描的方式適合系統(tǒng)剛接入新數(shù)據(jù)盤時對磁盤進行快速掃描。交錯掃描方式是指將磁盤分塊后跳躍式掃描。假設(shè)將存儲單元分為N塊,每塊則包含L/N大 小的扇區(qū);每次掃描扇區(qū)大小仍然為l,則每塊需要掃描L/N/l次,設(shè)為R。

所述交錯掃描即首先掃描第1塊頭部l大小的扇區(qū),隨后向后跳躍L/N跳到第2塊區(qū)域,掃描頭部l的扇區(qū),隨后跳躍到下一塊區(qū)域依次掃描,掃描結(jié)束后返回到第1塊區(qū)域接著上次掃描的位置掃描第2個l大小的扇區(qū),以此類推。整個掃描過程如圖6所示。交錯掃描的方式適合于磁盤使用過程中進行掃描。因為在大多數(shù)分布式存儲系統(tǒng)中磁盤均是按塊(chunk)進行訪問的,并且這種交錯掃描方式更利于快速發(fā)現(xiàn)大容量數(shù)據(jù)盤中的壞扇區(qū)。

另外,與實施例還增加了第三時段,可以將第三時段作為監(jiān)控以及檢測之間的等待時段。比如,假設(shè)空閑時長為5秒,那么相當(dāng)于每五秒鐘進行一次循環(huán)。

以圖4所示來對本實施例進行的時段劃分進行描述,首先可以根據(jù)實際情況確定每兩個月進行一次檢測,每兩個月可以作為一個檢測時段41,在每次檢測中包括有學(xué)習(xí)階段411以及檢測階段;檢測階段可以循環(huán)操作,在每一個循環(huán)中可以分別包括有三個時間段——第一時段4121用于監(jiān)控讀寫操作、第三時段4122用于等待并繼續(xù)監(jiān)控是否有讀寫操作、第二時段4123用于進行檢測。

在第一時段內(nèi)一旦發(fā)現(xiàn)沒有I/O請求時立刻進入第三時段。在第三時段內(nèi),如果仍然沒有I/O請求則進入第二時段即剩余空閑時間,反之退回到第一時段即監(jiān)控時間對I/O重新監(jiān)控。

在第二時段(剩余空閑時間)內(nèi),每隔一定單位時間向磁盤下發(fā)Verify命令進行磁盤壞扇區(qū)探測,直至剩余空閑時間完畢。

將以上的策略細化,則得到掃描算法的主要流程:

第一步、程序在初始化,選擇相應(yīng)的掃描策略:順序掃描還是交錯掃描,設(shè)置周期T,代表多長時間重新進行系統(tǒng)負載情況的統(tǒng)計分析,設(shè)置當(dāng)前時間t=0。

第二步、監(jiān)控系統(tǒng)I/O一段時間Δt,得到此時系統(tǒng)負載的周期性大體變化情況,根據(jù)此時負載的分布函數(shù),確定空閑等待時間、剩余空閑時間和掃 描數(shù)據(jù)塊的大小。

第三步、查詢系統(tǒng)I/O狀態(tài)。如果系統(tǒng)在空閑等待時間內(nèi)沒有來自前端的I/O請求,則在剩余空閑時間內(nèi),每隔一段時間發(fā)送一次Verify命令。

第四步、如果tnow-t<T,轉(zhuǎn)到第三步,否則,轉(zhuǎn)到第二步。

可見,采用上述方案,能夠首先主動學(xué)習(xí)存儲系統(tǒng)中各個存儲單元的讀寫操作預(yù)測得到空閑時長,然后在空閑時長的第一時段內(nèi)進行監(jiān)控,如果監(jiān)控結(jié)果表征在第一時段內(nèi)無針對存儲單元的讀寫操作,則進入第二時段對存儲系統(tǒng)中的存儲單元進行檢測并得到檢測結(jié)果。如此,由于對存儲系統(tǒng)采取了主動的檢測方式,能夠保證有效的檢測到訪問量較少的存儲單元,從而保障了存儲系統(tǒng)的存儲能力。

另外,由于上述方案采用空閑等待的方式,對存儲系統(tǒng)的讀寫操作進行了監(jiān)控和預(yù)測,并在下發(fā)檢測磁盤命令時采用了等待和間隔的策略,如此就能夠極大避免和前端業(yè)務(wù)I/O產(chǎn)生沖突。還采用了交錯掃描的方式進行掃描,這種跳躍式的掃描更利于大容量磁盤壞扇區(qū)的發(fā)現(xiàn),速度相比傳統(tǒng)的順序掃描方式快很多。

在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的設(shè)備和方法,可以通過其它的方式實現(xiàn)。以上所描述的設(shè)備實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,如:多個單元或組件可以結(jié)合,或可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另外,所顯示或討論的各組成部分相互之間的耦合、或直接耦合、或通信連接可以是通過一些接口,設(shè)備或單元的間接耦合或通信連接,可以是電性的、機械的或其它形式的。

上述作為分離部件說明的單元可以是、或也可以不是物理上分開的,作為單元顯示的部件可以是、或也可以不是物理單元,即可以位于一個地方,也可以分布到多個網(wǎng)絡(luò)單元上;可以根據(jù)實際的需要選擇其中的部分或全部單元來實現(xiàn)本實施例方案的目的。

另外,在本發(fā)明各實施例中的各功能單元可以全部集成在一個處理模塊中,也可以是各單元分別單獨作為一個單元,也可以兩個或兩個以上單元集成在一個單元中;上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用硬件加軟件功能單元的形式實現(xiàn)。

本領(lǐng)域普通技術(shù)人員可以理解:實現(xiàn)上述方法實施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成,前述的程序可以存儲于一計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述的存儲介質(zhì)包括:移動存儲設(shè)備、只讀存儲器(ROM,Read-Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。

以上所述,僅為本發(fā)明的具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)以所述權(quán)利要求的保護范圍為準。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
长宁县| 临潭县| 林芝县| 上林县| 驻马店市| 宝应县| 迁西县| 通山县| 特克斯县| 遂溪县| 望城县| 积石山| 类乌齐县| 左贡县| 响水县| 罗田县| 台南市| 广汉市| 五莲县| 花莲县| 都昌县| 邻水| 醴陵市| 巫山县| 堆龙德庆县| 赤壁市| 四子王旗| 辰溪县| 鄢陵县| 石台县| 永安市| 鞍山市| 庄浪县| 抚远县| 修水县| 遂溪县| 涟水县| 濮阳市| 杭锦后旗| 介休市| 宁强县|