1. 程式人生 > >塊儲存、檔案儲存、物件儲存的總結

塊儲存、檔案儲存、物件儲存的總結

塊儲存、檔案儲存、物件儲存的理解

​ 在給公司的的專案做調研時,涉及到了塊儲存、檔案儲存、物件儲存,這幾類儲存方式,對這些概念理解的十分模糊,準備寫部落格記錄下這三個概念的理解與區別,也為以後遺忘時方便撿起來。

​ 去各大部落格查詢有關這三個儲存的資料,網上大部分介紹這三個概念的資料都是同出一源,資料雷同太多,為了加深理解,寫下這篇部落格。

1. 三種儲存的對比:

儲存方式 技術實現 優勢 劣勢 代表作
塊儲存 裸盤上劃分邏輯卷,邏輯卷格式化成任意檔案系統 支援多種檔案系統,傳輸速度快,提供硬體容錯機制 無法實現網路共享 FC-SAN,iSCSI
檔案儲存 在格式化的磁碟上儲存檔案 提供網路共享 網路傳輸速度制約讀寫速度,分層目錄結構限制可擴充套件性 NFS,FAT,EXT3
物件儲存 以靈活可定製的物件為儲存單元,元資料伺服器提供快速併發定址 讀寫速度較快的同時支援網路共享,物件靈活定義 管理軟體的購買、使用和運維成本高 Swift

術語:

物件儲存中,OSD(Object-based Storage Device)是物件儲存裝置,MDS(Metadata Server)是元資料伺服器。

2. 塊儲存

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

​ 塊儲存主要是將裸磁碟空間整個對映給主機使用的,就是說例如磁碟陣列裡面有5塊硬碟(為方便說明,假設每個硬碟1G),然後可以通過劃邏輯盤、做Raid、或者LVM(邏輯卷)等種種方式邏輯劃分出N個邏輯的硬碟。

​ 接著塊儲存會採用對映的方式將這幾個邏輯盤對映給主機,主機上面的作業系統會識別到有5塊硬碟,但是作業系統是區分不出到底是邏輯還是物理的,它一概就認為只是5塊裸的物理硬碟而已,跟直接拿一塊物理硬碟掛載到作業系統沒有區別的,至少作業系統感知上沒有區別。

​ 此種方式下,作業系統還需要對掛載的裸硬碟進行分割槽、格式化後,才能使用,與平常主機內建硬碟的方式完全無異。

2.1 優點

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

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

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

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

2.2 缺點

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

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

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

3. 檔案儲存

典型裝置:FTP、NFS伺服器

​ 為了克服塊儲存中檔案服務共享的問題,所以有了檔案儲存。

​ 檔案儲存也有軟硬一體化的裝置,但是其實普通拿一臺伺服器/筆記本,只要裝上合適的作業系統與軟體,就可以架設FTP與NFS服務了,架上該類服務之後的伺服器,就是檔案儲存的一種了。

​ 主機A可以直接對檔案儲存進行檔案的上傳下載,與塊儲存不同,主機A是不需要再對檔案儲存進行格式化的,因為檔案管理功能已經由檔案儲存自己搞定了。

3.1 優點

1、造價交低:隨便一臺機器就可以了,另外普通乙太網就可以,根本不需要專用的SAN網路,所以造價低。

2、 方便檔案共享:針對塊儲存中檔案無法共享問題,使用檔案儲存,第三方進行中轉。

3.2 缺點

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

4. 物件儲存

典型裝置:內建大容量硬碟的分散式伺服器

​ 物件儲存最常用的方案,就是多臺伺服器內建大容量硬碟,再裝上物件儲存軟體,然後搞幾臺伺服器作為管理節點,安裝上物件儲存管理軟體。管理節點可以管理其他伺服器對外提供讀寫訪問功能。

​ 之所以出現物件儲存,是為了克服塊儲存與檔案儲存各自的缺點。簡單來說塊儲存讀寫快,不利於共享,檔案儲存讀寫慢,利於共享。能否搞一個讀寫快,利於共享的出來呢?於是有了物件儲存。

物件儲存的原理

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

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

​ 這種情況下讀寫速度很慢,因為就算你呦100個機械手臂在讀寫,但是由於你只有讀取到第一塊,才能知道下一個在哪裡,其實相當於只能有一個機械手臂在實際工作。

​ 物件儲存將元資料獨立出來,控制節點叫元資料伺服器(伺服器+物件儲存管理軟體),裡面主要負責儲存物件的屬性(主要是物件的資料被打散存放到了那幾臺分散式伺服器中的資訊),而其他負責儲存資料的分散式伺服器叫做OSD,主要負責儲存檔案的資料部分。當用戶訪問物件,會先訪問元資料伺服器,元資料伺服器只負責反饋物件儲存在那些OSD,假設反饋檔案A儲存在B、C、D三臺OSD,那麼使用者就會再次直接訪問3臺OSD伺服器去讀取資料。

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

​ 另一方面,物件儲存軟體是有專門的檔案系統的,所以OSD物件又相當於檔案伺服器,那麼就不存在檔案共享方面的困難了,也就解決了檔案共享方面的問題。

​ 所以物件儲存的出現,很好地結合了塊儲存與檔案儲存的優點。

總結:

​ 塊儲存可以認為是裸盤,最多包一層邏輯卷(LVM);常見的DAS、FC-SAN、IP-SAN都是塊儲存,塊儲存最明顯的特徵就是不能被作業系統直接讀寫,需要格式化為指定的檔案系統(Ext3、Ext4、NTFS)後才可以訪問。優點:讀寫快(頻寬&IOPS);缺點:因為太底層了,不利於擴充套件。

​ 檔案儲存:指的是在檔案系統上的儲存,也就是主機作業系統中的檔案系統。

​ 物件儲存,物件儲存肯定是分散式儲存,但分散式儲存可能是分散式檔案系統,不一定是物件儲存;常見的物件儲存開源實現有 Ceph 的RADOS、openstack的swift、AWS s3等,常見分散式檔案系統,lustre、glusterfs、HDFS等;物件儲存和分散式檔案系統的表面區別:物件儲存支援的訪問介面基本都是restful介面、而分散式檔案系統提供的POSIX相容的檔案操作介面;

分散式檔案系統和物件儲存最本質的區別:

​ 分散式檔案系統檔案組織方式為目錄樹、物件儲存採用的則是扁平的組織方式;物件儲存不支援隨機讀取和寫入,put和get操作都是針對的整個檔案