一種ssd復(fù)位方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及存儲(chǔ)技術(shù)領(lǐng)域,特別涉及一種SSD復(fù)位方法及裝置。
【背景技術(shù)】
[0002] RAID (Redundant Array of Independent Disks,獨(dú)立硬盤(pán)冗余陣列)是一種數(shù)據(jù) 分布技術(shù),該技術(shù)將業(yè)務(wù)數(shù)據(jù)分布到不同的硬盤(pán)驅(qū)動(dòng)器上,同時(shí)在這些分布存儲(chǔ)的業(yè)務(wù)數(shù) 據(jù)中加入冗余數(shù)據(jù),使得當(dāng)一定數(shù)量的硬盤(pán)驅(qū)動(dòng)器出現(xiàn)故障時(shí),仍然可以通過(guò)剩余硬盤(pán)驅(qū) 動(dòng)器上的數(shù)據(jù),將丟失的數(shù)據(jù)通過(guò)數(shù)學(xué)計(jì)算恢復(fù)回來(lái)。
[0003] 假設(shè)單塊硬盤(pán)驅(qū)動(dòng)器的年均失效率為AFR,這是一個(gè)介于0和1之間的小數(shù),那么 兩塊硬盤(pán)驅(qū)動(dòng)器同時(shí)出現(xiàn)故障的概率是AFR X AFR,三塊硬盤(pán)驅(qū)動(dòng)器同時(shí)出現(xiàn)故障的概率是 AFRXAFRXAFR,以此類推??梢?jiàn),硬盤(pán)驅(qū)動(dòng)器的數(shù)量越多,那么這些硬盤(pán)驅(qū)動(dòng)器同時(shí)出現(xiàn)故 障的概率就越低。
[0004] RAID正是利用了"多塊硬盤(pán)驅(qū)動(dòng)器同時(shí)出現(xiàn)故障的概率極低"的特點(diǎn),將數(shù)據(jù)分散 部署到多塊不同的硬盤(pán)驅(qū)動(dòng)器上,從而避免單塊或者少數(shù)幾塊硬盤(pán)驅(qū)動(dòng)器失效導(dǎo)致數(shù)據(jù)丟 失。由此可以看出,避免"同時(shí)失效",是RAID能夠提升可靠性的關(guān)鍵之一。
[0005] -般情況下,構(gòu)成RAID的硬盤(pán)驅(qū)動(dòng)器自身就是一個(gè)嵌入式系統(tǒng),例如SSD (Solid State Device/Solid State Drive,固態(tài)硬盤(pán)),每個(gè)SSD中植入的代碼量都較大,而當(dāng)軟件 規(guī)模達(dá)到一定程度以后,軟件系統(tǒng)一般會(huì)用到定時(shí)器、計(jì)數(shù)器之類的手段,來(lái)處理一些較為 復(fù)雜的、持續(xù)周期較長(zhǎng)的業(yè)務(wù)邏輯?;谶@種機(jī)制的業(yè)務(wù)邏輯,如果代碼中隱含了與計(jì)數(shù)器 溢出、除零等相關(guān)的缺陷,那么這種缺陷,因?yàn)樾枰鹊捷^長(zhǎng)的運(yùn)行時(shí)間才會(huì)出現(xiàn),所以較 難在開(kāi)發(fā)階段被發(fā)現(xiàn),同時(shí),這樣的缺陷,一般到了某個(gè)固定的時(shí)間點(diǎn),出現(xiàn)的概率較大。
[0006] 那么,根據(jù)以上的描述想象一個(gè)場(chǎng)景:
[0007] 構(gòu)成RAID的各SSD內(nèi)的代碼,存在某個(gè)計(jì)數(shù)器缺陷,該缺陷在開(kāi)發(fā)測(cè)試階段并未 被發(fā)現(xiàn)。
[0008] 各SSD內(nèi)的這個(gè)計(jì)數(shù)器缺陷,會(huì)在SSD上電運(yùn)行了 100天后,導(dǎo)致除零異常。
[0009] 組成一個(gè)RAID的各SSD -般是同時(shí)開(kāi)始運(yùn)行的,那么該RAID在運(yùn)行了 100天后, 所有的SSD由于計(jì)數(shù)器缺陷導(dǎo)致除零異常,可能會(huì)因?yàn)橥粋€(gè)RAID組內(nèi)的多塊SSD同時(shí)失 效而導(dǎo)致存儲(chǔ)業(yè)務(wù)中斷,甚至可能會(huì)導(dǎo)致數(shù)據(jù)丟失。
[0010] 通過(guò)對(duì)這個(gè)場(chǎng)景進(jìn)行簡(jiǎn)單分析可以發(fā)現(xiàn),導(dǎo)致存儲(chǔ)業(yè)務(wù)中斷的根因是:RAID機(jī)制 所基于的硬盤(pán)驅(qū)動(dòng)器"同時(shí)失效概率極低"的這個(gè)前提條件,被SSD內(nèi)在的計(jì)數(shù)器相關(guān)的軟 件缺陷所打破?;赟SD的RAID組,多塊SSD "同時(shí)失效概率極低"的前提條件,在某些情 況下并不存在,這進(jìn)一步導(dǎo)致在這些場(chǎng)景下,RAID的可靠性并不高。
【發(fā)明內(nèi)容】
[0011] 本發(fā)明實(shí)施例提供一種SSD復(fù)位方法及裝置,用于解決RAID的可靠性不高的技術(shù) 問(wèn)題。
[0012] 本發(fā)明的第一方面,提供一種SSD復(fù)位方法,包括:
[0013] 將RAID中包括的第i個(gè)SSD作為基準(zhǔn)SSD,按照對(duì)應(yīng)的復(fù)位時(shí)刻從前到后的順序, 比較所述第i個(gè)SSD的復(fù)位時(shí)刻與第i+Ι個(gè)SSD的復(fù)位時(shí)刻之間的時(shí)間差是否大于等于預(yù) 設(shè)時(shí)差閾值;
[0014] 若小于,則將所述第i+Ι個(gè)SSD標(biāo)記為需要復(fù)位的SSD,并繼續(xù)按照復(fù)位時(shí)刻從前 到后的順序,依次比較所述第i個(gè)SSD的復(fù)位時(shí)刻與復(fù)位時(shí)刻位于所述第i+Ι個(gè)SSD之后 的其他SSD的復(fù)位時(shí)刻之間的時(shí)間差是否大于等于所述預(yù)設(shè)時(shí)差閾值;
[0015] 若所述第i個(gè)SSD的復(fù)位時(shí)刻與所述第i+Ι個(gè)SSD的復(fù)位時(shí)刻之間的時(shí)間差大于 等于所述預(yù)設(shè)時(shí)差閾值,則令所述第i+Ι個(gè)SSD替換所述第i個(gè)SSD作為新的基準(zhǔn)SSD,并 繼續(xù)比較所述第i+Ι個(gè)SSD的復(fù)位時(shí)刻與復(fù)位時(shí)刻位于所述第i+Ι個(gè)SSD之后的其他SSD 的復(fù)位時(shí)刻之間的時(shí)間差是否大于等于所述預(yù)設(shè)時(shí)差閾值;
[0016] 在將所述RAID中包括的復(fù)位時(shí)刻位于所述第i個(gè)SSD之后的各SSD均比較完畢 后,控制其中標(biāo)記為需要復(fù)位的SSD分別進(jìn)行復(fù)位。
[0017] 結(jié)合第一方面,在第一方面的第一種可能的實(shí)現(xiàn)方式中,在將所述RAID中包括的 復(fù)位時(shí)刻位于所述第i個(gè)SSD之后的各SSD均比較完畢后,控制其中標(biāo)記為需要復(fù)位的SSD 分別進(jìn)行復(fù)位,包括:
[0018] 在將所述RAID中包括的復(fù)位時(shí)刻位于所述第i個(gè)SSD之后的各SSD均比較完畢 后,判斷當(dāng)前時(shí)刻與參與比較的SSD中的特定SSD的復(fù)位時(shí)刻之間的時(shí)間差是否大于等于 所述預(yù)設(shè)時(shí)差閾值;其中,所述特定SSD為:按照復(fù)位時(shí)刻從前到后的順序,參與比較的SSD 中的最后一個(gè)未被標(biāo)記為需要復(fù)位的SSD ;
[0019] 若大于等于,則控制其中標(biāo)記為需要復(fù)位的SSD分別進(jìn)行復(fù)位。
[0020] 結(jié)合第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式,在第一方面的第二種可能的 實(shí)現(xiàn)方式中,控制其中標(biāo)記為需要復(fù)位的SSD分別進(jìn)行復(fù)位,包括:
[0021] 在對(duì)標(biāo)記為需要復(fù)位的SSD中的任一個(gè)SSD進(jìn)行復(fù)位后,每隔預(yù)設(shè)時(shí)間間隔對(duì)需 要復(fù)位的SSD中的剩余的任一個(gè)SSD進(jìn)行復(fù)位,直到將需要復(fù)位的SSD均進(jìn)行復(fù)位;其中, 所述預(yù)設(shè)時(shí)間間隔大于等于所述預(yù)設(shè)時(shí)差閾值。
[0022] 結(jié)合第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式或第二種可能的實(shí)現(xiàn)方式,在 第一方面的第三種可能的實(shí)現(xiàn)方式中,控制其中標(biāo)記為需要復(fù)位的SSD分別進(jìn)行復(fù)位,包 括:
[0023] 利用SSD自帶的狀態(tài)復(fù)位功能,控制需要復(fù)位的SSD分別進(jìn)行自我復(fù)位;或
[0024] 通過(guò)所述RAID控制需要復(fù)位的SSD分別進(jìn)行復(fù)位。
[0025] 結(jié)合第一方面或第一方面的第一種可能的實(shí)現(xiàn)方式或第二種可能的實(shí)現(xiàn)方式或 第三種可能的實(shí)現(xiàn)方式,在第一方面的第四種可能的實(shí)現(xiàn)方式中,所述方法還包括:實(shí)時(shí)、 定時(shí)或周期性檢測(cè)所述RAID中包括的各SSD的復(fù)位時(shí)刻,并進(jìn)行記錄。
[0026] 本發(fā)明的第二方面,提供一種SSD復(fù)位裝置,包括:
[0027] 第一比較模塊,用于將RAID中包括的第i個(gè)SSD作為基準(zhǔn)SSD,按照對(duì)應(yīng)的復(fù)位時(shí) 刻從前到后的順序,比較所述第i個(gè)SSD的復(fù)位時(shí)刻與第i+Ι個(gè)SSD的復(fù)位時(shí)刻之間的時(shí) 間差是否大于等于預(yù)設(shè)時(shí)差閾值;
[0028] 第二比較模塊,用于若小于,則將所述第i+Ι個(gè)SSD標(biāo)記為需要復(fù)位的SSD,并繼續(xù) 按照復(fù)位時(shí)刻從前到后的順序,依次比較所述第i個(gè)SSD的復(fù)位時(shí)刻與復(fù)位時(shí)刻位于所述 第i+Ι個(gè)SSD之后的其他SSD的復(fù)位時(shí)刻之間的時(shí)間差是否大于等于所述預(yù)設(shè)時(shí)差閾值;
[0029] 第三比較模塊,用于若所述第i個(gè)SSD的復(fù)位時(shí)刻與所述第i+Ι個(gè)SSD的復(fù)位時(shí) 刻之間的時(shí)間差大于等于所述預(yù)設(shè)時(shí)差閾值,則令所述第i+Ι個(gè)SSD替換所述第i個(gè)SSD 作為新的基準(zhǔn)SSD,并繼續(xù)比較所述第i+Ι個(gè)SSD的復(fù)位時(shí)刻與復(fù)位時(shí)刻位于所述第i+Ι個(gè) SSD之后的其他SSD的復(fù)位時(shí)刻之間的時(shí)間差是否大于等于所述預(yù)設(shè)時(shí)差閾值;
[0030] 控制模塊,用于在將所述RAID中包括的復(fù)位時(shí)刻位于所述第i個(gè)SSD之后的各 SSD均比較完畢后,控制其中標(biāo)記為需要復(fù)位的SSD分別進(jìn)行復(fù)位。
[0031] 結(jié)合第二方面,在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述控制模塊具體用 于:
[0032] 在將所述RAID中包括的復(fù)位時(shí)刻位于所述第i個(gè)SSD之后的各SSD均比較完畢 后,判斷當(dāng)前時(shí)刻與參與比較的SSD中的特定SSD的復(fù)位時(shí)刻之間的時(shí)間差是否大于等于 所述預(yù)設(shè)時(shí)差閾值;其中,所述特定SSD為:按照復(fù)位時(shí)刻從前到后的順序,參與比較的SSD 中的最后一個(gè)未被標(biāo)記為需要復(fù)位的SSD ;
[0033] 若大于等于,則控制其中標(biāo)記為需要復(fù)位的SSD分別進(jìn)行復(fù)位。
[0034] 結(jié)合第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式,在第二方面的第二種可能的 實(shí)現(xiàn)方式中,所述控制模塊用于控制其中標(biāo)記為需要復(fù)位的SSD分別進(jìn)行復(fù)位,具體為:
[0035] 在對(duì)標(biāo)記為需要復(fù)位的SSD中的任一個(gè)SSD進(jìn)行復(fù)位后,每隔預(yù)設(shè)時(shí)間間隔對(duì)需 要復(fù)位的SSD中的剩余的任一個(gè)SSD進(jìn)行復(fù)位,直到將需要復(fù)位的SSD均進(jìn)行復(fù)位;其中, 所述預(yù)設(shè)時(shí)間間隔大于等于所述預(yù)設(shè)時(shí)差閾值。
[0036] 結(jié)合第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式或第二種可能的實(shí)現(xiàn)方式,在 第二方面的第三種可能的實(shí)現(xiàn)方式中,所述控制模塊用于控制其中標(biāo)記為需要復(fù)位的SSD 分別進(jìn)行復(fù)位,包括:
[0037] 利用SSD自帶的狀態(tài)復(fù)位功能,控制需要復(fù)位的SSD分別進(jìn)行自我復(fù)位;或
[0038] 通過(guò)所述RAID控制需要復(fù)位的SSD分別進(jìn)行復(fù)位。
[0039] 結(jié)合第二方面或第二方面的第一種可能的實(shí)現(xiàn)方式或第二種可能的實(shí)現(xiàn)方式或 第三種可能的實(shí)現(xiàn)方式,在第二方面的第四種可能的實(shí)現(xiàn)方式中,所述裝置還包括檢測(cè)模 塊,用于:實(shí)時(shí)、定時(shí)或周期性檢測(cè)所述RAID中包括的各SSD的復(fù)位時(shí)刻,并進(jìn)行記錄。
[0040] 本發(fā)明的第三方面,提供一種SSD復(fù)位裝置,包括連接到同一總線的存儲(chǔ)器和處 理器;
[0041] 所述存儲(chǔ)器,用于存儲(chǔ)指令;
[0042] 所述處理器,用于執(zhí)行所述指令,將獨(dú)立磁盤(pán)冗余陣列RAID中包括的第i個(gè)SSD 作為基準(zhǔn)SSD,按照對(duì)應(yīng)的復(fù)位時(shí)刻從前到后的順序,比較所述第i個(gè)SSD的復(fù)位時(shí)刻與第 i+Ι個(gè)SSD的復(fù)位時(shí)刻之間的時(shí)間差是否大于等于預(yù)設(shè)時(shí)差閾值;若小于,則將所述第i+1 個(gè)SSD標(biāo)記為需要復(fù)位的SSD,并繼續(xù)按照復(fù)位時(shí)刻從前到后的順序,依次比較所述第i個(gè) SSD的復(fù)位時(shí)刻與復(fù)位時(shí)刻位于所述第i+Ι個(gè)SSD之后的其他SSD的復(fù)位時(shí)刻之間的時(shí)間 差是否大于等于所述預(yù)設(shè)時(shí)差閾值;若所述第i個(gè)SSD的復(fù)位時(shí)刻與所述第i+Ι個(gè)SSD的 復(fù)位時(shí)刻之間的時(shí)間差大于等于所述預(yù)設(shè)時(shí)差閾值,則令所述第i+Ι個(gè)SSD替換所述第i