專利名稱:一種機群系統(tǒng)中分片存儲模式下文件讀取的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機存儲領(lǐng)域,尤其涉及一種機群系統(tǒng)中分片存儲模式下文 件讀取的方法及系統(tǒng)。
背景技術(shù):
機群(cluster)系統(tǒng)由互相連接的多個獨立計算機所組成,該計算機可 以是單機或多處理器系統(tǒng),例如PC (個人計算機)、工作站或SMP (對稱多處 理系統(tǒng)),每個計算機都有自己的存儲器、I/O (輸入/輸出)設(shè)備和操作系統(tǒng)。 機群系統(tǒng)對用戶和應(yīng)用來說是一個單一的系統(tǒng),能夠提供低價高效的高性能環(huán) 境和快速可靠的服務(wù)。由于機群系統(tǒng)具有高性價比的優(yōu)勢,其已成為高性能計 算機的主流結(jié)構(gòu)。
在機群系統(tǒng)中,通常存儲服務(wù)器配備有大容量的存儲設(shè)備,在機群系統(tǒng)運 作時,需要對這些存儲設(shè)備進行管理。同時,機群系統(tǒng)還需要為不同客戶端的 用戶提供的文件共享服務(wù)。機群文件系統(tǒng)為機群系統(tǒng)提供了上述服務(wù),它將機 群系統(tǒng)中的所有存儲設(shè)備整合起來,建立一個統(tǒng)一的名字空間(文件和目錄的 組織結(jié)構(gòu))。各個客戶端看到目錄結(jié)構(gòu)一致的文件系統(tǒng),不同節(jié)點(客戶端) 的用戶可以采用透明的方式訪問相同的文件。機群文件系統(tǒng)中的數(shù)據(jù)通常不存 儲在本客戶端的磁盤中,而是存儲在存儲服務(wù)器上,因而通常都會設(shè)有專用的
存儲服務(wù)器。以寫為例,應(yīng)用進程通過機群文件系統(tǒng)的客戶端寫數(shù)據(jù)時,客戶 端首先將數(shù)據(jù)通過網(wǎng)絡(luò)傳送到存儲服務(wù)器端,存儲服務(wù)器再將接收到的數(shù)據(jù)寫 到存儲服務(wù)器的存儲設(shè)備中。
預(yù)取是一種有效提升文件系統(tǒng)I/O性能的優(yōu)化技術(shù)。文件預(yù)取是指在使用 一塊數(shù)據(jù)之前預(yù)先將其從磁盤讀入內(nèi)存,在預(yù)取的數(shù)據(jù)被真正請求時,省去磁
盤訪問時間,從而有效減小i/o延遲。
機群文件系統(tǒng)中,由于文件數(shù)據(jù)不是存儲在客戶端,而是存儲在存儲服務(wù) 器中,存儲服務(wù)器都配備有自己的CPU、內(nèi)存、存儲設(shè)備。因此,在客戶端對
文件進行順序訪問操作將會觸發(fā)客戶端和存儲服務(wù)器端的兩級預(yù)取操作。
目前,大部分機群文件系統(tǒng)采用分片(stripping)的模式存儲文件數(shù)據(jù), 將同一文件的數(shù)據(jù)在多個存儲服務(wù)器上分片存儲。采用分片存儲模式, 一方面 可以均衡利用所有存儲服務(wù)器的存儲設(shè)備的存儲空間;另一方面可以提升對單 個文件的訪問性能。在分片存儲模式下,對客戶端某一文件的順序讀訪問,會 導(dǎo)致該文件分片所在的多個存儲服務(wù)器上的順序讀訪問,也會激發(fā)多個存儲服 務(wù)器上的順序預(yù)取操作。多個存儲服務(wù)器上的預(yù)取實際上都附屬于客戶端同一 負載的預(yù)取,相互間具有關(guān)聯(lián)。然而,存儲服務(wù)器在預(yù)取的過程中不知道客戶 端的預(yù)取信息或相鄰分片的預(yù)取信息。預(yù)取只能在單個節(jié)點內(nèi)部進行。假設(shè)文 件數(shù)據(jù)在兩個存儲服務(wù)器上分片存儲。當客戶端讀取到兩個相鄰分片A和B 的交界處時,分片A所屬的存儲服務(wù)器會繼續(xù)該存儲服務(wù)器連接于分片A后的 C'部分的數(shù)據(jù)進行預(yù)取。然而,該部分數(shù)據(jù)實際上不會被立即訪問到,對數(shù) 據(jù)C'的預(yù)取實際為無效預(yù)取。在客戶端剛剛讀取數(shù)據(jù)B時,分片B所在的存 儲服務(wù)器預(yù)讀狀態(tài)信息還需要重新建立,而沒有利用客戶端負載已有的預(yù)取信 息??蛻舳素撦d的預(yù)取信息不能在多個存儲服務(wù)器的相關(guān)讀請求之間進行傳 遞。
為了提升存儲服務(wù)器數(shù)據(jù)預(yù)取的效率,現(xiàn)有技術(shù)采用在服務(wù)器端緩存預(yù)讀 狀態(tài)信息的策略。緩存的具體方法包括如下兩種。
方法一,網(wǎng)絡(luò)文件系統(tǒng)(NFS)的存儲服務(wù)器為每個正在被訪問的目標文 件緩存預(yù)取描述符結(jié)構(gòu)。在第一次讀取某一目標文件時,為其初始化一個預(yù)取 描述符,并使用該預(yù)取描述符指導(dǎo)本次預(yù)取操作。在關(guān)閉目標文件后,存儲服 務(wù)器繼續(xù)為該文件緩存預(yù)取描述符結(jié)構(gòu)。從而,在處理該目標文件的后續(xù)讀請 求時,就可以直接利用緩存的預(yù)取信息來指導(dǎo)預(yù)取的過程。預(yù)讀狀態(tài)信息就可 以在請求之間進行傳遞??蛻舳诉M程順序讀取網(wǎng)絡(luò)文件系統(tǒng)中的文件時,預(yù)取 描述符緩存機制可以提升文件系統(tǒng)的讀性能。
方法二,在存儲服務(wù)器端為每個目標文件緩存打開文件描述符。由打開文 件描述符可以檢索到打開文件的文件(file)結(jié)構(gòu),文件結(jié)構(gòu)中維護了預(yù)取描 述符信息。它是通過緩存打開文件描述符來緩存預(yù)取描述符信息,從而提升文 件系統(tǒng)的讀性能。
以上兩種技術(shù),本質(zhì)上都是在存儲服務(wù)器端緩存預(yù)取描述符,該類技術(shù)可
以在單個存儲服務(wù)器內(nèi)部將附屬于同一客戶端負載的相關(guān)請求統(tǒng)一處理,在單 個存儲服務(wù)器內(nèi)部將相關(guān)預(yù)取過程統(tǒng)一起來,但無法解決分片存儲模式下,多 個存儲服務(wù)器之間相關(guān)預(yù)取的協(xié)調(diào)問題。
發(fā)明內(nèi)容
為解決上述問題,本發(fā)明提供了一種機群系統(tǒng)中分片存儲模式下文件讀取 的方法及系統(tǒng),用以使機群文件系統(tǒng)中,分片存儲模式下,附屬于同一客戶端 負載的多個存儲服務(wù)器上相關(guān)預(yù)取操作能夠協(xié)調(diào)、統(tǒng)一處理。
本發(fā)明公開了一種機群系統(tǒng)中分片存儲模式下文件讀取的方法,包括客戶 端接收應(yīng)用層的文件訪問請求,開始讀操作,所述方法還包括
步驟1,所述客戶端將讀請求所訪問的數(shù)據(jù)的位置信息和預(yù)讀狀態(tài)信息封 裝到讀請求消息中,發(fā)送給存儲所述數(shù)據(jù)的存儲服務(wù)器;
步驟2,所述存儲服務(wù)器根據(jù)所述讀請求消息中位置信息和獲得的存儲布 局信息確定被訪問的數(shù)據(jù)在分片中的位置,依據(jù)所述讀請求消息中預(yù)讀狀態(tài)信 息完成預(yù)取操作,如果所述被訪問的數(shù)據(jù)的結(jié)束位置為所述分片的結(jié)束位置, 則停止所述預(yù)取操作;通過應(yīng)答消息將讀取的所述被訪問的數(shù)據(jù)發(fā)送給所述客 戶端;
步驟3,所述客戶端接收所述應(yīng)答消息,將獲得的所述被訪問的數(shù)據(jù)返回 給所述應(yīng)用層。
如果所述客戶端在進行所述讀操作時進行順序預(yù)取,則所述讀請求所訪問 的數(shù)據(jù)為順序預(yù)取請求所訪問的數(shù)據(jù),否則,所述讀請求所訪問的數(shù)據(jù)為文件 訪問請求所訪問的數(shù)據(jù),所述步驟l進一步包括
步驟21,根據(jù)所述被訪問的文件的歷史訪問信息,判斷是否進行順序預(yù) 取操作,如果是,執(zhí)行步驟22,否則,執(zhí)行步驟23;
步驟22,將所述順序預(yù)取請求所訪問的數(shù)據(jù)的位置信息和所述預(yù)讀狀態(tài) 信息封裝到讀請求消息中;
步驟23,將所述文件訪問請求所訪問的數(shù)據(jù)的位置信息和所述預(yù)讀狀態(tài) 信息封裝到讀請求消息中。
所述步驟2中發(fā)送所述應(yīng)答消息前進一步包括
步驟31,根據(jù)所述讀請求消息中位置信息和所述存儲布局信息,判斷所
述讀請求消息所訪問的數(shù)據(jù)的起始位置是否為被訪問的文件的一個分片的起 始位置,如果是則根據(jù)所述讀請求消息中的預(yù)讀狀態(tài)信息更新所述存儲服務(wù)器
對應(yīng)于被訪問文件的預(yù)讀狀態(tài)信息;
步驟32,根據(jù)所述讀請求消息中位置信息和所述存儲布局信息,判斷所
述讀請求消息所訪問的數(shù)據(jù)的結(jié)束位置是否為被訪問的文件的一個分片的結(jié)
束位置,如果是,則停止預(yù)取操作,否則,執(zhí)行步驟33;
步驟33,根據(jù)所述存儲服務(wù)器的預(yù)讀狀態(tài)信息進行預(yù)取操作。
所述預(yù)讀狀態(tài)信息包括預(yù)讀命中信息和預(yù)讀窗口大小信息。
所述步驟32中停止預(yù)取操作進一步為將所述存儲服務(wù)器對應(yīng)于被訪問文
件的預(yù)讀窗口大小設(shè)置為0,并重置所述存儲服務(wù)器對應(yīng)于被訪問文件的預(yù)讀
命中信息。
所述存儲布局信息由所述存儲服務(wù)器維護或者由所述客戶端傳送給所述 存儲服務(wù)器。
本發(fā)明還公開了一種機群系統(tǒng)中分片存儲模式下文件讀取的系統(tǒng),包括客 戶端和至少兩個存儲服務(wù)器,所述客戶端用于接收應(yīng)用層的文件訪問請求,開 始讀操作,
所述客戶端,還用于將讀請求所訪問的數(shù)據(jù)的位置信息和預(yù)讀狀態(tài)信息封 裝到讀請求消息中,發(fā)送給存儲所述數(shù)據(jù)的所述存儲服務(wù)器;接收所述存儲服 務(wù)器回復(fù)的應(yīng)答消息,將所述應(yīng)答消息中包含的所述讀請求消息所訪問的數(shù)據(jù) 返回給所述應(yīng)用層;
所述存儲服務(wù)器,用于根據(jù)所述讀請求消息中位置信息和獲得的存儲布局 信息確定被訪問的數(shù)據(jù)在分片中的位置,依據(jù)所述讀請求消息中預(yù)讀狀態(tài)信息 完成預(yù)取操作,如果所述被訪問的數(shù)據(jù)的結(jié)束位置為所述分片的結(jié)束位置,則 停止所述預(yù)取操作;通過應(yīng)答消息將讀取的所述被訪問的數(shù)據(jù)發(fā)送給所述客戶端。
如果所述客戶端在進行所述讀操作時進行順序預(yù)取,則所述讀請求所訪問 的數(shù)據(jù)為順序預(yù)取請求所訪問的數(shù)據(jù),否則,所述讀請求所訪問的數(shù)據(jù)為文件 訪問請求所訪問的數(shù)據(jù),
所述客戶端進一步用于根據(jù)對所述被訪問的文件的歷史訪問信息判斷是 否進行順序預(yù)取操作,如果是,則將所述順序預(yù)取請求所訪問的數(shù)據(jù)的位置信
息和所述預(yù)讀狀態(tài)信息封裝到讀請求消息中;否則,將所述文件訪問請求所訪 問的數(shù)據(jù)的位置信息和所述預(yù)讀狀態(tài)信息封裝到讀請求消息中。
所述存儲服務(wù)器進一步用于在發(fā)送所述應(yīng)答消息前根據(jù)所述讀請求消息 中位置信息和所述存儲布局信息判斷所述讀請求消息所訪問的數(shù)據(jù)的起始位 置是否為被訪問的文件的一個分片的起始位置,如果是則根據(jù)所述讀請求消息 中的預(yù)讀狀態(tài)信息更新所述存儲服務(wù)器對應(yīng)于被訪問文件的預(yù)讀狀態(tài)信息;并 根據(jù)所述讀請求消息中位置信息和所述存儲布局信息判斷所述讀請求消息所 訪問的數(shù)據(jù)的結(jié)束位置是否為被訪問的文件的一個分片的結(jié)束位置,如果是, 則停止預(yù)取操作,否則,根據(jù)所述存儲服務(wù)器的預(yù)讀狀態(tài)信息進行預(yù)取操作。 所述預(yù)讀狀態(tài)信息包括預(yù)讀命中信息和預(yù)讀窗口大小信息。 所述存儲服務(wù)器進一步用于在所述讀請求消息所訪問的數(shù)據(jù)的結(jié)束位置 是所述被訪問的文件的一個分片的結(jié)束位置時,將所述存儲服務(wù)器對應(yīng)于被訪 問文件的預(yù)讀窗口大小設(shè)置為0,并重置所述存儲服務(wù)器對應(yīng)于被訪問文件的 預(yù)讀命中信息。
所述存儲布局信息由所述存儲服務(wù)器維護或者由所述客戶端傳送給所述 存儲服務(wù)器。
本發(fā)明的有益效果在于,通過將客戶端預(yù)讀狀態(tài)信息在多個存儲服務(wù)器間 連續(xù)傳遞,能夠?qū)⒍喾?wù)節(jié)點上相關(guān)預(yù)取操作協(xié)調(diào)統(tǒng)一地處理,提升存儲服務(wù) 器預(yù)取的效率。
圖1是本發(fā)明機群系統(tǒng)中分片存儲模式下文件讀取的系統(tǒng)結(jié)構(gòu)圖; 圖2是本發(fā)明機群系統(tǒng)中分片存儲模式下文件讀取的方法流程圖; 圖3是本發(fā)明機群系統(tǒng)中分片存儲模式下文件讀取的方法中客戶端發(fā)送
讀請求消息流程圖4是本發(fā)明機群系統(tǒng)中分片存儲模式下文件讀取的方法中存儲服務(wù)器
進行預(yù)取操作的流程圖5是本發(fā)明機群系統(tǒng)中分片存儲模式下文件讀取的方法在客戶端訪問
分片邊界時的處理示意圖。
具體實施例方式
下面結(jié)合附圖,對本發(fā)明做進一步的詳細描述。 本發(fā)明的系統(tǒng)結(jié)構(gòu)如圖1所示。
本發(fā)明的系統(tǒng)包括客戶端101和至少兩個存儲服務(wù)器102。機群文件系統(tǒng)
中經(jīng)常會將文件數(shù)據(jù)以分片的模式存儲在多個服務(wù)器中,所以, 一般情況下,
包括兩個或兩個以上的存儲服務(wù)器。
客戶端101用于接收應(yīng)用層的文件訪問請求,開始讀操作。
客戶端101還用于將讀請求所訪問的數(shù)據(jù)的位置信息和預(yù)讀狀態(tài)信息封
裝到讀請求消息中,將讀請求消息發(fā)送給存儲該數(shù)據(jù)的存儲服務(wù)器。 預(yù)讀狀態(tài)信息包括預(yù)讀命中信息和預(yù)讀窗口大小信息。 如果客戶端101在進行所述讀操作時進行順序預(yù)取,則讀請求所訪問的數(shù)
據(jù)為順序預(yù)取請求所訪問的數(shù)據(jù),否則,讀請求所訪問的數(shù)據(jù)為文件訪問請求
所訪問的數(shù)據(jù)。
客戶端101根據(jù)對被訪問的文件的歷史訪問信息判斷是否進行順序預(yù)取 操作,如果是,則將順序預(yù)取請求所訪問的數(shù)據(jù)的位置信息和預(yù)讀狀態(tài)信息封 裝到讀請求消息中;否則,將文件訪問請求所訪問的數(shù)據(jù)的位置信息和預(yù)讀狀 態(tài)信息封裝到讀請求消息中。
客戶端101還用于接收存儲服務(wù)器102回復(fù)的應(yīng)答消息,將應(yīng)答消息中包 含的被訪問的數(shù)據(jù)返回給應(yīng)用層。
存儲服務(wù)器102,用于根據(jù)讀請求消息中位置信息和獲得的存儲布局信息 確定被訪問的數(shù)據(jù)在分片中的位置,依據(jù)讀請求消息中的預(yù)讀狀態(tài)信息進行預(yù) 取操作,如果被訪問的數(shù)據(jù)的結(jié)束位置為分片的結(jié)束位置,則停止預(yù)取操作, 通過應(yīng)答消息將讀取的被訪問的數(shù)據(jù)發(fā)送給所述客戶端101。
存儲布局信息由存儲服務(wù)器102維護或者由客戶端101傳送給存儲服務(wù)器
102。
存儲服務(wù)器102根據(jù)存儲布局信息判斷讀請求消息所訪問的數(shù)據(jù)的起始 位置是否為被訪問的文件的一個分片的起始位置,如果是則根據(jù)讀請求消息中 的預(yù)讀狀態(tài)信息更新存儲服務(wù)器102對應(yīng)于被訪問文件的預(yù)讀狀態(tài)信息;并根 據(jù)存儲布局信息判斷讀請求消息所訪問的數(shù)據(jù)的結(jié)束位置是否為被訪問的文 件的一個分片的結(jié)束位置,如果是,則停止預(yù)取操作,將存儲服務(wù)器102對應(yīng)
于被訪問文件的預(yù)讀窗口大小設(shè)置為0,并重置存儲服務(wù)器102對應(yīng)于被訪問 文件的預(yù)讀命中信息,否則,根據(jù)存儲服務(wù)器102的預(yù)讀狀態(tài)信息進行預(yù)取操 作。
本發(fā)明的方法流程如圖2所示。
客戶端接收應(yīng)用層的文件訪問請求,執(zhí)行如下步驟。
步驟S201,客戶端將讀請求所訪問的數(shù)據(jù)的位置信息和預(yù)讀狀態(tài)信息封 裝到讀請求消息中,將讀請求消息發(fā)送給存儲數(shù)據(jù)的存儲服務(wù)器。
如果客戶端在進行所述讀操作時進行順序預(yù)取,則讀請求所訪問的數(shù)據(jù)為 順序預(yù)取請求所訪問的數(shù)據(jù),否則,讀請求所訪問的數(shù)據(jù)為文件訪問請求所訪 問的數(shù)據(jù)。
所述步驟S201的具體實施方式
如圖3所示。
步驟S301,根據(jù)對被訪問的文件的歷史訪問信息判斷是否進行順序預(yù)取 操作,如果是,執(zhí)行步驟S302,否則,執(zhí)行步驟S303。
判斷方法為,檢査最近預(yù)設(shè)次數(shù)的訪問是否為順序訪問,如果是,則進行 順序預(yù)取;否則,不進行順序預(yù)取。
步驟S302,將順序預(yù)取請求所訪問的數(shù)據(jù)的位置和預(yù)讀狀態(tài)信息封裝到 讀請求消息中。
步驟S303,將文件訪問請求所訪問的數(shù)據(jù)的位置和預(yù)讀狀態(tài)信息封裝到 讀請求消息中。
步驟S304,將封裝后的讀請求消息發(fā)送給存儲數(shù)據(jù)的存儲服務(wù)器。
步驟S202,存儲服務(wù)器根據(jù)讀請求消息中的預(yù)讀狀態(tài)信息和位置信息以
及獲得的存儲布局信息進行預(yù)取操作,通過應(yīng)答消息將被訪問的數(shù)據(jù)發(fā)送給客戶端。
存儲布局信息由存儲服務(wù)器維護或者由客戶端傳送給存儲服務(wù)器。 所述步驟S202的具體實施方式
如圖4所示。
步驟S401,根據(jù)存儲布局信息判斷讀請求消息所訪問的數(shù)據(jù)的起始位置 是否為被訪問的文件的一個分片的起始位置,如果是,則執(zhí)行步驟S402,否 則,執(zhí)行步驟S403。
本實施例的判斷方法為,已知讀請求消息所訪問的數(shù)據(jù)的起始位置和被訪 問文件的分片大小,判斷讀請求消息所訪問的數(shù)據(jù)的起始位置除以被訪問文件
的分片大小的余數(shù)是否為o,如果為o,則讀請求消息所訪問的數(shù)據(jù)的起始位
置為被訪問的文件的一個分片的起始位置,否則,讀請求消息所訪問的數(shù)據(jù)的 起始位置不為被訪問的文件的一個分片的起始位置。
步驟S402,根據(jù)讀請求消息中的預(yù)讀狀態(tài)信息調(diào)整存儲服務(wù)器對應(yīng)于被 訪問文件的預(yù)讀狀態(tài)信息,執(zhí)行步驟S403。預(yù)讀狀態(tài)信息包括預(yù)讀命中信息 和預(yù)讀窗口大小信息。所述調(diào)整為按比例設(shè)定預(yù)讀窗口大小和預(yù)讀命中信息。
步驟S403,根據(jù)存儲布局信息判斷讀請求消息所訪問的數(shù)據(jù)的結(jié)束位置 是否為被訪問的文件的一個分片的結(jié)束位置,如果是,執(zhí)行步驟S404,否則, 執(zhí)行步驟S405。
已知讀請求消息所訪問的數(shù)據(jù)的結(jié)束位置為req—end,被訪問的文件分片 的大小為stripe_size,判斷req—end加1的和除以stripe—size的余數(shù)是否 為0,如果是,則讀請求消息所訪問的數(shù)據(jù)的結(jié)束位置為被訪問的文件的一個 分片的結(jié)束位置,否則,讀請求消息所訪問的數(shù)據(jù)的結(jié)束位置不為被訪問的文 件的一個分片的結(jié)束位置。
步驟S404,將對應(yīng)于被訪問文件的預(yù)讀窗口大小設(shè)置為O,同時重置對應(yīng) 于被訪問文件的預(yù)讀命中信息,以停止預(yù)取操作,執(zhí)行步驟S406。
步驟S405,根據(jù)存儲服務(wù)器的當前的預(yù)讀狀態(tài)信息進行預(yù)取操作,執(zhí)行 步驟S406。
步驟S406,從存儲磁盤中讀取讀請求消息所訪問的數(shù)據(jù),并將讀取的數(shù) 據(jù)封裝到應(yīng)答消息中。
步驟S407,向客戶端發(fā)送應(yīng)答消息。
步驟S203,客戶端接收應(yīng)答消息,將被訪問的數(shù)據(jù)返回給應(yīng)用層。 在客戶端訪問分片邊界時本發(fā)明方法處理過程如圖5所示。 在圖5中文件數(shù)據(jù)在存儲服務(wù)器1和存儲服務(wù)器2上分片存儲。當客戶端 請求所訪問的數(shù)據(jù)到達分片A和B的邊界處時,分片A所在的存儲服務(wù)器1 能夠計算出本次請求所訪問的數(shù)據(jù)的結(jié)束位置為分片結(jié)束位置,將預(yù)讀窗口大 小設(shè)置為O,并重置預(yù)讀命中信息,以停止對目標文件l的預(yù)取。客戶端自身 的預(yù)取機制則提前觸發(fā)對分片B數(shù)據(jù)的預(yù)取操作,向存儲服務(wù)器2發(fā)出讀請求 消息。存儲服務(wù)器2直接根據(jù)客戶端傳來的讀請求消息中的預(yù)讀狀態(tài)信息更新 對目標文件2訪問的預(yù)讀狀態(tài)信息。包括按比例設(shè)定預(yù)讀窗口大小以及預(yù)讀命
中信息。從而,預(yù)讀狀態(tài)信息可以在同一文件多個分片所在存儲服務(wù)器間傳遞。 本領(lǐng)域的技術(shù)人員在不脫離權(quán)利要求書確定的本發(fā)明的精神和范圍的條 件下,還可以對以上內(nèi)容進行各種各樣的修改。因此本發(fā)明的范圍并不僅限于 以上的說明,而是由權(quán)利要求書的范圍來確定的。
權(quán)利要求
1. 一種機群系統(tǒng)中分片存儲模式下文件讀取的方法,包括客戶端接收應(yīng)用層的文件訪問請求,開始讀操作,其特征在于,所述方法還包括步驟1,所述客戶端將讀請求所訪問的數(shù)據(jù)的位置信息和預(yù)讀狀態(tài)信息封裝到讀請求消息中,發(fā)送給存儲所述數(shù)據(jù)的存儲服務(wù)器;步驟2,所述存儲服務(wù)器根據(jù)所述讀請求消息中位置信息和獲得的存儲布局信息確定被訪問的數(shù)據(jù)在分片中的位置,依據(jù)所述讀請求消息中預(yù)讀狀態(tài)信息完成預(yù)取操作,如果所述被訪問的數(shù)據(jù)的結(jié)束位置為所述分片的結(jié)束位置,則停止所述預(yù)取操作;通過應(yīng)答消息將讀取的所述被訪問的數(shù)據(jù)發(fā)送給所述客戶端;步驟3,所述客戶端接收所述應(yīng)答消息,將獲得的所述被訪問的數(shù)據(jù)返回給所述應(yīng)用層。
2. 如權(quán)利要求1所述的機群系統(tǒng)中分片存儲模式下文件讀取的方法,其 特征在于,如果所述客戶端在進行所述讀操作時進行順序預(yù)取,則所述讀請求 所訪問的數(shù)據(jù)為順序預(yù)取請求所訪問的數(shù)據(jù),否則,所述讀請求所訪問的數(shù)據(jù) 為文件訪問請求所訪問的數(shù)據(jù),所述步驟1進一步包括步驟21,根據(jù)所述被訪問的文件的歷史訪問信息,判斷是否進行順序預(yù) 取操作,如果是,執(zhí)行步驟22,否則,執(zhí)行步驟23;步驟22,將所述順序預(yù)取請求所訪問的數(shù)據(jù)的位置信息和所述預(yù)讀狀態(tài) 信息封裝到讀請求消息中;步驟23,將所述文件訪問請求所訪問的數(shù)據(jù)的位置信息和所述預(yù)讀狀態(tài) 信息封裝到讀請求消息中。
3. 如權(quán)利要求1所述的機群系統(tǒng)中分片存儲模式下文件讀取的方法,其 特征在于,所述步驟2中發(fā)送所述應(yīng)答消息前進一步包括步驟31,根據(jù)所述讀請求消息中位置信息和所述存儲布局信息,判斷所 述讀請求消息所訪問的數(shù)據(jù)的起始位置是否為被訪問的文件的一個分片的起 始位置,如果是則根據(jù)所述讀請求消息中的預(yù)讀狀態(tài)信息更新所述存儲服務(wù)器 對應(yīng)于被訪問文件的預(yù)讀狀態(tài)信息; 步驟32,根據(jù)所述讀請求消息中位置信息和所述存儲布局信息,判斷所述讀請求消息所訪問的數(shù)據(jù)的結(jié)束位置是否為被訪問的文件的一個分片的結(jié)束位置,如果是,則停止預(yù)取操作,否則,執(zhí)行步驟33;步驟33,根據(jù)所述存儲服務(wù)器的預(yù)讀狀態(tài)信息進行預(yù)取操作。
4. 如權(quán)利要求3所述的機群系統(tǒng)中分片存儲模式下文件讀取的方法,其特征在于,所述預(yù)讀狀態(tài)信息包括預(yù)讀命中信息和預(yù)讀窗口大小信息。
5. 如權(quán)利要求4所述的機群系統(tǒng)中分片存儲模式下文件讀取的方法,其特征在于,所述步驟32中停止預(yù)取操作進一步為將所述存儲服務(wù)器對應(yīng)于被 訪問文件的預(yù)讀窗口大小設(shè)置為0,并重置所述存儲服務(wù)器對應(yīng)于被訪問文件 的預(yù)讀命中信息。
6. 如權(quán)利要求5所述的機群系統(tǒng)中分片存儲模式下文件讀取的方法,其特征在于,所述存儲布局信息由所述存儲服務(wù)器維護或者由所述客戶端傳送給 所述存儲服務(wù)器。
7. —種機群系統(tǒng)中分片存儲模式下文件讀取的系統(tǒng),包括客戶端和至少兩個存儲服務(wù)器,所述客戶端用于接收應(yīng)用層的文件訪問請求,開始讀操作, 其特征在于,所述客戶端,還用于將讀請求所訪問的數(shù)據(jù)的位置信息和預(yù)讀狀態(tài)信息封裝到讀請求消息中,發(fā)送給存儲所述數(shù)據(jù)的所述存儲服務(wù)器;接收所述存儲服 務(wù)器回復(fù)的應(yīng)答消息,將所述應(yīng)答消息中包含的所述讀請求消息所訪問的數(shù)據(jù) 返回給所述應(yīng)用層;所述存儲服務(wù)器,用于根據(jù)所述讀請求消息中位置信息和獲得的存儲布局信息確定被訪問的數(shù)據(jù)在分片中的位置,依據(jù)所述讀請求消息中預(yù)讀狀態(tài)信息 完成預(yù)取操作,如果所述被訪問的數(shù)據(jù)的結(jié)束位置為所述分片的結(jié)束位置,則停止所述預(yù)取操作;通過應(yīng)答消息將讀取的所述被訪問的數(shù)據(jù)發(fā)送給所述客戶端。
8. 如權(quán)利要求7所述的機群系統(tǒng)中分片存儲模式下文件讀取的系統(tǒng),其特征在于,如果所述客戶端在進行所述讀操作時進行順序預(yù)取,則所述讀請求 所訪問的數(shù)據(jù)為順序預(yù)取請求所訪問的數(shù)據(jù),否則,所述讀請求所訪問的數(shù)據(jù) 為文件訪問請求所訪問的數(shù)據(jù),所述客戶端進一步用于根據(jù)對所述被訪問的文件的歷史訪問信息判斷是否進行順序預(yù)取操作,如果是,則將所述順序預(yù)取請求所訪問的數(shù)據(jù)的位置信 息和所述預(yù)讀狀態(tài)信息封裝到讀請求消息中;否則,將所述文件訪問請求所訪問的數(shù)據(jù)的位置信息和所述預(yù)讀狀態(tài)信息封裝到讀請求消息中。
9. 如權(quán)利要求7所述的機群系統(tǒng)中分片存儲模式下文件讀取的系統(tǒng),其 特征在于,所述存儲服務(wù)器進一步用于在發(fā)送所述應(yīng)答消息前根據(jù)所述讀請求 消息中位置信息和所述存儲布局信息判斷所述讀請求消息所訪問的數(shù)據(jù)的起 始位置是否為被訪問的文件的一個分片的起始位置,如果是則根據(jù)所述讀請求 消息中的預(yù)讀狀態(tài)信息更新所述存儲服務(wù)器對應(yīng)于被訪問文件的預(yù)讀狀態(tài)信 息;并根據(jù)所述讀請求消息中位置信息和所述存儲布局信息判斷所述讀請求消 息所訪問的數(shù)據(jù)的結(jié)束位置是否為被訪問的文件的一個分片的結(jié)束位置,如果 是,則停止預(yù)取操作,否則,根據(jù)所述存儲服務(wù)器的預(yù)讀狀態(tài)信息進行預(yù)取操 作。
10. 如權(quán)利要求9所述的機群系統(tǒng)中分片存儲模式下文件讀取的系統(tǒng),其 特征在于,所述預(yù)讀狀態(tài)信息包括預(yù)讀命中信息和預(yù)讀窗口大小信息。
11. 如權(quán)利要求10所述的機群系統(tǒng)中分片存儲模式下文件讀取的系統(tǒng), 其特征在于,所述存儲服務(wù)器進一步用于在所述讀請求消息所訪問的數(shù)據(jù)的結(jié) 束位置是所述被訪問的文件的一個分片的結(jié)束位置時,將所述存儲服務(wù)器對應(yīng) 于被訪問文件的預(yù)讀窗口大小設(shè)置為0,并重置所述存儲服務(wù)器對應(yīng)于被訪問 文件的預(yù)讀命中信息。
12. 如權(quán)利要求11所述的機群系統(tǒng)中分片存儲模式下文件讀取的系統(tǒng), 其特征在于,所述存儲布局信息由所述存儲服務(wù)器維護或者由所述客戶端傳送 給所述存儲服務(wù)器。
全文摘要
本發(fā)明涉及機群系統(tǒng)中分片存儲模式下文件讀取的方法和系統(tǒng),方法包括步驟1,客戶端將讀請求所訪問的數(shù)據(jù)的位置信息和預(yù)讀狀態(tài)信息封裝到讀請求消息中,發(fā)送給存儲所述數(shù)據(jù)的存儲服務(wù)器;步驟2,存儲服務(wù)器根據(jù)讀請求消息中位置信息和獲得的存儲布局信息確定被訪問的數(shù)據(jù)在分片中的位置,依據(jù)讀請求消息中預(yù)讀狀態(tài)信息完成預(yù)取操作,如果被訪問的數(shù)據(jù)的結(jié)束位置為分片的結(jié)束位置,則停止預(yù)取操作;將讀取的被訪問的數(shù)據(jù)發(fā)送給客戶端;步驟3,客戶端將獲得的所述被訪問的數(shù)據(jù)返回給所述應(yīng)用層。本發(fā)明能夠使機群文件系統(tǒng)中,分片存儲模式下,附屬于同一客戶端負載的多個存儲服務(wù)器上相關(guān)預(yù)取操作能夠協(xié)調(diào)、統(tǒng)一處理。
文檔編號H04L12/54GK101388824SQ20081022409
公開日2009年3月18日 申請日期2008年10月15日 優(yōu)先權(quán)日2008年10月15日
發(fā)明者岳 劉, 勁 熊 申請人:中國科學(xué)院計算技術(shù)研究所