專利名稱:Smb2擴展的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及集群環(huán)境的擴展。
背景技術(shù):
服務(wù)器集群常用于提供信息到客戶機的故障切換和高可用性。傳統(tǒng)上,集群環(huán)境是根據(jù)客戶機-服務(wù)器協(xié)議來設(shè)計的,其中客戶機連接到服務(wù)器以訪問該服務(wù)器可用的資源。在傳統(tǒng)集群環(huán)境中,組成該環(huán)境的不同的服務(wù)器可訪問不同的文件系統(tǒng)。不能訪問共同的文件系統(tǒng)限制了傳統(tǒng)文件系統(tǒng)集群的功能。各實施例正是對于這些和其他考慮事項而做出的。而且,盡管討論了相對具體的 問題,但是應(yīng)當(dāng)理解,各實施例不應(yīng)被限于解決本背景技術(shù)中所標識的具體問題。
發(fā)明內(nèi)容
提供本發(fā)明內(nèi)容來以簡化形式介紹將在以下詳細描述部分中進一步描述的一些概念。本發(fā)明內(nèi)容并不旨在標識出所要求保護的主題的關(guān)鍵特征或必要特征,也不旨在用于幫助確定所要求保護的主題的范圍。本公開內(nèi)容的各實施例提供了經(jīng)擴展的集群環(huán)境,其中文件系統(tǒng)在邏輯上被集群在一起使得該集群中的每一節(jié)點能訪問駐留在該集群中的所有資源。因為文件系統(tǒng)能由該集群環(huán)境中的每一節(jié)點訪問,所以不論客戶機連接到哪一節(jié)點,該客戶機都可以訪問該集群的資源。這樣的環(huán)境向客戶機提供了在連接到集群環(huán)境時的各個選項。客戶機可以利用經(jīng)擴展的集群節(jié)點的靈活性來高效地連接到服務(wù)器集群。在其他實施例中,盡管該經(jīng)擴展的集群環(huán)境允許客戶機訪問跨該集群的資源而不論客戶機與其建立連接的實際節(jié)點如何,但一旦客戶機與一節(jié)點建立了連接,它就嘗試維持它與該同一節(jié)點的連接以減少在該集群環(huán)境的各節(jié)點之間轉(zhuǎn)移的狀態(tài)信息的量。然而,在一些情況下,客戶機可能不能維持與同一節(jié)點的連接,而是需要連接到該經(jīng)擴展的集群環(huán)境中的不同節(jié)點。在其他環(huán)境中,該經(jīng)擴展的集群環(huán)境提供會話信息、狀態(tài)信息和/或句柄的存儲和維護,以便于客戶機從一個節(jié)點移動到另一節(jié)點。該集群的各節(jié)點能夠在彼此之間傳遞這樣的信息,以便于客戶機連接的移動。各實施例可被實現(xiàn)為計算機進程、計算系統(tǒng)、或者諸如計算機程序產(chǎn)品或計算機可讀介質(zhì)等制品。計算機程序產(chǎn)品可以是計算機系統(tǒng)可讀并對用于執(zhí)行計算機過程的指令的計算機程序編碼的計算機存儲介質(zhì)。計算機程序產(chǎn)品還可以是計算系統(tǒng)可讀并對用于執(zhí)行計算機過程的指令的計算機程序編碼的載體上的傳播信號。
參考以下附圖描述非限制性和非窮盡性的實施例。圖I示出了可用于實現(xiàn)此處描述的實施例的系統(tǒng)。圖2是客戶機在連接到服務(wù)器集群時可以執(zhí)行的方法的實施例。
圖3是客戶機在集群環(huán)境中的各節(jié)點之間轉(zhuǎn)移連接時可以執(zhí)行的方法的實施例。圖4是由集群環(huán)境中的節(jié)點執(zhí)行以維護和轉(zhuǎn)移持久句柄的方法的實施例。圖5是由集群環(huán)境中的節(jié)點執(zhí)行以請求先前建立的會話的所有權(quán)的方法的實施例。圖6示出了適于實現(xiàn)各實施例的計算環(huán)境的框圖。
具體實施例方式以下將參考形成本發(fā)明一部分并示出各具體示例性實施例的附圖更詳盡地描述各個實施例。然而各實施例被實現(xiàn)為許多不同的形式并且不應(yīng)將其解釋為限制在此處描述的實施例;相反地,提供這些實施例以使得本公開變得透徹和完整,并且將這些實施例的范圍完全傳達給本領(lǐng)域普通技術(shù)人員。因此,這些實施例可采用硬件實現(xiàn)形式、全軟件實現(xiàn)形 式或者結(jié)合軟件和硬件方面的實現(xiàn)形式。因此,以下詳細描述并非是局限性的。圖I示出了可用于實現(xiàn)此處公開的一些實施例的系統(tǒng)100。系統(tǒng)106可以是包含一個或多個節(jié)點的示例集群系統(tǒng)。集群系統(tǒng)的示例是具有一個或多個服務(wù)器的服務(wù)器集群,如圖I所示。系統(tǒng)100包括客戶機102和104以及服務(wù)器集群106??蛻魴C102和104通過網(wǎng)絡(luò)108與服務(wù)器集群106通信。在各實施例中,網(wǎng)絡(luò)108可以是因特網(wǎng)、WAN、LAN、或本領(lǐng)域已知的任何其他類型的網(wǎng)絡(luò)。服務(wù)器集群106存儲被客戶機102和104上的應(yīng)用訪問的資源??蛻魴C102和104與集群106建立會話以訪問集群106上的資源。盡管在圖I中,僅有客戶機102和104被示為與集群106通信,但是在其他實施例中,可以存在兩個以上客戶機從服務(wù)器集群106訪問信息。在各實施例中,客戶機102和104可根據(jù)SMB2協(xié)議來訪問服務(wù)器集群106或與其通信。如圖I所示,服務(wù)器集群106包括例如服務(wù)器106AU06B和106C等一個或多個節(jié)點,這些節(jié)點提供對存儲在集群106上的信息的高可用性和冗余性。服務(wù)器集群106的一個或多個節(jié)點可經(jīng)由網(wǎng)絡(luò)彼此通信,諸如因特網(wǎng)、WAN、LAN、或本領(lǐng)域已知的任何其他類型的網(wǎng)絡(luò)。在各實施例中,集群106可以具有文件系統(tǒng)、數(shù)據(jù)庫、或者由客戶機102和104訪問的其他信息。盡管圖I中示出了 3個服務(wù)器,但是在其他實施例中,集群106可以包括3個以上服務(wù)器或3個以下服務(wù)器。在各實施例中,服務(wù)器集群106是經(jīng)擴展的服務(wù)器集群。在各實施例中,經(jīng)擴展的服務(wù)器集群包括能由該服務(wù)器集群中的每一節(jié)點(例如,服務(wù)器106A、106B以及106C)訪問的文件系統(tǒng)108。作為示例,在經(jīng)擴展的集群中,文件系統(tǒng)在邏輯上被集群在一起,使得組成該文件系統(tǒng)的一個或多個盤能從該服務(wù)器集群中的每一服務(wù)器可見。在這樣的實施例中,經(jīng)擴展的服務(wù)器集群使得能夠在該集群中的各節(jié)點間共享資源。在一個這樣的實施例中,服務(wù)器集群106包括中央數(shù)據(jù)儲存庫,該中央數(shù)據(jù)儲存庫包括服務(wù)器集群106中的每一服務(wù)器能訪問的一個或多個數(shù)據(jù)存儲。在這樣的實施例中,將資源存儲在中央儲存庫中允許每一服務(wù)器訪問文件系統(tǒng)。在另一實施例中,可通過跨服務(wù)器集群106中的每一服務(wù)器的本地文件系統(tǒng)復(fù)制資源來提供共享文件系統(tǒng)。在這樣的實施例中,可以使用本領(lǐng)域已知的任何方式的復(fù)制數(shù)據(jù)來跨組成該集群的各服務(wù)器復(fù)制集群資源。將在邏輯上集群在一起的文件系統(tǒng)包括在經(jīng)擴展的服務(wù)器集群(如服務(wù)器集群106)中,提供了在傳統(tǒng)服務(wù)器集群中不可用的附加功能。在一個實施例中,在邏輯上集群在一起的文件系統(tǒng)確保作為集群環(huán)境的一部分的每一節(jié)點能訪問該環(huán)境上的任何資源。在各實施例中,資源可以是集群環(huán)境中提供的應(yīng)用、文件、對象、數(shù)據(jù)、或任何其他類型的資源。這允許客戶機訪問和/或以其他方式操縱該文件系統(tǒng)上的任何資源,而不論該客戶機與哪一節(jié)點(例如,服務(wù)器106AU06B和/或106C)建立了連接。在各實施例中,文件服務(wù)器106可使用名稱解析機制將每一節(jié)點注冊在共同名稱下。名稱解析機制的非限制性示例是域名系統(tǒng)(DNS)。例如,服務(wù)器集群106可以將服務(wù)器106A、106B、以及106C注冊在DNS服務(wù)器(圖I中未示出)中的共同名稱下。DNS服務(wù)器可以是服務(wù)器集群106的一部分或它可以在服務(wù)器集群106外部。在客戶機嘗試訪問服務(wù)器集群106中的服務(wù)器時,客戶機可訪問名稱解析機制來獲得服務(wù)器的地址。例如,客戶機可聯(lián)系DNS服務(wù)器來獲得服務(wù)器集群106中的一服務(wù)器的地址。因為該服務(wù)器系統(tǒng)將所有服務(wù)器注冊在共同名稱下,所以DNS服務(wù)器可返回組成服務(wù)器集群106的各服務(wù)器(例如,服務(wù)器106A、106B以及106C)的地址的列表。在各實施 例中,該地址可以是IP地址、URL、URI、或本領(lǐng)域已知的任何其他類型的地址。因為返回了多個地址,所以向客戶機提供了要連接到哪一服務(wù)器的選擇。在各實施例中,客戶機可選擇連接到它從服務(wù)器接收到的列表中的第一地址。在一些情況下,客戶機可能難以連接到該第一地址所標識的第一服務(wù)器(例如,服務(wù)器106A)。因為服務(wù)器集群106中的每一服務(wù)器都能夠向客戶機提供類似功能,所以客戶機可決定連接到服務(wù)器集群106中的另一服務(wù)器。如果客戶機不能成功連接到第一服務(wù)器,則在等待了預(yù)定時間段之后,客戶機可以發(fā)起連接到它從名稱解析機制接收到的各地址的子集(例如,服務(wù)器106B和服務(wù)器106C)的一個或多個請求,并挑選成功的連接。該一個或多個請求可以并行地作出,在這種情況下,客戶機可連接到與其成功建立連接的第一服務(wù)器。雖然以上提供了地址列表的特定排序(例如,服務(wù)器106A作為第一列出的地址),但本領(lǐng)域技術(shù)人員將明白,地址列表可以具有任何次序。在各實施例中,名稱解析機制可以使用循環(huán)技術(shù),如DNS循環(huán)可被用來提供跨網(wǎng)絡(luò)的負載平衡。因為多個客戶機(例如,客戶機102和104)可同時連接到服務(wù)器集群106,所以循環(huán)技術(shù)確保提供給不同客戶機的第一地址變化。因而,各初始連接請求分散到該集群環(huán)境的所有節(jié)點。此外,客戶機可在與第一服務(wù)器的不成功的連接嘗試之后隨機選擇它向其發(fā)出附加連接請求的地址的子集,從而提供附加的負載平衡機制。在各實施例中,一旦客戶機連接到服務(wù)器集群106中的服務(wù)器,客戶機就確保它保持連接到該同一服務(wù)器。雖然每一服務(wù)器(例如,服務(wù)器106A、106B以及106C)共享在邏輯上集群在一起的文件系統(tǒng),但該客戶機的會話狀態(tài)可由它所連接到的服務(wù)器處理。因而,為了最小化跨各服務(wù)器的狀態(tài)同步通信量,客戶機可確保它保持連接到同一服務(wù)器。例如,如果客戶機102連接到服務(wù)器106A,則客戶機102可嘗試確保它的所有連接和資源使用(例如,打開文件)都在服務(wù)器106A上。在這樣的實施例中,如果客戶機102丟失了它到服務(wù)器106A的連接,則在它重新連接到服務(wù)器集群106時,它將嘗試重新連接到服務(wù)器106A而非服務(wù)器106B或106C,從而降低了對在服務(wù)器集群106中的不同服務(wù)器之間轉(zhuǎn)移會話狀態(tài)的需求。在各實施例中,因為客戶機在丟失連接后嘗試重新連接到同一服務(wù)器,所以即使在服務(wù)器丟失與該客戶機的通信后,該服務(wù)器也維護該客戶機的會話狀態(tài)。例如,如果客戶機102丟失與服務(wù)器106A的連接,服務(wù)器106A也可維護客戶機102的會話狀態(tài)。在客戶機102重新建立其連接時,會話狀態(tài)的持久性允許在客戶機102重新連接到服務(wù)器106A后重用其會話信息(例如,狀態(tài)信息)。然而,在一些情況下,客戶機維持它到服務(wù)器集群106中的單個服務(wù)器的連接是不高效或不可能的。例如,服務(wù)器節(jié)點故障、丟失到給定服務(wù)器的連接、或管理動作(如負載平衡、對服務(wù)器打補丁、或任何其他類型的管理動作)可使得客戶機不可能重新連接到同一節(jié)點。為便于節(jié)點的改變,服務(wù)器集群106可支持對由客戶機訪問的資源的持久句柄。持久句柄允許客戶機在連接到第二節(jié)點時恢復(fù)它在第一節(jié)點上建立的句柄。例如,如果客戶機102將其初始連接從服務(wù)器106A改變到服務(wù)器106C,則客戶機102在服務(wù)器106A上所使用的句柄可被轉(zhuǎn)移到服務(wù)器106C。在各實施例中,服務(wù)器集群106可以使用持久狀態(tài)存儲來提供持久句柄。示例持久狀態(tài)存儲是存在于服務(wù)器集群106的一個或多個節(jié)點中的恢復(fù)密鑰管理器。然而,本領(lǐng)域技術(shù)人員將明白,服務(wù)器集群106可以使用任何類型的高速緩存或數(shù)據(jù)存儲來促進持久句柄。在一個實施例中,服務(wù)器集群106提供集中式持久狀態(tài)存儲。在這些實施例 中,服務(wù)器集群106中的單個節(jié)點(例如服務(wù)器106B)維護客戶機會話的打開句柄的持久狀態(tài)。在這樣的實施例中,客戶機每次從一個節(jié)點切換到另一節(jié)點(例如,從服務(wù)器106A切換到106C),作為客戶機會話的一部分的句柄的所有權(quán)可通過使用先前會話無效邏輯來在這些節(jié)點之間轉(zhuǎn)移(例如,所有權(quán)從服務(wù)器106A轉(zhuǎn)移到服務(wù)器106C),諸如在2011年9月9日提交的、題為“Clustered Client Failover (集群的客戶機故障切換)”(代理案號14917. 1840US01)的、共同受讓共同待審的美國專利申請?zhí)?3/228,732中描述的無效技術(shù),其整體通過引用結(jié)合于此。在其他實施例中,句柄的所有權(quán)可由客戶機在逐句柄的基礎(chǔ)上顯式地轉(zhuǎn)移。在另一實施例中,持久狀態(tài)存儲可以是分布式狀態(tài)存儲。在這樣的實施例中,持久狀態(tài)存儲可以分布在服務(wù)器集群106的各節(jié)點上。在這樣的實施例中,每一節(jié)點可以存儲持久狀態(tài)存儲??梢允褂眉杭墵顟B(tài)復(fù)制算法來跨該分布式數(shù)據(jù)存儲復(fù)制狀態(tài)。在這樣的實施例中,服務(wù)器集群106在節(jié)點子集故障的情況下維護狀態(tài)信息。如上所述,經(jīng)擴展的集群的每一節(jié)點都連接到邏輯上集群在一起的文件系統(tǒng)。為了在多個客戶機訪問同一資源時避免沖突,通過向一個或多個節(jié)點(例如,服務(wù)器106A、106B和/或106C)提供對資源采取機會鎖(oplock)或租期的能力,服務(wù)器集群106可以執(zhí)行分布式狀態(tài)解析。在各實施例中,可通過使用RH機會鎖來支持共享閱讀器,這允許多個讀取者在集群的多個節(jié)點上訪問同一文件。在其他實施例中,服務(wù)器集群106還可支持寫鎖。如本文描述的,本領(lǐng)域技術(shù)人員將明白,經(jīng)擴展的服務(wù)器集群提供在未經(jīng)擴展的服務(wù)器集群中不可用的附加功能。雖然參考圖I提供了附加功能的具體示例,但本領(lǐng)域技術(shù)人員將明白,這些是經(jīng)擴展的服務(wù)器集群所提供的益處和功能的非限制性示例。圖2是客戶機在連接到集群環(huán)境時可以執(zhí)行的方法200的實施例。例如,諸如客戶機102 (圖I)等客戶機在連接到集群環(huán)境時可以使用方法200來確定要與哪一節(jié)點(例如,服務(wù)器106AU06B和/或106C)建立連接。流程始于操作202,在此,客戶機從名稱解析機制(如DNS服務(wù)器)接收地址列表。如參考圖I討論的,在各實施例中,集群環(huán)境中的每一節(jié)點都能夠向該客戶機提供類似功能。因而,客戶機可成功執(zhí)行所需操作或訪問集群環(huán)境中的所需資源,而不管該客戶機連接到哪一節(jié)點。流程繼續(xù)至操作204,在此,客戶機嘗試連接到在操作202接收到的地址列表中的第一地址所標識的第一節(jié)點。在操作204,客戶機可通過向第一地址所標識的節(jié)點發(fā)送初始連接請求來嘗試連接到第一節(jié)點。然而,本領(lǐng)域技術(shù)人員將明白在操作203嘗試與節(jié)點(例如,服務(wù)器)進行連接的任何方式。在各實施例中,客戶機可等待預(yù)定時間段,如操作206所示,以待第一嘗試成功。然而,因為集群環(huán)境中的任何節(jié)點都能夠代表客戶機來訪問任何資源,所以在第一嘗試失敗或花了很長時間的情況下,客戶機可向其他服務(wù)器集群發(fā)出嘗試請求。盡管操作206描述了客戶機等待預(yù)定時間段,但該時間也可以是由客戶機動態(tài)地確定的。在另一實施例中,連接到服務(wù)器的第一嘗試可以是成功的,然而,該節(jié)點可能不能訪問集群環(huán)境的資源。例如,地址列表可包含不正確的地址或不再是該集群環(huán)境的一部分的節(jié)點的地址。在其他實施例中,錯誤可阻止節(jié)點訪問集群環(huán)境資源。客戶機可采用必要的邏輯來標識這樣的情況。在這些情況下,客戶機可將該成功的嘗試當(dāng)作是失敗的,并繼續(xù) 執(zhí)行方法200。在第一嘗試失敗或在時間段期滿之后,流程繼續(xù)至操作208,在此,客戶機從地址列表中隨機選擇地址的子集。在各實施例中,對子集地址的隨機選擇向該集群環(huán)境提供了負載平衡益處,該集群環(huán)境可具有單次嘗試連接到它的各節(jié)點的多個客戶機。如果每一客戶機隨機選擇要連接到的節(jié)點的子集,則可在該集群環(huán)境中建立更好的連接平衡。然而,在其他實施例中,客戶機可能不選擇隨機子集,而是按地址出現(xiàn)在列表上的次序來選擇這些地址。在其他實施例中,并非在操作208選擇地址列表的子集,客戶機可選擇列表中的所有地址。流程繼續(xù)至操作210,在此,客戶機嘗試連接到所選子集中的地址所標識的一個或多個節(jié)點。在一個實施例中,在操作210,客戶機可并行嘗試連接到多個節(jié)點,從而加速連接過程。在各實施例中,在操作210,客戶機可向不同節(jié)點發(fā)送一個或多個附加連接請求,然而如參考操作204所描述的,嘗試連接的任何方式都可與本文描述的各實施例一起使用。流程繼續(xù)至操作212,在此,客戶機接收連接成功的指示。在各實施例中,該指示可以是客戶機從一節(jié)點接收到的、指示該客戶機能夠連接到該節(jié)點的消息。在各實施例中,如果客戶機在操作210作出了并行嘗試,則在操作212,客戶機可以決定連接到對該客戶機成功響應(yīng)的第一節(jié)點。在其他實施例中,客戶機可以從集群環(huán)境中的不同節(jié)點接收到嘗試成功的多個指示。在這樣的實施例中,客戶機可以選擇連接到哪一節(jié)點。在其他實施例中,該指示可以提供與該節(jié)點有關(guān)的性能,如該節(jié)點的當(dāng)前負載??蛻魴C可以使用這一信息來確定與哪一節(jié)點建立連接。例如,客戶機可以選擇連接到具有較輕負載的節(jié)點、具有特定硬件配置的節(jié)點,等等。一旦客戶機選擇了節(jié)點,則流程繼續(xù)至操作214,并且客戶機連接到該節(jié)點。在客戶機連接到該節(jié)點后,客戶機建立與該節(jié)點的會話并能夠訪問集群環(huán)境中的資源。如參考圖I描述的,一旦客戶機建立了到一節(jié)點的連接,該客戶機就嘗試維持它與同一節(jié)點的連接。這降低了在客戶機將連接從一個節(jié)點轉(zhuǎn)移到另一節(jié)點時發(fā)生的狀態(tài)信息的傳輸。在這樣的實施例中,如果客戶機從該節(jié)點斷開連接,例如由于諸如網(wǎng)絡(luò)故障或客戶機崩潰等錯誤,則客戶機在從該錯誤恢復(fù)之后將嘗試重新連接到同一節(jié)點。
然而,客戶機重新連接到同一節(jié)點并不總是可能的。例如,如果節(jié)點出現(xiàn)故障、如果客戶機丟失與該節(jié)點的連接、或者如果該節(jié)點處于管理目的而不可用(例如,由于負載平衡需求、該節(jié)點打補丁,等等),則客戶機可經(jīng)由不同節(jié)點重新建立它與該集群環(huán)境的連接。圖3是客戶機在集群環(huán)境中的各節(jié)點之間轉(zhuǎn)移連接時可以執(zhí)行的方法300的實施例。流程始于操作302,在此,客戶機確定需要與新節(jié)點的連接。例如,在由于網(wǎng)絡(luò)或節(jié)點故障而丟失與節(jié)點的連接之后,客戶機可以確定它不能重新連接到該集群環(huán)境中的同一節(jié)點。在另一實施例中,客戶機可以從該節(jié)點接收性能信息?;谠撔阅苄畔?,客戶機可以決定將連接轉(zhuǎn)移到能向該客戶機提供更好服務(wù)的另一節(jié)點。例如,客戶機可接收到指示該節(jié)點正經(jīng)歷沉重通信量的信息。在這種情況下,客戶機可能不需要重新連接到另一節(jié)點,但可任選地出于性能原因而決定重新連接到另一節(jié)點。類似地,客戶機可以在沒有從該節(jié)點接收到性能信息的情況下自己確定這一信息,例如通過監(jiān)視該節(jié)點執(zhí)行一請求花了多長時間。
在另一實施例中,該節(jié)點可以要求客戶機將其連接轉(zhuǎn)移到該集群中的不同節(jié)點。例如,如果該節(jié)點要離線來打補丁或出于負載平衡目的,則該節(jié)點可要求客戶機將其連接轉(zhuǎn)移到不同節(jié)點。在這樣的實施例中,該節(jié)點可以向客戶機發(fā)送指示該客戶機必須轉(zhuǎn)移其連接的消息。執(zhí)行這樣的通信的各實施例在2011年3月29日提交的、題為“Providing aWitness Service (提供目擊服務(wù))”(美國專利申請?zhí)?3/074,920)的共同受讓共同待審的專利申請中描述,其整體通過引用結(jié)合于此。在確定需要在節(jié)點之間轉(zhuǎn)移連接之后,流程繼續(xù)至操作304。在操作304,客戶機嘗試連接到該集群環(huán)境中的不同節(jié)點。例如,客戶機可以向該集群環(huán)境中的一個或多個節(jié)點發(fā)送連接請求。在各實施例中,客戶機可通過執(zhí)行參考方法200所描述的全部步驟或其步驟子集來連接到該集群環(huán)境中的第二節(jié)點。在另一實施例中,客戶機可被該集群環(huán)境引導(dǎo)來連接到特定節(jié)點。在嘗試成功之后,流程繼續(xù)至操作306,并且客戶機連接到該集群環(huán)境中的第二節(jié)點。然而,因為客戶機具有一先前已建立的會話,所以該會話可被轉(zhuǎn)移到該不同節(jié)點。在操作308,客戶機向第二節(jié)點發(fā)送會話建立請求。在各實施例中,該會話建立請求可以是包含會話標識符的消息,該會話標識符標識客戶機先前建立的連接。如將參考圖5進一步討論的,響應(yīng)于接收到該會話建立請求,第二節(jié)點可以取得該先前建立的連接的所有權(quán)。盡管方法300將發(fā)送會話建立請求描述為分立步驟,但本領(lǐng)域技術(shù)人員將明白,客戶機可以在操作304與連接到第二節(jié)點的請求一起發(fā)送會話建立請求或會話標識符。已經(jīng)描述了客戶機在連接到經(jīng)擴展的集群環(huán)境時可以使用的方法,本公開內(nèi)容現(xiàn)在將描述這樣的環(huán)境中的一個或多個節(jié)點可以使用的功能。圖4是由集群環(huán)境中的節(jié)點執(zhí)行以維護和轉(zhuǎn)移集群服務(wù)器環(huán)境中的持久句柄的方法400的實施例。例如,方法400可由作為集群服務(wù)器環(huán)境(例如,服務(wù)器集群106)的一部分的服務(wù)器執(zhí)行,如服務(wù)器106A、106B以及106C。流程始于操作402,在此,服務(wù)器接受來自客戶機的連接請求,從而在該節(jié)點和該客戶機之間建立連接。該初始連接指示客戶機不具有在該節(jié)點或該集群環(huán)境中的另一節(jié)點上的先前建立的連接。在各實施例中,在該節(jié)點沒有從客戶機接收到作為該客戶機的連接請求的一部分的會話建立請求的情況下,或當(dāng)在建立到客戶機的連接之后不久沒有接收到會話建立請求的情況下,則該節(jié)點可以確定它正與客戶機建立連接。
流程繼續(xù)至操作404,在此,該節(jié)點創(chuàng)建與客戶機的會話。在操作404,該節(jié)點可以向該會話分配會話標識符。該會話標識符可以是跨該集群環(huán)境中的所有節(jié)點的全局唯一標識符(GUID)。在創(chuàng)建會話之后,該節(jié)點可以分配資源和/或代表客戶機來對資源執(zhí)行操作。在這樣做時,可創(chuàng)建會話信息(如狀態(tài)信息)。該節(jié)點可以存儲該會話信息。除狀態(tài)信息之夕卜,該節(jié)點可以存儲一個或多個句柄。例如,如果客戶機打開文件,則到該文件的句柄可被提供給客戶機。該節(jié)點可以存儲句柄連同(即作為補充)會話信息。流程繼續(xù)至操作406,在此,該節(jié)點丟失它與客戶機的連接。例如,客戶機可能遭受錯誤(例如,崩潰或丟失網(wǎng)絡(luò)連接)。預(yù)測到客戶機可能重新連接,在操作408,服務(wù)器將維護該會話和/或信息。例如,該節(jié)點可將會話和/或狀態(tài)信息寫到本地存儲器、集中式持久存儲、或分布式狀態(tài)存儲中。如上所述,客戶機將嘗試維持與單個節(jié)點的連接。在各實施例中,在客戶機從錯誤恢復(fù)之后,客戶機將重新連接到該節(jié)點。在重新連接之后,例如通過從該客戶機接收會話標識符,該節(jié)點可標識該客戶機具有先前建立的狀態(tài)。在這樣的實施例中,所維護的會話狀態(tài)允許客戶機繼續(xù)它的先前建立的會話。然而,在某些情況下,客戶機可能不能夠重新連接到該節(jié)點。相反,客戶機可重新連接到該集群環(huán)境中的不同節(jié)點。在這種情況下,流程繼續(xù)至操作410,在此,該節(jié)點接收來自該集群環(huán)境中的另一節(jié)點的轉(zhuǎn)移會話信息的請求。在各實施例中,另一節(jié)點請求會話信息的所有權(quán)來為客戶機重新建立會話,該客戶機現(xiàn)在連接到該請求所有權(quán)的節(jié)點。對會話所有權(quán)的請求可包括執(zhí)行方法400的節(jié)點可用來標識它擁有和/或維護的先前建立的會話的會話標識符。在接收到對會話所有權(quán)的請求后,流程繼續(xù)至操作412,在此,該節(jié)點確保沒有對與先前建立的會話相關(guān)聯(lián)的資源執(zhí)行的未完成的輸入/輸出(I/o)操作。在各實施例中,·如果存在未完成的I/o操作,則在繼續(xù)至操作414之前該節(jié)點等待該操作完成。在其他實施例中,在操作410,該節(jié)點可取消對會話資源的待決I/O操作。該節(jié)點可等待和/或取消待決I/O操作,以維持資源完整性。在該節(jié)點確保所有I/O已完成(或被取消)之后,流程繼續(xù)至操作414。在操作414,該節(jié)點使先前建立的會話無效。使會話無效可包括關(guān)閉作為該會話的一部分的任何打開句柄。在其他實施例中,使會話無效可包括釋放在資源上的任何鎖。在各實施例中,會話的無效還可包括參考圖I描述的無效邏輯。此外,在各實施例中,可以執(zhí)行單步無效,其中該節(jié)點使先前建立的會話的所有句柄和/或鎖無效,以消除對該節(jié)點單獨地使每一文件句柄無效的需求。在先前建立的會話被無效之后,流程繼續(xù)至操作416,在此,該節(jié)點將會話的所有權(quán)轉(zhuǎn)移到作出請求的節(jié)點。在各實施例中,會話的所有權(quán)的轉(zhuǎn)移可包括轉(zhuǎn)移與該會話相關(guān)的所有相關(guān)聯(lián)的資源的所有權(quán)??稍诓僮?16轉(zhuǎn)移的示例資源是文件句柄;然而,在操作416,其他資源的所有權(quán)也可轉(zhuǎn)移。在其他實施例中,轉(zhuǎn)移與該會話相關(guān)的資源的所有權(quán)可包括將該資源從一個節(jié)點轉(zhuǎn)移到另一個節(jié)點。為效率起見,在操作416,所有會話信息可按批轉(zhuǎn)移,從而減少各節(jié)點之間所需的通信數(shù)量。圖5是由集群環(huán)境中的節(jié)點執(zhí)行以請求先前建立的會話的所有權(quán)的方法500的實施例。例如,方法400可由作為集群服務(wù)器環(huán)境(例如,服務(wù)器集群106)的一部分的服務(wù)器執(zhí)行,如服務(wù)器106A、106B以及106C。流程開始于操作502,在此,該節(jié)點建立與客戶機的連接。例如,在操作502,該節(jié)點可接收來自客戶機的連接請求。該節(jié)點可接受該連接請求并連接到該客戶機。流程繼續(xù)至操作504,在此,該節(jié)點標識客戶機先前建立的與該集群環(huán)境中的另一節(jié)點的會話。在各實施例中,該節(jié)點可以接收來自客戶機的會話建立請求。該會話建立請求可以與連接請求一起接收或在連接到該客戶機之后接收。在各實施例中,該會話建立請求包含標識先前建立的連接的會話標識符。流程繼續(xù)至操作506,在此,該節(jié)點向該集群環(huán)境中的當(dāng)前擁有該客戶機的先前建立的會話的第二節(jié)點發(fā)送所有權(quán)請求。該所有權(quán)請求可包含使與該先前會話相關(guān)聯(lián)的句柄無效并將會話信息轉(zhuǎn)移到該節(jié)點的指令。在各實施例中,該所有權(quán)請求可包括在操作504接收到的會話建立請求和/或會話id。流程繼續(xù)至操作508,在此,該節(jié)點接收先前建立的會話的會話和/或狀態(tài)信息。在各實施例中。該會話和/或狀態(tài)信息可以從該第二節(jié)點、從中央儲存庫、或從該集群環(huán)境
中的另一位置接收。在另一實施例中,并非在操作508接收會話和/或狀態(tài)信息,在操作508,該節(jié)點可被準許訪問駐留在集中式儲存庫中的會話和/或狀態(tài)信息。流程隨后繼續(xù)至操作510,在此,該節(jié)點使用接收到的和/或所訪問的會話或狀態(tài)信息來重新建立客戶機的會話并允許該客戶機繼續(xù)訪問該集群環(huán)境中的資源。方法300-500僅是根據(jù)各實施例可執(zhí)行的操作流程的一些示例。各實施例不限于上面參考圖3-5提供的具體描述,而可包括附加的操作。而且,所示出的操作步驟可被組合到其他步驟中和/或被重新安排。而且,可使用比參考圖3-5描述的方法更少或更多的步驟。圖6示出可用于實現(xiàn)本文所描述的各實施例的通用計算機系統(tǒng)600。計算機系統(tǒng)600僅是計算環(huán)境的一個示例,而非旨在對計算機和網(wǎng)絡(luò)架構(gòu)的使用范圍或功能提出任何限制。計算機系統(tǒng)600也不應(yīng)被解釋成對于在示例計算機系統(tǒng)600中所示出的任一組件或其組合有任何依賴或要求。在各實施例中,系統(tǒng)600可用作以上參考圖I所描述的客戶機和/或服務(wù)器。在其最基本配置中,系統(tǒng)600通常包括至少一個處理單元602和存儲器604。取決于計算設(shè)備的確切配置和類型,存儲器604可以是易失性的(諸如RAM)、非易失性的(諸如ROM、閃存等)或是其某種組合。該最基本配置在圖6中由虛線606來示出。系統(tǒng)存儲器608存儲諸如連接到本文公開的經(jīng)擴展的集群環(huán)境方法的指令之類的指令620和諸如可被存儲在具有諸如存儲608之類的存儲的文件存儲系統(tǒng)中的會話狀態(tài)信息等數(shù)據(jù)622。本文所使用的術(shù)語計算機可讀介質(zhì)可包括計算機存儲介質(zhì)。計算機存儲介質(zhì)可包括以用于存儲諸如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊、或其他數(shù)據(jù)等信息的任何方法或技術(shù)實現(xiàn)的易失性和非易失性、可移動和不可移動介質(zhì)。系統(tǒng)存儲器604、可移動存儲和不可移動存儲608都是計算機存儲介質(zhì)示例(例如,存儲器存儲)。計算機存儲介質(zhì)可包括,但不限于,RAM、ROM、電可擦除只讀存儲器(EEPR0M)、閃存或其他存儲器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD )或其他光存儲、磁帶盒、磁帶、磁盤存儲或其他磁性存儲設(shè)備、或者可用于存儲信息且可由計算設(shè)備600訪問的任何其他介質(zhì)。任何這樣的計算機存儲介質(zhì)都可以是設(shè)備600的一部分。計算設(shè)備600還可以具有輸入設(shè)備614,如鍵盤、鼠標、筆、聲音輸入設(shè)備、觸摸輸入設(shè)備等。還可包括諸如顯示器、揚聲器、打印機等輸出設(shè)備616。上述設(shè)備是示例,并且可使用其他設(shè)備。本文所使用的術(shù)語計算機可讀介質(zhì)還可包括通信介質(zhì)。通信媒介可由諸如載波或其他傳輸機制等已調(diào)制數(shù)據(jù)信號中的計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊、或其他數(shù)據(jù)來體現(xiàn),并且包括任何信息傳遞介質(zhì)。術(shù)語“已調(diào)制數(shù)據(jù)信號”可以描述以對該信號中的信息進行編碼的方式設(shè)定或者改變其一個或多個特征的信號。作為示例而非限制,通信介質(zhì)包括諸如有線網(wǎng)絡(luò)或直接線連接等有線介質(zhì),以及諸如聲學(xué)、射頻(RF)、紅外線和其他無線介質(zhì)等無線介質(zhì)??梢酝ㄟ^片上系統(tǒng)(SOC)來實踐本發(fā)明的各實施例,其中,可以將圖6中示出的每個或許多組件集成到單個集成電路上。這樣的SOC設(shè)備可包括一個或多個處理單元、圖形單元、通信單元、系統(tǒng)虛擬化單元以及各種應(yīng)用功能,所有這些都被集成到(或“燒錄到”)芯片基板上作為單個集成電路。當(dāng)通過SOC操作時,在此所述的相對于為資源提供聯(lián)系訪問的功能可以通過在單個集成電路(芯片上)集成有計算設(shè)備/系統(tǒng)600的其他組件的應(yīng)用專用邏輯來操作。 本說明書通篇引述了“一個實施例”或“一實施例”,這意味著在至少一個實施例中包括特定描述的特征、結(jié)構(gòu)或特性。因此,對這樣短語的使用可指的是一個以上的實施例。而且,在一個或多個實施例中,可以用任何合適的方式組合所描述的特征、結(jié)構(gòu)或特性。然而,本領(lǐng)域技術(shù)人員會認識到本實施例也可在沒有一個或多個具體細節(jié)的情況下實施,或者采用其他方法、資源、材料等來實現(xiàn)。在其他情況中,僅為了避免模糊實施例的各方面,未詳細示出和描述公知的結(jié)構(gòu)、資源或操作。雖然示出和描述了示例實施例和應(yīng)用,但是應(yīng)該理解本實施例不限于上述精確配置和資源??梢詫Υ颂幑_的方法和系統(tǒng)的排列、操作以及細節(jié)作出對本領(lǐng)域技術(shù)人員顯而易見的各種修改、改變和變化,而不背離所要求保護的本實施例的范圍。
權(quán)利要求
1.一種用于與集群服務(wù)器環(huán)境建立會話的方法,所述方法包括 在客戶機處接收202標識所述集群服務(wù)器環(huán)境中的多個服務(wù)器的多個地址; 從所述客戶機發(fā)送204連接到由所述多個地址的第一地址所標識的第一服務(wù)器的初始請求; 在連接到所述第一服務(wù)器之前,從所述客戶機向所述多個地址的子集發(fā)送210—個或多個附加請求,其中所述多個地址的該子集標識所述集群服務(wù)器環(huán)境中的至少第二服務(wù)器; 從所述第二服務(wù)器接收212連接成功的指示;以及 連接214到所述第二服務(wù)器。
2.如權(quán)利要求I所述的方法,其特征在于,還包括隨機選擇所述多個地址的所述子集。
3.如權(quán)利要求I所述的方法,其特征在于,所述一個或多個附加請求是在發(fā)送了所述初始請求后的預(yù)定時間段之后發(fā)送的。
4.如權(quán)利要求I所述的方法,其特征在于,還包括 丟失302與所述第二服務(wù)器的連接; 向所述第二服務(wù)器發(fā)送304重新連接請求;以及 連接306到所述第二服務(wù)器。
5.如權(quán)利要求I所述的方法,其特征在于,還包括 從所述第二服務(wù)器接收與服務(wù)器性能有關(guān)的狀態(tài)消息;以及 響應(yīng)于接收到所述狀態(tài)消息,從所述客戶機向至少第三服務(wù)器發(fā)送新的連接請求,其中所述第三服務(wù)器是所述集群環(huán)境的一部分;以及連接308到所述第三服務(wù)器。
6.—種編碼有計算機可執(zhí)行指令的計算機存儲介質(zhì),所述計算機可執(zhí)行指令在由至少一個處理器執(zhí)行時,執(zhí)行一種用于與集群服務(wù)器環(huán)境建立會話的方法,所述方法包括 接收202標識所述集群服務(wù)器環(huán)境中的多個服務(wù)器的多個地址; 發(fā)送204連接到所述多個地址的第一地址所標識的第一服務(wù)器的初始請求; 在連接到所述第一服務(wù)器之前,向所述多個地址的子集發(fā)送210 —個或多個附加請求,其中所述多個地址的該子集標識所述集群服務(wù)器環(huán)境中的至少第二服務(wù)器; 從所述第二服務(wù)器接收212連接成功的指示;以及 連接214到所述第二服務(wù)器。
7.如權(quán)利要求6所述的計算機存儲介質(zhì),其特征在于,所述方法還包括 從所述多個地址隨機選擇208所述多個地址的所述子集。
8.如權(quán)利要求6所述的計算機存儲介質(zhì),其特征在于,所述方法還包括 從所述第二服務(wù)器接收302與服務(wù)器性能有關(guān)的狀態(tài)消息;以及 響應(yīng)于接收到所述狀態(tài)消息,向至少第三服務(wù)器發(fā)送304新的連接請求,其中所述第三服務(wù)器是所述集群環(huán)境的一部分;以及連接306到所述第三服務(wù)器。
9.一種用于提供持久句柄的計算機系統(tǒng),所述系統(tǒng)包括 集群106中的至少第一服務(wù)器106A和第二服務(wù)器106B ; 所述第一服務(wù)器被配置成接收502來自客戶機的連接請求,其中所述連接請求包括標識先前建立的與所述第二服務(wù)器的會話的會話建立請求; 向所述第二服務(wù)器發(fā)送506對所述先前建立的會話的所有權(quán)請求;以及 所述第二服務(wù)器被配置成 接收410來自所述第一服務(wù)器的請求; 完成412對所述一組句柄的待決操作;以及 使所述一組句柄無效414。
10.如權(quán)利要求9所述的計算機系統(tǒng),其特征在于,所述第二服務(wù)器還被配置成 將所述一組句柄轉(zhuǎn)移到所述第一服務(wù)器,其中所述一組句柄是按批轉(zhuǎn)移的。
全文摘要
本發(fā)明涉及SMB2擴展。公開了用于在經(jīng)擴展的集群環(huán)境中操作的客戶機和服務(wù)器的系統(tǒng)和方法。通過向客戶機提供并行地嘗試與多個服務(wù)器進行連接的能力,在將客戶機連接到集群環(huán)境的過程中引入了效率。在該集群環(huán)境中操作的服務(wù)器也能夠提供文件句柄和其他狀態(tài)信息的持久存儲。狀態(tài)信息和持久句柄的所有權(quán)可在各服務(wù)器之間轉(zhuǎn)移,從而向客戶機提供了在維持對該集群環(huán)境中的資源的訪問的情況下從一個服務(wù)器移到另一服務(wù)器的機會。
文檔編號G06F17/30GK102946405SQ20121033104
公開日2013年2月27日 申請日期2012年9月7日 優(yōu)先權(quán)日2011年9月9日
發(fā)明者D·M·克魯斯, D·E·洛文格, T·E·喬利, J·T·品克頓, M·喬治, R·C·巴特帕蒂, M·商 申請人:微軟公司