專利名稱:識別機柜和設(shè)備的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明針對數(shù)據(jù)存儲管理。特別地,本發(fā)明針對用于尋址和識別機柜(enclosure)以及機柜中的存儲設(shè)備的方法和裝置。
背景技術(shù):
存儲數(shù)字文件、文檔、圖片、圖像和其它數(shù)據(jù)的需求繼續(xù)快速增長。連同數(shù)據(jù)的電子存儲一起,已經(jīng)設(shè)計了各種數(shù)據(jù)存儲系統(tǒng),用于大量數(shù)據(jù)的快速和安全存儲。這樣的系統(tǒng)可以包括一個或多個以協(xié)同方式使用的存儲設(shè)備。如下系統(tǒng)也是可用的在其中,可以將數(shù)據(jù)分布在多個存儲設(shè)備上,使得在所述存儲設(shè)備之一(或者,在一些情況下,多于一個存儲設(shè)備)故障的情況下,數(shù)據(jù)將不會不可挽回地丟失。協(xié)調(diào)大量單獨的存儲設(shè)備的操作的系統(tǒng)還可以提供改善的數(shù)據(jù)訪問和/或存儲時間??梢栽谝呀?jīng)開發(fā)的各種RAID(冗余獨立磁盤陣列)級別中找到可以提供這樣的優(yōu)點的系統(tǒng)的示例。無論使用一個還是多個存儲設(shè)備實施,可以將由數(shù)據(jù)存儲系統(tǒng)提供的存儲看作為一個或多個存儲卷。
在當(dāng)今的存儲世界中,許多數(shù)據(jù)存儲系統(tǒng)基于至磁盤機柜的光纖信道(FC)或串行連接SCSI(SAS)接口。光纖信道磁盤機柜典型地基于仲裁環(huán)(FC-AL)并且可選地包括光纖信道環(huán)路交換機(Switch)。在任一情況下,F(xiàn)C-AL尋址方案通常指示機柜識別。軟FC尋址是方便的,但是被大多數(shù)系統(tǒng)管理員認(rèn)為太不穩(wěn)固了。硬FC尋址較不方便配置,但是較容易管理,尤其在較大的結(jié)構(gòu)中。在許多情況下,用戶必須通過使用拇指輪(thumb-wheel)或其它機械接口而配置機柜的硬FC地址范圍。拇指輪識別機柜(經(jīng)由其機械顯示),并且控制磁盤的FC地址和在該機柜內(nèi)的SCSI機柜服務(wù)(SES)目標(biāo)。因為用戶使用機械交換機來分配ID,所以兩個或多個機柜可能以相同機柜ID而結(jié)束。一個或多個機柜隨后將不得不被自動分配不同ID。此外,不存在容易的方法來對用戶顯示哪些機柜具有重復(fù)ID。
SAS標(biāo)準(zhǔn)關(guān)于設(shè)備尋址是完全不同的。具體地,所有SAS設(shè)備經(jīng)由它們的64位全球名稱(WWN)而被尋址。SAS中不存在對于由FC或并行SCSI用于地址驅(qū)動器的簡單標(biāo)量(0、1、2、...、n)的等價物(equivalent)。WWN很難被認(rèn)為對于設(shè)備識別是用戶友好的。因為使用WWN,所以不需要拇指輪或等同的機械接口。此外,向用戶提供一個是人為的,并且可能誤導(dǎo)試圖發(fā)現(xiàn)SAS設(shè)備的用戶??梢栽赟AS中使用機械拇指輪開關(guān),但是將仍需要處理可能的重復(fù)。對于FC和SAS兩者,似乎仍存在對識別機柜以及其中包含的設(shè)備的方法的需要。
發(fā)明內(nèi)容
本發(fā)明針對于解決這些和其它問題、以及現(xiàn)有技術(shù)的缺點。根據(jù)本發(fā)明的實施例,提供了以合理和有益的方式自動對機柜編號的機制。該方法通常包括識別存儲系統(tǒng)內(nèi)的機柜拓?fù)涞牟襟E。在已經(jīng)確定了機柜拓?fù)渲?,基于存儲系統(tǒng)內(nèi)的機柜拓?fù)?,生成唯一機柜標(biāo)識符(ID),并且將其分配給存儲系統(tǒng)中的機柜。通過基于存儲系統(tǒng)的拓?fù)涠蛎總€機柜分配ID,如果機柜的機柜ID已知,則系統(tǒng)管理員可以容易地定位該機柜。在另外實施例中,部分地基于存儲設(shè)備所位于的機柜而向該機柜中的存儲設(shè)備分配設(shè)備ID。
在一個實施例中,還向存儲系統(tǒng)中的機柜提供顯示設(shè)備,這里還稱作機柜ID顯示器(EID)。EID提供了分配給機柜的機柜ID的視覺指示。顯示設(shè)備的用處在于當(dāng)系統(tǒng)管理員正在物理地搜索特定機柜時,他/她可以識別該機柜,因為其在管理控制臺上被識別。這減少了定位機柜和在其中所包含的存儲設(shè)備所需的時間量,這會最終對應(yīng)于較快的存儲設(shè)備替換和處理時間。此外,EID能夠自動改變以反映對于機柜ID的任何變化,使得其用戶獨立。
根據(jù)本發(fā)明的一個實施例,提供了數(shù)據(jù)存儲系統(tǒng)。數(shù)據(jù)存儲系統(tǒng)通常包括兩個或多個機柜,其每一個包含至少一個存儲設(shè)備。在一個實施例中,基于機柜在線纜布設(shè)(cabling)順序中的位置,向存儲系統(tǒng)中的每個機柜分配機柜ID。向每個機柜內(nèi)的存儲設(shè)備分配存儲設(shè)備ID,其對應(yīng)于它們所存儲于的機柜、以及它們在該機柜中的位置。因此,唯一存儲設(shè)備ID反映了存儲設(shè)備在機柜內(nèi)以及相對于其它機柜的位置。
從如下描述(尤其當(dāng)連同附圖一起時),本發(fā)明實施例的附加特征和優(yōu)點將變得更易顯而易見。
圖1是圖示根據(jù)本發(fā)明實施例合并至少一個數(shù)據(jù)存儲系統(tǒng)的電子數(shù)據(jù)系統(tǒng)組件的功能框圖; 圖2是圖示根據(jù)本發(fā)明實施例具有RAID機柜作為頭(head)機柜的數(shù)據(jù)存儲系統(tǒng)的框圖; 圖3是圖示根據(jù)本發(fā)明實施例具有JBOD機柜而作為頭機柜的數(shù)據(jù)存儲系統(tǒng)的框圖; 圖4是圖示根據(jù)本發(fā)明實施例具有多個機柜域的數(shù)據(jù)存儲系統(tǒng)的框圖; 圖5是圖示根據(jù)本發(fā)明實施例具有以樹形拓?fù)溥B接的機柜的數(shù)據(jù)存儲系統(tǒng)的框圖; 圖6是圖示根據(jù)本發(fā)明實施例的RAID機柜方面的框圖; 圖7是圖示根據(jù)本發(fā)明實施例的JBOD機柜方面的框圖; 圖8是圖示根據(jù)本發(fā)明實施例的機柜組中的存儲驅(qū)動器插槽的框圖; 圖9是圖示根據(jù)本發(fā)明實施例識別初始數(shù)據(jù)存儲系統(tǒng)拓?fù)涞姆椒ǖ牧鞒虉D; 圖10是圖示根據(jù)本發(fā)明實施例向數(shù)據(jù)存儲系統(tǒng)中的機柜分配機柜ID的方法的流程圖; 圖11是圖示根據(jù)本發(fā)明實施例基于數(shù)據(jù)存儲系統(tǒng)拓?fù)涠峙錂C柜ID的方法的流程圖;以及 圖12是圖示根據(jù)本發(fā)明實施例分配唯一設(shè)備ID的方法的流程圖。
具體實施例方式 圖1是圖示根據(jù)本發(fā)明實施例合并了第一數(shù)據(jù)存儲系統(tǒng)104和第二數(shù)據(jù)存儲系統(tǒng)108的電子數(shù)據(jù)系統(tǒng)100的框圖。電子數(shù)據(jù)系統(tǒng)100可以還包括一個或多個主處理器、計算機或計算機系統(tǒng)112。此外,電子數(shù)據(jù)系統(tǒng)100可以包括、或可以被互連至管理計算機116。如本領(lǐng)域技術(shù)人員在考慮本發(fā)明之后將理解的,本發(fā)明實施例具有與存儲區(qū)域網(wǎng)絡(luò)(SAN)或直接連接環(huán)境中的單個或多個主機112相關(guān)的應(yīng)用。
通常通過帶內(nèi)(in-band)網(wǎng)絡(luò)120將數(shù)據(jù)存儲系統(tǒng)104、108彼此互聯(lián)。帶內(nèi)網(wǎng)絡(luò)120還可以將數(shù)據(jù)存儲系統(tǒng)104、108互聯(lián)到主計算機112和/或管理計算機116。電子數(shù)據(jù)系統(tǒng)100還可以包括使電子數(shù)據(jù)系統(tǒng)100節(jié)點104、108、112和/或116中的一些或全部相互連接的帶外網(wǎng)絡(luò)124。例如,包括光纖信道的帶內(nèi)網(wǎng)絡(luò)120或TCP/IP網(wǎng)絡(luò)可以使第一數(shù)據(jù)存儲系統(tǒng)104跨越一些距離而連接至第二數(shù)據(jù)存儲系統(tǒng)108,并且,可以通過帶內(nèi)網(wǎng)絡(luò)120和/或帶外網(wǎng)絡(luò)124將這些數(shù)據(jù)存儲系統(tǒng)104、108的每一個連接至一個或多個主計算機112。
帶內(nèi)或存儲區(qū)域網(wǎng)絡(luò)120通常用于在數(shù)據(jù)存儲系統(tǒng)104和/或108與主設(shè)備112之間傳輸數(shù)據(jù),并且可以是能夠支持多個起始者和目標(biāo)的任何數(shù)據(jù)管道。因此,帶內(nèi)網(wǎng)絡(luò)120的示例包括光纖信道(FC)、iSCSI、并行SCSI、SAS、無限帶(Infini-Band)、以太網(wǎng)、ESCON、或FICON連接或網(wǎng)絡(luò),其特征通常在于在中到高帶寬傳遞相對大量的數(shù)據(jù)的能力。帶外網(wǎng)絡(luò)124通常用于支持各種網(wǎng)絡(luò)節(jié)點(例如,數(shù)據(jù)存儲資源系統(tǒng)104、108、主計算機112和/或管理計算機116)之間的通信和/或命令的傳遞,盡管還可以通過帶內(nèi)通信網(wǎng)絡(luò)120而傳遞這樣的數(shù)據(jù)。帶外通信網(wǎng)絡(luò)124的示例包括局域網(wǎng)(LAN)或其它傳輸控制協(xié)議/因特網(wǎng)協(xié)議(TCP/IP)網(wǎng)絡(luò)。通常,帶外通信網(wǎng)絡(luò)124的特征在于通過統(tǒng)一用戶接口(例如,網(wǎng)頁瀏覽器)互聯(lián)異類節(jié)點或其它設(shè)備的能力。此外,帶外通信網(wǎng)絡(luò)124可以經(jīng)由TCP/IP而提供對數(shù)據(jù)存儲系統(tǒng)104、108的全球或其它廣泛分布式管理的潛力。
每個電子數(shù)據(jù)系統(tǒng)節(jié)點或計算機104、108、112和116不需要通過帶內(nèi)網(wǎng)絡(luò)120和帶外網(wǎng)絡(luò)124兩者而互聯(lián)至每個其它節(jié)點或設(shè)備。例如,盡管不禁止在主計算機112與其它設(shè)備104、108、116之間通過帶外通信網(wǎng)絡(luò)124的互聯(lián),但是沒有主計算機112需要通過帶外通信網(wǎng)絡(luò)124被互聯(lián)至任何其它主計算機112、數(shù)據(jù)存儲系統(tǒng)104、108或管理計算機116。如另一個示例,可以通過帶外通信網(wǎng)絡(luò)124而將管理計算機116互聯(lián)至至少一個存儲系統(tǒng)104或108。還可以將管理計算機116直接互聯(lián)至帶內(nèi)網(wǎng)絡(luò)120,盡管不需要這樣的互聯(lián)。例如,代替直接連接,管理計算機116可以使用帶內(nèi)網(wǎng)絡(luò)120而與數(shù)據(jù)存儲系統(tǒng)104、108的控制器通信。
通常,主計算機112關(guān)于應(yīng)用程序編程的執(zhí)行性能與數(shù)據(jù)存儲系統(tǒng)104、108中一個或多個交換數(shù)據(jù),無論該應(yīng)用程序編程涉及數(shù)據(jù)管理還是其它。此外,電子數(shù)據(jù)系統(tǒng)100可以包括多個主計算機112。管理計算機116可以提供用于控制存儲系統(tǒng)104、108的操作方面的用戶接口??梢詫⒐芾碛嬎銠C116直接和/或通過總線或網(wǎng)絡(luò)120和/或124互聯(lián)至存儲系統(tǒng)104、108。根據(jù)本發(fā)明其它實施例,可以將管理計算機116與主計算機112集成。另外,可以提供多個管理計算機116作為電子數(shù)據(jù)系統(tǒng)100的一部分。此外,雖然圖1中僅示出了兩個數(shù)據(jù)存儲系統(tǒng)104、108,但是電子數(shù)據(jù)系統(tǒng)100可以包括多于兩個數(shù)據(jù)存儲系統(tǒng)。或者,電子數(shù)據(jù)系統(tǒng)100可以僅包括一個數(shù)據(jù)存儲系統(tǒng)。
數(shù)據(jù)存儲系統(tǒng)104、108可以包括多個機柜,每個機柜包含一個或多個存儲設(shè)備。例如,圖2圖示了根據(jù)本發(fā)明至少一些實施例的具有RAID機柜204作為頭機柜的數(shù)據(jù)存儲系統(tǒng)104、108。通過擴展線纜布設(shè)216而將RAID機柜204連接至大量附加JBOD機柜208a-N。JBOD機柜208相對于頭RAID機柜204中的控制器612而被布置的順序在這里還稱作線纜布設(shè)順序或數(shù)據(jù)存儲系統(tǒng)拓?fù)?。在一個實施例中,直接連接至頭RAID機柜204的第一JBOD機柜208a是線纜布設(shè)順序中的第一個。由此得出結(jié)論直接連接至第一JBOD機柜208a的第二JBOD機柜208b是線纜布設(shè)順序中的第二個。對線纜布設(shè)順序的確定以類似的方式繼續(xù),直到到達第N個JBOD機柜208N為止。然而,可以理解,相反的(reverse)線纜布設(shè)順序可以定義JBOD機柜208a-N的排序。例如,可以將第N個JBOD機柜208N看作線纜布設(shè)順序中的第一個,并且,可以將第一JBOD機柜208a看作線纜布設(shè)順序中的最后一個。
可以通過RAID機柜204內(nèi)的特定控制器看見JBOD機柜208a-N中的擴展器228的順序而定義機柜204、208的線纜布設(shè)順序。或者,可以通過控制器看見JBOD機柜208a-N中的擴展器228的相反順序而定義線纜布設(shè)順序。提供相反線纜布設(shè)排序以創(chuàng)建容錯SAS線纜布設(shè)方案。換言之,通過兩個不同線纜順序來進行對機柜ID的確定,在其中,一個線纜順序以另一個線纜順序的反向來排序。因此,如果一個控制器失敗,則另一個控制器仍然能夠使用其自身對機柜ID的認(rèn)識而識別機柜ID。每個控制器612可以采用分配應(yīng)用程序212來獨立確定線纜布設(shè)順序。根據(jù)一個實施例,一個控制器612以其“觀看(view)”機柜208的正向定義線纜布設(shè)順序,而另一控制器612以其“觀看”機柜208的相反方向定義線纜布設(shè)順序。由于由一個控制器612所看見的第一機柜608對應(yīng)于由另一個控制器208所看見的最后一個機柜208,所以通過每個分配應(yīng)用程序212以相同機柜ID獨立識別每個機柜。不管向控制器612詢問機柜ID,這向用戶提供了一致的編號系統(tǒng)。這還提供了容錯線纜布設(shè),在其中,本質(zhì)上有兩個不同線纜順序在使用中。作為示例,分配應(yīng)用程序212可以向頭RAID機柜204分配機柜ID 0。
例如,數(shù)據(jù)系統(tǒng)100中的每個RAID機柜204可以包含至少兩個I/O模塊電子板,每個I/O模塊電子板具有一個或多個擴展端口或擴展器224。特別地,RAID機柜204可以分別包含兩個RAID I/O模塊。所述兩個模塊用于在故障的情況下提供容錯。如本領(lǐng)域技術(shù)人員可以理解的,可以在每個模塊中提供分配應(yīng)用程序212,其中每個I/O模塊分別與不同控制器612相關(guān)聯(lián)。RAID機柜204可以包括擴展信道220,其包括一個或多個擴展端口或擴展器224,每個所述擴展端口或擴展器204與不同控制器612相關(guān)聯(lián)。更具體地,第一擴展端口224a可以與第一控制器612相關(guān)聯(lián),而第二擴展端口224b可以與第二控制器612相關(guān)聯(lián)。然而,兩個擴展器224共享共同的擴展信道220。
擴展器224是構(gòu)件塊芯片(building block chip),其像交換設(shè)備那樣作用,從而提供將各種機柜一起連接到存儲系統(tǒng)104、108中的能力。擴展器通常包含兩個或多個外部擴展器端口424。每個擴展器包含至少一個目標(biāo)端口用于管理。例如,擴展器可以包括串行SCSI協(xié)議目標(biāo)端口用于訪問外圍設(shè)備。
JBOD機柜208a還可以包括擴展硬件。根據(jù)一個實施例,每個JBOD機柜208可以包括第一輸入/輸出模塊228a和第二輸入/輸出模塊228b。每個輸入/輸出模塊228可以包括輸入端口232和輸出端口236,它們也稱作擴展器。
擴展器或擴展端口224用于將頭RAID機柜204的各個控制器612連接到JBOD機柜208。可以經(jīng)由擴展線纜布設(shè)216而將第一擴展端口224a連接到第一JBOD機柜208a中的第一輸入/輸出模塊228a的輸入端口232??梢越?jīng)由所述擴展線纜布設(shè)而將第二擴展端口224b連接到第一JBOD機柜208a中的第二輸入/輸出模塊228b的輸入端口232。如果期望附加擴展,則可以將第一JBOD機柜208a中的第一輸入/輸出模塊228a的輸出端口236連接到第二JBOD機柜208b中的第一輸入/輸出模塊228a的輸入端口232。同樣,可以將第一JBOD機柜208a中的第二輸入/輸出模塊228b的輸出端口236連接到第二JBOD機柜208b中的第二輸入/輸出模塊228b的輸入端口232。該擴展系列可以繼續(xù)到第N個JBOD機柜208N為止。
可以將等于1的機柜ID分配給第一JBOD機柜208a,其可以具有如由RAID機柜204中的控制器看見的第一擴展器或輸入/輸出模塊228a。分配應(yīng)用程序212可以根據(jù)線纜布設(shè)順序而遞增地繼續(xù)分配機柜ID。基于線纜布設(shè)順序而分配機柜ID向每個機柜204、208提供了合理的機柜ID,其還可以用于識別機柜204、208的位置。
現(xiàn)在參考圖3,圖示了根據(jù)本發(fā)明至少一些實施例的具有JBOD機柜308a作為頭機柜的數(shù)據(jù)存儲系統(tǒng)104、108。JBOD機柜208、308通常不包括控制器功能。因此,JBOD機柜208、308不具有分析機柜拓?fù)浜痛_定機柜的線纜布設(shè)順序的能力。由此得出結(jié)論JBOD機柜208、308通常不能分配機柜ID。因此,在獨有地(exclusively)包括JBOD機柜308a-N的存儲系統(tǒng)104、108中,主系統(tǒng)304采用分配應(yīng)用程序212來向機柜308分配機柜ID。主系統(tǒng)304可以包括主計算機、管理計算機116或具有處理器的類似設(shè)備。
經(jīng)由擴展線纜布設(shè)216而將主系統(tǒng)304連接到JBOD機柜308a-N。根據(jù)本發(fā)明的一個實施例,主系統(tǒng)304通過包含一個或多個擴展端口324的擴展信道320而連接到擴展線纜布設(shè)216。第一擴展端口324a可以與第一擴展控制器相關(guān)聯(lián),而第二擴展端口324b可以與第二擴展控制器相關(guān)聯(lián)。
JBOD機柜308a-N還可以包括擴展硬件。根據(jù)一個實施例,每個JBOD機柜308可以包括與上面關(guān)于圖2描述的JBOD機柜208a-N的擴展硬件類似的擴展硬件。
主系統(tǒng)304的每個擴展端口324用于將主系統(tǒng)304連接到JBOD機柜308??梢越?jīng)由擴展線纜布設(shè)216而將第一擴展端口324a連接到第一JBOD機柜308a中的第一輸入/輸出模塊228a的輸入端口232??梢越?jīng)由擴展線纜布設(shè)而將第二擴展端口224b連接到第一JBOD機柜308a中的第二輸入/輸出模塊228b的輸入端口232。如果期望附加擴展,則可以將第一JBOD機柜308a中的第一輸入/輸出模塊228a的輸出端口236連接到第二JBOD機柜308b中的第一輸入/輸出模塊228a的輸入端口232。同樣,可以將第一JBOD機柜308a中的第二輸入/輸出模塊228b的輸出端口236連接到第二JBOD機柜308b中的第二輸入/輸出模塊228b的輸入端口232。該擴展系列可以繼續(xù)到第N個JBOD機柜308N為止。通常相對于主系統(tǒng)304而定義JBOD機柜308a-N的線纜布設(shè)順序。例如,連接到主系統(tǒng)304的第一JBOD機柜308a通常被稱為線纜布設(shè)順序中的第一個。通常將連接到第一JBOD機柜308a的第二JBOD機柜308b定義為線纜布設(shè)順序中的第二個。當(dāng)然,可以相對于主系統(tǒng)304而顛倒線纜布設(shè)順序(即,可以將第N個JBOD機柜308N看作線纜布設(shè)順序中的第一個,而可以將第一JBOD機柜308a看作線纜布設(shè)順序中的最后一個)。
在一個實施例中,分配應(yīng)用程序212用于基于線纜布設(shè)順序而向存儲系統(tǒng)104、108中的每個JBOD機柜308a-N分配機柜ID。在優(yōu)選實施例中,對JBOD機柜308a-N分配了隨線纜布設(shè)順序而逐步上升的機柜ID。換言之,第一JBOD機柜308a被分配了最低機柜ID(例如,0),第二JBOD機柜308b被分配了下一個最低的機柜ID(例如,1),等等,直到所有JBOD機柜308被分配了機柜ID為止。然而,在可選實施例中,JBOD機柜308a-N被分配了隨線纜布設(shè)順序而逐步下降的機柜ID。作為示例地,第一JBOD機柜308a被分配最高機柜ID(例如,N-1),第二機柜308b被分配下一個最高的機柜ID(例如,N-2),等等,直到所有JBOD機柜308具有唯一機柜ID為止。
圖4圖示了根據(jù)本發(fā)明至少一些實施例的具有JBOD機柜416、420的多個域412的數(shù)據(jù)存儲系統(tǒng)104、108。在多個域的實施例中,頭端(head end)404(例如,RAID機柜204)包括一個或多個擴展信道408a和408b,其包括來自每個控制器612的、連接到JBOD機柜416a-N、420a-M的不同域412的擴展器424。第一擴展信道408a可以包括來自第一和第二控制器612的擴展器424,用于連接到第一域412a中的JBOD機柜416。第二擴展信道408b可以包括擴展器424,用于連接到第二域412b中的JBOD機柜420。RAID機柜和JBOD機柜內(nèi)的擴展硬件(即,擴展信道408、擴展端口424、輸入/輸出模塊228、輸入端口232以及輸出端口236)實質(zhì)上用于便利于在可分散在大量機柜之中的大量存儲設(shè)備之間的通信。
分配應(yīng)用程序212將唯一的機柜ID分配給存儲系統(tǒng)104、108中的每個機柜204、416、420。在一個實施例中,基于存儲系統(tǒng)104、108的拓?fù)涠峙湮ㄒ坏臋C柜ID。例如,RAID機柜204可以被分配最低(或最高)機柜ID??梢詫⑾乱粋€最低(或最高)的機柜ID分配給第一域412a中的第一JBOD機柜416a。此后,可以將下一個最低(或最高)的機柜ID分配給第一域412a中的第二JBOD機柜416b。在第二域412b中的機柜420接收機柜ID之前,可以對第一域412a中的所有機柜416分配機柜ID。該分配機柜ID的特定方式稱作深度優(yōu)先(depth first)的分配方法。根據(jù)本發(fā)明另一實施例,可以采用廣度優(yōu)先(breadth first)的分配方法。在廣度優(yōu)先的分配方法中,RAID機柜204仍可以被分配最低(或最高)機柜ID,而第一域412a中的第一JBOD機柜416a仍可以接收下一個最低(或最高)的機柜ID。然而,隨后可以將下一個最低(或最高)的機柜ID分配給第二域412b中的第一JBOD機柜420a。隨后基于特定JBOD機柜416、420距頭端404有多近而繼續(xù)執(zhí)行機柜ID的分配。
在另外一個實施例中,可以生成機柜ID以唯一地識別位于不同域中的JBOD機柜416、420。例如,可以基于機柜距頭端404的接近度(proximity)而將機柜ID遞增地分配給每個機柜416、420。唯一標(biāo)識符可以為字母數(shù)字混合編排的,其開始于基本標(biāo)識符并且從其遞增地增加。作為示例,可以分配唯一的數(shù)字識別符(例如,0、1、2、...、n) 如可以理解的,可以采用主系統(tǒng)304來運行分配應(yīng)用程序212,而代替所描述的RAID機柜204。分配給每個JBOD機柜416、420的機柜ID將取決于是使用RAID機柜204還是主系統(tǒng)304而變化。例如,如果使用RAID機柜204,則RAID機柜204還將需要分配給其的機柜ID,其將最終影響什么機柜ID被分配給JBOD機柜416、420?;蛘撸绻褂弥飨到y(tǒng)304,則分配應(yīng)用程序212將僅需要將機柜ID分配給JBOD機柜416、420。
本領(lǐng)域中的技術(shù)人員可以理解,存儲系統(tǒng)104、108可以包括零個、一個或多個RAID機柜204。如上記錄的,可以使用JBOD機柜304作為頭機柜。在其它實施例中,可以使用RAID機柜204作為頭機柜??梢詫⑵渌黂AID機柜204直接或間接連接到該頭RAID機柜204,盡管這樣的配置不是必須的。
圖5圖示了根據(jù)本發(fā)明至少一些實施例的多個域或樹形拓?fù)鋽?shù)據(jù)存儲系統(tǒng)104、108的擴展。樹形拓?fù)渫ǔ0ù罅窟B接到頭端504(例如,RAID機柜204或主系統(tǒng)304)的不同域508a-c。例如508a和508b的一些域可以被直接連接到頭端504,而其它域可以通過分離(splitting)機柜516而被連接到頭端504。每個域可以具有不同數(shù)量的JBOD機柜。例如,第一域508a可以包括機柜508a-N,第二域508b可以包括機柜516和520a-M,并且,第三域508c可以包括機柜524a-L。當(dāng)然,可以將更多或更少數(shù)量的域包括在存儲系統(tǒng)104、108中,并且,每個域可以具有一個或多個機柜。
分配應(yīng)用程序212可以以上述廣度優(yōu)先或深度優(yōu)先的方式來分配機柜ID。在可選實施例中,可以將域標(biāo)識符和機柜標(biāo)識符合并以形成機柜ID。關(guān)于向分離機柜516分配機柜ID可能會產(chǎn)生差異??梢詫⒎蛛x機柜516分配給第二域508b或第三域508c。分離機柜516向域的分配可以是任意的。然而,被分配了分離機柜516的域?qū)⒂绊懛峙浣o連接到分離機柜516的隨后的機柜的機柜ID。例如,如果將分離機柜516分配給第二域508b,則分離機柜516可接收機柜ID[2.0]。由此得出結(jié)論JBOD機柜520a將被分配機柜ID[2.1]。同樣,JBOD機柜524a將被分配機柜ID[3.0]?;蛘撸绻麑⒎蛛x機柜516分配給第三域508c,則分離機柜516可被分配機柜ID[3.0]。根據(jù)被分配給第三域508c的分離機柜516,JBOD機柜520a將接收機柜ID[2.0],因為其是第二域508b中第一個被分配機柜ID的機柜。JBOD機柜524a則將是第三域508c中第二個被分配機柜ID的機柜,并且將從而很可能接收機柜ID[3.1]。
圖6圖示了根據(jù)本發(fā)明實施例的可包括在RAID機柜204中的組件。RAID機柜204通常包括一個或多個存儲設(shè)備604以及至少一個用于將數(shù)據(jù)流指引到(多個)存儲設(shè)備604的控制器612。RAID機柜204的控制器612可以還包括如圖2、4和5中所示的分配應(yīng)用程序212。分配應(yīng)用程序212能夠向每個機柜204、208分配機柜ID。在一個實施例中,分配應(yīng)用程序212基于數(shù)據(jù)存儲系統(tǒng)104、108的線纜布設(shè)順序或拓?fù)涠峙錂C柜ID。
通常,RAID機柜204包括多個存儲設(shè)備604。存儲設(shè)備604的示例包括硬盤驅(qū)動器,例如,串行高級技術(shù)附件(SATA)、小型計算機系統(tǒng)接口(SCSI)、串行連接SCSI(SAS)、光纖信道(FC)、或并行高級技術(shù)附屬(PATA)硬盤驅(qū)動器。存儲設(shè)備604的其它示例包括磁帶存儲設(shè)備、光存儲設(shè)備或固態(tài)磁盤設(shè)備。此外,雖然圖示了多個存儲設(shè)備604,但是應(yīng)當(dāng)理解本發(fā)明的實施例不限于任何特定數(shù)量的存儲設(shè)備604,以及可以提供更少或更多數(shù)量的存儲設(shè)備604作為RAID機柜204的部分。在一個實施例中,RAID機柜204中的每個存儲設(shè)備604被分配了唯一設(shè)備標(biāo)識符,其可以是機柜ID和設(shè)備ID的組合。如本領(lǐng)域技術(shù)人員可以理解的,可以在數(shù)據(jù)存儲設(shè)備604上建立一個或多個陣列和/或陣列分區(qū)(此后稱作包括存儲卷的邏輯單元號(LUN))。如本領(lǐng)域技術(shù)人員可以進一步理解的,可以根據(jù)各種陣列級別或用于在一個或多個存儲設(shè)備604上存儲數(shù)據(jù)的其它布置中的任何一個來實現(xiàn)LUN。
可以為根據(jù)本發(fā)明實施例的RAID機柜204提供第一控制器插槽608a。另外,其它實施例可以包括附加控制器插槽,例如,第二控制器插槽608b。如本領(lǐng)域技術(shù)人員可以理解的,控制器插槽608可以包括一個連接或一組連接,以使得控制器612能夠被可操作地互聯(lián)到RAID機柜204的其它組件。此外,根據(jù)本發(fā)明實施例的RAID機柜204包括至少一個控制器612a。例如,當(dāng)以單個控制器非故障轉(zhuǎn)移(failover)模式操作RAID機柜204時,RAID機柜204精確包括一個控制器612??梢酝ㄟ^提供第二控制器612b,而以雙冗余主動-主動(active-active)控制器模式來操作根據(jù)本發(fā)明其它實施例的RAID機柜204。當(dāng)除了第一控制器612a之外使用第二控制器612b時,第二控制器插槽608b接收第二控制器。如本領(lǐng)域技術(shù)人員可以理解的,提供兩個控制器612a和612b允許數(shù)據(jù)在控制器612a與612b之間被鏡像,從而提供冗余的主動-主動控制器操作。
通常提供一個或多個總線或信道616,以通過關(guān)聯(lián)的一個或多個控制器插槽608而將一個或多個控制器612互聯(lián)到存儲設(shè)備604。通常使用信道616來將用戶數(shù)據(jù)傳遞到存儲設(shè)備604,或從存儲設(shè)備604傳遞用戶數(shù)據(jù)。此外,當(dāng)被圖示為用于傳遞數(shù)據(jù)的單個線路時,可以理解可以提供多個專用總線或信道。例如,在SAS中,使用點對點拓?fù)鋪韨鬟f數(shù)據(jù)。然而,可以采用本領(lǐng)域中已知的其它類型的數(shù)據(jù)總線??梢园ㄔ赗AID機柜204中的附加組件包括一個或多個電源624以及一個或多個冷卻單元628。此外,可以提供總線或網(wǎng)絡(luò)接口620,以將RAID機柜204互聯(lián)到主計算機112或管理計算機116。
如上面記錄的,RAID機柜204可以包括一個或多個擴展器408以便利于與數(shù)據(jù)存儲系統(tǒng)104、108中的其它機柜的通信??梢园〝U展器408,作為一個或兩個控制器612以及/或者總線或網(wǎng)絡(luò)接口620的一部分。
根據(jù)本發(fā)明實施例的存儲控制器612可以進一步包括處理器子系統(tǒng)614,其能夠執(zhí)行用于執(zhí)行、實施和/或控制各種控制器612功能的指令。這樣的指令可以包括用于識別存儲系統(tǒng)104、108拓?fù)浠蚓€纜布設(shè)順序以及基于拓?fù)浠蚓€纜布設(shè)順序而分配機柜ID的指令。此外,例如可以在被提供作為控制器612的一部分的存儲器618中存儲這樣的指令作為軟件和/或固件。如本領(lǐng)域技術(shù)人員可以理解的,可以使用被提供作為處理器子系統(tǒng)的一部分的一個或多個硬連線和/或可編程的邏輯電路,來執(zhí)行有關(guān)奇偶數(shù)據(jù)的生成的操作或其它操作。因此,可以將處理器子系統(tǒng)實現(xiàn)為多個離散組件,例如,與一個或多個邏輯電路結(jié)合的一個或多個可編程處理器。處理器子系統(tǒng)還可以包括或被實現(xiàn)為一個或多個集成的設(shè)備或處理器。例如,處理器子系統(tǒng)可以包括復(fù)雜的可編程邏輯器件(CPLD)。
RAID機柜204還通常包括存儲器632。存儲器632不具體限于任何特定類型的存儲器。例如,存儲器632可以包括一個固態(tài)存儲設(shè)備、或多個固態(tài)存儲設(shè)備。此外,存儲器632可以包括分離的非易失性存儲器和易失性存儲器部分。易失性存儲器的示例包括DRAM和SDRAM。非易失性存儲器的示例包括但不限于緊湊閃存(compact flash)或其它標(biāo)準(zhǔn)的非易失性存儲設(shè)備。可以使用存儲器632來存儲由存儲控制器612執(zhí)行的指令,例如分配應(yīng)用程序212。另外,可以使用存儲器632來存儲分配給RAID機柜204的機柜ID、以及分配給存儲系統(tǒng)104、108中的其它機柜的附加機柜ID。
在一個實施例中,要求機柜ID在電力循環(huán)變化中持續(xù)。因此,在分配應(yīng)用程序212已經(jīng)向數(shù)據(jù)存儲系統(tǒng)104、108中的機柜分配了機柜ID之后,可以將機柜ID分配維持在存儲器632中,在其中,控制器612a和612b兩者可訪問所述機柜ID分配?;蛘?,可以在控制器612兩者內(nèi)的閃存中維持機柜ID分配。當(dāng)然,在其它實施例中,數(shù)據(jù)存儲系統(tǒng)104、108中的每個機柜明了其自身的機柜ID。在一個實施例中,可以在易失性存儲器上存儲機柜ID。在易失性存儲器上存儲機柜ID將允許系統(tǒng)管理員通過對機柜斷電來重置系統(tǒng)的機柜ID。當(dāng)重新啟動時,分配應(yīng)用程序212可以識別數(shù)據(jù)存儲系統(tǒng)104、108拓?fù)浠蜴?chain)順序并且根據(jù)新拓?fù)浠蜴滍樞蚨匦路峙錂C柜ID,其可以與原始拓?fù)浠蜴滍樞蛳嗤虿煌?br>
RAID機柜204還可以包括顯示設(shè)備636,用于顯示分配給RAID機柜204的機柜ID。在一個實施例中,顯示設(shè)備636包括連接到總線或信道616的電子顯示器。將分配給RAID機柜204的機柜ID從控制器612或存儲器632經(jīng)由總線或信道616傳送至顯示設(shè)備636,并且自動顯示在顯示設(shè)備636上。適當(dāng)?shù)娘@示設(shè)備的示例包括(但不限于)LED顯示器、LCD顯示器等。在一個實施例中,顯示設(shè)備636包括位于RAID機柜204的“耳部”上的雙位數(shù)(double-digit)七段LED顯示器,使得當(dāng)RAID機柜204被安裝在類似設(shè)備的機架(rack)中時可以看到所述雙位數(shù)七段LED顯示器。將顯示設(shè)備636置于機柜上的顯著位置中允許對機柜ID的容易識別。如果不存在當(dāng)前分配給RAID機柜204的機柜ID,則顯示設(shè)備636什么都不顯示(例如,機柜204可被關(guān)閉)?;蛘?,如果機柜204還未被分配機柜ID,則機柜204可以顯示非正常使用的默認(rèn)值(例如,‘F’)。還可以將顯示設(shè)備636適配為顯示用于存儲在RAID機柜204中的存儲設(shè)備604的唯一設(shè)備標(biāo)識符。這將有益于定位有錯誤的存儲設(shè)備。
如本領(lǐng)域技術(shù)人員可以理解的,例如,經(jīng)由例如圖2中圖示的擴展線纜布設(shè)的擴展線纜布設(shè)而將擴展器424連接到附加機柜。圖示的數(shù)據(jù)總線616通常用于傳遞用戶數(shù)據(jù)。還應(yīng)當(dāng)注意,存儲設(shè)備604通常為雙端口的,盡管未圖示這樣的實施例。舉例而言,SAS存儲設(shè)備604固有地提供雙端口能力,而SATA存儲設(shè)備604經(jīng)由主動-主動SATA復(fù)用器芯片(mux chip)而提供。
圖7圖示了根據(jù)本發(fā)明至少一些實施例的示例性JBOD機柜304。JBOD機柜304典型地包括類似于關(guān)于RAID機柜204而描述的存儲設(shè)備604的存儲設(shè)備704。JBOD機柜304還包括總線或網(wǎng)絡(luò)接口708,用于與數(shù)據(jù)存儲系統(tǒng)104、108中的其它機柜連接??偩€或網(wǎng)絡(luò)接口708包括一個或多個擴展器408,其提供與存儲系統(tǒng)104、108中的其它機柜的通信。還可以在對存儲系統(tǒng)104、108拓?fù)浠蚓€纜布設(shè)順序的識別期間使用擴展器408。通常提供一個或多個總線或信道710,來將總線或網(wǎng)絡(luò)接口708或擴展器408互聯(lián)到存儲設(shè)備704。
在一個實施例中,JBOD機柜304還包括存儲器712。與RAID機柜204的存儲器632類似,存儲器712可以包括易失性和/或非易失性存儲器。使用存儲器712來存儲分配給JBOD機柜304的機柜ID。當(dāng)分配應(yīng)用程序212向各個JBOD機柜304分配機柜ID時,其可以將這些機柜ID傳送給所述機柜。通過總線或網(wǎng)絡(luò)接口708中的擴展器408接收機柜ID,并且經(jīng)由總線710而將所述機柜ID傳遞至存儲器712用于本地存儲。
JBOD機柜304還可以包括顯示設(shè)備716,用于顯示機柜ID和/或唯一存儲設(shè)備704ID。顯示設(shè)備716與RAID機柜204的顯示設(shè)備636的類似之處在于該述顯示設(shè)備716可以接收機柜ID并且自動進行顯示,而不需要任何用戶協(xié)助。
圖8圖示了根據(jù)本發(fā)明至少一些實施例的機柜204、304組中的存儲設(shè)備604、704驅(qū)動器插槽。機柜204、304通常具有存儲在列804a-d和行808a-c中的存儲設(shè)備604、704。典型的機柜204、304可以設(shè)計為擁有12個存儲設(shè)備604、704,并且從而具有四列804和三行808。然而,機柜204、304可以包括比所述的更多或更少數(shù)量的列和/或行。每個存儲設(shè)備604、704可以被分配唯一的設(shè)備ID。所述唯一的設(shè)備ID可以對應(yīng)于存儲設(shè)備604、704所位于的插槽的位置、以及存儲設(shè)備604、704所位于的機柜204、304的機柜ID。例如,位于具有等于0的機柜ID的機柜的插槽0中的存儲設(shè)備604、704可接收唯一的設(shè)備ID
。在具有等于1的機柜ID的機柜的相同插槽位置(即,插槽0)中的存儲設(shè)備604、704可接收唯一的設(shè)備ID[1.00]。如下示出了使用[機柜ID.插槽編號/設(shè)備標(biāo)識符]方法的分配給所有36個存儲設(shè)備604、704的所分配的唯一設(shè)備ID的示例
-頭機柜(機柜ID=0).插槽0
-頭機柜(機柜ID=0).插槽1
-頭機柜(機柜ID=0).插槽2
-頭機柜(機柜ID=0).插槽3
-頭機柜(機柜ID=0).插槽4
-頭機柜(機柜ID=0).插槽5
-頭機柜(機柜ID=0).插槽6
-頭機柜(機柜ID=0).插槽7
-頭機柜(機柜ID=0).插槽8
-頭機柜(機柜ID=0).插槽9
-頭機柜(機柜ID=0).插槽10
-頭機柜(機柜ID=0).插槽11 [1.00]-第二機柜(機柜ID=1).插槽0 [1.01]-第二機柜(機柜ID=1).插槽1 [1.02]-第二機柜(機柜ID=1).插槽2 [1.03]-第二機柜(機柜ID=1).插槽3 [1.04]-第二機柜(機柜ID=1).插槽4 [1.05]-第二機柜(機柜ID=1).插槽5 [1.06]-第二機柜(機柜ID=1).插槽6 [1.07]-第二機柜(機柜ID=1).插槽7 [1.08]-第二機柜(機柜ID=1).插槽8 [1.09]-第二機柜(機柜ID=1).插槽9 [1.10]-第二機柜(機柜ID=1).插槽10 [1.11]-第二機柜(機柜ID=1).插槽11 [N.00]-第N個機柜(機柜ID=N).插槽0 [N.01]-第N個機柜(機柜ID=N).插槽1 [N.02]-第N個機柜(機柜ID=N).插槽2 [N.03]-第N個機柜(機柜ID=N).插槽3 [N.04]-第N個機柜(機柜ID=N).插槽4 [N.05]-第N個機柜(機柜ID=N).插槽5 [N.06]-第N個機柜(機柜ID=N).插槽6 [N.07]-第N個機柜(機柜ID=N).插槽7 [N.08]-第N個機柜(機柜ID=N).插槽8 [N.09]-第N個機柜(機柜ID=N).插槽9 [N.10]-第N個機柜(機柜ID=N).插槽10 [N.11]-第N個機柜(機柜ID=N).插槽11 或者,存儲設(shè)備604、704可以接收對應(yīng)于存儲設(shè)備604、704所位于的列和行的設(shè)備標(biāo)識符而非插槽編號。當(dāng)然,如果通過分配應(yīng)用程序而識別多個域存儲系統(tǒng)104、108拓?fù)?,則唯一的設(shè)備ID還可以包括域編號。
在每個機柜204、304上示出顯示設(shè)備636a-N、716a-N,顯示機柜ID。然而,如上面記錄的,顯示設(shè)備636、716還可以顯示安裝在機柜204、304中的每個的存儲設(shè)備604、704的唯一設(shè)備ID。例如,顯示設(shè)備636、716可以包括被布置用于表示插槽在機柜上的布置的多個LED,并且每個插槽可以具有顯示器以顯示安裝在該插槽中的存儲設(shè)備604、704的唯一設(shè)備ID。
現(xiàn)在參考圖9,將根據(jù)本發(fā)明的至少一些實施例而描述識別初始存儲系統(tǒng)104、108拓?fù)浠蚓€纜布設(shè)順序的方法。當(dāng)作出識別存儲系統(tǒng)104、108拓?fù)涞臎Q定時(步驟904),所述方法開始??梢宰鳛閷哂蟹峙鋺?yīng)用程序212的設(shè)備加電的結(jié)果而作出所述決定?;蛘撸梢苑磻?yīng)于接收識別拓?fù)涞拿睿蛎慨?dāng)系統(tǒng)104、108的拓?fù)涓淖儠r,作出識別存儲系統(tǒng)104、108拓?fù)涞臎Q定。
一旦作出識別存儲系統(tǒng)104、108拓?fù)涞臎Q定,則分配應(yīng)用程序212將找出存儲系統(tǒng)104、108中的所有擴展器408(步驟908)。可以在RAID機柜204中或在主系統(tǒng)304中實現(xiàn)分配應(yīng)用程序212。每個通過線纜布設(shè)216而連接到另一機柜的機柜典型地包括至少一個擴展器。如果機柜被連接到兩個不同機柜,則可以使用一個擴展器408的兩個端口,或者使用兩個不同的擴展器。如果將更多機柜連接到單個機柜,則可以采用擴展器408上的附加端口或附加的擴展器。當(dāng)已經(jīng)找到所有擴展器408時,分配應(yīng)用程序212已經(jīng)考慮了(account)存儲系統(tǒng)104、108中的所有機柜。
隨著考慮了所有機柜,分配應(yīng)用程序212識別頂部擴展器408(步驟912)。頂部擴展器408是用于向存儲系統(tǒng)104、108中的其它機柜發(fā)送數(shù)據(jù)的、起始者連接(initiator-connected)的擴展器408。此后,分配應(yīng)用程序212將通過確定哪個擴展器408作為頂部擴展器408的目標(biāo)而識別線纜布設(shè)順序中的下一個擴展器408(步驟916)。如果一個擴展器408作為頂部(起始者)擴展器408的目標(biāo),則分配應(yīng)用程序212知道目標(biāo)擴展器408通過線纜布設(shè)216直接連接到頂部(起始者)擴展器408。此后,分配應(yīng)用程序212確定在存儲系統(tǒng)104、108中是否存在未在拓?fù)渲锌紤]的任何附加擴展器408(步驟920)。如果存在所述附加擴展器408,則分配應(yīng)用程序212將查看哪個擴展器408正作為最后識別的擴展器408的目標(biāo)(步驟916)。分配應(yīng)用程序212將繼續(xù)這一識別哪個擴展器通過線纜布設(shè)216而被連接的處理,直到不存在另外的擴展器408為止。
當(dāng)在步驟908中考慮的所有擴展器408已經(jīng)在線纜布設(shè)順序中被識別了之后,分配應(yīng)用程序建立根據(jù)擴展器408的物理連接而以軟件鏈接的互聯(lián)的擴展器408的形態(tài)圖(map)(步驟924)?;ヂ?lián)的擴展器408的形態(tài)圖識別每個擴展器相對于頭機柜的位置,或者更具體地,識別頭機柜內(nèi)的擴展器408。
一旦已經(jīng)生成互聯(lián)的擴展器408的形態(tài)圖,則分配應(yīng)用程序212比較每個擴展器的地址(928)。在一個實施例中,所述擴展器為SAS擴展器,從而具有SAS地址。SAS地址是基于它們所位于的機柜的中間背板(midplane)而生成的全球名稱(WWN)。因此,與同一機柜相關(guān)的擴展器將生成除了預(yù)定的A/B標(biāo)志符位(designator bit)之外幾乎相同的地址。除了標(biāo)志符位之外,相同機柜內(nèi)的擴展器408的地址將相同。因此,分配應(yīng)用程序212可以通過識別具有除了它們的標(biāo)志符位之外相同地址的擴展器,而依據(jù)機柜而對擴展器408分組(步驟932)。當(dāng)已經(jīng)依據(jù)機柜對擴展器408分組時,分配應(yīng)用程序212已經(jīng)成功生成了存儲系統(tǒng)104、108中的每個機柜的拓?fù)浠蚓€纜布設(shè)順序的形態(tài)圖,并且所述方法結(jié)束(步驟936)。
圖10圖示了根據(jù)本發(fā)明至少一些實施例用于對存儲設(shè)備604、704進行編號的方法。最初,識別用于容納存儲設(shè)備604、704的行(即,機柜內(nèi)的存儲設(shè)備插槽)的數(shù)量(步驟1004)。此后,識別用于容納存儲設(shè)備604、704的列的數(shù)量(步驟1008)。行和列的數(shù)量可以是存儲在存儲器632、712中的數(shù)。在另一實施例中,當(dāng)機柜被安裝在存儲系統(tǒng)104、108中時,可以詢問系統(tǒng)管理員在該機柜中存在多少行和列的插槽。
在識別了機柜的總體布局之后,分配應(yīng)用程序212確定存儲設(shè)備604、704所位于的機柜的機柜ID(步驟1012)。經(jīng)分配應(yīng)用程序212的請求,可以從存儲器632、712檢索出機柜ID。
一旦知道了機柜ID,則分配應(yīng)用程序212確定存儲設(shè)備604、704在機柜中的位置(步驟1016)。換言之,分配應(yīng)用程序212識別存儲設(shè)備604、704所位于的行和列。基于存儲設(shè)備604、704的位置,分配應(yīng)用程序212確定設(shè)備標(biāo)識符(步驟1020)。設(shè)備標(biāo)識符唯一地識別存儲設(shè)備604、704在機柜中的位置。然而,設(shè)備標(biāo)識符通常不唯一地識別遍及整個存儲系統(tǒng)104、108的存儲設(shè)備604、704。通常不通過存儲設(shè)備604、704的設(shè)備標(biāo)識符而唯一地識別所述存儲設(shè)備604、704,這是因為在存儲系統(tǒng)104、108中通常存在具有類似布局的其它機柜。例如,通常存在多個機柜,其含有具有對應(yīng)于機柜內(nèi)的第一行、第一列的設(shè)備標(biāo)識符的存儲設(shè)備。因此,需要將附加標(biāo)識符添加到設(shè)備標(biāo)識符,以唯一地識別存儲設(shè)備604、704。通過在唯一設(shè)備ID中合并機柜ID與設(shè)備標(biāo)識符而創(chuàng)建該唯一設(shè)備ID。一旦創(chuàng)建了唯一設(shè)備ID,則將其分配給存儲設(shè)備604、704(步驟1024)。唯一設(shè)備ID唯一地識別遍及整個存儲系統(tǒng)104、108的存儲設(shè)備604、704。此外,由于唯一設(shè)備ID基于存儲設(shè)備604、704在機柜內(nèi)的位置,以及機柜在存儲系統(tǒng)104、108中的位置,所以可以使用該唯一設(shè)備ID來快速定位存儲設(shè)備604、704。
在將唯一設(shè)備ID分配給存儲設(shè)備604、704之后,將該唯一設(shè)備ID存儲在存儲設(shè)備604、704中或機柜上的存儲器中,并且經(jīng)由顯示設(shè)備636、716而顯示(步驟1028)。機柜的顯示設(shè)備636、716可以顯示與其關(guān)聯(lián)的每個存儲設(shè)備604、704的唯一設(shè)備ID。可以緊接著機柜上的每個插槽而顯示該唯一設(shè)備ID,或者可以在機柜的末端顯示該唯一設(shè)備ID。在可選實施例中,每個存儲設(shè)備604、704可以配備有可以顯示所分配的唯一設(shè)備ID的顯示設(shè)備。
當(dāng)唯一設(shè)備ID已經(jīng)被分配給存儲設(shè)備604、704時,分配應(yīng)用程序212確定機柜內(nèi)是否存在任何附加存儲設(shè)備604、704(步驟1032)。如果存在仍要接收唯一設(shè)備ID的多個存儲設(shè)備604、704,則分配應(yīng)用程序212確定下一個存儲設(shè)備604、704的位置(步驟1016)。另一方面,如果機柜中的每個存儲設(shè)備604、704已經(jīng)接收了唯一設(shè)備ID,則分配應(yīng)用程序212確定是否存在不具有分配給其中的存儲設(shè)備604、704的唯一設(shè)備ID的任何附加機柜(步驟1036)。如果在存儲系統(tǒng)104、108中存在附加機柜,其擁有不具有唯一設(shè)備ID的存儲設(shè)備604,704,則該方法回到步驟1204。一旦存儲系統(tǒng)104、108內(nèi)的所有存儲設(shè)備604、704已經(jīng)接收了唯一設(shè)備ID,則該方法結(jié)束(步驟1040)。
在一個實施例中,存儲設(shè)備604、704未被分配唯一設(shè)備ID,直到將其插入機柜中為止。然而,在其它實施例中,機柜中的存儲插槽在接收到存儲設(shè)備604、704之前,可以被分配唯一設(shè)備ID。當(dāng)將存儲設(shè)備604、704插入到插槽中、或由插槽接收到存儲設(shè)備604、704時,存儲設(shè)備604、704可以自動采取(assume)與該插槽關(guān)聯(lián)的唯一設(shè)備ID。這有助于確保在拔掉存儲設(shè)備604、704或?qū)⑵洳宓叫虏宀壑械那闆r下,ID不來回變化。根據(jù)本發(fā)明的實施例,當(dāng)存儲設(shè)備604、704被添加到機架中具有向其分配的ID的適當(dāng)插槽中時,向所述存儲設(shè)備604、704分配對于該存儲設(shè)備604、704來說新的唯一設(shè)備ID。所分配的唯一設(shè)備ID在大多數(shù)情況下不同于在制造中分配給存儲設(shè)備604、704的WWN。
圖11圖示了根據(jù)本發(fā)明至少一些實施例的基于存儲系統(tǒng)104、108拓?fù)浠蚓€纜布設(shè)順序分配機柜ID的可選方法。最初,當(dāng)分配應(yīng)用程序212決定向存儲系統(tǒng)104、108中的機柜分配機柜ID時(步驟1104),方法開始。此后,頭機柜被分配機柜ID 0(步驟1108)。在一個實施例中,可以采用RAID機柜204的控制器612來分配機柜ID。因為可以(以及應(yīng)當(dāng))將控制器612不同地鏈接到機柜以增大容錯,第一控制器612a的線纜布設(shè)可以隨后用作分配機柜ID的基礎(chǔ)。假設(shè)使用線纜布設(shè)的線性鏈(即,不存在樹形拓?fù)?,如果未安裝第一控制器612a,則使用第二控制器612b線纜布設(shè)順序的相反順序。這是因為第一控制器612a和第二控制器612b應(yīng)當(dāng)從彼此相反地鏈接。當(dāng)安裝了第一控制器612a時,可以在啟動握手消息中將存儲在第二控制器612b上的機柜ID與第一控制器612a共享。因此,在頭機柜已經(jīng)接收了機柜ID 0之后,確定第一控制器612a是否可以直接看見任何擴展機柜(步驟1112)。如果第一控制器612a無法直接看見存儲系統(tǒng)104、108中的機柜(即,未安裝第一控制器612a),則將線纜布設(shè)順序定義為第二控制器612的線纜布設(shè)的相反順序(步驟1116)。然而,如果第一控制器612a可以直接看見擴展機柜,則確定第二控制器612b是否可以直接看見任何擴展機柜(步驟1120)。如果第二控制器612b無法直接看見存儲系統(tǒng)104、108中的任何擴展機柜(即,未安裝第二控制器612b),則基于機柜被第一控制器612a看見的順序而定義線纜布設(shè)順序(步驟1124)。換言之,將直接連接到第一控制器612a的機柜識別為線纜布設(shè)順序中的第一個,并且接下來在線纜布設(shè)順序中排序每個在后機柜。
在僅一個控制器612可以看見存儲系統(tǒng)104、108中的機柜拓?fù)涞那闆r下,則基于該控制器612對存儲系統(tǒng)104、108的機柜的觀看而設(shè)置線纜布設(shè)順序。一旦定義了線纜布設(shè)順序,則設(shè)置變量X等于系統(tǒng)104、108中的機柜數(shù)量減1(步驟1128)。此后,對還未被分配機柜ID的下一個機柜(基于線纜布設(shè)順序)分配等于X的機柜ID(步驟1132)。此后,分配應(yīng)用程序212確定在存儲系統(tǒng)104、108中是否存在未接收到機柜ID的附加機柜(步驟1136)。如果存儲所述附加機柜,則遞減變量X(步驟1140),并且該方法回到步驟1132。一旦已經(jīng)對所有機柜分配了機柜ID,則通過將每個機柜ID存儲在控制器612上的存儲器中或單獨的存儲器632、712中、并且在每個機柜顯示設(shè)備636、716上顯示機柜ID(步驟1144),來繼續(xù)該方法。
返回至步驟1120,如果確定第一控制器612a和第二控制器612b兩者均可以看見擴展機柜,則通過設(shè)置變量等于X(步驟1148),來繼續(xù)該方法。此后,分配應(yīng)用程序212對由第一控制器612a看見的下一個機柜分配等于X的機柜ID(步驟1152)。一旦由第一控制器612a看見的第一機柜被分配了機柜ID,則確定是否存在可以被第一控制器612a看見的任何附加機柜(步驟1156)。如果存在第一控制器612a可見的附加機柜,則分配應(yīng)用程序212通過遞增變量X(步驟1160)并回到步驟1152而繼續(xù)。
然而,當(dāng)不存在第一控制器612a可見的附加機柜時,確定第二控制器612b是否還可以看見仍未被分配機柜ID的機柜(步驟1164)。如果存在未被分配機柜ID的機柜,因為其不能被第一控制器612a看見,所以分配應(yīng)用程序則遞增變量X(步驟1168)。此后,分配應(yīng)用程序212對第二控制器612b看見的最后的機柜(不具有機柜ID)分配等于X的機柜ID(步驟1172)。當(dāng)將機柜ID分配給第二控制器612b看見的最后的機柜時,該方法回到步驟1164。在所有機柜已經(jīng)被分配了機柜ID之后,該方法繼續(xù)至步驟1144。
在已經(jīng)存儲并顯示了機柜ID之后,當(dāng)預(yù)期向存儲系統(tǒng)104、108增加更多機柜時,分配應(yīng)用程序212再一次遞增變量X(步驟1176)。在已經(jīng)遞增了變量X之后,分配應(yīng)用程序212將等待,直到在存儲系統(tǒng)104、108中檢測到新機柜為止(步驟1180)。當(dāng)在已經(jīng)檢測到拓?fù)洳⒎峙淞藱C柜ID之后將機柜添加到鏈路時,該新機柜被分配等于X的機柜ID(步驟1184)。一旦該新機柜已經(jīng)被分配了機柜ID,則該方法回到步驟1144。
如果需要持久,則維持機柜ID,直到重啟兩個控制器612為止?;蛘?,如果將機柜ID存儲在存儲器中,則維持持久性,直到清空存儲器為止。在可選實施例中,如果不需要機柜ID的持久,則當(dāng)添加新機柜時重新確定所有機柜ID的值。更具體地,如果新機柜導(dǎo)致在兩個控制器612上幾乎同時的拓?fù)涓淖兦闆r,則重新發(fā)現(xiàn)擴展器并生成新拓?fù)湫螒B(tài)圖。
人類趨向于期望事物遵循自然順序,并且,如果機柜被有序地置于機架中,則將自然地期望以相同的順序分配機柜ID。因此,此實施例的優(yōu)點是結(jié)合圖11描述的機柜ID分配方法使用物理線纜布設(shè)作為分配機柜ID的基礎(chǔ)。
圖12圖示了根據(jù)本發(fā)明至少一些實施例的分配機柜ID的一個方法。當(dāng)分配應(yīng)用程序212確定分配機柜ID(步驟1204)時,開始該方法。分配應(yīng)用程序212可以響應(yīng)于從系統(tǒng)管理員接收到分配機柜ID的命令而作出這樣的確定?;蛘?,如果機柜ID不是持久的,則分配應(yīng)用程序212可以在至存儲系統(tǒng)104、108的電力已經(jīng)循環(huán)了之后,自動開始分配機柜ID。在一個實施例中,分配應(yīng)用程序212通過對頭機柜(例如,RAID機柜204或JBOD機柜308a)分配機柜ID 0(步驟1208)而開始。在頭機柜已經(jīng)被分配了其機柜ID之后,分配應(yīng)用程序?qū)⒆R別每個機柜的WWN(步驟1212)。如先前記錄的,機柜包含一個或多個擴展器408,其具有除了標(biāo)志符位之外主要代表其所位于的機柜的地址。因此,設(shè)置機柜的WWN等于機柜內(nèi)的擴展器408的地址減去地址標(biāo)志符位。
此后,分配應(yīng)用程序212通過WWN而分類機柜(步驟1216)。可以以升序或降序來分類WWN。在一個實施例中,基于從最低到最高的WWN而分類機柜。在分類機柜之后,設(shè)置變量X等于1(步驟1220)。隨著初始化變量X,分配應(yīng)用程序?qū)哂邢乱粋€最高WWN的未分配的機柜分配等于X的機柜ID(步驟1224)。一旦該機柜已經(jīng)被分配了機柜ID,則分配應(yīng)用程序確定在存儲系統(tǒng)104、108中是否存在未被分配機柜ID的附加機柜(步驟1228)。如果仍存在不具有機柜ID的機柜,則通過將X增加1(步驟1232)并且回到步驟1224,來繼續(xù)該方法。
在對每個機柜分配機柜ID之后,將機柜ID存儲在存儲器632、712中,并且/或者經(jīng)由顯示設(shè)備636、716來顯示(步驟1236)。在一個實施例中,每個機柜配備有顯示設(shè)備636、716,從而顯示其所分配的機柜ID。類似地,每個機柜通常具有其自己的存儲器,用于存儲其所分配的機柜ID?;蛘?,可以將機柜ID存儲在單獨的點,并且將其傳送給存儲系統(tǒng)104、108中的所有機柜。
在一個實施例中,使用包括兩個控制器612a和612b的RAID機柜204來分配機柜ID。在此特定實施例中,機柜ID為持久的(即,存儲在存儲器632、712或控制器612的本地存儲器中),直到重啟了控制器612a和612b兩者為止。另外,維持機柜ID,并且機柜ID關(guān)聯(lián)于它們最初被分配到的相同機柜。
隨著機柜ID被存儲并顯示在每個機柜上,分配應(yīng)用程序再次遞增變量X(步驟1240)。此后,分配應(yīng)用程序212等待,直到另一機柜被添加到存儲系統(tǒng)104、108為止(步驟1244)。通常所添加的機柜將具有位于已經(jīng)連接的機柜的WWN之間的WWN。這里,如果簡單地重新分類WWN,則將上移(shift up)唯一設(shè)備ID(其取決于它們的機柜ID)。這是不合需要的,因為對這些存儲設(shè)備604、704的正在處理中的I/O會終止在錯誤驅(qū)動,除非專門的處理發(fā)生。因此,為了避免改變唯一設(shè)備ID,可以維持已知機柜WWN的列表,并且,分配應(yīng)用程序212將不對已經(jīng)具有機柜ID的機柜分配機柜ID。一檢測到新機柜并確定其WWN,就將該WWN添加到已知機柜WWN的列表,使得當(dāng)添加另一機柜時將保持該WWN。因此,新機柜將被簡單地分配等于X的機柜ID,其為最低的未使用的機柜ID(步驟1248)。
如本領(lǐng)域技術(shù)人員可以理解的,并非必須以升序完成機柜ID的分配。相反,可以以從隨機選擇的數(shù)開始的降序來分配機柜ID。例如,當(dāng)達到機柜ID0時,則可以對在后的機柜分配負(fù)的機柜ID。另外,即使以升序分配機柜ID,也并非必須對頭機柜分配機柜ID 0。機柜發(fā)ID的分配可以從任意的隨機選擇的數(shù)或字符開始。
在使用RAID機柜204來分配機柜ID的實施例中,或許存在將需要替換控制器612的時期。如果將存儲系統(tǒng)內(nèi)的機柜的機柜ID或WWN維持在控制器612的存儲器的一部分上,則新控制器612將不知道現(xiàn)有機柜ID分配。因此,可以在機柜之間共享機柜ID分配,作為來自已經(jīng)啟動的控制器612的啟動握手程序的一部分。
在一個實施例中,可以使用戶覆寫(override)由分配應(yīng)用程序212選擇的機柜ID分配的能力是可用的。這樣的特征是有益的,尤其在機柜ID分配不具有物理線纜布設(shè)基礎(chǔ)的情形中。用戶覆寫程序應(yīng)當(dāng)能夠以不允許數(shù)據(jù)丟失或損壞的這樣的方式來改變機柜ID。將機柜ID重新分配限制到?jīng)]有I/O正在流經(jīng)機柜的時期,可以實現(xiàn)此目標(biāo)。一種停止兩個控制器612上的I/O的方式是實現(xiàn)I/O暫停功能,其暫時停止至存儲系統(tǒng)104、108的I/O。
為了解釋和說明的目的,已經(jīng)給出了本發(fā)明的前述討論。此外,本說明并非意在將本發(fā)明限制于這里公開的形式。因此,在相關(guān)領(lǐng)域的技藝和知識內(nèi),與上述示教相當(dāng)?shù)淖兓托薷脑诒景l(fā)明的范疇之內(nèi)。這里上面描述的實施例還意在說明實踐本發(fā)明的、當(dāng)前已知的最佳方式,并且意在使得本領(lǐng)域的其它技術(shù)人員能夠在這樣的或其它實施例中、并且以它們對本發(fā)明的特定應(yīng)用或使用而需要的各種修改,來利用本發(fā)明。意在將所附權(quán)利要求書解釋為包括可選實施例,到現(xiàn)有技術(shù)所允許的程度。
權(quán)利要求
1.一種識別存儲系統(tǒng)機柜的方法,包括
識別所述存儲系統(tǒng)內(nèi)的機柜的拓?fù)洌?br>
生成唯一的機柜標(biāo)識符(ID);以及
基于所識別的所述存儲系統(tǒng)內(nèi)的機柜的拓?fù)?,向所述存儲系統(tǒng)中的機柜分配唯一的機柜ID。
2.如權(quán)利要求1所述的方法,還包括在所述存儲系統(tǒng)中的至少一些機柜上存儲機柜ID。
3.如權(quán)利要求1所述的方法,還包括在所述機柜上顯示所述機柜ID。
4.如權(quán)利要求1所述的方法,其中,識別拓?fù)浒?br>
搜索所述存儲系統(tǒng)中的所有擴展器;
識別頂部擴展器;
識別在所述頂部擴展器之下的擴展器;以及
建立互聯(lián)的擴展器的形態(tài)圖,其代表所述存儲系統(tǒng)中的機柜的物理互聯(lián)。
5.如權(quán)利要求4所述的方法,還包括
比較擴展器地址,以確定哪些擴展器關(guān)聯(lián)于共同的機柜;
邏輯地對關(guān)聯(lián)于共同機柜的擴展器分組。
6.如權(quán)利要求1所述的方法,還包括
識別頭機柜;
對所述頭機柜分配第一機柜ID;
識別連接到所述頭機柜的第一機柜;以及
對所述第一機柜分配第二機柜ID。
7.如權(quán)利要求6所述的方法,其中,所述頭機柜包括控制器,用于執(zhí)行從主機接收的命令,并且其中,所述第一機柜包括所述控制器直接可見的第一擴展器。
8.如權(quán)利要求1所述的方法,其中,所述存儲系統(tǒng)的拓?fù)浠跈C柜之間的物理線纜布設(shè)連接順序。
9.如權(quán)利要求8所述的方法,還包括
確定第一控制器是否可以直接看見所述存儲系統(tǒng)中的至少一個機柜;
在所述第一控制器可以直接看見至少一個機柜的情況下,基于由所述第一控制器看見的機柜鏈,定義所述機柜的線纜布設(shè)順序;
在所述第一控制器不能直接看見至少一個機柜的情況下,基于由第二控制器看見的其機柜鏈的反向,定義所述機柜的線纜布設(shè)順序;以及
基于所定義的線纜布設(shè)順序,以升序?qū)C柜分配機柜ID。
10.如權(quán)利要求1所述的方法,還包括對機柜內(nèi)的每個存儲設(shè)備分配唯一的設(shè)備ID,其包括機柜ID和設(shè)備ID中的至少一個。
11.一種用于對存儲系統(tǒng)中的機柜分配標(biāo)識號的設(shè)備,包括
存儲器,包括分配應(yīng)用程序,其中,所述分配應(yīng)用程序包含指令以
基于所述機柜的互聯(lián),生成所述存儲系統(tǒng)內(nèi)的機柜的形態(tài)基于機柜在所述存儲系統(tǒng)內(nèi)的位置,對每個機柜分配唯一的機柜標(biāo)識符(ID);以及
處理器,可操作用于執(zhí)行所述分配應(yīng)用程序指令。
12.如權(quán)利要求11所述的設(shè)備,其中,所述存儲器和處理器可操作地關(guān)聯(lián)于位于存儲機柜上的控制器和主計算機中的至少一個。
13.如權(quán)利要求11所述的設(shè)備,其中,所述存儲系統(tǒng)中的至少一些機柜包括顯示設(shè)備,用于顯示機柜的唯一的機柜ID。
14.如權(quán)利要求11所述的設(shè)備,其中,所述機柜使用已知存儲系統(tǒng)通信協(xié)議來彼此通信,其中,所述已知存儲系統(tǒng)通信協(xié)議包括光纖信道協(xié)議和串行連接小型計算機系統(tǒng)接口(SAS)之一。
15.如權(quán)利要求11所述的設(shè)備,其中,所述分配應(yīng)用程序還包括指令,用于唯一地識別所述存儲系統(tǒng)中的每個機柜中的每個存儲設(shè)備,并且對每個存儲設(shè)備分配設(shè)備ID。
16.如權(quán)利要求15所述的設(shè)備,其中,所述設(shè)備ID是唯一的設(shè)備ID,其包括與所述存儲設(shè)備相關(guān)聯(lián)的機柜的機柜ID、以及關(guān)于所述存儲設(shè)備在機柜中的位置的標(biāo)識符。
17.一種電子數(shù)據(jù)系統(tǒng),包括多個機柜,每個機柜包含一個或多個數(shù)據(jù)存儲設(shè)備,所述系統(tǒng)包括
用于確定所述機柜相對于頭機柜的線纜布設(shè)順序的裝置;
用于生成機柜標(biāo)識符(ID)的裝置;以及
用于基于所述機柜在線纜布設(shè)順序中的位置,而對所述系統(tǒng)中的每個機柜分配不同機柜ID的裝置。
18.如權(quán)利要求17所述的系統(tǒng),其中,所述頭機柜包括RAID機柜和JBOD機柜之一。
19.如權(quán)利要求17所述的系統(tǒng),其中,對所述頭機柜分配最低的所生成的機柜ID,并且,以升序?qū)€纜布設(shè)順序中的每個在后機柜分配機柜ID。
20.如權(quán)利要求17所述的系統(tǒng),其中,每個機柜包括用于顯示其相應(yīng)機柜ID的裝置。
全文摘要
提供了一種方法、設(shè)備和系統(tǒng),用于對數(shù)據(jù)存儲系統(tǒng)中的機柜自動分配識別號或機柜ID。對每個機柜分配唯一的機柜ID,其可用于定位數(shù)據(jù)存儲系統(tǒng)中的機柜?;诰W(wǎng)絡(luò)拓?fù)洌蓹C柜ID并將其分配給機柜。具體地,對每個機柜分配機柜ID,其不僅唯一地識別機柜,而且該機柜ID還可用于確定機柜在數(shù)據(jù)存儲系統(tǒng)中機柜的位置。
文檔編號G06F15/16GK101611390SQ200880004483
公開日2009年12月23日 申請日期2008年2月4日 優(yōu)先權(quán)日2007年2月8日
發(fā)明者保羅·A·阿什莫爾, 伊恩·R·戴維斯, 喬治·A·卡爾維茨 申請人:多特希爾系統(tǒng)公司