塊存儲和文件存儲是我們比較熟悉的兩種主流的存儲類型,而對象存儲(Object-based Storage)是一種新的網(wǎng)絡(luò)存儲架構(gòu),基于對象存儲技術(shù)的設(shè)備就是對象存儲設(shè)備(Object-based Storage Device)簡稱OSD。
本期作為入門系列的文章,將為大家介紹三種存儲類型:塊存儲、文件存儲、對象存儲。
塊存儲
塊存儲主要是將裸磁盤空間整個映射給主機使用的。塊存儲就是在物理層這個層面對外提供服務(wù),使用它的系統(tǒng),又用自己的文件系統(tǒng)格式化。這樣一旦被一個系統(tǒng)使用,就獨占了。
例如:磁盤陣列里面有5塊硬盤,然后可以通過劃邏輯盤、做Raid、或者LVM等方式邏輯劃分出N個邏輯的硬盤。但是邏輯盤和物理盤是兩個完全不同的概念。假設(shè)每個硬盤100G,共有5個硬盤,劃分為邏輯盤也為5個,每個100G,但是這5個邏輯盤和原來的5個物理盤意義完全不同了。例如第一個邏輯盤第一個20G可能來自物理盤1,第二個20G來自物理盤2,所以邏輯盤是多個物理盤邏輯虛構(gòu)出來的硬盤。
接著塊存儲會采用映射的方式將這幾個邏輯盤映射給主機,主機上面的操作系統(tǒng)會識別到有5塊硬盤,但是操作系統(tǒng)是無法區(qū)分到底是物理盤還是邏輯盤,它一概就認(rèn)為只是5塊裸的物理硬盤而已,跟直接拿一塊物理硬盤掛載到操作系統(tǒng)沒區(qū)別,至少操作系統(tǒng)感知上沒有區(qū)別的。
在此方式下,操作系統(tǒng)還需要對掛載的裸硬盤進(jìn)行分區(qū)、格式化后,才能使用,與平常主機內(nèi)置的硬盤無差異。
典型設(shè)備
磁盤陣列、硬盤
優(yōu)點
(1)因為通過了Raid與LVM等手段,對數(shù)據(jù)提供了保護;
(2)可以將多塊硬盤組合起來,稱為一個大容量的邏輯盤對外提供服務(wù),提高容量;
(3)寫入數(shù)據(jù)時,由于是多塊磁盤組合,可以并行寫入的,提升讀寫效率;
(4)采用SAN架構(gòu)組網(wǎng),傳輸速度以及封裝協(xié)議的原因,使得傳輸速度和讀寫效率得到提升;
缺點
(1)需額外為主機購買光纖通道卡、光纖交換機,造價成本高;
(2)主機之間數(shù)據(jù)無法共享,在服務(wù)器不做集群的情況下,塊存儲裸盤映射給主機,在格式化使用后,對于主機來說相當(dāng)于本地盤,那么主機A的本地盤根本不能給主機B去使用,無法共享數(shù)據(jù);
(3)不利于不同操作系統(tǒng)主機間的數(shù)據(jù)共享:因為操作系統(tǒng)使用不同的文件系統(tǒng),格式化后,不同的文件系統(tǒng)間的數(shù)據(jù)是共享不了的;
使用場景
docker容器、虛擬機磁盤存儲分配;日志存儲;文件存儲…
為了克服文件無法共享的問題,所以有了文件存儲。
文件存儲
在文件系統(tǒng)一層對外提供服務(wù),系統(tǒng)只用訪問文件系統(tǒng)一級就可以,各個系統(tǒng)都可以根據(jù)接口去訪問。
文件存儲也有軟硬一體化的設(shè)備,但是其實一臺普通的PC機,只要裝上合適的操作系統(tǒng)和軟件,就可以假設(shè)FTP與NFS服務(wù)了,加上該類服務(wù)之后的服務(wù)器,就是文件存儲的一種了。
主機A可以直接對文件存儲進(jìn)行文件的上傳和下載,與塊存儲不同,主機A是不需要再對文件存儲進(jìn)行格式化的,因為文件管理功能已經(jīng)由文件存儲自己搞定了。
典型設(shè)備
FTP、NFS服務(wù)器
優(yōu)點
(1)造價低:一臺機器和普通的以太網(wǎng)就可以;
(2)方便文件共享;
缺點
讀寫速率低,傳輸速率慢;
使用場景
日志存儲;有目錄結(jié)構(gòu)的文件存儲…
對象存儲
對象存儲數(shù)據(jù)組織示意圖
之所以出現(xiàn)對象存儲,是為了克服塊存儲與文件存儲各自的缺點,發(fā)揚各自的優(yōu)點。簡單來說塊存儲讀寫快,不利于共享,文件存儲讀寫慢,利于共享。能否弄一個讀寫塊,利于共享的存儲出來呢?于是就有了對象存儲。
首先,一個文件包含了屬性(metadata)以及內(nèi)容。
像FAT32這種文件系統(tǒng),是直接將一份文件與metadata一起存儲的,存儲過程先將文件按照文件系統(tǒng)的最小塊大小來打散(例如4M的文件,假設(shè)文件系統(tǒng)要求一個塊4K,那么就將文件打散稱為1000個小塊),再寫進(jìn)硬盤里,過程中沒有區(qū)分?jǐn)?shù)據(jù)和metadata的。而每個塊最后會告知你下一個要讀取的塊地址,然后一直這樣順序的按圖索驥,最后完成整份文件的所有塊的讀取。
這種情況下讀寫速率很慢,因為就算有100個機械臂在讀寫,但是由于只有讀取到第一個塊,才能知道下一個塊在哪里,其實相當(dāng)于只能有1個機械臂在實際工作。
而對象存儲則將元數(shù)據(jù)獨立出來了,控制節(jié)點叫元數(shù)據(jù)服務(wù)器(服務(wù)器+對象存儲管理軟件),里面主要負(fù)責(zé)存儲對象的屬性(主要是對象的數(shù)據(jù)被打散存放到了那幾臺分布式服務(wù)器中的信息)而其他負(fù)責(zé)存儲數(shù)據(jù)的分布式服務(wù)器叫做OSD,主要負(fù)責(zé)存儲文件的數(shù)據(jù)部分。當(dāng)用戶訪問對象,會先訪問元數(shù)據(jù)服務(wù)器,元數(shù)據(jù)服務(wù)器只負(fù)責(zé)反饋對象存儲在哪里OSD,假設(shè)反饋文件A存儲在B、C、D三臺OSD,那么用戶就會再次直接訪問3臺OSD服務(wù)器去讀取數(shù)據(jù)。
這時候由于是3臺OSD同時對外傳輸數(shù)據(jù),所以傳輸?shù)乃俣染蜁涌炝耍?dāng)OSD服務(wù)器數(shù)量越多,這種讀寫速度的提升就越大,通過此種方式,實現(xiàn)了讀寫快的目的。
另一方面,對象存儲軟件是有專門的文件系統(tǒng)的,所以O(shè)SD對外又相當(dāng)于文件服務(wù)器,那么就不存在共享方面的困難了,也解決了文件共享方面的問題。所以對象存儲的出現(xiàn),很好的結(jié)合了塊存儲和文件存儲的優(yōu)點。
典型設(shè)備
內(nèi)置大容量硬盤的分布式服務(wù)器
通過什么對象方式訪問對象?
在存儲設(shè)備中,所有對象都有一個對象標(biāo)識,通過對象標(biāo)識OSD命令訪問對象
優(yōu)點
具備塊存儲的讀寫高速。
具備文件存儲的共享等特性。
使用場景
圖片存儲;視頻存儲…
為什么對象存儲兼具塊存儲和文件存儲的好處,還要使用塊存儲和文件存儲呢?
有一類應(yīng)用是需要存儲直接裸盤映射的,例如數(shù)據(jù)庫。因為數(shù)據(jù)需要存儲裸盤映射給自己后,再根據(jù)自己的數(shù)據(jù)庫文件系統(tǒng)來對裸盤進(jìn)行格式化的,所以是不能夠采用其他已經(jīng)被格式化為某種文件系統(tǒng)的存儲的。此類應(yīng)用更合適使用塊存儲。
對象存儲的成本比起普通的文件存儲較高,需要購買專門的對象存儲軟件以及大容量硬盤。如果對數(shù)據(jù)量要求不是海量,只是為了做文件共享的時候,直接用文件存儲的形式好了,性價比高。