何為塊存儲?何為文件存儲?(下篇)
存儲,是各大電子設(shè)備不可缺少的組成之一。缺少存儲,數(shù)據(jù)將無法得以保存。上篇文章中,小編對塊存儲以及文件存儲做過初步介紹。本文中,將繼續(xù)對兩種存儲方式予以介紹。如果你對存儲具有興趣,不妨繼續(xù)往下閱讀哦。
一、GlusterFS 和對象存儲
GlusterFS是目前做得最好的分布式存儲系統(tǒng)之一,而且已經(jīng)開始商業(yè)化運(yùn)行。但是,目前GlusterFS3.2.5版本還不支持對象存儲。如果要實(shí)現(xiàn)海量存儲,那么GlusterFS需要用對象存儲。值得高興的是,GlusterFS最近宣布要支持對象存儲。它使用openstack的對象存儲系統(tǒng)swift的上層PUT、GET等接口,支持對象存儲。
20世紀(jì)電子與信息技術(shù)迅速發(fā)展,機(jī)器計(jì)算迅速普及,馮·諾依曼在1945年6月30日,提出了存儲程序邏輯架構(gòu),即現(xiàn)有的計(jì)算機(jī)都遵循的“馮·諾依曼體系架構(gòu)。
馮諾依曼體系結(jié)構(gòu)與人腦(生物)計(jì)算模型匹配度相當(dāng)準(zhǔn)確。我們通常把運(yùn)算器和控制器合并成中央處理器(CPU),內(nèi)部小容量的存儲提供快速的訪問,外部存儲器提供大容量的存儲空間。在不同的計(jì)算機(jī)時(shí)代,我們可以按照不同的角度來理解馮諾依曼體系結(jié)構(gòu)。在單機(jī)計(jì)算時(shí)代(包括大型機(jī)、小型機(jī)、微機(jī))內(nèi)部存儲器可理解為內(nèi)存(即Memory),外部存儲器可理解為物理硬盤(包括本地硬盤和通過網(wǎng)絡(luò)映射的邏輯卷)。在本地硬盤空間不足,可靠性無法滿足業(yè)務(wù)需求的情況下,SAN存儲出現(xiàn)了,通過網(wǎng)絡(luò)映射的邏輯卷(即SAN存儲提供的LUN)成為增強(qiáng)版的硬盤。為了解決數(shù)據(jù)共享的問題,NAS存儲隨之誕生。
但馮諾依曼體系架構(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ù)存儲的通用模型,這個(gè)模型包括兩級存儲,其存儲容量差距約1000倍:
如果將上圖中每一個(gè)計(jì)算模塊理解為一個(gè)計(jì)算內(nèi)核,那么高速存儲單元?jiǎng)t是CPU內(nèi)的緩存(單位為KB~MB),海量存儲單元?jiǎng)t是內(nèi)存(單位為GB);如果把每一個(gè)計(jì)算模塊理解為一個(gè)CPU,那么高速存儲單元?jiǎng)t是內(nèi)存(單位為GB~TB),海量存儲是物理硬盤或通過網(wǎng)絡(luò)映射給服務(wù)器的邏輯卷(或網(wǎng)絡(luò)文件系統(tǒng),單位為TB~PB);如果把計(jì)算模塊理解為針對某一項(xiàng)任務(wù)或某一組任務(wù)提供計(jì)算能力的服務(wù)器集群,把SAN或NAS等擁有TB~PB級存儲規(guī)模的網(wǎng)絡(luò)存儲設(shè)備理解為高速存儲單元,那么具備PB~EB級存儲容量的海量存儲單元將基于什么技術(shù)和產(chǎn)品構(gòu)建呢?
SAN和NAS技術(shù)已經(jīng)出現(xiàn)了數(shù)十年,目前單臺SAN或NAS設(shè)備最大容量已經(jīng)達(dá)到PB級別,但在應(yīng)對EB級數(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級存儲資源管理和多個(gè)服務(wù)器/服務(wù)器集群之間數(shù)據(jù)共享。
NAS使用文件協(xié)議訪問數(shù)據(jù),通過文件協(xié)議存儲設(shè)備能夠準(zhǔn)確識別數(shù)據(jù)內(nèi)容,并提供了非常豐富的文件訪問接口,包括復(fù)雜的目錄/文件的讀寫鎖。文件和目錄采用樹形結(jié)構(gòu)管理,每個(gè)節(jié)點(diǎn)使用一種叫做inode的結(jié)構(gòu)進(jìn)行管理,每一個(gè)目錄和文件都對應(yīng)一個(gè)iNode。目錄深度或同一目錄下的子節(jié)點(diǎn)數(shù)隨著整體文件數(shù)量的增加而快速增加,通常文件數(shù)量超過億級時(shí),文件系統(tǒng)復(fù)雜的鎖機(jī)制及頻繁的元數(shù)據(jù)訪問將極大降低系統(tǒng)的整體性能。
傳統(tǒng)的RAID技術(shù)和Scale-up架構(gòu)也阻止了傳統(tǒng)的SAN和NAS成為EB級高可用,高性能的海量存儲單元。傳統(tǒng)的RAID基于硬盤,通常一個(gè)RAID組最多包含20+塊硬盤,即使PB級規(guī)模的SAN或NAS也將被分割成多個(gè)存儲孤島,增加了EB級規(guī)模應(yīng)用場景下的管理復(fù)雜度;同時(shí)Scale-up架構(gòu)決定了即使SAN和NAS存儲容量達(dá)到EB級,性能也將成為木桶的短板。
那么如何才能應(yīng)對信息爆炸時(shí)代的數(shù)據(jù)洪流呢?我們設(shè)想能否有一種“超級數(shù)據(jù)圖書館”,它提供海量的、可共享的存儲空間給很多用戶(服務(wù)器/服務(wù)器集群)使用,提供超大的存儲容量,其存儲容量規(guī)模千倍于當(dāng)前的高速存儲單元(SAN和NAS),用戶或應(yīng)用訪問數(shù)據(jù)時(shí)無需知道圖書館對這些書如何擺放和管理(布局管理),只需要提供唯一編號(ID)就可以獲取到這本書的內(nèi)容(數(shù)據(jù))。如果某一本書變得老舊殘破,系統(tǒng)自動(dòng)地將即將失效或已經(jīng)失效的書頁(存儲介質(zhì))上的數(shù)據(jù)抄寫(恢復(fù)/重構(gòu))到新的紙張(存儲介質(zhì))上,并重新裝訂這本書,數(shù)據(jù)使用者無需關(guān)注這一過程,只是根據(jù)需要去獲取數(shù)據(jù)資源。這種“超級數(shù)據(jù)圖書館”是否真的存在呢?
二、分布式對象存儲的誕生
對象存儲技術(shù)的出現(xiàn)和大量自動(dòng)化管理技術(shù)的產(chǎn)生,使得“超級數(shù)據(jù)圖書館”不再是人類遙不可及的夢想。對象存儲系統(tǒng)(Object-Based Storage System)改進(jìn)了SAN和NAS存儲的劣勢,保留了NAS的數(shù)據(jù)共享等優(yōu)勢,通過高級的抽象接口替代了SCSI存儲塊和文件訪問接口(不同地區(qū)的用戶訪問不同的POSIX文件系統(tǒng),不僅浪費(fèi)時(shí)間,而且讓運(yùn)維管理變的更復(fù)雜。相對而言,分布式存儲系統(tǒng)的優(yōu)勢明顯。在分布式存儲系統(tǒng)上做應(yīng)用開發(fā)更便利,易維護(hù)和擴(kuò)容,自動(dòng)負(fù)載平衡。以 RESTful HTTP接口代替了POSIX接口和QEMU Driver接口),屏蔽了存儲底層的實(shí)現(xiàn)細(xì)節(jié),將NAS垂直的樹形結(jié)構(gòu)改變成平等的扁平結(jié)構(gòu),從而提高了擴(kuò)展性、增強(qiáng)了可靠性、具備了平臺無關(guān)性等重要存儲特性。(Erasure Code: 是將文件轉(zhuǎn)換成一個(gè)碎片集合,每一個(gè)碎片很小,碎片被打散分布到一組服務(wù)器資源池里。只要存留的碎片數(shù)量足夠,就可以合成為原本的文件。這可以在保持原本的數(shù)據(jù)健壯性的基礎(chǔ)上大大減少需要的存儲空間。不過Erasure Code并非適應(yīng)所有的場景,尤其不適合網(wǎng)絡(luò)延遲敏感的業(yè)務(wù)( 不過Erasure Code并非適應(yīng)所有的場景,尤其不適合網(wǎng)絡(luò)延遲敏感的業(yè)務(wù)))
SNIA(網(wǎng)絡(luò)存儲工業(yè)協(xié)會)定義的對象存儲設(shè)備是這樣的:
對象是自完備的,包含元數(shù)據(jù)、數(shù)據(jù)和屬性
存儲設(shè)備可以自行決定對象的具體存儲位置和數(shù)據(jù)的分布
存儲設(shè)備可以對不同的對象提供不同的QoS
對象存儲設(shè)備相對于塊設(shè)備有更高的“智能”,上層通過對象ID來訪問對象,而無需了解對象的具體空間分布情況
換句話說對象存儲是智能化、封裝得更好的塊,是“文件”或其他應(yīng)用級邏輯結(jié)構(gòu)的組成部分,文件與對象的對應(yīng)關(guān)系由上層直接控制,對象存儲設(shè)備本身也可能是個(gè)分布式的系統(tǒng)——這就是分布式對象存儲系統(tǒng)了。
用對象替代傳統(tǒng)的塊的好處在于對象的內(nèi)容本身來自應(yīng)用,其具有內(nèi)在的聯(lián)系,具有“原子性”,因此可以做到:
在存儲層進(jìn)行更智能的空間管理
內(nèi)容相關(guān)的數(shù)據(jù)預(yù)取和緩存
可靠的多用戶共享訪問
對象級別的安全性
同時(shí),對象存儲架構(gòu)還具有更好的可伸縮性。一個(gè)對象除了ID和用戶數(shù)據(jù)外,還包含了屬主、時(shí)間、大小、位置等源數(shù)據(jù)信息,權(quán)限等預(yù)定義屬性,乃至很多自定義屬性。
具備EB級規(guī)模擴(kuò)展性的分布式對象存儲,通過對應(yīng)用提供統(tǒng)一的命名空間,構(gòu)建EB級統(tǒng)一、可共享數(shù)據(jù)的存儲資源池,有效地填補(bǔ)上述通用計(jì)算模型中“網(wǎng)絡(luò)計(jì)算”場景海量存儲單元空白,通過高層次的數(shù)據(jù)模型抽象,可以簡化應(yīng)用對數(shù)據(jù)訪問,同時(shí)使得海量存儲更加智能。
對象是數(shù)據(jù)和自描述信息的集合,是在磁盤上存儲的基本單元。對象存儲通過簡化數(shù)據(jù)的組織形式(如將樹形的“目錄”和“文件”替換為扁平化的“ID”與“對象”)、降低協(xié)議與接口的復(fù)雜度(如簡化復(fù)雜的鎖機(jī)制,確保最終一致性),從而提高系統(tǒng)的擴(kuò)展性以應(yīng)對信息爆炸時(shí)代海量數(shù)據(jù)的挑戰(zhàn)。同時(shí)對象的智能自管理功能也能有效降低系統(tǒng)維護(hù)復(fù)雜度,幫助用戶降低整體擁有成本(TCO)。
以上便是此次小編帶來的“存儲”相關(guān)內(nèi)容,通過本文,希望大家對上述知識具備一定的了解。如果你喜歡本文,不妨持續(xù)關(guān)注我們網(wǎng)站哦,小編將于后期帶來更多精彩內(nèi)容。最后,十分感謝大家的閱讀,have a nice day!