塊存儲、文件存儲和對象存儲

1、塊存儲

典型設備:磁盤陣列,硬盤
塊存儲主要是將裸磁盤空間整個映射給主機使用的,就是說例如磁盤陣列裏面有5塊硬盤(爲方便說明,假設每一個硬盤1G),而後能夠經過劃邏輯盤、作Raid、或者LVM(邏輯卷)等種種方式邏輯劃分出N個邏輯的硬盤。(假設劃分完的邏輯盤也是5個,每一個也是1G,可是這5個1G的邏輯盤已經於原來的5個物理硬盤意義徹底不一樣了。例如第一個邏輯硬盤A裏面,可能第一個200M是來自物理硬盤1,第二個200M是來自物理硬盤2,因此邏輯硬盤A是由多個物理硬盤邏輯虛構出來的硬盤。)
接着塊存儲會採用映射的方式將這幾個邏輯盤映射給主機,主機上面的操做系統會識別到有5塊硬盤,可是操做系統是區分不出究竟是邏輯仍是物理的,它一律就認爲只是5塊裸的物理硬盤而已,跟直接拿一塊物理硬盤掛載到操做系統沒有區別的,至少操做系統感知上沒有區別。此種方式下,操做系統還須要對掛載的裸硬盤進行分區、格式化後,才能使用,與日常主機內置硬盤的方式徹底無異。數據庫

a) DAS(Direct Attach Storage): 是直接鏈接於主機服務器的一種存儲方式,每臺服務器有獨立的存儲設備,每臺主機服務器的存儲設備沒法互通,須要跨主機存取資料室,必須通過相對複雜的設定,若主機分屬不一樣的操做系統,則更復雜。後端

應用:單一網絡環境下且數據交換量不大,性能要求不高的環境,技術實現較早。安全

b) SAN(Storage Area Network): 是一種高速(光纖)網絡聯接專業主機服務器的一種存儲方式,此係統會位於主機羣的後端,它使用高速I/O聯接方式,如:SCSI,ESCON及Fibre-Channels.特色是,代價高、性能好。可是因爲SAN系統的價格較高,且可擴展性較差,已不能知足成千上萬個CPU規模的系統。服務器

應用:對網速要求高、對數據可靠性和安全性要求高、對數據共享的性能要求高的應用環境中。網絡

優勢:
一、 這種方式的好處固然是由於經過了Raid與LVM等手段,對數據提供了保護。
二、 另外也能夠將多塊廉價的硬盤組合起來,成爲一個大容量的邏輯盤對外提供服務,提升了容量。
三、 寫入數據的時候,因爲是多塊磁盤組合出來的邏輯盤,因此幾塊磁盤能夠並行寫入的,提高了讀寫效率。
四、 不少時候塊存儲採用SAN架構組網,傳輸速率以及封裝協議的緣由,使得傳輸速度與讀寫速率獲得提高。架構

缺點:
一、採用SAN架構組網時,須要額外爲主機購買光纖通道卡,還要買光纖交換機,造價成本高。
二、主機之間的數據沒法共享,在服務器不作集羣的狀況下,塊存儲裸盤映射給主機,再格式化使用後,對於主機來講至關於本地盤,那麼主機A的本地盤根本不能給主機B去使用,沒法共享數據。
三、不利於不一樣操做系統主機間的數據共享:另一個緣由是由於操做系統使用不一樣的文件系統,格式化完以後,不一樣文件系統間的數據是共享不了的。例如一臺裝了WIN7/XP,文件系統是FAT32/NTFS,而Linux是EXT4,EXT4是沒法識別NTFS的文件系統的。就像一隻NTFS格式的U盤,插進Linux的筆記本,根本沒法識別出來。因此不利於文件共享。併發

2、文件存儲

典型設備:FTP、NFS服務器
爲了克服上述文件沒法共享的問題,因此有了文件存儲。
文件存儲也有軟硬一體化的設備,可是其實普通拿一臺服務器/筆記本,只要裝上合適的操做系統與軟件,就能夠架設FTP與NFS服務了,架上該類服務以後的服務器,就是文件存儲的一種了。主機A能夠直接對文件存儲進行文件的上傳下載,與塊存儲不一樣,主機A是不須要再對文件存儲進行格式化的,由於文件管理功能已經由文件存儲本身搞定了。分佈式

NAS(Network Attached Storage):是一套網絡存儲設備,一般直接連在網絡上並提供資料存取服務,一套NAS儲存設備就如同一個提供數據文件服務的系統,特色是性價比高。性能

它採用NFS或CIFS命令集訪問數據,以文件爲傳輸協議,可擴展性好、價格便宜、用戶易管理。目前在集羣計算中應用較多的NFS文件系統,但因爲NAS的協議開銷高、帶寬低、延遲大,不利於在高性能集羣中應用。雲計算

優勢:
一、造價交低:隨便一臺機器就能夠了,另外普通以太網就能夠,根本不須要專用的SAN網絡,因此造價低。
二、方便文件共享:例如主機A(WIN7,NTFS文件系統),主機B(Linux,EXT4文件系統),想互拷一部電影,原本不行。加了個主機C(NFS服務器),而後能夠先A拷到C,再C拷到B就OK了。

缺點:讀寫速率低,傳輸速率慢:以太網,上傳下載速度較慢,另外全部讀寫都要1臺服務器裏面的硬盤來承擔,相比起磁盤陣列動不動就幾十上百塊硬盤同時讀寫,速率慢了許多。

3、對象存儲

典型設備:內置大容量硬盤的分佈式服務器

核心是將數據通路(數據讀或寫)和控制通路(元數據)分離,而且基於對象存儲設備(OSD),構建存儲系統,每一個對象存儲設備具有必定的職能,可以自動管理其上的數據分佈。

對象儲存結構組成部分(對象、對象存儲設備、元數據服務器、對象存儲系統的客戶端)

對象存儲最經常使用的方案,就是多臺服務器內置大容量硬盤,再裝上對象存儲軟件,而後再額外搞幾臺服務做爲管理節點,安裝上對象存儲管理軟件。管理節點能夠管理其餘服務器對外提供讀寫訪問功能。

之因此出現了對象存儲這種東西,是爲了克服塊存儲與文件存儲各自的缺點,發揚它倆各自的優勢。簡單來講塊存儲讀寫快,不利於共享,文件存儲讀寫慢,利於共享。可否弄一個讀寫快,利 於共享的出來呢。因而就有了對象存儲。

首先,一個文件包含了了屬性(術語叫metadata,元數據,例如該文件的大小、修改時間、存儲路徑等)以及內容(如下簡稱數據)。

以往像FAT32這種文件系統,是直接將一份文件的數據與metadata一塊兒存儲的,存儲過程先將文件按照文件系統的最小塊大小來打散(如4M的文件,假設文件系統要求一個塊4K,那麼就將文件打散成爲1000個小塊),再寫進硬盤裏面,過程當中沒有區分數據/metadata的。而每一個塊最後會告知你下一個要讀取的塊的地址,而後一直這樣順序地按圖索驥,最後完成整份文件的全部塊的讀取。

這種狀況下讀寫速率很慢,由於就算你有100個機械手臂在讀寫,可是因爲你只有讀取到第一個塊,才能知道下一個塊在哪裏,其實至關於只能有1個機械手臂在實際工做。而對象存儲則將元數據獨立了出來,控制節點叫元數據服務器(服務器+對象存儲管理軟件),裏面主要負責存儲對象的屬性(主要是對象的數據被打散存放到了那幾臺分佈式服務器中的信息),而其餘負責存儲數據的分佈式服務器叫作OSD,主要負責存儲文件的數據部分。當用戶訪問對象,會先訪問元數據服務器,元數據服務器只負責反饋對象存儲在哪些OSD,假設反饋文件A存儲在B、C、D三臺OSD,那麼用戶就會再次直接訪問3臺OSD服務器去讀取數據。

這時候因爲是3臺OSD同時對外傳輸數據,因此傳輸的速度就加快了。當OSD服務器數量越多,這種讀寫速度的提高就越大,經過此種方式,實現了讀寫快的目的。

另外一方面,對象存儲軟件是有專門的文件系統的,因此OSD對外又至關於文件服務器,那麼就不存在文件共享方面的困難了,也解決了文件共享方面的問題。因此對象存儲的出現,很好地結合了塊存儲與文件存儲的優勢。

4、塊級與文件級

1.塊級概念:塊級是指以扇區爲基礎,一個或多個連續的扇區組成一個塊,也叫物理塊。它是在文件系統與塊設備(例如:磁盤驅動器)之間。
2.文件級概念:文件級是指文件系統,單個文件可能因爲一個或多個邏輯塊組成,且邏輯塊之間是不連續分佈。邏輯塊大於或等於物理塊整數倍,
3.物理塊與文件系統之間的關係圖:映射關係:扇區→物理塊→邏輯塊→文件系統

5、從應用角度看塊存儲、文件存儲、對象存儲

傳統認知上來講,IT設備分爲計算/存儲/網絡三大類,相互之間是有明顯的楚河漢界的。計算你們都清楚,服務器,小型機,大型機;網絡也就是路由器交換機;存儲有內置存儲和外置存儲,最多見的就是磁盤陣列。在HCI(超融合)這個概念沒被熱炒以前,計算網絡存儲還都是涇渭分明,各擔其責的。今天咱們先不討論超融合的狀況,僅基於傳統理解,看看存儲的狀況。

從邏輯上存儲一般分爲塊存儲,文件存儲,對象存儲。這三類存儲在實際應用中的適配環境仍是有着明顯的不一樣的。

塊存儲(DAS/SAN)一般應用在某些專有的系統中,這類應用要求很高的隨機讀寫性能和高可靠性,上面搭載的一般是Oracle/DB2這種傳統數據庫,鏈接一般是以FC光纖(8Gb/16Gb)爲主,走光纖協議。若是要求稍低一些,也會出現基於千兆/萬兆以太網的鏈接方式,MySQL這種數據庫就可能會使用IP SAN,走iSCSI協議。一般使用塊存儲的都是系統而非用戶,併發訪問不會不少,常常出現一套存儲只服務一個應用系統,例如如交易系統,計費系統。典型行業如金融,製造,能源,電信等。

文件存儲(NAS)相對來講就更能兼顧多個應用和更多用戶訪問,同時提供方便的數據共享手段。畢竟大部分的用戶數據都是以文件的形式存放,在PC時代,數據共享也大可能是用文件的形式,好比常見的的FTP服務,NFS服務,Samba共享這些都是屬於典型的文件存儲。幾十個用戶甚至上百用戶的文件存儲共享訪問均可以用NAS存儲加以解決。在中小企業市場,一兩臺NAS存儲設備就能支撐整個IT部門了。CRM系統,SCM系統,OA系統,郵件系統均可以使用NAS存儲通通搞定。甚至在公有云發展的早幾年,用戶規模沒有上來時,雲存儲的底層硬件也有用幾套NAS存儲設備就解決的,甚至雲主機的鏡像也有放在NAS存儲上的例子。文件存儲的普遍兼容性和易用性,是這類存儲的突出特色。可是從性能上來看,相對SAN就要低一些。NAS存儲基本上是以太網訪問模式,普通千兆網,走NFS/CIFS協議。

前面說到的塊存儲和文件存儲,基本上都仍是在專有的局域網絡內部使用,而對象存儲的優點場景倒是互聯網或者公網,主要解決海量數據,海量併發訪問的需求。基於互聯網的應用纔是對象存儲的主要適配(固然這個條件一樣適用於雲計算,基於互聯網的應用最容易遷移到雲上,由於沒出現雲這個名詞以前,他們已經在上面了),基本全部成熟的公有云都提供了對象存儲產品,無論是國內仍是國外。

對象存儲常見的適配應用如網盤、媒體娛樂,醫療PACS,氣象,歸檔等數據量超大而又相對「冷數據」和非在線處理的應用類型。這類應用單個數據大,總量也大,適合對象存儲海量和易擴展的特色。網盤類應用也差很少,數據總量很大,另外還有併發訪問量也大,支持10萬級用戶訪問這種需求就值得單列一個項目了(這方面的掃盲能夠想一想12306)。歸檔類應用只是數據量大的冷數據,併發訪問的需求卻是不太突出。

另外基於移動端的一些新興應用也是適合的,智能手機和移動互聯網普及的狀況下,所謂UGD(用戶產生的數據,手機的照片視頻)總量和用戶數都是很大挑戰。畢竟直接使用HTTP get/put就能直接實現數據存取,對移動應用來講仍是有必定吸引力的。

對象存儲的訪問一般是在互聯網,走HTTP協議,性能方面,單獨看一個鏈接的是不高的(還要解決掉線斷點續傳之類的可靠性問題),主要強大的地方是支持的併發數量,聚合起來的性能帶寬就很是可觀了。

6、塊存儲、文件存儲、對象存儲的層次關係


咱們從底層往上看,最底層就是硬盤,多個硬盤能夠作成RAID組,不管是單個硬盤仍是RAID組,均可以作成PV,多個PV物理卷捏在一塊兒構成VG卷組,這就作成一塊大蛋糕了。接下來,能夠從蛋糕上切下不少塊LV邏輯卷,這就到了存儲用戶最熟悉的卷這層。到這一層爲止,數據一直都是以Block塊的形式存在的,這時候提供出來的服務就是塊存儲服務。你能夠經過FC協議或者iSCSI協議對卷訪問,映射到主機端本地,成爲一個裸設備。在主機端能夠直接在上面安裝數據庫,也能夠格式化成文件系統後交給應用程序使用,這時候就是一個標準的SAN存儲設備的訪問模式,網絡間傳送的是塊。

若是不急着訪問,也能夠在本地作文件系統,以後以NFS/CIFS協議掛載,映射到本地目錄,直接以文件形式訪問,這就成了NAS訪問的模式,在網絡間傳送的是文件。

若是不走NAS,在本地文件系統上面部署OSD服務端,把整個設備作成一個OSD,這樣的節點多來幾個,再加上必要的MDS節點,互聯網另外一端的應用程序再經過HTTP協議直接進行訪問,這就變成了對象存儲的訪問模式。固然對象存儲一般不須要專業的存儲設備,前面那些LV/VG/PV層也能夠通通不要,直接在硬盤上作本地文件系統,以後再作成OSD,這種纔是對象存儲的標準模式,對象存儲的硬件設備一般就用大盤位的服務器。

從系統層級上來講,這三種存儲是按照塊->文件->對象逐級向上的。文件必定是基於塊上面去作,無論是遠端仍是本地。而對象存儲的底層或者說後端存儲一般是基於一個本地文件系統(XFS/Ext4..)。這樣作是比較合理順暢的架構。可是你們想法不少,還有各類特異的產品出現,咱們逐個來看看:

對象存儲除了基於文件,能夠直接基於塊,可是作這個實現的不多,畢竟你仍是得把文件系統的活給幹了,本身實現一套元數據管理,也挺麻煩的,目前我只看到Nutanix宣稱支持。另外對象存儲還能基於對象存儲,這就有點尷尬了,就是轉一下,何須呢?可是這都不算最奇怪的,最奇怪的是把對象存儲放在最底層,那就是這兩年大紅的Ceph。

連接:https://www.zhihu.com/question/21536660/answer/33279921
連接:http://www.sohu.com/a/144775333_151779

相關文章
相關標籤/搜索