1. 程式人生 > >塊存儲、文件存儲、對象存儲意義及差異

塊存儲、文件存儲、對象存儲意義及差異

修改時間 nas 組網 元數據 簡單 體系 spa 一份 識別

關於塊存儲、文件存儲、對象存儲方面的知識在知乎上看到了個很好的解答:https://www.zhihu.com/question/21536660

通俗易懂,查了些資料做了詳細的補充。

塊存儲

典型設備:磁盤陣列、硬盤
塊存儲主要是將裸磁盤空間整個映射給主機使用的。
就是說例如:磁盤陣列裏面有5塊硬盤,然後可以通過劃邏輯盤、做Raid、或者LVM等方式邏輯劃分出N個邏輯的硬盤。但是邏輯盤和物理盤是兩個完全不同的概念。假設每個硬盤100G,共有5個硬盤,劃分為邏輯盤也為5個,每個100G,但是這5個邏輯盤和原來的5個物理盤意義完全不同了。例如第一個邏輯盤第一個20G可能來自物理盤1,第二個20G來自物理盤2,所以邏輯盤是多個物理盤邏輯虛構出來的硬盤。


接著塊存儲會采用映射的方式將這幾個邏輯盤映射給主機,主機上面的操作系統會識別到有5塊硬盤,但是操作系統是無法區分到底是物理盤還是邏輯盤,它一概就認為只是5塊裸的物理硬盤而已,跟直接拿一塊物理硬盤掛載到操作系統沒區別,至少操作系統感知上沒有區別的。
在此方式下,操作系統還需要對掛載的裸硬盤進行分區、格式化後,才能使用,與平常主機內置的硬盤無差異。

優點

(1)這種方式的好處當然是因為通過了Raid與LVM等手段,對數據提供了保護;
(2)可以將多塊廉價的硬盤組合起來,稱為一個大容量的邏輯盤對外提供服務,提高了容量;
(3)寫入數據時,由於是多塊磁盤組合出來的邏輯盤,所以幾塊硬盤可以並行寫入的,提升了讀寫效率;


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

缺點

(1)采用SAN架構組網時,需要額外為主機購買光纖通道卡,還要購買光纖交換機,造價成本高;
(2)主機之間數據無法共享,在服務器不做集群的情況下,塊存儲裸盤映射給主機,在格式化使用後,對於主機來說相當於本地盤,那麽主機A的本地盤根本不能給主機B去使用,無法共享數據
(3)不利於不同操作系統主機間的數據共享:因為操作系統使用不同的文件系統,格式化後,不同的文件系統間的數據是共享不了的。 例如一臺win7,文件系統是FAT32/NTFS,而linux是EXT4,EXT4是無法識別NTFS的文件系統的。

文件存儲

典型設備:FTP、NFS服務器
為了克服文件無法共享的問題,所以有了文件存儲。
文件存儲也有軟硬一體化的設備,但是其實一臺普通的PC機,只要裝上合適的操作系統和軟件,就可以假設FTP與NFS服務了,架上該類服務之後的服務器,就是文件存儲的一種了。
主機A可以直接對文件存儲進行文件的上傳和下載,與塊存儲不同,主機A是不需要再對文件存儲進行格式化的,因為文件管理功能已經由文件存儲自己搞定了。

優點

(1)造價低:隨便一臺機器就可以,另外普通的以太網就可以,根本不需要專用的SAN網絡,所以造價低
(2)方便文件共享

缺點

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

對象存儲

典型設備:內置大容量硬盤的分布式服務器
對象存儲最常用的方案,就是多臺服務器內置大容量硬盤,再裝上對象存儲軟件,然後再額外搞幾臺服務作為管理節點,安裝上對象存儲管理軟件。管理節點可以管理其他服務器對外提供讀寫訪問功能。
之所以出現對象存儲這種東西,是為了克服塊存儲與文件存儲各自的缺點,發揚各自的優點。簡單來說塊存儲讀寫快,不利於共享,文件存儲讀寫慢,利於共享。能否弄一個讀寫塊,利於共享的存儲出來呢?於是就有了對象存儲。

首先,一個文件包含了屬性(術語:metadata,元數據,例如該文件的大小、修改時間、存儲路徑等)以及內容(數據)。
像FAT32這種文件系統,是直接將一份文件與metadata一起存儲的,存儲過程先將文件按照文件系統的最小塊大小來打散(例如4M的文件,假設文件系統要求一個塊4K,那麽就將文件打散稱為1000個小塊),再寫進硬盤裏,過程中沒有區分數據和metadata的。而每個塊最後會告知你下一個要讀取的塊地址,然後一直這樣順序的按圖索驥,最後完成整份文件的所有塊的讀取。
這種情況下讀寫速率很慢,因為就算你有100個機械臂在讀寫,但是由於你只有讀取到第一個塊,才能知道下一個塊在哪裏,其實相當於只能有1個機械臂在實際工作。

而對象存儲則將元數據獨立出來了,控制節點叫元數據服務器(服務器+對象存儲管理軟件),裏面主要負責存儲對象的屬性(主要是對象的數據被打散存放到了那幾臺分布式服務器中的信息)而其他負責存儲數據的分布式服務器叫做OSD,主要負責存儲文件的數據部分。當用戶訪問對象,會先訪問元數據服務器,元數據服務器只負責反饋對象存儲在哪裏OSD,假設反饋文件A存儲在B、C、D三臺OSD,那麽用戶就會再次直接訪問3臺OSD服務器去讀取數據。
這時候由於是3臺OSD同時對外傳輸數據,所以傳輸的速度就會加快了,當OSD服務器數量越多,這種讀寫速度的提升就越大,通過此種方式,實現了讀寫快的目的。

另一方面,對象存儲軟件是有專門的文件系統的,所以OSD對外又相當於文件服務器,那麽就不存在共享方面的困難了,也解決了文件共享方面的問題
所以對象存儲的出現,很好的結合了塊存儲和文件存儲的優點

為什麽對象存儲兼具塊存儲和文件存儲的好處,還要使用塊存儲和文件存儲呢?

(1)有一類應用是需要存儲直接裸盤映射的,例如數據庫。因為數據需要存儲樓盤映射給自己後,再根據自己的數據庫文件系統來對裸盤進行格式化的,所以是不能夠采用其他已經被格式化為某種文件系統的存儲的。此類應用更合適使用塊存儲。
(2)對象存儲的成本比起普通的文件存儲還要較高,需要購買專門的對象存儲軟件以及大容量硬盤。如果對數據量要求不是海量,只是為了做文件共享的時候,直接用文件存儲的形式好了,性價比高。

下圖簡要的總結了三者之間的差異:

技術分享圖片

對象存儲文件系統的關鍵技術是什麽?

(1)分布元數據
(2)並發數據訪問,對象存儲體系結構定義了一個新的、更加智能化的磁盤接口OSD

什麽是OSD?

存儲局域網(SAN)和網絡附加存儲(NAS)是我們比較熟悉的兩種主流網絡存儲架構,而對象存儲是一種新的網絡存儲架構,基於對象存儲技術的設備就是對象存儲設備,簡稱:OSD

在存儲對象中通過什麽對象方式訪問對象?

在存儲設備中,所有對象都有一個對象標識,通過對象標識OSD命令訪問對象

OSD的主要功能是什麽?

(1)數據存儲。OSD管理對象數據,並將它們放置在標準的磁盤系統上,OSD不提供塊接口訪問方式,Client請求數據時用對象ID、偏移進行數據讀寫;
(2)智能分布。OSD用其自身的CPU和內存優化數據分布,並支持數據的預取。由於OSD可以智能的支持對象的預取,從而可以優化磁盤的性能
(3)每個對象元數據的管理。OSD管理存儲在其上對象的元數據,該元數據與傳統的inode元數據相似,通常包括對象的數據塊和對象的長度。

塊存儲、文件存儲、對象存儲意義及差異