一般來說,磁盤陣列都是基於Block塊的存儲,而全部的NAS產品都是文件級存儲。html
1. 塊存儲:DAS SAN數據庫
a) DAS(Direct Attach Storage): 是直接鏈接於主機服務器的一種存儲方式,每臺服務器有獨立的存儲設備,每臺主機服務器的存儲設備沒法互通,須要跨主機存取資料室,必須通過相對複雜的設定,若主機分屬不一樣的操做系統,則更復雜。後端
應用:單一網絡環境下且數據交換量不大,性能要求不高的環境,技術實現較早。安全
b) SAN(Storage Area Network): 是一種高速(光纖)網絡聯接專業主機服務器的一種存儲方式,此係統會位於主機羣的後端,它使用高速I/O聯接方式,如:SCSI,ESCON及Fibre-Channels.特色是,代價高、性能好。可是因爲SAN系統的價格較高,且可擴展性較差,已不能知足成千上萬個CPU規模的系統。服務器
應用:對網速要求高、對數據可靠性和安全性要求高、對數據共享的性能要求高的應用環境中。網絡
2. 文件存儲架構
一般NAS產品都是文件級存儲。分佈式
NAS(Network Attached Storage):是一套網絡存儲設備,一般直接連在網絡上並提供資料存取服務,一套NAS儲存設備就如同一個提供數據文件服務的系統,特色是性價比高。post
它採用NFS或CIFS命令集訪問數據,以文件爲傳輸協議,可擴展性好、價格便宜、用戶易管理。目前在集羣計算中應用較多的NFS文件系統,但因爲NAS的協議開銷高、帶寬低、延遲大,不利於在高性能集羣中應用。性能
3. 對象存儲:
整體上講,對象存儲同時兼具SAN高級直接訪問磁盤特色及NAS的分佈式共享特色。
核心是將數據通路(數據讀或寫)和控制通路(元數據)分離,而且基於對象存儲設備(OSD),構建存儲系統,每一個對象存儲設備具有必定的職能,可以自動管理其上的數據分佈。
對象儲存結構組成部分(對象、對象存儲設備、元數據服務器、對象存儲系統的客戶端)
3.1 對象
一個對象實際就是文件的數據和一組屬性信息的組合。
3.2 對象存儲設備(OSD)
OSD具備必定的智能,它有本身的CPU、內存、網絡和磁盤系統。
OSD提供三個主要功能:包括數據存儲和安全訪問
(1)數據存儲 (2)智能分佈 (3)每一個對象元數據的管理
3.3 元數據服務器(Metadata Server , MDS)
MDS控制Client與OSD對象的交互,主要提供如下幾個功能:
(1) 對象存儲訪問
容許Client直接訪問對象,OSD接收到請求時先驗證該能力,再訪問。
(2) 文件和目錄訪問管理
MDS在存儲系統上構建一個文件結構,限額控制、包括目錄、文件的建立、訪問控制等
(3) Client Cache 一致性
爲提升性能,在對象存儲系統設計時一般支持Client的Cache。所以帶來了Cache一致性的問題,當Cache文件發生改變時,將通知Client刷新Cache,以防Cache不一致引起的問題。
對象存儲:
一個文件包含了屬性(術語叫matadata元數據,例如該文件的大小、修改時間、存儲路徑等)以及內容(簡稱數據)。
以往的文件系統,存儲過程將文件按文件系統的最小塊來打散,再寫進硬盤,過程當中沒有區分元數據(metadata)和數據。而在每一個塊最後纔會告知下一個塊的地址,所以只能一個一個讀,速度慢。
而對象存儲則將元數據獨立出來,控制節點叫元數據服務器(服務器+對象存儲管理軟件),裏面主要存儲對象的屬性(主要是對象的數據被打散存放到了那幾臺分佈式服務器中的信息),而其餘負責存儲數據的分佈式服務器叫作OSD,主要負責存儲文件的數據部分。當用戶訪問對象時,會先訪問元數據服務器,元數據服務器只負責反饋對象存儲在那些OSD。假設反饋文件A存儲在B,C,D三臺OSD,那麼用戶就會再次訪問三臺OSD服務器去讀取數據。
這時三臺OSD同時對外傳輸數據,所以傳輸的速度就加快了。OSD服務器數量越多,這種讀寫速度的提高就越大。
另外一方面,對象存儲軟件有專門的文件系統,因此OSD對外又至關於文件服務器,那麼就不存在文件共享方面的困難了,也解決了文件共享方面的問題。
所以對象存儲的出現,很好的結合了塊存儲與文件存儲的優勢。
爲何還要使用塊存儲和文件存儲:
1.有一類應用是須要存儲直接裸盤映射的,好比數據庫。由於數據庫須要存儲裸盤映射給本身後,再根據本身的數據庫文件系統來對了裸盤進行格式化,所以不能採用其餘已經被格式化爲某種文件系統的存儲。此類更適合塊存儲。
2.對象存儲的成本比普通的文件存儲仍是較高,須要購買專門的對象存儲軟件以及大容量硬盤。若是對數據量要求不是海量,只是爲了做文件共享的時候,直接用文件存儲的形式就行了,性價比高。
---------------------
做者:secretr
來源:CSDN
原文:https://blog.csdn.net/qq_23348071/article/details/70232735
版權聲明:本文爲博主原創文章,轉載請附上博文連接!
針對不一樣的應用場景,選擇的分佈式存儲方案也會不一樣,所以有了對象存儲、塊存儲、文件系統存儲。這三者的主要區別在於它們的存儲接口:
1. 對象存儲:
也就是一般意義的鍵值存儲,其接口就是簡單的GET,PUT,DEL和其餘擴展,如七牛、又拍,Swift,S3
2. 塊存儲:
這種接口一般以QEMU Driver或者Kernel Module的方式存在,這種接口須要實現Linux的Block Device的接口或者QEMU提供的Block Driver接口,如Sheepdog,AWS的EBS,青雲的雲硬盤和阿里雲的盤古系統,還有Ceph的RBD(RBD是Ceph面向塊存儲的接口)
3. 文件存儲:
一般意義是支持POSIX接口,它跟傳統的文件系統如Ext4是一個類型的,但區別在於分佈式存儲提供了並行化的能力,如Ceph的CephFS(CephFS是Ceph面向文件存儲的接口),可是有時候又會把GFS,HDFS這種非POSIX接口的類文件存儲接口納入此類。
按照這三種接口和其應用場景,很容易瞭解這三種類型的IO特色,括號裏表明了它在非分佈式狀況下的對應:
1. 對象存儲(鍵值數據庫):
接口簡單,一個對象咱們能夠當作一個文件,只能全寫全讀,一般以大文件爲主,要求足夠的IO帶寬。
2. 塊存儲(硬盤):
它的IO特色與傳統的硬盤是一致的,一個硬盤應該是能面向通用需求的,即能應付大文件讀寫,也能處理好小文件讀寫。可是硬盤的特色是容量大,熱點明顯。所以塊存儲主要能夠應付熱點問題。另外,塊存儲要求的延遲是最低的。
3. 文件存儲(文件系統):
支持文件存儲的接口的系統設計跟傳統本地文件系統如Ext4這種的特色和難點是一致的,它比塊存儲具備更豐富的接口,須要考慮目錄、文件屬性等支持,實現一個支持並行化的文件存儲應該是最困難的。但像HDFS、GFS這種本身定義標準的系統,能夠經過根據實現來定義接口,會容易一點。
所以,這三種接口分別以非分佈式狀況下的鍵值數據庫、硬盤和文件系統的IO特色來對應便可。至於冷熱、快慢、大小文件而言更接近於業務。可是由於存儲系統是通用化實現,一般來講,須要儘可能知足各類需求,而接口定義已經必定意義上就砍去了一些需求,如對象存儲會以冷存儲更多,大文件爲主。
3、Ceph的對象存儲、塊存儲、文件系統存儲
Ceph同時支持這三種存儲,方法就是經過支持不一樣的接口來支持不一樣的存儲。下面是Ceph的基本架構圖,能夠看到經過兼容AWS的S3和OpenStack的Swift接口來支持對象存儲,經過librbd庫提供塊存儲的接口,經過libcephfs庫的文件系統接口或標準posix接口來支持文件系統存儲。