
塊存儲、文件存儲、對象存儲三者的本質(zhì)差別
說一下自己的理解:
【塊存儲】
典型設(shè)備:磁盤陣列,硬盤
塊存儲主要是將裸磁盤空間整個映射給主機使用的,就是說例如磁盤陣列里面有5塊硬盤(為方便說明,假設(shè)每個硬盤1G),然后可以通過劃邏輯盤、做Raid、或者LVM(邏輯卷)等種種方式邏輯劃分出N個邏輯的硬盤。(假設(shè)劃分完的邏輯盤也是5個,每個也是1G,但是這5個1G的邏輯盤已經(jīng)于原來的5個物理硬盤意義完全不同了。例如第一個邏輯硬盤A里面,可能第一個200M是來自物理硬盤1,第二個200M是來自物理硬盤2,所以邏輯硬盤A是由多個物理硬盤邏輯虛構(gòu)出來的硬盤。)
接著塊存儲會采用映射的方式將這幾個邏輯盤映射給主機,主機上面的操作系統(tǒng)會識別到有5塊硬盤,但是操作系統(tǒng)是區(qū)分不出到底是邏輯還是物理的,它一概就認(rèn)為只是5塊裸的物理硬盤而已,跟直接拿一塊物理硬盤掛載到操作系統(tǒng)沒有區(qū)別的,至少操作系統(tǒng)感知上沒有區(qū)
別。
此種方式下,操作系統(tǒng)還需要對掛載的裸硬盤進行分區(qū)、格式化后,才能使用,與平常主機內(nèi)置硬盤的方式完全無異。
優(yōu)點:
1、 這種方式的好處當(dāng)然是因為通過了Raid與LVM等手段,對數(shù)據(jù)提供了保護。
2、 另外也可以將多塊廉價的硬盤組合起來,成為一個大容量的邏輯盤對外提供服務(wù),提高了容量。
3、 寫入數(shù)據(jù)的時候,由于是多塊磁盤組合出來的邏輯盤,所以幾塊磁盤可以并行寫入的,提升了讀寫效率。
4、 很多時候塊存儲采用SAN架構(gòu)組網(wǎng),傳輸速率以及封裝協(xié)議的原因,使得傳輸速度與讀寫速率得到提升。
缺點:
1、采用SAN架構(gòu)組網(wǎng)時,需要額外為主機購買光纖通道卡,還要買光纖交換機,造價成本高。
2、主機之間的數(shù)據(jù)無法共享,在服務(wù)器不做集群的情況下,塊存儲裸盤映射給主機,再格式化使用后,對于主機來說相當(dāng)于本地盤,那么主機A的本地盤根本不能給主機B去使用,無法共享數(shù)據(jù)。
3、不利于不同操作系統(tǒng)主機間的數(shù)據(jù)共享:另外一個原因是因為操作系統(tǒng)使用不同的文件系統(tǒng),格式化完之后,不同文件系統(tǒng)間的數(shù)據(jù)是共享不了的。例如一臺裝了WIN7/XP,文件系統(tǒng)是FAT32/NTFS,而Linux是EXT4,EXT4是無法識別NTFS的文件系統(tǒng)的。就像一只NTFS格式的U盤,插進Linux的筆記本,根本無法識別出來。所以不利于文件共享。
【文件存儲】
典型設(shè)備:FTP、NFS服務(wù)器
為了克服上述文件無法共享的問題,所以有了文件存儲。
文件存儲也有軟硬一體化的設(shè)備,但是其實普通拿一臺服務(wù)器/筆記本,只要裝上合適的操作系統(tǒng)與軟件,就可以架設(shè)FTP與NFS服務(wù)了,架上該類服務(wù)之后的服務(wù)器,就是文件存儲的一種了。
主機A可以直接對文件存儲進行文件的上傳下載,與塊存儲不同,主機A是不需要再對文件存儲進行格式化的,因為文件管理功能已經(jīng)由文件存儲自己搞定了。
優(yōu)點:
1、造價交低:隨便一臺機器就可以了,另外普通以太網(wǎng)就可以,根本不需要專用的SAN網(wǎng)絡(luò),所以造價低。
2、方便文件共享:例如主機A(WIN7,NTFS文件系統(tǒng)),主機B(Linux,EXT4文件系統(tǒng)),想互拷一部電影,本來不行。加了個主機C(NFS服務(wù)器),然后可以先A拷到C,再C拷到B就OK了。(例子比較膚淺,請見諒……)
缺點:
讀寫速率低,傳輸速率慢:以太網(wǎng),上傳下載速度較慢,另外所有讀寫都要1臺服務(wù)器里面的硬盤來承擔(dān),相比起磁盤陣列動不動就幾十上百塊硬盤同時讀寫,速率慢了許多。
【對象存儲】
典型設(shè)備:內(nèi)置大容量硬盤的分布式服務(wù)器
對象存儲最常用的方案,就是多臺服務(wù)器內(nèi)置大容量硬盤,再裝上對象存儲軟件,然后再額外搞幾臺服務(wù)作為管理節(jié)點,安裝上對象存儲管理軟件。管理節(jié)點可以管理其他服務(wù)器對外提供讀寫訪問功能。
之所以出現(xiàn)了對象存儲這種東西,是為了克服塊存儲與文件存儲各自的缺點,發(fā)揚它倆各自的優(yōu)點。簡單來說塊存儲讀寫快,不利于共享,文件存儲讀寫慢,利于共享。能否弄一個讀寫快,利 于共享的出來呢。于是就有了對象存儲。
首先,一個文件包含了了屬性(術(shù)語叫metadata,元數(shù)據(jù),例如該文件的大小、修改時間、存儲路徑等)以及內(nèi)容(以下簡稱數(shù)據(jù))。
以往像FAT32這種文件系統(tǒng),是直接將一份文件的數(shù)據(jù)與metadata一起存儲的,存儲過程先將文件按照文件系統(tǒng)的最小塊大小來打散(如4M的文件,假設(shè)文件系統(tǒng)要求一個塊4K,那么就將文件打散成為1000個小塊),再寫進硬盤里面,過程中沒有區(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)點。
最后為什么對象存儲兼具塊存儲與文件存儲的好處,還要使用塊存儲或文件存儲呢?
1、有一類應(yīng)用是需要存儲直接裸盤映射的,例如數(shù)據(jù)庫。因為數(shù)據(jù)庫需要存儲裸盤映射給自己后,再根據(jù)自己的數(shù)據(jù)庫文件系統(tǒng)來對裸盤進行格式化的,所以是不能夠采用其他已經(jīng)被格式化為某種文件系統(tǒng)的存儲的。此類應(yīng)用更適合使用塊存儲。
2、對象存儲的成本比起普通的文件存儲還是較高,需要購買專門的對象存儲軟件以及大容量硬盤。如果對數(shù)據(jù)量要求不是海量,只是為了做文件共享的時候,直接用文件存儲的形式好了,性價比高。