多級存儲體系

多級存儲體系

多級存儲體系是指將多級存儲器結合起來的一種方式。在一個計算機系統中,對存儲器的容量、速度和價格這三個基本性能指標都有一定的要求。存儲容量應確保各種應用的需要;存儲器速度應盡量與CPU的速度相匹配並支持I/O操作;存儲器的價格應比較合理。然而,這三者經常是互相矛盾的。例如存儲器的速度越快,則每位的價格就越高;存儲器的容量越大,則存儲器的速度就越慢。按照現有的技術水平,僅僅採用一種技術組成單一的存儲器是不可能同時滿足這些要求的。只有採用由多級存儲器組成的存儲體系,把幾種存儲技術結合起來,才能較好地解決存儲器大容量、高速度和低成本這三者之間的矛盾。

概念


簡介

存儲器的多級結構如概述圖所示。圖中最內層是CPU中的通用寄存器,很多運算可直接在CPU的通用寄存器中進行,減少了CPU與主存的數據交換,很好地解決了速度匹配的問題,但通用寄存器的數量是有限的一般在幾個到幾百個之間,如Pentium CPU中有8個32位的通用寄存器。
高速緩衝存儲器Cache)設置在CPU和主存之間,可以放在CPU 內部或外部。其作用也是解決主存與CPU的速度匹配問題。Cache一般是由高速SRAM組成,其速度要比主存高1到2個數量級。由主存與Cache構成的“主存-Cache存儲層次,從CPU來看,有接近於Cache的速度與主存的容量,並有接近於主存的每位價格。通常,Cache還分為一級Cache和二級Cache。
但是,以上兩層僅解決了速度匹配問題,存儲器的容量仍受到內存容量的制約。因此,在多級存在儲結構中又增設了輔助存儲器(由磁碟構成)和大容量存儲器(由磁帶構成)。隨著操作系統和硬體技術的完善,主存之間的信息傳送均可由操作系統中的存儲管理部件和相應的硬體自動完成,從而構成了主存一輔存的價格,從而彌補了主存容量不足的問題。

結構

多級存儲結構構成的存儲體系是一個整體。從CPU看來,這個整體的速度接近於Cache和寄存器的操作速度、容量是輔存的容量,每位價格接近於輔存的位價格。從而較好地解決了存儲器中速度、容量、價格三者之間的矛盾,滿足了計算機系統的應用需要。
隨著半導體工藝水平的發展和計算機技術的進步,存儲器多級結構的構成可能會有所調整,但由多級半導體存儲器晶元集成度的提高,主存容量可能會達到幾百兆位元組或更高,但由於系統軟體和應用軟體的發展,主存的容量總是滿足不了應用的需求,只要這一現狀仍然存在,由主存――輔存為主體的多級存儲體系也就會長期存在下去。

iSCSI多級存儲系統中的高可用性研究與實現


iSCSI協議是網路存儲領域最活躍的研究方向之一,它建立在存儲領域和網路領域應用最廣泛的兩個協議,(SCSI TCP/IP)SCSI 基礎之上。它不僅解決了原有的匯流排長度有限,存儲設備擴展能力不足的問題,還可以利用現有的乙太網路實現基於協議的存儲網路,大大減少了企業在TCP/IP存儲方面的開支。

高可用系統理論分析

各種電子系統複雜度越來越高,對系統的可用性(availability)的要求也越來越高。從概率學的角度來說,系統的可用性是一個時間函數,定義為:系統正常工作並A(t)在時刻能執行它的功能的概率。其實,簡單來說,一個高t可用性系統,就是一個用戶能(High Availability System HA)隨時使用的系統,系統中斷服務的時間被期望為無窮小,使系統能一天24小時、一年365天不間斷地工作。
(1)二元元件模型以及可用性指標
圖1 服務維護周期
圖1 服務維護周期
要達到高可用性的目標,首先必須分析哪些指標影響了系統的可用性。為 此建立一個簡單的系統元件統計模型,元件具有二元屬性:元件處於工作狀態或處於非工作狀態。根據這個模型,定義兩個可用性參數:平均無故障工作時間(MTBF)(MTTR)和平均故障修復時間。對於系統中一個足以影響系統正常運行的元件來說,如果它發生故障,則引起整個系統的失效。所以,在系統的一個服務維護周期內,整個系統有這樣的表現,如圖1所示。
(2)建立馬爾可夫過程模型
從簡單的元件模型分析得到了提高系統可用性的關鍵指標,要進行量化的最適用方案研究就必須要藉助隨機過程理論來進行數學分析了。為了建立更加成熟的模型,採用時域連續的馬爾可夫鏈作為工具,其狀態根據概率因素(Markov)而變化。對於存儲系統的主要部件而言,其正常工作時間和故障后的修理時間的分佈均為指數分佈,據此定義系統的狀態,並用馬爾可夫鏈來描述系統。
系統的狀態定義如下:系統初始狀態為0。一個節點出現故障,則狀態數加1;而一個故障節點恢復正常,則狀態數減1。也就是說,某時刻系統的狀態為n,則表示該時刻系統有n個節點處於故障狀態。

多級協同存儲系統中的高可用方案及測試

(1)多級協同存儲系統結構分析
圖2 多級存儲系統結構示意圖
圖2 多級存儲系統結構示意圖
iSCSI多級協同存儲系統重新整合了現有的各類存儲設備,形成統一 的存儲池,實現存儲數據共享,並對外提供標準介面,介面標準符合的協議。在實現單級存儲IETF iSCSI虛擬化技術的基礎上,利用多台虛擬存儲控制單元級聯,通過遞階控制手段,構建大系統環境下的存儲池。多級 iSCSI協同存儲系統結構示意圖如圖2所示。
其中的關鍵部件是虛擬存儲控制單元,它是界於各類應用服務和存儲資源之間的軟硬體結合體,VSCU一方面為各種應用提供統一的連接和通信手段,另一方面,還提供存儲池管理功能。VSCU包含iSCSI Target模塊、 iSCSI Initiator模塊、虛擬邏輯單元管理、虛擬邏輯卷管理模塊、Web管理模塊等子模塊,並且連接客戶端、Web管理客戶端、SCSI設備端,幾乎包含了多級協同存儲系統中最重要的模塊和提供了幾乎全部的功能,其重要性毋庸置疑。在考慮本系統的高可用性時,把它看作系統中最重要的單點失效點。
(2)高可用性方案
根據以上的理論建模分析,針對多級協同存儲系統結構的分析結論,我們提出以下方案:
1) 要提高整個系統的高可用性,最重要的是提高VSCU的可用性。至於其他元件,例如SCSI設備的可用性可以通過RAID等技術解決,不在本課題考慮範圍內。
2)本課題的主要問題是解決本地子系統的高可用性,針對帶內(也就是本地區域網內)的VSCU構建HA子系統,遠程的VSCU之間的備份與恢復屬於容災課題。
3)根據數學分析,選用雙機高可用方案已經足以滿足需要。為了提高整個系統的高效率,高可用系統結構選用“集中式”結構,即任意時間只有一個結點作為主伺服器提供服務。一旦主伺服器出現故障,備份伺服器就接替其工作。

多級存儲系統中跨邊界訪問實現策略研究


研究背景

圖3 兩個連續的雙字
圖3 兩個連續的雙字
跨邊界訪問問題是現代處理器必須解決的一個問題。較早的計算機利 用編譯技術避免了跨邊界的訪問,但是隨著多媒體技術的不斷發展,越來越多的處理器需要提供跨邊界訪問服務。跨邊界訪問具有一定的複雜性,如圖3所示的兩個連續的雙字A和B之間將會出現表1所示的7種跨雙字邊界的讀雙字操作。
在多級存儲系統中,A、B這兩個雙字還有可能會出現不同的Cache行,還可能處在不同的存儲層次中(如A在一級Cache,B在外存等),這些複雜性加劇了跨邊界訪問問題的解決難度,因此必須採用高效合理的辦法加以解決。

跨邊界訪問問題出現的背景

表1 連續雙字可能出現的7種跨邊界的讀雙字操作
表1 連續雙字可能出現的7種跨邊界的讀雙字操作
由於存儲器實現技術的原因,程序員所看到的存儲空間和處理器所 看到的存儲空間是不同的。在程序員眼中,存儲器空間就是一組簡單的連續位元組的組合,如在C語言中,char*即是代表著一塊位元組區,類似的如Java中的 byte類型,如圖4所示。程序員能夠訪問以任意地址開始的字、雙字或四字。但是實際處理器往往並不支持以任意地址開始的訪問字、雙字、四字的要求。其訪問字要求起始地址的末兩位為0,訪問雙字要求起始地址的末3位為0,因為在處理器眼中,存儲器空間實際上是按組存放的和不連續的,如圖5所示。
圖4 程序員眼中的存儲空間
圖4 程序員眼中的存儲空間
造成這種現象的根本原因是現代計算機為了提高存儲頻寬,往往採用 多體并行和單體多字技術相結合的并行存儲系統來構成存儲體(包括各級Cache和片外存儲器)。這種存儲結構雖然能夠提高主存系統的最大頻寬,但是對跨邊界訪問的支持卻比較差。因此,早期的一些計算機,就不支持跨邊界訪問,如moto68000系列,遇到一個跨邊界訪問的操作,處理器會產生一個異常,操作系統對這樣的異常也不友好,通常需要用戶重新啟動計算機。
圖5 處理器眼中的存儲空間
圖5 處理器眼中的存儲空間
但是隨著計算機應用需求的發展,越來越多的多媒體演演算法(如MPEG2/MPEG4/H.264等)需要進行跨邊界操作。在接下來的章節中,我們主要介紹3類解決跨邊界訪問的存儲系統,第1類是早期的通用處理器利用編譯技術避免跨邊界訪問和逐步提供低效的跨邊界訪問操作;第2類是TIGERSHARK DSP利用跨邊界訪問的數據相關性和一個稱之 為data alignment buffer的寄存器解決跨邊界訪問問題;第3類是在一些存儲容量較小的DSP中利用單體單位元組存儲體構成存儲器來解決跨邊界訪問問題;本文分析了這 3 種方法的優缺點,並提出一種在多級存儲系統基礎之上的高效低開銷的解決方案。

解決跨邊界訪問問題的技術手段及分析

(1)早期依靠編譯技術的解決方案
在大多數不支持跨邊界訪問的計算機裡面,需要編譯器在用戶進行數據定義和空間分配時提供額外的支持。這個過程稱為填充(pad),對程序員是透明的,造成的結果是一些程序員定義的結構實際佔用的空間比程序員自己想象的要大,填充的實質是用犧牲空間的辦法來提高程序的執行效率。一方面由於這種靠編譯的解決方案存在著對空間的浪費,另一方面隨著向量處理能力的需要和SIMD的流行,早期僅僅依靠編譯技術來避免跨邊界訪問的辦法已經行不通,因此在一些處理器中初步提供跨邊界訪問指令,如MIPS提供了跨邊界讀和跨邊界寫指令,但是這兩類指令都是偽指令,是通過一組基本指令來完成的,如ulw(跨邊界訪問一個字)指令是由兩個載入操作、一個移位操作、一個按位或操作組成的,這種情況下一個跨邊界訪問的周期很長,類似的還有DEC公司的Alpha處理器
(2)依賴額外的數據對齊寄存器的解決方案
ADI公司的TTIGERSHARK處理器利用多個跨邊界操作之間的數據相關性,以及一個額外的硬體資源稱為數據對齊寄存器來解決跨邊界訪問的問題。TIGERSHARK的設計者認為這種跨邊界訪問操作雖然是不按邊界對齊的,但是往往是對許多個連續地址的訪問,這樣硬體就可以通過一個寄存器保存上次訪問的地址的內容,以便在下次訪問中能夠用到這次寄存的數據,儘可能減少對存儲體的訪問,降低訪問開銷。通過數據對齊寄存器,理想情況下能夠達到在連續地址的跨邊界訪問中每個周期提供一個數據的目標。
(3)依賴於單體單位元組存儲體的解決方案
在一些超長指令字(VLIW)處理器中,為了減輕編譯器過於沉重的負擔和更好地支持跨邊界訪問,從改變存儲體的組織結構出發,為解決跨邊界訪問提供了更好的解決思路。這種方案的關鍵是改變以往的單體多字存儲體系結構,而使用多個單體單位元組存儲體。單體多字存儲體是多個位元組復用一個訪存地址的,而單體單位元組存儲體的每個位元組都擁有一個獨立的訪問地址,只需要對一部分位元組給出本行的地址,一部分位元組給出下一行的地址,從存儲體讀出的數據就是所需的兩行數據的拼裝,再將過一次循環移位操作就能得到跨邊界訪問的結果。對於跨邊界寫的處理也比較容易,只需將要寫的數據分派到每個位元組存儲體上,然後給出不同的地址即可。