非原創,收集各位大佬加上自己的觀點整理而成
1.塊存儲
典型設備:磁盤陣列,硬盤,虛擬硬盤
塊存儲又有兩種常見的形式,DAS和SAN。DAS即直接連接存儲(Direct Attached Storage),SAN即存儲區域網絡(Storage Area Network)。
1.DAS
塊存儲是我們最常用的一種存儲模式。比如個人PC上的硬盤,服務器上的硬盤,外置設備通過SCSI或者FC接口直接連接到電腦上的。
這種存儲方式有一種很大的缺陷,其存儲性能瓶頸來自於自家PC電腦或者服務器的卡槽的多少。比如我們的筆記本一般只能裝一個硬盤+SSD基本上已經沒有位置再做擴展了。也就是DAS的性能瓶頸來自於主板的卡槽數量。很難做scale out擴展(即橫向擴展)。
事實上,這種DAS存儲模式,一般在中小型企業匯總應用十分廣泛。它更依賴主機的操作系統來實現數據的IO讀寫、數據管理、數據備份等工作。
但是這種存儲模式也存在一定的缺點。比如可管理性差、彈性擴展能力弱,難以跟上IT發展趨勢等問題。舉例來講,一台服務器/電腦只會配備固定容量的DAS存儲,那么如果容量不夠用,存儲空間太小,就很難從內部着手實現彈性擴展(外部擴展容量也存在弊端),如果存儲空間太大還會導致資源浪費,這一點在服務器領域尤為明顯。
補充知識點:SCSI接口是什么
SCSI(Small Computer System Interface)小型計算機系統接口,一種用於計算機和智能設備之間(硬盤、軟驅、光驅、打印機、掃描儀等)系統級接口的獨立處理器標准。 SCSI是一種智能的通用接口標准。
SCSI是一種計算機系統接口的標准
SCSI是一種I/O技術
SCSI規范了一種並行的I/O總線和相關的協議
SCSI的數據傳輸方式是以塊的方式進行的
2.SAN
對於用戶來說,SAN好比是一塊大磁盤,用戶可以根據需要隨意將SAN格式化成想要的文件系統來使用。SAN在網絡中通過iSCSI(IPSAN)協議連接,屬block及存儲,但可擴展性較差。
根據SAN的實現形式來看,其實是通過光交換機,將各塊硬盤連接起來,然后通過ISCSI協議來傳遞數據。
在我看來,其實是通過FC交換機解決了機器主板只有幾個卡槽的問題,利用FC交換機,就仿佛實現了這樣一種機制,即我們擁有一個無限卡槽的主板,上面都是接口,你可以通過這個接口插上你的硬盤。
SAN是一個采用網狀通道(簡稱FC)技術,通過FC交換機連接存儲陣列和服務器主機,建立專用於數據存儲的區域網絡。
我們可以從定義中看出,這是一個專用於企業級應用的存儲方式。可以簡單理解為一個在高度網絡中,提供在計算機與存儲系統之間的數據傳輸。
從理論上來講,SAN支持數以百計的磁盤,提供了海量的存儲空間,解決了大容量存儲問題;從邏輯層面,這個海量空間可以按需要分成不同大小的LUN,再分配給服務器,也解決了只需要小容量存儲的問題。
可以說,SAN的出現,適應了信息化發展的大趨勢,它將計算與存儲分離,增強了存儲擴張的彈性。畢竟如今聯網設備越來越多,數據量越來越大,我們對存儲需求也越來越強。SAN“拉幫結伙”的特性讓存儲彈性更大,更方便擴展容量。
同時,介於獨特的存儲結構,SAN需要通過光纖交換機連接存儲陣列和服務器,建立專用數據存儲的網絡。
2.文件存儲
再說說文件集存儲,典型代表–NAS。對於用戶來說,NAS好比是一個共享文件夾,文件系統已經存在,用戶可以直接將自己的數據存放在NAS上。NAS以文件為傳輸協議,開銷很大,不利於在高性能集群中使用。
NAS是一種通過網絡達成存儲目的的設備,NAS傳輸數據依靠的是TCP/IP網絡協議棧,這是NAS存儲於上文的DAS和SAN存儲最大的不同之處。
NAS是標准的文件級存儲方法,采用網絡技術(TCP/IP、ATM、FDDI),通過網絡交換機連接存儲系統和服務器主機來建立存儲私網。其主要特征是把存儲設備、網絡接口和以太網技術集成在一起,直接通過以太網網絡存取數據。能夠快速實現部門級存儲容量需求與文件傳輸需求。
實現文件存儲的方式有很多,其中比較常用的有以下的幾種,並且經常運用在企業運用中。ftp協議、nfs協議、samba協議等。
比較下塊存儲和文件存儲的異同,舉個例子而言,有三塊硬盤,使用光交換機連接之后,把光交換機和服務器進行直接連接,服務器就會單純的以為自己是有一塊兒這么大的硬盤的,要使用的話,需要對這塊硬盤進行分區,格式化為某種文件系統,然后就可以使用了;同樣是三塊硬盤,我分別把這三塊硬盤裝在主機A,B,C上,分區、格式化為某種文件系統,比如格式化為XFS文件系統,然后我以共享文件夾的形式把主機A的/data目錄使用NFS共享給B和C,這就是文件存儲。
3.塊存儲和文件存儲的異同
-
數據傳輸方式不同:塊存儲依靠SCSI或者ISCSI接口,以塊方式交換數據,數據傳輸速度快;文件存儲依靠TCP/IP協議棧進行數據傳輸,網絡帶寬是I/O的性能瓶頸。
-
文件系統的位置:NAS和SAN最本質的區別就是文件管理系統在哪里,如圖所示,SAN結構中,文件管理系統(FS)分別在每一個應用服務器上面,而NAS則是每個應用服務器通過網絡共享協議,使用同一個文件管理系統。即NAS和SAN存儲系統的區別就是NAS有自已的文件管理系統。
使用方式不同:塊存儲設備使用的時候,還需要進一步進行分區,將設備格式為某種文件系統才可以繼續使用;而文件存儲就相當於你多了一個共享文件夾,文件存儲帶着自己本身的文件系統。
4.對象存儲
對象存儲:也叫做基於對象的存儲,是用來描述解決和處理離散單元的方法的通用術語,這些離散單元被稱作為對象。
對象存儲經常被比作在一家高級餐廳代客停車。當一個顧客需要代客停車時,他就把鑰匙交給別人,換來一張收據。這個顧客不用知道他的車被停在哪,也不用知道在他用餐時服務員會把他的車移動多少次。在這個比喻中,一個存儲對象的唯一標識符就代表顧客的收據。
總體上來講,對象存儲同兼具SAN高速直接訪問磁盤特點及NAS的分布式共享特點。
- SAN(Storage Area Network)結構
采用SCSI 塊I/O的命令集,通過在磁盤或FC(Fiber Channel)級的數據訪問提供高性能的隨機I/O和數據吞吐率,它具有高帶寬、低延遲的優勢,在高性能計算中占有一席之地,如SGI的CXFS文件系統就是基於SAN實現高性能文件存儲的,但是由於SAN系統的價格較高,且可擴展性較差,已不能滿足成千上萬個CPU規模的系統。 - NAS(Network Attached Storage)結構
它采用NFS或CIFS命令集訪問數據,以文件為傳輸協議,通過TCP/IP實現網絡化存儲,可擴展性好、價格便宜、用戶易管理,如目前在集群計算中應用較多的NFS文件系統,但由於NAS的協議開銷高、帶寬低、延遲大,不利於在高性能集群中應用。
1.對象存儲結構
核心是將數據通路(數據讀或寫)和控制通路(元數據)分離,並且基於對象存儲設備(Object-based Storage Device,OSD)構建存儲系統,每個對象存儲設備具有一定的智能,能夠自動管理其上的數據分布。
對象存儲結構組成部分(對象、對象存儲設備、元數據服務器、對象存儲系統的客戶端):
2.對象
對象是系統中數據存儲的基本單位,一個對象實際上就是文件的數據和一組屬性信息(Meta Data)的組合,這些屬性信息可以定義基於文件的RAID參數、數據分布和服務質量等,而傳統的存儲系統中用文件或塊作為基本的存儲單位,在塊存儲系統中還需要始終追蹤系統中每個塊的屬性,對象通過與存儲系統通信維護自己的屬性。在存儲設備中,所有對象都有一個對象標識,通過對象標識OSD命令訪問該對象。通常有多種類型的對象,存儲設備上的根對象標識存儲設備和該設備的各種屬性,組對象是存儲設備上共享資源管理策略的對象集合等。
對象的層次理解:
3.對象存儲設備
對象存儲設備具有一定的智能,它有自己的CPU、內存、網絡和磁盤系統,OSD同塊設備的不同不在於存儲介質,而在於兩者提供的訪問接口。OSD的主要功能包括數據存儲和安全訪問。目前國際上通常采用刀片式結構實現對象存儲設備。OSD提供三個主要功能:
(1) 數據存儲。OSD管理對象數據,並將它們放置在標准的磁盤系統上,OSD不提供塊接口訪問方式,Client請求數據時用對象ID、偏移進行數據讀寫。
(2) 智能分布。OSD用其自身的CPU和內存優化數據分布,並支持數據的預取。由於OSD可以智能地支持對象的預取,從而可以優化磁盤的性能。
(3) 每個對象元數據的管理。OSD管理存儲在其上對象的元數據,該元數據與傳統的inode元數據相似,通常包括對象的數據塊和對象的長度。而在傳統的NAS系統中,這些元數據是由文件服務器維護的,對象存儲架構將系統中主要的元數據管理工作由OSD來完成,降低了Client的開銷。
4.元數據服務器(Metadata Server,MDS)
MDS控制Client與OSD對象的交互,主要提供以下幾個功能:
(1) 對象存儲訪問。
MDS構造、管理描述每個文件分布的視圖,允許Client直接訪問對象。MDS為Client提供訪問該文件所含對象的能力,OSD在接收到每個請求時將先驗證該能力,然后才可以訪問。
(2) 文件和目錄訪問管理。
MDS在存儲系統上構建一個文件結構,包括限額控制、目錄和文件的創建和刪除、訪問控制等。
(3) Client Cache一致性。
為了提高Client性能,在對象存儲系統設計時通常支持Client方的Cache。由於引入Client方的Cache,帶來了Cache一致性問題,MDS支持基於Client的文件Cache,當Cache的文件發生改變時,將通知Client刷新Cache,從而防止Cache不一致引發的問題。
5.對象存儲系統的客戶端Client
為了有效支持Client支持訪問OSD上的對象,需要在計算節點實現對象存儲系統的Client,通常提供POSIX文件系統接口,允許應用程序像執行標准的文件系統操作一樣。
對象存儲文件系統的關鍵技術
1、分布元數據 傳統的存儲結構元數據服務器通常提供兩個主要功能。
(1)為計算結點提供一個存儲數據的邏輯視圖(Virtual File System,VFS層),文件名列表及目錄結構。
(2)組織物理存儲介質的數據分布(inode層)。對象存儲結構將存儲數據的邏輯視圖與物理視圖分開,並將負載分布,避免元數據服務器引起的瓶頸(如NAS系統)。元數據的VFS部分通常是元數據服務器的10%的負載,剩下的90%工作(inode部分)是在存儲介質塊的數據物理分布上完成的。在對象存儲結構,inode工作分布到每個智能化的OSD,每個OSD負責管理數據分布和檢索,這樣90%的元數據管理工作分布到智能的存儲設備,從而提高了系統元數據管理的性能。另外,分布的元數據管理,在增加更多的OSD到系統中時,可以同時增加元數據的性能和系統存儲容量。
2、並發數據訪問 對象存儲體系結構定義了一個新的、更加智能化的磁盤接口OSD。OSD是與網絡連接的設備,它自身包含存儲介質,如磁盤或磁帶,並具有足夠的智能可以管理本地存儲的數據。計算結點直接與OSD通信,訪問它存儲的數據,由於OSD具有智能,因此不需要文件服務器的介入。如果將文件系統的數據分布在多個OSD上,則聚合I/O速率和數據吞吐率將線性增長,對絕大多數Linux集群應用來說,持續的I/O聚合帶寬和吞吐率對較多數目的計算結點是非常重要的。對象存儲結構提供的性能是目前其它存儲結構難以達到的,如ActiveScale對象存儲文件系統的帶寬可以達到10GB/s。
6.對象存儲的優點
對象存儲相比塊存儲、文件存儲的一個最本質的區別是無層次結構。
我們都知道,一般的存儲(比如你自己的PC的文件系統)是有一個目錄樹概念的,要找到一個文件需要先找到這個文件所屬的目錄。
而對象存儲是沒有文件目錄樹這個概念的,所有的數據都在同一個層次中,僅僅通過數據的唯一地址標識來識別並查找數據。
鑒於對象存儲的無層次結構特點,對象存儲有以下優點:
- 效率更高。不受復雜目錄系統對性能的影響。
- 可擴展性更強。分布式架構,更便於進行水平擴展,從而容納進任意大規模的數據。
- 可用性更強。數據一般都會有多個位於不同機器的復制,確保數據不丟失。
5.三者之間異同比較
存儲類型 | 數據傳輸方式 | 適應場景 | 優點 |
---|---|---|---|
塊存儲 | SCSI/ISCSI接口 | 小型機房 | 速度快 |
文件存儲 | NFS/FTP等 | 局域網環境 | 可擴展性高 |
對象存儲 | http協議 | 互聯網環境,異地存儲 | 速度快,且擴展性高,高可用 |
三種存儲的差異就是接口的差異,至於誰來使用這些接口,接口的實現方就無法干預了。
塊存儲: 是和主機打交道的, 如插一塊硬盤
文件存儲: NAS, 網絡存儲, 用於多主機共享數據
對象存儲: 跟你自己開發的應用程序打交道, 如網盤