存儲:塊存儲/文件存儲/對象存儲

塊存儲

典型設備:磁盤陣列,硬盤數據庫

塊存儲主要是將裸磁盤空間整個映射給主機使用的,例如磁盤陣列裏面有5塊硬盤(爲方便說明,假設每一個硬盤1G),而後能夠經過劃邏輯盤、作Raid、或者LVM(邏輯卷)等種種方式邏輯劃分出N個邏輯的硬盤。假設劃分完的邏輯盤也是5個,每一個也是1G,可是這5個1G的邏輯盤已經與原來的5個物理硬盤意義徹底不一樣了。例如第一個邏輯硬盤A裏面,可能第一個200M是來自物理硬盤1,第二個200M是來自物理硬盤2,因此邏輯硬盤A是由多個物理硬盤邏輯虛構出來的硬盤。 接着塊存儲會採用映射的方式將這幾個邏輯盤映射給主機,主機上面的操做系統會識別到有5塊硬盤,可是操做系統是區分不出究竟是邏輯仍是物理的,它一律就認爲只是5塊裸的物理硬盤而已,跟直接拿一塊物理硬盤掛載到操做系統沒有區別的,至少操做系統感知上沒有區別。而後,操做系統還須要對掛載的裸硬盤進行分區、格式化後,才能使用,與日常主機內置硬盤的方式徹底無異。安全

塊存儲有兩種常見的形式,直接鏈接存儲DAS(Direct Attached Storage)和存儲區域網絡SAN(Storage Area Network)服務器

塊存儲是數據存儲的最古老形式,數據都存儲在固定長度的塊或多個塊中網絡

塊存儲是咱們最經常使用的一種存儲模式。好比我的PC上的硬盤,服務器上的硬盤,外置設備經過SCSI或者FC接口直接鏈接到電腦上的。分佈式

塊存儲能夠經過raid的方法,經過冗餘備份,提升數據的安全性性能

應用程序不能直接使用塊存儲,必須先進行格式化,格式化成某種文件系統,經過文件系統使用存儲設備ui

文件存儲

典型設備:FTP、NFS服務器操作系統

比如是一個共享文件夾,自帶文件系統,所以是應用程序能夠直接使用的存儲,好比NFS,就是直接把文件服務器的某個目錄掛載到本地的某個目錄,應用程序直接操做本地的這個目錄,等於操做遠程服務器對應的目錄.net

實現文件存儲的方式有不少,其中比較經常使用的有如下的幾種:ftp協議、nfs協議、samba協議等。對象

塊存儲和文件存儲異同

  1. 數據傳輸方式不一樣:塊存儲依靠SCSI或者ISCSI接口,以塊方式交換數據,數據傳輸速度快;文件存儲依靠TCP/IP協議棧進行數據傳輸,網絡帶寬是I/O的性能瓶頸
  2. 文件系統的位置:NAS和SAN最本質的區別就是文件管理系統在哪裏,如圖所示,SAN結構中,文件管理系統(FS)分別在每個應用服務器上面,而NAS則是每一個應用服務器經過網絡共享協議,使用同一個文件管理系統。即NAS和SAN存儲系統的區別就是NAS有自已的文件管理系統

  1. 使用方式不一樣:塊存儲設備使用的時候,還須要進一步進行分區,將設備格式爲某種文件系統才能夠繼續使用;而文件存儲就至關於你多了一個共享文件夾,文件存儲帶着本身自己的文件系統

對象存儲

對象是系統中數據存儲的基本單位,一個對象實際上就是文件的數據和一組屬性信息(Meta Data)的組合,這些屬性信息能夠定義基於文件的RAID參數、數據分佈和服務質量等,而傳統的存儲系統中用文件或塊做爲基本的存儲單位,在塊存儲系統中還須要始終追蹤系統中每一個塊的屬性。對象經過與存儲系統通訊維護本身的屬性。在存儲設備中,全部對象都有一個對象標識,經過對象標識OSD命令訪問該對象。一般有多種類型的對象,存儲設備上的根對象標識存儲設備和該設備的各類屬性,組對象是存儲設備上共享資源管理策略的對象集合等。

三者之間異同比較

對象存儲相比塊存儲、文件存儲的一個最本質的區別是無層次結構。通常的存儲(好比你本身的PC的文件系統)是有一個目錄樹概念的,要找到一個文件須要先找到這個文件所屬的目錄。而對象存儲是沒有文件目錄樹這個概念的,全部的數據都在同一個層次中,僅僅經過數據的惟一地址標識來識別並查找數據。

存儲類型 數據傳輸方式 適應場景 優勢
塊存儲 SCSI/ISCSI接口 小型機房 速度快
文件存儲 NFS/FTP等 局域網環境 可擴展性高
對象存儲 http協議 互聯網環境,異地存儲 速度快,且擴展性高,高可用
  • 塊存儲: 是和主機打交道的, 如插一塊硬盤,應用程序必須經過文件系統來操做
  • 文件存儲: NAS, 網絡存儲, 用於多主機共享數據
  • 對象存儲: 跟你本身開發的應用程序打交道, 如網盤,應用程序能夠經過http協議進行文件的讀寫操做等

文件系統

  • 本地文件系統:Ext四、XFS、FAT32等
  • 分佈式文件系統:GlusterFS、CephFS、HDFS等 曾經使用過ceph的RADOS(Reliable Autonomic Distributed Object Store, RADOS)
  • 集羣文件系統

數據庫能夠管理數據;文件系統也能夠管理數據。好比MySQL的InnoDB引擎就能夠直接管理裸盤上的數據

數據庫可使用本身文件系統,也可使用操做系統的文件系統

有一類應用是須要存儲直接裸盤映射的,例如數據庫。由於數據庫須要存儲裸盤映射給本身後,再根據本身的數據庫文件系統來對裸盤進行格式化的,因此是不可以採用其餘已經被格式化爲某種文件系統的存儲的。此類應用更適合使用塊存儲。固然如今的數據庫也可使用文件系統,不直接使用裸盤。

主要來源:
https://blog.csdn.net/gui951753/article/details/82714065
https://www.zhihu.com/question/21536660/answer/33279921
https://zhuanlan.zhihu.com/p/68904315

相關文章
相關標籤/搜索