本發(fā)明是有關(guān)于一種判斷異常硬盤之裝設(shè)位置的方法,特別是指一種用于叢集式儲(chǔ)存系統(tǒng)的判斷異常硬盤之裝設(shè)位置的方法。
背景技術(shù):
:現(xiàn)有的叢集式儲(chǔ)存系統(tǒng)包含一主機(jī)及與至少一連接該主機(jī)的儲(chǔ)存設(shè)備。該主機(jī)安裝有l(wèi)inux作業(yè)系統(tǒng)來操作該主機(jī)本身與該儲(chǔ)存設(shè)備。該儲(chǔ)存設(shè)備例如為簡單磁碟綁定磁碟服務(wù)器(justabunchofdisks,jbod),并包括多個(gè)分別連接多個(gè)硬盤的硬盤擴(kuò)充界面(expander),及多個(gè)分別用于裝設(shè)該等硬盤的裝置槽;其中,在linux平臺(tái)下,每一硬盤對(duì)應(yīng)至少一邏輯裝置名稱(logicaldevicename)。通常,該儲(chǔ)存設(shè)備還包括多個(gè)分別對(duì)應(yīng)該等裝置槽的警示燈,當(dāng)該儲(chǔ)存設(shè)備本身的韌體偵測到一異常硬盤時(shí),會(huì)控制該異常硬盤對(duì)應(yīng)的警示燈發(fā)亮,以提示系統(tǒng)管理人員該異常硬盤被裝設(shè)的裝置槽為何者,便利系統(tǒng)管理人員從該儲(chǔ)存設(shè)備中取出該異常硬盤。然而,僅經(jīng)由該儲(chǔ)存設(shè)備本身的韌體來偵測異常硬盤是不足的,因?yàn)樵搩?chǔ)存設(shè)備本身的韌體對(duì)于異常硬盤的判斷標(biāo)準(zhǔn)是相當(dāng)嚴(yán)格的,通常是硬盤無法運(yùn)作時(shí)才會(huì)被該儲(chǔ)存設(shè)備本身的韌體判斷為異常硬盤。除了通過該儲(chǔ)存設(shè)備本身的韌體來偵測異常硬盤之外,目前來說,可利用該主機(jī)上的linux作業(yè)系統(tǒng),或在該主機(jī)上執(zhí)行第三方程序來偵測該儲(chǔ)存設(shè)備中的硬盤是否有異于該儲(chǔ)存設(shè)備本身的韌體所能偵測到的異常狀況的其他異常狀況,例如執(zhí)行該第三方程序來進(jìn)行硬盤的讀寫測試,并判定無法通過讀寫測試的硬盤為異常硬盤。然而,目前來說,上述的linux作業(yè)系統(tǒng)或第三方程序偵測到異常硬盤時(shí),僅會(huì)輸出該異常硬盤對(duì)應(yīng)的邏輯裝置名稱,該系統(tǒng)管理人員并無法得知裝設(shè)該異常硬盤的裝置槽為何者,因而無法直接進(jìn)行維修或更換。技術(shù)實(shí)現(xiàn)要素:因此,本發(fā)明之目的,即在提供一種用于叢集式儲(chǔ)存系統(tǒng)的判斷異常硬盤之裝設(shè)位置的方法。于是,本發(fā)明用于叢集式儲(chǔ)存系統(tǒng)的判斷異常硬盤之裝設(shè)位置的方法由該叢集式儲(chǔ)存系統(tǒng)執(zhí)行。該叢集式儲(chǔ)存系統(tǒng)包含一主機(jī)及與至少一連接該主機(jī)的儲(chǔ)存設(shè)備。該主機(jī)安裝有一用于操作該主機(jī)與該儲(chǔ)存設(shè)備的作業(yè)系統(tǒng)。該儲(chǔ)存設(shè)備包括多個(gè)硬盤擴(kuò)充界面、多個(gè)分別具有至少一惟一地址的硬盤,及多個(gè)分別用于裝設(shè)該等硬盤并分別對(duì)應(yīng)一槽編號(hào)的裝置槽。每一硬盤擴(kuò)充界面連接多個(gè)硬盤,并在該作業(yè)系統(tǒng)中對(duì)應(yīng)一通用裝置名稱,且所有硬盤擴(kuò)充界面在該作業(yè)系統(tǒng)中對(duì)應(yīng)同一個(gè)邏輯裝置名稱。每一硬盤在該作業(yè)系統(tǒng)中對(duì)應(yīng)至少一邏輯裝置名稱。該用于叢集式儲(chǔ)存系統(tǒng)的判斷異常硬盤之裝設(shè)位置的方法包含一步驟(a)、一步驟(b)、一步驟(c)、一步驟(d)、一步驟(e),及一步驟(f)。該步驟(a)是該主機(jī)根據(jù)該等硬盤擴(kuò)充界面的該同一個(gè)邏輯裝置名稱,執(zhí)行一相關(guān)于該作業(yè)系統(tǒng)的第一指令,以獲得每一硬盤擴(kuò)充界面所對(duì)應(yīng)的通用裝置名稱。該步驟(b)是該主機(jī)針對(duì)每一硬盤擴(kuò)充界面,根據(jù)該硬盤擴(kuò)充界面所對(duì)應(yīng)的通用裝置名稱,執(zhí)行一相關(guān)于該作業(yè)系統(tǒng)的第二指令,以獲得該硬盤擴(kuò)充界面所連接的每一硬盤的地址與對(duì)應(yīng)該地址的槽編號(hào)。該步驟(c)是該主機(jī)執(zhí)行該第一指令,以獲得每一硬盤所對(duì)應(yīng)的邏輯裝置名稱。該步驟(d)是該主機(jī)針對(duì)每一硬盤,根據(jù)該硬盤所對(duì)應(yīng)的邏輯裝置名稱,執(zhí)行一相關(guān)于該作業(yè)系統(tǒng)的第三指令,以獲得該硬盤的地址。該步驟(e)是該主機(jī)根據(jù)該等硬盤擴(kuò)充界面的通用裝置名稱、該等硬盤的邏輯裝置名稱、地址,及該等地址對(duì)應(yīng)的該等槽編號(hào),產(chǎn)生一硬盤對(duì)應(yīng)信息,其中該硬盤對(duì)應(yīng)信息包含每一硬盤擴(kuò)充界面所對(duì)應(yīng)的通用裝置名稱、該硬盤擴(kuò)充界面所連接的每一硬盤所對(duì)應(yīng)的邏輯裝置名稱,及該硬盤邏輯裝置名稱所對(duì)應(yīng)的槽編號(hào)。該步驟(f)是當(dāng)該主機(jī)偵測到一異常硬盤時(shí),該主機(jī)根據(jù)該異常硬盤對(duì)應(yīng)的邏輯裝置名稱與該硬盤對(duì)應(yīng)信息判斷出連接該異常硬盤的硬盤擴(kuò)充界面對(duì)應(yīng)的通用裝置名稱及裝設(shè)有該異常硬盤的裝置槽對(duì)應(yīng)的槽編號(hào)。本發(fā)明之功效在于:能根據(jù)異常硬盤對(duì)應(yīng)的邏輯裝置名稱快速地判斷出連接該異常硬盤的硬盤擴(kuò)充界面對(duì)應(yīng)的通用裝置名稱及裝設(shè)有該異常硬盤的裝置槽對(duì)應(yīng)的槽編號(hào)?!靖綀D說明】圖1是一方塊圖,說明執(zhí)行本發(fā)明用于叢集式儲(chǔ)存系統(tǒng)的判斷異常硬盤之裝設(shè)位置的方法的一實(shí)施例的一叢集式儲(chǔ)存系統(tǒng);及圖2是一流程圖,說明該實(shí)施例的步驟流程?!揪唧w實(shí)施方式】參閱圖1,本發(fā)明用于叢集式儲(chǔ)存系統(tǒng)的判斷異常硬盤之裝設(shè)位置的方法的一實(shí)施例是由圖1所示的叢集式儲(chǔ)存系統(tǒng)執(zhí)行。該叢集式儲(chǔ)存系統(tǒng)包含一主機(jī)與二個(gè)儲(chǔ)存設(shè)備。該主機(jī)為一計(jì)算機(jī),并安裝有l(wèi)inux作業(yè)系統(tǒng)來操作該主機(jī)本身與該等儲(chǔ)存設(shè)備。每一儲(chǔ)存設(shè)備均為簡單磁碟綁定磁碟服務(wù)器(jbod),并包括二個(gè)硬盤擴(kuò)充界面13(expander)、二十四個(gè)硬盤、二十四個(gè)分別用于裝設(shè)該等硬盤并分別對(duì)應(yīng)一槽編號(hào)的裝置槽11,二十四個(gè)分別對(duì)應(yīng)該等裝置槽11的警示燈(圖未示)。每一裝置槽11對(duì)應(yīng)的警示燈受控于該裝置槽11所裝設(shè)的硬盤所連接的硬盤擴(kuò)充界面13;且每一警示燈設(shè)置于其所對(duì)應(yīng)的裝置槽11的鄰近處,以使得當(dāng)該警示燈發(fā)亮?xí)r,能通過該警示燈指出對(duì)應(yīng)該警示燈的裝置槽11的位置。每一硬盤擴(kuò)充界面13在linux中對(duì)應(yīng)一通用裝置名稱(genericdevicename);且所有硬盤擴(kuò)充界面13在linux中對(duì)應(yīng)相同的邏輯裝置名稱(logicaldevicename),也就是「13」。特別地,每一硬盤均具有二個(gè)埠(port),并通過該二個(gè)埠分別連接所屬儲(chǔ)存設(shè)備的二個(gè)硬盤擴(kuò)充界面13,所以每一硬盤具有二個(gè)不同的地址,在此為序列式小型計(jì)算機(jī)系統(tǒng)界面(serialattachedscsi,sas)地址,且該等硬盤的所有sas地址均不相同;此外,每一硬盤在linux中對(duì)應(yīng)二個(gè)通用裝置名稱與二個(gè)邏輯裝置名稱。例如,如圖1所示,該等硬盤擴(kuò)充界面13的通用裝置名稱分別為「sg24」、「sg49」、「sg74」,及「sg99」;「sd1」與「sd26」為對(duì)應(yīng)至同一顆硬盤的邏輯裝置名稱、「sd0」與「sd25」為對(duì)應(yīng)至同一顆硬盤的邏輯裝置名稱等等。此外,雖然該儲(chǔ)存設(shè)備中的該等裝置槽11對(duì)應(yīng)的該等槽編號(hào)通常是依序被編號(hào)的,但裝設(shè)于該等裝置槽11的該等硬盤對(duì)應(yīng)的該等邏輯裝置名稱并非一定與該等槽編號(hào)有依序?qū)?yīng)的關(guān)系,所以并無法由硬盤的邏輯裝置名稱直接對(duì)應(yīng)到槽編號(hào)。如圖1所示,該主機(jī)透過一主機(jī)總線配接器(hostbusadapter,hba)以序列式小型計(jì)算機(jī)系統(tǒng)界面連接其中一儲(chǔ)存設(shè)備的二個(gè)硬盤擴(kuò)充界面13,該二個(gè)硬盤擴(kuò)充界面13再以序列式小型計(jì)算機(jī)系統(tǒng)界面分別連接另一儲(chǔ)存設(shè)備的二個(gè)硬盤擴(kuò)充界面13。然而,在此要特別說明的是,該主機(jī)與該等儲(chǔ)存設(shè)備的連接方式、儲(chǔ)存設(shè)備的數(shù)量、儲(chǔ)存設(shè)備中硬盤擴(kuò)充界面13與硬盤的數(shù)量并不以上述的實(shí)施方式為限,本發(fā)明的用于叢集式儲(chǔ)存系統(tǒng)的判斷異常硬盤之裝設(shè)位置的方法適用于現(xiàn)有的各種基于linux的叢集式儲(chǔ)存系統(tǒng)。參閱圖2,以下詳述本發(fā)明用于叢集式儲(chǔ)存系統(tǒng)的判斷異常硬盤之裝設(shè)位置的方法的步驟流程。首先,在步驟91,該主機(jī)根據(jù)該等儲(chǔ)存設(shè)備的該等硬盤擴(kuò)充界面13的該相同的邏輯裝置名稱(「13」),執(zhí)行一相關(guān)于linux的第一指令,以獲得每一硬盤擴(kuò)充界面13所對(duì)應(yīng)的通用裝置名稱。在本實(shí)施例中,該第一指令為sg_map,且該主機(jī)通過在linux上執(zhí)行「sg_map-x|awk'$6==13{print}'」,能獲得下列表一所列的各個(gè)硬盤擴(kuò)充界面13所對(duì)應(yīng)的通用裝置名稱。其中,需特別說明的是,表一中所列通用裝置名稱的命名方式僅為在本說明書中方便說明而使用,并非在linux中實(shí)際的命名方式。表一硬盤擴(kuò)充界面對(duì)應(yīng)的通用裝置名稱硬盤擴(kuò)充界面對(duì)應(yīng)的邏輯裝置名稱sg2413sg4913sg7413sg9913接著,在步驟92,該主機(jī)針對(duì)每一硬盤擴(kuò)充界面13,根據(jù)該硬盤擴(kuò)充界面13所對(duì)應(yīng)的通用裝置名稱,執(zhí)行一相關(guān)于linux的第二指令,以獲得該硬盤擴(kuò)充界面13所連接的每一硬盤的sas地址與對(duì)應(yīng)該sas地址的槽編號(hào)。在本實(shí)施例中,該第二指令為sg_ses,且如下列表二所示,該主機(jī)通過在linux上執(zhí)行「sg_ses-p0x0asg24」而獲得對(duì)應(yīng)通用裝置名稱「sg24」的硬盤擴(kuò)充界面13所連接的每一硬盤的sas地址與對(duì)應(yīng)該sas地址的槽編號(hào),類似地,該主機(jī)通過在linux上分別執(zhí)行「sg_ses-p0x0asg49」、「sg_ses-p0x0asg74」、「sg_ses-p0x0asg99」,能獲得分別對(duì)應(yīng)通用裝置名稱「sg49」、「sg74」、「sg99」的硬盤sas地址與硬盤sas地址對(duì)應(yīng)的槽編號(hào)。其中,因?yàn)槊恳挥脖P經(jīng)由二個(gè)埠分別連接二個(gè)硬盤擴(kuò)充界面13,所以表二共列了九十六個(gè)硬盤sas地址,每一硬盤擴(kuò)充界面13對(duì)應(yīng)二十四個(gè)硬盤sas地址。此外,需特別說明的是,表二中所列通用裝置名稱、硬盤sas地址,及槽編號(hào)的命名方式僅為在本說明書中方便說明而使用,并非在linux中實(shí)際的命名方式。表二硬盤擴(kuò)充界面對(duì)應(yīng)的通用裝置名稱硬盤擴(kuò)充界面連接的硬盤的sas地址硬盤sas地址對(duì)應(yīng)的槽編號(hào)sg24xx0s1sg24xx1s0sg24xx2s2………sg24xx23s23sg49xx24s1sg49xx25s0sg49xx26s2………sg49xx47s23sg74xx48s1sg74xx49s0sg74xx50s2………sg74xx71s23sg99xx72s1sg99xx73s0sg99xx74s2………sg99xx95s23接著,在步驟93,該主機(jī)執(zhí)行該第一指令,以獲得每一硬盤所對(duì)應(yīng)的邏輯裝置名稱。在本實(shí)施例中,該主機(jī)通過在linux上執(zhí)行「sg_map-x」,能獲得下列表三所列的各個(gè)硬盤所對(duì)應(yīng)的通用裝置名稱與邏輯裝置名稱。其中,因?yàn)槊恳挥脖P經(jīng)由二個(gè)埠分別連接二個(gè)硬盤擴(kuò)充界面13,所以每一硬盤對(duì)應(yīng)二個(gè)通用裝置名稱與二個(gè)邏輯裝置名稱,例如,再參閱圖1,對(duì)應(yīng)邏輯裝置名稱「sd0」的硬盤與對(duì)應(yīng)邏輯裝置名稱「sd25」的硬盤為同一個(gè)硬盤、對(duì)應(yīng)邏輯裝置名稱「sd1」的硬盤與對(duì)應(yīng)邏輯裝置名稱「sd26」的硬盤為同一個(gè)硬盤等等。此外,需特別說明的是,表三中所列的通用裝置名稱與邏輯裝置名稱的命名方式僅為在本說明書中方便說明而使用,并非linux中實(shí)際的命名方式。表三硬盤對(duì)應(yīng)的通用裝置名稱硬盤對(duì)應(yīng)的邏輯裝置名稱sg0sd0sg1sd1sg2sd2……sg23sd23sg25sd25sg26sd26sg27sd27……sg48sd48sg50sd50sg51sd51sg52sd52……sg73sd73sg75sd75sg76sd76sg77sd77……sg98sd98接著,在步驟94,該主機(jī)針對(duì)每一硬盤,根據(jù)該硬盤所對(duì)應(yīng)的邏輯裝置名稱,執(zhí)行一相關(guān)于linux的第三指令,以獲得該硬盤的sas地址。在本實(shí)施例中,該第三指令為sg_vpd。如下列表四所示,該主機(jī)通過在linux上執(zhí)行「sg_vpd-pdi_port-qsd0」而獲得對(duì)應(yīng)硬盤邏輯裝置名稱「sd0」的硬盤sas地址;類似地,該主機(jī)可通過執(zhí)行sg_vpd而獲得其他硬盤邏輯裝置名稱對(duì)應(yīng)的硬盤sas地址。表四硬盤對(duì)應(yīng)的邏輯裝置名稱硬盤對(duì)應(yīng)的sas地址sd0xx0sd1xx1sd2xx2……sd23xx23sd25xx24sd26xx25sd27xx26……sd48xx47sd50xx48sd51xx49sd52xx50……sd73xx71sd75xx72sd76xx73sd77xx74……sd98xx95接著,在步驟95,該主機(jī)利用每一硬盤的sas地址做為關(guān)聯(lián)元素,將表二與表四所列信息整合而獲得一包含下列表五所列信息的硬盤對(duì)應(yīng)信息,其中該硬盤對(duì)應(yīng)信息包含每一硬盤擴(kuò)充界面13所對(duì)應(yīng)的通用裝置名稱、該硬盤擴(kuò)充界面13所連接的每一硬盤所對(duì)應(yīng)的邏輯裝置名稱,及該邏輯裝置名稱所對(duì)應(yīng)的槽編號(hào)。一并參閱表五與圖1,其中可觀察到邏輯裝置名稱「sd0」與「sd25」對(duì)應(yīng)至同一顆硬盤,故兩者對(duì)應(yīng)至相同的槽編號(hào)「s1」;邏輯裝置名稱「sd1」與「sd26」對(duì)應(yīng)至同一顆硬盤,故兩者對(duì)應(yīng)至相同的槽編號(hào)「s0」等等。表五硬盤擴(kuò)充界面對(duì)應(yīng)的通用裝置名稱硬盤對(duì)應(yīng)的邏輯裝置名稱硬盤擴(kuò)充界面連接的硬盤的sas地址硬盤的sas地址對(duì)應(yīng)的槽編號(hào)sg24sd0xx0s1sg24sd1xx1s0sg24sd2xx2s2…………sg24sd23xx23s23sg49sd25xx24s1sg49sd26xx25s0sg49sd27xx26s2…………sg49sd48xx47s23sg74sd50xx48s1sg74sd51xx49s0sg74sd52xx50s2…………sg74sd73xx71s23sg99sd75xx72s1sg99sd76xx73s0sg99sd77xx74s2…………sg99sd98xx95s23接著,在步驟96,該主機(jī)執(zhí)行一測試程序來偵測該等硬盤的其中至少一者是否滿足一預(yù)定的異常條件,其中該異常條件例如為「針對(duì)硬盤對(duì)應(yīng)的二個(gè)邏輯裝置名稱的其中至少一者讀寫資料時(shí)發(fā)生錯(cuò)誤」。當(dāng)該主機(jī)偵測到該硬盤滿足該異常條件時(shí),該主機(jī)判斷該硬盤為一異常硬盤。接著,在步驟97,該主機(jī)根據(jù)該異常硬盤對(duì)應(yīng)的邏輯裝置名稱與該硬盤對(duì)應(yīng)信息判斷出連接該異常硬盤的硬盤擴(kuò)充界面13對(duì)應(yīng)的通用裝置名稱及該異常硬盤的對(duì)應(yīng)的槽編號(hào)。舉例來說,如上列表五所示,當(dāng)該主機(jī)偵測出對(duì)應(yīng)邏輯裝置名稱「sd0」的硬盤發(fā)生異常,可經(jīng)由查詢表五所列信息而快速地判斷出連接該異常硬盤的硬盤擴(kuò)充界面13對(duì)應(yīng)的通用裝置名稱為「sg24」,且該異常硬盤對(duì)應(yīng)的槽編號(hào)為「s1」。接著,在步驟98,該主機(jī)根據(jù)連接該異常硬盤的硬盤擴(kuò)充界面13對(duì)應(yīng)的通用裝置名稱及該異常硬盤對(duì)應(yīng)的槽編號(hào),執(zhí)行一相關(guān)于linux的第四指令,以使連接該異常硬盤的硬盤擴(kuò)充界面13控制裝設(shè)有該異常硬盤的裝置槽11對(duì)應(yīng)的警示燈發(fā)亮。在本實(shí)施例中,該第四指令為sg_senddiag。承上述之例并參閱圖1,當(dāng)該主機(jī)偵測出對(duì)應(yīng)邏輯裝置名稱「sd0」的硬盤發(fā)生異常時(shí),可通過在linux上執(zhí)行「sg_senddiag--pf-r2,0,0,0c,0,0,0,0,0,0,0,0,80,0,0,20sg24s1」而使得對(duì)應(yīng)通用裝置名稱「sg24」的硬盤擴(kuò)充界面13控制裝設(shè)有對(duì)應(yīng)邏輯裝置名稱「sd0」的硬盤的裝置槽11(s1)對(duì)應(yīng)的警示燈發(fā)亮,以指出該異常硬盤的裝設(shè)位置。此外,在另一實(shí)施方式中,當(dāng)該儲(chǔ)存設(shè)備不具有該等警示燈而不執(zhí)行該步驟98時(shí),本發(fā)明的用于叢集式儲(chǔ)存系統(tǒng)的判斷異常硬盤之裝設(shè)位置的方法仍有其功效。例如,管理人員可預(yù)先記錄每一硬盤擴(kuò)充界面13屬于那一個(gè)儲(chǔ)存設(shè)備,并記錄該硬盤擴(kuò)充界面13所對(duì)應(yīng)的每一裝置槽11的位置;如此,當(dāng)該主機(jī)偵測到一異常硬盤,并通過查詢表五所列的信息而獲得該異常硬盤所連接的硬盤擴(kuò)充界面13的通用裝置名稱與該異常硬盤對(duì)應(yīng)的槽編號(hào)時(shí),管理人員也能根據(jù)該預(yù)先記錄的該等硬盤擴(kuò)充界面13與該等裝置槽11的位置信息來快速找到該異常硬盤的裝設(shè)位置。綜上所述,在本發(fā)明用于叢集式儲(chǔ)存系統(tǒng)的判斷異常硬盤之裝設(shè)位置的方法中,該主機(jī)通過整合在linux上利用sg_map、seg_ses、sg_vpd等指令所獲得的信息而產(chǎn)生包含表五所列信息的該硬盤對(duì)應(yīng)信息,使得當(dāng)該主機(jī)通過執(zhí)行該測試程序而偵測到該異常硬盤時(shí),能根據(jù)該硬盤對(duì)應(yīng)信息快速地判斷出該異常硬盤所連接的硬盤擴(kuò)充界面的通用裝置名稱與裝設(shè)有該異常硬盤的裝置槽的槽編號(hào),故確實(shí)能達(dá)成本發(fā)明之目的。上面結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施方式和實(shí)施例做了詳細(xì)說明,但不能以之限定本發(fā)明的范圍,在本發(fā)明申請(qǐng)專利范圍內(nèi)所作的均等修飾和變化,皆應(yīng)該屬于本發(fā)明專利范圍內(nèi)。當(dāng)前第1頁12