塊存儲和文件存儲是我們比較熟悉的兩種主流的存儲類型,而對象存儲(Object-based Storage)是一種新的網絡存儲架構,基于對象存儲技術的設備就是對象存儲設備(Object-based Storage Device)簡稱OSD。
首先,我們介紹這兩種傳統的存儲類型。通常來講,所有磁盤陣列都是基于Block塊的模式(DAS),而所有的NAS產品都是文件級存儲
1、塊存儲
以下列出的兩種存儲方式都是塊存儲類型:
1) DAS(Direct Attach STorage):是直接連接于主機服務器的一種儲存方式,每一臺主機服務器有獨立的儲存設備,每臺主機服務器的儲存設備無法互通,需要跨主機存取資料時,必須經過相對復雜的設定,若主機服務器分屬不同的操作系統,要存取彼此的資料,更是復雜,有些系統甚至不能存取。通常用在單一網絡環境下且數據交換量不大,性能要求不高的環境下,可以說是一種應用較為早的技術實現。
2)SAN(Storage Area Network):是一種用高速(光纖)網絡聯接專業主機服務器的一種儲存方式,此系統會位于主機群的后端,它使用高速I/O 聯結方式, 如 SCSI, ESCON 及 Fibre- Channels。一般而言,SAN應用在對網絡速度要求高、對數據的可靠性和安全性要求高、對數據共享的性能要求高的應用環境中,特點是代價高,性能好。例如電信、銀行的大數據量關鍵應用。它采用SCSI 塊I/O的命令集,通過在磁盤或FC(Fiber Channel)級的數據訪問提供高性能的隨機I/O和數據吞吐率,它具有高帶寬、低延遲的優勢,在高性能計算中占有一席之地,但是由于SAN系統的價格較高,且可擴展性較差,已不能滿足成千上萬個CPU規模的系統。
2、文件存儲
通常,NAS產品都是文件級存儲。 ?NAS(Network Attached Storage):是一套網絡儲存設備,通常是直接連在網絡上并提供資料存取服務,一套 NAS 儲存設備就如同一個提供數據文件服務的系統,特點是性價比高。例如教育、政府、企業等數據存儲應用。
它采用NFS或CIFS命令集訪問數據,以文件為傳輸協議,通過TCP/IP實現網絡化存儲,可擴展性好、價格便宜、用戶易管理,如目前在集群計算中應用較多的NFS文件系統,但由于NAS的協議開銷高、帶寬低、延遲大,不利于在高性能集群中應用。
下面,我們對DAS、NAS、SAN三種技術進行比較和分析:
表格 1 三種技術的比較
針對Linux集群對存儲系統高性能和數據共享的需求,國際上已開始研究全新的存儲架構和新型文件系統,希望能有效結合SAN和NAS系統的優點,支持直接訪問磁盤以提高性能,通過共享的文件和元數據以簡化管理,目前對象存儲系統已成為Linux集群系統高性能存儲系統的研究熱點,如Panasas公司的Object Base Storage Cluster System系統和Cluster File Systems公司的Lustre等。下面將詳細介紹對象存儲系統。
3、對象存儲
總體上來講,對象存儲同兼具SAN高速直接訪問磁盤特點及NAS的分布式共享特點(擴展性)
核心是將數據通路(數據讀或寫)和控制通路(元數據)分離,并且基于對象存儲設備(Object-based Storage Device,OSD)構建存儲系統。每個對象存儲設備具有一定的智能,能夠自動管理其上的數據分布。
對象存儲結構組成部分(對象、對象存儲設備、元數據服務器、對象存儲系統的客戶端):
3.1、對象
對象是系統中數據存儲的基本單位,一個對象實際上就是文件的數據和一組屬性信息(Meta Data)的組合,這些屬性信息可以定義基于文件的RAID參數、數據分布和服務質量等,而傳統的存儲系統中用文件或塊作為基本的存儲單位,在塊存儲系統中還需要始終追蹤系統中每個塊的屬性,對象通過與存儲系統通信維護自己的屬性。在存儲設備中,所有對象都有一個對象標識,通過對象標識OSD命令訪問該對象。通常有多種類型的對象,存儲設備上的根對象標識存儲設備和該設備的各種屬性,組對象是存儲設備上共享資源管理策略的對象集合等。
3.2、對象存儲設備
對象存儲設備具有一定的智能,它有自己的CPU、內存、網絡和磁盤系統,OSD同塊設備的不同不在于存儲介質,而在于兩者提供的訪問接口。OSD的主要功能包括數據存儲和安全訪問。目前國際上通常采用刀片式結構實現對象存儲設備。OSD提供三個主要功能:
(1) 數據存儲。OSD管理對象數據,并將它們放置在標準的磁盤系統上,OSD不提供塊接口訪問方式,Client請求數據時用對象ID、偏移進行數據讀寫。
(2) 智能分布。OSD用其自身的CPU和內存優化數據分布,并支持數據的預取。由于OSD可以智能地支持對象的預取,從而可以優化磁盤的性能。
(3) 每個對象元數據的管理。OSD管理存儲在其上對象的元數據,該元數據與傳統的inode元數據相似,通常包括對象的數據塊和對象的長度。而在傳統的NAS系統中,這些元數據是由文件服務器維護的,對象存儲架構將系統中主要的元數據管理工作由OSD來完成,降低了Client的開銷。
3.3、元數據服務器(Metadata Server,MDS)
MDS控制Client與OSD對象的交互,主要提供以下幾個功能:
(1) 對象存儲訪問。
MDS構造、管理描述每個文件分布的視圖,允許Client直接訪問對象。MDS為Client提供訪問該文件所含對象的能力,OSD在接收到每個請求時將先驗證該能力,然后才可以訪問。
(2) 文件和目錄訪問管理。
MDS在存儲系統上構建一個文件結構,包括限額控制、目錄和文件的創建和刪除、訪問控制等。
(3) Client Cache一致性。
為了提高Client性能,在對象存儲系統設計時通常支持Client方的Cache。由于引入Client方的Cache,帶來了Cache一致性問題,MDS支持基于Client的文件Cache,當Cache的文件發生改變時,將通知Client刷新Cache,從而防止Cache不一致引發的問題。
3.4、對象存儲系統的客戶端Client
為了有效支持Client支持訪問OSD上的對象,需要在計算節點實現對象存儲系統的Client。現有的應用對數據的訪問大部分都是通過POSIX文件方式進行的,對象存儲系統提供給用戶的也是標準的POSIX文件訪問接口。接口具有和通用文件系統相同的訪問方式,同時為了提高性能,也具有對數據的Cache功能和文件的條帶功能。同時,文件系統必須維護不同客戶端上Cache的一致性,保證文件系統的數據一致。文件系統讀訪問流程:
1)客戶端應用發出讀請求;
2)文件系統向元數據服務器發送請求,獲取要讀取的數據所在的OSD;
3)然后直接向每個OSD發送數據讀取請求;
4)OSD得到請求以后,判斷要讀取的Object,并根據此Object要求的認證方式,對客戶端進行認證,如果此客戶端得到授權,則將Object的數據返回給客戶端;
5)文件系統收到OSD返回的數據以后,讀操作完成。
對象存儲文件系統的關鍵技術:
1、分布元數據 傳統的存儲結構元數據服務器通常提供兩個主要功能。
(1)為計算結點提供一個存儲數據的邏輯視圖(Virtual File System,VFS層),文件名列表及目錄結構。
(2)組織物理存儲介質的數據分布(inode層)。對象存儲結構將存儲數據的邏輯視圖與物理視圖分開,并將負載分布,避免元數據服務器引起的瓶頸(如NAS系統)。元數據的VFS部分通常是元數據服務器的10%的負載,剩下的90%工作(inode部分)是在存儲介質塊的數據物理分布上完成的。在對象存儲結構,inode工作分布到每個智能化的OSD,每個OSD負責管理數據分布和檢索,這樣90%的元數據管理工作分布到智能的存儲設備,從而提高了系統元數據管理的性能。另外,分布的元數據管理,在增加更多的OSD到系統中時,可以同時增加元數據的性能和系統存儲容量。
2、并發數據訪問 對象存儲體系結構定義了一個新的、更加智能化的磁盤接口OSD。OSD是與網絡連接的設備,它自身包含存儲介質,如磁盤或磁帶,并具有足夠的智能可以管理本地存儲的數據。計算結點直接與OSD通信,訪問它存儲的數據,由于OSD具有智能,因此不需要文件服務器的介入。如果將文件系統的數據分布在多個OSD上,則聚合I/O速率和數據吞吐率將線性增長,對絕大多數Linux集群應用來說,持續的I/O聚合帶寬和吞吐率對較多數目的計算結點是非常重要的。對象存儲結構提供的性能是目前其它存儲結構難以達到的,如ActiveScale對象存儲文件系統的帶寬可以達到10GB/s。
4、GlusterFS 和對象存儲
GlusterFS是目前做得最好的分布式存儲系統之一,而且已經開始商業化運行。但是,目前GlusterFS3.2.5版本還不支持對象存儲。如果要實現海量存儲,那么GlusterFS需要用對象存儲。值得高興的是,GlusterFS最近宣布要支持對象存儲。它使用openstack的對象存儲系統swift的上層PUT、GET等接口,支持對象存儲。
20世紀電子與信息技術迅速發展,機器計算迅速普及,馮·諾依曼在1945年6月30日,提出了存儲程序邏輯架構,即現有的計算機都遵循的“馮·諾依曼體系架構”,具體如下圖:
我們可以看出,馮諾依曼體系結構與人腦(生物)計算模型匹配度相當準確。我們通常把運算器和控制器合并成中央處理器(CPU),內部小容量的存儲提供快速的訪問,外部存儲器提供大容量的存儲空間。在不同的計算機時代,我們可以按照不同的角度來理解馮諾依曼體系結構。在單機計算時代(包括大型機、小型機、微機)內部存儲器可理解為內存(即Memory),外部存儲器可理解為物理硬盤(包括本地硬盤和通過網絡映射的邏輯卷)。在本地硬盤空間不足,可靠性無法滿足業務需求的情況下,SAN存儲出現了,通過網絡映射的邏輯卷(即SAN存儲提供的LUN)成為增強版的硬盤。為了解決數據共享的問題,NAS存儲隨之誕生。
但馮諾依曼體系架構沒有考慮并行計算和數據共享情形,在如今的網絡時代,大量計算設備通過網絡形成一個龐大、相互獨立但又邏輯統一的計算系統,因此我們可以總結出一個數據存儲的通用模型,這個模型包括兩級存儲,其存儲容量差距約1000倍:
如果將上圖中每一個計算模塊理解為一個計算內核,那么高速存儲單元則是CPU內的緩存(單位為KB~MB),海量存儲單元則是內存(單位為GB);如果把每一個計算模塊理解為一個CPU,那么高速存儲單元則是內存(單位為GB~TB),海量存儲是物理硬盤或通過網絡映射給服務器的邏輯卷(或網絡文件系統,單位為TB~PB);如果把計算模塊理解為針對某一項任務或某一組任務提供計算能力的服務器集群,把SAN或NAS等擁有TB~PB級存儲規模的網絡存儲設備理解為高速存儲單元,那么具備PB~EB級存儲容量的海量存儲單元將基于什么技術和產品構建呢?
SAN和NAS技術已經出現了數十年,目前單臺SAN或NAS設備最大容量已經達到PB級別,但在應對EB級數據挑戰時,還是顯得有些力不從心。這主要由于其架構和服務接口決定的。
SAN使用SCSI協議作為底層協議,SCSI協議管理的粒度非常小,通常以字節(byte)或千字節(KB)為單位;同時SCSI協議沒有提供讀寫鎖機制以確保不同應用并發讀寫時的數據一致性,因此難以實現EB級存儲資源管理和多個服務器/服務器集群之間數據共享。
NAS使用文件協議訪問數據,通過文件協議存儲設備能夠準確識別數據內容,并提供了非常豐富的文件訪問接口,包括復雜的目錄/文件的讀寫鎖。文件和目錄采用樹形結構管理,每個節點使用一種叫做inode的結構進行管理,每一個目錄和文件都對應一個iNode。目錄深度或同一目錄下的子節點數隨著整體文件數量的增加而快速增加,通常文件數量超過億級時,文件系統復雜的鎖機制及頻繁的元數據訪問將極大降低系統的整體性能。
傳統的RAID技術和Scale-up架構也阻止了傳統的SAN和NAS成為EB級高可用,高性能的海量存儲單元。傳統的RAID基于硬盤,通常一個RAID組最多包含20+塊硬盤,即使PB級規模的SAN或NAS也將被分割成多個存儲孤島,增加了EB級規模應用場景下的管理復雜度;同時Scale-up架構決定了即使SAN和NAS存儲容量達到EB級,性能也將成為木桶的短板。
那么如何才能應對信息爆炸時代的數據洪流呢?我們設想能否有一種“超級數據圖書館”,它提供海量的、可共享的存儲空間給很多用戶(服務器/服務器集群)使用,提供超大的存儲容量,其存儲容量規模千倍于當前的高速存儲單元(SAN和NAS),用戶或應用訪問數據時無需知道圖書館對這些書如何擺放和管理(布局管理),只需要提供唯一編號(ID)就可以獲取到這本書的內容(數據)。如果某一本書變得老舊殘破,系統自動地將即將失效或已經失效的書頁(存儲介質)上的數據抄寫(恢復/重構)到新的紙張(存儲介質)上,并重新裝訂這本書,數據使用者無需關注這一過程,只是根據需要去獲取數據資源。這種“超級數據圖書館”是否真的存在呢?
分布式對象存儲的誕生
對象存儲技術的出現和大量自動化管理技術的產生,使得“超級數據圖書館”不再是人類遙不可及的夢想。對象存儲系統(Object-Based Storage System)改進了SAN和NAS存儲的劣勢,保留了NAS的數據共享等優勢,通過高級的抽象接口替代了SCSI存儲塊和文件訪問接口(不同地區的用戶訪問不同的POSIX文件系統,不僅浪費時間,而且讓運維管理變的更復雜。相對而言,分布式存儲系統的優勢明顯。在分布式存儲系統上做應用開發更便利,易維護和擴容,自動負載平衡。以 RESTful HTTP接口代替了POSIX接口和QEMU Driver接口),屏蔽了存儲底層的實現細節,將NAS垂直的樹形結構改變成平等的扁平結構,從而提高了擴展性、增強了可靠性、具備了平臺無關性等重要存儲特性。(Erasure Code: 是將文件轉換成一個碎片集合,每一個碎片很小,碎片被打散分布到一組服務器資源池里。只要存留的碎片數量足夠,就可以合成為原本的文件。這可以在保持原本的數據健壯性的基礎上大大減少需要的存儲空間。 不過Erasure Code并非適應所有的場景,尤其不適合網絡延遲敏感的業務( 不過Erasure Code并非適應所有的場景,尤其不適合網絡延遲敏感的業務))
SNIA(網絡存儲工業協會)定義的對象存儲設備是這樣的:
對象是自完備的,包含元數據、數據和屬性
存儲設備可以自行決定對象的具體存儲位置和數據的分布
存儲設備可以對不同的對象提供不同的QoS
對象存儲設備相對于塊設備有更高的“智能”,上層通過對象ID來訪問對象,而無需了解對象的具體空間分布情況
換句話說對象存儲是智能化、封裝得更好的塊,是“文件”或其他應用級邏輯結構的組成部分,文件與對象的對應關系由上層直接控制,對象存儲設備本身也可能是個分布式的系統——這就是分布式對象存儲系統了。
用對象替代傳統的塊的好處在于對象的內容本身來自應用,其具有內在的聯系,具有“原子性”,因此可以做到:
在存儲層進行更智能的空間管理
內容相關的數據預取和緩存
可靠的多用戶共享訪問
對象級別的安全性
同時,對象存儲架構還具有更好的可伸縮性。一個對象除了ID和用戶數據外,還包含了屬主、時間、大小、位置等源數據信息,權限等預定義屬性,乃至很多自定義屬性。
具備EB級規模擴展性的分布式對象存儲,通過對應用提供統一的命名空間,構建EB級統一、可共享數據的存儲資源池,有效地填補上述通用計算模型中“網絡計算”場景海量存儲單元空白,通過高層次的數據模型抽象,可以簡化應用對數據訪問,同時使得海量存儲更加智能。
對象是數據和自描述信息的集合,是在磁盤上存儲的基本單元。對象存儲通過簡化數據的組織形式(如將樹形的“目錄”和“文件”替換為扁平化的“ID”與“對象”)、降低協議與接口的復雜度(如簡化復雜的鎖機制,確保最終一致性),從而提高系統的擴展性以應對信息爆炸時代海量數據的挑戰。同時對象的智能自管理功能也能有效降低系統維護復雜度,幫助用戶降低整體擁有成本(TCO)。
評論
查看更多