磁盤上數據的小隨機更改的高效存儲的制作方法
【專利說明】
[0001]背景
技術領域
[0002]本公開內容涉及數據存儲,更具體地涉及網絡環(huán)境中耦接至主計算機的一個或多個磁盤上的數據的小隨機更改的高效存儲。
[0003]背景信息
[0004]許多現代計算算法是基于分頁的并且在運行在主計算機上的操作系統(tǒng)的內核中實現。分頁是一種存儲器管理功能,其有助于以塊或“頁面”的形式將數據存儲到主存儲器(如磁盤)中以及從主存儲器(如磁盤)中檢索數據。例如,假定主計算機上執(zhí)行的應用程序利用基于分頁的算法以例如將新結點插入雙向鏈表。該算法的執(zhí)行可能會產生第一已修改(“臟(dirtied)”)頁面(即帶有前指針的頁面)、第二臟頁面(S卩,帶有下一指針的頁面)以及包含新插入結點的第三臟頁面。頁面的修改需要大量(例如,三個)的隨機搜索操作以從磁盤中檢索這些頁面,以及相同次數的附加搜索操作以將已修改頁面寫回磁盤。因此,期望在基于磁盤的系統(tǒng)上使用避免這樣的隨機且昂貴操作的數據結構。
[0005]可按字節(jié)尋址的持久性存儲器(如存儲類存儲器)的出現可以加速:對主存儲器的采用以駐留在主計算機的存儲器總線上以及對“存儲器內”計算的接受。針對持久性(非易失性)可按字節(jié)尋址存儲器所寫的應用程序不會由于隨機訪問而產生性能損失并且因此表現不同,例如,它們作為上述的可直接按字節(jié)尋址的鏈表持續(xù)存在。持久性存儲器可以被配置成使主計算機上執(zhí)行的應用程序能夠以可按字節(jié)尋址的粒度安全且持續(xù)地修改(更改)它們的數據以例如經受住故障。即,應用程序可以執(zhí)行高頻率、小隨機存取以更改持久性存儲器中的數據。然而,面臨災禍時,即使是持久性存儲器中存儲的安全且一致的數據也容易受損,因為主計算機中僅有該數據的單個副本。
[0006]因此,在經濟上有利的是:需要對通過網絡連接至主計算機的遠程機器的一個或更多個存儲設備(如磁盤)上的已更改數據進行復制,從而使得該已更改數據能夠在災禍后得以恢復。然而,磁盤通常會提供良好的流式傳輸帶寬性能(例如,大量順序塊的讀/寫或“跟蹤讀取”)卻不能較好地執(zhí)行小隨機存取(即,在磁盤尋找之前讀寫單個磁盤扇區(qū))。換句話說,磁盤可以按照順序模式或流式傳輸帶寬(streaming bandwidth)模式進行更高效的操作,然而小隨機存取(如上述隨機搜索操作)會大幅地降低磁盤的性能。因此,有必要對主計算機上的持久性存儲器的隨機存取、可按字節(jié)尋址能力與磁盤的基于塊的流式傳輸帶寬能力進行匹配。
【附圖說明】
[0007]通過參考以下結合附圖的描述將更好地理解本文中的實施例的上述及其他優(yōu)點,其中,相同的附圖標記表示相同的或功能上類似的元件,在附圖中:
[0008]圖1是網絡環(huán)境的框圖;
[0009]圖2是網絡環(huán)境中的主計算機的框圖;
[0010]圖3是碎片的框圖;
[0011]圖4是復制組的框圖;
[0012]圖5是網絡環(huán)境中的存儲服務器的框圖;
[0013]圖6是存儲服務器的磁盤上陣列(on-disk array)的框圖;以及
[0014]圖7是用于將數據的小隨機修改或更改存儲于存儲服務器的一個或更多個磁盤上的示例性簡化流程。
【具體實施方式】
[0015]本文所描述的實施例提供了一種系統(tǒng)及方法,用于數據的小隨機修改或更改高效地存儲到耦接接至網絡環(huán)境中的主計算機的存儲服務器的一個或更多個存儲設備(如磁盤)中。示意性地,該數據被存儲在主計算機的、可按字節(jié)尋址的持久性存儲器的區(qū)域中并且按照該數據的被修改粒度時所采用的粒度(例如按照可按字節(jié)尋址的粒度)被復制(即,拷貝)為磁盤上的區(qū)域中的已更改數據。為此,每個存儲服務器使用這種數據結構:該數據結構被配置成將小隨機數據更改高效地累積成一個或更多個大的已更改數據塊以按照實現磁盤的流式傳輸帶寬的方式存儲在磁盤上。
[0016]在一個或更多個實施例中,數據結構示意性地為磁盤上陣列(例如,斐波納契陣列),該磁盤上陣列存儲于存儲服務器上并且通過服務器上執(zhí)行的用戶級進程或代理進行維持。示意性地,陣列可以被組織為一系列的層;陣列由塊大小B進行參數化以使得層的大小由該層內的塊條目的數量確定。值得注意的是,每個層的條目的數量是該層前面兩層的條目的數量之和,例如,第一層(和第二層)的長度為B,則接下來后續(xù)層的長度依次為2B、3B、5B、8B等等,即為斐波納契數列。磁盤上陣列的邏輯表示在持久性存儲器中被維持為內核存儲陣列。內核存儲陣列的一部分被組織成緩沖池,其中的每個緩沖區(qū)的大小也為B。緩沖區(qū)通過用戶級代理示意性地維持為集結區(qū)(staging area),該集結區(qū)用于在小隨機數據更改存儲到磁盤之前將所述小隨機數據更改累積成陣列的大塊條目。用戶級代理還維持多個磁盤指針,其中,每個磁盤指針引用(指向)陣列的與磁盤上的層的起始位置相對應的層。
[0017]在實施例中,陣列的每層按照例如已更改數據的存儲基地址進行內部排序,而層間排序是按時間進行的。換句話說,陣列的較高層表示較舊的塊條目,例如第一個、最低層容納內部排序的最新塊條目,而最后的、最高層包含內部排序最舊條目。為了維持這些層內的內部排序,用戶級代理示意性地執(zhí)行了歸并分類技術,該歸并分類技術用于對所累積的(滿的)緩沖區(qū)的內容以及陣列的升序層的條目的內容進行分類(即,排序)和周期性地歸并從而刪除重復的條目(例如,約束陣列的大小),同時也合并相鄰的條目(例如,減小陣列的大小)。此外,對具有較大條目總數的升序層的周期性歸并通過使得能夠為磁盤分配大體上長游程的連續(xù)磁盤塊以及通過實現磁盤的流式傳輸帶寬能力(例如,針對區(qū)域的復制和恢復)改善了陣列的磁盤上布局。
[0018]描述
[0019]圖1是可以有利地結合本文所描述的一個或更多個實施例一起使用的網絡環(huán)境100的框圖。環(huán)境100可以包括通過計算機網絡150耦接至多個(例如,一群)存儲服務器500的主計算機200。盡管實施例中的計算機網絡150是示意性的以太網網絡,但是計算機網絡150也可以包括一個或更多個點對點鏈路、無線鏈路、共享局域網、廣域網或通過公共網絡(如公知的互聯網)實現的虛擬專用網。環(huán)境100還可以包括被配置成管理一群存儲服務器500的主服務器160。主服務器160可以位于網絡150上的任何地方,如位于主計算機200或存儲服務器500上;然而,在實施例中,主服務器160示意性地位于單獨的管理計算機上。
[0020]如本文中進一步描述的,每個存儲服務器500可以體現為:被配置成為主計算機200提供存儲服務的計算機(如存儲系統(tǒng))、體現為文件管理器的存儲設備或者運行用戶級進程的刀片服務器。因此,每個存儲服務器500包括耦接至一個或更多個存儲設備(如磁盤120)的計算與存儲單元。主計算機200可以使用幀170(如以太網幀)內包含的離散消息或碎片300與存儲服務器500進行通信,所述離散消息或碎片300使用除其他外包括無線協(xié)議和/或以太網協(xié)議的多種通信協(xié)議通過網絡150進行傳輸。然而,在本文所描述的實施例中,幀170示意性地根據用戶數據報協(xié)議/互聯網協(xié)議(UDP/IP)消息傳遞協(xié)議進行封裝。
[0021]圖2是可以有利地結合本文所描述的一個或更多個實施例一起使用的主計算機200的框圖。主計算機200示意性地包括處理器210,該處理器210通過存儲器總線250連接至持久性存儲器220并且通過系統(tǒng)總線240連接至網絡適配器230。網絡適配器230可以包括通過計算機網絡150將主計算機200連接至存儲服務器500所需的機械線路、電路和信令線路。網絡適配器230還可以包括被配置成按照一個或更多個操作模式通過網絡150傳輸包含碎片300的幀170的邏輯電路,這些操作模式將碎片所包含的信息復制到存儲服務器500的磁盤120上。
[0022]持久性存儲器220可示意性地體現為非易失性存儲器,如存儲類存儲器,非易失性存儲器的特征在于:在該存儲器中,可按字節(jié)對組織為邏輯結構體(比如,文件或區(qū)域228)的數據進行尋址??砂醋止?jié)尋址的持久性存儲器220可以包括可由處理器210尋址、用于存儲與本文所描述的實施例相關聯的軟件程序和數據結構的存儲位置。處理器