專利名稱::用于可擴展網絡附接存儲系統的裝置和方法
技術領域:
:本發明涉及數據存儲,更具體地說,涉及用于可擴展的網絡附接存儲(NAS,NetworkAttachedStorage)系統的裝置和方法。
背景技術:
:隨著因特網商務和以網絡為中心的計算日益流行,企業和其他組織正變得越來越依賴于數據。為了處理所有這種信息,已開發了各種類型的存儲系統,例如存儲陣列網絡(SAN)和網絡附接存儲(NAS)。SAN是基于存儲和檢索數據塊的概念開發的。相反,NAS系統卻是基于存儲和檢索文件的概念。一般的NAS系統是單獨的單一(monolithic)節點,該節點執行協議終止、維護文件系統、管理盤空間分配、并且包括許多盤,所有這些都由位于某一位置的一個處理器管理。協議終止是將通過網絡從客戶接收到的TCP/IP上的NFS或CIFS請求轉換為由系統所依賴的操作系統定義的任何內部處理器間通信(IPC)機制。某些NAS系統供應商(例如,CA的NetworkApplianceofSunnyvale)上市了可以處理NFS和CIFS請求的NAS系統,從而使得Unix用戶和Windows用戶分別可以訪問文件。利用這些類型的NAS系統,協議終止節點包括這樣的功能將NFS或CIFS請求轉變為在該NAS系統中使用的任何通信協議。文件系統維護存儲在該文件系統中的所有文件的日志。響應于來自終止節點的請求,文件系統按需檢索或存儲文件以滿足該請求。文件系統也負責管理存儲在該系統的各種存儲盤中的文件,并且負責鎖定正被訪問的文件。一般只要打開文件就執行文件鎖定,而不管該文件是正被寫入還是讀出。例如,為了防止第二個用戶對當前正由第一個用戶進行寫入的文件執行寫入,該文件被鎖定。在讀期間也可以鎖定文件,以防止該文件正被讀取時另一個終止節點企圖寫或修改該文件。盤控制器承擔許多職責,例如訪問盤、管理用于備份目的盤上的數據鏡像、以及監控盤故障和/或替換。存儲盤一般以多種不同的公知配置之一來布置,例如已知級別的獨立磁盤冗余陣列(即,RAID1或RAID5)協議終止節點和文件系統通常被實現在運行Windows、Unix或Linux操作系統的計算機服務器中的微代碼或軟件中。然后,計算機、盤控制器和存儲盤陣列被一起組裝到機架(rack)中。這樣,一般的NAS系統就組裝為獨立的機架系統并推向市場。當前的NAS系統有許多問題。首先,大多NAS系統都是不可擴展的。每個NAS系統機架維護其自身的文件系統。在企業的信息技術基礎設施中,一個機架的文件系統不能與其他機架的文件系統互操作。因此,一個機架的文件系統就不能訪問另一個機架的盤空間,反之亦然。因此,NAS系統的性能一般受限于單個機架系統的性能。某些NAS系統是冗余的。但是,即使這些系統也未很好地擴展,并且一般受限于最多只有兩個或四個節點。由于前述問題,用于測量NAS系統性能的基準(例如,訪問率和全局響應時間)相對貧乏,或者甚至是人為的。常常并行使用這些獨立系統中的數個系統,以獲得聚合的性能。但是,這并不是真正的擴展,因為這些聚合的系統一般并不是協調的。單獨的NAS系統也存在許多缺陷。單獨的NAS系統在任何同一時刻可以訪問系統的用戶數量、在同一時刻可以被供應的文件數量以及數據吞吐量(即,速率或在所請求的文件被供應之前的等待時間)方面都存在限制。當在NAS系統中存儲有許多文件、并且存在許多用戶時,極大數量的系統資源專門用來管理開銷功能,例如,鎖定正由用戶訪問的具體文件。這種開銷極大地妨礙了系統的整體性能。現有NAS解決方案的另一個問題在于不能調整系統以適合企業的具體工作量。在單一系統中,無論工作量如何,可以被應用于整個解決方案的處理能力是固定的。但是,某些工作量需要比其他工作量更寬的帶寬,某些工作量每秒需要更多的I/O,某些工作量需要非常大數量的文件而只需要適度的帶寬和用戶,還有其他的工作量需要非常大的總容量而只需要有限的帶寬和有限總數的文件。現有系統一般在針對這些各種工作量如何可以優化系統方面非常不靈活。它們一般要求同等擴展所有組件來滿足可能僅僅是工作量的一個方面的需求,例如每秒的I/O數量。另一個問題是高度可用性。這類似于前述的可擴展性問題,其中兩個或多個節點可以在同一時刻訪問相同的數據,但是這是在發生故障期間接管的情況中。現今,支持冗余的系統一般以1對1(1:1)模式工作,由此,一個系統只可以備份一個其他系統。現有NAS系統一般不支持用于多個其他系統的冗余。因此,需要這樣的NAS體系結構在需要提供可擴展性、提高性能并且提供高可用性冗余時,該NAS體系結構使得多個終止節點、文件系統和盤控制器節點能夠輕易地被添加到系統中。
發明內容為了實現前述需求,根據本發明的目的,公開了用于可擴展的網絡附接存儲系統的裝置和方法。該裝置包括可擴展的網絡附接存儲系統,該網絡附接存儲系統包括一個或多個終止節點;用于維護文件系統的一個或多個文件服務器節點;用于分別訪問存儲盤的一個或多個盤控制器節點;以及耦合所述一個或多個終止節點、文件服務器節點和盤控制器節點的交換結構。一個或多個終止節點、文件服務器節點和盤控制器節點可以按需擴展來滿足用戶的需求。該方法包括接收來自客戶的連接請求;基于預定的標準,響應于該連接請求,在多個終止節點中選擇終止節點來建立到客戶的連接;通過抽取由在連接期間從客戶接收到命令請求定義的文件句柄,在選擇出的終止節點處終止該命令請求;向多個文件服務器節點中選擇出的文件服務器節點轉發命令請求;在選擇出的文件服務器節點處解釋命令請求,并且訪問多個盤控制器節點中的適當的盤控制器節點;以及通過適當的盤控制器節點訪問存儲盤,并且向客戶供應訪問的數據。終止節點、文件服務器節點和盤控制器節點的數目可以按需擴展來滿足用戶的需求。圖1是根據本發明具有可擴展體系結構的NAS系統的方框圖。圖2A和圖2B是圖示了本發明的NAS系統的負載均衡器的操作的流程圖。圖3是圖示了本發明的NAS系統中終止節點的操作的流程圖。圖4A到圖4C是圖示了根據本發明NAS系統如何處理來自客戶的請求的流程圖。圖5是圖示了根據本發明一種實施方式的NAS系統的實際實現方式的方框圖。具體實施例方式參考圖1,圖1圖示了根據本發明具有可擴展體系結構的NAS系統的方框圖。NAS系統10包括負載均衡器12、一個或多個終止節點14a到14x、一個或多個文件服務器節點16a到16y、一個或多個盤控制器節點18a到18z、以及多個盤20。交換結構22用來互連終止節點14a到14x、文件服務器節點16a到16y和盤控制器節點18a到18z。在替換實施方式中,存儲陣列網絡(未示出)可以用在盤控制器節點18a到18z與盤20之間。NAS系統通過標準網絡互連連接到網絡24。網絡24可以是任何類型的包括多個服務器和用戶的計算網絡,其中所述多個服務器和用戶運行諸如Windows、Unix、Linux或者它們的組合之類的各種操作系統。負載均衡器12從網絡24中的用戶接收訪問存儲在NAS系統10中的文件的請求。負載均衡器12執行的主要功能是在一個或多個終止節點14a到14x之間均衡活動連接的數目。換句話說,負載均衡器12動態分配用戶連接,以使得沒有一個終止節點14由于處理太多的連接而成為“瓶頸”。例如,在具有3個終止節點14的系統10中,如果第一、第二和第三終止節點14分別處理七(7)個、十一(11)個和三(3)個連接,則負載均衡器12將向第三終止節點14轉發接下來的連接,這是由于其正處理最少數目的連接。如果一個終止節點14發生故障,或者新的終止節點14添加到NAS系統10中,則負載均衡器12還在剩余的終止節點14之間重新分發連接。負載均衡器12還可以使用其他標準來在多個終止節點14之間分發負載。例如,負載均衡器12可以基于CPU的利用、存儲器的利用和連接的數目,或者它們的組合來分發負載。參考圖2A和圖2B,在其中圖示了本發明的負載均衡器12的操作的流程圖。流程圖2A圖示了負載均衡器12在維護NAS系統10中可用終止節點14的當前列表時的操作序列。圖2B圖示了負載均衡器12在可用終止節點的當前列表中的終止節點之間對連接的負載進行均衡時的操作序列。在圖2A中,負載均衡器12順序通過下面的例程。最初,負載均衡器12確定是否有新的終止節點14已被標識為能工作的(判決菱形框30),如果是,則更新可用終止節點14的列表,以包括新的終止節點14(框32)。不管新的終止節點14是否已添加,接下來負載均衡器12都要確定是否有任何可用終止節點14是不能工作的(判決菱形框34)。如果是,則從可用列表移除不能工作的終止節點(框36)。不管不能工作的終止節點14是否已被標識出,總是重復前述序列(控制返回到菱形框30)。這樣,負載均衡器12持續更新NAS系統10中可用終止節點14的列表。在圖2B中,圖示了用于在NAS系統10的可用終止節點14之間對連接負載進行均衡的序列。最初,負載均衡器12確定其是否已接收到了新的連接(判決菱形框40)。如果是,則負載均衡器12查明系統10中每個可用終止節點14的當前負載(框42)。然后,具有最小當前負載的終止節點14被標識出(框44)。然后,新的連接被分配給具有最小負載的終止節點14(框46)。針對后續請求,重復前述序列。這樣,通過在NAS系統10的終止節點14之間均勻地分發連接負載,負載均衡器12就能夠防止瓶頸。如前所述,連接數目僅僅是負載均衡器12可以使用的一個標準。也可以使用諸如CPU的利用和存儲器的利用之類的其他標準。對于這些實施方式,負載均衡器12在向終止節點14分配新的連接時可以單獨考慮這些其他標準或者考慮它們的組合。應當注意,一旦連接被分配給了某個終止節點14,后續接收到的與該連接相關聯的請求和分組通常都被發送到該相同的終止節點14。終止節點14每個都執行許多功能。終止節點14終止通過負載均衡器12接收到的來自網絡24中的客戶的連接請求。所接收到的連接請求一般是TCP/IP或UDP/IP協議消息。終止包括將上層協議(通常是NFS或CIFS)轉換或轉變成由交換結構22使用的通信協議。終止節點14還基于所接收到的NFS或CIFS請求的內容來確定哪個文件服務器節點16將接收轉變后的請求。終止節點14在接收到NFS請求時還終止XDR和RPC消息,用CIFS消息維護額外的狀態信息,并且能夠檢測任何服務器節點16的故障。XDR是外部數據表示,并且RPC是遠程過程調用。這些是TCP與NFS之間的協議層。XDR創建了標準的數據格式,以使得不同的操作系統可用以共同的方式通信,而RPC允許一臺機器運行在遠程機器中的過程。在CIFS中,文件句柄不是全局的,即,文件句柄是專用于連接的。這意味著對于相同的文件,CIFS的每個連接可以具有不同的文件句柄。由于希望所有的TCP/IP終止節點14不管連接如何,對于由哪個節點16負責給定的文件都作出相同的決定,所以不得不將CIFS句柄轉變為在內部用于該文件的句柄。可用以多種已知的方式檢測故障,例如,通過在節點16和節點14之間發送出周期性的消息和確認。選擇文件服務器節點16a到16y可能取決于許多因素。一個這種因素是由每個文件服務器節點16所供應的文件句柄的范圍。當接收到請求時,終止節點基于該請求所定義的文件句柄來路由該請求。例如,文件服務器節點16a可以分配有文件句柄范圍100至499,文件服務器節點16b可以分配有文件句柄范圍500至699,并且文件服務器節點16c可以分配有文件句柄范圍700至999等。無論何時接收到請求,負責的終止節點14將基于由該請求所定義的文件句柄來向適當的文件服務器節點16轉發該請求。應當注意,這里提到的文件范圍僅僅是示例性的,決不應該將它們解釋為以某種方式限制本發明。在其他實施方式中,可以預分配某些文件服務器節點16來處理某些類型的文件。例如,如果指定文件服務器節點16之一來訪問MPEG文件,則處理該請求的終止節點14自動將任何MPEG請求路由至該指定的MPEG文件服務器節點16。可以具有專用文件服務器節點16的其他類型的文件的示例包括“.doc”,由htm或html標識出的web頁面,或者由.jpg、.gif、.bmp標識出的圖像等。參考圖3,圖3是圖示出了終止節點14的操作的流程圖。當接收到來自負載均衡器12的請求時(框50),負責的終止節點14就終止在IP之上運行的TCP或UDP協議(框52)。此后,終止節點14確定該請求是NFS還是CIFS(判決菱形54)。如果是NFS,則終止節點14終止XDR和RPC(框56)。在XDR和RPC終止之后,或者如果該請求是CIFS,則接下來終止節點14抽取由該請求定義的文件句柄(框58)。然后,終止節點14基于所抽取的文件句柄,確定或映射適當的文件服務器節點16來發送該請求。對于CIFS請求,這種映射是對每個連接進行的。對于NFS請求,這種映射是對每個系統進行的(框60)。換言之,給定的文件句柄可能隱含著給定的CIFS連接的一個文件,并且相同的文件句柄可能隱含著不同的CIFS連接的不同文件。因此,每個CIFS連接必須保持其自己的映射,該映射或者是文件句柄到節點16的映射,或者是文件句柄到文件句柄的內部版本的映射,其中所述文件句柄的內部版本在整個NAS系統中,被一致地映射到文件。另一方面,對于整個NAS系統,NFS文件句柄已是一致的,即,用于一個NFS連接的文件句柄到文件的映射對所有NFS連接是完全相同的。終止節點14將請求轉換成NFS和CIFS二者公用的格式(框62),并且然后向適當的文件服務器節點16發送轉換后的請求(框64)。對于接收到的后續請求,重復前述序列。文件服務器節點16還在NAS系統10內執行許多功能。首先,每個文件服務器節點16實現其自身的文件系統。因此,如果必要,每個文件服務器節點16負責通過盤控制器18a~18z檢索文件以服務所接收到的請求。每個文件服務器節點16還負責終止從終止節點14和盤控制器節點18接收到的請求。根據一種實施方式,文件服務器節點16實現“聯邦式的”(federated)或“松散耦合的”文件系統。在NAS系統10中,每個文件服務器節點16并非必須與其他文件服務器節點16通信。這使得文件服務器節點16可擴展,因為每個文件服務器節點16并非必須監控或者跟蹤其他文件服務器節點16正在訪問的文件。每個文件服務器節點16在試圖訪問文件之前不需要檢查或者從其他文件服務器節點16“請求許可”。這種布置極大地減少了NAS系統10中的管理開銷。各個文件服務器節點16也負責它們的文件級別的名稱空間范圍。換言之,各個文件服務器節點16之間名稱空間的職責劃分的粒度是在文件級別。但是,相同名稱空間區域的各個文件服務器節點16之間的工作的劃分可以動態變化的。名稱空間中的任何改變都傳播回終止節點14,以使得它們知道哪個文件服務器節點16負責來自用戶的具體請求(與具體的文件相關聯)。根據一種實施方式,一旦在文件服務器節點16之間創建或遷移了名稱空間,文件服務器節點16就彼此通信。例如,如果一個文件服務器節點具有太大的名稱空間,并且處理其名稱空間中的所有請求變得太忙,則那個名稱空間中的部分或全部可以遷移到另一個文件服務器節點16。每個文件服務器節點16維護一個表,該表指示由文件服務器節點16a到16y中的每一個所管理的名稱空間。當名稱空間遷移時,更新每個文件服務器節點16的表。類似地,當名稱空間被添加到NAS系統10時,再次更新每個文件服務器節點16的表。應當注意,沒必要或甚至不希望每個節點16都保持名稱空間的完整的表。因此,在替換實施方式中,每個節點16了解其自己的名稱空間,即,該節點當前所負責的所有文件,加上在該節點16上曾創建的可能已移動到不同節點的所有文件的位置。應當注意,應當使終止節點14知道當前的名稱空間映射,以使得它們可以相應地引導所終止的請求。如果終止節點14具有過時的名稱空間映射,則它可能向錯誤的服務器節點16發送請求。然后,那個服務器節點16可能不得不向發送請求的終止節點14告知名稱空間的改變,并且終止節點14將不得不向正確的服務器節點16重發請求。因此,每個服務器節點16了解哪個服務器節點16創建了文件,該文件已經移動到了何處。考慮這樣一個示例,在該示例中,服務器節點16a創建在范圍0-999中的文件句柄,服務器節點16b創建在范圍1000-1999中的文件句柄,并且服務器節點16c創建在范圍2000-2999中的文件句柄。所有終止節點14都知道這種靜態配置,并且相應地引導文件請求。假定服務器節點16a創建了具有文件句柄321的文件“A”。終止節點14都知道當它們發現對文件句柄321的引用時,由于該句柄落入到范圍0-999中,因此被發送到服務器節點16a。現在假定文件“A”由于負載均衡而從16a移動到了16b。如果對文件句柄321的請求來到終止節點14a中,則終止節點14a將向服務器節點16a發送請求。然而,服務器節點16a知道該文件句柄321已經移動到了服務器節點16b。因此,服務器節點16a向終止節點14a發送回消息,告知該終止節點文件句柄321現在正由服務器節點16b處理。然后,終止節點14a將向服務器節點16b發送請求,并且將該異常更新到其映射表中,以用于所有對文件句柄321的后續請求。然后,所有對文件A的后續請求都由終止節點14a直接轉發到服務器節點16b。再次假定相同的文件“A”從服務器節點16b移動到16c。當接收到對文件A的另一個請求時,終止節點14a注意到其映射表中用于文件句柄321的異常,并向服務器節點16b發送該請求。服務器節點16b知道文件句柄321已移動到了某個其他節點,因此就回答終止節點14a,讓其移除該異常。然后,終止節點14a根據默認的映射向服務器節點16a發該請求。服務器節點16a答復終止節點14a,告知終止節點14a應當向服務器節點16c發送對文件句柄321的這個和所有后續請求。所有后續請求都由服務器節點16c處理,直到文件A移動到另一個服務器節點并且重復上述更新序列之后。注意到這一點是有用的利用這種方案,不是所有文件的狀態都必須自動被更新。在任何時刻,只有一個服務器節點16需要知道具體文件位于何處。在上述示例中,服務器節點16a了解文件句柄321的位置。由于不需要自動分發這種信息,所以本發明提供了一種高度可擴展的NAS解決方案。對于該方案另一個值得注意的方面在于創建文件句柄的服務器節點16永久負責存儲涉及該文件句柄的信息。這樣要求使得系統10在諸如電源故障之類的災難性事件之后仍知道所有文件位于何處。由于在其中創建文件的服務器節點(在文件“A”的示例中是節點16a)是該文件位于何處的唯一權威,所以該服務器節點也是負責向穩定存儲裝置(stablestorage)中寫入這種信息的唯一服務器節點。在替換實施方式中,可以以多種不同于上述異常處理方案的方式實現對映射方案的更新。例如,在映射異常發生時,節點16可以在后臺向終止節點14傳播映射異常,而基本上不干擾兩組節點14和節點16之間的正常通信。如果該傳播已完成,則不存在重定向。如果傳播尚未完成,則可能存在某些重定向。總的說來,由于這種重定向一般不發生(這是因為文件未曾移動或者異常條目已在節點14中),或者具有一級間接(這是因為雙移動相當少),所以總的性能影響可以忽略。“重定向”發生于在上述示例的第一部分中節點16a告知節點14a文件321位于節點16b中時。而“傳播”發生于在節點14甚至試圖訪問文件321之前節點14被告知文件321已移動到了節點16b時。這種傳播將有效地消除前述的重定向。因為重定向可能具有由于用于在節點14和節點16之間來回傳送額外消息的時間和處理需求而導致的某些性能影響,所以期望避免重定向。但是,在文件已從16a移動到了16b時到每個節點14已更新它們的映射表來反映該移動之間存在時間窗口。如果在這種時間窗口期間文件請求從網絡到來,則有兩種可能的方法處理這種情況(i)阻塞所有節點14訪問正在移動的文件,直到該移動已完成,并且所有節點14中的映射表都已更新;或者(ii)在包括時間窗口期間在內的任何時間都允許節點14訪問該文件,并且允許用重定向處理這種情形,其中在所述時間窗口中節點14具有關于該文件的當前位置在何處的不精確信息。第二個選項是處理該問題的實用方法,并且從性能方面來說是一種合理的解決方案,這是因為重定向的開銷并不是特別大。另外,對于映射異常從節點16到節點14的傳播,在節點14具有一個文件的錯誤的位置信息時發生對該文件的訪問的可能性相當小。這進一步減小了在不同的節點16之間移動文件的性能影響。異常信息也可以保存在中央位置,從而每個服務器節點16僅僅需要知道它當前負責的文件。如果服務器節點得到了一個對其當前所不具有的文件的文件句柄的請求,則該服務器節點將使終止節點14向中央數據庫查詢用于該文件當前位置的異常。這樣做的優點在于服務器節點16僅僅需要保持它們具有的文件的信息,而這些信息是無論如何都要求它們維護的。根據另一種實施方式,文件服務器節點16可以被配置來緩存最近和/或最常訪問的文件。維護緩存拷貝的優點在于文件服務器可以立即供應這些文件,而沒有訪問盤20的延遲。文件可以基于時間或空間位置原理、或者它們的組合被緩存。可以使用用于正被訪問的這類文件的任何適當的替換算法(例如,最近使用或者先進先出)來替換緩存的文件。應當注意,為了冗余目的,文件服務器節點16彼此通信來檢測故障。但是,這種通信相對不重要,并且不隨系統10中的負載量而變化。根據各種實施方式,文件服務器節點16可以實現動態分發文件系統(例如CODA),或集群文件系統。至于更多的關于CODA的信息,請參見例如SchoolofComputerScience,CarnegieMelloUniversity的PeterJ.Braam的“TheCodaDistributionFileSystem”,通過參考其被結合于此。可以使用的其他文件系統例如包括UFS(Unix文件系統)或AFS(Andrew文件系統)。根據另一種實施方式,文件服務器節點16每個都能夠根據多種可能的鎖定語義來鎖定其正訪問的文件。例如使用獨占鎖定,被一個文件服務器節點16訪問的文件的訪問會把其他文件服務器節點16的讀和寫企圖都鎖在外面。另外,如果一個文件服務器節點16正寫一個文件,則它將在該文件上加鎖來防止第二個客戶寫那個文件。但是,讀訪問可能被準許。最后,如前所述,可配置或優化各個文件服務器節點16來處理特定類型的請求。對于MPEG示例,可優化負責的文件服務器節點16,以基于MPEG文件中的所有幀都將需要被供應的假設,從盤20預取數據塊。在另一個示例中,如果文件用于數據庫索引,則一種優化可以是提供更多的緩存存儲器。由于在文件的相同位置上有活動突發的情況下,數據訪問模式可能是隨機的,所以這會減少預取的發生。在另一個包括日志文件的示例中,可以提供單個讀緩存和相對大量的寫緩存,這是由于數據主要是只寫的,并且在錯誤恢復期間才是只讀的。在另一個示例中,通常小的web類型的文件可以通過使用盤上的塊布局進行優化,這種塊布局相對于寫而言對讀進行了優化,相對于大文件而言對小文件進行了優化。應當注意,可以實現無數種其他特定的優化,并且上面提供的那些優化僅僅是示例性的,而決不應解釋為限制。盤控制器節點18分別負責管理盤20。同樣,盤控制器節點18負責文件鏡像、再定位和其他盤相關的活動,例如那些與無論在系統10中使用何種級別的RAID都相關的活動。另外,盤控制器節點18終止從文件服務器節點16接收到的任何請求,虛擬化(virtualize)物理盤空間、訪問合適的存儲塊來取回所請求的文件,并且充當數據塊服務器。盤控制器節點18也監控它們的盤20故障和替換,并且為了備份目的執行存儲在盤中的數據的鏡像。如前所述,可以以任何類型的配置來布置盤20,例如RAID1。例如,如果盤控制器節點18實現RAID1,則它們將在兩個或更多個物理盤之間鏡像所有數據,即,當寫發生時,每個盤控制器節點18都將創建兩個拷貝,而當讀發生時,將只讀這些拷貝之一。另一方面,利用這種實現方式,服務器節點16認為其正在寫單個、標準的盤。但是,實際上它是在對節點18在物理盤空間中實現的虛擬盤執行寫。換言之,存儲的虛擬視圖不同于物理實現。在另一個示例中,考慮360G字節的大文件系統。當前,這個大小的單個盤是不可行的。由于文件系統一般不能跨越多個盤,所以運行在服務器節點16中的文件系統必須看到至少360G字節的盤。因此,盤控制器節點18不得不把多個物理盤邏輯地連接到一起,以向服務器節點16呈現所期望的盤空間。在替換實施方式中,可以使用其他類型的存儲介質,例如電磁帶、CD-ROM或者基于硅的存儲芯片。交換結構22包括多個交換機。在各種實施方式中,交換結構可以包括光纖信道交換機、以太網交換機或者它們的組合。類似地,在交換結構中可以使用多種不同的通信協議。例如,運行在以太網或光纖信道之上的TCP/IP或FCP可以用作穿過交換結構22的通信協議。在一種實施方式中,可以使用專門為NAS系統設計的協議,在這里稱作“ABC”協議。至于“ABC”協議的更詳細的解釋,請參見2002年12月6日提交的題為ApparatusandMethodforaLightweight,Reliable,Packed-BasedTransportProtocol的美國專利申請(序列號為No.10/313,305,律師案卷號為ANDIP018),該專利申請被轉讓給了相同的受讓者,并且為了一切目的通過參考結合于此。參考圖4A到圖4C,這些示了根據本發明NAS協議10如何處理來自客戶的請求的流程圖。如圖4A所示,當網絡24中的客戶希望訪問NAS系統10時,該客戶通過網絡24發起連接(框102)。響應于此,如上所述,負載均衡器12選擇終止節點14(框104)。所選擇的終止節點14建立到該客戶的連接(框106)。然后,客戶向所選擇的終止節點14發送NFS/CIFS命令(框108),該終止節點終止TCP/IP請求,并且抽取該NFS/CIFS命令(框110)。如圖4B所述,所選擇的終止節點14執行任何必須的虛擬到真實文件地址的轉變(框112),并且然后確定哪個文件服務器節點16應接收該請求。如前所述,通常基于請求的內容選擇文件服務器節點16(框114)。所選擇的文件服務器節點16解釋NFS/CIFS命令,并且訪問適當的盤控制器節點18(框116)。此后,盤控制器節點18訪問適當的盤20,并且向所選擇的文件服務器節點16提供所請求的文件(框118)。最后,如圖4C所示,文件服務器節點16向所選擇的終止節點14提供文件(框120),接下來該終止節點14又通過網絡24向客戶提供該文件(框122)。參考圖5,圖5是圖示了根據本發明一種實施方式的NAS系統的實現方式的方框圖。NAS系統200包括一對負載均衡器12a和12b、一對通用節點202a和202b、多個終止節點14a到14c、多個文件服務器節點16a到16c、多個盤控制器節點18a到18c和分別關聯到盤控制器節點18a到18c的多個盤20。本實施方式的交換結構22包括兩個G比特以太網交換機204。為了高性能而在上面列舉的每個元件之間提供有冗余連接,并且這些冗余連接在連接之一癱瘓時作為備份。“通用節點202”負責管理系統。例如,當管理員登錄到文件服務器來為用戶設置權限或者建立用戶訪問控制時,管理員必須通過系統200中的節點完成這些任務。這可以由系統中的任何節點處理,但是如果存在專用的節點(或者為了冗余,兩個節點),則這使得實現更為容易。基本上通用節點202負責系統配置和管理。它們不參與文件訪問的數據路徑。它們可以用于確定各個節點發生故障的時間、用于實現數據從一個節點16移動到另一個節點的策略,所有這些都不影響性能。在這種實施方式中,TCP/IP用于網絡24中的用戶與終止節點14之間的通信。ABC協議用于終止節點14和文件服務器節點16之間的通信。ABC上的SCSI用于文件服務器節點16和盤控制器節點18之間的通信。最后,光纖信道上的SCSI用于盤控制器節點18和盤20之間的通信。在本發明的一個實施方式中,負載均衡器12a和12b可以實現在在一個或多個計算機中執行的軟件或微代碼中。在替換實施方式中,負載均衡器12a和12b可以實現于這樣的硬件系統中該硬件系統包括一個或多個專用邏輯芯片、諸如現場可編程邏輯器件之類的可編程邏輯器件或者它們的組合。類似地,終止節點14和文件服務器節點16都可以實現在計算機中,例如服務器、專用硬件、可編程邏輯或者它們的組合。此外,終止節點14和文件服務器節點16中的一個或多個可以實現在單個CPU或多個CPU中,并且交換結構可以由(一個或多個)CPU間或CPU內通信機制替換。在本發明的NAS系統中,終止節點14、文件服務器節點16和盤控制器節點18每個都可獨立地擴展。如果一類節點變得過載,則那種類型的額外的節點可以添加到系統,直到解決了問題。應當認為上述本發明的實施方式是解釋性的,而不是限制性的。本發明不應受限于這里給出的細節,而是可以在所附權利要求的范圍和等同物中作出修改。權利要求1.一種裝置,包括可擴展的網絡附接存儲系統,所述網絡附接存儲系統包括一個或多個終止節點;用于分別維護文件系統的一個或多個文件服務器節點;用于分別訪問存儲盤的一個或多個盤控制器節點;和耦合所述一個或多個終止節點、文件服務器節點和盤控制器節點的交換結構,其中所述一個或多個終止節點、文件服務器節點和盤控制器節點可以按需添加到所述可擴展的網絡附接存儲系統,或者從所述可擴展的網絡附接存儲系統刪除。2.如權利要求1所述的裝置,還包括被配置為耦合到所述終止節點的負載均衡器,所述負載均衡器被配置為在所述一個或多個終止節點之間均衡連接的負載。3.如權利要求2所述的裝置,其中,所述負載均衡器基于一個或多個下面的標準來在所述一個或多個終止節點之間均衡連接的負載每個終止節點的連接的數量;所述終止節點的利用;存儲器的利用;或它們的組合。4.如權利要求2所述的裝置,其中,所述負載均衡器還被配置為在所述終止節點可能被添加到所述可擴展的網絡附接存儲系統或者從所述可擴展的網絡附接存儲系統刪除時維護所述終止節點的當前列表。5.如權利要求2所述的裝置,其中,所述負載均衡器還被配置為按照所接收到的請求,將與某一連接相關聯的所有請求都轉發到相同的終止節點。6.如權利要求1所述的裝置,其中,所述一個或多個終止節點中的每個都被配置為在接收到請求時終止所述請求。7.如權利要求6所述的裝置,其中,所述請求是運行在IP之上的TCP或UDP。8.如權利要求6所述的裝置,其中,所述終止節點還被配置為確定任何接收到的請求是NFS還是CIFS。9.如權利要求8所述的裝置,其中,所述終止節點還被配置為終止NFS請求的XDR和RPC。10.如權利要求6所述的裝置,其中,所述一個或多個終止節點被配置為從其接收到的任何請求分別抽取文件句柄。11.如權利要求10所述的裝置,其中,所述一個或多個終止節點被配置為向基于所述抽取的文件句柄所選擇出的所述文件服務器節點中的一個發送所述請求。12.如權利要求11所述的裝置,其中,所述一個或多個終止節點被配置為以公用的格式向所述文件服務器節點中的所述選擇出的一個發送所述請求,而不管所述請求是NFS還是CIFS。13.如權利要求6所述的裝置,其中,所述一個或多個終止節點被配置為向基于由所述請求定義的文件的類型所選擇出的文件服務器節點發送所述請求。14.如權利要求1所述的裝置,其中,所述一個或多個終止節點被配置為檢測所述一個或多個文件服務器節點的故障。15.如權利要求1所述的裝置,其中,所述一個或多個文件服務器節點每個都被配置為通過所述一個或多個盤控制器節點取回為任何接收到的請求服務所必需的文件。16.如權利要求1所述的裝置,其中,所述一個或多個文件服務器節點每個都被配置為終止從所述終止節點和所述盤控制器節點接收到的任何請求。17.如權利要求1所述的裝置,其中,所述一個或多個文件服務器節點中每個都維護聯邦式的文件系統,其中所述聯邦式的文件系統不了解由其他所述文件服務器節點訪問的文件。18.如權利要求1所述的裝置,其中,由所述一個或多個服務器節點中每一個所維護的所述文件系統分別服務不同的名稱空間范圍。19.如權利要求18所述的裝置,其中,由所述一個或多個服務器節點所服務的所述不同的名稱空間范圍是動態分配的。20.如權利要求19所述的裝置,其中,分配給所述一個或多個服務器節點中每個的所述名稱空間動態傳播到所述一個或多個終止節點。21.如權利要求1所述的裝置,其中,每個所述文件服務器節點在訪問文件時能夠鎖定所述文件。22.如權利要求21所述的裝置,其中,在正被讀取時、寫入時或者正被讀取及寫入時,所述文件被鎖定。23.如權利要求1所述的裝置,其中,所述一個或多個文件服務器節點每個都還被配置為維護最近訪問文件的緩存,其中在不分別訪問所述存儲盤的情況下就可以供應所述最近訪問的文件。24.如權利要求23所述的裝置,其中,使用替換算法來替換所述緩存正的所述文件,所述替換算法是下面的算法之一最近使用或者先進先出。25.如權利要求1所述的裝置,其中,所述一個或多個文件服務器節點被優化來處理某些類型的特定請求。26.如權利要求1所述的裝置,其中,所述存儲盤被布置在一個或多個獨立磁盤冗余陣列中。27.如權利要求1所述的裝置,其中,每個所述盤控制器節點中都執行一個或多個下面的功能為了備份目的的文件鏡像、文件重定位、終止從所述一個或多個文件服務器節點接收到的請求、盤空間虛擬化、監控所述存儲盤故障或替換以及充當數據塊服務器。28.如權利要求1所述的裝置,其中,所述交換結構包括下面類型的交換機以太網交換機、光纖信道交換機或者它們的組合。29.如權利要求1所述的裝置,還包括耦合在所述一個或多個盤控制器節點與所述存儲盤之間的存儲陣列網絡。30.如權利要求1所述的裝置,一個或多個所述終止節點和所述文件服務器節點實現于一個或多個CPU中,所述交換結構至少部分地用CPU間和/或CPU內通信機制實現。31.一種方法,包括接收來自客戶的連接請求;基于預定的標準,響應于所述連接請求,在多個終止節點中選擇終止節點來建立到所述客戶的連接;通過抽取由在所述連接期間從所述客戶接收到命令請求所定義的文件句柄,在所述選擇出的終止節點處終止所述命令請求;向多個文件服務器節點中選擇出的文件服務器節點轉發所述命令請求;在所述選擇出的文件服務器節點處解釋所述命令請求,并且訪問多個盤控制器節點中的適當的盤控制器節點;和通過所述適當的盤控制器節點訪問存儲盤,并且向所述客戶供應所述訪問的數據。32.如權利要求31所述的方法,其中,所述預定的標準包括下面的標準之一所述多個終止節點之間的負載、CPU的利用、存儲器的利用或者它們的組合。33.如權利要求32所述的方法,其中,基于從所述命令請求抽取的所述文件句柄,向選擇出的文件服務器節點轉發所述命令請求。34.如權利要求32所述的方法,其中,基于有所述命令請求定義的文件類型,向選擇出的文件服務器節點轉發所述命令請求。35.如權利要求31所述的方法,還包括按需擴展終止節點、文件服務器節點和盤控制器節點的數目來滿足用戶的需求。全文摘要本發明公開了用于可擴展的網絡附接存儲系統的裝置和方法。該裝置包括可擴展的網絡附接存儲系統,該網絡附接存儲系統包括一個或多個終止節點;用于維護文件系統的一個或多個文件服務器節點;用于分別訪問存儲盤的一個或多個盤控制器節點;以及耦合所述一個或多個終止節點、文件服務器節點和盤控制器節點的交換結構。一個或多個終止節點、文件服務器節點和盤控制器節點可以按需擴展來滿足用戶的需求。該方法包括接收來自客戶的連接請求;基于預定的標準,響應于該連接請求,在多個終止節點中選擇終止節點來建立到客戶的連接;通過抽取由在連接期間從客戶接收到命令請求定義的文件句柄,在選擇出的終止節點處終止該命令請求;向多個文件服務器節點中選擇出的文件服務器節點轉發命令請求;在選擇出的文件服務器節點處解釋命令請求,并且訪問多個盤控制器節點中的適當的盤控制器節點;以及通過適當的盤控制器節點訪問存儲盤,并且向客戶供應訪問的數據。終止節點、文件服務器節點和盤控制器節點的數目可以按需擴展來滿足用戶的需求。文檔編號G06F17/30GK1723434SQ200380105300公開日2006年1月18日申請日期2003年11月19日優先權日2002年12月6日發明者托馬斯·詹姆斯·埃茲爾,馬里奧·瑪佐拉,普雷姆·真,西爾瓦諾·加伊,露咔·卡菲羅,毛里利奧·德尼克拉申請人:思科技術公司