【大話存儲II】學(xué)習(xí)筆記(15章),對象存儲

在談對象存儲是什么之前,我們先回顧一下塊存儲和文件存儲是什么

塊存儲與文件存儲

塊存儲:

常見的塊存儲設(shè)備是磁盤陣列,它會向主機提供裸磁盤空間。也就是說操作系統(tǒng)看到的只是一塊磁盤而已,雖然它底層可能是多塊硬盤組合起來的邏輯盤。

這種方式下,操作系統(tǒng)還可以對掛載的裸硬盤進行分區(qū)、格式化,與主機內(nèi)置的硬盤使用沒有區(qū)別。

一般塊存儲會采用SAN架構(gòu)組網(wǎng),而且會使用FC 協(xié)議,這樣傳輸速度和吞吐量都會很大。但是也正因為需要使用FC協(xié)議,自然也需要FC HBA卡以及FC交換機,成本將比較高。

另外,磁盤陣列一般會把某一塊LUN映射給某個主機,也就是說這塊主機獨享這塊LUN,就相當(dāng)于它的本地盤,自然無法與其他的主機共享數(shù)據(jù)。


image.png

文件存儲

塊存儲很難解決文件共享的問題,因為主機的操作系統(tǒng)可能不一樣,所以文件管理系統(tǒng)也不一樣,那么能不能把文件系統(tǒng)單拿出來,放到某一專用的設(shè)備上呢?當(dāng)然可以,這就形成了文件存儲系統(tǒng),最經(jīng)典的當(dāng)屬NAS設(shè)備。

簡單的說,NAS設(shè)備就是把文件管理功能移植到專用的設(shè)備上,而且只需要以太網(wǎng)就可以,成本大大降低。

缺點也很明顯,傳輸速率遠(yuǎn)遠(yuǎn)趕不上SAN網(wǎng)絡(luò)。

image.png

對象存儲系統(tǒng)

對象存儲怎么來的

我們知道塊存儲、文件存儲各有其優(yōu)缺點,簡單的說,塊存儲讀寫塊,但是不利于共享,文件存儲讀寫慢,但是利于共享。

有沒有一種方式,可以克服他們的優(yōu)缺點呢?也就是讀寫快,同時利于共享。要想讀寫快,最好的方法是并行取,要想共享,最好能結(jié)合文件系統(tǒng)的特點。既然如此,我們先再看看文件存儲有沒有什么可以借鑒的地方吧。

在文件系統(tǒng)里面,一個文件包含了元數(shù)據(jù)以及內(nèi)容,比如FAT32這種文件系統(tǒng),文件數(shù)據(jù)與元數(shù)據(jù)一起存放的。當(dāng)你要存放一個文件的時候,首先會劃分為4k大小的塊,然后寫到硬盤里面,注意切分的時候會不區(qū)分?jǐn)?shù)據(jù)和元數(shù)據(jù)。

每個塊都會指向下一個塊的地址,所以讀取的時候只能一個一個順序的查找,速率自然上不去。具體實現(xiàn)方式可見http://www.cnblogs.com/dy2903/p/8367217.html

后來我們把主機的文件系統(tǒng)移植到專門的NAS設(shè)備上,主機要訪問某個文件只需要傳遞路徑和文件名即可。也就是說NAS設(shè)備其實就是把“文件——塊”的映射關(guān)系移植到了專門的設(shè)備里面。如下圖所示。

image.png

傳統(tǒng)的NFS架構(gòu),一個目錄只能載入一次,所有的請求只能發(fā)與它,哪怕是這個目錄下的文件實際上是存在另一個節(jié)點上,也需要通過此節(jié)點進行轉(zhuǎn)發(fā),無法并行。

那我們能不能故技重施,把磁盤也挪出去,組成集群,然后文件系統(tǒng)可以并行的訪問這些磁盤呢。

但是主機客戶端怎么知道要訪問的文件在哪個磁盤上呢?再不能在客戶端本地維護一份映射關(guān)系吧。解決的方法是維護元數(shù)據(jù)的功能也剝離出來,形成一個獨立的元數(shù)據(jù)服務(wù)器,由它來維護“文件——磁盤——塊”之間的映射關(guān)系。

那么如果客戶端要訪問文件,首先需要向元數(shù)據(jù)服務(wù)器發(fā)起請求,由它來告知需要文件存放的具體位置。之后,客戶端可以直接向磁盤發(fā)出IO請求。

image.png

總結(jié)一下就是將文件系統(tǒng)邏輯從主機端移出來放到元數(shù)據(jù)服務(wù)器上,所有的硬盤也放到網(wǎng)絡(luò)中

不過這個架構(gòu)需要硬盤非常的智能,因為要把很多邏輯放到硬盤上來處理,到目前來說也沒有實現(xiàn)。沒有關(guān)系,我們把硬盤換成Server就可以了,取名為對象存儲設(shè)備(Object Storage Device, OSD)

那么對象存儲就是把元數(shù)據(jù)獨立出來,成為元數(shù)據(jù)服務(wù)器,主要作用是存儲對象數(shù)據(jù)的元數(shù)據(jù)。而其他實際存放文件數(shù)據(jù)部分的節(jié)點就叫OSD。文件我們改稱為Object,目錄稱為Partition,OSD中每個Object用一個128b的Object ID(OID)表示,其實就類似NAS中的File Handle(文件句柄)

那么用戶訪問對象的時候,首先需要向元數(shù)據(jù)服務(wù)器請求對象存儲在哪些OSD里面,然后用戶才會向這些OSD服務(wù)器再次請求。可以看出,這樣可以實現(xiàn)多臺節(jié)點并行傳輸數(shù)據(jù),速度自然加快。

同時因為對象存儲是有專門的文件系統(tǒng)的,OSD節(jié)點又相當(dāng)于文件服務(wù)器,所以可以解決文件共享的問題。

總的來說,對象存儲結(jié)合了塊存儲和文件存儲的優(yōu)點。

訪問的流程

下圖為對象存儲的整體架構(gòu),其中元數(shù)據(jù)服務(wù)器、OSD服務(wù)器之前已經(jīng)講過了,我們還需要在主機上安裝一個代理OSD Initiator

如果用戶想讀取或者寫入文件的時候,首先由這個代理向元數(shù)據(jù)服務(wù)器中查詢文件存儲的OSD設(shè)備,然后也是由它與操作系統(tǒng)的虛擬目錄層對接,翻譯成對應(yīng)的OSD 請求,發(fā)給OSD。而且代理只需要給出OID即可,不需要給出絕對路徑。

image.png

與集群分布式文件系統(tǒng)的區(qū)別

我們可以再對比一下對象存儲與集群分布式文件系統(tǒng)的區(qū)別。

集群文件系統(tǒng)架構(gòu)中,客戶端只能從某臺節(jié)點上掛載某個目錄,如果請求的數(shù)據(jù)不在這個節(jié)點上,會由它來進行重定向,那么這個節(jié)點的性能將成為瓶頸。

而OSD則不然,在開始訪問之前,需要從元數(shù)據(jù)服務(wù)器上查詢目標(biāo)文件分布在哪些OSD節(jié)點上,然后才會并行的向相關(guān)節(jié)點發(fā)起IO請求,并行的存儲數(shù)據(jù),簡單的講對象存儲既有塊存儲的高效率,又有文件存儲的靈活性。

image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容