国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      存儲(chǔ)系統(tǒng)條件指示器及其使用方法

      文檔序號(hào):6768686閱讀:261來(lái)源:國(guó)知局

      專利名稱::存儲(chǔ)系統(tǒng)條件指示器及其使用方法
      技術(shù)領(lǐng)域
      :本發(fā)明涉及數(shù)字?jǐn)?shù)據(jù)存儲(chǔ)系統(tǒng)和方法,更具體地涉及那些提供容錯(cuò)存儲(chǔ)的系統(tǒng)和方法。
      背景技術(shù)
      :已知現(xiàn)有技術(shù)依照根據(jù)各種RAID(獨(dú)立磁盤冗余陣列)協(xié)議的任何一種的模式來(lái)提供冗余磁盤存儲(chǔ)器。使用RAID模式的典型磁盤陣列是需要由經(jīng)驗(yàn)豐富的信息技術(shù)人員來(lái)管理的復(fù)雜結(jié)構(gòu)。而且在許多使用RAID模式的陣列設(shè)計(jì)中,如果所述陣列中的各磁盤驅(qū)動(dòng)器是非均勻容量的,那么該設(shè)計(jì)可能不能夠使用超過(guò)該陣列中最小驅(qū)動(dòng)器容量的驅(qū)動(dòng)器上的任何容量。使用標(biāo)準(zhǔn)RAID系統(tǒng)的一個(gè)問(wèn)題是盤面損壞可能發(fā)生在磁盤陣列中不經(jīng)常使用的區(qū)域。在另一個(gè)驅(qū)動(dòng)器故障的情況下,并不總是能確定發(fā)生了損壞。在這種情況下,當(dāng)所述RAID陣列重構(gòu)所述故障驅(qū)動(dòng)器時(shí),損壞的數(shù)據(jù)可能被傳播和保存。在許多存儲(chǔ)系統(tǒng)中,按就緒狀態(tài)(readystate)維持備用存儲(chǔ)設(shè)備,使得其可以在另一個(gè)存儲(chǔ)設(shè)備故障時(shí)被使用。這種備用存儲(chǔ)設(shè)備通常被稱作“熱后備”。所述熱后備在存儲(chǔ)設(shè)備常規(guī)操作期間并不用于存儲(chǔ)數(shù)據(jù)。當(dāng)運(yùn)行的存儲(chǔ)設(shè)備故障時(shí),該故障存儲(chǔ)設(shè)備由該熱后備邏輯上替換,而且要移動(dòng)數(shù)據(jù)或者通過(guò)其他方式在所述熱后備上再產(chǎn)生數(shù)據(jù)。當(dāng)修復(fù)或者更換所述故障存儲(chǔ)設(shè)備時(shí),典型地要移動(dòng)數(shù)據(jù)或者通過(guò)其他方式在(重新)運(yùn)行的存儲(chǔ)設(shè)備上重新產(chǎn)生這些數(shù)據(jù),而且使所述熱后備脫機(jī),以準(zhǔn)備好在另一個(gè)故障事件中使用。熱后備的維護(hù)通常是復(fù)雜的,并因此通常由經(jīng)驗(yàn)豐富的管理者進(jìn)行操縱。熱后備磁盤同樣代表著附加費(fèi)用。
      發(fā)明內(nèi)容在本發(fā)明的第一實(shí)施例中,提供一種用于指示存儲(chǔ)系統(tǒng)條件的方法。所述存儲(chǔ)系統(tǒng)具有多個(gè)存儲(chǔ)設(shè)備,在所述存儲(chǔ)系統(tǒng)中能夠利用各種存儲(chǔ)模式來(lái)冗余地存儲(chǔ)數(shù)據(jù)。所述方法包括根據(jù)所述多個(gè)存儲(chǔ)設(shè)備中每一個(gè)的可用存儲(chǔ)量以及所述多個(gè)存儲(chǔ)設(shè)備的數(shù)據(jù)存儲(chǔ)模式來(lái)確定存儲(chǔ)系統(tǒng)條件;根據(jù)所述多個(gè)存儲(chǔ)設(shè)備中每一個(gè)的可用存儲(chǔ)量以及所述多個(gè)存儲(chǔ)設(shè)備的數(shù)據(jù)存儲(chǔ)模式來(lái)確定是否建議附加存儲(chǔ)容量;以及利用至少一個(gè)條件指示器來(lái)指示所述存儲(chǔ)系統(tǒng)條件,包括指示是否建議附加存儲(chǔ)容量。在相關(guān)實(shí)施例中,所述指示可以使用單個(gè)指示器實(shí)現(xiàn),例如多色燈,其中每種顏色都與不同條件相關(guān),或者使用多個(gè)指示器實(shí)現(xiàn),其中每個(gè)指示器都與不同條件相關(guān)。在另一個(gè)相關(guān)實(shí)施例中,可以確定所述系統(tǒng)是否處于從一個(gè)狀態(tài)向另一個(gè)狀態(tài)的轉(zhuǎn)換,并且如果是,則可以指示所述轉(zhuǎn)換事實(shí)。可以指示所述轉(zhuǎn)換事實(shí),例如,通過(guò)在關(guān)閉狀態(tài)和開啟狀態(tài)之間閃光或者通過(guò)在兩種不同顏色之間閃光。在本發(fā)明的第二實(shí)施例中,提供一種存儲(chǔ)系統(tǒng),包括多個(gè)存儲(chǔ)設(shè)備,在所述多個(gè)存儲(chǔ)設(shè)備中能夠利用不同的數(shù)據(jù)存儲(chǔ)模式來(lái)冗余地存儲(chǔ)數(shù)據(jù);至少一個(gè)條件指示器,用于提供存儲(chǔ)系統(tǒng)條件信息;以及存儲(chǔ)管理器,耦合到所述多個(gè)存儲(chǔ)設(shè)備和所述至少一個(gè)條件指示器。所述存儲(chǔ)管理器用于根據(jù)所述多個(gè)存儲(chǔ)設(shè)備中每一個(gè)的可用存儲(chǔ)量以及所述多個(gè)存儲(chǔ)設(shè)備的數(shù)據(jù)存儲(chǔ)模式來(lái)確定存儲(chǔ)系統(tǒng)條件;根據(jù)所述多個(gè)存儲(chǔ)設(shè)備中每一個(gè)的可用存儲(chǔ)量以及所述多個(gè)存儲(chǔ)設(shè)備的數(shù)據(jù)存儲(chǔ)模式來(lái)確定是否建議附加存儲(chǔ)容量;以及利用至少一個(gè)條件指示器來(lái)指示所述存儲(chǔ)系統(tǒng)條件,包括指示是否建議附加存儲(chǔ)容量。在相關(guān)的實(shí)施例中,所述陣列中的每個(gè)插槽都可以與指示器相關(guān),在這種情況下指示器可以共同用于指示包括指示陣列中哪個(gè)插槽應(yīng)當(dāng)用附加存儲(chǔ)容量來(lái)填充的所述存儲(chǔ)系統(tǒng)狀態(tài)。在其他相關(guān)實(shí)施例中,可以確定所述系統(tǒng)是否處于從一種狀態(tài)向另一種狀態(tài)轉(zhuǎn)換,并且如果是,則可以指示所述轉(zhuǎn)換事實(shí)??梢酝ㄟ^(guò)例如在關(guān)閉狀態(tài)和開啟狀態(tài)之間閃光或者通過(guò)在兩種不同顏色之間閃光指示所述轉(zhuǎn)換事實(shí)。在另一個(gè)相關(guān)實(shí)施例中,所述指示器可包括用于每個(gè)插槽的前面板和用于照射所述前面板以指示所述存儲(chǔ)系統(tǒng)狀態(tài)的相關(guān)燈,所述存儲(chǔ)系統(tǒng)狀態(tài)包括用附加存儲(chǔ)容量填充所述陣列中的哪個(gè)插槽。通過(guò)參考下列附圖參照下列詳細(xì)說(shuō)明,本發(fā)明上述特征將變得更加容易理解,其中圖1示出本發(fā)明的實(shí)施例,其中將對(duì)象分析為一系列存儲(chǔ)塊。圖2是說(shuō)明在相同實(shí)施例中塊的容錯(cuò)存儲(chǔ)模式如何根據(jù)附加更多存儲(chǔ)器而動(dòng)態(tài)改變。圖3說(shuō)明本發(fā)明另一實(shí)施例,在使用不同大小存儲(chǔ)設(shè)備構(gòu)造的存儲(chǔ)系統(tǒng)上按不同容錯(cuò)模式的塊的存儲(chǔ)。圖4說(shuō)明本發(fā)明的另一個(gè)實(shí)施例,其中指示器狀態(tài)用于警告無(wú)效存儲(chǔ)使用和低等級(jí)容錯(cuò)。圖5是根據(jù)本發(fā)明實(shí)施例的所述數(shù)據(jù)存儲(chǔ)、檢索和再布局中使用的功能模塊框圖。圖6表示在包含兩個(gè)以上驅(qū)動(dòng)器的陣列中使用鏡像的示例。圖7表示使用不同布局模式以存儲(chǔ)其數(shù)據(jù)的一些示例性存儲(chǔ)區(qū)。圖8表示用于實(shí)施后備卷(sparsevolume)的查找表。圖9表示根據(jù)本發(fā)明示例性實(shí)施例的狀態(tài)指示器,其用于具有可用存儲(chǔ)空間并按容錯(cuò)方式操作的示例性陣列。圖10表示根據(jù)本發(fā)明示例性實(shí)施例的狀態(tài)指示器,其用于不具有足夠空間以維護(hù)冗余數(shù)據(jù)存儲(chǔ)并必須增加更大空間的示例性陣列。圖11表示根據(jù)本發(fā)明示例性實(shí)施例的狀態(tài)指示器,其不能夠維護(hù)故障情況下的冗余數(shù)據(jù)。圖12表示根據(jù)本發(fā)明示例性實(shí)施例的示例性陣列的狀態(tài)指示器,其中存儲(chǔ)設(shè)備已經(jīng)故障。用存儲(chǔ)設(shè)備填充插槽B、C、和D。圖13示出的模塊層次表示示例性實(shí)施例的不同軟件層以及它們彼此如何相關(guān)。圖14表示根據(jù)本發(fā)明實(shí)施例的聚簇存取表如何用于訪問(wèn)存儲(chǔ)區(qū)中的數(shù)據(jù)聚簇。圖15表示根據(jù)本發(fā)明實(shí)施例的日志表更新。圖16表示根據(jù)本發(fā)明實(shí)施例的驅(qū)動(dòng)器布局。圖17示出了根據(jù)本發(fā)明實(shí)施例的存儲(chǔ)區(qū)0的布局和其他存儲(chǔ)區(qū)如何被參照。圖18說(shuō)明了根據(jù)本發(fā)明實(shí)施例的讀差錯(cuò)處理。圖19說(shuō)明了根據(jù)本發(fā)明實(shí)施例的寫差錯(cuò)處理。圖20是根據(jù)本發(fā)明實(shí)施例的邏輯流程圖,其說(shuō)明了通過(guò)差錯(cuò)管理程序的壞區(qū)域備份。圖21是根據(jù)本發(fā)明實(shí)施例的示意框圖,其表示存儲(chǔ)陣列的相關(guān)組件。圖22是根據(jù)本發(fā)明實(shí)施例的邏輯流程圖,其表示管理虛擬熱后備的示例性邏輯。圖23是根據(jù)本發(fā)明實(shí)施例的邏輯流程圖,其說(shuō)明確定每個(gè)可能磁盤故障的再布局情況的示例性邏輯,如圖22的框2102。圖24是根據(jù)本發(fā)明實(shí)施例的邏輯流程圖,其表示調(diào)用虛擬熱后備功能的示例性邏輯。圖25是根據(jù)本發(fā)明實(shí)施例的邏輯流程圖,其表示自動(dòng)再配置一個(gè)或多個(gè)剩余驅(qū)動(dòng)器以恢復(fù)數(shù)據(jù)容錯(cuò)的示例性邏輯,如圖24的框2306。圖26是根據(jù)本發(fā)明實(shí)施例的邏輯流程圖,其用于升級(jí)存儲(chǔ)設(shè)備。具體實(shí)施例如在本說(shuō)明書和權(quán)利要求書中使用的,除非上下文另有要求,下面術(shù)語(yǔ)具有如下所解釋的意思。對(duì)象的“塊(chunk)”是對(duì)象的提取片,由所使用的物理存儲(chǔ)獨(dú)立地形成,且典型地是對(duì)象的固定數(shù)量的連續(xù)字節(jié)。數(shù)據(jù)存儲(chǔ)的容錯(cuò)“模式(pattern)”是在一個(gè)或者多個(gè)存儲(chǔ)設(shè)備上冗余地分布數(shù)據(jù)的特定方式,并且除了其他的,可以是鏡像(mirroring,例如按類似RAIDl的方式)、條帶化(striping,例如按類似RAID5的方式)、RAID6、雙奇偶校驗(yàn)、對(duì)角線奇偶校驗(yàn)、低密度奇偶校驗(yàn)碼、渦輪式碼、或者其他冗余模式或者這些冗余模式的組合。當(dāng)給定塊所產(chǎn)生的散列號(hào)通常與其他任何塊的散列號(hào)都不同時(shí),除非當(dāng)其他塊具有與該給定塊相同的數(shù)據(jù)內(nèi)容,該給定塊的散列號(hào)是“唯一的(unique)”。即,當(dāng)兩個(gè)塊的內(nèi)容不相同,通常將具有不同散列號(hào)。如下們所要進(jìn)一步詳細(xì)描述的,在本上下文中,術(shù)語(yǔ)“唯一的”用于覆蓋由那些偶爾對(duì)不同的塊產(chǎn)生相同散列號(hào)的散列函數(shù)所產(chǎn)生的散列號(hào),因?yàn)樯⒘泻瘮?shù)通常不能很完美地對(duì)不同的塊產(chǎn)生不同的數(shù)。“區(qū)域(region)”是存儲(chǔ)介質(zhì)(例如硬盤驅(qū)動(dòng)器)上的一組連續(xù)物理塊?!按鎯?chǔ)區(qū)(zone)”是由兩個(gè)或以上的區(qū)域組成的。組成存儲(chǔ)區(qū)的各區(qū)域通常不需要連續(xù)。如下面示例性實(shí)施例所述,存儲(chǔ)區(qū)存儲(chǔ)相當(dāng)于IGB的數(shù)據(jù)或者控制信息。“聚簇(cluster)”是存儲(chǔ)區(qū)中的單元尺寸,并表示壓縮單位(下面論述)。如下面所述的示例性實(shí)施例所述,聚簇是4KB(即八個(gè)512字節(jié)的扇區(qū))并且實(shí)質(zhì)上等同于塊?!叭哂嗉?redundantset)”是對(duì)一組數(shù)據(jù)提供冗余的一組扇區(qū)/聚簇。“備份區(qū)域(backinguparegion)”涉及將一個(gè)區(qū)域的內(nèi)容復(fù)制到另一個(gè)區(qū)域。存儲(chǔ)設(shè)備的“第一對(duì)”和“第二對(duì)”可以包括公共存儲(chǔ)設(shè)備。存儲(chǔ)設(shè)備的“第一組多個(gè)”和“第二組多個(gè)”可以包括一個(gè)或者多個(gè)公共存儲(chǔ)設(shè)備。存儲(chǔ)設(shè)備的“第一布置”和“第二布置”或者“不同布置”可以包括一個(gè)或多個(gè)公共存儲(chǔ)設(shè)備。圖1是本發(fā)明實(shí)施例的說(shuō)明,其中,將對(duì)象(object)分析成一系列用于存儲(chǔ)的塊(chunk),在本例中對(duì)象是文件(file)。開始,文件11被傳遞到存儲(chǔ)軟件,在其中被指定為對(duì)象12并被分配一個(gè)唯一對(duì)象標(biāo)識(shí)號(hào),在此是#007。在對(duì)象表13中形成新項(xiàng)131,用來(lái)表示這個(gè)新對(duì)象的分配。現(xiàn)在該對(duì)象被分析成數(shù)據(jù)“塊”121、122、和123,它們是固定長(zhǎng)度的對(duì)象段。每個(gè)塊都經(jīng)過(guò)散列算法,該算法返回塊的唯一散列號(hào)。以后這個(gè)算法可以應(yīng)用于檢索塊,并且結(jié)果與原始散列相比較以確保重試塊與存儲(chǔ)的相同。所述每個(gè)塊的散列號(hào)按對(duì)象132的項(xiàng)行存儲(chǔ)在對(duì)象表13中,以便于以后所述完成對(duì)象可以通過(guò)所述各塊的集合進(jìn)行檢索。同樣在圖1中,所述塊散列現(xiàn)在與塊表14中現(xiàn)有項(xiàng)進(jìn)行比較。任何匹配現(xiàn)有項(xiàng)141的散列都已經(jīng)存儲(chǔ)并且因此不采取任何行動(dòng)(即數(shù)據(jù)不會(huì)再次存儲(chǔ),導(dǎo)致對(duì)象的自動(dòng)壓縮)。新散列(在塊表14中沒(méi)有對(duì)應(yīng)項(xiàng)的一個(gè))被輸入塊表141。然后塊中的數(shù)據(jù)以最有效容錯(cuò)存儲(chǔ)方式存儲(chǔ)在可用存儲(chǔ)設(shè)備151、152、和153上。這種方法可例如導(dǎo)致所述塊數(shù)據(jù)按鏡像方式存儲(chǔ)在包括一個(gè)或者兩個(gè)設(shè)備的存儲(chǔ)系統(tǒng)上,或者按奇偶校驗(yàn)條帶化存儲(chǔ)在具有兩個(gè)以上存儲(chǔ)設(shè)備的系統(tǒng)。這種數(shù)據(jù)將在物理位置1511、1521、和1531存儲(chǔ)在存儲(chǔ)設(shè)備上,而且這些位置和位置編號(hào)將存儲(chǔ)在塊表列143和142中,使得以后可以定位和檢索塊的所有物理部分。圖2說(shuō)明在相同實(shí)施例中塊的容錯(cuò)存儲(chǔ)模式如何根據(jù)增加更多附加存儲(chǔ)而動(dòng)態(tài)改變。特別地,圖2示出了一旦附加存儲(chǔ)被添加到整個(gè)系統(tǒng),塊的物理存儲(chǔ)如何在所述存儲(chǔ)設(shè)備上按新模式來(lái)布局。在圖2(a)中,所述存儲(chǔ)系統(tǒng)包括兩個(gè)存儲(chǔ)設(shè)備221和222,而塊數(shù)據(jù)在位置2211和2221被物理鏡像到所述兩個(gè)存儲(chǔ)設(shè)備上以提供容錯(cuò)。在圖2(b)中,添加第三存儲(chǔ)設(shè)備223,以奇偶校驗(yàn)條帶化方式存儲(chǔ)所述塊成為可能,這種模式較之所述鏡像模式是更有效的存儲(chǔ)。所述塊按新模式布局在三個(gè)物理位置2311、2321、和2331,占用更少比例的可用存儲(chǔ)。更新所述塊表格21以表現(xiàn)在三個(gè)位置212新布局,并且還在213記錄新的塊物理位置2311、2321、和2331。圖3示出根據(jù)本發(fā)明實(shí)施例的成熟存儲(chǔ)系統(tǒng),其已經(jīng)運(yùn)行一段時(shí)間。該圖說(shuō)明了各塊如何隨時(shí)間在存儲(chǔ)容量變化的存儲(chǔ)設(shè)備上進(jìn)行物理存儲(chǔ)。該圖示出包括40GB的存儲(chǔ)設(shè)備31、80GB的存儲(chǔ)設(shè)備32和120GB的存儲(chǔ)設(shè)備33的存儲(chǔ)系統(tǒng)。最初,各塊按容錯(cuò)條帶化模式34來(lái)存儲(chǔ),直到40GB存儲(chǔ)設(shè)備31變滿。然后,由于缺乏存儲(chǔ)空間,新數(shù)據(jù)就按鏡像模式存儲(chǔ)到80GB32和120GB33存儲(chǔ)設(shè)備的可用空間上。一旦80GB存儲(chǔ)設(shè)備32滿了,則新數(shù)據(jù)按單個(gè)硬盤容錯(cuò)模式37來(lái)布局。盡管存儲(chǔ)設(shè)備包括用于存儲(chǔ)數(shù)據(jù)的單一存儲(chǔ)池(pool),如按塊存儲(chǔ)的數(shù)據(jù)本身已經(jīng)按多種不同模式來(lái)存儲(chǔ)。圖4說(shuō)明本發(fā)明另一實(shí)施例,其中指示器狀態(tài)用于警告低效的存儲(chǔ)使用和低級(jí)的容錯(cuò)。在圖4A中,全部三個(gè)存儲(chǔ)設(shè)備41、42和43具有空閑空間,而指示燈44是綠色以表示數(shù)據(jù)以有效和容錯(cuò)方式存儲(chǔ)。在圖4B中,40GB存儲(chǔ)設(shè)備41已經(jīng)變滿了,因此新數(shù)據(jù)可按鏡像模式只能存儲(chǔ)在具有剩余空閑空間的兩個(gè)存儲(chǔ)設(shè)備42和43上。為了表示數(shù)據(jù)仍然十分冗余但不能有效存儲(chǔ),指示燈44變成黃色。在圖4C中,僅120GB存儲(chǔ)設(shè)備43具有空閑空間剩余,因此全部新數(shù)據(jù)可以按鏡像模式僅存儲(chǔ)在這一臺(tái)設(shè)備43上。因?yàn)槿蒎e(cuò)性不強(qiáng)并且系統(tǒng)臨界地缺乏空間,因此指示燈44變紅以指示需要增加更多存儲(chǔ)。在一個(gè)替換實(shí)施例中,為陣列中每臺(tái)驅(qū)動(dòng)器/插槽提供指示器,例如,以三色燈形式(例如綠、黃、紅)。在一個(gè)特定實(shí)施例中,所述燈用于照亮具有發(fā)光效果的硬盤機(jī)柜的整個(gè)前面??刂七@些燈不僅用于指示該系統(tǒng)的整體狀態(tài),還用于指示哪個(gè)驅(qū)動(dòng)器/插槽需要加以注意(若有的話)。每個(gè)三色燈都可以處于至少四種狀態(tài)分別是關(guān)閉、綠色、黃色、紅色。如果特定插槽為空且系統(tǒng)按充足存儲(chǔ)和冗余在運(yùn)行因此不需要在插槽中安裝驅(qū)動(dòng)器,則相應(yīng)插槽的燈可以處于關(guān)閉狀態(tài)。如果相應(yīng)驅(qū)動(dòng)器充足并且不需要替換,則特定插槽的燈可以置于綠色狀態(tài)。如果系統(tǒng)運(yùn)行在降級(jí),則可以將特定插槽的燈置于黃色狀態(tài),以建議用較大驅(qū)動(dòng)器替換相應(yīng)驅(qū)動(dòng)器。如果相應(yīng)驅(qū)動(dòng)器必須安裝或者替換,則特定插槽的燈可以置于紅色狀態(tài)。如果需要或者期望的話,可以指示附加狀態(tài),例如,通過(guò)在開啟狀態(tài)和關(guān)閉狀態(tài)之間閃爍燈或者在兩種不同顏色(例如在替換驅(qū)動(dòng)器之后并且進(jìn)行數(shù)據(jù)重新布局時(shí)在紅色和綠色之間閃爍燈)。下面說(shuō)明示例性實(shí)施例的附加細(xì)節(jié)。當(dāng)然,可以使用其他指示技術(shù)來(lái)指示系統(tǒng)狀態(tài)和驅(qū)動(dòng)器/插槽狀態(tài)。例如,單個(gè)LCD顯示器可以用于指示系統(tǒng)狀態(tài),并且如果需要的話,可以指示需要注意的插槽號(hào)。同樣,可以使用其他類型指示器(例如,系統(tǒng)單個(gè)狀態(tài)指示器(例如綠色/黃色/紅色),還有每個(gè)插槽的插槽指示器或者燈)。圖5是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)存儲(chǔ)、檢索和重新布局中使用的功能模塊框圖,如上與圖1至3相關(guān)的討論。通信的公共入口和出口點(diǎn)是對(duì)象界面511,用于將對(duì)象傳遞給系統(tǒng)用于存儲(chǔ)或者從系統(tǒng)檢索對(duì)象,框界面512,它讓存儲(chǔ)系統(tǒng)看來(lái)像是一個(gè)更大的存儲(chǔ)設(shè)備,以及CIFS接口513,它讓存儲(chǔ)系統(tǒng)看來(lái)像是Windows文件系統(tǒng)。當(dāng)這些界面需要數(shù)據(jù)存儲(chǔ)時(shí),數(shù)據(jù)被傳遞到塊分析器52,所述分析器52將數(shù)據(jù)分解為塊,并在對(duì)象表512中創(chuàng)建初始項(xiàng)(如上與圖1相關(guān)的討論)。這些塊被傳遞散列碼生成器53,散列碼生成器53產(chǎn)生每個(gè)塊的相關(guān)聯(lián)散列碼,并將其輸入到對(duì)象表中,這樣與每個(gè)對(duì)象相關(guān)聯(lián)的各塊被列出512。塊散列號(hào)與塊表531中的項(xiàng)進(jìn)行比較。在發(fā)現(xiàn)匹配時(shí),該新塊被廢棄,因?yàn)樗c已經(jīng)存儲(chǔ)在該存儲(chǔ)系統(tǒng)中的某個(gè)塊相同。如果塊是新的,則在塊表531中為其建立新項(xiàng),而且將散列的塊傳遞到物理存儲(chǔ)管理器54。該物理存儲(chǔ)管理器以可能的最有效模式在可用存儲(chǔ)設(shè)備571、572、和573上存儲(chǔ)該塊,并在塊表531中制作相應(yīng)項(xiàng)以表示哪里已經(jīng)發(fā)生該塊的物理存儲(chǔ),使得以后可以在512檢索該塊的內(nèi)容(如上與圖1的相關(guān)討論)。圖5中由對(duì)象界面511、框界面512或者CIFS界面513的數(shù)據(jù)檢索通過(guò)向檢索管理器56請(qǐng)求來(lái)執(zhí)行,檢索管理器查詢對(duì)象表521以確定哪個(gè)塊包括該對(duì)象,然后從物理存儲(chǔ)器54請(qǐng)求這些塊。所述物理存儲(chǔ)管理器54詢問(wèn)塊表格531以確定所請(qǐng)求的塊存儲(chǔ)在哪里,然后檢索它們并將完成數(shù)據(jù)(對(duì)象)傳遞回檢索管理器56,檢索管理器56向請(qǐng)求界面返回該數(shù)據(jù)。圖5還包括容錯(cuò)管理器(FTL)55,其不斷掃描塊表以確定塊是否以可能的最有效方式存儲(chǔ)。(這可能由于添加和去除存儲(chǔ)設(shè)備571、572、和573而改變。)如果塊不是以最有效方式存儲(chǔ),則FTL將請(qǐng)求物理存儲(chǔ)管理器創(chuàng)建該塊的新布局模式并更新塊表531。這樣全部數(shù)據(jù)對(duì)構(gòu)成該陣列的若干存儲(chǔ)設(shè)備按可能的最有效方式來(lái)存儲(chǔ)(如上與圖2和3相關(guān)的討論)。下面提供本發(fā)明示例性實(shí)施例的其他細(xì)節(jié)。數(shù)據(jù)布局模式——存儲(chǔ)區(qū)(zone)除了其他,存儲(chǔ)區(qū)影響隱式冗余和存儲(chǔ)在盤上的實(shí)際數(shù)據(jù)的盤再布局。存儲(chǔ)區(qū)在不影響存儲(chǔ)區(qū)用戶的情況下使得可增加和改變的附加布局方法。存儲(chǔ)陣列在盤上按稱作存儲(chǔ)區(qū)的虛擬分段來(lái)布局?jǐn)?shù)據(jù)。存儲(chǔ)區(qū)存儲(chǔ)給定的和固定數(shù)量的數(shù)據(jù)(例如IG字節(jié))。存儲(chǔ)區(qū)駐留在單個(gè)盤或者跨越一個(gè)或者多個(gè)驅(qū)動(dòng)器。存儲(chǔ)區(qū)的物理布局以特定于該存儲(chǔ)區(qū)的形式提供冗余。圖6示出在包含兩個(gè)以上驅(qū)動(dòng)器的陣列中使用鏡像的示例。圖7示出使用不同布局模式來(lái)存儲(chǔ)它們的數(shù)據(jù)的一些示例存儲(chǔ)區(qū)。該圖假定存儲(chǔ)區(qū)存儲(chǔ)IGB數(shù)據(jù)。注意以下幾點(diǎn)。i)跨多個(gè)驅(qū)動(dòng)器的存儲(chǔ)區(qū)不需要在整個(gè)集合中使用到驅(qū)動(dòng)器的相同偏移。ii)單個(gè)驅(qū)動(dòng)器鏡像需要2G的存儲(chǔ)量來(lái)存儲(chǔ)IG的數(shù)據(jù)。iii)雙驅(qū)動(dòng)器鏡像需要2G存儲(chǔ)量來(lái)存儲(chǔ)IG的數(shù)據(jù)。iv)3驅(qū)動(dòng)器條帶化需要1.5GB存儲(chǔ)量來(lái)存儲(chǔ)IG的數(shù)據(jù)。ν)4驅(qū)動(dòng)器條帶化需要1.33GB存儲(chǔ)量來(lái)存儲(chǔ)IG的數(shù)據(jù)。vi)存儲(chǔ)區(qū)Α、存儲(chǔ)區(qū)B等是任意的存儲(chǔ)區(qū)名。在實(shí)際實(shí)施例中每個(gè)存儲(chǔ)區(qū)都用唯一編號(hào)來(lái)標(biāo)識(shí)。vii)雖然通過(guò)該圖隱含,存儲(chǔ)區(qū)不是必須在盤上連續(xù)的(見后面所述的區(qū)域)。viii)為什么鏡像被限于(不超過(guò))兩個(gè)驅(qū)動(dòng)器沒(méi)有技術(shù)原因。例如,在三個(gè)驅(qū)動(dòng)器的系統(tǒng)1中,數(shù)據(jù)的副本可存儲(chǔ)在1驅(qū)動(dòng)器上,且半數(shù)鏡像數(shù)據(jù)可以存儲(chǔ)在另外兩個(gè)驅(qū)動(dòng)器的每個(gè)上。同樣,數(shù)據(jù)可跨三個(gè)驅(qū)動(dòng)器來(lái)鏡像,一半數(shù)據(jù)在兩個(gè)驅(qū)動(dòng)器的每個(gè)上以及一半鏡像在其他兩個(gè)驅(qū)動(dòng)器上。數(shù)據(jù)布局模式——區(qū)域(region)每個(gè)盤都分割為一組相等尺寸的區(qū)域。區(qū)域的尺寸比存儲(chǔ)區(qū)小得多,存儲(chǔ)區(qū)由來(lái)自一個(gè)或者多個(gè)盤的一個(gè)或者多個(gè)區(qū)域構(gòu)成。為了有效使用盤空間,區(qū)域的尺寸典型地是不同存儲(chǔ)區(qū)尺寸和陣列所支持的不同盤數(shù)量的公因數(shù)。在示例性實(shí)施例中,區(qū)域是存儲(chǔ)區(qū)數(shù)據(jù)尺寸的1/12。下面的表列出了根據(jù)本發(fā)明示例性實(shí)施例的各種布局的區(qū)域/存儲(chǔ)區(qū)的數(shù)量和區(qū)域/盤的數(shù)量。各區(qū)域可以標(biāo)記為使用、空閑或者損壞。當(dāng)創(chuàng)建存儲(chǔ)區(qū)時(shí),選擇來(lái)自適當(dāng)盤的一組空閑區(qū)域并登記到表中。這些區(qū)域可以是任何任意順序而且不需要在盤上連續(xù)。當(dāng)從存儲(chǔ)區(qū)讀取或者向其寫入數(shù)據(jù)時(shí),存取被重定向到適當(dāng)區(qū)域。除了其他,這允許以靈活和有效的方式發(fā)生數(shù)據(jù)再布局。隨著時(shí)間的過(guò)去,不同尺寸的存儲(chǔ)區(qū)將可能發(fā)生存儲(chǔ)碎片化(fragmentation),使得許多盤區(qū)太小而不能保持完整存儲(chǔ)區(qū)。通過(guò)使用適當(dāng)區(qū)域尺寸,所有存儲(chǔ)片所遺留的間隙都將至少是一個(gè)區(qū)域的尺寸,這些小間隙易于重用,而不必重新分段整個(gè)盤。數(shù)據(jù)布局模式——再布局為了便于實(shí)施,可以強(qiáng)制擴(kuò)展和收縮的固定順序。例如,如果突然增加兩個(gè)驅(qū)動(dòng)器,存儲(chǔ)區(qū)的擴(kuò)展可以經(jīng)過(guò)中間擴(kuò)展,就像增加一個(gè)驅(qū)動(dòng)器一樣,然后執(zhí)行第二擴(kuò)展以結(jié)合第二個(gè)驅(qū)動(dòng)器?;蛘撸鄠€(gè)驅(qū)動(dòng)器的擴(kuò)展和收縮可以自動(dòng)處理,不需要中間步驟。在任何再布局之前,所需空間都必須是可用的。這應(yīng)當(dāng)在開始再布局之前計(jì)算,以確保不會(huì)發(fā)生不必要的再布局。數(shù)據(jù)布局模式——驅(qū)動(dòng)器擴(kuò)展下面根據(jù)本發(fā)明示例性實(shí)施例描述從單驅(qū)動(dòng)器鏡像擴(kuò)展為雙驅(qū)動(dòng)器鏡像的一般過(guò)程i)假定單驅(qū)動(dòng)器鏡像具有數(shù)據(jù)‘A’和鏡像‘B’ii)在驅(qū)動(dòng)器上分配12個(gè)區(qū)域以擴(kuò)展存儲(chǔ)區(qū)到‘C’iii)復(fù)制鏡像‘B’到區(qū)域集‘C,iv)任何已經(jīng)復(fù)制的對(duì)數(shù)據(jù)的寫都必須鏡像到‘C’中的適當(dāng)位置ν)當(dāng)完成復(fù)制時(shí),使用新布局類型更新存儲(chǔ)區(qū)表并利用指向‘C’的指針來(lái)替換指向‘B’的指針vi)將構(gòu)成‘B,的區(qū)域標(biāo)記為空閑的。下面根據(jù)本發(fā)明示例性實(shí)施例,描述從雙驅(qū)動(dòng)器鏡像擴(kuò)展為具有奇偶校驗(yàn)的三驅(qū)動(dòng)器條帶化的一般過(guò)程i)假定一個(gè)驅(qū)動(dòng)器具有數(shù)據(jù)‘A’而第二驅(qū)動(dòng)器具有鏡像‘B’ii)為奇偶校驗(yàn)信息‘C’在第三驅(qū)動(dòng)器上分配6個(gè)區(qū)域iii)使用‘A’的第一組6區(qū)域和‘B,的第二組6區(qū)域計(jì)算奇偶校驗(yàn)信息iv)在‘C,中放置奇偶校驗(yàn)信息ν)任何已經(jīng)處理的對(duì)數(shù)據(jù)的寫都必須奇偶校驗(yàn)到‘C’中適當(dāng)位置vi)當(dāng)復(fù)制完成時(shí),用新布局類型點(diǎn)表將存儲(chǔ)區(qū)表更新為‘Α’的前一半,‘B’和‘C’的后一半vii)標(biāo)記‘Α,的前一半和‘B,的前一半為空閑下面描述根據(jù)本發(fā)明示例性實(shí)施例的從三驅(qū)動(dòng)器條帶化擴(kuò)展為具有奇偶校驗(yàn)的四驅(qū)動(dòng)器條帶化的一般過(guò)程i)假定一個(gè)驅(qū)動(dòng)器具有數(shù)據(jù)‘A’,第二驅(qū)動(dòng)器具有數(shù)據(jù)‘B’而第三個(gè)具有奇偶校驗(yàn)‘P,ii)對(duì)條帶數(shù)據(jù)‘C’在第四驅(qū)動(dòng)器上分配四個(gè)區(qū)域iii)將‘A’的最后兩個(gè)區(qū)域復(fù)制到‘C’的最初兩個(gè)區(qū)域iv)將‘B’的最初兩個(gè)區(qū)域復(fù)制到‘C’的最后區(qū)域ν)在奇偶校驗(yàn)驅(qū)動(dòng)器‘D’上分配四個(gè)區(qū)域vi)使用A、C的最初四個(gè)區(qū)域和B的最后四個(gè)區(qū)域計(jì)算奇偶校驗(yàn)信息vii)在‘D’中放置奇偶校驗(yàn)信息viii)任何已經(jīng)處理的對(duì)數(shù)據(jù)的寫都必須奇偶校驗(yàn)到‘D’中適當(dāng)位置ix)用新布局類型和點(diǎn)表更新存儲(chǔ)區(qū)表為‘A’‘C’的最初四區(qū)域、‘B’和‘D’的其次四區(qū)域χ)標(biāo)記‘Α’的最后兩區(qū)域和‘B’的最初兩區(qū)域?yàn)榭臻e。數(shù)據(jù)布局模式一驅(qū)動(dòng)器收縮驅(qū)動(dòng)器收縮在盤去除或者故障時(shí)發(fā)生。在這種情況下,如果可能的話,陣列收縮數(shù)據(jù)使全部存儲(chǔ)區(qū)返回到冗余狀態(tài)。驅(qū)動(dòng)器收縮比擴(kuò)展稍微復(fù)雜,由于要做更多選擇。但是,在布局方法之間的轉(zhuǎn)換按照與擴(kuò)展相類似的方式發(fā)生,但要反過(guò)來(lái)。保持要再生的數(shù)據(jù)量為最小以使得盡快實(shí)現(xiàn)冗余。在空間可用時(shí),驅(qū)動(dòng)器收縮通常一次處理一個(gè)存儲(chǔ)區(qū),直到全部存儲(chǔ)區(qū)被再布局。選擇如何收縮下表描述根據(jù)本發(fā)明示例性實(shí)施例的用于需要再布局的每個(gè)存儲(chǔ)區(qū)決策樹存儲(chǔ)區(qū)類型缺失數(shù)據(jù)____mi_任何對(duì)存儲(chǔ)區(qū)再布局沒(méi)有可用空間讓存儲(chǔ)區(qū)處于降級(jí)狀態(tài)直到___增加新盤或者替換去除的盤單驅(qū)動(dòng)器鏡像數(shù)據(jù)不一致鎖定系統(tǒng)并等待復(fù)位或者替___換缺失的驅(qū)動(dòng)器_雙驅(qū)動(dòng)器鏡像在系統(tǒng)剩下1個(gè)盤_轉(zhuǎn)換為單驅(qū)動(dòng)器鏡像僅在包含剩余數(shù)據(jù)的驅(qū)動(dòng)器上有4驅(qū)動(dòng)器條帶化I系統(tǒng)剩下具有可用空間的3個(gè)盤轉(zhuǎn)換為3驅(qū)動(dòng)器條帶化下面描述根據(jù)本發(fā)明示例性實(shí)施例的從雙驅(qū)動(dòng)器鏡像收縮為單驅(qū)動(dòng)器鏡像的一般過(guò)程i)假定單驅(qū)動(dòng)器鏡像具有數(shù)據(jù)‘A’和缺失的鏡像‘B’或者反過(guò)來(lái)ii)在包含‘A,的驅(qū)動(dòng)器上分配12個(gè)區(qū)域作為‘C,iii)將數(shù)據(jù)'K'復(fù)制到區(qū)域集‘C,iv)任何已經(jīng)復(fù)制的對(duì)數(shù)據(jù)的寫都必須鏡像到‘C,中適當(dāng)位置ν)當(dāng)復(fù)制完成時(shí),用新布局類型更新存儲(chǔ)區(qū)表并用指向‘C’的指針替換指向‘B’的指針下面說(shuō)明根據(jù)本發(fā)明示例性實(shí)施例的從三驅(qū)動(dòng)器條帶化收縮為雙驅(qū)動(dòng)器鏡像(缺失奇偶校驗(yàn))的一般過(guò)程i)假定所述條帶由不同驅(qū)動(dòng)器上的數(shù)據(jù)塊‘A’、‘B’、‘C’組成。缺失奇偶校驗(yàn)‘C’。ii)定義‘A,為包括該存儲(chǔ)區(qū)的前一半,而‘B,為該存儲(chǔ)區(qū)的后一半。iii)在‘A’驅(qū)動(dòng)器上分配6個(gè)區(qū)域的‘D’并在‘B’驅(qū)動(dòng)器上分配6個(gè)區(qū)域的’。iv)將‘A’復(fù)制到’。ν)將‘B,復(fù)制到‘D,。vi)任何已經(jīng)復(fù)制的對(duì)數(shù)據(jù)的寫都必須鏡像到‘D’和’中的適當(dāng)位置vii)當(dāng)復(fù)制完成時(shí),用新布局類型更新存儲(chǔ)區(qū)表并將指針設(shè)置到指向‘A’/‘D’和,/‘B,下面說(shuō)明根據(jù)本發(fā)明示例性實(shí)施例的從三驅(qū)動(dòng)器條帶化收縮為雙驅(qū)動(dòng)器鏡像(缺失數(shù)據(jù))的一般過(guò)程i)假定所述帶由不同驅(qū)動(dòng)器上的數(shù)據(jù)塊‘A,‘B’‘C’組成。缺失數(shù)據(jù)‘C’。ii)定義‘A,為包括該存儲(chǔ)區(qū)的前一半,而‘C,為該存儲(chǔ)區(qū)的后一半。iii)在‘A,驅(qū)動(dòng)器上分配6個(gè)區(qū)域的‘D,并在‘B,驅(qū)動(dòng)器上分配12個(gè)區(qū)域的,。iv)將‘A,復(fù)制到‘E,的前一半。ν)重構(gòu)從‘Α’和‘B’缺失的數(shù)據(jù)。將數(shù)據(jù)寫入‘D’。vi)將‘D’復(fù)制到,的后一半。vii)任何已經(jīng)復(fù)制的對(duì)數(shù)據(jù)的寫都必須鏡像到‘D’和‘Ε,中的適當(dāng)位置viii)當(dāng)復(fù)制完成時(shí),用新布局類型更新存儲(chǔ)區(qū)表并將指針設(shè)置為指向‘A’/‘D’和,ix)將‘B’區(qū)域標(biāo)記為空閑。下面說(shuō)明根據(jù)本發(fā)明示例性實(shí)施例的從四驅(qū)動(dòng)器條帶化收縮為三驅(qū)動(dòng)器條帶化(缺失奇偶校驗(yàn))的一般過(guò)程i)假定所述條帶由不同驅(qū)動(dòng)器上的數(shù)據(jù)塊‘A’‘B’‘C’和‘D’組成。缺失奇偶校驗(yàn)‘D,。ii)定義‘A’為包括存儲(chǔ)區(qū)的前三分之一,‘B’為第二個(gè)三分之一,而‘C’為第三個(gè)三分之一。iii)在‘A,驅(qū)動(dòng)器上分配2個(gè)區(qū)域的‘G’,在‘C’驅(qū)動(dòng)器上分配2個(gè)區(qū)域的‘E,并在‘B’驅(qū)動(dòng)器上分配6個(gè)區(qū)域的‘F’。iv)將‘B,的前一半復(fù)制到‘G,。ν)將‘B’的后一半復(fù)制到,。vi)從'k'/‘G’和,/‘C’構(gòu)造奇偶校驗(yàn)并將其寫入‘F’。vii)任何已經(jīng)復(fù)制的對(duì)數(shù)據(jù)的寫都必須鏡像到‘D’、‘Ε,和‘F,中的適當(dāng)位置viii)當(dāng)復(fù)制完成時(shí),用新布局類型更新存儲(chǔ)區(qū)表并將指針設(shè)置為指向‘A’/‘G’、,/‘C,和‘F,ix)將‘B’區(qū)域標(biāo)記為空閑。下面說(shuō)明根據(jù)本發(fā)明示例性實(shí)施例的從四驅(qū)動(dòng)器條帶化收縮為三驅(qū)動(dòng)器條帶化(缺失前1/3)的一般過(guò)程i)假定所述條帶由不同驅(qū)動(dòng)器上的數(shù)據(jù)塊‘A’‘B’‘C’和‘D’組成。缺失數(shù)據(jù)‘A,。ii)定義‘Α’為包括存儲(chǔ)區(qū)的前三分之一,‘B’為第二個(gè)三分之一而‘C’為第三個(gè)三分之一以及‘D’為奇偶校驗(yàn)。iii)在‘B,驅(qū)動(dòng)器上分配4個(gè)區(qū)域的‘E’,在‘C’驅(qū)動(dòng)器上分配2個(gè)區(qū)域的‘F,并在‘D’驅(qū)動(dòng)器上分配6個(gè)區(qū)域的‘G’。iν)將‘B’的后一半復(fù)制到‘F,。ν)根據(jù)‘B,、‘C,和‘D,構(gòu)造缺失數(shù)據(jù)并寫入,vi)根據(jù)‘Ε,、‘B,的前一半和‘F,/‘C,構(gòu)造新奇偶校驗(yàn)并寫入‘G,vii)任何已經(jīng)復(fù)制的對(duì)數(shù)據(jù)的寫都必須鏡像到‘B,、‘Ε,、‘F,和‘G,中的適當(dāng)位置viii)當(dāng)復(fù)制完成時(shí),用新布局類型更新存儲(chǔ)區(qū)表并將指針設(shè)置為指向’、‘B’的前一半和‘F,/‘C,以及‘G,ix)將‘B,的后一半和‘D,區(qū)域標(biāo)記為空閑。下面說(shuō)明根據(jù)本發(fā)明示例性實(shí)施例的從四驅(qū)動(dòng)器條帶化收縮為三驅(qū)動(dòng)器條帶化(缺失第二個(gè)1/3)的一般過(guò)程i)假定所述條帶由不同驅(qū)動(dòng)器上的數(shù)據(jù)塊‘A’‘B’‘C’和‘D’組成。缺失數(shù)據(jù)‘B,。ii)定義‘A’為包括存儲(chǔ)區(qū)的前三分之一,‘B’為第二個(gè)三分之一而‘C’為第三個(gè)三分之一以及‘D’為奇偶校驗(yàn)。iii)在‘A,驅(qū)動(dòng)器上分配2個(gè)區(qū)域的‘E,,在‘C,驅(qū)動(dòng)器上分配2個(gè)區(qū)域的‘F,并在‘D’驅(qū)動(dòng)器上分配6個(gè)區(qū)域的‘G’。iv)根據(jù)‘A,的前一半、‘C,的前一半和‘D,的前一半構(gòu)造缺失數(shù)據(jù)并寫入‘E,ν)從‘Α,的后一半、‘C,的后一半和‘D,的后一半構(gòu)造缺失數(shù)據(jù)并寫入‘F,vi)從‘Α,/,和‘F,/‘C,構(gòu)造新奇偶校驗(yàn)并寫入‘G,vii)任何已經(jīng)復(fù)制的對(duì)數(shù)據(jù)的寫都必須鏡像到‘Ε’、‘F,和‘G,中的適當(dāng)位置viii)當(dāng)復(fù)制完成時(shí),用新布局類型更新存儲(chǔ)區(qū)表并將指針設(shè)置為指向’‘F’以及‘G,ix)將‘D’區(qū)域標(biāo)記為空閑。下面說(shuō)明根據(jù)本發(fā)明示例性實(shí)施例的從四驅(qū)動(dòng)器條帶化收縮為三驅(qū)動(dòng)器條帶化(缺失第三個(gè)1/3)的一般過(guò)程i)假定所述條帶由不同驅(qū)動(dòng)器上的數(shù)據(jù)塊‘A’‘B’‘C’和‘D’組成。缺失數(shù)據(jù)‘C,。ii)定義‘A’為包括該存儲(chǔ)區(qū)的前三分之一,‘B’為第二個(gè)三分之一而‘C’為第三個(gè)三分之一以及‘D’為奇偶校驗(yàn)。iii)在‘A,驅(qū)動(dòng)器上分配2個(gè)區(qū)域的‘E’,在‘B,驅(qū)動(dòng)器上分配4個(gè)區(qū)域的‘F,并在‘D’驅(qū)動(dòng)器上分配6個(gè)區(qū)域的‘G’。iv)將‘B,的前一半復(fù)制到,ν)根據(jù)‘Α,、‘B,和‘D,構(gòu)造缺失數(shù)據(jù)并寫入‘F,vi)從‘Α’/’和‘B’/‘F’的后一半構(gòu)造新奇偶校驗(yàn)并寫人‘G,vii)任何已經(jīng)復(fù)制的對(duì)數(shù)據(jù)的寫都必須鏡像到‘E’、‘F,和‘G,中的適當(dāng)位置viii)當(dāng)復(fù)制完成時(shí),用新布局類型更新存儲(chǔ)區(qū)表并將指針設(shè)置為指向‘Α’/’和‘B,/‘F,的后一半以及‘G,ix)將‘B,的前一半和‘D,區(qū)域標(biāo)記為空閑。例如,再次參考圖3,如果驅(qū)動(dòng)器0或者驅(qū)動(dòng)器1丟失,只要在驅(qū)動(dòng)器2上有足夠的可用空間,就可以在驅(qū)動(dòng)器2上重構(gòu)雙驅(qū)動(dòng)器鏡像(存儲(chǔ)區(qū)B)。類似地,如果損失任何驅(qū)動(dòng)器0至2,只要驅(qū)動(dòng)器3上有足夠可用空間,三驅(qū)動(dòng)器鏡像(存儲(chǔ)區(qū)C)就可以利用驅(qū)動(dòng)器3重構(gòu)。數(shù)據(jù)布局模式——存儲(chǔ)區(qū)重構(gòu)當(dāng)已經(jīng)去除驅(qū)動(dòng)器并且剩余驅(qū)動(dòng)器上有足夠空間用于理想的存儲(chǔ)區(qū)再布局或者驅(qū)動(dòng)器已經(jīng)用新的或者更大尺寸驅(qū)動(dòng)器替換,會(huì)發(fā)生存儲(chǔ)區(qū)重構(gòu)。下面說(shuō)明根據(jù)本發(fā)明示例性實(shí)施例的雙驅(qū)動(dòng)器鏡像重構(gòu)的一般過(guò)程i)假定單驅(qū)動(dòng)器鏡像具有數(shù)據(jù)‘A’和缺失鏡像‘B’ii)在不同于包含‘A,的驅(qū)動(dòng)器的驅(qū)動(dòng)器上分配12個(gè)區(qū)域的‘C,iii)將數(shù)據(jù)A’復(fù)制到‘C,iv)任何已經(jīng)復(fù)制的對(duì)數(shù)據(jù)的寫都必須鏡像到‘C’中適當(dāng)位置ν)當(dāng)復(fù)制完成時(shí)用指向‘C’指針更新存儲(chǔ)區(qū)表指向‘B’的指針下面說(shuō)明根據(jù)本發(fā)明示例性實(shí)施例的三驅(qū)動(dòng)器條帶化重構(gòu)的一般過(guò)程i)假定一個(gè)驅(qū)動(dòng)器具有數(shù)據(jù)‘A’,第二驅(qū)動(dòng)器具有數(shù)據(jù)‘B’而第三個(gè)具有奇偶校驗(yàn)‘P’。缺失‘B’。注意缺失哪片無(wú)關(guān)緊要,在所有情況下需要的操作都是相同的。ii)在不同于包含‘A’和‘P,的驅(qū)動(dòng)器的驅(qū)動(dòng)器上分配6個(gè)區(qū)域的‘D,iii)從‘A’和‘P’構(gòu)造缺失數(shù)據(jù)。向‘D’寫數(shù)據(jù)iv)任何已經(jīng)復(fù)制的對(duì)數(shù)據(jù)的寫都必須奇偶校驗(yàn)到‘D’中的適當(dāng)位置ν)用指向‘D’的指針替換指向‘B’的指針以更新存儲(chǔ)區(qū)表在這個(gè)示例性實(shí)施例中,四驅(qū)動(dòng)器重構(gòu)僅當(dāng)如果去除的驅(qū)動(dòng)器被其他驅(qū)動(dòng)器替換時(shí)發(fā)生。所述重構(gòu)包括在新驅(qū)動(dòng)器上分配六個(gè)區(qū)域并根據(jù)其他三個(gè)區(qū)域集合重構(gòu)缺失的數(shù)據(jù)。數(shù)據(jù)布局模式——暫時(shí)缺失驅(qū)動(dòng)器問(wèn)題當(dāng)去除驅(qū)動(dòng)器而沒(méi)有用于再布局的空間時(shí),陣列將繼續(xù)按降級(jí)模式來(lái)運(yùn)行,直到其他舊驅(qū)動(dòng)器插回或者用新的替換該驅(qū)動(dòng)器。如果插入新的驅(qū)動(dòng)器,那么將再建驅(qū)動(dòng)器組。在這種情況下,數(shù)據(jù)將再布局。如果舊的盤放回該陣列,那么其將不再是當(dāng)前盤組的一部分并且將被視其為新盤。但是,如果該陣列中沒(méi)有放入新盤而是放回舊的那個(gè),那么舊的那個(gè)將仍然被視為該盤組的一員,盡管是被廢棄的成員。在這種情況下,任何已經(jīng)再布局的存儲(chǔ)區(qū)都將保持其新配置而該舊盤上的區(qū)域?qū)⒖臻e。任何沒(méi)有被再布局的區(qū)域仍然指向該舊盤存儲(chǔ)區(qū)的適當(dāng)區(qū)域。但是,由于已經(jīng)對(duì)降級(jí)存儲(chǔ)區(qū)執(zhí)行了某些寫,因此這些存儲(chǔ)區(qū)需要刷新??梢詷?biāo)記已經(jīng)改變的降級(jí)區(qū)域,而不是記錄每個(gè)已經(jīng)發(fā)生的寫。這樣,當(dāng)替換盤時(shí),僅已經(jīng)改變的區(qū)域需要刷新。而且,任何已經(jīng)被寫入的存儲(chǔ)區(qū)可被置于更高的優(yōu)先表用于再布局。這應(yīng)當(dāng)減少了應(yīng)該替換盤的需要刷新的區(qū)域數(shù)量。還可以使用超時(shí),在這一點(diǎn)之后,即使該盤被替換也將被擦去。但是,這種超時(shí)可能相當(dāng)大,可能是數(shù)小時(shí)而非數(shù)分鐘。數(shù)據(jù)布局模式——數(shù)據(jù)完整性如上所述,標(biāo)準(zhǔn)RAID系統(tǒng)的一個(gè)問(wèn)題是可能盤面損壞發(fā)生在盤陣列的不常使用的區(qū)域。在另一個(gè)驅(qū)動(dòng)器故障的情況下,經(jīng)常不能確定損壞已經(jīng)發(fā)生。在這種情況下,當(dāng)RAID陣列重建該故障驅(qū)動(dòng)器時(shí),會(huì)傳播并保存該損壞的數(shù)據(jù)。上述散列機(jī)制提供在RAID下可用的數(shù)據(jù)破壞檢測(cè)的附加機(jī)制。如在其他地方提及的,當(dāng)存儲(chǔ)某個(gè)塊(chunk)時(shí),為該塊計(jì)算并存儲(chǔ)散列值。每次讀取該塊的時(shí)候,都可以計(jì)算檢索塊的散列值并與存儲(chǔ)的散列值進(jìn)行比較。如果該散列值不匹配(指示損壞的塊),那么塊數(shù)據(jù)可以根據(jù)冗余數(shù)據(jù)恢復(fù)。為了最小化在其中可能發(fā)生盤上數(shù)據(jù)損壞的時(shí)間窗口,將執(zhí)行盤數(shù)據(jù)常規(guī)掃描以盡快發(fā)現(xiàn)并校正損壞的數(shù)據(jù)。也可選地允許執(zhí)行對(duì)陣列讀取的檢查。數(shù)據(jù)布局模式——卷(volume)在后備卷中,不管陣列中盤上可用存儲(chǔ)空間量如何,總是要求陣列是固定尺寸——例如M千兆字節(jié)。假定該陣列包含實(shí)際存儲(chǔ)空間的S字節(jié),其中S<=M,并且可以請(qǐng)求的數(shù)據(jù)存儲(chǔ)在M千兆字節(jié)空間的位置Li、L2、L3等。如果所請(qǐng)求的位置Ln>S,那么用于Ln的數(shù)據(jù)必須存儲(chǔ)在位置Pn<S。這通過(guò)基于Ln的包括查找表的索引Pn來(lái)進(jìn)行管理,如圖8所示。這種特征使得陣列與不支持卷擴(kuò)展的操作系統(tǒng)共同工作,所述操作系統(tǒng)例如Window&Linux、和蘋果操作系統(tǒng)。另外,該陣列可以提供多個(gè)都共享相同物理存儲(chǔ)器的后備卷。每個(gè)后備卷都將具有專用查找表,但是將共享數(shù)據(jù)存儲(chǔ)器的相同物理空間。驅(qū)動(dòng)器插槽指示器如上所述,存儲(chǔ)陣列包括一個(gè)或者多個(gè)驅(qū)動(dòng)器插槽。每個(gè)驅(qū)動(dòng)器插槽都可以是空的或者容納硬盤驅(qū)動(dòng)器。每個(gè)驅(qū)動(dòng)器插槽具有能夠指示四種狀態(tài)的專用指示器,所述四種狀態(tài)是關(guān)閉、正常、降級(jí)和故障。該狀態(tài)通常解釋如下在這個(gè)示例性實(shí)施例中,紅/黃/綠發(fā)光二極管(LED)用作指示器。所述LED通常解釋如下圖9示出了根據(jù)本發(fā)明示例性實(shí)施例的具有可用存儲(chǔ)空間并按容錯(cuò)方式運(yùn)行的示例性陣列。用存儲(chǔ)設(shè)備填充插槽B、C和D,并且有充足存儲(chǔ)空間可用于冗余地存儲(chǔ)附加數(shù)據(jù)。插槽B、C和D的指示器是綠色(指示這些存儲(chǔ)設(shè)備操作正確,陣列數(shù)據(jù)冗余,且該陣列具有可用磁盤空間),而插槽A的指示器關(guān)閉(指示插槽A中不需要填充存儲(chǔ)設(shè)備)。圖10示出了根據(jù)本發(fā)明示例性實(shí)施例的示例性陣列,其不具有足夠空間用于維持冗余數(shù)據(jù)存儲(chǔ),并且必須要增加更大空間。插槽C和D中的存儲(chǔ)設(shè)備是滿的。插槽B、C和D的指示器是綠色(指示這些存儲(chǔ)設(shè)備正確運(yùn)行),而插槽A的指示器是紅色(指示該陣列沒(méi)有足夠空間用來(lái)維持冗余數(shù)據(jù)存儲(chǔ)以及插槽A中應(yīng)當(dāng)填充存儲(chǔ)設(shè)備)。圖11示出了根據(jù)本發(fā)明示例性實(shí)施例的在故障情況下不能維持冗余數(shù)據(jù)的示例性陣列。插槽A、B、C和D用存儲(chǔ)設(shè)備填充。插槽C和D中的存儲(chǔ)設(shè)備是滿的。插槽A、B、和C的指示器是綠色(指示它們正確運(yùn)行),而插槽D的指示器是黃色(指示插槽D中的存儲(chǔ)設(shè)備應(yīng)當(dāng)用具有更大存儲(chǔ)容量的存儲(chǔ)設(shè)備來(lái)填充)。圖12示出了根據(jù)本發(fā)明示例性實(shí)施例的示例性陣列,其中的存儲(chǔ)設(shè)備已經(jīng)故障。用存儲(chǔ)設(shè)備填充插槽B、C和D。插槽C中的存儲(chǔ)設(shè)備故障。插槽B和D的指示器是綠色(指示它們正確運(yùn)行),而插槽C的指示器是紅色(指示應(yīng)當(dāng)替換插槽C中的存儲(chǔ)設(shè)備),而插槽A的指示器關(guān)閉(指示插槽A中不需要填充存儲(chǔ)設(shè)備)。下面說(shuō)明本發(fā)明示例性實(shí)施例的軟件設(shè)計(jì)。該軟件設(shè)計(jì)基于六個(gè)軟件層,其跨越從物理訪問(wèn)該磁盤到與主機(jī)計(jì)算系統(tǒng)通信的邏輯體系結(jié)構(gòu)。在這個(gè)示例性實(shí)施例中,文件系統(tǒng)駐留在主服務(wù)器上,例如Windows、Linux、或者蘋果服務(wù)器,并訪問(wèn)如USB或者iSCSI設(shè)備的存儲(chǔ)陣列。由主請(qǐng)求管理器(HRM)處理經(jīng)過(guò)主界面到達(dá)的物理盤請(qǐng)求。主I/O界面將主USB或者iSCSI界面的表示協(xié)調(diào)至該主機(jī)(host),以及與HRM有接口。HRM協(xié)調(diào)來(lái)自主I/O界面的數(shù)據(jù)讀/寫請(qǐng)求,調(diào)度讀和寫請(qǐng)求,并在它們完成時(shí)協(xié)調(diào)這些請(qǐng)求的結(jié)果返回該主機(jī)。本存儲(chǔ)陣列的主要目的是保證一旦系統(tǒng)接受數(shù)據(jù),其按可靠方法來(lái)存儲(chǔ),使用系統(tǒng)當(dāng)前存儲(chǔ)的最大量冗余。隨著該陣列改變物理配置,而重新組織數(shù)據(jù)以維持(以及可能最大化)冗余。另外,基于壓縮的簡(jiǎn)單散列用于減少使用的存儲(chǔ)量。最基本的層包括盤驅(qū)動(dòng)器,用來(lái)在不同盤上存儲(chǔ)數(shù)據(jù)??梢越?jīng)由各種接口連接盤,例如經(jīng)USB接口的ATA隧道。所述盤上的扇區(qū)被組織成區(qū)域、存儲(chǔ)區(qū)和聚簇,其中每個(gè)都具有不同邏輯角色。區(qū)域表示盤上的一組連續(xù)物理塊。在四驅(qū)動(dòng)器系統(tǒng)中,每個(gè)區(qū)域是1/12GB大小,并表示冗余的最小單位。如果發(fā)現(xiàn)區(qū)域中的扇區(qū)是物理?yè)p壞的,那么將放棄整個(gè)區(qū)域。存儲(chǔ)區(qū)表示冗余單位。存儲(chǔ)區(qū)包括一組區(qū)域,可能在不同盤上用來(lái)提供適當(dāng)?shù)娜哂嗔?。存?chǔ)區(qū)將提供IGB的數(shù)據(jù)容量,但是可能需要更多的區(qū)域以便于提供冗余。具有冗余的IGB需要12個(gè)區(qū)域的集合(IGB);IGB鏡像存儲(chǔ)區(qū)需要兩組IGB的區(qū)域(24個(gè)區(qū)域);IGB三盤條帶化存儲(chǔ)區(qū)將需要三組0.5GB的區(qū)域(18個(gè)區(qū)域)。不同存儲(chǔ)區(qū)將具有不同冗余特征。聚簇表示壓縮的基本單位,并且是存儲(chǔ)區(qū)之內(nèi)的單元尺寸。它們當(dāng)前是4KB:8x512字節(jié)扇區(qū)大小。許多盤上的聚簇會(huì)包含相同數(shù)據(jù)。聚簇存取表(CAT)用于經(jīng)由散列函數(shù)追蹤聚簇的使用。CAT在邏輯主地址和存儲(chǔ)區(qū)中適當(dāng)聚簇位置之間轉(zhuǎn)換。當(dāng)向盤寫入時(shí),散列函數(shù)用于發(fā)現(xiàn)數(shù)據(jù)是否已經(jīng)存在于該盤上。如果是,CAT表中的適當(dāng)項(xiàng)會(huì)被設(shè)置為指向現(xiàn)有聚簇。CAT表駐留在其自己的存儲(chǔ)區(qū)。如果超過(guò)該存儲(chǔ)區(qū)大小,會(huì)使用附加存儲(chǔ)區(qū),并且使用表把邏輯地址映射到該存儲(chǔ)區(qū)用于CAT的部分。換句話說(shuō),預(yù)分配存儲(chǔ)區(qū)用于包含該CAT表。為了減少主寫入等待時(shí)間并保證數(shù)據(jù)可靠性,日志管理器將記錄全部寫請(qǐng)求(或者寫入盤或者寫入NVRAM)。如果系統(tǒng)重啟,在重啟時(shí)要提交日志項(xiàng)。磁盤可以添加或者去除,或者如果發(fā)現(xiàn)區(qū)域已經(jīng)損壞則可以讓該區(qū)域退出。在任何這些情況下,布局管理器都可以在存儲(chǔ)區(qū)中重組區(qū)域,以改變其冗余類型,或者改變存儲(chǔ)區(qū)的區(qū)域構(gòu)成(如果某個(gè)區(qū)域被損壞)。由于存儲(chǔ)陣列提供虛擬盤陣列因此通過(guò)改變物理盤空間的級(jí)別來(lái)返回,并且由于提供分塊級(jí)別的接口,當(dāng)聚簇不再被文件系統(tǒng)使用時(shí)就不是顯然的。結(jié)果,所使用的聚簇空間將繼續(xù)擴(kuò)展。垃圾收集器(位于主機(jī)或者按固件形式)將分析該文件系統(tǒng)以確定哪個(gè)聚簇已經(jīng)空閑,并且從散列表中刪除它們。下表示出了根據(jù)本發(fā)明該示例性實(shí)施例的六個(gè)軟件層圖13示出了模塊層次,其表示不同軟件層和它們彼此的關(guān)系。軟件層優(yōu)選地固定以便于提供清晰的API和描述。垃圾收集器釋放不再由主文件系統(tǒng)使用的聚簇。例如,當(dāng)刪除文件時(shí),優(yōu)選地釋放用于包含該文件的聚簇。日志管理器提供某種形式的寫日志,從而在電源故障或者其他差錯(cuò)條件的情況下不丟失掛起的寫操作。布局管理器提供存儲(chǔ)區(qū)相對(duì)于其區(qū)域的運(yùn)行時(shí)再布局。這可能根據(jù)盤插入/刪除或者故障而發(fā)生。聚簇管理器在一組數(shù)據(jù)存儲(chǔ)區(qū)中分配聚簇。盤利用守護(hù)程序(diskutilizationdaemon)周期性檢查空閑的盤空間。加鎖表(LockTable)處理寫操作沖突問(wèn)題后的讀操作。主請(qǐng)求管理器處理來(lái)自主機(jī)和垃圾收集器的讀/寫請(qǐng)求。寫操作被傳遞到日志管理器,而讀操作經(jīng)由聚簇存取表(CAT)管理層來(lái)處理。如上所述,在典型文件系統(tǒng)中,一定量的數(shù)據(jù)通常實(shí)質(zhì)上重復(fù)。為了減少盤空間利用,這種數(shù)據(jù)的多個(gè)復(fù)制不會(huì)寫入該盤。而是寫入一個(gè)實(shí)例,相同數(shù)據(jù)的其他全部實(shí)例引用(reference)這一個(gè)實(shí)例。在本示例性實(shí)施例中,任何時(shí)間系統(tǒng)在數(shù)據(jù)聚簇上操作(例如8個(gè)物理扇區(qū)),而這是散列的單位。使用SHAl算法來(lái)產(chǎn)生160位的散列值。這樣具有很多好處,包括好的唯一性,并且被許多處理器在片上支持。全部160位將存儲(chǔ)在散列記錄中,但是僅最低16位被用作散列表中的索引。其他匹配該最低16位的實(shí)例將經(jīng)由鏈接表鏈接。在這個(gè)示例性實(shí)施例中,僅一個(gè)讀/寫操作可以同時(shí)發(fā)生。為了性能的目的,當(dāng)向磁盤寫聚簇時(shí)不允許發(fā)生散列分析。而散列分析將由散列管理器作為背景活動(dòng)而發(fā)生。從日志的寫隊(duì)列讀取寫請(qǐng)求,并處理以完成寫操作。為了保證數(shù)據(jù)一致性,如果已經(jīng)有寫操作在該聚簇上活動(dòng),必須延遲該寫操作。在其他聚簇上的操作可以不受阻礙的進(jìn)行。除非寫整個(gè)聚簇,否則寫入的數(shù)據(jù)將需要與現(xiàn)有存儲(chǔ)在該聚簇中的數(shù)據(jù)歸并。根據(jù)邏輯扇區(qū)地址(LSA),定位聚簇的CAT項(xiàng)。從這個(gè)記錄獲得散列關(guān)鍵字、存儲(chǔ)區(qū)和聚簇偏移信息,然后它們可用于搜索散列表以發(fā)現(xiàn)匹配。這就是聚簇。雙重散列該散列表可能是必需的;一旦經(jīng)由SHAl摘取(digest),然后就通過(guò)存儲(chǔ)區(qū)/聚簇偏移用于改進(jìn)正確散列項(xiàng)的查找速度。如果已經(jīng)使用了散列記錄,引用計(jì)數(shù)被遞減。如果引用計(jì)數(shù)現(xiàn)在為零,并且沒(méi)有由散列項(xiàng)快照引用,該散列項(xiàng)和聚簇可被釋放回它們各自的空閑表?,F(xiàn)在歸并原來(lái)的聚簇?cái)?shù)據(jù)和聚簇的更新扇區(qū),而且數(shù)據(jù)要被再散列。新的聚簇從空閑表中被剔除,把歸并數(shù)據(jù)寫入該聚簇,向散列表中增加新項(xiàng),CAT表中的項(xiàng)更新為指向該新聚簇。作為更新散列表的結(jié)果,該項(xiàng)同樣添加到用于由背景任務(wù)處理的內(nèi)部隊(duì)列。這個(gè)任務(wù)將把新添加的聚簇和散列項(xiàng)與匹配該散列表行地址的其他散列項(xiàng)進(jìn)行比較,如果它們重復(fù),將結(jié)合記錄,在適當(dāng)時(shí)釋放散列項(xiàng)和CAT表項(xiàng)。這保證了寫等待時(shí)間不由這個(gè)活動(dòng)負(fù)擔(dān)。如果在這個(gè)處理期間發(fā)生故障(例如掉電),則可以根據(jù)丟失數(shù)據(jù)刪除各種表。各個(gè)表應(yīng)當(dāng)以這種方式管理,最終的提交是原子的(atomic),或者日志項(xiàng)可以再運(yùn)行,如果它沒(méi)有全部完成的話。下面是寫邏輯的偽代碼While(stufftodo)WriteRecord=journalMgr.read();Isa=writeRecord.RetLsaO;catEntry=catMgr.GetCATEntry(Isa);if(catMgr.writelnProgress(catEntry))delay();originalCluster=catMgr.readCluster(catEntry);originalHash=hashMgr.calcHash(originalCluster);hashRecord=hashMgr.Lookup(originalHash,zone,offset);if((hashRecord.RefCount==1)&&(hashRecord.snapshot=0))hashRecord.free();originalCluster.free();H注意這里有某種優(yōu)化,可重用該聚簇而無(wú)須釋放或重新分配它。//otherwise,stillusersofthiscluster,soupdate&leaveitalonehashRecord.RefCount—;hashRecord.Update(hashRecord);//現(xiàn)在添加新記錄mergedCluster=mergeCluster(originalCluster,newCluster);newHash=hashMgr.calcHash(mergedCluster);newCluster=clusterMgr.AllocateCluster(zone,offset);clusterMgr.write(cluster,mergedCluster);zoneMgr.write(cluster,mergedCluster);...hashMgr.addHash(newHash,newCluster,zone,offset)(internalqueuenewhashforbackgroundprocessing)catMgr.Update(lba,zone,offset,newHash);//我們已成功完成該日志項(xiàng)。移至下一個(gè)。JournalMgr.next();讀請(qǐng)求同樣按每次一個(gè)聚簇(相對(duì)于“扇區(qū)”)來(lái)處理。讀請(qǐng)求不通過(guò)上述的習(xí)慣于散列的處理。而是,使用主邏輯扇區(qū)地址來(lái)引用(reference)CAT并獲得存儲(chǔ)區(qū)編號(hào)和聚簇到該存儲(chǔ)區(qū)的偏移。讀請(qǐng)求應(yīng)當(dāng)在CAT緩存中查找CAT表項(xiàng),并且必須在設(shè)置了寫進(jìn)行位(write-in-progressbit)時(shí)延遲。其他讀/寫可以不受阻止的進(jìn)行。為了改進(jìn)數(shù)據(jù)完整性檢查,當(dāng)讀聚簇時(shí),其將被散列,并且該散列值與存儲(chǔ)在散列記錄中的SHAl散列值進(jìn)行比較。這將需要使用該散列、存儲(chǔ)區(qū)和聚簇偏移作為進(jìn)入散列表的搜索關(guān)鍵字。分配聚簇用作盡可能少的存儲(chǔ)區(qū)。這是因?yàn)榇鎯?chǔ)區(qū)直接對(duì)應(yīng)于盤驅(qū)動(dòng)器利用率。對(duì)每個(gè)存儲(chǔ)區(qū)而言,硬驅(qū)動(dòng)器陣列上有兩個(gè)或者更多區(qū)域。通過(guò)最小化存儲(chǔ)區(qū)數(shù)量,物理區(qū)域的數(shù)量最小化,并由此減少硬盤驅(qū)動(dòng)器陣列上的空間消耗。聚簇管理器分配來(lái)自一組數(shù)據(jù)存儲(chǔ)區(qū)的聚簇。使用鏈接列表保持追蹤存儲(chǔ)區(qū)中的空閑聚簇。但是,空閑聚簇信息在磁盤上存儲(chǔ)為位圖(32KB每存儲(chǔ)區(qū))。該鏈接列表從位圖(bitmap)動(dòng)態(tài)地構(gòu)造。最初,在存儲(chǔ)器中創(chuàng)建特定量空閑扇區(qū)的鏈接列表。當(dāng)分配聚簇時(shí),該列表收縮。在預(yù)定最低點(diǎn),從磁盤上的位圖提取表示空閑聚簇的新鏈接列表節(jié)點(diǎn)。這樣,為了發(fā)現(xiàn)用于分配的空閑聚簇,不需要分析位圖。在這個(gè)示例性實(shí)施例中,散列表是64K記錄表(由散列的低16位索引)并且具有下列格式全零的聚簇可以相當(dāng)常見,因此全零的情況可以視作特殊情況,例如,使得永遠(yuǎn)不被刪除(因此覆蓋計(jì)數(shù)將不是問(wèn)題)。當(dāng)多個(gè)散列具有相同最低有效散列時(shí),或者當(dāng)兩個(gè)散列項(xiàng)指向不同數(shù)據(jù)聚簇時(shí),使用空閑散列記錄的鏈接列表。在兩種情況下,空閑散列記錄都將從該列表中取出,并經(jīng)由pNextHash指針鏈接。散列管理器將整理全部添加到散列表中的項(xiàng)并將合并該盤上的相同聚簇。隨著新的散列記錄增加到該散列表中,消息將被傳遞到散列管理器。這可由散列管理器自動(dòng)執(zhí)行。作為背景活動(dòng),散列管理器即將處理其隊(duì)列上的項(xiàng)。將比較全部散列值以發(fā)現(xiàn)其是否匹配任何現(xiàn)有散列記錄。如果是,將同樣比較完整聚簇?cái)?shù)據(jù)。如果聚簇匹配,則新散列記錄可以被廢除回空閑隊(duì)列,散列記錄計(jì)數(shù)遞增,并且重復(fù)的聚簇將被返回聚簇空閑隊(duì)列。當(dāng)合并記錄時(shí),散列管理器必須注意向前傳播快照位。聚簇存取表(CAT)包含間接指針。該指針指向存儲(chǔ)區(qū)中的數(shù)據(jù)聚簇(0是第一數(shù)據(jù)聚簇)。一個(gè)CAT項(xiàng)引用單個(gè)數(shù)據(jù)聚簇(暫定4KB大小)。使用CAT(連同散列)使得當(dāng)存在大量重復(fù)的數(shù)據(jù)時(shí)減少盤使用需求。單個(gè)CAT通常表示連續(xù)存儲(chǔ)塊。CAT包含在非數(shù)據(jù)存儲(chǔ)區(qū)中。每個(gè)CAT項(xiàng)是48位。下表示出每個(gè)項(xiàng)如何布局(假定每個(gè)數(shù)據(jù)存儲(chǔ)區(qū)包含IGB數(shù)據(jù))希望CAT適合64位,但這不是必需的。2TB陣列的CAT表當(dāng)前是至4GB大小。每個(gè)CAT項(xiàng)指向包含該數(shù)據(jù)和存儲(chǔ)區(qū)編號(hào)的存儲(chǔ)區(qū)。圖14顯示CAT如何用于存取存儲(chǔ)區(qū)中的數(shù)據(jù)聚簇。冗余數(shù)據(jù)通過(guò)CAT中的一個(gè)以上的項(xiàng)來(lái)引用。兩個(gè)邏輯聚簇包含相同數(shù)據(jù),因此它們的CAT項(xiàng)指向相同物理聚簇。散列關(guān)鍵字包含完整聚簇160位SHAl散列值的16位摘取。這個(gè)項(xiàng)用于在寫操作期間更新該散列表。CAT中的每個(gè)項(xiàng)有足夠的位用于引用16TB的數(shù)據(jù)。但是,如果每個(gè)數(shù)據(jù)聚簇都彼此不同(根據(jù)內(nèi)容),那么只需要3個(gè)存儲(chǔ)區(qū)的CAT項(xiàng)來(lái)引用2TB的數(shù)據(jù)(每個(gè)存儲(chǔ)區(qū)都是IGB大小,并由此可以存儲(chǔ)IGB/大小的CAT項(xiàng)。假定6字節(jié)CAT項(xiàng),則178956970項(xiàng)/存儲(chǔ)區(qū),即表引用大約682GB/存儲(chǔ)區(qū),如果每個(gè)聚簇是4K的話)。主邏輯扇區(qū)轉(zhuǎn)換表用于將主邏輯扇區(qū)地址轉(zhuǎn)換成存儲(chǔ)區(qū)編號(hào)。相應(yīng)于主邏輯扇區(qū)地址的CAT部分將駐留在這個(gè)存儲(chǔ)區(qū)中。注意每個(gè)CAT項(xiàng)表示4096字節(jié)的扇區(qū)大小。這是八個(gè)512字節(jié)扇區(qū)。下面顯示主邏輯扇區(qū)轉(zhuǎn)換表的表示可以預(yù)分配存儲(chǔ)區(qū)以保持整個(gè)CAT。換句話說(shuō),存儲(chǔ)區(qū)可以分配給CAT,如需要更多CAT項(xiàng)。由于CAT把2TB虛擬磁盤映射至主扇區(qū)地址空間,因此由主機(jī)做硬盤分區(qū)或者格式化期間將引用CAT的很大部分。為此,要預(yù)分配存儲(chǔ)區(qū)。CAT是大的IGB/存儲(chǔ)區(qū)表。使用的工作聚簇集將是來(lái)自這個(gè)大表的后備集。為了性能的原因,活動(dòng)的項(xiàng)(可能暫時(shí))可以在處理器存儲(chǔ)器中緩存而不總是從磁盤讀取。至少有兩個(gè)選項(xiàng)用于填充該緩存——來(lái)自CAT的個(gè)別項(xiàng),或者來(lái)自CAT的整個(gè)聚簇。因?yàn)閷戇M(jìn)行(write-in-progress)與CAT緩存表相組合,所以需要確保該緩存中保持全部未完成的寫。因此,需要該緩存至少與未完成寫請(qǐng)求的最大數(shù)量一樣大。緩存中的項(xiàng)數(shù)將是聚簇大小(即4K)。需要知道聚簇上的操作中是否還有寫入進(jìn)行。這個(gè)指示可以作為標(biāo)志存儲(chǔ)在該聚簇的緩存項(xiàng)中。下表顯示CAT緩存項(xiàng)的格式緩存項(xiàng)中的寫進(jìn)行標(biāo)志有兩種含義。首先,它指出寫操作正在進(jìn)行,并且在這個(gè)聚簇上的任何讀(或者附加寫)必須延遲,直到完成該寫操作。其次,當(dāng)設(shè)置該位時(shí),絕不能刷新緩存中的這個(gè)項(xiàng)。這部分地保護(hù)了該位的狀態(tài),同時(shí)反映了這個(gè)聚簇當(dāng)前被使用的事實(shí)。另外,這意味著緩存的尺寸必須至少與未完成的寫操作數(shù)量一樣大。在聚簇的緩存項(xiàng)中存儲(chǔ)寫進(jìn)行指示符的一個(gè)優(yōu)點(diǎn)是它反映了操作正在進(jìn)行的事實(shí),省去了使用其他表格,并且省去了另外的基于散列的查找,或用于檢查該位的表查找。該緩存可以是寫延遲緩存。只需要當(dāng)寫操作完成時(shí),將緩存項(xiàng)寫回磁盤,雖然將其更早寫回可能更好。散列函數(shù)或者其他機(jī)制可用于增加可散列的未完成的寫項(xiàng)。一種替換方法是緩存整個(gè)CAT聚簇(即各項(xiàng)的4K項(xiàng))。這通常有助于性能,如果有好的訪問(wèn)空間定位的話。需要注意,因?yàn)镃AT項(xiàng)是48位寬,因此緩存中沒(méi)有全部的項(xiàng)。下表顯示聚簇CAT緩存項(xiàng)的示例該表格尺寸可以是4096+96(4192字節(jié))。假定需要具有250項(xiàng)的緩存大小,該緩沖可以占據(jù)大約1MB。通過(guò)邏輯CAT項(xiàng)地址的適當(dāng)屏蔽可以計(jì)算首項(xiàng)和末項(xiàng)是否未完成。緩存查找例程應(yīng)當(dāng)在加載項(xiàng)之前執(zhí)行這個(gè)過(guò)程并且應(yīng)當(dāng)加載需要的CAT聚簇。當(dāng)主機(jī)發(fā)送扇區(qū)(或者聚簇)讀請(qǐng)求時(shí),其通過(guò)邏輯扇區(qū)地址發(fā)送。該邏輯扇區(qū)地址用作到CAT的偏移以獲得包含主機(jī)所請(qǐng)求的實(shí)際數(shù)據(jù)的存儲(chǔ)區(qū)中的聚簇的偏移。結(jié)果是存儲(chǔ)區(qū)編號(hào)和到該存儲(chǔ)區(qū)的偏移。該信息傳遞給層2軟件,然后其從(多個(gè))驅(qū)動(dòng)器提取原始(多個(gè))聚簇。為了處理主機(jī)從未寫過(guò)的聚簇,所有CAT項(xiàng)被初始化為指向包含全零的“默認(rèn)”聚簇。日志管理器是兩級(jí)寫(bi-levelwrite)日志系統(tǒng)。該系統(tǒng)的一個(gè)目標(biāo)是保證可以從主機(jī)接收寫請(qǐng)求并快速向該主機(jī)返回指示,數(shù)據(jù)已經(jīng)在保證其完整性的同時(shí)被接收。另外,該系統(tǒng)需要保證在任何盤寫入期間的系統(tǒng)復(fù)位的情況下,不會(huì)有塊級(jí)數(shù)據(jù)或者系統(tǒng)元數(shù)據(jù)(例如CAT和散列表項(xiàng))的損壞合丟失。Jl日志管理器盡快緩存所有從主機(jī)向磁盤的寫請(qǐng)求。一旦寫入成功完成(即數(shù)據(jù)已經(jīng)被陣列接收),主機(jī)就可以發(fā)信號(hào)指示操作已經(jīng)完成。日志項(xiàng)允許當(dāng)從故障恢復(fù)時(shí),恢復(fù)寫請(qǐng)求。日志記錄包括要寫入磁盤的數(shù)據(jù),以及與寫事務(wù)相關(guān)的元數(shù)據(jù)。為了減少磁盤讀/寫,與寫入相關(guān)的數(shù)據(jù)將被寫入空閑聚簇。這樣將自動(dòng)鏡像該數(shù)據(jù)。將從空閑聚簇列表去除空閑聚簇。一旦寫數(shù)據(jù),空閑聚簇就必須寫回磁盤。日志記錄將被寫回非鏡像存儲(chǔ)區(qū)上的日志隊(duì)列。每個(gè)記錄都將是扇區(qū)大小,并且對(duì)齊到扇區(qū)邊界,以使得減少日志寫期間的故障會(huì)破壞以前日志項(xiàng)的風(fēng)險(xiǎn)。日志項(xiàng)在記錄的末尾包含唯一的、遞增的順序計(jì)數(shù),因此可以輕易識(shí)別隊(duì)列的結(jié)尾。日志寫操作在主機(jī)隊(duì)列處理線程中同步發(fā)生。日志寫必須按照它們寫入磁盤的次序來(lái)排序,因此在任何時(shí)候只有一個(gè)線程可以寫入該日志。Jl表中日志項(xiàng)的地址可以用作唯一標(biāo)識(shí)符,因此Jl日志項(xiàng)可以與J2日志中的項(xiàng)相關(guān)聯(lián)。一旦寫入日志項(xiàng),將向主完成隊(duì)列傳遞事務(wù)完成通知?,F(xiàn)在可以執(zhí)行寫操作。要保證在完成日志寫之前延遲任何后續(xù)的對(duì)該聚簇的讀,這一點(diǎn)很重要。下表示出了J2日志記錄的格式每個(gè)日志記錄都對(duì)齊到扇區(qū)邊界。日志記錄可以包含存儲(chǔ)區(qū)/偏移/大小的元組的陣列。圖15示出了根據(jù)本發(fā)明示例性實(shí)施例的日志表更新。尤其是當(dāng)接收到主機(jī)寫請(qǐng)求時(shí),更新該日志表,分配一個(gè)或多個(gè)聚簇,并向(多個(gè))聚簇寫入數(shù)據(jù)。處理主日志請(qǐng)求。這引起聚簇被寫入,并同樣引起更新元數(shù)據(jù)結(jié)構(gòu),所述結(jié)構(gòu)必須投影回磁盤(例如CAT表)。重要的是保證這些元數(shù)據(jù)結(jié)構(gòu)正確地寫回磁盤,即使當(dāng)系統(tǒng)發(fā)生復(fù)位。為此將使用低級(jí)磁盤I/O寫(J2)日志。為了處理主界面日志項(xiàng),應(yīng)當(dāng)確定元數(shù)據(jù)結(jié)構(gòu)的適當(dāng)?shù)牟僮?。改變?yīng)當(dāng)發(fā)生在存儲(chǔ)器并且要產(chǎn)生對(duì)各磁盤塊改變的記錄。這種記錄包含在磁盤上應(yīng)該進(jìn)行的實(shí)際改變。更新的每種數(shù)據(jù)結(jié)構(gòu)都用J2日志管理器來(lái)登記。這種記錄應(yīng)當(dāng)記錄到基于磁盤的日志,并用標(biāo)識(shí)符來(lái)加印戳。當(dāng)記錄與Jl日志項(xiàng)相連接,標(biāo)識(shí)符就應(yīng)當(dāng)被鏈接。一旦存儲(chǔ)該記錄,就可以進(jìn)行磁盤的改變(或者可以經(jīng)由后臺(tái)任務(wù)執(zhí)行)。邏輯上J2日志存在于層3。它用于把那些涉及經(jīng)存儲(chǔ)區(qū)管理器的寫的元數(shù)據(jù)更新登記到日志。當(dāng)發(fā)生日志項(xiàng)的再現(xiàn)時(shí),將使用存儲(chǔ)區(qū)管理器方法。日志本身可以存儲(chǔ)在專門區(qū)域。由于日志項(xiàng)的短生命期,不對(duì)其做鏡像。不是所有的元數(shù)據(jù)更新都需要經(jīng)過(guò)J2日志,尤其是,如果對(duì)結(jié)構(gòu)的更新是原子的。區(qū)域管理器結(jié)構(gòu)可不使用J2日志??蓹z測(cè)區(qū)域管理器位圖中的不一致,例如,使用完整性檢測(cè)后臺(tái)線程。用于J2日志的一種簡(jiǎn)單方法是包含單個(gè)記錄。一旦該記錄提交給磁盤,就被重放,更新磁盤上的結(jié)構(gòu)??删哂卸鄠€(gè)J2記錄,并使后臺(tái)任務(wù)提交磁盤上的更新記錄。這種情況下,需要密切注意日志和與各種數(shù)據(jù)結(jié)構(gòu)相關(guān)的任何緩存算法之間的交互作用。一旦提交給磁盤,初始方法就將運(yùn)行日志項(xiàng)。原則上,會(huì)有J2的多個(gè)并發(fā)的用戶,但是J2日志會(huì)在一個(gè)時(shí)候鎖定到一個(gè)用戶。即使在這種情況下,一旦提交,也會(huì)提交日志項(xiàng)。重要的是保證在任何更高級(jí)的日志活動(dòng)發(fā)生前修復(fù)元數(shù)據(jù)結(jié)構(gòu)。在系統(tǒng)重新引導(dǎo)時(shí),分析J2日志,并將重現(xiàn)任何記錄。如果日志項(xiàng)與Jl日志項(xiàng)相關(guān),則將Jl日志項(xiàng)標(biāo)記為已完成,并可以被刪除。一旦完成全部J2日志項(xiàng),元數(shù)據(jù)就處于可靠狀態(tài),并且可以處理任何剩余Jl日志項(xiàng)。J2日志記錄包括下列信息操作號(hào)·每個(gè)操作包含°Jl記錄指示符°待寫入存儲(chǔ)區(qū)/數(shù)據(jù)偏移°待寫入數(shù)據(jù)°數(shù)據(jù)大小°到數(shù)據(jù)聚簇的偏移·日志記錄標(biāo)識(shí)符·結(jié)束標(biāo)記這種模式可以按類似于Jl日志的模式來(lái)操作,例如,使用順序號(hào)用于識(shí)別J2日志項(xiàng)的結(jié)尾并將J2日志項(xiàng)置于扇區(qū)邊界處。如果設(shè)置Jl數(shù)據(jù)指針指示符,那么這個(gè)特殊操作會(huì)指向Jl日志記錄。主機(jī)提供的寫數(shù)據(jù)不必復(fù)制到日志項(xiàng)。操作陣列將可以定義為固定大小,因日志記錄中操作的最大數(shù)量是已知的。為了允許從低級(jí)寫操作期間的扇區(qū)損壞(例如由于掉電)恢復(fù),J2日志可以存儲(chǔ)被寫入的整個(gè)扇區(qū),使得如果需要該扇區(qū)可以根據(jù)這個(gè)信息來(lái)重寫。作為替換或附加,為每個(gè)改變的扇區(qū)計(jì)算的CRC可以存儲(chǔ)在J2記錄中,并與從磁盤扇區(qū)(例如由存儲(chǔ)區(qū)管理器)計(jì)算的CRC進(jìn)行比較,以確定是否需要寫操作的重放。不同日志可以存儲(chǔ)在不同位置,因此提供接口層用于寫日志記錄到備份存儲(chǔ)。該位置應(yīng)當(dāng)是非易失的。兩種候選是硬盤和NVRAM。如果Jl日志存儲(chǔ)到硬盤,它將存儲(chǔ)在Jl日志非鏡像存儲(chǔ)區(qū)中。Jl日志是存儲(chǔ)在NVRAM的候選。J2日志應(yīng)當(dāng)存儲(chǔ)在磁盤上,盡管它可以存儲(chǔ)在專門區(qū)域中(即,不冗余,因?yàn)樗哂卸躺?。將J2日志存儲(chǔ)在磁盤的優(yōu)點(diǎn)是,如果在內(nèi)部數(shù)據(jù)結(jié)構(gòu)更新期間存在系統(tǒng)復(fù)位,那么該數(shù)據(jù)結(jié)構(gòu)可以返回到一致狀態(tài)(即使該單元長(zhǎng)時(shí)期掉電)。存儲(chǔ)區(qū)管理器(ZM)分配更高級(jí)軟件需要的存儲(chǔ)區(qū)。向ZM的請(qǐng)求包括a.分配存儲(chǔ)區(qū)b.解除分配/釋放存儲(chǔ)區(qū)c.控制數(shù)據(jù)讀/寫傳遞到Ll(?)d.讀/寫存儲(chǔ)區(qū)中的聚簇(給出聚簇偏移和存儲(chǔ)區(qū)號(hào))ZM管理器管理冗余機(jī)制(隨驅(qū)動(dòng)器的數(shù)量和它們的相關(guān)大小而改變)并處理鏡像、條帶化、以及用于數(shù)據(jù)讀/寫的其他冗余模式。當(dāng)ZM需要分配存儲(chǔ)區(qū)時(shí),它將請(qǐng)求兩個(gè)或者更多區(qū)域集合的分配。例如,要為IGB的數(shù)據(jù)分配存儲(chǔ)區(qū),組成這個(gè)存儲(chǔ)區(qū)的區(qū)域?qū)⒖梢园琁GB數(shù)據(jù),包括冗余數(shù)據(jù)。對(duì)鏡像機(jī)制,存儲(chǔ)區(qū)將由各為IGB的兩個(gè)區(qū)域集合構(gòu)成。另一個(gè)示例,3盤條帶化機(jī)制使用各為1/2GB的3組區(qū)域。ZM使用ZR轉(zhuǎn)換表(6)以發(fā)現(xiàn)組成該存儲(chǔ)區(qū)的每組區(qū)域的位置(驅(qū)動(dòng)器號(hào)和起始區(qū)域號(hào))。假定是1/12GB區(qū)域大小,將需要最多24個(gè)區(qū)域。24個(gè)區(qū)域組成2x1GB的存儲(chǔ)區(qū)。因此ZR轉(zhuǎn)換表包含24列,用于提供驅(qū)動(dòng)器/區(qū)域數(shù)據(jù)。ZM通常工作如下a.在SDM的情況下(單個(gè)驅(qū)動(dòng)器鏡像),使用24列。驅(qū)動(dòng)器號(hào)在所有列中都相同。每個(gè)項(xiàng)對(duì)應(yīng)于組成該存儲(chǔ)區(qū)的物理驅(qū)動(dòng)器上的一個(gè)物理區(qū)域。前12個(gè)項(xiàng)指向包含該數(shù)據(jù)的一個(gè)副本的區(qū)域。后12個(gè)項(xiàng)指向包含該數(shù)據(jù)的第二個(gè)副本的區(qū)域。b.DDM(雙驅(qū)動(dòng)器鏡像)的情況與SDM的情況相同,只是前12個(gè)項(xiàng)的驅(qū)動(dòng)器號(hào)與后12個(gè)項(xiàng)中的驅(qū)動(dòng)器號(hào)不同。c.在條帶化的情況下,可以使用三個(gè)或者更多列。例如,如果跨三個(gè)驅(qū)動(dòng)器使用條帶化,則需要來(lái)自三個(gè)不同驅(qū)動(dòng)器的六個(gè)區(qū)域(即使用18個(gè)項(xiàng)),前6項(xiàng)包含相同驅(qū)動(dòng)器號(hào),接下來(lái)的6項(xiàng)包含另一個(gè)驅(qū)動(dòng)器號(hào),以及隨后的6項(xiàng)包含第三驅(qū)動(dòng)器號(hào),未使用的項(xiàng)置為0。下表顯示存儲(chǔ)區(qū)區(qū)域轉(zhuǎn)換表的表示法當(dāng)讀/寫請(qǐng)求到達(dá)時(shí),對(duì)ZM提供存儲(chǔ)區(qū)號(hào)和到該存儲(chǔ)區(qū)的偏移。ZM查看ZR轉(zhuǎn)換表中用于解決該存儲(chǔ)區(qū)的冗余機(jī)制,并使用該偏移用于計(jì)算哪個(gè)驅(qū)動(dòng)器/區(qū)域包含必須讀/寫的扇區(qū)。然后該驅(qū)動(dòng)器/區(qū)域信息提供給Ll層以進(jìn)行實(shí)際的讀/寫。在“使用(usage)”列中的另外可能項(xiàng)是“空閑”?!翱臻e”指存儲(chǔ)區(qū)被定義但當(dāng)前沒(méi)有使用。聚簇管理器分配并再分配數(shù)據(jù)存儲(chǔ)區(qū)集合中的聚簇。布局管理器提供存儲(chǔ)區(qū)關(guān)于其區(qū)域的的運(yùn)行時(shí)再布局。這可根據(jù)磁盤插入/除去或者故障而發(fā)生。層1(Li)軟件知道物理驅(qū)動(dòng)器和物理扇區(qū)。除了其他,Ll軟件分配物理驅(qū)動(dòng)器的區(qū)域用于存儲(chǔ)區(qū)管理器來(lái)使用。在這個(gè)示例性實(shí)施例中,每個(gè)區(qū)域具有用于四驅(qū)動(dòng)器陣列系統(tǒng)的1/12GB大小(即174762扇區(qū))。具有更大數(shù)量驅(qū)動(dòng)器(8,12或16)的系統(tǒng)將具有不同的區(qū)域大小。為了創(chuàng)建包含具有SD3(在三驅(qū)動(dòng)器上條帶化;兩個(gè)數(shù)據(jù)加奇偶校驗(yàn))的IGB數(shù)據(jù)存儲(chǔ)區(qū),我們應(yīng)當(dāng)使用各在三驅(qū)動(dòng)器中的六個(gè)區(qū)域(每個(gè)驅(qū)動(dòng)器為6x1/12=1/2(GB)。當(dāng)存儲(chǔ)區(qū)被移動(dòng)或者重配置時(shí),例如根據(jù)鏡像到條帶化,使用這種區(qū)域模式允許我們提供更好的磁盤空間利用。Ll軟件利用區(qū)域位圖(bitmap)跟蹤物理驅(qū)動(dòng)器上的可用空間。每個(gè)驅(qū)動(dòng)器都有一個(gè)位圖。每個(gè)區(qū)域都用位圖中的兩位表示,用于跟蹤該區(qū)域是否空閑、使用、或者損壞。當(dāng)L2軟件(ZM)需要?jiǎng)?chuàng)建存儲(chǔ)區(qū)時(shí),它從Ll層獲得一組區(qū)域。構(gòu)成存儲(chǔ)區(qū)的區(qū)域不必在磁盤中連續(xù)。向Ll的請(qǐng)求包括a.數(shù)據(jù)讀/寫(到一組區(qū)域中的聚簇)b.控制數(shù)據(jù)讀/寫(表格、數(shù)據(jù)結(jié)構(gòu)、DIC等)c.分配區(qū)域的物理空間(1驅(qū)動(dòng)器內(nèi)的實(shí)際物理扇區(qū))d.解除分配區(qū)域e.向物理驅(qū)動(dòng)器的物理聚簇的原始讀/寫(rawread/write)f.從一個(gè)區(qū)域向另一個(gè)復(fù)制數(shù)據(jù)g.將區(qū)域標(biāo)記為損壞??臻e區(qū)域位圖可以是大型的,因此查找空閑項(xiàng)(最糟的情況是沒(méi)有空閑的項(xiàng))的搜索可能緩慢。為了改進(jìn)性能,部分位圖可以預(yù)加載到內(nèi)存中,而且空閑區(qū)域的鏈接列表可以存儲(chǔ)在內(nèi)存中。每個(gè)活動(dòng)存儲(chǔ)區(qū)都有列表。如果到達(dá)列表上的低水位線,可以從磁盤讀取更多的空閑項(xiàng)作為背景活動(dòng)。磁盤管理器運(yùn)行在層0。如下表所示,有兩個(gè)子層,分別是抽象層和與物理存儲(chǔ)陣列通信的設(shè)備驅(qū)動(dòng)器。設(shè)備驅(qū)動(dòng)器層同樣可以包含多個(gè)層。例如,對(duì)使用USB驅(qū)動(dòng)器的存儲(chǔ)陣列,在USB輸送層頂端有ATA或者SCSI棧。抽象層提供獨(dú)立于存儲(chǔ)陣列中使用的驅(qū)動(dòng)器種類的基本讀/寫功能。可使用一個(gè)或者多個(gè)磁盤存取隊(duì)列來(lái)對(duì)盤存取請(qǐng)求進(jìn)行排隊(duì)。在我們的系統(tǒng)中,盤存取速度將是一個(gè)關(guān)鍵的性能瓶頸。我們想要保證磁盤接口盡可能在所有時(shí)間保持忙碌,從而減少一般的系統(tǒng)延遲并改進(jìn)性能。請(qǐng)求盤的接口應(yīng)當(dāng)具有異步接口,使用回調(diào)(callback)處理器用于當(dāng)已經(jīng)結(jié)束盤操作時(shí)來(lái)完成操作。一個(gè)盤請(qǐng)求的完成將自動(dòng)啟動(dòng)隊(duì)列中的下一個(gè)請(qǐng)求。每個(gè)驅(qū)動(dòng)器有一個(gè)隊(duì)列,或者全部驅(qū)動(dòng)器用一個(gè)隊(duì)列。層1將按邏輯驅(qū)動(dòng)器號(hào)來(lái)引用驅(qū)動(dòng)器。層0將邏輯驅(qū)動(dòng)器編號(hào)轉(zhuǎn)換為物理驅(qū)動(dòng)器參考(例如/dev/sda或作為openO調(diào)用的結(jié)果文件設(shè)備號(hào))。為靈活起見(經(jīng)USB擴(kuò)展),應(yīng)當(dāng)每個(gè)邏輯驅(qū)動(dòng)器一個(gè)隊(duì)列。下面是對(duì)象定義和數(shù)據(jù)流的一些示例。MSG對(duì)象從主機(jī)引入LbaLengthLUNDataREPLY對(duì)象引出到主機(jī)StatusHostLengthData數(shù)據(jù)讀數(shù)據(jù)讀流程rc=lockm.islocked(MSG)rc=catm.read(MSG,REPLY)status=zonem.read(zone,offset,length,buffer)regionm.read(logical—disk,region—number,region_offset,length,buffer)diskm.read((logical_disk,offset,length,buffer)數(shù)據(jù)寫數(shù)據(jù)寫流程diskutildaemon.spaceavailable()journalm.write(MSG)lockm.lock(msg)zonem.write(journal_zone,offset,length,buffer)regionm.write-曰志項(xiàng)diskm.writeregionm.write-結(jié)束標(biāo)記diskm.writecatm.write(MSG)catm.readcluster(lba,offset,length,buffer)-如果需要向聚簇歸并扇區(qū)-歸并“if(lba已經(jīng)分配),,catm.readhashkey(Iba)hashm.lookup(hashkey,zone,offset)"if(refcount=1)”hashentry.getrefcount()hashm.remove(hashentry)hashm.add(shal,zone,offset)zonem.write(zone,offset,length,buffer)-寫數(shù)據(jù)“else”hashentry.removeref()clusterm.allocate(zone,offset)-分配新聚簇zonem.createzone(zone)regionm.unusedregions(logical_disk)regionm.allocate(logical_disk,number_regions,region_list)zonem.write(…)-寫數(shù)據(jù)hashm.add(...)-向散列表增加新項(xiàng)“endif”hashdaemon.add(lba,sha1)-增加到散列新進(jìn)程Qcatm.writehashkey(lba,hashkey)-向CAT復(fù)制新散列關(guān)鍵字“else”catm.update(lba,zone,offset,hashkey)—用新I頁(yè)更新GAT“endif”journalm.complete(MSG)lockm.unlock(MSG)-更新r/w指針下面是物理盤布局的說(shuō)明。如上所述,每個(gè)盤都劃分為固定尺寸的區(qū)域。在這個(gè)示例性實(shí)施例中,每個(gè)區(qū)域具有用于四驅(qū)動(dòng)器陣列系統(tǒng)的1/12GB大小(即174763扇區(qū))。具有更大數(shù)量驅(qū)動(dòng)器(8,12或16)的系統(tǒng)將具有不同的區(qū)域大小。開始,保留區(qū)域號(hào)0和1用于區(qū)域管理器并且不用于分配。區(qū)域號(hào)1是區(qū)域號(hào)0的鏡像。對(duì)給定的硬盤,區(qū)域管理器所使用的所有內(nèi)部數(shù)據(jù)都存儲(chǔ)在這個(gè)硬盤的區(qū)域號(hào)0和1中。這個(gè)信息并不重復(fù)(或鏡像)到其他驅(qū)動(dòng)器。如果區(qū)域0或1中有錯(cuò)誤,可以分配其他區(qū)域來(lái)保留該數(shù)據(jù)。盤信息結(jié)構(gòu)指針指向這些區(qū)域。每個(gè)盤將包含識(shí)別該盤的DIS、它所屬于的盤組和該盤的布局信息。該硬盤上的第一扇區(qū)被保留。DIS存儲(chǔ)在第一扇區(qū)后的第一非損壞聚簇中。DIS包含相當(dāng)1KB的數(shù)據(jù)。有兩個(gè)DIS的副本。DIS的副本將存儲(chǔ)在其所屬于的盤上。另外,該系統(tǒng)中的每個(gè)盤都將包含該系統(tǒng)中盤的全部DIS副本。下表顯示DIS格式區(qū)域管理器在區(qū)域信息結(jié)構(gòu)中存儲(chǔ)其內(nèi)部數(shù)據(jù)。下表顯示該區(qū)域信息結(jié)構(gòu)格式存儲(chǔ)區(qū)信息結(jié)構(gòu)提供可以發(fā)現(xiàn)存儲(chǔ)區(qū)表的存儲(chǔ)區(qū)管理器上的信息。下面顯示該存儲(chǔ)區(qū)信息結(jié)構(gòu)格式高級(jí)信息存儲(chǔ)區(qū)包含存儲(chǔ)區(qū)表和其他由高級(jí)管理者使用的表。這將使用鏡像進(jìn)行保護(hù)。下表顯示該存儲(chǔ)區(qū)表節(jié)點(diǎn)格式下面描述存儲(chǔ)區(qū)信息布局。存儲(chǔ)區(qū)表節(jié)點(diǎn)的鏈接列表以如下方式放置在ZIS后這種信息存儲(chǔ)在存儲(chǔ)區(qū)表區(qū)域中。圖16示出了根據(jù)本發(fā)明示例性實(shí)施例的驅(qū)動(dòng)器布局。前兩個(gè)區(qū)域是互為副本。第三(可選)存儲(chǔ)區(qū)表區(qū)域包含該存儲(chǔ)區(qū)表。在具有一個(gè)以上驅(qū)動(dòng)器的系統(tǒng)中,只有兩個(gè)驅(qū)動(dòng)器包含ZTR。在僅具有一個(gè)驅(qū)動(dòng)器的系統(tǒng)中,兩個(gè)區(qū)域用于保留該ZTR的兩個(gè)(鏡像)副本。DIS包含有關(guān)RIS和ZIS位置的信息。注意RIS的第一副本不必在區(qū)域0中(例如,如果區(qū)域0包含壞扇區(qū),則可以位于不同區(qū)域)。存儲(chǔ)區(qū)管理器需要在系統(tǒng)啟動(dòng)時(shí)加載該存儲(chǔ)區(qū)表。為此,其從DIS提取區(qū)域號(hào)和偏移。這將指向ZIS的開頭。特定模塊(例如CAT管理器)在存儲(chǔ)區(qū)中存儲(chǔ)它們的控制結(jié)構(gòu)和數(shù)據(jù)表。層3和更高層中的模塊的所有控制結(jié)構(gòu)由存儲(chǔ)在存儲(chǔ)區(qū)0中的結(jié)構(gòu)來(lái)引用。這意味著,例如,實(shí)際CAT(聚簇分配表)位置由存儲(chǔ)區(qū)0中存儲(chǔ)的數(shù)據(jù)結(jié)構(gòu)來(lái)引用。下表顯示存儲(chǔ)區(qū)0信息表格式CAT鏈接列表是描述包含CAT的存儲(chǔ)區(qū)的節(jié)點(diǎn)鏈接列表。下表顯示CAT連接列表節(jié)點(diǎn)格式散列表鏈接列表是描述保持散列表的存儲(chǔ)區(qū)的節(jié)點(diǎn)的鏈接列表。下表顯示該散列表鏈接列表節(jié)點(diǎn)格式圖17示例存儲(chǔ)區(qū)0的布局以及其他存儲(chǔ)區(qū)如何被引用,根據(jù)本發(fā)明示例性實(shí)施例。如上所述,冗余集是為數(shù)據(jù)集提供冗余的一組扇區(qū)/聚簇。備份某個(gè)區(qū)域包括將一個(gè)區(qū)域的內(nèi)容復(fù)制到另一個(gè)區(qū)域。在數(shù)據(jù)讀取出錯(cuò)的情況下,較低級(jí)軟件(盤管理器或者設(shè)備驅(qū)動(dòng)器)在最初失敗嘗試之后再做兩次讀請(qǐng)求的嘗試。故障狀態(tài)傳遞回存儲(chǔ)區(qū)管理器。存儲(chǔ)區(qū)管理器接著嘗試根據(jù)盤陣列中冗余聚簇來(lái)重構(gòu)所請(qǐng)求(通過(guò)讀)數(shù)據(jù)。該冗余數(shù)據(jù)可以是鏡像的聚簇(用于SDM、DDM)或者一組包括奇偶校驗(yàn)的聚簇(條帶化實(shí)施)。接著重構(gòu)數(shù)據(jù)傳遞回主機(jī)。如果ZM不能重構(gòu)該數(shù)據(jù),則將讀報(bào)錯(cuò)傳遞回主機(jī)。存儲(chǔ)區(qū)管理器發(fā)送差錯(cuò)通知分組給差錯(cuò)管理器。圖18示例根據(jù)本發(fā)明示例性實(shí)施例的讀報(bào)錯(cuò)處理。在數(shù)據(jù)寫出錯(cuò)的情況下,較低級(jí)軟件(盤管理器或者設(shè)備驅(qū)動(dòng)器)在最初失敗嘗試之后再兩次嘗試寫請(qǐng)求。故障狀態(tài)傳遞回存儲(chǔ)區(qū)管理器。存儲(chǔ)區(qū)管理器發(fā)送報(bào)錯(cuò)通知分組給差錯(cuò)管理器。當(dāng)數(shù)據(jù)寫在這個(gè)級(jí)別執(zhí)行時(shí),冗余信息同樣寫入磁盤。這樣,只要僅一個(gè)聚簇具有寫差錯(cuò),后續(xù)的讀可以重構(gòu)該數(shù)據(jù)。如果有多個(gè)盤差錯(cuò)并且冗余信息不能讀或者寫,則有至少兩種可能途徑a.向主機(jī)返回寫差錯(cuò)狀態(tài)。把與該冗余集相關(guān)聯(lián)的所有區(qū)域備份至新分配的不包含壞扇區(qū)的區(qū)域。b.延遲寫。把與該冗余集相關(guān)聯(lián)的所有區(qū)域備份至新分配的不包含壞扇區(qū)的區(qū)域。隨后,在新分配區(qū)域中的適當(dāng)聚簇上寫(連同全部冗余部分,例如奇偶校驗(yàn)等)。單獨(dú)的寫隊(duì)列將用于包含已經(jīng)被延遲的寫。因?yàn)閷憼顟B(tài)可能已經(jīng)發(fā)送到主機(jī)作為日志成功寫入的結(jié)果,所以方法(a)是有問(wèn)題的,因此主機(jī)不可能知道已經(jīng)有差錯(cuò)。一種替換的是報(bào)告讀的故障,但是允許寫。CAT中的某個(gè)位用于跟蹤應(yīng)當(dāng)返回壞的讀的特別LBA。圖19示例根據(jù)本發(fā)明示例性實(shí)施例寫差錯(cuò)處理。差錯(cuò)管理器(EM)檢查聚簇以發(fā)現(xiàn)其是否真的損壞。如果是,則認(rèn)為整個(gè)區(qū)域損壞。該區(qū)域中的內(nèi)容復(fù)制到相同盤的新分配區(qū)域上。然后標(biāo)記當(dāng)前區(qū)域損壞。當(dāng)在區(qū)域上復(fù)制時(shí),當(dāng)遇到壞扇區(qū)時(shí),差錯(cuò)管理器將在必要時(shí)重構(gòu)數(shù)據(jù)。如20是示例根據(jù)本發(fā)明示例性實(shí)施例由差錯(cuò)管理器備份壞區(qū)域的邏輯流程圖。如果有數(shù)據(jù)讀差錯(cuò)且差錯(cuò)管理器不能重構(gòu)給定聚簇的數(shù)據(jù)(例如,由于在整個(gè)冗余集的讀差錯(cuò)),那么接著使用零代替不能重構(gòu)的數(shù)據(jù)。在這種情況下,將同樣必須備份其他包含壞扇區(qū)的區(qū)域(來(lái)自相同冗余集)。再次將使用零代替不能重構(gòu)的數(shù)據(jù)?!﹫?zhí)行了冗余集復(fù)制,EM禁用對(duì)應(yīng)于存儲(chǔ)區(qū)這部分的聚簇的存取。然后更新存儲(chǔ)區(qū)表以指向新分配區(qū)域。隨后存取再啟用的聚簇。這個(gè)示例性實(shí)施例設(shè)計(jì)支持八個(gè)快照(其允許使用一個(gè)字節(jié)指示特定快照實(shí)例是否使用散列/聚簇項(xiàng))。有兩個(gè)表涉及快照1.需要存在每個(gè)快照的CAT表,以捕獲邏輯扇區(qū)地址與包含用于LSA的數(shù)據(jù)的盤上的聚簇之間的關(guān)系。最終,每快照CAT必須是在快照發(fā)生時(shí)CAT的副本。2.系統(tǒng)散列表,其在散列值和數(shù)據(jù)聚簇之間映射。散列函數(shù)返回相同結(jié)果,無(wú)論使用哪個(gè)快照實(shí)例,并且對(duì)全部快照結(jié)果都是一樣的。這樣,這個(gè)表必須理解唯一聚簇是否由任何快照使用。散列聚簇項(xiàng)不能被釋放,或者被新數(shù)據(jù)替換,除非沒(méi)有使用該散列項(xiàng)的快照??偸怯挟?dāng)前和被添加的快照。當(dāng)散列項(xiàng)創(chuàng)建或者更新時(shí),我們將需要把當(dāng)前快照號(hào)應(yīng)用到散列項(xiàng)。當(dāng)制作快照時(shí),將遞增當(dāng)前快照號(hào)。通過(guò)查找散列表并且發(fā)現(xiàn)任何具有退出快照位設(shè)置的散列值并清空該位,由此來(lái)釋放不再被任何快照需要的聚簇/散列項(xiàng)。如果該快照字節(jié)現(xiàn)在是零,則散列項(xiàng)可以從該表中刪除,并且可以釋放該聚簇。為了預(yù)防與添加到散列樹的任何新項(xiàng)的沖突(因?yàn)樾驴煺諗?shù)與退出快照數(shù)相同),僅允許批準(zhǔn)7個(gè)快照,退出最后的(第八個(gè))快照??梢园幢尘盎顒?dòng)來(lái)查找散列表。為了創(chuàng)建快照,無(wú)論主CAT何時(shí)更新都可以寫入第二CAT存儲(chǔ)區(qū)。這種更新可以被排隊(duì),并且影子CAT可以按其他任務(wù)來(lái)更新。為了快照,影子CAT成為快照CAT。一旦進(jìn)行快照,可以離開后臺(tái)處理以將這個(gè)快照表復(fù)制到新存儲(chǔ)區(qū)成為新快照CAT??梢允褂藐?duì)列,使得不處理影子CAT隊(duì)列,直到CAT復(fù)制完成。如果在更新影子CAT之前發(fā)生故障(隊(duì)列中的項(xiàng)可能丟失的情況),則在陣列聯(lián)機(jī)之前可以根據(jù)最初CAT表執(zhí)行再投影。另外,當(dāng)需要快照時(shí),“增量”的集合加上最初CAT副本可以組成快照。然后后臺(tái)任務(wù)可根據(jù)這些信息重建完整快照CAT。這會(huì)需要一點(diǎn)或者不需要停機(jī)時(shí)間來(lái)做此快照。其間,可能要為后續(xù)的快照收集另一組“增量”。如上所述,所謂“垃圾收集器”可用于釋放不再被主機(jī)文件系統(tǒng)使用的聚簇(例如當(dāng)刪除文件時(shí))。一般而言,通過(guò)發(fā)現(xiàn)空閑塊、計(jì)算它們的主LSA、并根據(jù)該LSA分配它們的CAT項(xiàng)進(jìn)行垃圾收集。如果沒(méi)有CAT項(xiàng)用于特定LSA,則該聚簇已經(jīng)空閑。但是如果CAT項(xiàng)被定位,則遞增引用計(jì)數(shù),而且如果該計(jì)數(shù)命中零,該聚簇空閑。垃圾收集的一個(gè)問(wèn)題是難于將已經(jīng)由主文件系統(tǒng)使用的塊與先前已經(jīng)使用并且在某個(gè)點(diǎn)標(biāo)記為空閑的一個(gè)區(qū)分開來(lái)。當(dāng)主文件系統(tǒng)寫入塊時(shí),存儲(chǔ)設(shè)備分配聚簇用于數(shù)據(jù),以及CAT項(xiàng)來(lái)描述它。從這點(diǎn)上,聚簇將一般的表現(xiàn)為在用(inuse),即使主文件系統(tǒng)隨后停止使用它的塊(即,聚簇將仍然通過(guò)有效CAT的項(xiàng)處于在用狀態(tài))。例如,特定主文件系統(tǒng)使用位圖(bitmap)來(lái)追蹤它的使用盤塊。一開始,位圖將指示全部的塊為空閑,例如,通過(guò)將全部位清空。由于使用文件系統(tǒng),因此主文件系統(tǒng)將通過(guò)使用它的空閑塊位圖來(lái)分配塊。存儲(chǔ)系統(tǒng)將使用通過(guò)上述的分配聚簇和CAT項(xiàng)來(lái)把這些文件系統(tǒng)分配與物理存儲(chǔ)相關(guān)聯(lián)。當(dāng)主文件系統(tǒng)把一些塊釋放回到它的空閑池時(shí),其只需要在其空閑塊位圖中清空相應(yīng)的位。在存儲(chǔ)系統(tǒng)上,這可以設(shè)想成寫入恰好包含該主機(jī)的空閑塊位圖的聚簇,就像沒(méi)有I/O到空閑的實(shí)際聚簇本身(雖然可能有到空閑聚簇的1/0,例如,如果主文件系統(tǒng)以某種增強(qiáng)安全模式運(yùn)行,其中不像把零或者隨機(jī)數(shù)據(jù)的強(qiáng)保密散列寫入聚簇以使得減少舊聚簇內(nèi)容可能被攻擊者讀取的機(jī)會(huì))。另外,當(dāng)滿意新分配請(qǐng)求時(shí),不保證主文件系統(tǒng)會(huì)重用以前被釋放的塊。因此,如果主文件系統(tǒng)繼續(xù)分配那些從存儲(chǔ)系統(tǒng)的視點(diǎn)來(lái)看是新的、即以前未使用的塊,則該存儲(chǔ)系統(tǒng)將快速耗盡空閑聚簇,限于無(wú)論什么空間都可以經(jīng)由壓縮回收。例如,假定文件系統(tǒng)塊是4K,如果主機(jī)分配文件系統(tǒng)塊100至500,隨后釋放塊300至500,然后接著分配塊1000至1100,整個(gè)文件系統(tǒng)使用的將是30037塊,而陣列將有500個(gè)聚簇處于在用狀態(tài)。在本發(fā)明示例性實(shí)施例中,存儲(chǔ)系統(tǒng)可以通過(guò)訪問(wèn)主文件系統(tǒng)布局來(lái)檢測(cè)主文件系統(tǒng)盤資源的釋放,分析它的空閑塊位圖,并使用該信息來(lái)識(shí)別不再被該文件系統(tǒng)使用的聚簇。為了存儲(chǔ)系統(tǒng)能夠以這種方式識(shí)別未使用的聚簇,存儲(chǔ)系統(tǒng)必須能夠定位并理解該文件系統(tǒng)的空閑塊位圖。因而,該存儲(chǔ)系統(tǒng)將通常支持文件系統(tǒng)的預(yù)定設(shè)置,可充分“理解”內(nèi)部工作以定位并利用這些空閑塊位圖。對(duì)不支持的文件系統(tǒng),該存儲(chǔ)系統(tǒng)可能不能夠執(zhí)行垃圾收集并將由此僅告之該陣列的實(shí)際物理尺寸以便于避免被過(guò)量使用。為了確定該文件系統(tǒng)類型(例如NTFS、FAT、ReiserFS,ext3),需要定位該文件系統(tǒng)的超塊(superblock,或者等同結(jié)構(gòu))。為了發(fā)現(xiàn)該超塊,要分析分區(qū)表(partitiontable)以定位OS分區(qū)。假定OS分區(qū)被定位,則分析OS分區(qū),以試圖定位該超塊并由此識(shí)別該文件系統(tǒng)類型。一旦該文件系統(tǒng)類型已知,則可以分析布局以查找空閑塊位圖。為了便于搜索空閑塊,可以保持主文件系統(tǒng)位圖的歷史數(shù)據(jù),例如,通過(guò)制作可以存儲(chǔ)在私有、非冗余存儲(chǔ)區(qū)的空閑塊位圖的副本,并執(zhí)行使用該副本的搜索。給定位圖的尺寸,可以每次為較少數(shù)量的聚簇保持信息而不是為整個(gè)位圖保持信息。當(dāng)執(zhí)行垃圾收集時(shí),可以把當(dāng)前空閑塊位圖與歷史副本逐個(gè)聚簇地進(jìn)行比較??梢宰R(shí)別任何從分配轉(zhuǎn)換成空閑的位圖項(xiàng),使得回收操作可準(zhǔn)確地定向到作為可利用的良好候選的聚簇。隨著處理每個(gè)位圖聚簇,可以用當(dāng)前副本替換歷史數(shù)據(jù)以維持位圖操作的滾動(dòng)式歷史數(shù)據(jù)。空閑塊位圖的副本將隨著時(shí)間變成時(shí)間上不連貫的聚簇的拼湊體,但是由于當(dāng)前副本總是用于定位空閑項(xiàng),因此這并不產(chǎn)生任何問(wèn)題。在特定條件下,會(huì)有關(guān)于空閑塊位圖的競(jìng)爭(zhēng)條件,例如,如果主文件系統(tǒng)使用其空閑塊位圖來(lái)分配盤塊,接著寫入它的數(shù)據(jù)塊,然后將修變的位圖刷新回到盤。在這種情況下,垃圾收集器會(huì)釋放該聚簇,即使該文件系統(tǒng)在使用該聚簇。這會(huì)導(dǎo)致文件系統(tǒng)被破壞??蓪?shí)現(xiàn)存儲(chǔ)系統(tǒng)以避免或者處理這樣的條件。由于垃圾收集是相當(dāng)昂貴的操作,因即是低強(qiáng)度的回收也將占用后端的I/O帶寬,因此不應(yīng)濫用垃圾收集。垃圾收集器能夠按多種方式運(yùn)行,從低強(qiáng)度的后臺(tái)惰性回收到非常高強(qiáng)度或者甚高優(yōu)先級(jí)的回收。例如,當(dāng)使用了百分之三十的空間時(shí),可以按低強(qiáng)度方式運(yùn)行垃圾收集器,或者至少?zèng)]星期一次,當(dāng)使用了50%的空間時(shí),按稍微高強(qiáng)度的方式來(lái)運(yùn)行,而當(dāng)使用了百分之九十或者更多的磁盤空間時(shí),運(yùn)行全高優(yōu)先級(jí)的回收。在每次進(jìn)行收集時(shí),可以限制要回收的目標(biāo)聚簇?cái)?shù)量和最大的可容許I/O計(jì)數(shù),從而控制垃圾收集器的回收強(qiáng)度。例如,可配置垃圾收集器,通過(guò)使用不超過(guò)10000次的I/O來(lái)回收1GB?;厥照?qǐng)求的完成失敗可用作對(duì)收集器的反饋,從而在下一次運(yùn)行時(shí)按更高強(qiáng)度的方式。還可以是“回收一切”模式,允許垃圾收集器分析整個(gè)主文件系統(tǒng)空閑塊位圖并回收可能的全部塊。在陣列(幾乎)完全裝滿時(shí),這可以作為最后的辦法來(lái)回收聚簇??梢灾芷谛缘剡\(yùn)行垃圾收集器,對(duì)其施加規(guī)則,并可決定執(zhí)行、或者可決定不執(zhí)行回收操作。還能夠明確地從其他模塊來(lái)請(qǐng)求回收操作,例如區(qū)域管理器,當(dāng)正在尋找用于構(gòu)建區(qū)域的聚簇時(shí),可請(qǐng)求回收操作。垃圾收集功能可以與狀態(tài)指示符機(jī)制相結(jié)合。例如,在某些點(diǎn),存儲(chǔ)系統(tǒng)可以處于“紅色”條件,盡管正在運(yùn)行的垃圾收集操作可以釋放足夠空間以消除“紅色”條件??刹捎酶郊又甘酒鳡顟B(tài)以顯示相關(guān)狀態(tài)信息(例如紅色指示器燈光可以閃爍用來(lái)指示垃圾收集操作正在進(jìn)行)。圖21是根據(jù)本發(fā)明示例性實(shí)施例的存儲(chǔ)陣列的相關(guān)部件的示意性框圖。除了其他,存儲(chǔ)陣列包括底盤2502,在其上存儲(chǔ)管理器2504與多個(gè)存儲(chǔ)設(shè)備ZSOS1ISOSn通信,這些存儲(chǔ)設(shè)備分別通過(guò)多個(gè)插槽2506^2506,耦合到底盤。每個(gè)插槽2506^2506,都可以與一個(gè)或者多個(gè)指示器ZSOT1ISOT1^H關(guān)聯(lián)。除了其他,存儲(chǔ)管理器2504典型包括用于實(shí)施上述功能的各種硬件和軟件組件。硬件組件典型包括存儲(chǔ)器用于存儲(chǔ)諸如程序代碼、數(shù)據(jù)結(jié)構(gòu)、以及數(shù)據(jù)的內(nèi)存,和用于執(zhí)行該程序代碼的微處理器系統(tǒng)。虛擬熱后備(virtualhotspare)如上所述,在許多存儲(chǔ)系統(tǒng)中,熱后備存儲(chǔ)設(shè)備維持就緒狀態(tài),使得在其他存儲(chǔ)設(shè)備故障的情況下,熱后備可以快速被聯(lián)機(jī)。在本發(fā)明特定實(shí)施例中,不是維持物理上分離的熱后備,而是跨多個(gè)存儲(chǔ)設(shè)備由未使用的存儲(chǔ)容量來(lái)創(chuàng)建虛擬熱后備。不同于物理熱后備,如果以及當(dāng)對(duì)于根據(jù)(多個(gè))其余存儲(chǔ)設(shè)備恢復(fù)的數(shù)據(jù)的存儲(chǔ)發(fā)生存儲(chǔ)設(shè)備故障時(shí),這種未使用存儲(chǔ)容量是可用的。該虛擬熱后備特征需要陣列上的足夠可用空間,以保證在盤故障情況下,數(shù)據(jù)可以按冗余方式再布局。因而,根據(jù)運(yùn)行,存儲(chǔ)系統(tǒng)典型地確定實(shí)現(xiàn)虛擬熱后備可能需要的未使用存儲(chǔ)容量的量(例如,根據(jù)存儲(chǔ)設(shè)備的數(shù)量、各存儲(chǔ)設(shè)備的容量、數(shù)據(jù)存儲(chǔ)的數(shù)量、以及以什么方式存儲(chǔ)數(shù)據(jù)),并且,如果需要附加存儲(chǔ)容量用于虛擬熱后備的話則產(chǎn)生信號(hào)(例如,使用綠色/黃色/紅色光指示狀態(tài)和插槽,如上所述)。隨著存儲(chǔ)區(qū)的分配,按每個(gè)盤保持記錄,多少個(gè)區(qū)域需要再布局該存儲(chǔ)區(qū)。下表示例使用四個(gè)驅(qū)動(dòng)器的虛擬熱后備下表示例具有使用三個(gè)驅(qū)動(dòng)器的虛擬熱后備在這個(gè)示例性實(shí)施例中,虛擬熱后備并非在僅有1個(gè)或者2個(gè)驅(qū)動(dòng)器的陣列上可用。根據(jù)每個(gè)存儲(chǔ)區(qū)的信息和陣列中盤的數(shù)量,該陣列確定每個(gè)可能盤故障的再布局情況并保證對(duì)每種情況每個(gè)驅(qū)動(dòng)器上都有足夠的可用空間。產(chǎn)生的信息可以反饋回再布局引擎和存儲(chǔ)區(qū)管理器,使得數(shù)據(jù)可以在數(shù)據(jù)存儲(chǔ)和熱后備特征之間正確平衡。注意,根據(jù)這些由存儲(chǔ)區(qū)布局?jǐn)?shù)據(jù)的計(jì)算,熱后備特征需要足夠備用工作空間區(qū)域,使得可發(fā)生再布局。圖22是示出根據(jù)本發(fā)明示例性實(shí)施例的管理虛擬熱后備的示例性邏輯的邏輯流程圖???102中,該邏輯確定每個(gè)可能盤故障的再布局情形。在框2104中,該邏輯確定最壞情況下冗余數(shù)據(jù)再布局的每個(gè)驅(qū)動(dòng)器需要的空間量???106中,該邏輯確定在最壞情況下數(shù)據(jù)冗余再布局需要的后備工作空間區(qū)域的數(shù)量???108中,該邏輯確定每個(gè)驅(qū)動(dòng)器上需要的空間總量,以允許在最壞情況下再布局?jǐn)?shù)據(jù)冗余(實(shí)際上是再布局所需要的空間和備用工作空間區(qū)域的和)???110中,該邏輯確定存儲(chǔ)系統(tǒng)是否包含足夠的可用的存儲(chǔ)量。如果有足夠數(shù)量的可用存儲(chǔ)(框2112中的是),則該邏輯迭代在框2199終止。但是,如果沒(méi)有足夠量的可用存儲(chǔ)(框2112中的否),則該邏輯在框2114中確定哪個(gè)驅(qū)動(dòng)器/插槽需要更新。接著在框2116,該邏輯發(fā)出信號(hào),指出需要附加存儲(chǔ)空間并指示哪個(gè)驅(qū)動(dòng)器/插槽需要更新。該邏輯迭代在框2199終止。圖23是示出根據(jù)本發(fā)明示例性實(shí)施例的用于確定每個(gè)可能盤故障的布局情形的示例性邏輯的邏輯流程圖,如圖22的框2102中???202中,該邏輯分配存儲(chǔ)區(qū)。然后,在框2204中,該邏輯確定按每個(gè)盤需要多少個(gè)存儲(chǔ)區(qū)用于再布局存儲(chǔ)區(qū)。該邏輯迭代在框2299終止。圖24是示出根據(jù)本發(fā)明示例性實(shí)施例的包括虛擬熱后備功能的示例性邏輯的邏輯流程圖???302中,該邏輯維持在最壞情況下的充足數(shù)量的可用存儲(chǔ)以使得可再布局?jǐn)?shù)據(jù)冗余。當(dāng)在框2304確定了驅(qū)動(dòng)器喪失(例如移除或者故障),該邏輯在框2306自動(dòng)重構(gòu)一個(gè)或者多個(gè)其余驅(qū)動(dòng)器,以恢復(fù)數(shù)據(jù)的容錯(cuò)。該邏輯迭代在框2399終止。圖25是示出根據(jù)本發(fā)明示例性實(shí)施例的自動(dòng)重構(gòu)一個(gè)或者多個(gè)其余設(shè)備用于恢復(fù)數(shù)據(jù)容錯(cuò)的示例邏輯的邏輯流程圖,如圖24的框2306。框2402中,該邏輯將跨四個(gè)或者更多存儲(chǔ)設(shè)備的第一條帶化模式轉(zhuǎn)換為跨三個(gè)或者更多剩余存儲(chǔ)設(shè)備的第二條帶化模式???404中,該邏輯可以將跨三個(gè)存儲(chǔ)設(shè)備的條帶化模式轉(zhuǎn)換為跨兩個(gè)剩余存儲(chǔ)設(shè)備的鏡像模式。當(dāng)然,該邏輯可以按其他方式轉(zhuǎn)換以使得隨著驅(qū)動(dòng)器的喪失而再布局?jǐn)?shù)據(jù)冗余。該邏輯迭代在框2499終止。再參考圖21,存儲(chǔ)管理器2504典型地包括適當(dāng)部件和邏輯用于實(shí)施如上所述的虛擬熱后備功能。動(dòng)態(tài)升級(jí)上述用于處理存儲(chǔ)的動(dòng)態(tài)擴(kuò)展和收縮的邏輯可以被擴(kuò)充用于提供可動(dòng)態(tài)升級(jí)的存儲(chǔ)設(shè)備,其中,存儲(chǔ)設(shè)備可根據(jù)需要用更大的存儲(chǔ)設(shè)備來(lái)替換,并且現(xiàn)有數(shù)據(jù)跨各存儲(chǔ)設(shè)備重新配置,使得冗余得到維持或者增強(qiáng),并且該更大的存儲(chǔ)設(shè)備所提供的附加存儲(chǔ)空間將包括在跨多個(gè)存儲(chǔ)空間的可用存儲(chǔ)空間的池(pool)中。因而,當(dāng)用較大存儲(chǔ)設(shè)備替換較小存儲(chǔ)設(shè)備時(shí),附加存儲(chǔ)空間可用于改進(jìn)已存儲(chǔ)數(shù)據(jù)和存儲(chǔ)附加數(shù)據(jù)的冗余。無(wú)論何時(shí)需要更多存儲(chǔ)空間,向用戶提供適當(dāng)信號(hào)(例如使用如上所述的綠色/黃色/紅色燈光),而用戶可以簡(jiǎn)單移除存儲(chǔ)設(shè)備并用更大存儲(chǔ)設(shè)備替換它。圖26是示出根據(jù)本發(fā)明示例性實(shí)施例的用于更新存儲(chǔ)設(shè)備的邏輯流程圖。框2602中,該邏輯在第一存儲(chǔ)設(shè)備上按照存儲(chǔ)在其中的數(shù)據(jù)在其他存儲(chǔ)設(shè)備上冗余出現(xiàn)的方式來(lái)存儲(chǔ)數(shù)據(jù)???604中,該邏輯檢測(cè)用比第一存儲(chǔ)設(shè)備具有更大存儲(chǔ)容量的替換設(shè)備來(lái)替換第一存儲(chǔ)設(shè)備的替換???606中,該邏輯使用冗余存儲(chǔ)在其他設(shè)備上的數(shù)據(jù)將存儲(chǔ)在第一設(shè)備的數(shù)據(jù)自動(dòng)再生到的該替換設(shè)備上。框2608中,該邏輯使替換設(shè)備上的附加存儲(chǔ)空間可用于存儲(chǔ)新數(shù)據(jù)冗余。框2610中,該邏輯可以在替換設(shè)備上的附加存儲(chǔ)空間中存儲(chǔ)新數(shù)據(jù)冗余,如果沒(méi)有其他設(shè)備具有充足的可用存儲(chǔ)容量用于提供新數(shù)據(jù)的冗余的話???612中,如果至少一個(gè)其他設(shè)備具有充足的可用存儲(chǔ)空間用于提供新數(shù)據(jù)冗余,則該邏輯跨多個(gè)存儲(chǔ)設(shè)備存儲(chǔ)新數(shù)據(jù)冗余。再參考圖21,存儲(chǔ)管理器2504典型包括適當(dāng)部件和邏輯用于實(shí)施如上所述的動(dòng)態(tài)更新功能。其他本發(fā)明的實(shí)施例可以用于向主機(jī)計(jì)算機(jī)提供存儲(chǔ)容量,例如按美國(guó)臨時(shí)申請(qǐng)第60/625,495所述的方式使用外圍連接協(xié)議,所述申請(qǐng)以GeoffreyS.Barrall的名義于2004年11月5日提交,通過(guò)弓丨用全文結(jié)合于此以供參考。應(yīng)當(dāng)注意,散列算法可能不產(chǎn)生嚴(yán)格唯一的散列值。因而,可以想到散列算法對(duì)具有不相同內(nèi)容的兩個(gè)數(shù)據(jù)塊產(chǎn)生相同散列值。散列函數(shù)(其通常結(jié)合散列算法)典型包括確認(rèn)唯一性的機(jī)制。例如,在上述本發(fā)明的示例性實(shí)施例中,如果一個(gè)塊的散列值與另外塊的散列值不同,則認(rèn)為這些塊的內(nèi)容不相同。但是如果一個(gè)塊的散列值與另一個(gè)塊的散列值相同,那么散列函數(shù)可以比較這兩個(gè)塊的內(nèi)容或者利用一些其他機(jī)制(例如不同散列函數(shù))以確定內(nèi)容是否相同。應(yīng)當(dāng)注意,這里使用的該邏輯流程圖用于示例本發(fā)明的各個(gè)方面,而不應(yīng)解釋為將本發(fā)明限制在任何特殊邏輯流程或者邏輯工具。在不改變總體結(jié)果的前提下,或者不以另外的方式背離本發(fā)明范圍的情況下,所述邏輯可劃分為不同的邏輯塊(例如程序、模塊、函數(shù)、或者子程序)。通常,可以增加、改變、省略邏輯部件,可以按不同順序執(zhí)行,或者使用不同邏輯結(jié)構(gòu)來(lái)實(shí)施(例如邏輯門、循環(huán)元語(yǔ)、條件邏輯、和其他邏輯機(jī)構(gòu)),而不改變整體結(jié)果或者以其他方式脫離本發(fā)明的真實(shí)范圍。本發(fā)明可以按多種不同形式來(lái)實(shí)施,包括但不限于使用處理器(例如微處理器、微控制器、數(shù)字信號(hào)處理器、或者通用計(jì)算機(jī))的計(jì)算機(jī)程序邏輯、使用可編程邏輯設(shè)備(例如現(xiàn)場(chǎng)可編程門陣列(FPGA)或者其他PLD)的可編程邏輯、離散組件、集成電路(例如特定用途集成電路(ASIC))、或者包括其任意組合的其他裝置。實(shí)施全部或者部分這里前述功能的計(jì)算機(jī)編程邏輯可以按多種形式實(shí)施,包括但不限于源代碼形式、計(jì)算機(jī)可執(zhí)行形式、各種中間形式(例如由匯編程序、編譯程序、連接程序、或者定位程序等產(chǎn)生的形式)。源代碼可以包括按任何各種編程語(yǔ)言實(shí)現(xiàn)的計(jì)算機(jī)程序指令序列(例如對(duì)象代碼、匯編語(yǔ)言、或者例如Fortran、C、C++、JAVA、或HTML等高級(jí)語(yǔ)言),在各種操作系統(tǒng)或者操作環(huán)境下使用。源代碼可以定義并使用各種數(shù)據(jù)結(jié)構(gòu)和通信消息。源代碼可以是計(jì)算機(jī)可執(zhí)行形式(例如經(jīng)由解釋程序)、或者源代碼可以轉(zhuǎn)換(例如經(jīng)由轉(zhuǎn)換器、匯編器、或者編譯器)為計(jì)算機(jī)可執(zhí)行形式。所述計(jì)算機(jī)程序可以持久地或者暫時(shí)地按任何形式(例如源代碼形式、計(jì)算機(jī)可執(zhí)行形式、或者中間形式)固定在有形存儲(chǔ)介質(zhì)中,例如半導(dǎo)體存儲(chǔ)裝置(例如RAM、ROM、PR0M、EEPR0M、或者可編程閃存RAM)、磁存儲(chǔ)設(shè)備(例如軟盤或者硬盤)、光存儲(chǔ)設(shè)備(例如CD-ROM)、PC卡(例如PCMCIA卡)、或者其他存儲(chǔ)器設(shè)備。該計(jì)算機(jī)程序可以按任何形式固定在信號(hào)中,該信號(hào)傳輸給使用各種通信技術(shù)的計(jì)算機(jī),包括但不限于模擬技術(shù)、數(shù)字技術(shù)、光技術(shù)、無(wú)線技術(shù)(例如藍(lán)牙)、網(wǎng)絡(luò)技術(shù)、以及互聯(lián)網(wǎng)技術(shù)。該計(jì)算機(jī)程序可以按任何形式來(lái)發(fā)布,如使用附帶有打印的文檔或者電子文檔的可移動(dòng)存儲(chǔ)介質(zhì)(例如壓縮包軟件)、預(yù)裝入計(jì)算機(jī)系統(tǒng)(例如在系統(tǒng)ROM或者硬盤上)、或者通過(guò)通信系統(tǒng)(例如因特網(wǎng)或者萬(wàn)維網(wǎng))從服務(wù)器或者電子公告板來(lái)發(fā)布。實(shí)施全部或者部分這里的上述功能的硬件邏輯(包括用于可編程邏輯設(shè)備的可編程邏輯)可以使用傳統(tǒng)人工方法設(shè)計(jì),或者可以使用各種工具來(lái)設(shè)計(jì)、捕獲、模擬、或者建立電子文檔,例如計(jì)算機(jī)輔助設(shè)計(jì)(CAD)、硬件描述語(yǔ)言(例如VHEL或者AHDL)、或者PLD編程語(yǔ)言(例如PALASM、ABEL、或者CUPL)。所述可編程邏輯可以永久或者暫時(shí)固定在有形存儲(chǔ)介質(zhì)中,例如半導(dǎo)體存儲(chǔ)設(shè)備(例如RAM、ROM、PROM、EEPR0M、或者可編程閃存RAM)、磁存儲(chǔ)設(shè)備(例如軟盤或者硬盤)、光存儲(chǔ)設(shè)備(例如CD-ROM)、或者其他存儲(chǔ)器設(shè)備。該可編程邏輯可以按任何形式固定在信號(hào)中,該信號(hào)傳輸給使用各種通信技術(shù)的計(jì)算機(jī),包括但不限于模擬技術(shù)、數(shù)字技術(shù)、光技術(shù)、無(wú)線技術(shù)(例如藍(lán)牙)、網(wǎng)絡(luò)技術(shù)、以及互聯(lián)網(wǎng)技術(shù))。該可編程邏輯可以按任何形式來(lái)發(fā)布,如使用帶有打印文檔或者電子文檔的可移動(dòng)存儲(chǔ)介質(zhì)(例如壓縮包軟件)、預(yù)裝入計(jì)算機(jī)系統(tǒng)(例如在系統(tǒng)ROM或者硬盤上)、或者通過(guò)通信系統(tǒng)(例如因特網(wǎng)或者萬(wàn)維網(wǎng))從服務(wù)器或者電子公告板發(fā)布。本發(fā)明涉及下列美國(guó)專利申請(qǐng),通過(guò)引用全文并入此處代理卷號(hào)2950103、名稱為DynamicallyExpandableandContractibleFault-TolerantStorageSystemPermittingVariouslySizedStorageDevicesandMethod;代理卷號(hào)2950104、名稱為DynamicallyUpgradeableFauIt-TolerantStorageSystemPermittingVariouslySizedStorageDevicesandMethod;andAttorneyDocketNo.2950/105entitledDynamicallyExpandable;代理卷號(hào)2950105、名稱為DynamicallyExpandableandContractibleFault-TolerantStorageSystemWithVirtualHotSpare。在不脫離本發(fā)明真實(shí)范圍的前提下,本發(fā)明可以按其他特殊形式來(lái)實(shí)施。所述實(shí)施例在所有方面都應(yīng)當(dāng)被認(rèn)為是說(shuō)明而不是限制。權(quán)利要求一種用于指示存儲(chǔ)系統(tǒng)條件的方法,所述存儲(chǔ)系統(tǒng)具有多個(gè)存儲(chǔ)設(shè)備,在所述存儲(chǔ)系統(tǒng)中,能夠利用各種存儲(chǔ)模式來(lái)冗余地存儲(chǔ)數(shù)據(jù),所述方法包括根據(jù)所述多個(gè)存儲(chǔ)設(shè)備中每一個(gè)存儲(chǔ)設(shè)備的未占用的可用存儲(chǔ)量以及數(shù)據(jù)存儲(chǔ)模式來(lái)確定是否是否建議附加存儲(chǔ)容量;以及利用至少一個(gè)條件指示器來(lái)指示所述存儲(chǔ)系統(tǒng)條件,包括指示是否建議附加存儲(chǔ)容量。2.如權(quán)利要求1所述的方法,其中指示是否建議附加存儲(chǔ)容量包括當(dāng)建議附加存儲(chǔ)容量,指示下述條件之一(1)第一條件,其中建議通過(guò)把新的存儲(chǔ)設(shè)備安裝到所述存儲(chǔ)系統(tǒng)中來(lái)附加存儲(chǔ)容量;(2)第二條件,其中建議通過(guò)以大容量存儲(chǔ)設(shè)備來(lái)替換所述存儲(chǔ)系統(tǒng)中的特定存儲(chǔ)設(shè)備來(lái)附加存儲(chǔ)容量。3.如權(quán)利要求1所述的方法,其中指示所述存儲(chǔ)系統(tǒng)條件包括當(dāng)所述存儲(chǔ)系統(tǒng)達(dá)到了沒(méi)有足夠存儲(chǔ)空間來(lái)維持冗余數(shù)據(jù)存儲(chǔ)的故障條件時(shí),則利用所述至少一個(gè)條件指示器來(lái)指示建議附加存儲(chǔ)容量的第一條件;當(dāng)所述存儲(chǔ)系統(tǒng)具有足夠存儲(chǔ)空間來(lái)維持冗余數(shù)據(jù)存儲(chǔ)但接近所述故障條件時(shí),則利用所述至少一個(gè)條件指示器來(lái)指示建議附加存儲(chǔ)容量的第二條件;當(dāng)所述存儲(chǔ)系統(tǒng)具有足夠存儲(chǔ)空間來(lái)維持冗余數(shù)據(jù)存儲(chǔ)并且沒(méi)有接近所述故障條件時(shí),則利用所述至少一個(gè)條件指示器來(lái)指示不建議附加存儲(chǔ)容量的第三條件。4.如權(quán)利要求3所述的方法,其中所述至少一個(gè)指示器是單個(gè)條件指示器。5.如權(quán)利要求4所述的方法,其中所述單個(gè)條件指示器包括多色燈,而且其中每種顏色與不同條件相關(guān)聯(lián)。6.如權(quán)利要求3所述的方法,還包括當(dāng)所述存儲(chǔ)系統(tǒng)從一種條件狀態(tài)向另一種條件轉(zhuǎn)換,則利用所述至少一個(gè)條件指示器來(lái)指示所述轉(zhuǎn)換的事實(shí)。7如權(quán)利要求6所述的方法,其中所述至少一個(gè)條件指示器包括燈,指示所述轉(zhuǎn)換的事實(shí)包括在關(guān)閉狀態(tài)和開啟狀態(tài)之間閃爍所述燈。8.如權(quán)利要求6所述的方法,其中所述至少一個(gè)條件指示器包括燈,并且指示所述轉(zhuǎn)換的事實(shí)包括在兩種不同顏色之間閃爍所述燈。9.如權(quán)利要求3所述的方法,其中所述至少一個(gè)條件指示器包括多個(gè)指示器,其中每個(gè)指示器與不同條件相關(guān)聯(lián)。10.如權(quán)利要求1所述的方法,其中所述存儲(chǔ)系統(tǒng)支持存儲(chǔ)設(shè)備的陣列,所述陣列具有多個(gè)插槽,并且其中指示所述存儲(chǔ)系統(tǒng)條件包括當(dāng)建議附加存儲(chǔ)容量,則指示應(yīng)當(dāng)用附加存儲(chǔ)容量填充所述陣列中的哪個(gè)插槽。11.如權(quán)利要求10所述的方法,其中所述陣列中的每個(gè)插槽都與條件指示器相關(guān)聯(lián),并且其中各條件指示器共同用于指示所述存儲(chǔ)系統(tǒng)條件,包括指示應(yīng)當(dāng)用附加存儲(chǔ)容量填充所述陣列中哪個(gè)插槽。12.如權(quán)利要求10所述的方法,其中指示所述存儲(chǔ)系統(tǒng)條件包括對(duì)于給定的插槽,當(dāng)由于所述存儲(chǔ)系統(tǒng)達(dá)到了沒(méi)有足夠存儲(chǔ)空間來(lái)維持冗余數(shù)據(jù)存儲(chǔ)的故障條件而應(yīng)當(dāng)利用附加存儲(chǔ)容量來(lái)填充所述插槽時(shí),把與所述插槽相關(guān)的條件指示器設(shè)置成第一狀態(tài);當(dāng)由于所述存儲(chǔ)系統(tǒng)有足夠存儲(chǔ)空間來(lái)維持冗余數(shù)據(jù)存儲(chǔ)但接近故障條件而應(yīng)當(dāng)利用附加存儲(chǔ)容量來(lái)填充所述插槽時(shí),把與所述插槽相關(guān)的條件指示器設(shè)置成第二狀態(tài);以及當(dāng)由于所述存儲(chǔ)系統(tǒng)有足夠存儲(chǔ)空間來(lái)維持冗余數(shù)據(jù)存儲(chǔ)并且沒(méi)有接近故障條件而不應(yīng)當(dāng)利用附加存儲(chǔ)容量來(lái)填充所述插槽時(shí),把與所述插槽相關(guān)的條件指示器設(shè)置成第三狀態(tài)。13.如權(quán)利要求12所述的方法,其中每個(gè)條件指示器都是多色燈,并且其中每個(gè)條件與不同顏色相關(guān)聯(lián)。14.如權(quán)利要求13所述的方法,其中所述多色燈是三色燈,其中第一狀態(tài)是紅色;第二狀態(tài)是黃色;以及第三狀態(tài)是綠色。15.如權(quán)利要求10所述的方法,還包括當(dāng)所述存儲(chǔ)系統(tǒng)從一種條件向另一種條件轉(zhuǎn)換,則利用所述至少一個(gè)條件指示器來(lái)指示所述轉(zhuǎn)換的事實(shí)。16.如權(quán)利要求15所述的方法,其中指示所述轉(zhuǎn)換的事實(shí)包括在關(guān)閉狀態(tài)和開啟狀態(tài)之間閃爍所述至少一個(gè)條件指示器。17.如權(quán)利要求15所述的方法,其中指示所述轉(zhuǎn)換的事實(shí)包括在兩種不同顏色之間閃爍所述至少一個(gè)條件指示器。18.如權(quán)利要求11所述的方法,其中所述條件指示器包括用于每個(gè)插槽的前面板和用于照射所述前面板的相關(guān)聯(lián)的燈,所述燈用于指示所述存儲(chǔ)系統(tǒng)條件,包括指示應(yīng)該用附加存儲(chǔ)容量填充所述陣列中的哪個(gè)插槽。19.一種存儲(chǔ)系統(tǒng),包括多個(gè)存儲(chǔ)設(shè)備,在所述多個(gè)存儲(chǔ)設(shè)備中能夠利用不同的數(shù)據(jù)存儲(chǔ)模式來(lái)冗余地存儲(chǔ)數(shù)據(jù);至少一個(gè)條件指示器,用于提供存儲(chǔ)系統(tǒng)條件信息;以及存儲(chǔ)管理器,耦合到所述多個(gè)存儲(chǔ)設(shè)備和所述至少一個(gè)條件指示器,其中所述存儲(chǔ)管理器用于根據(jù)所述多個(gè)存儲(chǔ)設(shè)備中每一個(gè)存儲(chǔ)設(shè)備的未占用的可用存儲(chǔ)量以及數(shù)據(jù)存儲(chǔ)模式來(lái)確定是否建議附加存儲(chǔ)容量;以及利用至少一個(gè)條件指示器來(lái)指示所述存儲(chǔ)系統(tǒng)條件,包括指示是否建議附加存儲(chǔ)容量。20.如權(quán)利要求19所述的存儲(chǔ)系統(tǒng),其中指示是否建議附加存儲(chǔ)容量包括當(dāng)建議附加存儲(chǔ)容量,指示下述條件之一(1)第一條件,其中建議通過(guò)把新的存儲(chǔ)設(shè)備安裝到所述存儲(chǔ)系統(tǒng)中來(lái)附加存儲(chǔ)容量;(2)第二條件,其中建議通過(guò)以大容量存儲(chǔ)設(shè)備來(lái)替換所述存儲(chǔ)系統(tǒng)中的特定存儲(chǔ)設(shè)備來(lái)附加存儲(chǔ)容量。21.如權(quán)利要求19所述的存儲(chǔ)系統(tǒng),其中指示所述存儲(chǔ)系統(tǒng)條件包括當(dāng)所述存儲(chǔ)系統(tǒng)達(dá)到了沒(méi)有足夠存儲(chǔ)空間來(lái)維持冗余數(shù)據(jù)存儲(chǔ)的故障條件時(shí),則利用所述至少一個(gè)條件指示器來(lái)指示建議附加存儲(chǔ)容量的第一條件;當(dāng)所述存儲(chǔ)系統(tǒng)具有足夠存儲(chǔ)空間來(lái)維持冗余數(shù)據(jù)存儲(chǔ)但接近所述故障條件時(shí),則利用所述至少一個(gè)條件指示器來(lái)指示建議附加存儲(chǔ)容量的第二條件;當(dāng)所述存儲(chǔ)系統(tǒng)具有足夠存儲(chǔ)空間來(lái)維持冗余數(shù)據(jù)存儲(chǔ)并且沒(méi)有接近所述故障條件時(shí),則利用所述至少一個(gè)條件指示器來(lái)指示不建議附加存儲(chǔ)容量的第三條件。22.如權(quán)利要求21所述的存儲(chǔ)系統(tǒng),其中所述的指示使用單個(gè)條件指示器來(lái)完成。23.如權(quán)利要求22所述的存儲(chǔ)系統(tǒng),其中單個(gè)條件指示器包括多色燈,而且其中每種顏色與不同條件相關(guān)聯(lián)。24.如權(quán)利要求21所述的存儲(chǔ)系統(tǒng),其中所述存儲(chǔ)管理器還確定所述存儲(chǔ)系統(tǒng)是否從一種條件向另一種條件轉(zhuǎn)換,并且如果所述存儲(chǔ)系統(tǒng)在轉(zhuǎn)換,則利用所述至少一個(gè)條件指示器來(lái)指示所述轉(zhuǎn)換的事實(shí)。25.如權(quán)利要求24所述的存儲(chǔ)系統(tǒng),其中所述存儲(chǔ)管理器通過(guò)在關(guān)閉狀態(tài)和開啟狀態(tài)之間閃爍所述至少一個(gè)條件指示器來(lái)指示所述轉(zhuǎn)換的事實(shí)。26.如權(quán)利要求24所述的存儲(chǔ)系統(tǒng),其中所述存儲(chǔ)管理器通過(guò)在兩種不同顏色之間閃爍所述至少一個(gè)條件指示器來(lái)指示所述轉(zhuǎn)換的事實(shí)。27.如權(quán)利要求21所述的存儲(chǔ)系統(tǒng),其中使用多個(gè)條件指示器完成所述指示,其中每個(gè)條件指示器與不同條件相關(guān)聯(lián)。28.如權(quán)利要求19所述的存儲(chǔ)系統(tǒng),還包括多個(gè)存儲(chǔ)設(shè)備插槽,用于安裝包括所述多個(gè)存儲(chǔ)設(shè)備的各種存儲(chǔ)容量的存儲(chǔ)設(shè)備,其中,指示所述存儲(chǔ)系統(tǒng)條件還包括當(dāng)建議附加存儲(chǔ)容量,利用所述至少一個(gè)條件指示器來(lái)指示應(yīng)當(dāng)使用附加存儲(chǔ)容量來(lái)填充哪個(gè)插槽。29.如權(quán)利要求28所述的存儲(chǔ)系統(tǒng),其中每個(gè)插槽都與條件指示器相關(guān)聯(lián),并且其中各所述條件指示器用于共同指示所述存儲(chǔ)系統(tǒng)條件,包括指示應(yīng)當(dāng)用附加存儲(chǔ)容量填充哪個(gè)插槽。30.如權(quán)利要求29所述的存儲(chǔ)系統(tǒng),其中對(duì)給定的插槽,當(dāng)由于所述存儲(chǔ)系統(tǒng)達(dá)到了沒(méi)有足夠存儲(chǔ)空間來(lái)維持冗余數(shù)據(jù)存儲(chǔ)的故障條件而應(yīng)當(dāng)利用附加存儲(chǔ)容量來(lái)填充所述插槽時(shí),所述存儲(chǔ)管理器把與所述插槽相關(guān)的條件指示器設(shè)置成第一狀態(tài);當(dāng)由于所述存儲(chǔ)系統(tǒng)有足夠存儲(chǔ)空間來(lái)維持冗余數(shù)據(jù)存儲(chǔ)但接近故障條件而應(yīng)當(dāng)利用附加存儲(chǔ)容量來(lái)填充所述插槽時(shí),所述存儲(chǔ)管理器把與所述插槽相關(guān)的條件指示器設(shè)置成第二狀態(tài);以及當(dāng)由于所述存儲(chǔ)系統(tǒng)有足夠存儲(chǔ)空間來(lái)維持冗余數(shù)據(jù)存儲(chǔ)并且沒(méi)有接近故障條件而不應(yīng)當(dāng)利用附加存儲(chǔ)容量來(lái)填充所述插槽時(shí),所述存儲(chǔ)管理器把與所述插槽相關(guān)的條件指示器設(shè)置成第三狀態(tài)。31.如權(quán)利要求30所述的存儲(chǔ)系統(tǒng),其中每個(gè)條件指示器都是多色燈,并且其中每個(gè)條件與不同顏色相關(guān)聯(lián)。32.如權(quán)利要求31所述的存儲(chǔ)系統(tǒng),其中多色燈是三色燈,并且其中第一狀態(tài)是紅色;第二狀態(tài)是黃色;以及第三狀態(tài)是綠色。33.如權(quán)利要求28所述的存儲(chǔ)系統(tǒng),其中所述存儲(chǔ)管理器確定所述存儲(chǔ)系統(tǒng)是否從一種條件向另一種條件轉(zhuǎn)換,并且如果所述存儲(chǔ)系統(tǒng)在轉(zhuǎn)換,則利用所述至少一個(gè)條件指示器來(lái)指示所述轉(zhuǎn)換的事實(shí)。34.如權(quán)利要求33所述的存儲(chǔ)系統(tǒng),其中所述存儲(chǔ)管理器通過(guò)在關(guān)閉狀態(tài)和開啟狀態(tài)之間閃爍所述至少一個(gè)條件指示器來(lái)指示所述轉(zhuǎn)換的事實(shí)。35.如權(quán)利要求33所述的存儲(chǔ)系統(tǒng),其中所述存儲(chǔ)管理器通過(guò)在兩種不同顏色之間閃爍所述至少一個(gè)條件指示器來(lái)指示所述轉(zhuǎn)換的事實(shí)。36.如權(quán)利要求29所述的存儲(chǔ)系統(tǒng),其中所述指示器包括用于每個(gè)插槽的前面板和用于照射所述前面板的相關(guān)聯(lián)的燈,用于指示所述存儲(chǔ)系統(tǒng)條件,包括指示應(yīng)當(dāng)用附加存儲(chǔ)容量填充所述陣列中的哪個(gè)插槽。全文摘要存儲(chǔ)系統(tǒng)條件指示器及其使用方法,用于提供表示一組存儲(chǔ)設(shè)備的操作條件的可視顯示。根據(jù)可用存儲(chǔ)容量和用于冗余存儲(chǔ)數(shù)據(jù)的容量來(lái)定義各種操作條件。一個(gè)或者多個(gè)指示器用于表示所述一組存儲(chǔ)設(shè)備的操作條件。所述指示器可以用于指示是否建議附加存儲(chǔ)容量,以及在存儲(chǔ)陣列中應(yīng)當(dāng)使用附加存儲(chǔ)容量更新該陣列中的哪個(gè)插槽。文檔編號(hào)G11B27/11GK101872319SQ20101011888公開日2010年10月27日申請(qǐng)日期2005年11月4日優(yōu)先權(quán)日2004年11月5日發(fā)明者杰弗里·S·巴拉爾申請(qǐng)人:數(shù)據(jù)機(jī)器人技術(shù)公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1