專(zhuān)利名稱(chēng):多控存儲(chǔ)系統(tǒng)實(shí)現(xiàn)控制器故障保護(hù)的裝置及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及存儲(chǔ)裝置掉電保護(hù)的方法,尤其涉及多控制器存儲(chǔ)系統(tǒng)實(shí)現(xiàn)控制器故障保護(hù)的方法及裝置。
背景技術(shù):
在多控制器存儲(chǔ)系統(tǒng)中為提高系統(tǒng)的可靠性,引入了緩存管理模塊,控制器接收寫(xiě)數(shù)據(jù)的請(qǐng)求后,在將數(shù)據(jù)寫(xiě)入磁盤(pán)前會(huì)把要寫(xiě)入的數(shù)據(jù)發(fā)送至其它控制器進(jìn)行鏡像緩存。當(dāng)接收寫(xiě)請(qǐng)求的控制器發(fā)生故障后,由其它控制器接管發(fā)生故障的控制器的存儲(chǔ)資源, 并把經(jīng)鏡像緩存的數(shù)據(jù)寫(xiě)入被接管的磁盤(pán)。在多控制器存儲(chǔ)系統(tǒng)中的一個(gè)控制器出現(xiàn)掉電故障后,會(huì)導(dǎo)致正在進(jìn)行讀/寫(xiě)操作的磁盤(pán)無(wú)法向操作系統(tǒng)返回響應(yīng);另外,當(dāng)其它控制器接管故障控制器的存儲(chǔ)資源后,在短時(shí)間內(nèi)對(duì)被接管的磁盤(pán)進(jìn)行讀/寫(xiě)操作,可能會(huì)出現(xiàn)錯(cuò)誤;由此均會(huì)導(dǎo)致出現(xiàn)向被接管的磁盤(pán)寫(xiě)數(shù)據(jù)不一致的故障。因此,需要針對(duì)由于多控制器存儲(chǔ)系統(tǒng)中的控制器掉電后會(huì)引發(fā)的磁盤(pán)故障,提供一種可靠易行的解決辦法及裝置,能夠有效地避免出現(xiàn)這類(lèi)故障。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問(wèn)題是提供一種多控存儲(chǔ)系統(tǒng)實(shí)現(xiàn)掉電保護(hù)的方法及裝置,能夠在控制器掉電后有效地避免出現(xiàn)磁盤(pán)故障。為了解決上述技術(shù)問(wèn)題,本發(fā)明提供了一種多控制器存儲(chǔ)系統(tǒng)實(shí)現(xiàn)控制器故障保護(hù)的裝置,包括寫(xiě)策略設(shè)置模塊、磁盤(pán)緩存開(kāi)關(guān)模塊以及相互連接的磁盤(pán)定位模塊和磁盤(pán)置位模塊,其中寫(xiě)策略設(shè)置模塊,用于在上電時(shí)將磁盤(pán)的寫(xiě)策略模式設(shè)置為數(shù)據(jù)總被寫(xiě)入磁盤(pán)的模式;磁盤(pán)緩存開(kāi)關(guān)模塊,用于在上電時(shí)關(guān)閉磁盤(pán)的高速緩存;磁盤(pán)定位模塊,用于在上電時(shí)將獲取的存儲(chǔ)系統(tǒng)中所有磁盤(pán)所處物理位置的信息輸出給磁盤(pán)置位模塊;磁盤(pán)置位模塊,用于在控制器發(fā)生故障并接管該發(fā)生故障的控制器使用的磁盤(pán)資源時(shí),根據(jù)輸入的磁盤(pán)所處物理的位置信息對(duì)被接管的磁盤(pán)進(jìn)行置位操作。進(jìn)一步地,寫(xiě)策略設(shè)置模塊在上電時(shí)將磁盤(pán)的寫(xiě)策略模式由默認(rèn)的回寫(xiě)模式設(shè)置為透寫(xiě)模式,即數(shù)據(jù)總被寫(xiě)入磁盤(pán)的模式。進(jìn)一步地,磁盤(pán)緩存開(kāi)關(guān)模塊獲取及分析小型計(jì)算機(jī)系統(tǒng)接口協(xié)議的0x08協(xié)議頁(yè)中控制磁盤(pán)緩存模式的信息,將設(shè)為控制打開(kāi)緩存模式修改為控制關(guān)閉緩存模式,然后將修改的信息以命令數(shù)據(jù)的形式寫(xiě)回磁盤(pán),以關(guān)閉磁盤(pán)的高速緩存。
進(jìn)一步地,磁盤(pán)定位模塊通過(guò)小型計(jì)算機(jī)系統(tǒng)接口 SCSI協(xié)議的0χΑ、0χ83協(xié)議頁(yè)信息獲取并輸出所有磁盤(pán)所處物理位置的信息,包括所有磁盤(pán)所在陣列及其串行SCSI地址以及磁盤(pán)的槽位號(hào)。進(jìn)一步地,磁盤(pán)置位模塊使用smp_Utils工具執(zhí)行置位操作,使得被接管的磁盤(pán)由不確定狀態(tài)恢復(fù)到正常狀態(tài)。為了解決上述技術(shù)問(wèn)題,本發(fā)明提供了一種多控制器存儲(chǔ)系統(tǒng)實(shí)現(xiàn)控制器故障保護(hù)的方法,包括控制器在上電時(shí)將磁盤(pán)的寫(xiě)策略模式設(shè)置為數(shù)據(jù)總被寫(xiě)入磁盤(pán)的模式,并關(guān)閉使用磁盤(pán)的高速緩存,以及獲取存儲(chǔ)系統(tǒng)中所有控制器使用磁盤(pán)所處物理位置的信息。進(jìn)一步地,該方法還包括當(dāng)有控制器發(fā)生故障時(shí),其它控制器根據(jù)磁盤(pán)所處物理位置的信息對(duì)發(fā)生故障的控制器所使用的磁盤(pán)進(jìn)行置位操作,完成對(duì)磁盤(pán)的接管操作。進(jìn)一步地,控制器在上電時(shí)將磁盤(pán)的寫(xiě)策略模式由默認(rèn)的回寫(xiě)模式設(shè)置為透寫(xiě)模式,即數(shù)據(jù)總被寫(xiě)入磁盤(pán)的模式。進(jìn)一步地,控制器在上電時(shí)關(guān)閉使用磁盤(pán)的高速緩存,具體包括獲取及分析小型計(jì)算機(jī)系統(tǒng)接口協(xié)議的0x08協(xié)議頁(yè)中控制磁盤(pán)緩存模式的信息,將設(shè)為控制打開(kāi)緩存模式修改為控制關(guān)閉緩存模式,然后將修改的信息以命令數(shù)據(jù)的形式寫(xiě)回磁盤(pán),以關(guān)閉磁盤(pán)的高速緩存。進(jìn)一步地,控制器在上電時(shí)獲取存儲(chǔ)系統(tǒng)中所有控制器使用磁盤(pán)所處物理位置的信息,具體包括通過(guò)小型計(jì)算機(jī)系統(tǒng)接口 SCSI協(xié)議的0χΑ、0χ83協(xié)議頁(yè)信息獲取所有磁盤(pán)所處物理位置的信息,包括所有磁盤(pán)所在陣列及其串行SCSI地址以及所述磁盤(pán)的槽位號(hào)。本發(fā)明提供的方法及裝置,通過(guò)修改存儲(chǔ)系統(tǒng)的磁盤(pán)寫(xiě)入策略及寫(xiě)模式,并在其它控制器接管故障控制器存儲(chǔ)資源的過(guò)程中對(duì)被接管的磁盤(pán)進(jìn)行置位操作,從而可有效地避免故障控制器被接管后常會(huì)出現(xiàn)的磁盤(pán)寫(xiě)數(shù)據(jù)不一致的問(wèn)題。
圖1為本發(fā)明的多控存儲(chǔ)系統(tǒng)實(shí)現(xiàn)控制器故障保護(hù)的裝置實(shí)施例的結(jié)構(gòu)框圖;圖2為本發(fā)明的多控存儲(chǔ)系統(tǒng)實(shí)現(xiàn)控制器故障保護(hù)的方法實(shí)施例流程圖。
具體實(shí)施例方式下面結(jié)合附圖和優(yōu)選實(shí)施例對(duì)本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)地描述。以下例舉的實(shí)施例僅用于說(shuō)明和解釋本發(fā)明,而不構(gòu)成對(duì)本發(fā)明技術(shù)方案的限制。本發(fā)明提供的多控存儲(chǔ)系統(tǒng)實(shí)現(xiàn)控制器故障保護(hù)的裝置實(shí)施例,其結(jié)構(gòu)如圖1所示,包括寫(xiě)策略設(shè)置模塊110、磁盤(pán)緩存開(kāi)關(guān)模塊120以及相互連接的磁盤(pán)定位模塊130和磁盤(pán)置位模塊140,其中寫(xiě)策略設(shè)置模塊110,用于在上電時(shí)將磁盤(pán)的寫(xiě)策略設(shè)置為數(shù)據(jù)總被寫(xiě)入磁盤(pán)的模式;寫(xiě)策略設(shè)置模塊110將磁盤(pán)的寫(xiě)策略由默認(rèn)的回寫(xiě)模式(write back)設(shè)置為透寫(xiě)模式(write through)。通常,磁盤(pán)的寫(xiě)策略有回寫(xiě)模式(write back)和透寫(xiě)模式兩種,其中,回寫(xiě)模式代表被寫(xiě)入高速緩存的數(shù)據(jù)只有在其要被清除時(shí)才會(huì)被寫(xiě)入磁盤(pán),該模式是默認(rèn)情況下的寫(xiě)策略;透寫(xiě)模式代表數(shù)據(jù)在被寫(xiě)入高速緩存的同時(shí)也被寫(xiě)入磁盤(pán),即數(shù)據(jù)總被寫(xiě)入磁盤(pán)的模式。當(dāng)數(shù)據(jù)由處理器寫(xiě)入到磁盤(pán)上時(shí),要寫(xiě)入的數(shù)據(jù)由于可能會(huì)被頻繁訪問(wèn)而先被寫(xiě)入高速緩存中,故在默認(rèn)情況下的寫(xiě)策略為write kick模式;處于此模式下若發(fā)生控制器故障(譬如掉電),會(huì)造成高速緩存中尚未被寫(xiě)入磁盤(pán)的數(shù)據(jù)丟失。因此需要在存儲(chǔ)系統(tǒng)上電時(shí)將磁盤(pán)的寫(xiě)策略設(shè)為透寫(xiě)模式,由于數(shù)據(jù)在被寫(xiě)入到高速緩存的同時(shí)也會(huì)被寫(xiě)到磁盤(pán),故此模式可在發(fā)生控制器故障時(shí)避免造成數(shù)據(jù)的丟失。磁盤(pán)緩存開(kāi)關(guān)模塊120,用于在上電時(shí)通過(guò)小型計(jì)算機(jī)系統(tǒng)接口(SCSI,Small Computer Systems Interface)協(xié)議關(guān)閉磁盤(pán)的高速緩存;SCSI協(xié)議的0x80協(xié)議頁(yè)中包含了控制磁盤(pán)緩存模式的信息,當(dāng)該信息為打開(kāi)緩存模式時(shí),寫(xiě)入磁盤(pán)的數(shù)據(jù)會(huì)首先寫(xiě)到被打開(kāi)的高速緩存中;在對(duì)磁盤(pán)進(jìn)行置位操作時(shí),會(huì)造成已被寫(xiě)入高速緩存但尚未寫(xiě)入磁盤(pán)的數(shù)據(jù)丟失。如果將0x80協(xié)議頁(yè)中控制磁盤(pán)緩存模式修改為控制關(guān)閉緩存模式,則寫(xiě)入磁盤(pán)的數(shù)據(jù)會(huì)直接寫(xiě)到磁盤(pán)上,故此情況下再對(duì)磁盤(pán)進(jìn)行置位操作時(shí),不會(huì)造成數(shù)據(jù)丟失。磁盤(pán)緩存開(kāi)關(guān)模塊120獲取及分析SCSI協(xié)議的0x08協(xié)議頁(yè)中控制磁盤(pán)緩存模式的信息,將設(shè)為控制打開(kāi)緩存模式修改為控制關(guān)閉緩存模式,然后將修改的信息以命令數(shù)據(jù)的形式寫(xiě)回磁盤(pán),以關(guān)閉磁盤(pán)的高速緩存。磁盤(pán)定位模塊130,用于在上電時(shí)將通過(guò)SCSI協(xié)議獲取的存儲(chǔ)系統(tǒng)中所有磁盤(pán)所處物理位置的信息輸出給磁盤(pán)置位模塊140 ;磁盤(pán)定位模塊130通過(guò)SCSI協(xié)議的0χΑ、0χ83協(xié)議頁(yè)信息,獲取所有磁盤(pán)所在陣列(expander)及其串行SCSI (SAS,krial Attached SCSI)地址以及各磁盤(pán)的槽位號(hào)。磁盤(pán)置位模塊140,用于在控制器發(fā)生故障并接管其使用磁盤(pán)資源時(shí),根據(jù)輸入的磁盤(pán)所處物理位置的信息對(duì)被接管的磁盤(pán)進(jìn)行置位操作。磁盤(pán)置位模塊140根據(jù)輸入的磁盤(pán)所處物理位置的信息找到被接管磁盤(pán)的物理位置,通過(guò)smp_utils工具對(duì)相應(yīng)的磁盤(pán)進(jìn)行置位操作。在多控制器存儲(chǔ)系統(tǒng)中,磁盤(pán)陣列通常會(huì)通過(guò)SAS卡或SAS線與控制器連接。當(dāng)一個(gè)控制器在向磁盤(pán)寫(xiě)入數(shù)據(jù)時(shí)發(fā)生掉電,造成被寫(xiě)入數(shù)據(jù)的磁盤(pán)處于不確定狀態(tài),當(dāng)另一個(gè)控制器接管這些磁盤(pán)時(shí),會(huì)觸發(fā)對(duì)這些磁盤(pán)的狀態(tài)恢復(fù)機(jī)制,每個(gè)磁盤(pán)的恢復(fù)時(shí)間大約為2秒且恢復(fù)過(guò)程是順序執(zhí)行,如果磁盤(pán)數(shù)量較多時(shí),另外的控制器接管這些磁盤(pán)時(shí)間過(guò)長(zhǎng),會(huì)造成基于磁盤(pán)數(shù)據(jù)的上層業(yè)務(wù)的中斷。磁盤(pán)置位模塊140使用smp_utils工具可以在短時(shí)間內(nèi)將處于不確定狀態(tài)的磁盤(pán)通過(guò)置位操作恢復(fù)到正常狀態(tài),并且不會(huì)影響到上層業(yè)務(wù)的進(jìn)行。在置位操作中,如果磁盤(pán)的高速緩存處于打開(kāi)狀態(tài),置位操作會(huì)造成高速緩存中數(shù)據(jù)的丟失,所以在進(jìn)行置位操作前需要磁盤(pán)緩存開(kāi)關(guān)模塊120將磁盤(pán)的高速緩存關(guān)閉。
本發(fā)明針對(duì)上述裝置實(shí)施例,相應(yīng)地還提供了多控制器存儲(chǔ)系統(tǒng)實(shí)現(xiàn)控制器故障保護(hù)的方法實(shí)施例,其流程如圖2所示,包括如下步驟210 各控制器在上電時(shí)重設(shè)磁盤(pán)的寫(xiě)策略模式,并關(guān)閉磁盤(pán)的高速緩存;各控制器上電時(shí)將磁盤(pán)的寫(xiě)策略由默認(rèn)的回寫(xiě)模式重設(shè)為透寫(xiě)模式,并將SCSI 協(xié)議的0x80協(xié)議頁(yè)中控制磁盤(pán)緩存模式修改為控制關(guān)閉緩存模式,從而關(guān)閉磁盤(pán)的高速緩存。220 獲取存儲(chǔ)系統(tǒng)中所有控制器使用磁盤(pán)的位置信息;在上電時(shí)將通過(guò)SCSI協(xié)議的OxA、0x83協(xié)議頁(yè)信息,獲取所有磁盤(pán)所在陣列 (expander)及其串行SCSI (SAS,krial Attached SCSI)地址以及各磁盤(pán)的槽位號(hào)。230:當(dāng)一控制器發(fā)生故障時(shí),另一控制器開(kāi)始接管該故障控制器使用的磁盤(pán)資源;譬如當(dāng)一控制器突然掉電時(shí),另一控制器開(kāi)始接管該掉電控制器使用的磁盤(pán)資源。M0:接管控制器根據(jù)磁盤(pán)的位置信息對(duì)故障控制器使用的磁盤(pán)進(jìn)行置位操作,完成對(duì)故障磁盤(pán)存儲(chǔ)資源的操作。使用smp_Utils工具在短時(shí)間內(nèi)將處于不確定狀態(tài)的磁盤(pán)通過(guò)置位操作恢復(fù)到正常狀態(tài),在接管存儲(chǔ)資源完成后繼續(xù)數(shù)據(jù)的寫(xiě)請(qǐng)求,寫(xiě)數(shù)據(jù)便可在此過(guò)程中無(wú)任何丟失。對(duì)于本領(lǐng)域的專(zhuān)業(yè)人員來(lái)說(shuō),在了解了本發(fā)明內(nèi)容和原理后,能夠在不背離本發(fā)明的原理和范圍的情況下,根據(jù)本發(fā)明的方法進(jìn)行形式和細(xì)節(jié)上的各種修正和改變,但是這些基于本發(fā)明的修正和改變?nèi)栽诒景l(fā)明的權(quán)利要求保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種多控制器存儲(chǔ)系統(tǒng)實(shí)現(xiàn)控制器故障保護(hù)的裝置,其特征在于,包括寫(xiě)策略設(shè)置模塊、磁盤(pán)緩存開(kāi)關(guān)模塊以及相互連接的磁盤(pán)定位模塊和磁盤(pán)置位模塊,其中寫(xiě)策略設(shè)置模塊,用于在上電時(shí)將磁盤(pán)的寫(xiě)策略模式設(shè)置為數(shù)據(jù)總被寫(xiě)入磁盤(pán)的模式;磁盤(pán)緩存開(kāi)關(guān)模塊,用于在上電時(shí)關(guān)閉磁盤(pán)的高速緩存;磁盤(pán)定位模塊,用于在上電時(shí)將獲取的所述存儲(chǔ)系統(tǒng)中所有磁盤(pán)所處物理位置的信息輸出給磁盤(pán)置位模塊;磁盤(pán)置位模塊,用于在控制器發(fā)生故障并接管該發(fā)生故障的控制器使用的磁盤(pán)資源時(shí),根據(jù)輸入的磁盤(pán)所處物理的位置信息對(duì)被接管的磁盤(pán)進(jìn)行置位操作。
2.按照權(quán)利要求1所述的裝置,其特征在于,所述寫(xiě)策略設(shè)置模塊在所述上電時(shí)將所述磁盤(pán)的寫(xiě)策略模式由默認(rèn)的回寫(xiě)模式設(shè)置為透寫(xiě)模式,即所述數(shù)據(jù)總被寫(xiě)入磁盤(pán)的模式。
3.按照權(quán)利要求1所述的裝置,其特征在于,所述磁盤(pán)緩存開(kāi)關(guān)模塊獲取及分析小型計(jì)算機(jī)系統(tǒng)接口協(xié)議的0x08協(xié)議頁(yè)中控制磁盤(pán)緩存模式的信息,將設(shè)為控制打開(kāi)緩存模式修改為控制關(guān)閉緩存模式,然后將修改的信息以命令數(shù)據(jù)的形式寫(xiě)回磁盤(pán),以關(guān)閉所述磁盤(pán)的高速緩存。
4.按照權(quán)利要求1所述的裝置,其特征在于,所述磁盤(pán)定位模塊通過(guò)小型計(jì)算機(jī)系統(tǒng)接口 SCSI協(xié)議的0χΑ、0χ83協(xié)議頁(yè)信息獲取并輸出所述所有磁盤(pán)所處物理位置的信息,包括所有磁盤(pán)所在陣列及其串行SCSI地址以及所述磁盤(pán)的槽位號(hào)。
5.按照權(quán)利要求1至4任一項(xiàng)所述的裝置,其特征在于,所述磁盤(pán)置位模塊使用smp_Utils工具執(zhí)行所述置位操作,使得所述被接管的磁盤(pán)由不確定狀態(tài)恢復(fù)到正常狀態(tài)。
6.一種多控制器存儲(chǔ)系統(tǒng)實(shí)現(xiàn)控制器故障保護(hù)的方法,包括所述控制器在上電時(shí)將磁盤(pán)的寫(xiě)策略模式設(shè)置為數(shù)據(jù)總被寫(xiě)入磁盤(pán)的模式,并關(guān)閉使用磁盤(pán)的高速緩存,以及獲取所述存儲(chǔ)系統(tǒng)中所有控制器使用磁盤(pán)所處物理位置的信息。
7.按照權(quán)利要求6所述的方法,其特征在于,還包括當(dāng)有控制器發(fā)生故障時(shí),其它控制器根據(jù)所述磁盤(pán)所處物理位置的信息對(duì)發(fā)生故障的控制器所使用的磁盤(pán)進(jìn)行置位操作,完成對(duì)所述磁盤(pán)的接管操作。
8.按照權(quán)利要求6所述的方法,其特征在于,所述控制器在上電時(shí)將所述磁盤(pán)的寫(xiě)策略模式由默認(rèn)的回寫(xiě)模式設(shè)置為透寫(xiě)模式,即所述數(shù)據(jù)總被寫(xiě)入磁盤(pán)的模式。
9.按照權(quán)利要求6所述的方法,其特征在于,所述控制器在上電時(shí)關(guān)閉使用磁盤(pán)的高速緩存,具體包括獲取及分析小型計(jì)算機(jī)系統(tǒng)接口協(xié)議的0x08協(xié)議頁(yè)中控制磁盤(pán)緩存模式的信息,將設(shè)為控制打開(kāi)緩存模式修改為控制關(guān)閉緩存模式,然后將修改的信息以命令數(shù)據(jù)的形式寫(xiě)回磁盤(pán),以關(guān)閉所述磁盤(pán)的高速緩存。
10.按照權(quán)利要求6所述的方法,其特征在于,所述控制器在上電時(shí)獲取所述存儲(chǔ)系統(tǒng)中所有控制器使用磁盤(pán)所處物理位置的信息,具體包括通過(guò)小型計(jì)算機(jī)系統(tǒng)接口 SCSI協(xié)議的0χΑ、0χ83協(xié)議頁(yè)信息獲取所述所有磁盤(pán)所處物理位置的信息,包括所有磁盤(pán)所在陣列及其串行SCSI地址以及所述磁盤(pán)的槽位號(hào)。
全文摘要
本發(fā)明披露了多控存儲(chǔ)系統(tǒng)實(shí)現(xiàn)控制器故障保護(hù)的裝置及方法,其中裝置包括寫(xiě)策略設(shè)置模塊在上電時(shí)將磁盤(pán)的寫(xiě)策略模式設(shè)置為數(shù)據(jù)總被寫(xiě)入磁盤(pán)的模式,磁盤(pán)緩存開(kāi)關(guān)模塊在上電時(shí)關(guān)閉磁盤(pán)的高速緩存,磁盤(pán)定位模塊在上電時(shí)將獲取的存儲(chǔ)系統(tǒng)中所有磁盤(pán)所處物理位置的信息輸出給磁盤(pán)置位模塊,磁盤(pán)置位模塊在控制器發(fā)生故障并接管該發(fā)生故障的控制器使用的磁盤(pán)資源時(shí),根據(jù)輸入的磁盤(pán)所處物理的位置信息對(duì)被接管的磁盤(pán)進(jìn)行置位操作。本發(fā)明可有效地避免故障控制器被接管后常會(huì)出現(xiàn)的磁盤(pán)寫(xiě)數(shù)據(jù)不一致的問(wèn)題。
文檔編號(hào)G06F3/06GK102200949SQ20111012561
公開(kāi)日2011年9月28日 申請(qǐng)日期2011年5月16日 優(yōu)先權(quán)日2011年5月16日
發(fā)明者張宇, 張延楓 申請(qǐng)人:浪潮(北京)電子信息產(chǎn)業(yè)有限公司