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