塊存儲(chǔ)、文件存儲(chǔ)、對(duì)象存儲(chǔ)三者有什么區(qū)別,有什么關(guān)系?

軟件定義分布式塊存儲(chǔ)還在發(fā)展階段,當(dāng)前其在產(chǎn)品成熟度、高性能、高可靠、功能方面還是與傳統(tǒng)塊存儲(chǔ)有較大差距,國(guó)內(nèi)軟件定義塊存儲(chǔ)廠商也在做這方面的完善和追趕。

一、塊存儲(chǔ)、文件存儲(chǔ)、對(duì)象存儲(chǔ),三者的本質(zhì)差別是什么?

1、塊存儲(chǔ)

典型設(shè)備:磁盤陣列,硬盤

塊存儲(chǔ)主要是將裸磁盤空間整個(gè)映射給主機(jī)使用的,就是說(shuō)例如磁盤陣列里面有5塊硬盤(為方便說(shuō)明,假設(shè)每個(gè)硬盤1G),然后可以通過(guò)劃邏輯盤、做Raid、或者LVM(邏輯卷)等種種方式邏輯劃分出N個(gè)邏輯的硬盤。(假設(shè)劃分完的邏輯盤也是5個(gè),每個(gè)也是1G,但是這5個(gè)1G的邏輯盤已經(jīng)與原來(lái)的5個(gè)物理硬盤意義完全不同了。例如第一個(gè)邏輯硬盤A里面,可能第一個(gè)200M是來(lái)自物理硬盤1,第二個(gè)200M是來(lái)自物理硬盤2,所以邏輯硬盤A是由多個(gè)物理硬盤邏輯虛構(gòu)出來(lái)的硬盤。)

接著塊存儲(chǔ)會(huì)采用映射的方式將這幾個(gè)邏輯盤映射給主機(jī),主機(jī)上面的操作系統(tǒng)會(huì)識(shí)別到有5塊硬盤,但是操作系統(tǒng)是區(qū)分不出到底是邏輯還是物理的,它一概就認(rèn)為只是5塊裸的物理硬盤而已,跟直接拿一塊物理硬盤掛載到操作系統(tǒng)沒(méi)有區(qū)別的,至少操作系統(tǒng)感知上沒(méi)有區(qū)別。

此種方式下,操作系統(tǒng)還需要對(duì)掛載的裸硬盤進(jìn)行分區(qū)、格式化后,才能使用,與平常主機(jī)內(nèi)置硬盤的方式完全無(wú)異。

優(yōu)點(diǎn):

1、這種方式的好處當(dāng)然是因?yàn)橥ㄟ^(guò)了Raid與LVM等手段,對(duì)數(shù)據(jù)提供了保護(hù)。

2、另外也可以將多塊廉價(jià)的硬盤組合起來(lái),成為一個(gè)大容量的邏輯盤對(duì)外提供服務(wù),提高了容量。

3、寫入數(shù)據(jù)的時(shí)候,由于是多塊磁盤組合出來(lái)的邏輯盤,所以幾塊磁盤可以并行寫入的,提升了讀寫效率。

4、很多時(shí)候塊存儲(chǔ)采用SAN架構(gòu)組網(wǎng),傳輸速率以及封裝協(xié)議的原因,使得傳輸速度與讀寫速率得到提升。

缺點(diǎn):

1、采用SAN架構(gòu)組網(wǎng)時(shí),需要額外為主機(jī)購(gòu)買光纖通道卡,還要買光纖交換機(jī),造價(jià)成本高。

2、主機(jī)之間的數(shù)據(jù)無(wú)法共享,在服務(wù)器不做集群的情況下,塊存儲(chǔ)裸盤映射給主機(jī),再格式化使用后,對(duì)于主機(jī)來(lái)說(shuō)相當(dāng)于本地盤,那么主機(jī)A的本地盤根本不能給主機(jī)B去使用,無(wú)法共享數(shù)據(jù)。

3、不利于不同操作系統(tǒng)主機(jī)間的數(shù)據(jù)共享:另外一個(gè)原因是因?yàn)椴僮飨到y(tǒng)使用不同的文件系統(tǒng),格式化完之后,不同文件系統(tǒng)間的數(shù)據(jù)是共享不了的。例如一臺(tái)裝了WIN,文件系統(tǒng)是FAT32/NTFS,而Linux是EXT4,EXT4是無(wú)法識(shí)別NTFS的文件系統(tǒng)的。就像一只NTFS格式的U盤,插進(jìn)Linux的筆記本,根本無(wú)法識(shí)別出來(lái)。所以不利于文件共享。

2、文件存儲(chǔ)

典型設(shè)備:FTP、NFS服務(wù)器

為了克服上述文件無(wú)法共享的問(wèn)題,所以有了文件存儲(chǔ)。

文件存儲(chǔ)也有軟硬一體化的設(shè)備,但是其實(shí)普通拿一臺(tái)服務(wù)器/筆記本,只要裝上合適的操作系統(tǒng)與軟件,就可以架設(shè)FTP與NFS服務(wù)了,架上該類服務(wù)之后的服務(wù)器,就是文件存儲(chǔ)的一種了。

主機(jī)A可以直接對(duì)文件存儲(chǔ)進(jìn)行文件的上傳下載,與塊存儲(chǔ)不同,主機(jī)A是不需要再對(duì)文件存儲(chǔ)進(jìn)行格式化的,因?yàn)槲募芾砉δ芤呀?jīng)由文件存儲(chǔ)自己搞定了。

優(yōu)點(diǎn):

1、造價(jià)較低:隨便一臺(tái)機(jī)器就可以了,另外普通以太網(wǎng)就可以,根本不需要專用的SAN網(wǎng)絡(luò),所以造價(jià)低。

2、方便文件共享:例如主機(jī)A(WIN,NTFS文件系統(tǒng)),主機(jī)B(Linux,EXT4文件系統(tǒng)),想互拷一部電影,本來(lái)不行。加了個(gè)主機(jī)C(NFS服務(wù)器),然后可以先A拷到C,再C拷到B就OK了。(例子比較膚淺,請(qǐng)見(jiàn)諒……)

缺點(diǎn):

讀寫速率低,傳輸速率慢:以太網(wǎng),上傳下載速度較慢,另外所有讀寫都要1臺(tái)服務(wù)器里面的硬盤來(lái)承擔(dān),相比起磁盤陣列動(dòng)不動(dòng)就幾十上百塊硬盤同時(shí)讀寫,速率慢了許多。

3、對(duì)象存儲(chǔ)

典型設(shè)備:內(nèi)置大容量硬盤的分布式服務(wù)器

對(duì)象存儲(chǔ)最常用的方案,就是多臺(tái)服務(wù)器內(nèi)置大容量硬盤,再裝上對(duì)象存儲(chǔ)軟件,然后再額外搞幾臺(tái)服務(wù)作為管理節(jié)點(diǎn),安裝上對(duì)象存儲(chǔ)管理軟件。管理節(jié)點(diǎn)可以管理其他服務(wù)器對(duì)外提供讀寫訪問(wèn)功能。

之所以出現(xiàn)了對(duì)象存儲(chǔ)這種東西,是為了克服塊存儲(chǔ)與文件存儲(chǔ)各自的缺點(diǎn),發(fā)揚(yáng)它倆各自的優(yōu)點(diǎn)。簡(jiǎn)單來(lái)說(shuō)塊存儲(chǔ)讀寫快,不利于共享,文件存儲(chǔ)讀寫慢,利于共享。能否弄一個(gè)讀寫快,利于共享的出來(lái)呢。于是就有了對(duì)象存儲(chǔ)。

首先,一個(gè)文件包含了了屬性(術(shù)語(yǔ)叫metadata,元數(shù)據(jù),例如該文件的大小、修改時(shí)間、存儲(chǔ)路徑等)以及內(nèi)容(以下簡(jiǎn)稱數(shù)據(jù))。

以往像FAT32這種文件系統(tǒng),是直接將一份文件的數(shù)據(jù)與metadata一起存儲(chǔ)的,存儲(chǔ)過(guò)程先將文件按照文件系統(tǒng)的最小塊大小來(lái)打散(如4M的文件,假設(shè)文件系統(tǒng)要求一個(gè)塊4K,那么就將文件打散成為1000個(gè)小塊),再寫進(jìn)硬盤里面,過(guò)程中沒(méi)有區(qū)分?jǐn)?shù)據(jù)/metadata的。而每個(gè)塊最后會(huì)告知你下一個(gè)要讀取的塊的地址,然后一直這樣順序地按圖索驥,最后完成整份文件的所有塊的讀取。

這種情況下讀寫速率很慢,因?yàn)榫退隳阌?00個(gè)機(jī)械手臂在讀寫,但是由于你只有讀取到第一個(gè)塊,才能知道下一個(gè)塊在哪里,其實(shí)相當(dāng)于只能有1個(gè)機(jī)械手臂在實(shí)際工作。

而對(duì)象存儲(chǔ)則將元數(shù)據(jù)獨(dú)立了出來(lái),控制節(jié)點(diǎn)叫元數(shù)據(jù)服務(wù)器(服務(wù)器+對(duì)象存儲(chǔ)管理軟件),里面主要負(fù)責(zé)存儲(chǔ)對(duì)象的屬性(主要是對(duì)象的數(shù)據(jù)被打散存放到了那幾臺(tái)分布式服務(wù)器中的信息),而其他負(fù)責(zé)存儲(chǔ)數(shù)據(jù)的分布式服務(wù)器叫做OSD,主要負(fù)責(zé)存儲(chǔ)文件的數(shù)據(jù)部分。當(dāng)用戶訪問(wèn)對(duì)象,會(huì)先訪問(wèn)元數(shù)據(jù)服務(wù)器,元數(shù)據(jù)服務(wù)器只負(fù)責(zé)反饋對(duì)象存儲(chǔ)在哪些OSD,假設(shè)反饋文件A存儲(chǔ)在B、C、D三臺(tái)OSD,那么用戶就會(huì)再次直接訪問(wèn)3臺(tái)OSD服務(wù)器去讀取數(shù)據(jù)。

這時(shí)候由于是3臺(tái)OSD同時(shí)對(duì)外傳輸數(shù)據(jù),所以傳輸?shù)乃俣染图涌炝?。?dāng)OSD服務(wù)器數(shù)量越多,這種讀寫速度的提升就越大,通過(guò)此種方式,實(shí)現(xiàn)了讀寫快的目的。

另一方面,對(duì)象存儲(chǔ)軟件是有專門的文件系統(tǒng)的,所以O(shè)SD對(duì)外又相當(dāng)于文件服務(wù)器,那么就不存在文件共享方面的困難了,也解決了文件共享方面的問(wèn)題。

所以對(duì)象存儲(chǔ)的出現(xiàn),很好地結(jié)合了塊存儲(chǔ)與文件存儲(chǔ)的優(yōu)點(diǎn)。

最后,為什么對(duì)象存儲(chǔ)兼具塊存儲(chǔ)與文件存儲(chǔ)的好處,還要使用塊存儲(chǔ)或文件存儲(chǔ)呢?

1、有一類應(yīng)用是需要存儲(chǔ)直接裸盤映射的,例如數(shù)據(jù)庫(kù)。因?yàn)閿?shù)據(jù)庫(kù)需要存儲(chǔ)裸盤映射給自己后,再根據(jù)自己的數(shù)據(jù)庫(kù)文件系統(tǒng)來(lái)對(duì)裸盤進(jìn)行格式化的,所以是不能夠采用其他已經(jīng)被格式化為某種文件系統(tǒng)的存儲(chǔ)的。此類應(yīng)用更適合使用塊存儲(chǔ)。

2、對(duì)象存儲(chǔ)的成本比起普通的文件存儲(chǔ)還是較高,需要購(gòu)買專門的對(duì)象存儲(chǔ)軟件以及大容量硬盤。如果對(duì)數(shù)據(jù)量要求不是海量,只是為了做文件共享的時(shí)候,直接用文件存儲(chǔ)的形式好了,性價(jià)比高。

二、從應(yīng)用角度比較塊存儲(chǔ)、文件存儲(chǔ)、對(duì)象存儲(chǔ)

產(chǎn)品和市場(chǎng)需求有各種相互影響的關(guān)系,但不管是哪一種,最終呈現(xiàn)都是產(chǎn)品和應(yīng)用需求需要對(duì)應(yīng)匹配。應(yīng)用需求越多樣化,市場(chǎng)也就劃分得更加細(xì),產(chǎn)品種類也就更加豐富。在存儲(chǔ)行業(yè),我們也可以從“應(yīng)用適配”這個(gè)角度來(lái)聊聊各類存儲(chǔ)。

傳統(tǒng)認(rèn)知上來(lái)說(shuō),IT設(shè)備分為計(jì)算/存儲(chǔ)/網(wǎng)絡(luò)三大類,相互之間是有明顯的楚河漢界的。計(jì)算大家都清楚,服務(wù)器,小型機(jī),大型機(jī);網(wǎng)絡(luò)也就是路由器交換機(jī);存儲(chǔ)有內(nèi)置存儲(chǔ)和外置存儲(chǔ),最常見(jiàn)的就是磁盤陣列。在HCI(超融合)這個(gè)概念沒(méi)被熱炒之前,計(jì)算網(wǎng)絡(luò)存儲(chǔ)還都是涇渭分明,各擔(dān)其責(zé)的。今天我們先不討論超融合的情況,僅基于傳統(tǒng)理解,看看存儲(chǔ)的情況。

從邏輯上存儲(chǔ)通常分為塊存儲(chǔ),文件存儲(chǔ),對(duì)象存儲(chǔ)。這三類存儲(chǔ)在實(shí)際應(yīng)用中的適配環(huán)境還是有著明顯的不同的。

塊存儲(chǔ)(DAS/SAN)通常應(yīng)用在某些專有的系統(tǒng)中,這類應(yīng)用要求很高的隨機(jī)讀寫性能和高可靠性,上面搭載的通常是Oracle/DB2這種傳統(tǒng)數(shù)據(jù)庫(kù),連接通常是以FC光纖(8Gb/16Gb)為主,走光纖協(xié)議。如果要求稍低一些,也會(huì)出現(xiàn)基于千兆/萬(wàn)兆以太網(wǎng)的連接方式,MySQL這種數(shù)據(jù)庫(kù)就可能會(huì)使用IP SAN,走iSCSI協(xié)議。通常使用塊存儲(chǔ)的都是系統(tǒng)而非用戶,并發(fā)訪問(wèn)不會(huì)很多,經(jīng)常出現(xiàn)一套存儲(chǔ)只服務(wù)一個(gè)應(yīng)用系統(tǒng),例如如交易系統(tǒng),計(jì)費(fèi)系統(tǒng)。典型行業(yè)如金融,制造,能源,電信等。

1.webp.jpg

文件存儲(chǔ)(NAS)相對(duì)來(lái)說(shuō)就更能兼顧多個(gè)應(yīng)用和更多用戶訪問(wèn),同時(shí)提供方便的數(shù)據(jù)共享手段。畢竟大部分的用戶數(shù)據(jù)都是以文件的形式存放,在PC時(shí)代,數(shù)據(jù)共享也大多是用文件的形式,比如常見(jiàn)的的FTP服務(wù),NFS服務(wù),Samba共享這些都是屬于典型的文件存儲(chǔ)。幾十個(gè)用戶甚至上百用戶的文件存儲(chǔ)共享訪問(wèn)都可以用NAS存儲(chǔ)加以解決。在中小企業(yè)市場(chǎng),一兩臺(tái)NAS存儲(chǔ)設(shè)備就能支撐整個(gè)IT部門了。CRM系統(tǒng),SCM系統(tǒng),OA系統(tǒng),郵件系統(tǒng)都可以使用NAS存儲(chǔ)統(tǒng)統(tǒng)搞定。甚至在公有云發(fā)展的早幾年,用戶規(guī)模沒(méi)有上來(lái)時(shí),云存儲(chǔ)的底層硬件也有用幾套NAS存儲(chǔ)設(shè)備就解決的,甚至云主機(jī)的鏡像也有放在NAS存儲(chǔ)上的例子。文件存儲(chǔ)的廣泛兼容性和易用性,是這類存儲(chǔ)的突出特點(diǎn)。但是從性能上來(lái)看,相對(duì)SAN就要低一些。NAS存儲(chǔ)基本上是以太網(wǎng)訪問(wèn)模式,普通千兆網(wǎng),走NFS/CIFS協(xié)議。

2.webp.jpg

對(duì)象存儲(chǔ)概念出現(xiàn)得晚一些,存儲(chǔ)標(biāo)準(zhǔn)化組織SINA早在2004年就給出了定義,但早期多出現(xiàn)在超大規(guī)模系統(tǒng),所以并不為大眾所熟知,相關(guān)產(chǎn)品一直也不溫不火。一直到云計(jì)算和大數(shù)據(jù)的概念全民強(qiáng)推,才慢慢進(jìn)入公眾視野。

前面說(shuō)到的塊存儲(chǔ)和文件存儲(chǔ),基本上都還是在專有的局域網(wǎng)絡(luò)內(nèi)部使用,而對(duì)象存儲(chǔ)的優(yōu)勢(shì)場(chǎng)景卻是互聯(lián)網(wǎng)或者公網(wǎng),主要解決海量數(shù)據(jù),海量并發(fā)訪問(wèn)的需求?;诨ヂ?lián)網(wǎng)的應(yīng)用才是對(duì)象存儲(chǔ)的主要適配(當(dāng)然這個(gè)條件同樣適用于云計(jì)算,基于互聯(lián)網(wǎng)的應(yīng)用最容易遷移到云上,因?yàn)闆](méi)出現(xiàn)云這個(gè)名詞之前,他們已經(jīng)在上面了),基本所有成熟的公有云都提供了對(duì)象存儲(chǔ)產(chǎn)品,不管是國(guó)內(nèi)還是國(guó)外。

對(duì)象存儲(chǔ)常見(jiàn)的適配應(yīng)用如網(wǎng)盤、媒體娛樂(lè),醫(yī)療PACS,氣象,歸檔等數(shù)據(jù)量超大而又相對(duì)“冷數(shù)據(jù)”和非在線處理的應(yīng)用類型。這類應(yīng)用單個(gè)數(shù)據(jù)大,總量也大,適合對(duì)象存儲(chǔ)海量和易擴(kuò)展的特點(diǎn)。網(wǎng)盤類應(yīng)用也差不多,數(shù)據(jù)總量很大,另外還有并發(fā)訪問(wèn)量也大,支持10萬(wàn)級(jí)用戶訪問(wèn)這種需求就值得單列一個(gè)項(xiàng)目了(這方面的掃盲可以想想12306)。歸檔類應(yīng)用只是數(shù)據(jù)量大的冷數(shù)據(jù),并發(fā)訪問(wèn)的需求倒是不太突出。

另外基于移動(dòng)端的一些新興應(yīng)用也是適合的,智能手機(jī)和移動(dòng)互聯(lián)網(wǎng)普及的情況下,所謂UGD(用戶產(chǎn)生的數(shù)據(jù),手機(jī)的照片視頻)總量和用戶數(shù)都是很大挑戰(zhàn)。畢竟直接使用HTTP get/put就能直接實(shí)現(xiàn)數(shù)據(jù)存取,對(duì)移動(dòng)應(yīng)用來(lái)說(shuō)還是有一定吸引力的。

對(duì)象存儲(chǔ)的訪問(wèn)通常是在互聯(lián)網(wǎng),走HTTP協(xié)議,性能方面,單獨(dú)看一個(gè)連接的是不高的(還要解決掉線斷點(diǎn)續(xù)傳之類的可靠性問(wèn)題),主要強(qiáng)大的地方是支持的并發(fā)數(shù)量,聚合起來(lái)的性能帶寬就非??捎^了。

3.webp.jpg

從產(chǎn)品形態(tài)上來(lái)看,塊存儲(chǔ)和文件存儲(chǔ)都是成熟產(chǎn)品,各種規(guī)格形態(tài)的硬件已經(jīng)是琳瑯滿目了。但是對(duì)象存儲(chǔ)通常你看到都是一堆服務(wù)器或者增強(qiáng)型服務(wù)器,畢竟這東西現(xiàn)在還是互聯(lián)網(wǎng)行業(yè)用得多點(diǎn),DIY風(fēng)格。

關(guān)于性能容量等方面,我做了個(gè)圖,對(duì)三種存儲(chǔ)做直觀對(duì)比。

4.webp.jpg

塊存儲(chǔ)就像超跑,根本不在意能不能多載幾個(gè)人,要的就是極限速度和高速下的穩(wěn)定性和可靠性,各大廠商出新產(chǎn)品都要去紐北賽道刷個(gè)單圈最快紀(jì)錄,千方百計(jì)就為提高一兩秒,跑不進(jìn)7分以內(nèi)都看不到前三名。(塊存儲(chǔ)容量也不大,TB這個(gè)數(shù)量級(jí),支持的應(yīng)用和適用的環(huán)境也比較專業(yè)(FC+Oracle),在乎的都是IOPS的性能值,廠商出新產(chǎn)品也都想去刷個(gè)SPC-1,測(cè)得好的得意洋洋,測(cè)得不好自動(dòng)忽略。)

文件存儲(chǔ)像集卡,普適各種場(chǎng)合,又能裝數(shù)據(jù)(數(shù)百TB),而且兼容性好,只要你是文件,各種貨物都能往里塞,在不超過(guò)性能載荷的前提下,能拉動(dòng)常見(jiàn)的各種系統(tǒng)。標(biāo)準(zhǔn)POXIS接口,后車門打開(kāi)就能裝卸。卡車也不挑路,不像塊存儲(chǔ)非要上賽道才能開(kāi),普通的千兆公路就能暢通無(wú)阻。速度雖然沒(méi)有塊存儲(chǔ)超跑那么塊,但跑個(gè)80/100碼還是穩(wěn)穩(wěn)當(dāng)當(dāng).

而對(duì)象存儲(chǔ)就像海運(yùn)貨輪,應(yīng)對(duì)的是"真·海量",幾十上百PB的數(shù)據(jù),以集裝箱/container(桶/bucket)為單位碼得整整齊齊,里面裝滿各種對(duì)象數(shù)據(jù),十萬(wàn)客戶發(fā)的貨(數(shù)據(jù)),一條船就都處理得過(guò)來(lái),按照鍵值(KeyVaule)記得清清楚楚。海運(yùn)速度慢是慢點(diǎn),有時(shí)候遇到點(diǎn)網(wǎng)絡(luò)風(fēng)暴還不穩(wěn)定,但支持?jǐn)帱c(diǎn)續(xù)傳,最終還是能安全送達(dá)的,對(duì)大宗貨物尤其是非結(jié)構(gòu)化數(shù)據(jù),整體上來(lái)看是最快捷便利的。

從訪問(wèn)方式來(lái)說(shuō),塊存儲(chǔ)通常都是通過(guò)光纖網(wǎng)絡(luò)連接,服務(wù)器/小機(jī)上配置FC光纖HBA卡,通過(guò)光纖交換機(jī)連接存儲(chǔ)(IP SAN可以通過(guò)千兆以太網(wǎng),以iSCSI客戶端連接存儲(chǔ)),主機(jī)端以邏輯卷(Volume)的方式訪問(wèn)。連接成功后,應(yīng)用訪問(wèn)存儲(chǔ)是按起始地址,偏移量Offset的方法來(lái)訪問(wèn)的。

而NAS文件存儲(chǔ)通常只要是局域網(wǎng)內(nèi),千兆/百兆的以太網(wǎng)環(huán)境皆可。網(wǎng)線連上,服務(wù)器端通過(guò)操作系統(tǒng)內(nèi)置的NAS客戶端,如NFS/CIFS/FTP客戶端掛載存儲(chǔ)成為一個(gè)本地的文件夾后訪問(wèn),只要符合POXIS標(biāo)準(zhǔn),應(yīng)用就可以用標(biāo)準(zhǔn)的open,seek,write/read,close這些方法對(duì)其訪問(wèn)操作。

對(duì)象存儲(chǔ)不在乎網(wǎng)絡(luò),而且它的訪問(wèn)比較有特色,只能存取刪(put/get/delete),不能打開(kāi)修改存盤。只能取下來(lái)改好后上傳,去覆蓋原對(duì)象。(因?yàn)橹虚g是不可靠的互聯(lián)網(wǎng)啊,不能保證你在修改時(shí)候不掉線啊。所謂你在這頭,對(duì)象在那頭,所愛(ài)對(duì)象隔山海,山海不可平。)

另外再說(shuō)一點(diǎn)分布式存儲(chǔ)的問(wèn)題,以上三種存儲(chǔ)都可以和分布式概念結(jié)合,成為分布式文件系統(tǒng),分布式塊存儲(chǔ),還有天生分布式的對(duì)象存儲(chǔ)。

對(duì)象存儲(chǔ)的定義就把元數(shù)據(jù)管理和數(shù)據(jù)存儲(chǔ)訪問(wèn)分開(kāi)在不同的節(jié)點(diǎn)上,多個(gè)節(jié)點(diǎn)應(yīng)對(duì)多并發(fā)的訪問(wèn),這自然就是一個(gè)分布式的存儲(chǔ)產(chǎn)品。而分布式文件系統(tǒng)就很多了,各種開(kāi)源閉源的產(chǎn)品數(shù)得出幾十個(gè),在不同的領(lǐng)域各有應(yīng)用。至于分布式的塊存儲(chǔ)產(chǎn)品就比較少,也很難做好。我個(gè)人認(rèn)為這個(gè)產(chǎn)品形態(tài)有點(diǎn)違和,分布式的思想和塊存儲(chǔ)的設(shè)計(jì)追求其實(shí)是沖突的。前面講過(guò),塊存儲(chǔ)主要是圖快,一上分布式肯定嚴(yán)重拖后腿,既然都分布開(kāi)了,節(jié)點(diǎn)之間的通信必然增加額外負(fù)擔(dān),再加上CAP,為了保持一致性犧牲響應(yīng)速度,得到的好處就是擴(kuò)展性。這就像把超跑弄個(gè)鐵索連環(huán),哪里還可能跑出高速?鏈條比車都重了,穿起來(lái)當(dāng)火車開(kāi)嗎?

而文件存儲(chǔ)原來(lái)也就是集裝箱貨車,大家連起來(lái)扮火車還是有可行性的。

三、塊存儲(chǔ)、文件存儲(chǔ)、對(duì)象存儲(chǔ)的層次關(guān)系

應(yīng)用的角度聊過(guò)了,我們?cè)倏纯催@三種存儲(chǔ)的一些技術(shù)細(xì)節(jié),首先看看在系統(tǒng)層級(jí)的分布。

5.webp.jpg

我們從底層往上看,最底層就是硬盤,多個(gè)硬盤可以做成RAID組,無(wú)論是單個(gè)硬盤還是RAID組,都可以做成PV,多個(gè)PV物理卷捏在一起構(gòu)成VG卷組,這就做成一塊大蛋糕了。接下來(lái),可以從蛋糕上切下很多塊LV邏輯卷,這就到了存儲(chǔ)用戶最熟悉的卷這層。到這一層為止,數(shù)據(jù)一直都是以Block塊的形式存在的,這時(shí)候提供出來(lái)的服務(wù)就是塊存儲(chǔ)服務(wù)。你可以通過(guò)FC協(xié)議或者iSCSI協(xié)議對(duì)卷訪問(wèn),映射到主機(jī)端本地,成為一個(gè)裸設(shè)備。在主機(jī)端可以直接在上面安裝數(shù)據(jù)庫(kù),也可以格式化成文件系統(tǒng)后交給應(yīng)用程序使用,這時(shí)候就是一個(gè)標(biāo)準(zhǔn)的SAN存儲(chǔ)設(shè)備的訪問(wèn)模式,網(wǎng)絡(luò)間傳送的是塊。

如果不急著訪問(wèn),也可以在本地做文件系統(tǒng),之后以NFS/CIFS協(xié)議掛載,映射到本地目錄,直接以文件形式訪問(wèn),這就成了NAS訪問(wèn)的模式,在網(wǎng)絡(luò)間傳送的是文件。

如果不走NAS,在本地文件系統(tǒng)上面部署OSD服務(wù)端,把整個(gè)設(shè)備做成一個(gè)OSD,這樣的節(jié)點(diǎn)多來(lái)幾個(gè),再加上必要的MDS節(jié)點(diǎn),互聯(lián)網(wǎng)另一端的應(yīng)用程序再通過(guò)HTTP協(xié)議直接進(jìn)行訪問(wèn),這就變成了對(duì)象存儲(chǔ)的訪問(wèn)模式。當(dāng)然對(duì)象存儲(chǔ)通常不需要專業(yè)的存儲(chǔ)設(shè)備,前面那些LV/VG/PV層也可以統(tǒng)統(tǒng)不要,直接在硬盤上做本地文件系統(tǒng),之后再做成OSD,這種才是對(duì)象存儲(chǔ)的標(biāo)準(zhǔn)模式,對(duì)象存儲(chǔ)的硬件設(shè)備通常就用大盤位的服務(wù)器。

從系統(tǒng)層級(jí)上來(lái)說(shuō),這三種存儲(chǔ)是按照塊->文件->對(duì)象逐級(jí)向上的。文件一定是基于塊上面去做,不管是遠(yuǎn)端還是本地。而對(duì)象存儲(chǔ)的底層或者說(shuō)后端存儲(chǔ)通常是基于一個(gè)本地文件系統(tǒng)(XFS/Ext4..)。這樣做是比較合理順暢的架構(gòu)。但是大家想法很多,還有各種特異的產(chǎn)品出現(xiàn),我們逐個(gè)來(lái)看看:

對(duì)象存儲(chǔ)除了基于文件,可以直接基于塊,但是做這個(gè)實(shí)現(xiàn)的很少,畢竟你還是得把文件系統(tǒng)的活給干了,自己實(shí)現(xiàn)一套元數(shù)據(jù)管理,也挺麻煩的。另外對(duì)象存儲(chǔ)還能基于對(duì)象存儲(chǔ),這就有點(diǎn)尷尬了,就是轉(zhuǎn)一下,何必呢?但是這都不算最奇怪的,最奇怪的是把對(duì)象存儲(chǔ)放在最底層,那就是這兩年大紅的Ceph。

6.webp.jpg

Ceph是個(gè)開(kāi)源的分布式存儲(chǔ),相信類似的架構(gòu)圖大家都見(jiàn)過(guò),我把底層細(xì)節(jié)也畫出來(lái),方便分析。

底層是RADOS,這是個(gè)標(biāo)準(zhǔn)的對(duì)象存儲(chǔ)。以RADOS為基礎(chǔ),Ceph能夠提供文件,塊和對(duì)象三種存儲(chǔ)服務(wù)。其中通過(guò)RBD提供出來(lái)的塊存儲(chǔ)是比較有價(jià)值的地方,畢竟因?yàn)槭忻嫔祥_(kāi)源的分布式塊存儲(chǔ)少見(jiàn)嘛(以前倒是有個(gè)sheepdog,但是現(xiàn)在不當(dāng)紅了)。當(dāng)然它也通過(guò)CephFS模塊和相應(yīng)的私有Client提供了文件服務(wù),這也是很多人認(rèn)為Ceph是個(gè)文件系統(tǒng)的原因。另外它自己原生的對(duì)象存儲(chǔ)可以通過(guò)RadosGW存儲(chǔ)網(wǎng)關(guān)模塊向外提供對(duì)象存儲(chǔ)服務(wù),并且和對(duì)象存儲(chǔ)的事實(shí)標(biāo)準(zhǔn)Amazon S3以及Swift兼容。所以能看出來(lái)這其實(shí)是個(gè)大一統(tǒng)解決方案,啥都齊全。

上面講的大家或多或少都有所了解,但底層的RADOS的細(xì)節(jié)可能會(huì)忽略,RADOS也是個(gè)標(biāo)準(zhǔn)對(duì)象存儲(chǔ),里面也有MDS的元數(shù)據(jù)管理和OSD的數(shù)據(jù)存儲(chǔ),而OSD本身是可以基于一個(gè)本地文件系統(tǒng)的,比如XFS/EXT4/Brtfs。在早期版本,你在部署Ceph的時(shí)候,是不是要給OSD創(chuàng)建數(shù)據(jù)目錄?。窟@一步其實(shí)就已經(jīng)在本地文件系統(tǒng)上做操作了(現(xiàn)在的版本Ceph可以直接使用硬盤)。

現(xiàn)在我們來(lái)看數(shù)據(jù)訪問(wèn)路徑,如果看Ceph的文件接口,自底層向上,經(jīng)過(guò)了硬盤(塊)->文件->對(duì)象->文件的路徑;如果看RBD的塊存儲(chǔ)服務(wù),則經(jīng)過(guò)了硬盤(塊)->文件->對(duì)象->塊,也可能是硬盤(塊)->對(duì)象->塊的路徑;再看看對(duì)象接口(雖然用的不多),則是經(jīng)過(guò)了硬盤(塊)->文件->對(duì)象或者硬盤(塊)->對(duì)象的路徑。

雖說(shuō)現(xiàn)在大家都這么隨便結(jié)合,但是這三種存儲(chǔ)本質(zhì)上還是有不同的,我們回到計(jì)算機(jī)的基礎(chǔ)課程,從數(shù)據(jù)結(jié)構(gòu)來(lái)看,這三種存儲(chǔ)有著根本不同。塊存儲(chǔ)的數(shù)據(jù)結(jié)構(gòu)是數(shù)組,而文件存儲(chǔ)是二叉樹(B,B-,B+,B*各種樹),對(duì)象存儲(chǔ)基本上都是哈希表。

7.webp.jpg

數(shù)組和二叉樹都是老生常談,沒(méi)有太多值得說(shuō)的,而對(duì)象存儲(chǔ)使用的哈希表也就是常聽(tīng)說(shuō)的鍵值(KeyVaule型)存儲(chǔ)的核心數(shù)據(jù)結(jié)構(gòu),每個(gè)對(duì)象找一個(gè)UID(所謂的“鍵”KEY),算哈希值(所謂的“值Vaule”)以后和目標(biāo)對(duì)應(yīng)。找了一個(gè)哈希表例子如下:

鍵值對(duì)應(yīng)關(guān)系簡(jiǎn)單粗暴,畢竟算個(gè)hash值是很快的,這種扁平化組織形式可以做得非常大,避免了二叉樹的深度,對(duì)于真·海量的數(shù)據(jù)存儲(chǔ)和大規(guī)模訪問(wèn)都能給力支持。所以不僅是對(duì)象存儲(chǔ),很多NoSQL的分布式數(shù)據(jù)庫(kù)都會(huì)使用它。

順便說(shuō)一句,這類NoSQL的出現(xiàn)有點(diǎn)打破了數(shù)據(jù)庫(kù)和文件存儲(chǔ)的天然屏障,原本關(guān)系數(shù)據(jù)庫(kù)里面是不會(huì)存放太大的數(shù)據(jù)的,但是現(xiàn)在像MongoDB這種NoSQL都支持直接往里扔大個(gè)的“文檔”數(shù)據(jù),所以從應(yīng)用角度上,有時(shí)候會(huì)把對(duì)象存儲(chǔ),分布式文件系統(tǒng),分布式數(shù)據(jù)庫(kù)放到一個(gè)臺(tái)面上來(lái)比較,這才是混搭。

當(dāng)然實(shí)際上幾個(gè)開(kāi)源對(duì)象存儲(chǔ)比如swift和ceph都是用的一致性哈希,進(jìn)階版,最后變成了一個(gè)環(huán),首首尾相接,避免了節(jié)點(diǎn)故障時(shí)大量數(shù)據(jù)遷移的尷尬。

四、分布式存儲(chǔ)在塊存儲(chǔ)、文件存儲(chǔ)、對(duì)象存儲(chǔ)的應(yīng)用成效

8.webp.jpg

軟件定義分布式塊存儲(chǔ)還在發(fā)展階段,當(dāng)前其在產(chǎn)品成熟度、高性能、高可靠、功能方面還是與傳統(tǒng)塊存儲(chǔ)有較大差距,國(guó)內(nèi)軟件定義塊存儲(chǔ)廠商也在做這方面的完善和追趕。

文件存儲(chǔ)也有其契合的應(yīng)用場(chǎng)景,其使用簡(jiǎn)單快捷,易于多主機(jī)共享,在要求帶寬,要IOPS和延遲不敏感,但是又需要經(jīng)常進(jìn)行數(shù)據(jù)改(在存儲(chǔ)上即時(shí)更改文件數(shù)據(jù))的應(yīng)用場(chǎng)景比較適合使用文件存儲(chǔ)。

對(duì)象存儲(chǔ)因?yàn)榧軜?gòu)設(shè)計(jì)的限制其適合應(yīng)用數(shù)據(jù)場(chǎng)景應(yīng)該是:只進(jìn)行全讀和全寫的應(yīng)用場(chǎng)景海量數(shù)據(jù)場(chǎng)景。但需要經(jīng)常進(jìn)行數(shù)據(jù)改(在存儲(chǔ)上即時(shí)更改數(shù)據(jù))的應(yīng)用場(chǎng)景使用對(duì)象存儲(chǔ)就非常的太合適了。

對(duì)象存儲(chǔ)可以用來(lái)替代NAS存儲(chǔ)的一些使用場(chǎng)景?,F(xiàn)在還有一種流行的做法就是用對(duì)象存儲(chǔ)來(lái)做數(shù)據(jù)歸檔和備份。像優(yōu)酷、愛(ài)奇藝上的視頻(電影視頻發(fā)布后一次寫入對(duì)象存儲(chǔ)后續(xù)不會(huì)有數(shù)據(jù)改操作的。)或是微信上的圖片(圖片只有上傳寫入和刪除功能,你見(jiàn)騰訊啥時(shí)間讓你在線編輯照片了。)這類應(yīng)用就是對(duì)象存儲(chǔ)的最愛(ài)。

總體是我個(gè)人認(rèn)為分布式對(duì)象存儲(chǔ)時(shí)最為成熟的軟件定義分布式存儲(chǔ)類型,現(xiàn)在多家對(duì)象存儲(chǔ)廠商都支持多副本和EC校驗(yàn)碼數(shù)據(jù)保護(hù)方式,通過(guò)EC校驗(yàn)碼可以大幅提升有效可用容量做的類型傳統(tǒng)RAID存儲(chǔ)的容量使用率,大幅降低成本。

來(lái)源:

第一部分:網(wǎng)絡(luò),相關(guān)權(quán)益歸原作者所有

第二部分:twt社區(qū)《從應(yīng)用角度看塊/文件/對(duì)象三種存儲(chǔ)》,作者:EricChan;地址:http://www.talkwithtrend.com/Article/178247

第三部分:twt社區(qū)《塊存儲(chǔ),文件存儲(chǔ),對(duì)象存儲(chǔ)的層次關(guān)系》,作者:EricChan;地址:http://www.talkwithtrend.com/Article/178249

第四部分:twt社區(qū),作者:王帥;地址:http://www.talkwithtrend.com/Question/416833

THEEND

最新評(píng)論(評(píng)論僅代表用戶觀點(diǎn))

更多
暫無(wú)評(píng)論