天天看點

塊存儲、檔案存儲和對象存儲

本文介紹塊存儲、檔案存儲和對象存儲的本質與差別

一、塊存儲

典型裝置:磁盤陣列,硬碟

塊存儲主要是将裸磁盤空間整個映射給主機使用的,就是說例如磁盤陣列裡面有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規模的系統。

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

優點:

1、 這種方式的好處當然是因為通過了Raid與LVM等手段,對資料提供了保護。

2、 另外也可以将多塊廉價的硬碟組合起來,成為一個大容量的邏輯盤對外提供服務,提高了容量。

3、 寫入資料的時候,由于是多塊磁盤組合出來的邏輯盤,是以幾塊磁盤可以并行寫入的,提升了讀寫效率。

4、 很多時候塊存儲采用SAN架構組網,傳輸速率以及封裝協定的原因,使得傳輸速度與讀寫速率得到提升。

缺點:

1、采用SAN架構組網時,需要額外為主機購買光纖通道卡,還要買光纖交換機,造價成本高。

2、主機之間的資料無法共享,在伺服器不做叢集的情況下,塊存儲裸盤映射給主機,再格式化使用後,對于主機來說相當于本地盤,那麼主機A的本地盤根本不能給主機B去使用,無法共享資料。

3、不利于不同作業系統主機間的資料共享:另外一個原因是因為作業系統使用不同的檔案系統,格式化完之後,不同檔案系統間的資料是共享不了的。例如一台裝了WIN7/XP,檔案系統是FAT32/NTFS,而Linux是EXT4,EXT4是無法識别NTFS的檔案系統的。就像一隻NTFS格式的U盤,插進Linux的筆記本,根本無法識别出來。是以不利于檔案共享。

二、檔案存儲

典型裝置:FTP、NFS伺服器

為了克服上述檔案無法共享的問題,是以有了檔案存儲。

檔案存儲也有軟硬一體化的裝置,但是其實普通拿一台伺服器/筆記本,隻要裝上合适的作業系統與軟體,就可以架設FTP與NFS服務了,架上該類服務之後的伺服器,就是檔案存儲的一種了。主機A可以直接對檔案存儲進行檔案的上傳下載下傳,與塊存儲不同,主機A是不需要再對檔案存儲進行格式化的,因為檔案管理功能已經由檔案存儲自己搞定了。

NAS(Network Attached Storage):是一套網絡儲存設備,通常直接連在網絡上并提供資料存取服務,一套NAS儲存裝置就如同一個提供資料檔案服務的系統,特點是成本效益高。

它采用NFS或CIFS指令集通路資料,以檔案為傳輸協定,可擴充性好、價格便宜、使用者易管理。目前在叢集計算中應用較多的NFS檔案系統,但由于NAS的協定開銷高、帶寬低、延遲大,不利于在高性能叢集中應用。

1、造價交低:随便一台機器就可以了,另外普通以太網就可以,根本不需要專用的SAN網絡,是以造價低。

2、友善檔案共享:例如主機A(WIN7,NTFS檔案系統),主機B(Linux,EXT4檔案系統),想互拷一部電影,本來不行。加了個主機C(NFS伺服器),然後可以先A拷到C,再C拷到B就OK了。

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

三、對象存儲

典型裝置:内置大容量硬碟的分布式伺服器

核心是将資料通路(資料讀或寫)和控制通路(中繼資料)分離,并且基于對象儲存設備(OSD),建構存儲系統,每個對象儲存設備具備一定的職能,能夠自動管理其上的資料分布。

對象儲存結構組成部分(對象、對象儲存設備、中繼資料伺服器、對象存儲系統的用戶端)

對象存儲最常用的方案,就是多台伺服器内置大容量硬碟,再裝上對象存儲軟體,然後再額外搞幾台服務作為管理節點,安裝上對象存儲管理軟體。管理節點可以管理其他伺服器對外提供讀寫通路功能。

之是以出現了對象存儲這種東西,是為了克服塊存儲與檔案存儲各自的缺點,發揚它倆各自的優點。簡單來說塊存儲讀寫快,不利于共享,檔案存儲讀寫慢,利于共享。能否弄一個讀寫快,利 于共享的出來呢。于是就有了對象存儲。

首先,一個檔案包含了了屬性(術語叫metadata,中繼資料,例如該檔案的大小、修改時間、存儲路徑等)以及内容(以下簡稱資料)。

以往像FAT32這種檔案系統,是直接将一份檔案的資料與metadata一起存儲的,存儲過程先将檔案按照檔案系統的最小塊大小來打散(如4M的檔案,假設檔案系統要求一個塊4K,那麼就将檔案打散成為1000個小塊),再寫進硬碟裡面,過程中沒有區分資料/metadata的。而每個塊最後會告知你下一個要讀取的塊的位址,然後一直這樣順序地按圖索骥,最後完成整份檔案的所有塊的讀取。

這種情況下讀寫速率很慢,因為就算你有100個機械手臂在讀寫,但是由于你隻有讀取到第一個塊,才能知道下一個塊在哪裡,其實相當于隻能有1個機械手臂在實際工作。而對象存儲則将中繼資料獨立了出來,控制節點叫中繼資料伺服器(伺服器+對象存儲管理軟體),裡面主要負責存儲對象的屬性(主要是對象的資料被打散存放到了那幾台分布式伺服器中的資訊),而其他負責存儲資料的分布式伺服器叫做OSD,主要負責存儲檔案的資料部分。當使用者通路對象,會先通路中繼資料伺服器,中繼資料伺服器隻負責回報對象存儲在哪些OSD,假設回報檔案A存儲在B、C、D三台OSD,那麼使用者就會再次直接通路3台OSD伺服器去讀取資料。

這時候由于是3台OSD同時對外傳輸資料,是以傳輸的速度就加快了。當OSD伺服器數量越多,這種讀寫速度的提升就越大,通過此種方式,實作了讀寫快的目的。

另一方面,對象存儲軟體是有專門的檔案系統的,是以OSD對外又相當于檔案伺服器,那麼就不存在檔案共享方面的困難了,也解決了檔案共享方面的問題。是以對象存儲的出現,很好地結合了塊存儲與檔案存儲的優點。

四、塊級與檔案級

1.塊級概念:塊級是指以扇區為基礎,一個或多個連續的扇區組成一個塊,也叫實體塊。它是在檔案系統與塊裝置(例如:磁盤驅動器)之間。

2.檔案級概念:檔案級是指檔案系統,單個檔案可能由于一個或多個邏輯塊組成,且邏輯塊之間是不連續分布。邏輯塊大于或等于實體塊整數倍,

3.實體塊與檔案系統之間的關系圖:映射關系:扇區→實體塊→邏輯塊→檔案系統

五、從應用角度看塊存儲、檔案存儲、對象存儲

傳統認知上來說,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協定,性能方面,單獨看一個連接配接的是不高的(還要解決掉線斷點續傳之類的可靠性問題),主要強大的地方是支援的并發數量,聚合起來的性能帶寬就非常可觀了。

六、塊存儲、檔案存儲、對象存儲的層次關系

塊存儲、檔案存儲和對象存儲

我們從底層往上看,最底層就是硬碟,多個硬碟可以做成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

繼續閱讀