專利名稱:分布式數(shù)據(jù)存儲(chǔ)的制作方法
技術(shù)領(lǐng)域:
本公開(kāi)涉及在包括多個(gè)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)存儲(chǔ)系統(tǒng)中寫數(shù)據(jù)和保持?jǐn)?shù)據(jù)的方法,此方法被應(yīng)用在服務(wù)器和數(shù)據(jù)存儲(chǔ)系統(tǒng)中的存儲(chǔ)節(jié)點(diǎn)中。本公開(kāi)還涉及能夠執(zhí)行此方法的存儲(chǔ)節(jié)點(diǎn)和服務(wù)器。
背景技術(shù):
類似方法已在例如美國(guó)2005/0M6393A1中被公開(kāi)。此方法被公開(kāi),用于一種在不同地理位置使用多個(gè)存儲(chǔ)中心的系統(tǒng)。分布式對(duì)象存儲(chǔ)管理器被包括來(lái)保存關(guān)于所存儲(chǔ)數(shù)據(jù)的信息。與此系統(tǒng)相關(guān)的一個(gè)問(wèn)題是如何完成簡(jiǎn)單和尚健全和可靠的寫數(shù)據(jù)和保持?jǐn)?shù)據(jù)。
發(fā)明內(nèi)容
因此本公開(kāi)的一個(gè)目標(biāo)在于在分布式存儲(chǔ)系統(tǒng)中實(shí)現(xiàn)健全的寫數(shù)據(jù)或保持?jǐn)?shù)據(jù), 而不使用集中保持服務(wù)器,其自身可以是系統(tǒng)中的弱連接。這個(gè)目標(biāo)的實(shí)現(xiàn)是通過(guò)最初提到的方法,該方法在存儲(chǔ)節(jié)點(diǎn)中完成,并包括監(jiān)控系統(tǒng)中其他存儲(chǔ)節(jié)點(diǎn)的狀態(tài)和在數(shù)據(jù)存儲(chǔ)系統(tǒng)中執(zhí)行的寫操作;基于監(jiān)控,檢測(cè)數(shù)據(jù)存儲(chǔ)系統(tǒng)中的情況,其意指在數(shù)據(jù)存儲(chǔ)系統(tǒng)中的節(jié)點(diǎn)之間對(duì)數(shù)據(jù)復(fù)制的需求,并且如果此情況被檢測(cè)到,則開(kāi)始復(fù)制過(guò)程。該復(fù)制過(guò)程包含發(fā)送多播消息到多個(gè)存儲(chǔ)節(jié)點(diǎn),消息查詢這些存儲(chǔ)節(jié)點(diǎn)中的哪些存儲(chǔ)了具體數(shù)據(jù)。通過(guò)定義這樣的方法,每個(gè)存儲(chǔ)節(jié)點(diǎn)都可作用于整個(gè)系統(tǒng)的數(shù)據(jù)保持。如果一存儲(chǔ)節(jié)點(diǎn)故障,其數(shù)據(jù)可以通過(guò)系統(tǒng)中的其他節(jié)點(diǎn)恢復(fù),系統(tǒng)可以因此認(rèn)為其自我恢復(fù)。監(jiān)控可以包含聆聽(tīng)來(lái)自系統(tǒng)中其他存儲(chǔ)節(jié)點(diǎn)的心跳(heartbeat)信號(hào)。意指復(fù)制需求的條件則是出故障的存儲(chǔ)節(jié)點(diǎn)。數(shù)據(jù)包含了文件,且意指復(fù)制需求的條件可以為文件刪除或文件不一致中的一種。包含需要復(fù)制的文件的復(fù)制列表可以被保持并可以包含優(yōu)先級(jí)。復(fù)制過(guò)程可以包括發(fā)送多播消息到多個(gè)存儲(chǔ)節(jié)點(diǎn),要求查詢那些存儲(chǔ)節(jié)點(diǎn)中的哪些存儲(chǔ)了具體數(shù)據(jù),從那些存儲(chǔ)節(jié)點(diǎn)接收含有該具體數(shù)據(jù)的響應(yīng),確定所述具體數(shù)據(jù)是否存儲(chǔ)在充足數(shù)量的存儲(chǔ)節(jié)點(diǎn)上,并且,如果沒(méi)有,選擇至少一個(gè)另外的存儲(chǔ)節(jié)點(diǎn)并傳送所述具體數(shù)據(jù)到該存儲(chǔ)節(jié)點(diǎn)。此外,含有其過(guò)時(shí)版本的存儲(chǔ)節(jié)點(diǎn)上的具體數(shù)據(jù)可以被更新。另外,復(fù)制過(guò)程可以開(kāi)始于所述存儲(chǔ)節(jié)點(diǎn)試圖在系統(tǒng)的所有存儲(chǔ)節(jié)點(diǎn)中獲得待被復(fù)制的文件主控權(quán)。監(jiān)控還可以包含監(jiān)控在數(shù)據(jù)存儲(chǔ)系統(tǒng)中執(zhí)行的讀取操作。本公開(kāi)還涉及一種數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn),該存儲(chǔ)節(jié)點(diǎn)用于執(zhí)行與所述方法相對(duì)應(yīng)的數(shù)據(jù)保持。存儲(chǔ)節(jié)點(diǎn)則通常包括用于執(zhí)行方法的動(dòng)作的裝置。目標(biāo)的實(shí)現(xiàn)同樣是利用最初提到的那種將寫數(shù)據(jù)到數(shù)據(jù)存儲(chǔ)系統(tǒng)的方法,該方法在運(yùn)行訪問(wèn)數(shù)據(jù)存儲(chǔ)系統(tǒng)中的數(shù)據(jù)的應(yīng)用的服務(wù)器中被完成。該方法包括發(fā)送多播存儲(chǔ)查詢到多個(gè)存儲(chǔ)節(jié)點(diǎn),接收來(lái)自該存儲(chǔ)節(jié)點(diǎn)的子集的多個(gè)響應(yīng),該響應(yīng)包含涉及每個(gè)服務(wù)器的地理位置的地理數(shù)據(jù),基于該響應(yīng)選擇所述子集中的至少兩個(gè)存儲(chǔ)節(jié)點(diǎn),發(fā)送數(shù)據(jù)和對(duì)應(yīng)于該數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí)符到選擇的存儲(chǔ)節(jié)點(diǎn)。此方法在地理多樣化以有效方式實(shí)現(xiàn)的意義上,完成健全的寫數(shù)據(jù)。地理位置可以包含所涉及的(in question)存儲(chǔ)節(jié)點(diǎn)的經(jīng)度和緯度,響應(yīng)還可以包含所涉及的系統(tǒng)負(fù)載和/或存儲(chǔ)節(jié)點(diǎn)的系統(tǒng)壽命。多播存儲(chǔ)查詢可以包括識(shí)別待被存儲(chǔ)的數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí)符。典型的,至少三個(gè)節(jié)點(diǎn)可以被選擇用來(lái)存儲(chǔ),并且成功地存儲(chǔ)數(shù)據(jù)的存儲(chǔ)節(jié)點(diǎn)列表可以被發(fā)送到所選擇的存儲(chǔ)節(jié)點(diǎn)。本公開(kāi)還涉及一種服務(wù)器,用來(lái)實(shí)現(xiàn)相應(yīng)于所述方法的寫數(shù)據(jù)。服務(wù)器通常包括用于實(shí)現(xiàn)方法的動(dòng)作的裝置。附圖簡(jiǎn)述
圖1說(shuō)明分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)。圖2A-2C和圖3說(shuō)明數(shù)據(jù)讀取過(guò)程。圖4A-4C和圖5說(shuō)明數(shù)據(jù)寫過(guò)程。圖6按圖示說(shuō)明多個(gè)文件被存儲(chǔ)到多個(gè)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)的情況。圖7說(shuō)明心跳信號(hào)的傳送。圖8為數(shù)據(jù)保持過(guò)程的概況。具體描述本公開(kāi)涉及一種包括多個(gè)存儲(chǔ)節(jié)點(diǎn)的分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)。系統(tǒng)結(jié)構(gòu)及其使用環(huán)境如圖1概述。用戶計(jì)算機(jī)1通過(guò)互聯(lián)網(wǎng)3訪問(wèn)在服務(wù)器7上運(yùn)行的應(yīng)用程序5。如此處說(shuō)明,因而用戶環(huán)境是常規(guī)客戶端-服務(wù)器配置,其本身被熟知。然而,需要注意的是,要被公開(kāi)的此數(shù)據(jù)存儲(chǔ)系統(tǒng)也可以用于其它配置。在說(shuō)明的例子中,兩個(gè)應(yīng)用程序5、9在服務(wù)器7上運(yùn)行。當(dāng)然,但是,這些數(shù)量的應(yīng)用程序可以是不同的。每一個(gè)應(yīng)用程序有應(yīng)用程序接口(API) 11,該應(yīng)用程序接口提供關(guān)于分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)13的接口并支持請(qǐng)求,典型的,是來(lái)自運(yùn)行在服務(wù)器上的應(yīng)用程序的寫和讀請(qǐng)求。從應(yīng)用程序的角度,來(lái)自/到數(shù)據(jù)存儲(chǔ)系統(tǒng)13的讀或?qū)懶畔⒉恍枰谑褂闷渌魏畏N類的存儲(chǔ)解決方案方面體現(xiàn)出不同,例如文件服務(wù)器或簡(jiǎn)單的硬件驅(qū)動(dòng)。每一個(gè)API 11與在存儲(chǔ)系統(tǒng)13中的存儲(chǔ)節(jié)點(diǎn)15通信,并且存儲(chǔ)節(jié)點(diǎn)之間互相進(jìn)行通信。這些通信基于傳輸控制協(xié)議(TCP)和用戶數(shù)據(jù)報(bào)協(xié)議(UDP)。這些概念技術(shù)人員熟知,并在此不做進(jìn)一步解釋。值得注意的是,在同一個(gè)服務(wù)器7上的不同的API 11可以訪問(wèn)不同系列的存儲(chǔ)節(jié)點(diǎn)15。還值得注意的是,可以存在比一個(gè)更多的服務(wù)器7來(lái)訪問(wèn)每一個(gè)存儲(chǔ)節(jié)點(diǎn)15。但是這不會(huì)任何更大程度地影響存儲(chǔ)節(jié)點(diǎn)的運(yùn)轉(zhuǎn)方式,如以后將被詳述的。分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)的組件為存儲(chǔ)節(jié)點(diǎn)15和API 11,在服務(wù)器7中,其訪問(wèn)存儲(chǔ)節(jié)點(diǎn)15。因此本公開(kāi)涉及在服務(wù)器7中和在存儲(chǔ)節(jié)點(diǎn)15中實(shí)現(xiàn)的方法。那些方法最初會(huì)被實(shí)施為分別運(yùn)行在服務(wù)器和存儲(chǔ)節(jié)點(diǎn)上的軟件安裝,且共同確定整個(gè)分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)的運(yùn)轉(zhuǎn)和屬性。
存儲(chǔ)節(jié)點(diǎn)15可以典型地由文件服務(wù)器包含,文件服務(wù)器被提供有多個(gè)功能模塊。 存儲(chǔ)節(jié)點(diǎn)因此可以包括存儲(chǔ)介質(zhì)17,該存儲(chǔ)介質(zhì)典型地包括多個(gè)硬件驅(qū)動(dòng),并可選擇地被配置為RAID(獨(dú)立磁盤冗余數(shù)組)系統(tǒng)。然而也可想到其他形式的存儲(chǔ)媒介。存儲(chǔ)節(jié)點(diǎn)15可以還包含目錄19,該目錄包括一些數(shù)據(jù)實(shí)體/存儲(chǔ)節(jié)點(diǎn)關(guān)系的列表作為主列表(host list),如在以后將討論的。除主列表外,每一個(gè)存儲(chǔ)節(jié)點(diǎn)還含有一個(gè)節(jié)點(diǎn)列表,該列表包含在存儲(chǔ)節(jié)點(diǎn)的其集合或組中的全部存儲(chǔ)節(jié)點(diǎn)的IP地址。組中的存儲(chǔ)節(jié)點(diǎn)數(shù)量可以在幾個(gè)到幾百個(gè)存儲(chǔ)節(jié)點(diǎn)間變化。節(jié)點(diǎn)列表可以還具有一個(gè)版本號(hào)。此外,存儲(chǔ)節(jié)點(diǎn)15可以包含一個(gè)復(fù)制模塊21和一個(gè)群集監(jiān)視器模塊23。復(fù)制模塊21包含一個(gè)存儲(chǔ)節(jié)點(diǎn)API 25,并被配置成用來(lái)執(zhí)行識(shí)別需求和實(shí)現(xiàn)復(fù)制過(guò)程的功能,此將在以后用細(xì)節(jié)詳述。復(fù)制模塊21的存儲(chǔ)節(jié)點(diǎn)API 25含有的節(jié)點(diǎn)可以最大程度地與服務(wù)器7的存儲(chǔ)節(jié)點(diǎn)API 11的節(jié)點(diǎn)對(duì)應(yīng),同時(shí)復(fù)制過(guò)程包括的功能最大程度地與服務(wù)器7在被描述的讀和寫操作期間所實(shí)現(xiàn)的功能保持對(duì)應(yīng)。例如,復(fù)制過(guò)程中執(zhí)行的寫操作最大程度地與服務(wù)器7實(shí)現(xiàn)的寫操作相對(duì)應(yīng)。群集監(jiān)視器模塊23配置成實(shí)現(xiàn)監(jiān)控在數(shù)據(jù)存儲(chǔ)系統(tǒng) 13中的其他存儲(chǔ)節(jié)點(diǎn),此將在以后用細(xì)節(jié)詳述。分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)的存儲(chǔ)節(jié)點(diǎn)15可被考慮存在于同一層次級(jí)。不需要指定任何主存儲(chǔ)節(jié)點(diǎn)來(lái)負(fù)責(zé)保持存儲(chǔ)數(shù)據(jù)實(shí)體的目錄和監(jiān)控?cái)?shù)據(jù)一致性,等。反而,所有存儲(chǔ)節(jié)點(diǎn) 15可被認(rèn)為是等同的,以及有時(shí)可以相對(duì)于系統(tǒng)中的其他存儲(chǔ)節(jié)點(diǎn)實(shí)現(xiàn)數(shù)據(jù)管理操作。這個(gè)等式保證系統(tǒng)的健全。如果一個(gè)存儲(chǔ)節(jié)點(diǎn)出故障,系統(tǒng)中的其他存儲(chǔ)節(jié)點(diǎn)將掩蓋出故障的節(jié)點(diǎn)并保證可靠的數(shù)據(jù)存儲(chǔ)。系統(tǒng)操作將按以下順序闡述讀數(shù)據(jù),寫數(shù)據(jù),以及數(shù)據(jù)保持。即使這些方法一起奏效,值得注意的是它們可以原則上互相獨(dú)立實(shí)現(xiàn)。即,例如數(shù)據(jù)讀取方法可以提供很好的屬性,即使本公開(kāi)的數(shù)據(jù)寫方法沒(méi)有被用到,反之亦然。讀取的方法現(xiàn)在根據(jù)圖2A-2C和3進(jìn)行闡述,后者是用于說(shuō)明方法的流程圖。像系統(tǒng)中的其他功能一樣,讀取的操作利用多播通信與多個(gè)存儲(chǔ)節(jié)點(diǎn)同時(shí)進(jìn)行通信。通過(guò)多播或IP多播這里意為點(diǎn)到多點(diǎn)的通信,該通信通過(guò)發(fā)送消息到IP地址來(lái)完成, 該地址保留在多播應(yīng)用程序中。比如,典型地為一個(gè)要求的消息被發(fā)送到這樣的IP地址(例如,244. 0.0. 1),并且多個(gè)接收服務(wù)器被注冊(cè)為該IP地址的用戶。每個(gè)接收服務(wù)器擁有自己的IP地址。當(dāng)網(wǎng)絡(luò)中的交換機(jī)接收到指向M4. 0. 0. 1的消息時(shí),交換機(jī)將該消息轉(zhuǎn)發(fā)到每個(gè)注冊(cè)為用戶的服務(wù)器的IP地址。原則上,對(duì)于多播地址,只有一個(gè)服務(wù)器可以注冊(cè)為用戶,在該情況下完成點(diǎn)對(duì)點(diǎn)的通信。然而,在本公開(kāi)的情況下,這樣的通信仍考慮為多播通信,因?yàn)槎嗖シ桨敢驯贿\(yùn)用。參照具有單個(gè)接收方的通信,也使用單播通信。根據(jù)圖2A和圖3,該方法用于從一個(gè)數(shù)據(jù)存儲(chǔ)系統(tǒng)中檢索數(shù)據(jù),該方法包括發(fā)送31多播查詢到多個(gè)存儲(chǔ)節(jié)點(diǎn)15。在說(shuō)明示例中有五個(gè)存儲(chǔ)節(jié)點(diǎn),每個(gè)存儲(chǔ)節(jié)點(diǎn)具有一 IP (互聯(lián)網(wǎng)協(xié)議)地址192. 168. 1. 1,192. 168. 1.2,等。無(wú)需多說(shuō),存儲(chǔ)節(jié)點(diǎn)的數(shù)量只是一個(gè)例子。查詢包括數(shù)據(jù)標(biāo)識(shí)符“2B9B4A97-76E5-499E-A21A6D7932DD7927”,該標(biāo)識(shí)符可以例如為通用唯一標(biāo)識(shí)符UUID,就其本身而言被熟知。
存儲(chǔ)節(jié)點(diǎn)掃描自身以獲得對(duì)應(yīng)標(biāo)識(shí)符的數(shù)據(jù)。如果這樣的數(shù)據(jù)被找到,則存儲(chǔ)節(jié)點(diǎn)發(fā)送響應(yīng),該響應(yīng)被服務(wù)器7接收33,如圖2B。如說(shuō)明中的,響應(yīng)還可以有選擇地含有除表示存儲(chǔ)節(jié)點(diǎn)具有相關(guān)數(shù)據(jù)的復(fù)本以外的其它信息。具體地說(shuō),響應(yīng)可以含有從存儲(chǔ)節(jié)點(diǎn)目錄來(lái)的關(guān)于含有數(shù)據(jù)的其他存儲(chǔ)節(jié)點(diǎn)的信息、關(guān)于哪個(gè)版本的數(shù)據(jù)被包含于存儲(chǔ)節(jié)點(diǎn)的信息、以及關(guān)于存儲(chǔ)節(jié)點(diǎn)目前暴露于哪個(gè)負(fù)載的信息?;谠擁憫?yīng),服務(wù)器選擇35從其檢索數(shù)據(jù)的一個(gè)或多個(gè)存儲(chǔ)節(jié)點(diǎn),并發(fā)送37對(duì)數(shù)據(jù)的單播請(qǐng)求到那個(gè)/那些存儲(chǔ)節(jié)點(diǎn),如圖2C。響應(yīng)于對(duì)數(shù)據(jù)的請(qǐng)求,存儲(chǔ)節(jié)點(diǎn)用單播發(fā)送相關(guān)數(shù)據(jù)到接收39數(shù)據(jù)的服務(wù)器。在圖示例中,僅有一個(gè)存儲(chǔ)節(jié)點(diǎn)被選擇。雖然這已經(jīng)足夠,但為了接收兩組數(shù)據(jù)來(lái)使一致性檢查成為可能,可以選擇多于一個(gè)的存儲(chǔ)節(jié)點(diǎn)。如果數(shù)據(jù)傳輸失敗,服務(wù)器可以選擇另外的存儲(chǔ)節(jié)點(diǎn)來(lái)檢索。存儲(chǔ)節(jié)點(diǎn)的選擇可以基于一種算法,該算法考慮若干因子以便達(dá)到良好的全系統(tǒng)效果。典型的,具有最新的數(shù)據(jù)版本和最低負(fù)載的存儲(chǔ)節(jié)點(diǎn)將被選擇,盡管其他概念也全部可以想到??蛇x擇地,通過(guò)服務(wù)器發(fā)送列表到包含在內(nèi)的所有存儲(chǔ)節(jié)點(diǎn),可推斷出操作,表明了哪些節(jié)點(diǎn)含有數(shù)據(jù)和用哪個(gè)版本,可以由此得出結(jié)果?;谶@些信息,存儲(chǔ)節(jié)點(diǎn)可以通過(guò)將被描述的復(fù)制過(guò)程,正確地自己保持?jǐn)?shù)據(jù)。圖4A-4C和圖5說(shuō)明分布式數(shù)據(jù)存儲(chǔ)系統(tǒng)的數(shù)據(jù)寫過(guò)程。根據(jù)圖4A和圖5,該方法包括服務(wù)器發(fā)送41多播存儲(chǔ)查詢到多個(gè)存儲(chǔ)節(jié)點(diǎn)。存儲(chǔ)查詢包括數(shù)據(jù)標(biāo)識(shí)符且主要包括的問(wèn)題是接收存儲(chǔ)節(jié)點(diǎn)是否能夠保存此文件??蛇x擇地, 存儲(chǔ)節(jié)點(diǎn)可以檢查它們的內(nèi)部目錄查看其是否已有這個(gè)名字的文件,以及在不太可能的情況下可以通知服務(wù)器7是此情況,從而服務(wù)器可以重命名文件。在任何情況下,至少存儲(chǔ)節(jié)點(diǎn)的子集可以通過(guò)單播傳送提供到服務(wù)器7的響應(yīng)。 典型的,具有預(yù)定的最小空余磁盤空間的存儲(chǔ)節(jié)點(diǎn)回答查詢。服務(wù)器7接收43響應(yīng),該響應(yīng)包含與每個(gè)服務(wù)器的地理位置有關(guān)的地理數(shù)據(jù)。例如,如圖4B所示,地理數(shù)據(jù)可以包含每個(gè)服務(wù)器的經(jīng)度、緯度和高度。然而,其他種類的地理數(shù)據(jù)也可以被想到,如郵編或類似物。除地理數(shù)據(jù)外,更多的信息可以被提供,其用作對(duì)存儲(chǔ)節(jié)點(diǎn)選擇過(guò)程的輸入。在說(shuō)明示例中,每個(gè)存儲(chǔ)節(jié)點(diǎn)的空余空間量與存儲(chǔ)節(jié)點(diǎn)系統(tǒng)的壽命指示和存儲(chǔ)節(jié)點(diǎn)現(xiàn)在經(jīng)受的負(fù)載的指示一起被提供?;诮邮盏捻憫?yīng),服務(wù)器在子集中選擇45至少兩個(gè)存儲(chǔ)節(jié)點(diǎn),在典型的實(shí)施方式為三個(gè)存儲(chǔ)節(jié)點(diǎn),用于存儲(chǔ)數(shù)據(jù)。存儲(chǔ)節(jié)點(diǎn)的選擇通過(guò)考慮不同數(shù)據(jù)的算法的方式來(lái)實(shí)現(xiàn)。 該選擇的實(shí)現(xiàn)用來(lái)獲得某種地理多樣性。至少可以優(yōu)選地避免只有同一棧中的文件服務(wù)器被選擇作為存儲(chǔ)節(jié)點(diǎn)。典型的,可獲得一種好的地理多樣性,即使在不同板塊中選擇存儲(chǔ)節(jié)點(diǎn)。除地理多樣性外,其他因素可以包含在選擇算法中。只要達(dá)到最小的地理多樣性,空余空間、系統(tǒng)壽命和現(xiàn)在的負(fù)載都可以被考慮其中。當(dāng)存儲(chǔ)節(jié)點(diǎn)被選出時(shí),待存儲(chǔ)的數(shù)據(jù)和對(duì)應(yīng)的數(shù)據(jù)標(biāo)識(shí)符將被發(fā)送到每個(gè)選擇的節(jié)點(diǎn),典型地使用單播傳送??蛇x擇性的,操作可以通過(guò)每個(gè)存儲(chǔ)節(jié)點(diǎn)結(jié)束,所述存儲(chǔ)節(jié)點(diǎn)已成功執(zhí)行寫操作,以及發(fā)送確認(rèn)到服務(wù)器。服務(wù)器緊接著發(fā)送列表到所涉及的所有存儲(chǔ)節(jié)點(diǎn),表明哪些節(jié)點(diǎn)成功地寫數(shù)據(jù)和哪些沒(méi)有成功地寫數(shù)據(jù)?;谶@個(gè)信息,存儲(chǔ)節(jié)點(diǎn)可以自己通過(guò)復(fù)制過(guò)程正確的保持?jǐn)?shù)據(jù),此將被詳述。例如,如果一個(gè)存儲(chǔ)節(jié)點(diǎn)的寫操作失敗,則需要復(fù)制文件到另外一個(gè)存儲(chǔ)節(jié)點(diǎn),以便用于該文件的期望數(shù)量的存儲(chǔ)節(jié)點(diǎn)。數(shù)據(jù)寫方法本身允許在服務(wù)器7中的API以一種非常健全的方式來(lái)存儲(chǔ)數(shù)據(jù),從而可以提供很好的地理多樣性。除了寫和讀操作外,服務(wù)器7中的API可以實(shí)現(xiàn)刪除文件和更新文件的操作。這些過(guò)程將在以下結(jié)合數(shù)據(jù)保持過(guò)程被詳述。數(shù)據(jù)保持過(guò)程的目的在于確保有合理數(shù)量的無(wú)故障存儲(chǔ)節(jié)點(diǎn),每個(gè)存儲(chǔ)節(jié)點(diǎn)存儲(chǔ)每個(gè)文件的最新版本。此外,可以提供無(wú)刪除文件存儲(chǔ)到任何存儲(chǔ)節(jié)點(diǎn)的功能。保持由存儲(chǔ)節(jié)點(diǎn)自身實(shí)現(xiàn)。這里因此不需要專用的“主控”來(lái)負(fù)責(zé)數(shù)據(jù)存儲(chǔ)的保持。這確保作為“主控”的提高的可靠性可能在其他方面成為系統(tǒng)的弱點(diǎn)。圖6按圖示說(shuō)明了多個(gè)文件存儲(chǔ)到多個(gè)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)中的情況。在圖例中,12個(gè)節(jié)點(diǎn)具有從192. 168. 1. 1到192. 168. 1. 12的連續(xù)編號(hào)的IP地址,該12個(gè)節(jié)點(diǎn)被描述以用于說(shuō)明。然而無(wú)須多說(shuō),IP地址編號(hào)根本不需要在同一范圍內(nèi)。節(jié)點(diǎn)以環(huán)形順序排列僅為簡(jiǎn)便闡述,也就是說(shuō),節(jié)點(diǎn)不需要具有特定的順序。每個(gè)節(jié)點(diǎn)存儲(chǔ)一個(gè)或兩個(gè)被識(shí)別的文件,為了簡(jiǎn)便的目的,以字母A-F來(lái)標(biāo)識(shí)。根據(jù)圖8,保存數(shù)據(jù)的方法包括檢測(cè)51數(shù)據(jù)存儲(chǔ)系統(tǒng)的情況以及復(fù)制過(guò)程53,所述情況意指數(shù)據(jù)存儲(chǔ)系統(tǒng)中節(jié)點(diǎn)之間復(fù)制數(shù)據(jù)的需求。檢測(cè)過(guò)程51的結(jié)果是文件列表55, 對(duì)于其識(shí)別復(fù)制需求。該列表還可以包括關(guān)于不同復(fù)制需求的優(yōu)先級(jí)的數(shù)據(jù)?;谠摿斜?, 復(fù)制過(guò)程53被實(shí)現(xiàn)。分布式存儲(chǔ)的健全性依靠于每份文件的合理數(shù)量的副本、正確的版本存儲(chǔ)在系統(tǒng)中。在說(shuō)明的例子中,每份文件的三份副本被存儲(chǔ)。然而,例如,如果地址為192.168.1.5 的存儲(chǔ)節(jié)點(diǎn)出現(xiàn)錯(cuò)誤,則預(yù)期數(shù)量的文件存儲(chǔ)副本“B”和“C”將不能被滿足。一個(gè)導(dǎo)致復(fù)制需求的事件因此為系統(tǒng)中存儲(chǔ)節(jié)點(diǎn)的故障。系統(tǒng)中的每個(gè)存儲(chǔ)節(jié)點(diǎn)可以監(jiān)控系統(tǒng)中其他存儲(chǔ)節(jié)點(diǎn)的狀態(tài)。這可以通過(guò)讓每個(gè)存儲(chǔ)節(jié)點(diǎn)每隔一定時(shí)間發(fā)出所謂的心跳信號(hào)來(lái)實(shí)現(xiàn),如圖7所說(shuō)明的。在說(shuō)明的例子中,地址為192. 168. 1. 7的存儲(chǔ)節(jié)點(diǎn)發(fā)出多播信號(hào)57到系統(tǒng)中的其他存儲(chǔ)節(jié)點(diǎn),表明該存儲(chǔ)節(jié)點(diǎn)工作正常。這個(gè)信號(hào)可以被系統(tǒng)中的執(zhí)行心跳監(jiān)控59 (如圖8)的所有其他運(yùn)行的存儲(chǔ)節(jié)點(diǎn)或存儲(chǔ)節(jié)點(diǎn)的子集接收。然而,在存儲(chǔ)節(jié)點(diǎn)的地址為192. 168. 1. 5的情況下,該存儲(chǔ)節(jié)點(diǎn)有故障且不發(fā)送任何心跳信號(hào)。因此,其他存儲(chǔ)節(jié)點(diǎn)將察覺(jué)此節(jié)點(diǎn)長(zhǎng)時(shí)間沒(méi)有發(fā)出任何心跳信號(hào),由此表明問(wèn)題中提到的存儲(chǔ)節(jié)點(diǎn)不運(yùn)轉(zhuǎn)。除存儲(chǔ)節(jié)點(diǎn)的地址外,心跳信號(hào)還可以包含它的節(jié)點(diǎn)列表版本號(hào)。另外的存儲(chǔ)節(jié)點(diǎn)聆聽(tīng)心跳信號(hào)以及發(fā)現(xiàn)傳送的存儲(chǔ)節(jié)點(diǎn)具有后續(xù)版本的節(jié)點(diǎn)列表,該另外的存儲(chǔ)節(jié)點(diǎn)然后可以要求那個(gè)傳送的存儲(chǔ)節(jié)點(diǎn)傳送它的節(jié)點(diǎn)列表。這意味著通過(guò)添加和移除存儲(chǔ)節(jié)點(diǎn)以及發(fā)送新的節(jié)點(diǎn)列表版本到一個(gè)信號(hào)存儲(chǔ)節(jié)點(diǎn),可以簡(jiǎn)單地獲取存儲(chǔ)節(jié)點(diǎn)的添加和移除。 此節(jié)點(diǎn)列表然后將傳到系統(tǒng)中的所有其他的存儲(chǔ)節(jié)點(diǎn)。再根據(jù)圖8,每個(gè)存儲(chǔ)節(jié)點(diǎn)搜索61其內(nèi)部目錄來(lái)尋找文件,該文件被故障存儲(chǔ)節(jié)點(diǎn)存儲(chǔ)。自身存儲(chǔ)了文件“B”和“C”的存儲(chǔ)節(jié)點(diǎn)將找到故障存儲(chǔ)節(jié)點(diǎn),并因此能夠添加相應(yīng)的文件到它們的列表陽(yáng).檢測(cè)過(guò)程然而也同樣揭示意指復(fù)制文件需求的其他條件。典型的這類的情況可能不一致,也就是說(shuō),一個(gè)或更多的存儲(chǔ)節(jié)點(diǎn)具有文件的作廢版本。刪除操作同樣意指復(fù)制過(guò)程,因?yàn)檫@個(gè)過(guò)程可以實(shí)現(xiàn)文件的實(shí)際物理刪除。服務(wù)器的刪除操作然后僅需要確保存儲(chǔ)節(jié)點(diǎn)為問(wèn)題中提到的文件設(shè)置刪除標(biāo)志。每個(gè)節(jié)點(diǎn)可以因此監(jiān)控在數(shù)據(jù)存儲(chǔ)系統(tǒng)中實(shí)現(xiàn)的讀和寫操作。信息在讀和寫操作完成后由服務(wù)器7提供,該信息分別可以表明一個(gè)存儲(chǔ)節(jié)點(diǎn)含有文件的作廢版本(在讀操作的情況下)或是存儲(chǔ)節(jié)點(diǎn)不能成功地實(shí)現(xiàn)寫操作。在這兩種情況下,需要通過(guò)復(fù)制保持?jǐn)?shù)據(jù),從而使保持過(guò)程的整體目標(biāo)得以實(shí)現(xiàn)。除基本的讀和寫操作63、65之外,至少兩個(gè)額外的過(guò)程還可以提供存在復(fù)制需求的指示,即,現(xiàn)在給出簡(jiǎn)要解釋的刪除67和更新69過(guò)程。刪除過(guò)程由服務(wù)器7開(kāi)始(如圖1)。類似于讀過(guò)程,服務(wù)器以多播形式發(fā)送查詢到所有存儲(chǔ)節(jié)點(diǎn),以便找出哪個(gè)存儲(chǔ)節(jié)點(diǎn)具有具體數(shù)據(jù)標(biāo)識(shí)符的數(shù)據(jù)。存儲(chǔ)節(jié)點(diǎn)瀏覽自身尋找具有相關(guān)標(biāo)識(shí)符的數(shù)據(jù),且如果它們具有問(wèn)題中提到的數(shù)據(jù)則用單播傳輸響應(yīng)。響應(yīng)可以包含含有數(shù)據(jù)的其他存儲(chǔ)節(jié)點(diǎn)的列表,該列表來(lái)自存儲(chǔ)節(jié)點(diǎn)目錄。服務(wù)器7然后發(fā)送單播請(qǐng)求到被考慮存儲(chǔ)被刪除文件的存儲(chǔ)節(jié)點(diǎn)。每個(gè)存儲(chǔ)節(jié)點(diǎn)設(shè)置關(guān)于文件的標(biāo)志并標(biāo)明其應(yīng)被刪除。文件然后被加入復(fù)制列表,并發(fā)送確認(rèn)到服務(wù)器。復(fù)制過(guò)程然后物理地刪除文件,如將被詳述的。更新過(guò)程具有類似于其中刪除過(guò)程中的尋找功能的尋找功能和類似于在寫過(guò)程中實(shí)現(xiàn)的寫功能的寫功能。服務(wù)器通過(guò)多播到所有存儲(chǔ)節(jié)點(diǎn)來(lái)發(fā)送查詢,以便找出哪個(gè)存儲(chǔ)節(jié)點(diǎn)具有帶有具體標(biāo)識(shí)符的數(shù)據(jù)。存儲(chǔ)節(jié)點(diǎn)掃描自身來(lái)尋找具有相關(guān)標(biāo)識(shí)符的數(shù)據(jù),且如果它們具有所涉及的數(shù)據(jù),則用單播傳輸來(lái)響應(yīng)。響應(yīng)可以包含含有數(shù)據(jù)的其他存儲(chǔ)節(jié)點(diǎn)的列表,該列表來(lái)自存儲(chǔ)節(jié)點(diǎn)目錄。服務(wù)器7然后發(fā)送單播請(qǐng)求,告知存儲(chǔ)節(jié)點(diǎn)來(lái)更新數(shù)據(jù)。請(qǐng)求當(dāng)然含有被更新的數(shù)據(jù)。更新數(shù)據(jù)的存儲(chǔ)節(jié)點(diǎn)發(fā)送確認(rèn)到服務(wù)器,該服務(wù)器通過(guò)發(fā)送單播傳輸來(lái)響應(yīng),該單播傳輸含有成功更新數(shù)據(jù)的存儲(chǔ)節(jié)點(diǎn)和未更新數(shù)據(jù)的存儲(chǔ)節(jié)點(diǎn)的列表。此外,保持過(guò)程可使用此列表。再根據(jù)圖8,讀取63操作、寫65操作、刪除67操作、和更新69操作都可以表明復(fù)制需求的存在。同樣適用于心跳監(jiān)控59。整個(gè)檢測(cè)過(guò)程51因此根據(jù)哪些文件需要被復(fù)制來(lái)生成數(shù)據(jù)。例如,讀取操作或是更新操作可以揭示具體存儲(chǔ)節(jié)點(diǎn)含有作廢版本的文件。刪除過(guò)程可以為具體文件設(shè)置刪除標(biāo)志。心跳監(jiān)控可以揭示存儲(chǔ)在故障存儲(chǔ)節(jié)點(diǎn)上的多個(gè)文件需要被復(fù)制到新的存儲(chǔ)節(jié)點(diǎn)。每個(gè)存儲(chǔ)節(jié)點(diǎn)監(jiān)控所有文件的復(fù)制需求,該文件存儲(chǔ)和保持復(fù)制列表55。復(fù)制列表55因此含有需要被復(fù)制的多個(gè)文件。文件可以根據(jù)每個(gè)復(fù)制的優(yōu)先級(jí)排序。典型的,這里可以有三種不同的優(yōu)先級(jí)水平。最高水平是為存儲(chǔ)節(jié)點(diǎn)保存其最新聯(lián)機(jī)副本的文件保留的。這類文件需要迅速?gòu)?fù)制到其他存儲(chǔ)節(jié)點(diǎn),以便可達(dá)到合理水平的冗余。中等水平的優(yōu)先級(jí)可以涉及存儲(chǔ)節(jié)點(diǎn)中版本不一致的文件。低水平的優(yōu)先級(jí)可以涉及存儲(chǔ)在故障存儲(chǔ)節(jié)點(diǎn)上的文件。存儲(chǔ)節(jié)點(diǎn)根據(jù)它們的優(yōu)先級(jí)水平處理復(fù)制列表55上的文件。復(fù)制過(guò)程現(xiàn)在關(guān)于存儲(chǔ)節(jié)點(diǎn)被描述,存儲(chǔ)節(jié)點(diǎn)在這里被稱為操作存儲(chǔ)節(jié)點(diǎn),雖然所有的存儲(chǔ)節(jié)點(diǎn)都可以這種方式被操作。
保持過(guò)程的復(fù)制部分53由操作存儲(chǔ)節(jié)點(diǎn)試圖71成為其想要復(fù)制的文件的主控開(kāi)始。操作存儲(chǔ)節(jié)點(diǎn)發(fā)送單播請(qǐng)求來(lái)成為其他存儲(chǔ)節(jié)點(diǎn)的主控,已知其他存儲(chǔ)節(jié)點(diǎn)存儲(chǔ)了問(wèn)題中提到的文件。目錄19(如圖1)提供主列表,該主列表包括關(guān)于詢問(wèn)哪些存儲(chǔ)節(jié)點(diǎn)的信息。如果,例如一旦有沖突請(qǐng)求,則其中一個(gè)存儲(chǔ)節(jié)點(diǎn)不能做出肯定的響應(yīng),文件會(huì)被暫時(shí)返回列表,而以列表中的下一個(gè)文件替代來(lái)進(jìn)行嘗試。否則操作存儲(chǔ)節(jié)點(diǎn)會(huì)被考慮作為這個(gè)文件的主控,以及其他存儲(chǔ)節(jié)點(diǎn)設(shè)置標(biāo)志,表示操作存儲(chǔ)節(jié)點(diǎn)為問(wèn)題中提到的文件的主控。下一步為在分布式存儲(chǔ)系統(tǒng)中找到73所涉及的文件的所有副本。這可以通過(guò)操作存儲(chǔ)節(jié)點(diǎn)發(fā)送多播查詢到所有存儲(chǔ)節(jié)點(diǎn)、詢問(wèn)它們中的哪些節(jié)點(diǎn)具有文件來(lái)實(shí)現(xiàn)。具有文件的存儲(chǔ)節(jié)點(diǎn)為查詢提交響應(yīng),包含它們保持的文件版本以及其主列表,主列表也就是含有保持在每個(gè)存儲(chǔ)節(jié)點(diǎn)列表中的目錄中的相關(guān)文件的存儲(chǔ)節(jié)點(diǎn)的列表。這些主列表然后由操作存儲(chǔ)節(jié)點(diǎn)合并75,從而主控主列表根據(jù)所有取回的主列表的集合而形成。如果找到額外的存儲(chǔ)節(jié)點(diǎn),當(dāng)操作存儲(chǔ)節(jié)點(diǎn)試圖成為主控時(shí),該存儲(chǔ)節(jié)點(diǎn)沒(méi)有被訪問(wèn),則此步驟可以現(xiàn)在對(duì)于額外的存儲(chǔ)節(jié)點(diǎn)進(jìn)行重復(fù)。主控主列表含有信息,該信息是關(guān)于不同的存儲(chǔ)節(jié)點(diǎn)保持哪個(gè)版本的文件和說(shuō)明整個(gè)存儲(chǔ)系統(tǒng)之內(nèi)的文件的狀態(tài)。如果操作存儲(chǔ)節(jié)點(diǎn)不具有所涉及的文件的最新版本,則該文件然后從具有最新版本的存儲(chǔ)節(jié)點(diǎn)中的一個(gè)被取回77。典型地,如果應(yīng)添加額外的存儲(chǔ)節(jié)點(diǎn),操作存儲(chǔ)節(jié)點(diǎn)則決定79是否需要更改主列表。如果是這樣,操作存儲(chǔ)節(jié)點(diǎn)可以實(shí)現(xiàn)非常類似寫過(guò)程的過(guò)程,所述寫過(guò)程由服務(wù)器實(shí)現(xiàn),并在有關(guān)圖4A-4C和圖5中被詳述。這個(gè)過(guò)程的結(jié)果是文件被寫到新的存儲(chǔ)節(jié)點(diǎn)。如果發(fā)生版本不一致,操作存儲(chǔ)節(jié)點(diǎn)可以更新81儲(chǔ)存在其他存儲(chǔ)節(jié)點(diǎn)的文件副本,從而使所存儲(chǔ)的所有文件具有正確的版本。存儲(chǔ)文件的多余副本可以被刪除83。如果復(fù)制過(guò)程由刪除操作開(kāi)始,過(guò)程可以直接跳到這個(gè)步驟。然后,一旦所有存儲(chǔ)節(jié)點(diǎn)接受了文件刪除,操作存儲(chǔ)節(jié)點(diǎn)簡(jiǎn)單地利用單播來(lái)請(qǐng)求所有存儲(chǔ)節(jié)點(diǎn)物理地刪除所涉及的文件。存儲(chǔ)節(jié)點(diǎn)確認(rèn)文件已被刪除。另外的狀態(tài),也就是說(shuō),文件的主控主列表被更新。之后可能可選擇地重復(fù)步驟 73-83來(lái)確保復(fù)制需求不再存在。該復(fù)制導(dǎo)致在步驟85中不需要更新的一致的主控主列表。此后,那個(gè)文件的復(fù)制過(guò)程結(jié)束,以及操作存儲(chǔ)節(jié)點(diǎn)可以通過(guò)發(fā)送對(duì)應(yīng)的消息到主列表上的所有其他存儲(chǔ)節(jié)點(diǎn),來(lái)釋放87狀態(tài)作為文件的主控。在此系統(tǒng)中,每個(gè)存儲(chǔ)節(jié)點(diǎn)負(fù)責(zé)保持其在整個(gè)存儲(chǔ)節(jié)點(diǎn)集合中存儲(chǔ)的所有文件, 該系統(tǒng)提供一種具有很好可靠性的(在存儲(chǔ)節(jié)點(diǎn)故障情況下的)自修復(fù)(在文件不一致或文件被刪除情況下的)自清潔系統(tǒng)。該系統(tǒng)具有簡(jiǎn)單的可擴(kuò)展性以及能夠同時(shí)存儲(chǔ)用于大量不同應(yīng)用的文件。本發(fā)明不限制具體公開(kāi)的示例,以及可以在所附權(quán)利要求的范圍內(nèi)以不同的方式進(jìn)行變化和更改。
權(quán)利要求
1.一種在數(shù)據(jù)存儲(chǔ)系統(tǒng)中保持?jǐn)?shù)據(jù)的方法,所述數(shù)據(jù)存儲(chǔ)系統(tǒng)包括多個(gè)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn),所述方法在所述數(shù)據(jù)存儲(chǔ)系統(tǒng)的存儲(chǔ)節(jié)點(diǎn)中被使用并包括-監(jiān)控(59)所述系統(tǒng)中的其他存儲(chǔ)節(jié)點(diǎn)的狀態(tài)以及在所述數(shù)據(jù)存儲(chǔ)系統(tǒng)中執(zhí)行的寫操作(65、67、69);-基于所述監(jiān)控,檢測(cè)(51)所述數(shù)據(jù)存儲(chǔ)系統(tǒng)中的條件,該條件意指所述數(shù)據(jù)存儲(chǔ)系統(tǒng)中的所述節(jié)點(diǎn)之間的數(shù)據(jù)復(fù)制需求;以及-如果這樣的條件被檢測(cè)到,則開(kāi)始復(fù)制過(guò)程(53),其中所述復(fù)制過(guò)程包括發(fā)送多播消息到多個(gè)存儲(chǔ)節(jié)點(diǎn),所述消息查詢這些存儲(chǔ)節(jié)點(diǎn)中的哪些節(jié)點(diǎn)存儲(chǔ)具體數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的方法,其中所述監(jiān)控包括聆聽(tīng)(59)來(lái)自所述系統(tǒng)中的其他存儲(chǔ)節(jié)點(diǎn)的心跳信號(hào),以及其中意指復(fù)制需求的條件為出故障的存儲(chǔ)節(jié)點(diǎn)。
3.根據(jù)權(quán)利要求1或2所述的方法,其中所述數(shù)據(jù)包括文件,且條件為文件刪除或文件不一致中的一種。
4.根據(jù)任一前述權(quán)利要求所述的方法,其中保持一復(fù)制列表,該復(fù)制列表包括需要復(fù)制的文件。
5.根據(jù)權(quán)利要求4所述的方法,其中所述復(fù)制列表包括優(yōu)先級(jí)。
6.根據(jù)任一前述權(quán)利要求所述的方法,其中所述復(fù)制過(guò)程還包括-從包含所述具體數(shù)據(jù)的那些存儲(chǔ)節(jié)點(diǎn)接收響應(yīng);-確定所述具體數(shù)據(jù)是否存儲(chǔ)在充足數(shù)量的存儲(chǔ)節(jié)點(diǎn)上;以及-如果沒(méi)有,則選擇至少一個(gè)額外的存儲(chǔ)節(jié)點(diǎn)并傳送所述具體數(shù)據(jù)到該存儲(chǔ)節(jié)點(diǎn)。
7.根據(jù)權(quán)利要求6所述的方法,還包括更新在包含所述具體數(shù)據(jù)的作廢版本的存儲(chǔ)節(jié)點(diǎn)上的所述具體數(shù)據(jù)。
8.根據(jù)權(quán)利要求6或7所述的方法,其中所述復(fù)制過(guò)程以所述存儲(chǔ)節(jié)點(diǎn)試圖在所述系統(tǒng)中的所有存儲(chǔ)節(jié)點(diǎn)中獲得待被復(fù)制的文件的主控權(quán)來(lái)開(kāi)始。
9.根據(jù)任一前述權(quán)利要求所述的方法,其中所述監(jiān)控還包括監(jiān)控在所述數(shù)據(jù)存儲(chǔ)系統(tǒng)中執(zhí)行的讀取操作(63)。
10.一種數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn),用于在包括多個(gè)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)存儲(chǔ)系統(tǒng)中保持?jǐn)?shù)據(jù),所述數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)包括-用于監(jiān)控所述系統(tǒng)中的其他存儲(chǔ)節(jié)點(diǎn)的狀態(tài)以及在所述數(shù)據(jù)存儲(chǔ)系統(tǒng)中執(zhí)行的寫操作的裝置;-用于基于所述監(jiān)控來(lái)檢測(cè)所述數(shù)據(jù)存儲(chǔ)系統(tǒng)中的條件的裝置,所述條件意指所述數(shù)據(jù)存儲(chǔ)系統(tǒng)中的節(jié)點(diǎn)之間的數(shù)據(jù)復(fù)制需求;以及-用于在這樣的條件被檢測(cè)到的情況下開(kāi)始復(fù)制過(guò)程的裝置,其中所述復(fù)制過(guò)程包括發(fā)送多播消息到多個(gè)存儲(chǔ)節(jié)點(diǎn),所述消息查詢這些存儲(chǔ)節(jié)點(diǎn)中的哪些節(jié)點(diǎn)存儲(chǔ)具體數(shù)據(jù)。
11.一種將數(shù)據(jù)寫到數(shù)據(jù)存儲(chǔ)系統(tǒng)的方法,所述數(shù)據(jù)存儲(chǔ)系統(tǒng)包括多個(gè)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn), 該方法用在運(yùn)行訪問(wèn)所述數(shù)據(jù)存儲(chǔ)系統(tǒng)中的數(shù)據(jù)的應(yīng)用的服務(wù)器中,且所述方法包括-發(fā)送Gl)多播存儲(chǔ)查詢到多個(gè)所述存儲(chǔ)節(jié)點(diǎn);-從所述存儲(chǔ)節(jié)點(diǎn)的子集接收多個(gè)響應(yīng),所述響應(yīng)包括涉及每個(gè)存儲(chǔ)節(jié)點(diǎn)的地理位置的地理數(shù)據(jù);-基于所述響應(yīng)選擇G5)所述子集中的至少兩個(gè)存儲(chǔ)節(jié)點(diǎn);以及-發(fā)送G7)數(shù)據(jù)和對(duì)應(yīng)于該數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí)符到所選擇的存儲(chǔ)節(jié)點(diǎn)。
12.根據(jù)權(quán)利要求11所述的方法,其中所述地理位置包括所涉及的所述存儲(chǔ)節(jié)點(diǎn)的經(jīng)度和緯度。
13.根據(jù)權(quán)利要求12所述的方法,其中所述響應(yīng)還包括所涉及的所述存儲(chǔ)節(jié)點(diǎn)的系統(tǒng)壽命ο
14.根據(jù)權(quán)利要求12或13所述的方法,其中所述響應(yīng)還包括所涉及的所述存儲(chǔ)節(jié)點(diǎn)的系統(tǒng)負(fù)載。
15.根據(jù)權(quán)利要求12至14中任一項(xiàng)所述的方法,其中所述多播存儲(chǔ)查詢包括識(shí)別待被存儲(chǔ)的數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí)符。
16.根據(jù)權(quán)利要求12至15中任一項(xiàng)所述的方法,其中至少三個(gè)節(jié)點(diǎn)被選擇。
17.根據(jù)權(quán)利要求12至16中任一項(xiàng)所述的方法,其中成功地存儲(chǔ)所述數(shù)據(jù)的存儲(chǔ)節(jié)點(diǎn)的列表被發(fā)送到所選擇的存儲(chǔ)節(jié)點(diǎn)。
18.一種服務(wù)器,適于將數(shù)據(jù)寫到包括多個(gè)數(shù)據(jù)存儲(chǔ)節(jié)點(diǎn)的數(shù)據(jù)存儲(chǔ)系統(tǒng),所述服務(wù)器包括-用于發(fā)送多播存儲(chǔ)查詢到多個(gè)所述存儲(chǔ)節(jié)點(diǎn)的裝置;-用于從所述存儲(chǔ)節(jié)點(diǎn)的子集接收多個(gè)響應(yīng)的裝置,所述響應(yīng)包括涉及每個(gè)存儲(chǔ)節(jié)點(diǎn)的地理位置的地理數(shù)據(jù);-用于基于所述響應(yīng)選擇所述子集中的至少兩個(gè)存儲(chǔ)節(jié)點(diǎn)的裝置;以及 -用于發(fā)送數(shù)據(jù)和對(duì)應(yīng)于該數(shù)據(jù)的數(shù)據(jù)標(biāo)識(shí)符到所選擇的存儲(chǔ)節(jié)點(diǎn)的裝置。
全文摘要
本發(fā)明涉及一種包括多個(gè)存儲(chǔ)節(jié)點(diǎn)的分布式數(shù)據(jù)存儲(chǔ)。使用單播和多播傳送,服務(wù)器應(yīng)用可在存儲(chǔ)系統(tǒng)中讀和寫數(shù)據(jù)。每個(gè)存儲(chǔ)節(jié)點(diǎn)可以監(jiān)控系統(tǒng)上的讀和寫操作以及其他存儲(chǔ)數(shù)據(jù)的狀態(tài)。以此方式,存儲(chǔ)節(jié)點(diǎn)可檢測(cè)出系統(tǒng)中的文件復(fù)制需求,并可以執(zhí)行復(fù)制過(guò)程,復(fù)制過(guò)程用于在不同的地理位置處保持具有正確版本的、充足數(shù)量的文件副本的存儲(chǔ)。
文檔編號(hào)G06F17/30GK102301367SQ200980142022
公開(kāi)日2011年12月28日 申請(qǐng)日期2009年10月21日 優(yōu)先權(quán)日2008年10月24日
發(fā)明者克里斯蒂安·梅蘭德, 古斯塔夫·佩特森, 斯特凡·貝恩博, 羅杰·佩爾松 申請(qǐng)人:Ilt創(chuàng)新公司