一種硬盤io超時(shí)控制方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及電子技術(shù)領(lǐng)域,尤其涉及一種硬盤1超時(shí)控制方法及裝置。
【背景技術(shù)】
[0002]硬盤故障中當(dāng)出現(xiàn)壞道(無法讀取數(shù)據(jù)的區(qū)域)或者Firm Ware (固件,硬盤上的處理程序)問題,都有可能導(dǎo)致硬盤上的1超時(shí)(即下發(fā)1命令后,長時(shí)間沒有針對(duì)所述1命令的反饋信息),當(dāng)出現(xiàn)1超時(shí)問題后,會(huì)造成陣列系統(tǒng)進(jìn)入超時(shí)處理流程,過于簡(jiǎn)單或不完善的超時(shí)處理流程會(huì)帶來對(duì)業(yè)務(wù)的影響,降低陣列運(yùn)行的可靠性。
[0003]為了處理1超時(shí),現(xiàn)有技術(shù)普遍采用重試和簡(jiǎn)單1超時(shí)計(jì)數(shù)的方式,當(dāng)1超時(shí)數(shù)量達(dá)到門限時(shí)便直接將硬盤設(shè)置為Offline狀態(tài)(即將硬盤物理隔離不使用)。如果硬盤設(shè)置為 Offline 狀態(tài),則會(huì)導(dǎo)致硬盤陣列(Redundant Arrays of Inexpensive Disks,RAID)對(duì)應(yīng)的RAID組(多塊硬盤組成的軟件邏輯空間單元)降級(jí)或失效,進(jìn)一步還會(huì)影響到業(yè)務(wù)運(yùn)行。其中,現(xiàn)有技術(shù)中采用的重試和簡(jiǎn)單1超時(shí)計(jì)數(shù)方式的具體實(shí)現(xiàn)包括:
[0004]首先,根據(jù)第一門限值(預(yù)先設(shè)定的固定值)判斷是否出現(xiàn)1超時(shí);如果第一門限值為10s,則1命令下發(fā)1s后沒有接收到反饋信息,則判定為1超時(shí);當(dāng)出現(xiàn)1超時(shí),則進(jìn)入錯(cuò)誤處理流程(例如執(zhí)行換鏈路重試等策略),并統(tǒng)計(jì)1超時(shí)個(gè)數(shù)。
[0005]其次,判斷當(dāng)前1超時(shí)的個(gè)數(shù)是否超過第二門限值(預(yù)先設(shè)定的固定值);如果第二門限值為單邊16個(gè),則當(dāng)1超時(shí)的個(gè)數(shù)達(dá)到單邊16個(gè),則直接將硬盤設(shè)置為Offline狀態(tài),RAID組降級(jí)或直接失效。
[0006]綜合上述現(xiàn)有技術(shù)方案可見:門限值固定,不能根據(jù)業(yè)務(wù)壓力進(jìn)行自適應(yīng)調(diào)整,存在誤隔離或者隔離門限過寬,導(dǎo)致影響業(yè)務(wù)。
【發(fā)明內(nèi)容】
[0007]本發(fā)明提供一種硬盤1超時(shí)控制方法及裝置,本發(fā)明所提供的方法和裝置解決現(xiàn)有技術(shù)中1超時(shí)判斷利用固定門限值,存在誤隔離或者隔離門限過寬的問題。
[0008]第一方面,提供一種硬盤1超時(shí)控制方法,該方法包括:
[0009]獲取每個(gè)1命令的下發(fā)時(shí)刻和接收每個(gè)1命令的反饋信息的返回時(shí)刻;
[0010]當(dāng)判斷當(dāng)前1命令處理超時(shí)并且重新下發(fā)當(dāng)前1命令成功后,判斷所述當(dāng)前1的前一個(gè)1是否超時(shí);
[0011]如果所述前一個(gè)1超時(shí),則將所述當(dāng)前1對(duì)應(yīng)的下發(fā)時(shí)刻與所述前一個(gè)1對(duì)應(yīng)的返回時(shí)刻進(jìn)行比較;
[0012]根據(jù)比較結(jié)果確定所述當(dāng)前1和所述前一個(gè)1是否為連續(xù)壓隊(duì)10,如果是,則在統(tǒng)計(jì)硬盤的超時(shí)1個(gè)數(shù)時(shí)將所述當(dāng)前1和所述前一個(gè)1合并為一個(gè)超時(shí)1進(jìn)行計(jì)數(shù),其中,所述連續(xù)壓隊(duì)1為連續(xù)下發(fā)的1命令。
[0013]結(jié)合第一方面,在第一種可能的實(shí)現(xiàn)方式中,所述根據(jù)比較結(jié)果確定所述當(dāng)前1和所述前一個(gè)1是否為連續(xù)壓隊(duì)10,包括:
[0014]當(dāng)比較結(jié)果為所述當(dāng)前1對(duì)應(yīng)的下發(fā)時(shí)刻早于所述前一個(gè)1對(duì)應(yīng)的返回時(shí)刻時(shí),則確定所述當(dāng)前1和所述前一個(gè)1為連續(xù)壓隊(duì)10。
[0015]結(jié)合第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式中的任意一種,在第二種可能的實(shí)現(xiàn)方式中,在統(tǒng)計(jì)硬盤的超時(shí)1個(gè)數(shù)時(shí)將所述當(dāng)前1和所述前一個(gè)1作為一個(gè)超時(shí)1進(jìn)行計(jì)數(shù)之前,還包括:
[0016]在所述當(dāng)前1的超時(shí)門限上加上一個(gè)預(yù)設(shè)的合理時(shí)延得到新的超時(shí)門限;
[0017]確定所述當(dāng)前1對(duì)應(yīng)的返回時(shí)刻在所述新的超時(shí)門限所對(duì)應(yīng)的范圍內(nèi)。
[0018]結(jié)合第一方面的第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,在所述當(dāng)前1的超時(shí)門限上加上一個(gè)預(yù)設(shè)的合理時(shí)延得到新的超時(shí)門限之前,還包括:
[0019]從所述當(dāng)前1所屬隊(duì)列的隊(duì)列深度或硬盤利用率的測(cè)試數(shù)據(jù)中選取N個(gè)值;
[0020]將所述N個(gè)值與對(duì)應(yīng)的N個(gè)1平均服務(wù)時(shí)間進(jìn)行公式化擬合,求得擬合方程,利用所述擬合方程計(jì)算所述合理時(shí)延。
[0021]結(jié)合第一方面或第一方面第一種至第三種可能的實(shí)現(xiàn)方式中的任意一種,在第四種可能的實(shí)現(xiàn)方式中,根據(jù)比較結(jié)果確定所述當(dāng)前1和所述前一個(gè)1是否為連續(xù)壓隊(duì)1之后,還包括:
[0022]當(dāng)判斷當(dāng)前1命令處理超時(shí),則獲取當(dāng)前系統(tǒng)時(shí)間;
[0023]以所述系統(tǒng)時(shí)間為起點(diǎn),獲取所述系統(tǒng)時(shí)間之前的設(shè)定時(shí)間段內(nèi)的超時(shí)1個(gè)數(shù);
[0024]檢測(cè)所述超時(shí)1個(gè)數(shù)是否大于預(yù)設(shè)閾值,如果是,則判定硬盤即將失效,對(duì)所述硬盤中的數(shù)據(jù)進(jìn)行預(yù)拷貝。
[0025]第二方面,提供一種硬盤1超時(shí)控制裝置,該裝置包括:
[0026]時(shí)間信息獲取模塊,用于獲取每個(gè)1命令的下發(fā)時(shí)刻和接收每個(gè)1命令的反饋信息的返回時(shí)刻;
[0027]初始超時(shí)判斷模塊,用于當(dāng)判斷當(dāng)前1命令處理超時(shí)并且重新下發(fā)當(dāng)前1命令成功后,判斷所述當(dāng)前1的前一個(gè)1是否超時(shí);
[0028]比較模塊,用于如果所述前一個(gè)1超時(shí),則將所述當(dāng)前1對(duì)應(yīng)的下發(fā)時(shí)刻與所述前一個(gè)1對(duì)應(yīng)的返回時(shí)刻進(jìn)行比較;
[0029]計(jì)數(shù)模塊,用于根據(jù)比較結(jié)果確定所述當(dāng)前1和所述前一個(gè)1是否為連續(xù)壓隊(duì)10,如果是,則在統(tǒng)計(jì)硬盤的超時(shí)1個(gè)數(shù)時(shí)將所述當(dāng)前1和所述前一個(gè)1合并為一個(gè)超時(shí)1進(jìn)行計(jì)數(shù),其中,所述連續(xù)壓隊(duì)1為連續(xù)下發(fā)的1命令。
[0030]結(jié)合第二方面,在第一種可能的實(shí)現(xiàn)方式中,所述比較模塊根據(jù)比較結(jié)果確定所述當(dāng)前1和所述前一個(gè)1是否為連續(xù)壓隊(duì)1包括:
[0031]當(dāng)比較結(jié)果為所述當(dāng)前1對(duì)應(yīng)的下發(fā)時(shí)刻早于所述前一個(gè)1對(duì)應(yīng)的返回時(shí)刻時(shí),則確定所述當(dāng)前1和所述前一個(gè)1為連續(xù)壓隊(duì)10。
[0032]結(jié)合第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式中的任意一種,在第二種可能的實(shí)現(xiàn)方式中,所述比較模塊還用于在統(tǒng)計(jì)硬盤的超時(shí)1個(gè)數(shù)時(shí)將所述當(dāng)前1和所述前一個(gè)1作為一個(gè)超時(shí)1進(jìn)行計(jì)數(shù)之前,在所述當(dāng)前1的超時(shí)門限上加上一個(gè)預(yù)設(shè)的合理時(shí)延得到新的超時(shí)門限;確定所述當(dāng)前1對(duì)應(yīng)的返回時(shí)刻在所述新的超時(shí)門限所對(duì)應(yīng)的范圍內(nèi)。
[0033]結(jié)合第二方面的第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,該裝置還包括:
[0034]合理時(shí)延計(jì)算模塊,用于從所述當(dāng)前1所屬隊(duì)列的隊(duì)列深度或硬盤利用率的測(cè)試數(shù)據(jù)中選取N個(gè)值;將所述N個(gè)值與對(duì)應(yīng)的N個(gè)1平均服務(wù)時(shí)間進(jìn)行公式化擬合,求得擬合方程,利用所述擬合方程計(jì)算所述合理時(shí)延。
[0035]結(jié)合第二方面或第二方面第一種至第三種可能的實(shí)現(xiàn)方式中的任意一種,在第四種可能的實(shí)現(xiàn)方式中,該裝置還包括:
[0036]動(dòng)態(tài)判斷模塊,用于當(dāng)判斷當(dāng)前1命令處理超時(shí),則獲取當(dāng)前系統(tǒng)時(shí)間;以所述系統(tǒng)時(shí)間為起點(diǎn),獲取所述系統(tǒng)時(shí)間之前的設(shè)定時(shí)間段內(nèi)的超時(shí)1個(gè)數(shù);檢測(cè)所述超時(shí)1個(gè)數(shù)是否大于預(yù)設(shè)閾值,如果是,則判定硬盤即將失效,對(duì)所述硬盤中的數(shù)據(jù)進(jìn)行預(yù)拷貝。
[0037]上述技術(shù)方案中的一個(gè)或兩個(gè),至少具有如下技術(shù)效果:
[0038]本發(fā)明實(shí)施例所提供的方法和裝置,當(dāng)出現(xiàn)1超時(shí),則可進(jìn)一步的通過記錄的1命令的下發(fā)時(shí)刻和返回時(shí)刻,確定當(dāng)前超時(shí)的1和前一個(gè)1是否為連續(xù)壓隊(duì)的10,如果是連續(xù)壓隊(duì)的10,且前一個(gè)1也是超時(shí)的,則可以在統(tǒng)計(jì)硬盤的超時(shí)1的個(gè)數(shù)時(shí),將兩個(gè)超時(shí)1累計(jì)為一個(gè)。避免了連續(xù)壓隊(duì)1中的第一個(gè)1超時(shí)影響后續(xù)1超時(shí)計(jì)算的問題。
【附圖說明】
[0039]圖1為本發(fā)明實(shí)施例一提供的一種硬盤1超時(shí)控制方法的流程示意圖;
[0040]圖2為本發(fā)明實(shí)施例一中時(shí)間窗口移動(dòng)前的示意圖;
[0041]圖3為本發(fā)明實(shí)施例一中時(shí)間窗口移動(dòng)后的示意圖;
[0042]圖4為本發(fā)明實(shí)施例二提供的一種硬盤1超時(shí)控制方法的流程示意圖;
[0043]圖5為本發(fā)明實(shí)施例提供一種硬盤1超時(shí)控制裝置的結(jié)構(gòu)示意圖;
[0044]圖6為本發(fā)明實(shí)施例提供一種硬盤的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0045]為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0046]下面結(jié)合說明書附圖對(duì)本發(fā)明實(shí)施例作進(jìn)一步詳細(xì)描述。
[0047]實(shí)施例一,本發(fā)明實(shí)施例提供一種硬盤1超時(shí)控制方法,下面結(jié)合說明書附圖對(duì)本發(fā)明的【具體實(shí)施方式】進(jìn)行詳細(xì)說明(方法流程如圖1所示):
[0048]步驟101,獲取每個(gè)1命令的下發(fā)時(shí)刻和接收每個(gè)1命令的反饋信息的返回時(shí)刻;
[0049]在具體的實(shí)現(xiàn)過程中,時(shí)刻值的獲取可以基于全局變量jiffies生成,在很多系統(tǒng)中,jiffies用來記錄自系統(tǒng)啟動(dòng)以來產(chǎn)生的節(jié)拍的總數(shù)。啟動(dòng)時(shí),內(nèi)核將該變量初始化為0,此后,每次時(shí)鐘中斷處理程序都會(huì)增加該變量的值。所以在處理1命令時(shí),可以記錄下發(fā)1命令時(shí)的jiffies (或稱為下發(fā)jiffies,即下發(fā)時(shí)刻)和接收到反饋信息時(shí)的jiffies (或稱為返回jiffies,即返回時(shí)刻)。
[005