塊存儲、文件存儲、對象存儲的理解


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操作都是針對的整個文件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM