通常來講,磁盤陣列都是基於Block塊的存儲,而所有的NAS產品都是文件級存儲。
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儲存設備就如同一個提供數據文件服務的系統,特點是性價比高。
它采用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特點
按照這三種接口和其應用場景,很容易了解這三種類型的IO特點,括號里代表了它在非分布式情況下的對應:
1. 對象存儲(鍵值數據庫):
接口簡單,一個對象我們可以看成一個文件,只能全寫全讀,通常以大文件為主,要求足夠的IO帶寬。
2. 塊存儲(硬盤):
它的IO特點與傳統的硬盤是一致的,一個硬盤應該是能面向通用需求的,即能應付大文件讀寫,也能處理好小文件讀寫。但是硬盤的特點是容量大,熱點明顯。因此塊存儲主要可以應付熱點問題。另外,塊存儲要求的延遲是最低的。
3. 文件存儲(文件系統):
支持文件存儲的接口的系統設計跟傳統本地文件系統如Ext4這種的特點和難點是一致的,它比塊存儲具有更豐富的接口,需要考慮目錄、文件屬性等支持,實現一個支持並行化的文件存儲應該是最困難的。但像HDFS、GFS這種自己定義標准的系統,可以通過根據實現來定義接口,會容易一點。
因此,這三種接口分別以非分布式情況下的鍵值數據庫、硬盤和文件系統的IO特點來對應即可。至於冷熱、快慢、大小文件而言更接近於業務。但是因為存儲系統是通用化實現,通常來說,需要盡量滿足各種需求,而接口定義已經一定意義上就砍去了一些需求,如對象存儲會以冷存儲更多,大文件為主。
三、Ceph的對象存儲、塊存儲、文件系統存儲
Ceph同時支持這三種存儲,方法就是通過支持不同的接口來支持不同的存儲。下面是Ceph的基本架構圖,可以看到通過兼容AWS的S3和OpenStack的Swift接口來支持對象存儲,通過librbd庫提供塊存儲的接口,通過libcephfs庫的文件系統接口或標准posix接口來支持文件系統存儲。