本發(fā)明涉及存儲(chǔ)技術(shù)領(lǐng)域,尤其涉及一種硬盤陣列及硬盤陣列處理操作請(qǐng)求的方法。
背景技術(shù):
如圖1所示,為一種硬盤陣列的示意圖,該硬盤陣列包括控制器10和多個(gè)硬盤11。在圖1中,當(dāng)某個(gè)業(yè)務(wù)服務(wù)器12需要對(duì)硬盤陣列讀或?qū)憯?shù)據(jù)時(shí),讀或?qū)懙臄?shù)據(jù)在業(yè)務(wù)服務(wù)器12和硬盤11之間需經(jīng)過控制器10的中央處理器(英文:centralprocessingunit,縮寫:cpu)的搬移。具體的,以業(yè)務(wù)服務(wù)器12需要在硬盤陣列中寫入數(shù)據(jù)為例,業(yè)務(wù)服務(wù)器12向控制器10發(fā)送寫操作請(qǐng)求,寫操作請(qǐng)求中攜帶待寫數(shù)據(jù),由控制器10的cpu將該待寫數(shù)據(jù)緩存到控制器10的緩存(英文:cache)中,然后控制器10的cpu再將該待寫數(shù)據(jù)搬移到硬盤11的緩存中,最后再由硬盤11的cpu將該待寫數(shù)據(jù)寫入硬盤的存儲(chǔ)空間(例如可以為nandflash等),從而完成該待寫數(shù)據(jù)的寫入。
然而,在上述寫入數(shù)據(jù)的過程中,由于該待寫數(shù)據(jù)從業(yè)務(wù)服務(wù)器到硬盤需經(jīng)過控制器的cpu的搬移,且控制器的cpu的處理能力有限,因此當(dāng)需要同時(shí)寫入數(shù)據(jù)比較多時(shí),控制器的cpu可能會(huì)出現(xiàn)瓶頸,從而使得硬盤陣列的性能受到限制,業(yè)務(wù)服務(wù)器從硬盤陣列讀取數(shù)據(jù)同樣存在上述問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的實(shí)施例提供一種硬盤陣列及硬盤陣列處理操作請(qǐng)求的方法,能夠避免控制器的cpu出現(xiàn)瓶頸,從而保證硬盤陣列的性能不受限制。
為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案:
第一方面,本發(fā)明實(shí)施例提供一種硬盤陣列,包括:
輸入輸出接口,與所述輸入輸出接口連接的交換設(shè)備,以及與所述交換設(shè)備連接的第一控制器和多個(gè)硬盤,所述多個(gè)硬盤均包含緩存;其中,
所述輸入輸出接口,用于經(jīng)所述交換設(shè)備向所述第一控制器發(fā)送操作請(qǐng)求,并經(jīng)所述交換設(shè)備接收所述第一控制器發(fā)送所述操作請(qǐng)求待操作的數(shù)據(jù)在目標(biāo)硬盤的緩存中的地址,以及根據(jù)所述地址,經(jīng)所述交換設(shè)備對(duì)所述地址執(zhí)行所述操作請(qǐng)求;
所述第一控制器,用于經(jīng)所述交換設(shè)備接收所述輸入輸出接口發(fā)送的所述操作請(qǐng)求,且根據(jù)所述操作請(qǐng)求和所述第一控制器的緩存與所述多個(gè)硬盤的緩存之間的映射關(guān)系確定所述地址,以及經(jīng)所述交換設(shè)備向所述輸入輸出接口發(fā)送所述地址。
本發(fā)明實(shí)施例提供的硬盤陣列,由于該硬盤陣列中的第一控制器的緩存與該硬盤陣列中的多個(gè)硬盤的緩存之間存在映射關(guān)系,因此當(dāng)?shù)谝豢刂破鹘邮盏捷斎胼敵鼋涌诎l(fā)送的操作請(qǐng)求時(shí),第一控制器可以根據(jù)該操作請(qǐng)求和該映射關(guān)系確定出該操作請(qǐng)求待操作的數(shù)據(jù)在目標(biāo)硬盤的緩存中的地址,然后再將該地址發(fā)送給輸入輸出接口,由輸入輸出接口直接經(jīng)交換設(shè)備對(duì)該地址執(zhí)行該操作請(qǐng)求。如此,由于對(duì)硬盤陣列中的硬盤進(jìn)行操作時(shí),操作的數(shù)據(jù)不用再經(jīng)過控制器(具體為控制器的cpu)的搬移,而是可以由輸入輸出接口直接對(duì)該數(shù)據(jù)在目標(biāo)硬盤的緩存中的地址進(jìn)行操作,因此避免了控制器的cpu出現(xiàn)瓶頸,從而能夠保證硬盤陣列的性能不受限制。
可選的,所述操作請(qǐng)求為讀請(qǐng)求;或者,
所述操作請(qǐng)求為寫請(qǐng)求。
具體的,當(dāng)上述輸入輸出接口發(fā)送給第一控制器的操作請(qǐng)求為讀請(qǐng)求時(shí),第一控制器發(fā)送給輸入輸出接口的地址為讀地址,輸入輸出接口經(jīng)交換設(shè)備對(duì)該讀地址執(zhí)行該讀請(qǐng)求。當(dāng)輸入輸出接口發(fā)送給第一控制器的操作請(qǐng)求為寫請(qǐng)求時(shí),第一控制器發(fā)送給輸入輸出接口的地址為寫地址,輸入輸出接口經(jīng)交換設(shè)備對(duì)該寫地址執(zhí)行該寫請(qǐng)求。
上述輸入輸出接口根據(jù)第一控制器發(fā)送的地址,經(jīng)交換設(shè)備對(duì)該地址執(zhí)行操作請(qǐng)求,包括:
輸入輸出接口根據(jù)第一控制器發(fā)送的讀地址,經(jīng)交換設(shè)備對(duì)該讀地址 進(jìn)行讀數(shù)據(jù)的操作;以及輸入輸出接口根據(jù)第一控制器發(fā)送的寫地址經(jīng)交換設(shè)備對(duì)該寫地址進(jìn)行寫數(shù)據(jù)的操作。
其中,上述輸入輸出接口根據(jù)第一控制器發(fā)送的讀地址,經(jīng)交換設(shè)備對(duì)該讀地址進(jìn)行讀數(shù)據(jù)的操作,可以理解為:輸入輸出接口根據(jù)第一控制器發(fā)送的讀地址,經(jīng)交換設(shè)備從該讀地址指示的緩存中讀取數(shù)據(jù)。上述輸入輸出接口根據(jù)第一控制器發(fā)送的寫地址,經(jīng)交換設(shè)備對(duì)該寫地址進(jìn)行寫數(shù)據(jù)的操作,可以理解為:輸入輸出接口根據(jù)第一控制器發(fā)送的寫地址,經(jīng)交換設(shè)備向該寫地址指示的緩存中寫入數(shù)據(jù)。讀地址指示的緩存為目標(biāo)硬盤中緩存待讀取數(shù)據(jù)的緩存;寫地址指示的緩存為目標(biāo)硬盤中需緩存待寫入數(shù)據(jù)的緩存。
可選的,在本發(fā)明提供的硬盤陣列中,每個(gè)硬盤的緩存均可以緩存該硬盤的系統(tǒng)數(shù)據(jù)。
可選的,本發(fā)明實(shí)施例提供的硬盤陣列中,每個(gè)硬盤的緩存還可以緩存第一控制器的緩存與多個(gè)硬盤的緩存之間的映射關(guān)系、需要對(duì)該硬盤進(jìn)行讀或?qū)懖僮鞯臄?shù)據(jù)和硬盤陣列的系統(tǒng)數(shù)據(jù)中的至少一項(xiàng)。
可選的,本發(fā)明實(shí)施例提供的硬盤陣列中,可以由第一控制器預(yù)先在第一控制器中建立第一控制器的緩存與多個(gè)硬盤的緩存之間的映射關(guān)系。其中,第一控制器建立第一控制器的緩存與多個(gè)硬盤的緩存之間的映射關(guān)系,可以理解為:
第一控制器將第一控制器的緩存和硬盤陣列中的多個(gè)硬盤的緩存拉通管理。具體的,第一控制器將多個(gè)硬盤的緩存的地址映射到第一控制器的內(nèi)存中,以將多個(gè)硬盤的緩存分別依次映射到第一控制器的緩存之后,即將第一控制器的緩存和多個(gè)硬盤的緩存統(tǒng)一順序編號(hào)。
通過第一控制器建立第一控制器的緩存和多個(gè)硬盤的緩存之間的映射關(guān)系,可以使得第一控制器的緩存和多個(gè)硬盤的緩存在物理上連通,從而能夠支持輸入輸出接口在邏輯上進(jìn)行直接訪問(由于輸入輸出接口可以直接訪問第一控制器的內(nèi)存,因此當(dāng)將硬盤的緩存映射到第一控制器的內(nèi)存之后,輸入輸出接口也可以直接訪問硬盤的緩存)。
可選的,上述輸入輸出接口直接對(duì)硬盤的緩存進(jìn)行讀或?qū)憯?shù)據(jù)的操作是由輸入輸出接口采用直接內(nèi)存訪問(英文:directionalmemoryaccess, 縮寫:dma)技術(shù)實(shí)現(xiàn)的。具體可以通過在輸入輸出接口中集成一個(gè)dma功能模塊實(shí)現(xiàn),例如可以在輸入輸出接口中集成一個(gè)dma芯片實(shí)現(xiàn)。
可選的,所述多個(gè)硬盤包含第一獨(dú)立硬盤冗余陣列raid,所述多個(gè)硬盤的緩存包含第二raid,所述第一raid的類型和所述第二raid的類型相同。
例如,第一raid和第二raid的具體實(shí)現(xiàn)形式可以為下述(1)和(2)中的一種:
(1)所述多個(gè)硬盤形成至少兩個(gè)第一raid,所述多個(gè)硬盤的緩存形成至少兩個(gè)第二raid,所述至少兩個(gè)第一raid和所述至少兩個(gè)第二raid一一對(duì)應(yīng),且一一對(duì)應(yīng)的第一raid和第二raid的類型相同。
在(1)這種情況下,所述第一控制器,還用于建立每個(gè)第二raid中的各個(gè)緩存之間的映射關(guān)系,并建立一一對(duì)應(yīng)的第一raid中的各個(gè)硬盤和第二raid中的各個(gè)緩存之間的映射關(guān)系。
上述第一控制器建立每個(gè)第二raid中的各個(gè)緩存之間的映射關(guān)系,可以理解為:
第一控制器將每個(gè)第二raid中的各個(gè)緩存拉通管理。具體的,第一控制器將每個(gè)第二raid中的各個(gè)緩存統(tǒng)一進(jìn)行地址劃分,以保證在每個(gè)第二raid中的所有地址均是唯一的。
上述第一控制器建立一一對(duì)應(yīng)的第一raid中的各個(gè)硬盤和第二raid中的各個(gè)緩存之間的映射關(guān)系,可以理解為:
第一控制器將一一對(duì)應(yīng)的第一raid中的各個(gè)硬盤和第二raid中的各個(gè)緩存拉通管理。
進(jìn)一步地,第一控制器建立一一對(duì)應(yīng)的第一raid中的各個(gè)硬盤和第二raid中的各個(gè)緩存之間的映射關(guān)系,可以保證第一控制器能夠根據(jù)輸入輸出接口發(fā)送的操作請(qǐng)求(為讀請(qǐng)求或?qū)懻?qǐng)求)直接確定出需進(jìn)行讀或?qū)懖僮鞯挠脖P,從而使得輸入輸出接口可以直接對(duì)該硬盤進(jìn)行讀或?qū)憯?shù)據(jù)的操作。
(2)所述多個(gè)硬盤形成至少一個(gè)第一raid,所述多個(gè)硬盤的緩存形成一個(gè)第二raid。
在(2)這種情況下,所述第一控制器,還用于建立第二raid中的 各個(gè)緩存之間的映射關(guān)系。
上述第一控制器建立第二raid中的各個(gè)緩存之間的映射關(guān)系,可以理解為:
第一控制器將第二raid中的各個(gè)緩存拉通管理。具體的,第一控制器將第二raid中的各個(gè)緩存統(tǒng)一進(jìn)行地址劃分,以保證在第二raid中的所有地址均是唯一的。
可選的,所述硬盤陣列還包括第二控制器,所述第二控制器與所述交換設(shè)備連接;
所述第一控制器,還用于經(jīng)所述交換設(shè)備向所述第二控制器發(fā)送所述映射關(guān)系;
所述第二控制器,用于接收所述第一控制器發(fā)送的所述映射關(guān)系,并將所述映射關(guān)系緩存在所述第二控制器的緩存中。
可選的,所述第一控制器,還用于經(jīng)所述交換設(shè)備向所述第二控制器發(fā)送所述硬盤陣列的系統(tǒng)數(shù)據(jù);
所述第二控制器,用于接收所述第一控制器發(fā)送的所述硬盤陣列的系統(tǒng)數(shù)據(jù),并將所述硬盤陣列的系統(tǒng)數(shù)據(jù)緩存在所述第二控制器的緩存中。
可選的,所述第一控制器,還用于經(jīng)所述交換設(shè)備向所述多個(gè)硬盤中的預(yù)指定硬盤的緩存中寫入所述映射關(guān)系和所述硬盤陣列的系統(tǒng)數(shù)據(jù),所述硬盤陣列的系統(tǒng)數(shù)據(jù)緩存在所述第一控制器的緩存中。
通過將第一控制器的緩存中緩存的第一控制器的緩存與多個(gè)硬盤的緩存之間的映射關(guān)系以及硬盤陣列的系統(tǒng)數(shù)據(jù)備份在第二控制器的緩存中,可以在第一控制器發(fā)生故障時(shí),由第二控制器代替第一控制器確定待操作的數(shù)據(jù)在目標(biāo)硬盤的緩存中的地址,從而能夠避免硬盤陣列無法正常工作,提高硬盤陣列的可靠性。
通過將第一控制器的緩存中緩存的第一控制器的緩存與多個(gè)硬盤的緩存之間的映射關(guān)系以及硬盤陣列的系統(tǒng)數(shù)據(jù)備份到預(yù)指定硬盤的緩存中,可以在硬盤陣列掉電時(shí),由該預(yù)指定硬盤的cpu將該硬盤陣列的系統(tǒng)數(shù)據(jù)寫入該預(yù)指定硬盤的存儲(chǔ)空間中,從而在硬盤陣列重新上電后,硬盤陣列中的控制器(包括第一控制器和第二控制器)可將該映射關(guān)系和該硬盤陣列的系統(tǒng)數(shù)據(jù)恢復(fù)到控制器的緩存中,進(jìn)而能夠保證硬盤陣列在掉 電前控制器的緩存中的數(shù)據(jù)和硬盤陣列在重新上電后控制器的緩存中的數(shù)據(jù)一致,即保證硬盤陣列在掉電后控制器的緩存中的數(shù)據(jù)不會(huì)丟失。
進(jìn)一步地,所述第一控制器,還用于當(dāng)所述硬盤陣列重新上電后,經(jīng)所述交換設(shè)備從所述預(yù)指定硬盤中讀取所述映射關(guān)系和所述硬盤陣列的系統(tǒng)數(shù)據(jù);
所述第二控制器,還用于當(dāng)所述硬盤陣列重新上電后,經(jīng)所述交換設(shè)備從所述預(yù)指定硬盤中讀取所述映射關(guān)系和所述硬盤陣列的系統(tǒng)數(shù)據(jù)。
在硬盤陣列重新上電后,通過控制器將硬盤中存儲(chǔ)的第一控制器的緩存與多個(gè)硬盤的緩存之間的映射關(guān)系以及硬盤陣列的系統(tǒng)數(shù)據(jù)恢復(fù)到控制器的緩存中,能夠保證硬盤陣列在掉電前和重新上電后控制器的緩存中的數(shù)據(jù)一致,即保證硬盤陣列在掉電后控制器的緩存中的數(shù)據(jù)不會(huì)丟失。
可選的,所述多個(gè)硬盤的緩存形成所述第一控制器和所述第二控制器共享的全局共享緩存。
在硬盤陣列中的多個(gè)硬盤的緩存形成第一控制器和第二控制器共享的全局共享緩存之后,第一控制器和第二控制器均可以對(duì)該全局共享緩存進(jìn)行讀或?qū)憯?shù)據(jù)的操作。如此,某個(gè)控制器或者輸入輸出接口可以將鏡像數(shù)據(jù)(即需要備份的數(shù)據(jù))緩存至全局共享緩存中,而無需再針對(duì)不同的控制器單獨(dú)緩存鏡像數(shù)據(jù),且當(dāng)某個(gè)控制器或者輸入輸出接口將鏡像數(shù)據(jù)(即需要備份的數(shù)據(jù))緩存至全局共享緩存中后,硬盤陣列中的第一控制器和第二控制器均可以訪問該鏡像數(shù)據(jù),與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例節(jié)省了控制器與控制器之間的鏡像通道,簡(jiǎn)化了鏡像過程,提升了數(shù)據(jù)交互效率。
可選的,所述第二控制器,還用于在所述第一控制器發(fā)生故障時(shí),經(jīng)所述交換設(shè)備接收所述輸入輸出接口發(fā)送的所述操作請(qǐng)求,且根據(jù)所述操作請(qǐng)求和所述映射關(guān)系確定所述地址,以及經(jīng)所述交換設(shè)備向所述輸入輸出接口發(fā)送所述地址。
由于第二控制器的緩存中備份了第一控制器的緩存與多個(gè)硬盤的緩存之間的映射關(guān)系,因此當(dāng)?shù)谝豢刂破靼l(fā)生故障時(shí),可以由第二控制器代替第一控制器確定輸入輸出接口發(fā)送的操作請(qǐng)求待操作的數(shù)據(jù)在目標(biāo)硬盤的緩存中的地址,并經(jīng)交換設(shè)備將該地址發(fā)送給輸入輸出接口,由輸入 輸出接口完成該操作請(qǐng)求。如此可以提高硬盤陣列的可靠性。
可選的,所述多個(gè)硬盤中的每個(gè)硬盤,還用于在所述硬盤陣列掉電時(shí),將該硬盤的緩存中的數(shù)據(jù)寫入該硬盤的存儲(chǔ)空間,其中,該硬盤中的備電電容為該硬盤提供備電。
當(dāng)硬盤陣列掉電后,由于硬盤陣列的供電電源斷開,因此硬盤陣列的控制器(例如第一控制器和第二控制器)將無法工作,然而由于硬盤陣列的每個(gè)硬盤中都有一個(gè)備電電容,且該備電電容可以為硬盤提供一段時(shí)間的備電,因此即使硬盤陣列掉電,硬盤中的備電電容仍然可以為硬盤提供備電,使得硬盤可以繼續(xù)工作一段時(shí)間,即硬盤可以將其緩存中的數(shù)據(jù)搬移到硬盤的存儲(chǔ)空間中。所以,本發(fā)明提供的硬盤陣列,無需再設(shè)置單獨(dú)的備電系統(tǒng)為硬盤陣列備電,從而能夠節(jié)省硬盤陣列的實(shí)現(xiàn)成本。
可選的,當(dāng)硬盤陣列中新增加硬盤時(shí),硬盤陣列中的第一控制器可自動(dòng)將該新增加硬盤的緩存加入到全局共享緩存中統(tǒng)一管理,即建立第一控制器的緩存和該新增加硬盤的緩存之間的映射關(guān)系。如此可以提升全局共享緩存的空間,從而提升硬盤陣列的性能。
可選的,當(dāng)用新硬盤替換硬盤陣列中的原有硬盤時(shí),硬盤陣列中的第一控制器可自動(dòng)將該新硬盤的緩存加入到全局共享緩存中統(tǒng)一管理,即建立第一控制器的緩存和該新硬盤的緩存之間的映射關(guān)系;并從全局共享緩存中刪除原有硬盤的緩存,即刪除第一控制器的緩存和該原有硬盤的緩存之間的映射關(guān)系。如此可以保證全局共享緩存與實(shí)際硬盤對(duì)應(yīng),從而提升硬盤陣列的性能。
可選的,當(dāng)從硬盤陣列中去掉某個(gè)硬盤時(shí),硬盤陣列中的第一控制器可從全局共享緩存中刪除該硬盤的緩存,即刪除第一控制器的緩存和該硬盤的緩存之間的映射關(guān)系。如此可以保證全局共享緩存與實(shí)際硬盤對(duì)應(yīng),從而提升硬盤陣列的性能。
第二方面,本發(fā)明實(shí)施例提供一種硬盤陣列處理操作請(qǐng)求的方法,所述硬盤陣列包括輸入輸出接口,與所述輸入輸出接口連接的交換設(shè)備,以及與所述交換設(shè)備連接的第一控制器和多個(gè)硬盤,所述多個(gè)硬盤均包含緩存,所述方法包括:
所述輸入輸出接口經(jīng)所述交換設(shè)備向所述第一控制器發(fā)送操作請(qǐng)求;
所述第一控制器根據(jù)所述操作請(qǐng)求和所述第一控制器的緩存與所述多個(gè)硬盤的緩存之間的映射關(guān)系,確定所述操作請(qǐng)求待操作的數(shù)據(jù)在目標(biāo)硬盤的緩存中的地址;
所述第一控制器經(jīng)所述交換設(shè)備向所述輸入輸出接口發(fā)送所述地址;
所述輸入輸出接口經(jīng)所述交換設(shè)備對(duì)所述地址執(zhí)行所述操作請(qǐng)求。
本發(fā)明實(shí)施例提供的硬盤陣列處理操作請(qǐng)求的方法,由于該硬盤陣列中的第一控制器的緩存與該硬盤陣列中的多個(gè)硬盤的緩存之間存在映射關(guān)系,因此當(dāng)?shù)谝豢刂破鹘邮盏捷斎胼敵鼋涌诎l(fā)送的操作請(qǐng)求時(shí),第一控制器可以根據(jù)該操作請(qǐng)求和該映射關(guān)系確定出該操作請(qǐng)求待操作的數(shù)據(jù)在目標(biāo)硬盤的緩存中的地址,然后再將該地址發(fā)送給輸入輸出接口,由輸入輸出接口直接經(jīng)交換設(shè)備對(duì)該地址執(zhí)行該操作請(qǐng)求。如此,由于對(duì)硬盤陣列中的硬盤進(jìn)行操作時(shí),操作的數(shù)據(jù)不用再經(jīng)過控制器(具體為控制器的cpu)的搬移,而是可以由輸入輸出接口直接對(duì)該數(shù)據(jù)在目標(biāo)硬盤的緩存中的地址進(jìn)行操作,因此避免了控制器的cpu出現(xiàn)瓶頸,從而能夠保證硬盤陣列的性能不受限制。
可選的,所述多個(gè)硬盤包含第一獨(dú)立硬盤冗余陣列raid,所述多個(gè)硬盤的緩存包含第二raid,所述第一raid的類型和所述第二raid的類型相同。
其中,對(duì)于第一raid和第二raid的具體描述可以參見上述第一方面的相應(yīng)可選方式中對(duì)第一raid和第二raid的相關(guān)描述,此處不再贅述。
可選的,所述硬盤陣列還包括第二控制器,所述第二控制器與所述交換設(shè)備連接;
所述方法還包括:
所述第一控制器經(jīng)所述交換設(shè)備向所述第二控制器發(fā)送所述映射關(guān)系;
所述第二控制器將所述映射關(guān)系緩存在所述第二控制器的緩存中。
可選的,所述方法還包括:
所述第一控制器經(jīng)所述交換設(shè)備向所述第二控制器發(fā)送所述硬盤陣列的系統(tǒng)數(shù)據(jù);
第二控制器將所述硬盤陣列的系統(tǒng)數(shù)據(jù)緩存在所述第二控制器的緩存中。
可選的,所述方法還包括:
所述第一控制器經(jīng)所述交換設(shè)備向所述多個(gè)硬盤中的預(yù)指定硬盤的緩存中寫入所述映射關(guān)系和所述硬盤陣列的系統(tǒng)數(shù)據(jù),所述硬盤陣列的系統(tǒng)數(shù)據(jù)存儲(chǔ)在所述第一控制器的緩存中。
可選的,所述方法還包括:
當(dāng)所述硬盤陣列重新上電后,所述第一控制器和所述第二控制器經(jīng)所述交換設(shè)備從所述預(yù)指定硬盤中讀取所述映射關(guān)系和所述硬盤陣列的系統(tǒng)數(shù)據(jù)。
可選的,所述多個(gè)硬盤的緩存形成所述第一控制器和所述第二控制器共享的全局共享緩存。
可選的,在所述第一控制器發(fā)生故障時(shí),所述方法還包括:
所述輸入輸出接口經(jīng)所述交換設(shè)備向所述第二控制器發(fā)送所述操作請(qǐng)求;
所述第二控制器根據(jù)所述操作請(qǐng)求和所述映射關(guān)系確定所述地址;
所述第二控制器經(jīng)所述交換設(shè)備向所述輸入輸出接口發(fā)送所述地址。
可選的,所述方法還包括:
在所述硬盤陣列掉電時(shí),所述多個(gè)硬盤中的每個(gè)硬盤將該硬盤的緩存中的數(shù)據(jù)寫入該硬盤的存儲(chǔ)空間,其中,該硬盤中的備電電容為該硬盤提供備電。
可選的,所述操作請(qǐng)求為讀請(qǐng)求;或者,
所述操作請(qǐng)求為寫請(qǐng)求。
上述第二方面的各種可選方式的技術(shù)效果的描述具體可參見上述第一方面中對(duì)與這些可選方式相對(duì)應(yīng)的第一方面的各種可選方式的技術(shù)效果的相關(guān)描述,此處不再一一贅述。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地, 下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例。
圖1為現(xiàn)有技術(shù)提供的硬盤陣列的結(jié)構(gòu)示意圖;
圖2為本發(fā)明實(shí)施例提供的存儲(chǔ)系統(tǒng)的架構(gòu)示意圖;
圖3為本發(fā)明實(shí)施例提供的硬盤陣列的結(jié)構(gòu)示意圖一;
圖4為本發(fā)明實(shí)施例提供的硬盤陣列的結(jié)構(gòu)示意圖二;
圖5為本發(fā)明實(shí)施例提供的硬盤陣列的結(jié)構(gòu)示意圖三;
圖6為本發(fā)明實(shí)施例提供的硬盤陣列的結(jié)構(gòu)示意圖四;
圖7為本發(fā)明實(shí)施例提供的硬盤陣列處理操作請(qǐng)求的方法示意圖。
具體實(shí)施方式
本文中字符“/”,一般表示前后關(guān)聯(lián)對(duì)象是一種“或者”的關(guān)系。例如,a/b可以理解為a或者b。
本發(fā)明的說明書和權(quán)利要求書中的術(shù)語“第一”和“第二”等是用于區(qū)別不同的對(duì)象,而不是用于描述對(duì)象的特定順序。例如,第一控制器和第二控制器等是用于區(qū)別不同的控制器,而不是用于描述控制器的特征順序。
在本發(fā)明的描述中,除非另有說明,“多個(gè)”的含義是指兩個(gè)或兩個(gè)以上。例如,多個(gè)硬盤是指兩個(gè)或兩個(gè)以上的硬盤;多個(gè)控制器是指兩個(gè)或兩個(gè)以上的控制器等。
此外,本發(fā)明的描述中所提到的術(shù)語“包括”和“具有”以及它們的任何變形,意圖在于覆蓋不排他的包含。例如包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備沒有限定于已列出的步驟或單元,而是可選地還包括其他沒有列出的步驟或單元,或可選地還包括對(duì)于這些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
以下描述中,為了說明而不是為了限定,提出了諸如特定系統(tǒng)結(jié)構(gòu)、接口、技術(shù)之類的具體細(xì)節(jié),以便透切理解本發(fā)明。然而,本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)清楚,在沒有這些具體細(xì)節(jié)的其它實(shí)施例中也可以實(shí)現(xiàn)本發(fā)明。在其它情況中,省略對(duì)眾所周知的裝置、電路以及方法的詳細(xì)說明,以免不必要的細(xì)節(jié)妨礙本發(fā)明的描述。
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行詳細(xì)地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明的一部分實(shí)施例,而 不是全部的實(shí)施例。
本發(fā)明實(shí)施例提供的硬盤陣列及硬盤陣列處理操作請(qǐng)求的方法可以應(yīng)用于存儲(chǔ)系統(tǒng)中,該存儲(chǔ)系統(tǒng)可以為傳統(tǒng)存儲(chǔ)系統(tǒng),也可以為云存儲(chǔ)系統(tǒng),本發(fā)明不作具體限定。
如圖2所示,本發(fā)明實(shí)施例提供的硬盤陣列中的硬盤可以為固態(tài)硬盤(英文:solidstatedrives,縮寫:ssd)、硬盤驅(qū)動(dòng)器(英文:harddiskdrive,縮寫:hdd)以及混合硬盤(英文:hybriddiskdrive,縮寫:hhd)中的至少一種。其中,ssd采用閃存顆粒來存儲(chǔ);hdd采用磁性碟片來存儲(chǔ),hhd是把磁性硬盤和閃存集成到一起的一種硬盤。
如圖3所示,本發(fā)明實(shí)施例提供一種硬盤陣列,該硬盤陣列包括:
輸入輸出接口20,與所述輸入輸出接口20連接的交換設(shè)備21,以及與所述交換設(shè)備21連接的第一控制器22和多個(gè)硬盤23,所述多個(gè)硬盤23均包含緩存230。
其中,所述輸入輸出接口20,用于經(jīng)所述交換設(shè)備21向所述第一控制器22發(fā)送操作請(qǐng)求,并經(jīng)所述交換設(shè)備21接收所述第一控制器22發(fā)送的所述操作請(qǐng)求待操作的數(shù)據(jù)在目標(biāo)硬盤的緩存中的地址,以及根據(jù)所述地址,經(jīng)所述交換設(shè)備21對(duì)所述地址執(zhí)行所述操作請(qǐng)求;所述第一控制器22,用于經(jīng)所述交換設(shè)備21接收所述輸入輸出接口20發(fā)送的所述操作請(qǐng)求,且根據(jù)所述操作請(qǐng)求和所述第一控制器22的緩存與所述多個(gè)硬盤23的緩存230之間的映射關(guān)系確定所述地址,以及經(jīng)所述交換設(shè)備21向所述輸入輸出接口20發(fā)送所述地址。
其中,當(dāng)所述操作請(qǐng)求是讀請(qǐng)求時(shí),所述操作請(qǐng)求待操作的數(shù)據(jù)在目標(biāo)硬盤的緩存中的地址是指目標(biāo)硬盤的緩存中用于緩存待讀取的數(shù)據(jù)的地址;當(dāng)所述操作請(qǐng)求是寫請(qǐng)求時(shí),所述操作請(qǐng)求待操作的數(shù)據(jù)在目標(biāo)硬盤的緩存中的地址是指目標(biāo)硬盤的緩存中用于緩存待寫入的數(shù)據(jù)的地址。
可選的,所述交換設(shè)備21,用于對(duì)經(jīng)所述交換設(shè)備21的數(shù)據(jù)進(jìn)行交換處理;所述多個(gè)硬盤23,用于存儲(chǔ)需存儲(chǔ)至所述硬盤陣列中的數(shù)據(jù)。
可選的,所述操作請(qǐng)求為讀請(qǐng)求;或者,
所述操作請(qǐng)求為寫請(qǐng)求。
具體的,當(dāng)上述輸入輸出接口發(fā)送給第一控制器的操作請(qǐng)求為讀請(qǐng)求 時(shí),第一控制器發(fā)送給輸入輸出接口的地址為讀地址,輸入輸出接口經(jīng)交換設(shè)備對(duì)該讀地址執(zhí)行該讀請(qǐng)求。當(dāng)輸入輸出接口發(fā)送給第一控制器的操作請(qǐng)求為寫請(qǐng)求時(shí),第一控制器發(fā)送給輸入輸出接口的地址為寫地址,輸入輸出接口經(jīng)交換設(shè)備對(duì)該寫地址執(zhí)行該寫請(qǐng)求。
本發(fā)明實(shí)施例中,上述輸入輸出接口根據(jù)第一控制器發(fā)送的地址,經(jīng)交換設(shè)備對(duì)該地址執(zhí)行操作請(qǐng)求,包括:
當(dāng)?shù)谝豢刂破靼l(fā)送給輸入輸出接口的地址為讀地址時(shí),輸入輸出接口根據(jù)第一控制器發(fā)送的讀地址,經(jīng)交換設(shè)備對(duì)該讀地址進(jìn)行讀數(shù)據(jù)的操作;當(dāng)?shù)谝豢刂破靼l(fā)送給輸入輸出接口的地址為寫地址時(shí),輸入輸出接口根據(jù)第一控制器發(fā)送的寫地址經(jīng)交換設(shè)備對(duì)該寫地址進(jìn)行寫數(shù)據(jù)的操作。
其中,上述輸入輸出接口根據(jù)第一控制器發(fā)送的讀地址,經(jīng)交換設(shè)備對(duì)該讀地址進(jìn)行讀數(shù)據(jù)的操作,可以理解為:輸入輸出接口根據(jù)第一控制器發(fā)送的讀地址,經(jīng)交換設(shè)備從該讀地址指示的緩存中讀取數(shù)據(jù)。上述輸入輸出接口根據(jù)第一控制器發(fā)送的寫地址,經(jīng)交換設(shè)備對(duì)該寫地址進(jìn)行寫數(shù)據(jù)的操作,可以理解為:輸入輸出接口根據(jù)第一控制器發(fā)送的寫地址,經(jīng)交換設(shè)備向該寫地址指示的緩存中寫入數(shù)據(jù)。讀地址指示的緩存為目標(biāo)硬盤中緩存待讀取數(shù)據(jù)的緩存;寫地址指示的緩存為目標(biāo)硬盤中需緩存待寫入數(shù)據(jù)的緩存。
本發(fā)明實(shí)施例中,當(dāng)需要在硬盤陣列中存儲(chǔ)數(shù)據(jù)時(shí),可將該數(shù)據(jù)存儲(chǔ)至硬盤陣列的硬盤中。例如,可將該數(shù)據(jù)存儲(chǔ)至硬盤陣列中的全部或若干個(gè)硬盤中。
具體的,本發(fā)明實(shí)施例提供的硬盤陣列中,當(dāng)輸入輸出接口向某個(gè)硬盤的緩存中寫入數(shù)據(jù)后,該硬盤的cpu會(huì)將該數(shù)據(jù)從該硬盤的緩存中搬移到該硬盤的存儲(chǔ)空間中;當(dāng)輸入輸出接口從某個(gè)硬盤的緩存中讀取數(shù)據(jù)時(shí),如果該數(shù)據(jù)沒有在該硬盤的緩存中,則該硬盤的cpu可將該數(shù)據(jù)從該硬盤的存儲(chǔ)空間中搬移到該硬盤的緩存中,從而再由輸入輸出接口從該硬盤的緩存中讀取該數(shù)據(jù)。
可選的,上述硬盤的存儲(chǔ)空間可以為硬盤中的非易失性存儲(chǔ)器(英文:nonvolatilememory)。該非易失性存儲(chǔ)器可以包括只讀存儲(chǔ)器(英文:read-onlymemory,縮寫:rom)、可編程只讀存儲(chǔ)器(英文: programmableread-onlymemory,縮寫:prom)、可擦寫可編程只讀存儲(chǔ)器(英文:erasableprogrammableread-onlymemory,縮寫:eprom)、電可擦除只讀存儲(chǔ)器(英文:electricallyerasableprogrammableread-onlymemory,縮寫:eeprom)以及閃存(英文:flashmemory)中的至少一種。
可選的,本發(fā)明實(shí)施例中的閃存可以為nandflash,也可以為norflash,具體的可以根據(jù)實(shí)際使用的硬盤來確定,本發(fā)明不作限定。
可選的,本發(fā)明實(shí)施例提供的硬盤陣列中,每個(gè)硬盤的緩存還可以緩存第一控制器的緩存與多個(gè)硬盤的緩存之間的映射關(guān)系、需要對(duì)該硬盤進(jìn)行讀或?qū)懖僮鞯臄?shù)據(jù)和硬盤陣列的系統(tǒng)數(shù)據(jù)中的至少一項(xiàng)。
上述硬盤陣列的系統(tǒng)數(shù)據(jù)可以為硬盤陣列的元數(shù)據(jù)或硬盤陣列的鏡像數(shù)據(jù)等;上述硬盤的系統(tǒng)數(shù)據(jù)可以為硬盤的元數(shù)據(jù)或硬盤的鏡像數(shù)據(jù)等。其中,元數(shù)據(jù)又稱中介數(shù)據(jù)、中繼數(shù)據(jù),其為描述數(shù)據(jù)(例如本發(fā)明實(shí)施例中需要進(jìn)行讀或?qū)懙臄?shù)據(jù))的數(shù)據(jù);元數(shù)據(jù)主要是描述數(shù)據(jù)屬性(英文:property)的信息,其支持如指示存儲(chǔ)位置、歷史數(shù)據(jù)、資源查找以及文件記錄等功能。鏡像數(shù)據(jù)為對(duì)某些數(shù)據(jù)的備份數(shù)據(jù),例如本發(fā)明實(shí)施例中,鏡像數(shù)據(jù)為對(duì)元數(shù)據(jù)的備份數(shù)據(jù)(鏡像數(shù)據(jù)存在于硬盤陣列中包括多個(gè)控制器的場(chǎng)景)。
本發(fā)明實(shí)施例中,可以由第一控制器預(yù)先在第一控制器中建立第一控制器的緩存與多個(gè)硬盤的緩存之間的映射關(guān)系。其中,第一控制器建立第一控制器的緩存與多個(gè)硬盤的緩存之間的映射關(guān)系,可以理解為:
第一控制器將第一控制器的緩存和硬盤陣列中的多個(gè)硬盤的緩存拉通管理。具體的,第一控制器將多個(gè)硬盤的緩存的地址映射到第一控制器的內(nèi)存中,以將多個(gè)硬盤的緩存分別依次映射到第一控制器的緩存之后,即將第一控制器的緩存和多個(gè)硬盤的緩存統(tǒng)一順序編址。
本發(fā)明實(shí)施例提供的硬盤陣列中,通過第一控制器建立第一控制器的緩存和多個(gè)硬盤的緩存之間的映射關(guān)系,可以使得第一控制器的緩存和多個(gè)硬盤的緩存在邏輯上連通,從而能夠支持輸入輸出接口在邏輯上進(jìn)行直接訪問(由于輸入輸出接口可以直接訪問第一控制器的內(nèi)存,因此當(dāng)將硬盤的緩存映射到第一控制器的內(nèi)存之后,輸入輸出接口也可以直接訪問硬 盤的緩存)。
進(jìn)一步地,通過第一控制器預(yù)先在第一控制器中建立第一控制器的緩存和多個(gè)硬盤的緩存之間的映射關(guān)系,當(dāng)需對(duì)多個(gè)硬盤中的某些硬盤進(jìn)行讀或?qū)憯?shù)據(jù)的操作時(shí),可以由第一控制器(具體由第一控制器的cpu完成)根據(jù)該映射關(guān)系,確定出進(jìn)行讀或?qū)憯?shù)據(jù)的地址,并將該地址指示給輸入輸出接口,由輸入輸出接口直接根據(jù)該地址,對(duì)該地址進(jìn)行讀或?qū)憯?shù)據(jù)的操作,即對(duì)該地址指示的緩存進(jìn)行讀或?qū)憯?shù)據(jù)的操作,如此可以避免控制器對(duì)數(shù)據(jù)的搬移,從而可以避免控制器的cpu出現(xiàn)瓶頸,進(jìn)而能夠提升硬盤陣列的性能。
本發(fā)明實(shí)施例中,輸入輸出接口直接對(duì)硬盤的緩存進(jìn)行讀或?qū)憯?shù)據(jù)的操作是由輸入輸出接口采用dma技術(shù)實(shí)現(xiàn)的。具體可以通過在輸入輸出接口中集成一個(gè)dma功能模塊實(shí)現(xiàn),例如可以在輸入輸出接口中集成一個(gè)dma芯片實(shí)現(xiàn)。
本發(fā)明實(shí)施例提供的硬盤陣列中,輸入輸出接口的數(shù)量可以為一個(gè)或多個(gè),具體可根據(jù)硬盤陣列的應(yīng)用場(chǎng)景/需求來確定,本發(fā)明不作限定。本發(fā)明實(shí)施例為了描述清楚、方便,所涉及到輸入輸出接口的各個(gè)附圖中均以硬盤陣列中包括一個(gè)輸入輸出接口為例進(jìn)行示例性的說明,對(duì)于硬盤陣列中包括多個(gè)輸入輸出接口的情況與硬盤陣列中包括一個(gè)輸入輸出接口的情況類似,此處不再贅述。
上述交換設(shè)備具體可以通過一個(gè)交換器實(shí)現(xiàn)。交換設(shè)備主要用于對(duì)經(jīng)過其的數(shù)據(jù)進(jìn)行交換處理。其中,經(jīng)過交換設(shè)備的數(shù)據(jù)可以為需對(duì)硬盤進(jìn)行讀或?qū)懖僮鞯臄?shù)據(jù),也可以為需備份的第一控制器的緩存中存儲(chǔ)的系統(tǒng)數(shù)據(jù)等。本發(fā)明實(shí)施例的硬盤陣列中的交換設(shè)備的數(shù)量可以為一個(gè)或多個(gè),具體可根據(jù)硬盤陣列的應(yīng)用場(chǎng)景/需求來確定,本發(fā)明不作限定。本發(fā)明實(shí)施例為了描述清楚、方便,所涉及到交換設(shè)備的各個(gè)附圖中均以硬盤陣列中包括一個(gè)交換設(shè)備為例進(jìn)行示例性的說明,對(duì)于硬盤陣列中包括多個(gè)交換設(shè)備的情況(數(shù)據(jù)需經(jīng)過多個(gè)交換設(shè)備的交換處理),與硬盤陣列中包括一個(gè)交換設(shè)備的情況類似,此處不再贅述。
本發(fā)明實(shí)施例提供的硬盤陣列,由于該硬盤陣列中的第一控制器的緩存與該硬盤陣列中的多個(gè)硬盤的緩存之間存在映射關(guān)系,因此當(dāng)?shù)谝豢刂? 器接收到輸入輸出接口發(fā)送的操作請(qǐng)求時(shí),第一控制器可以根據(jù)該操作請(qǐng)求和該映射關(guān)系確定出該操作請(qǐng)求待操作的數(shù)據(jù)在目標(biāo)硬盤的緩存中的地址,然后再將該地址發(fā)送給輸入輸出接口,由輸入輸出接口直接經(jīng)交換設(shè)備對(duì)該地址執(zhí)行該操作請(qǐng)求。如此,由于對(duì)硬盤陣列中的硬盤進(jìn)行操作時(shí),操作的數(shù)據(jù)不用再經(jīng)過控制器(具體為控制器的cpu)的搬移,而是可以由輸入輸出接口直接對(duì)該數(shù)據(jù)在目標(biāo)硬盤的緩存中的地址進(jìn)行操作,因此避免了控制器的cpu出現(xiàn)瓶頸,從而能夠保證硬盤陣列的性能不受限制。
可選的,所述多個(gè)硬盤23包含第一raid,所述多個(gè)硬盤的緩存包含第二raid,所述第一raid的類型和所述第二raid的類型相同。
本發(fā)明實(shí)施例中,第一raid和第二raid的具體實(shí)現(xiàn)形式可以為下述(1)和(2)的一種:
(1)結(jié)合圖3,如圖4所示,本發(fā)明實(shí)施例提供的硬盤陣列中,所述多個(gè)硬盤23形成至少兩個(gè)第一raid,所述多個(gè)硬盤23的緩存230形成至少兩個(gè)第二raid,所述至少兩個(gè)第一raid和所述至少兩個(gè)第二raid一一對(duì)應(yīng),且一一對(duì)應(yīng)的第一raid和第二raid的類型相同。
在(1)這種情況下,所述第一控制器22,還用于建立每個(gè)第二raid中的各個(gè)緩存之間的映射關(guān)系,并建立一一對(duì)應(yīng)的第一raid中的各個(gè)硬盤和第二raid中的各個(gè)緩存之間的映射關(guān)系。
如圖4所示的實(shí)施例中,多個(gè)硬盤形成的第一raid的數(shù)量和多個(gè)硬盤的緩存形成的第二raid的數(shù)量相同,即一個(gè)第一raid唯一對(duì)應(yīng)一個(gè)第二raid;且每個(gè)第一raid中包括若干個(gè)硬盤,每個(gè)第二raid中包括若干個(gè)硬盤的緩存。
具體的,可以由若干個(gè)硬盤形成一個(gè)第一raid,且這些硬盤的緩存形成一個(gè)第二raid。如此,每個(gè)第一raid中的硬盤均與和其對(duì)應(yīng)的第二raid中的緩存一一對(duì)應(yīng),即每個(gè)硬盤均與其緩存對(duì)應(yīng)。
本發(fā)明實(shí)施例中,類型是指raid的類型。例如,本發(fā)明實(shí)施例中raid的類型可以包括raid0、raid1、raid2、raid3、raid4、raid5、raid6、raid7、raid10和raid53等。
上述一一對(duì)應(yīng)的第一raid和第二raid的類型相同具體可以理解為: 假設(shè)某個(gè)第一raid的類型為raid0,則與其對(duì)應(yīng)的第二raid的類型也為raid0。具體可參見如圖4所示的硬盤陣列的結(jié)構(gòu),此處不再贅述。
上述第一控制器建立每個(gè)第二raid中的各個(gè)緩存之間的映射關(guān)系,可以理解為:
第一控制器將每個(gè)第二raid中的各個(gè)緩存拉通管理。具體的,第一控制器將每個(gè)第二raid中的各個(gè)緩存統(tǒng)一進(jìn)行地址劃分,以保證在每個(gè)第二raid中的所有地址均是唯一的。
上述第一控制器建立一一對(duì)應(yīng)的第一raid中的各個(gè)硬盤和第二raid中的各個(gè)緩存之間的映射關(guān)系,可以理解為:
第一控制器將一一對(duì)應(yīng)的第一raid中的各個(gè)硬盤和第二raid中的各個(gè)緩存拉通管理。
進(jìn)一步地,第一控制器建立一一對(duì)應(yīng)的第一raid中的各個(gè)硬盤和第二raid中的各個(gè)緩存之間的映射關(guān)系,可以保證第一控制器能夠根據(jù)輸入輸出接口發(fā)送的操作請(qǐng)求(為讀請(qǐng)求或?qū)懻?qǐng)求)直接確定出需進(jìn)行讀或?qū)懖僮鞯挠脖P,從而使得輸入輸出接口可以直接對(duì)該硬盤進(jìn)行讀或?qū)憯?shù)據(jù)的操作。例如,當(dāng)輸入輸出接口對(duì)該硬盤進(jìn)行寫數(shù)據(jù)的操作時(shí),若輸入輸出接口向該硬盤的緩存中寫入數(shù)據(jù),則該硬盤的cpu可直接將其緩存中的數(shù)據(jù)搬移到該硬盤的存儲(chǔ)空間中,以完成對(duì)該硬盤進(jìn)行寫數(shù)據(jù)的操作,從而提高寫數(shù)據(jù)的效率。
需要說明的是,本發(fā)明實(shí)施例提供的硬盤陣列中,上述第一raid的形成/劃分,以及第二raid的形成/劃分均是邏輯上的劃分,其為第一控制器執(zhí)行相應(yīng)軟件時(shí)的邏輯上的概念。具體的,第一raid為在邏輯上將硬盤陣列中的多個(gè)硬盤劃分成的硬盤組;第二raid為在邏輯上將多個(gè)硬盤的緩存劃分成的緩存組。
(2)結(jié)合圖3,如圖5所示,本發(fā)明實(shí)施例提供的硬盤陣列中,所述多個(gè)硬盤23形成至少一個(gè)第一raid,所述多個(gè)硬盤23的緩存230形成一個(gè)第二raid。
在(2)這種情況下,所述第一控制器22,還用于建立第二raid中的各個(gè)緩存之間的映射關(guān)系。
如圖5所示的硬盤陣列中,由于所有硬盤的緩存只形成一個(gè)第二 raid,因此,多個(gè)硬盤中的空閑硬盤(例如沒有存儲(chǔ)數(shù)據(jù)的硬盤)的緩存也可以被劃分到第二raid中,如此第二raid就可以緩存更多的數(shù)據(jù),且在這種情況下,輸入輸出接口可以直接對(duì)第二raid中的任意一個(gè)緩存進(jìn)行讀或?qū)憯?shù)據(jù)的操作,而無需再對(duì)應(yīng)到第一raid中的每個(gè)硬盤。但是這種情況下,當(dāng)某個(gè)緩存中的數(shù)據(jù)需要存儲(chǔ)至該緩存所屬的硬盤的存儲(chǔ)空間時(shí),還需要第一控制器指示該緩存所屬的硬盤將該緩存中的數(shù)據(jù)存儲(chǔ)至該硬盤的存儲(chǔ)空間(具體可以由該硬盤的cpu進(jìn)行數(shù)據(jù)搬移動(dòng)作)。
上述第一控制器建立第二raid中的各個(gè)緩存之間的映射關(guān)系,可以理解為:
第一控制器將第二raid中的各個(gè)緩存拉通管理。具體的,第一控制器將第二raid中的各個(gè)緩存統(tǒng)一進(jìn)行地址劃分,以保證在第二raid中的所有地址均是唯一的。
可選的,本發(fā)明實(shí)施例中,第一控制器建立第一控制器的緩存和多個(gè)硬盤的緩存之間的映射關(guān)系;上述(1)中第一控制器建立每個(gè)第二raid中的各個(gè)緩存之間的映射關(guān)系,并建立一一對(duì)應(yīng)的第一raid中的各個(gè)硬盤和第二raid中的各個(gè)緩存之間的映射關(guān)系;以及上述(2)中第一控制器建立第二raid中的各個(gè)緩存之間的映射關(guān)系均可以由第一控制器采用nvme1.2協(xié)議實(shí)現(xiàn)。
可選的,結(jié)合圖3,如圖6所示,本發(fā)明實(shí)施例提供的硬盤陣列中,所述硬盤陣列還包括第二控制器24,所述第二控制器24與所述交換設(shè)備21連接。
所述第一控制器22,還用于經(jīng)所述交換設(shè)備21向所述第二控制器24發(fā)送所述映射關(guān)系;所述第二控制器24,用于接收所述第一控制器22發(fā)送的所述映射關(guān)系,并將所述映射關(guān)系緩存在所述第二控制器24的緩存中。
本發(fā)明實(shí)施例中,通過將第一控制器的緩存與多個(gè)硬盤的緩存之間的映射關(guān)系備份在第二控制器的緩存中,可以在第一控制器發(fā)生故障時(shí),由第二控制器代替第一控制器對(duì)硬盤進(jìn)行讀或?qū)憯?shù)據(jù)的操作,從而能夠避免硬盤陣列無法正常工作,提高硬盤陣列的可靠性。
可選的,所述第一控制器22,還用于經(jīng)所述交換設(shè)備21向所述第二 控制器24發(fā)送所述硬盤陣列的系統(tǒng)數(shù)據(jù);所述第二控制器24,用于接收所述第一控制器22發(fā)送的所述硬盤陣列的系統(tǒng)數(shù)據(jù),并將所述硬盤陣列的系統(tǒng)數(shù)據(jù)緩存在所述第二控制器24的緩存中。
可選的,所述第一控制器22,還用于經(jīng)所述交換設(shè)備21向所述多個(gè)硬盤23中的預(yù)指定硬盤的緩存中寫入所述映射關(guān)系和所述硬盤陣列的系統(tǒng)數(shù)據(jù),所述硬盤陣列的系統(tǒng)數(shù)據(jù)緩存在所述第一控制器的緩存中。
本發(fā)明實(shí)施例中,通過將第一控制器的緩存中緩存的第一控制器的緩存與多個(gè)硬盤的緩存之間的映射關(guān)系以及硬盤陣列的系統(tǒng)數(shù)據(jù)備份在第二控制器的緩存中,可以在第一控制器發(fā)生故障時(shí),由第二控制器代替第一控制器確定待操作的數(shù)據(jù)在目標(biāo)硬盤的緩存中的地址,從而能夠避免硬盤陣列無法正常工作,提高硬盤陣列的可靠性。
通過將第一控制器的緩存中緩存的第一控制器的緩存與多個(gè)硬盤的緩存之間的映射關(guān)系以及硬盤陣列的系統(tǒng)數(shù)據(jù)備份到預(yù)指定硬盤的緩存中,可以在硬盤陣列掉電時(shí),由該預(yù)指定硬盤的cpu將該硬盤陣列的系統(tǒng)數(shù)據(jù)寫入該預(yù)指定硬盤的存儲(chǔ)空間中,從而在硬盤陣列重新上電后,硬盤陣列中的控制器(包括第一控制器和第二控制器)可將該映射關(guān)系和該硬盤陣列的系統(tǒng)數(shù)據(jù)恢復(fù)到控制器的緩存中,進(jìn)而能夠保證硬盤陣列在掉電前控制器的緩存中的數(shù)據(jù)和硬盤陣列在重新上電后控制器的緩存中的數(shù)據(jù)一致,即保證硬盤陣列在掉電后控制器的緩存中的數(shù)據(jù)不會(huì)丟失。
可選的,在將第一控制器的緩存中緩存的第一控制器的緩存與多個(gè)硬盤的緩存之間的映射關(guān)系以及硬盤陣列的系統(tǒng)數(shù)據(jù)備份到預(yù)指定硬盤的緩存中之后,若硬盤陣列掉電,則該預(yù)指定硬盤的cpu可將其緩存中的該映射關(guān)系和該硬盤陣列的系統(tǒng)數(shù)據(jù)寫入該預(yù)指定硬盤的存儲(chǔ)空間中,以防止該映射關(guān)系和該硬盤陣列的系統(tǒng)數(shù)據(jù)丟失。
進(jìn)一步地,所述第一控制器,還用于當(dāng)所述硬盤陣列重新上電后,經(jīng)所述交換設(shè)備從所述預(yù)指定硬盤中讀取所述映射關(guān)系和所述硬盤陣列的系統(tǒng)數(shù)據(jù);所述第二控制器,還用于當(dāng)所述硬盤陣列重新上電后,經(jīng)所述交換設(shè)備從所述預(yù)指定硬盤中讀取所述映射關(guān)系和所述硬盤陣列的系統(tǒng)數(shù)據(jù)。
如此,本發(fā)明實(shí)施例提供的硬盤陣列,在硬盤陣列重新上電后,通過 控制器將硬盤中存儲(chǔ)的第一控制器的緩存與多個(gè)硬盤的緩存之間的映射關(guān)系以及硬盤陣列的系統(tǒng)數(shù)據(jù)恢復(fù)到控制器的緩存中,能夠保證硬盤陣列在掉電前和重新上電后控制器的緩存中的數(shù)據(jù)一致,即保證硬盤陣列在掉電后控制器的緩存中的數(shù)據(jù)不會(huì)丟失。
可選的,本發(fā)明實(shí)施例提供的硬盤陣列中,所述多個(gè)硬盤的緩存形成所述第一控制器和所述第二控制器共享的全局共享緩存。
在硬盤陣列中的多個(gè)硬盤的緩存形成第一控制器和第二控制器共享的全局共享緩存之后,第一控制器和第二控制器均可以對(duì)該全局共享緩存進(jìn)行讀或?qū)憯?shù)據(jù)的操作。如此,某個(gè)控制器或者輸入輸出接口可以將鏡像數(shù)據(jù)(即需要備份的數(shù)據(jù))緩存至全局共享緩存中,而無需再針對(duì)不同的控制器單獨(dú)緩存鏡像數(shù)據(jù),且當(dāng)某個(gè)控制器或者輸入輸出接口將鏡像數(shù)據(jù)(即需要備份的數(shù)據(jù))緩存至全局共享緩存中后,硬盤陣列中的第一控制器和第二控制器均可以訪問該鏡像數(shù)據(jù),與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例節(jié)省了控制器與控制器之間的鏡像通道,簡(jiǎn)化了鏡像過程,提升了數(shù)據(jù)交互效率。
可選的,所述第二控制器,還用于在所述第一控制器發(fā)生故障時(shí),經(jīng)所述交換設(shè)備接收所述輸入輸出接口發(fā)送的所述操作請(qǐng)求,且根據(jù)所述操作請(qǐng)求和所述映射關(guān)系確定所述地址,以及經(jīng)所述交換設(shè)備向所述輸入輸出接口發(fā)送所述地址。
由于第二控制器的緩存中備份了第一控制器的緩存與多個(gè)硬盤的緩存之間的映射關(guān)系,因此當(dāng)?shù)谝豢刂破靼l(fā)生故障時(shí),可以由第二控制器代替第一控制器確定輸入輸出接口發(fā)送的操作請(qǐng)求待操作的數(shù)據(jù)在目標(biāo)硬盤的緩存中的地址,并經(jīng)交換設(shè)備將該地址發(fā)送給輸入輸出接口,由輸入輸出接口完成該操作請(qǐng)求。如此可以提高硬盤陣列的可靠性。
可選的,所述多個(gè)硬盤中的每個(gè)硬盤,還用于在所述硬盤陣列掉電時(shí),將該硬盤的緩存中的數(shù)據(jù)寫入該硬盤的存儲(chǔ)空間,其中,該硬盤中的備電電容為該硬盤提供備電。
本領(lǐng)域技術(shù)人員可以理解,在硬盤陣列掉電后,硬盤將其緩存中的數(shù)據(jù)寫入其存儲(chǔ)空間的過程具體可以由硬盤的cpu完成。
本發(fā)明實(shí)施例提供的硬盤陣列中,由于將第一控制器的緩存中緩存的 數(shù)據(jù)(包括第一控制器的緩存與多個(gè)硬盤的緩存之間的映射關(guān)系和硬盤陣列的系統(tǒng)數(shù)據(jù))寫入了由多個(gè)硬盤的緩存形成的全局共享緩存中,且當(dāng)硬盤陣列掉電時(shí),每個(gè)硬盤均可以將其緩存中的數(shù)據(jù)均寫入該硬盤的存儲(chǔ)空間,因此可以保證硬盤陣列的控制器的緩存中的數(shù)據(jù)不會(huì)丟失,從而提高硬盤陣列的可靠性。
進(jìn)一步地,由于上述操作請(qǐng)求待操作的數(shù)據(jù),即讀或?qū)懙臄?shù)據(jù)也是直接由輸入輸出接口從硬盤的緩存中讀取或?qū)懭胗脖P的緩存中,因此當(dāng)硬盤陣列掉電時(shí),該數(shù)據(jù)也會(huì)被硬盤的cpu搬移到該硬盤的存儲(chǔ)空間中,即該數(shù)據(jù)也不會(huì)丟失,從而保證了數(shù)據(jù)的連續(xù)性。
當(dāng)硬盤陣列掉電時(shí),由于硬盤的系統(tǒng)數(shù)據(jù)也會(huì)被該硬盤的cpu搬移到該硬盤的存儲(chǔ)空間中,即該硬盤的系統(tǒng)數(shù)據(jù)也不會(huì)丟失,從而保證了該硬盤的可靠性。
需要說明的是,當(dāng)硬盤陣列掉電后,由于硬盤陣列的供電電源斷開,因此硬盤陣列的控制器(例如第一控制器和第二控制器)將無法工作,然而由于本發(fā)明實(shí)施例的硬盤陣列的每個(gè)硬盤中都有一個(gè)備電電容,且該備電電容可以為硬盤提供一段時(shí)間(通常為幾分鐘,例如2分鐘至5分鐘)的備電,因此即使硬盤陣列掉電,硬盤中的備電電容仍然可以為硬盤提供備電,使得硬盤可以繼續(xù)工作一段時(shí)間,即硬盤可以將其緩存中的數(shù)據(jù)搬移到硬盤的存儲(chǔ)空間中。如此,本發(fā)明實(shí)施例提供的硬盤陣列,無需再設(shè)置單獨(dú)的備電系統(tǒng)為硬盤陣列備電,從而能夠節(jié)省硬盤陣列的實(shí)現(xiàn)成本。
其中,上述備電電容可以為鉭電容,也可以為其他任何滿足硬盤制造需求的電容,具體的可以根據(jù)硬盤的實(shí)際制造需求來確定,本發(fā)明不作限定。
需要說明的是,本發(fā)明實(shí)施例中的控制器(包括第一控制器和第二控制器)包括cpu和緩存等硬件組件。由于本發(fā)明實(shí)施例中控制器的內(nèi)部硬件結(jié)構(gòu)與現(xiàn)有技術(shù)相同,因此本發(fā)明實(shí)施例為了清楚、方便地示意輸入輸出接口、交換設(shè)備、控制器、硬盤以及硬盤的緩存等之間的關(guān)系,在上述實(shí)施例示意的圖3至圖6中均未畫出控制器的內(nèi)部硬件結(jié)構(gòu)。
本發(fā)明實(shí)施例提供的硬盤陣列中,由于該硬盤陣列中的第一控制器的緩存與該硬盤陣列中的多個(gè)硬盤的緩存之間存在映射關(guān)系,因此當(dāng)?shù)谝豢? 制器接收到輸入輸出接口發(fā)送的讀請(qǐng)求或者寫請(qǐng)求時(shí),第一控制器可以確定出該讀請(qǐng)求待讀取的數(shù)據(jù)在目標(biāo)硬盤的緩存中的地址(即讀地址)或者該寫請(qǐng)求待寫入的數(shù)據(jù)在目標(biāo)硬盤的緩存中的地址(即寫地址),從而將該讀地址或者該寫地址發(fā)送給輸入輸出接口,由輸入輸出接口采用dma技術(shù),根據(jù)該讀地址對(duì)該讀地址指示的緩存進(jìn)行讀數(shù)據(jù)的操作,或者由輸入輸出接口采用dma技術(shù),根據(jù)該寫地址對(duì)該寫地址指示的緩存進(jìn)行寫數(shù)據(jù)的操作,從而操作的數(shù)據(jù)無需再經(jīng)過第一控制器的搬移,而是直接由輸入輸出接口讀或?qū)懙较鄳?yīng)硬盤的緩存中,進(jìn)而能夠防止控制器的cpu出現(xiàn)瓶頸,以提升硬盤陣列的性能。
可選的,本發(fā)明實(shí)施例中,當(dāng)硬盤陣列中新增加硬盤時(shí),硬盤陣列中的第一控制器可自動(dòng)將該新增加硬盤的緩存加入到全局共享緩存中統(tǒng)一管理,即建立第一控制器的緩存和該新增加硬盤的緩存之間的映射關(guān)系。如此可以提升全局共享緩存的空間,從而提升硬盤陣列的性能。
可選的,當(dāng)用新硬盤替換硬盤陣列中的原有硬盤時(shí),硬盤陣列中的第一控制器可自動(dòng)將該新硬盤的緩存加入到全局共享緩存中統(tǒng)一管理,即建立第一控制器的緩存和該新硬盤的緩存之間的映射關(guān)系;并從全局共享緩存中刪除原有硬盤的緩存,即刪除第一控制器的緩存和該原有硬盤的緩存之間的映射關(guān)系。如此可以保證全局共享緩存與實(shí)際硬盤對(duì)應(yīng),從而提升硬盤陣列的性能。
可選的,當(dāng)從硬盤陣列中去掉某個(gè)硬盤時(shí),硬盤陣列中的第一控制器可從全局共享緩存中刪除該硬盤的緩存,即刪除第一控制器的緩存和該硬盤的緩存之間的映射關(guān)系。如此可以保證全局共享緩存與實(shí)際硬盤對(duì)應(yīng),從而提升硬盤陣列的性能。
如圖7所示,本發(fā)明實(shí)施例提供一種硬盤陣列處理操作請(qǐng)求的方法,該硬盤陣列包括輸入輸出接口,與該輸入輸出接口連接的交換設(shè)備,以及與該交換設(shè)備連接的第一控制器和多個(gè)硬盤,該多個(gè)硬盤均包含緩存,該方法包括:
s101、輸入輸出接口經(jīng)交換設(shè)備向第一控制器發(fā)送操作請(qǐng)求。
本發(fā)明實(shí)施例中,操作請(qǐng)求用于請(qǐng)求讀或?qū)憯?shù)據(jù),操作請(qǐng)求可以包括 讀請(qǐng)求和寫請(qǐng)求。其中,讀請(qǐng)求用于請(qǐng)求讀數(shù)據(jù);寫請(qǐng)求用于請(qǐng)求寫數(shù)據(jù)。具體的,讀請(qǐng)求是對(duì)硬盤陣列中的硬盤進(jìn)行讀數(shù)據(jù)的操作;寫請(qǐng)求是對(duì)硬盤陣列中的硬盤進(jìn)行寫數(shù)據(jù)的操作。
對(duì)于操作請(qǐng)求的具體描述可參見上述如圖3所示的實(shí)施例中對(duì)操作請(qǐng)求的相關(guān)描述,此處不再贅述。
s102、第一控制器根據(jù)操作請(qǐng)求和第一控制器的緩存與多個(gè)硬盤的緩存之間的映射關(guān)系,確定操作請(qǐng)求待操作的數(shù)據(jù)在目標(biāo)硬盤的緩存中的地址。
s103、第一控制器經(jīng)交換設(shè)備向輸入輸出接口發(fā)送該地址。
s104、輸入輸出接口經(jīng)交換設(shè)備對(duì)該地址執(zhí)行該操作請(qǐng)求。
其中,本發(fā)明實(shí)施例提供的硬盤陣列處理操作請(qǐng)求的方法應(yīng)用的硬盤陣列可以為上述如圖3至圖6任意之一所示的實(shí)施例中的硬盤陣列,對(duì)于該硬盤陣列的具體描述可參見上述如圖3至圖6任意之一所示的實(shí)施例中對(duì)硬盤陣列的相關(guān)描述,此處不再贅述。
可選的,在本發(fā)明提供的硬盤陣列中,每個(gè)硬盤的緩存均可以緩存該硬盤的系統(tǒng)數(shù)據(jù)。
可選的,本發(fā)明實(shí)施例提供的硬盤陣列中,每個(gè)硬盤的緩存還可以緩存第一控制器的緩存與多個(gè)硬盤的緩存之間的映射關(guān)系、需要對(duì)該硬盤進(jìn)行讀或?qū)懖僮鞯臄?shù)據(jù)和硬盤陣列的系統(tǒng)數(shù)據(jù)中的至少一項(xiàng)。
本發(fā)明實(shí)施例中,由于第一控制器可以建立第一控制器的緩存與多個(gè)硬盤的緩存之間的映射關(guān)系,因此第一控制器可以根據(jù)輸入輸出接口發(fā)送的操作請(qǐng)求,確定出需讀或?qū)憯?shù)據(jù)的地址,該地址可以為多個(gè)硬盤中的某個(gè)硬盤的緩存中的地址。
對(duì)于第一控制器建立第一控制器的緩存與多個(gè)硬盤的緩存之間的映射關(guān)系的描述具體可參見上述如圖3所示的實(shí)施例中的相關(guān)描述,此處不再贅述。
具體的,若操作請(qǐng)求為讀請(qǐng)求,則第一控制器可根據(jù)該讀請(qǐng)求查詢第一控制器的緩存中緩存的第一控制器的緩存與多個(gè)硬盤的緩存之間的映射關(guān)系,并得到需要讀取的數(shù)據(jù)存放的目標(biāo)硬盤的緩存的地址,然后第一控制器經(jīng)交換設(shè)備將該緩存的地址發(fā)送給輸入輸出接口,由輸入輸出接口 經(jīng)交換設(shè)備從該地址指示的緩存中讀取該數(shù)據(jù)。
需要說明的是,如果該數(shù)據(jù)沒有在該緩存中(例如該數(shù)據(jù)已經(jīng)被該緩存所屬的硬盤的cpu存儲(chǔ)到該硬盤的存儲(chǔ)空間中),則該緩存所屬的硬盤的cpu可以從該硬盤的存儲(chǔ)空間中將該數(shù)據(jù)搬移到該緩存中,從而輸入輸出接口可以直接從該緩存中讀取該數(shù)據(jù)。
若操作請(qǐng)求為寫請(qǐng)求,則第一控制器可根據(jù)該寫請(qǐng)求和第一控制器的緩存中緩存的第一控制器的緩存與多個(gè)硬盤的緩存之間的映射關(guān)系為需要寫入的數(shù)據(jù)分配緩存該數(shù)據(jù)的目標(biāo)硬盤的緩存的地址,然后第一控制器經(jīng)交換設(shè)備將該緩存的地址發(fā)送給輸入輸出接口,由輸入輸出接口經(jīng)交換設(shè)備將該數(shù)據(jù)寫入該地址指示的緩存中。
需要說明的是,當(dāng)該輸入輸出接口將該數(shù)據(jù)寫入該緩存中之后,該緩存所屬的硬盤的cpu再從該緩存中將該數(shù)據(jù)搬移到該硬盤的存儲(chǔ)空間中。
進(jìn)一步地,為了保證存儲(chǔ)數(shù)據(jù)的安全性和完整性,當(dāng)上述操作請(qǐng)求為寫請(qǐng)求時(shí),第一控制器在為需要寫入的數(shù)據(jù)分配緩存該數(shù)據(jù)的目標(biāo)硬盤的緩存的地址的同時(shí),還可以為該數(shù)據(jù)分配備份該數(shù)據(jù)的備份硬盤的緩存的地址(即存儲(chǔ)該數(shù)據(jù)的鏡像數(shù)據(jù)),從而輸入輸出接口可以同時(shí)將該數(shù)據(jù)寫入用于緩存該數(shù)據(jù)的目標(biāo)硬盤的緩存和用于備份該數(shù)據(jù)的備份硬盤的緩存。
對(duì)于本發(fā)明實(shí)施例提供的硬盤陣列中的硬盤、硬盤的存儲(chǔ)空間、緩存、控制器的緩存、硬盤的緩存、控制器的緩存與多個(gè)硬盤的緩存之間的映射關(guān)系、硬盤陣列的系統(tǒng)數(shù)據(jù)以及硬盤的系統(tǒng)數(shù)據(jù)等的描述具體可參見上述如圖3所示的實(shí)施例中的相關(guān)描述,此處不再贅述。
本發(fā)明實(shí)施例提供的硬盤陣列處理操作請(qǐng)求的方法,由于該硬盤陣列中的第一控制器的緩存與該硬盤陣列中的多個(gè)硬盤的緩存之間存在映射關(guān)系,因此當(dāng)?shù)谝豢刂破鹘邮盏捷斎胼敵鼋涌诎l(fā)送的操作請(qǐng)求時(shí),第一控制器可以根據(jù)該操作請(qǐng)求和該映射關(guān)系確定出該操作請(qǐng)求待操作的數(shù)據(jù)在目標(biāo)硬盤的緩存中的地址,然后再將該地址發(fā)送給輸入輸出接口,由輸入輸出接口直接經(jīng)交換設(shè)備對(duì)該地址執(zhí)行該操作請(qǐng)求。如此,由于對(duì)硬盤陣列中的硬盤進(jìn)行操作時(shí),操作的數(shù)據(jù)不用再經(jīng)過控制器(具體為控制器的cpu)的搬移,而是可以由輸入輸出接口直接對(duì)該數(shù)據(jù)在目標(biāo)硬盤的緩 存中的地址進(jìn)行操作,因此避免了控制器的cpu出現(xiàn)瓶頸,從而能夠保證硬盤陣列的性能不受限制。
可選的,所述多個(gè)硬盤包含第一獨(dú)立硬盤冗余陣列raid,所述多個(gè)硬盤的緩存包含第二raid,所述第一raid的類型和所述第二raid的類型相同。
其中,對(duì)于第一raid的具體描述可以參見上述如圖4所示的實(shí)施例中對(duì)第一raid的相關(guān)描述;對(duì)于第二raid的具體描述可以參見上述如圖5所示的實(shí)施例中對(duì)第二raid的相關(guān)描述,此處不再贅述。
可選的,本發(fā)明實(shí)施例提供的硬盤陣列還包括第二控制器,第二控制器與交換設(shè)備連接,本發(fā)明實(shí)施例提供的硬盤陣列處理操作請(qǐng)求的方法還可以包括:
s105、第一控制器經(jīng)交換設(shè)備向第二控制器發(fā)送第一控制器的緩存與多個(gè)硬盤的緩存之間的映射關(guān)系。
s106、第二控制器將該映射關(guān)系緩存在第二控制器的緩存中。
可選的,本發(fā)明實(shí)施例提供的硬盤陣列處理操作請(qǐng)求的方法還可以包括:
s107、第一控制器經(jīng)交換設(shè)備向第二控制器發(fā)送硬盤陣列的系統(tǒng)數(shù)據(jù)。
s108、第二控制器將硬盤陣列的系統(tǒng)數(shù)據(jù)緩存在第二控制器的緩存中。
可選的,本發(fā)明實(shí)施例提供的硬盤陣列處理操作請(qǐng)求的方法還可以包括:
s109、第一控制器經(jīng)交換設(shè)備向多個(gè)硬盤中的預(yù)指定硬盤的緩存中寫入第一控制器的緩存與多個(gè)硬盤的緩存之間的映射關(guān)系以及硬盤陣列的系統(tǒng)數(shù)據(jù)。
其中,硬盤陣列的系統(tǒng)數(shù)據(jù)存儲(chǔ)在第一控制器的緩存中。
本發(fā)明實(shí)施例不限制s105至s109的執(zhí)行時(shí)機(jī)。具體的,在實(shí)際應(yīng)用中,s105至s109可以周期性執(zhí)行,也可以在第一控制器的緩存中緩存的映射關(guān)系和硬盤陣列的系統(tǒng)數(shù)據(jù)發(fā)生改變時(shí)執(zhí)行,具體的可以根據(jù)實(shí)際使用場(chǎng)景/需求進(jìn)行設(shè)定,本發(fā)明不作限定。
對(duì)于s105至s109的其他描述具體可參見上述如圖6所示的實(shí)施例中的相關(guān)描述,此處不再贅述。
可選的,本發(fā)明實(shí)施例提供的硬盤陣列處理操作請(qǐng)求的方法還可以包括:
s110、當(dāng)硬盤陣列重新上電后,第一控制器和第二控制器經(jīng)交換設(shè)備從預(yù)指定硬盤中讀取第一控制器的緩存與多個(gè)硬盤的緩存之間的映射關(guān)系以及硬盤陣列的系統(tǒng)數(shù)據(jù)。
在實(shí)際應(yīng)用中,s110可以在硬盤陣列重新上電后執(zhí)行,還可以在其他可能的時(shí)機(jī)執(zhí)行,本發(fā)明不作具體限定。其中,重新上電是指硬盤陣列掉電后再重新上電;掉電可以為正常對(duì)硬盤陣列下電,或者硬盤陣列在工作過程中異常掉電等。
對(duì)于s110的其他描述具體可參見上述如圖6所示的實(shí)施例中的相關(guān)描述,此處不再贅述。
可選的,在第一控制器發(fā)生故障時(shí),本發(fā)明實(shí)施例提供的硬盤陣列處理操作請(qǐng)求的方法還可以包括:
s111、輸入輸出接口經(jīng)交換設(shè)備向第二控制器發(fā)送操作請(qǐng)求。
s112、第二控制器根據(jù)操作請(qǐng)求和第一控制器的緩存與多個(gè)硬盤的緩存之間的映射關(guān)系確定該操作請(qǐng)求待操作的數(shù)據(jù)在目標(biāo)硬盤的緩存中的地址。
s113、第二控制器經(jīng)交換設(shè)備向輸入輸出接口發(fā)送該地址。
在實(shí)際應(yīng)用中,s111至s113可以在硬盤陣列的一個(gè)控制器(例如第一控制器)發(fā)生故障時(shí)執(zhí)行,還可以在其他可能的時(shí)機(jī)執(zhí)行,本發(fā)明不作具體限定。其中,控制器發(fā)生故障包括控制器的硬件發(fā)生故障和控制器的軟件發(fā)生故障;控制器發(fā)生故障可以表現(xiàn)為控制器中的任意一個(gè)組件發(fā)生故障。
對(duì)于s111至s113的其他描述具體可參見上述如圖6所示的實(shí)施例中的相關(guān)描述,此處不再贅述。
本發(fā)明實(shí)施例中,為了保證硬盤陣列的可靠性,通常會(huì)在硬盤陣列中設(shè)置多個(gè)控制器,對(duì)于某個(gè)工作的控制器,必然有對(duì)其備份的控制器。例如,本發(fā)明實(shí)施例中,在硬盤陣列中設(shè)置第一控制器和第二控制器兩個(gè)控 制器,且第二控制器是對(duì)第一控制器備份的控制器。
示例性的,由于第一控制器的緩存與多個(gè)硬盤的緩存之間的映射關(guān)系以及硬盤陣列的系統(tǒng)數(shù)據(jù)通常緩存在第一控制器的緩存中,因此為了保證數(shù)據(jù)的安全性和硬盤陣列的可靠性,第一控制器可將其緩存中緩存的數(shù)據(jù)(包括第一控制器的緩存與多個(gè)硬盤的緩存之間的映射關(guān)系和硬盤陣列的系統(tǒng)數(shù)據(jù)等)發(fā)送給第二控制器,由第二控制器將這些數(shù)據(jù)緩存到第二控制器的緩存中;且第一控制器也可將其緩存中緩存的這些數(shù)據(jù)寫入多個(gè)硬盤中預(yù)指定硬盤的緩存中。
具體的,第一控制器將其緩存中緩存的數(shù)據(jù)發(fā)送給第二控制器,由第二控制器將這些數(shù)據(jù)緩存到第二控制器的緩存中,可以實(shí)現(xiàn)對(duì)第一控制器的備份(具體通過備份第一控制器的緩存中緩存的數(shù)據(jù)實(shí)現(xiàn)),從而在第一控制器發(fā)生故障時(shí),可以由第二控制器基于第二控制器的緩存中緩存的數(shù)據(jù)代替第一控制器完成讀或?qū)憯?shù)據(jù)中的相關(guān)操作(例如根據(jù)輸入輸出接口發(fā)送的讀請(qǐng)求或?qū)懻?qǐng)求,確定讀請(qǐng)求或?qū)懻?qǐng)求的地址)。
第一控制器將其緩存中緩存的數(shù)據(jù)寫入預(yù)指定硬盤的緩存中,可以實(shí)現(xiàn)對(duì)這些數(shù)據(jù)的備份,從而在硬盤陣列掉電時(shí),由于這些數(shù)據(jù)被緩存在預(yù)指定硬盤的緩存中,因此預(yù)指定硬盤的cpu可在其備電電容的備電下,將這些數(shù)據(jù)存儲(chǔ)至預(yù)指定硬盤的存儲(chǔ)空間中,當(dāng)硬盤陣列重新上電后,可以再將預(yù)指定硬盤的存儲(chǔ)空間中存儲(chǔ)的這些數(shù)據(jù)讀入預(yù)指定硬盤的緩存中,然后再由第一控制器和第二控制器將預(yù)指定硬盤的緩存中緩存的這些數(shù)據(jù)讀入其緩存中,如此能夠保證硬盤陣列掉電前和重新上電后,第一控制器和第二控制器的緩存中的數(shù)據(jù)一致,即保證硬盤陣列掉電后第一控制器和第二控制器的緩存中的數(shù)據(jù)不會(huì)丟失。
當(dāng)然,也可以由第一控制器和第二控制器中的一個(gè)控制器將預(yù)指定硬盤的緩存中緩存的這些數(shù)據(jù)讀入其緩存中,然后再由該控制器將這些數(shù)據(jù)發(fā)送給另一個(gè)控制器,從而實(shí)現(xiàn)兩個(gè)控制器中都緩存了這些數(shù)據(jù)。
可選的,本發(fā)明實(shí)施例提供的硬盤陣列處理操作請(qǐng)求的方法還可以包括:
s112、在硬盤陣列掉電時(shí),每個(gè)硬盤將該硬盤的緩存中的數(shù)據(jù)寫入該硬盤的存儲(chǔ)空間,其中,該硬盤中的備電電容為該硬盤提供備電。
本發(fā)明實(shí)施例中,當(dāng)硬盤陣列掉電后,由于硬盤陣列的供電電源斷開,因此硬盤陣列的控制器(例如第一控制器和第二控制器)將無法工作,然而由于本發(fā)明實(shí)施例的硬盤陣列的每個(gè)硬盤中都有一個(gè)備電電容,且該備電電容可以為硬盤提供一段時(shí)間(通常為幾分鐘,例如2分鐘至5分鐘)的備電,因此即使硬盤陣列掉電,硬盤中的備電電容仍然可以為硬盤提供備電,使得硬盤可以繼續(xù)工作一段時(shí)間。具體的,在備電電容為硬盤提供備電的情況下,硬盤的cpu可以將硬盤的緩存中緩存的數(shù)據(jù)寫入該硬盤的存儲(chǔ)空間,從而保證硬盤的緩存中緩存的數(shù)據(jù)不會(huì)丟失。
進(jìn)一步地,本發(fā)明實(shí)施例中,由于將第一控制器的緩存中緩存的數(shù)據(jù)(包括第一控制器的緩存與多個(gè)硬盤的緩存之間的映射關(guān)系和硬盤陣列的系統(tǒng)數(shù)據(jù))緩存在預(yù)指定硬盤的緩存中,因此即使硬盤陣列掉電,第一控制器的緩存中緩存的數(shù)據(jù)也不會(huì)丟失,從而保證了硬盤陣列的可靠性。
可選的,本發(fā)明實(shí)施例中,在硬盤陣列中的多個(gè)硬盤的緩存形成第一控制器和第二控制器共享的全局共享緩存之后,第一控制器和第二控制器均可以對(duì)該全局共享緩存進(jìn)行讀或?qū)憯?shù)據(jù)的操作。如此,某個(gè)控制器或者輸入輸出接口可以將鏡像數(shù)據(jù)(即需要備份的數(shù)據(jù))緩存至全局共享緩存中,而無需再針對(duì)不同的控制器單獨(dú)緩存鏡像數(shù)據(jù),且當(dāng)某個(gè)控制器或者輸入輸出接口將鏡像數(shù)據(jù)(即需要備份的數(shù)據(jù))緩存至全局共享緩存中后,硬盤陣列中的第一控制器和第二控制器均可以訪問該鏡像數(shù)據(jù),與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例節(jié)省了控制器與控制器之間的鏡像通道,簡(jiǎn)化了鏡像過程,提升了數(shù)據(jù)交互效率。
可選的,本發(fā)明實(shí)施例中,當(dāng)硬盤陣列中新增加硬盤時(shí),硬盤陣列中的第一控制器可自動(dòng)將該新增加硬盤的緩存加入到全局共享緩存中統(tǒng)一管理,即建立第一控制器的緩存和該新增加硬盤的緩存之間的映射關(guān)系。如此可以提升全局共享緩存的空間,從而提升硬盤陣列的性能。
可選的,當(dāng)用新硬盤替換硬盤陣列中的原有硬盤時(shí),硬盤陣列中的第一控制器可自動(dòng)將該新硬盤的緩存加入到全局共享緩存中統(tǒng)一管理,即建立第一控制器的緩存和該新硬盤的緩存之間的映射關(guān)系;并從全局共享緩存中刪除原有硬盤的緩存,即刪除第一控制器的緩存和該原有硬盤的緩存之間的映射關(guān)系。如此可以保證全局共享緩存與實(shí)際硬盤對(duì)應(yīng),從而提升 硬盤陣列的性能。
可選的,當(dāng)從硬盤陣列中去掉某個(gè)硬盤時(shí),硬盤陣列中的第一控制器可從全局共享緩存中刪除該硬盤的緩存,即刪除第一控制器的緩存和該硬盤的緩存之間的映射關(guān)系。如此可以保證全局共享緩存與實(shí)際硬盤對(duì)應(yīng),從而提升硬盤陣列的性能。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,僅以上述各功能模塊的劃分進(jìn)行舉例說明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。上述描述的系統(tǒng),裝置和單元的具體工作過程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過程,在此不再贅述。
在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述模塊或單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元可以采用軟件功能單元的形式實(shí)現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)或處理器執(zhí)行本發(fā)明各 個(gè)實(shí)施例所述方法的全部或部分步驟。所述存儲(chǔ)介質(zhì)是非短暫性(英文:non-transitory)介質(zhì),包括:快閃存儲(chǔ)器、移動(dòng)硬盤、只讀存儲(chǔ)器、隨機(jī)存取存儲(chǔ)器、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。