典型設備:磁盤陣列,硬盤數據庫
塊存儲主要是將裸磁盤空間整個映射給主機使用的,例如磁盤陣列裏面有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協議等。對象
對象是系統中數據存儲的基本單位,一個對象實際上就是文件的數據和一組屬性信息(Meta Data)的組合,這些屬性信息能夠定義基於文件的RAID參數、數據分佈和服務質量等,而傳統的存儲系統中用文件或塊做爲基本的存儲單位,在塊存儲系統中還須要始終追蹤系統中每一個塊的屬性。對象經過與存儲系統通訊維護本身的屬性。在存儲設備中,全部對象都有一個對象標識,經過對象標識OSD命令訪問該對象。一般有多種類型的對象,存儲設備上的根對象標識存儲設備和該設備的各類屬性,組對象是存儲設備上共享資源管理策略的對象集合等。
對象存儲相比塊存儲、文件存儲的一個最本質的區別是無層次結構。通常的存儲(好比你本身的PC的文件系統)是有一個目錄樹概念的,要找到一個文件須要先找到這個文件所屬的目錄。而對象存儲是沒有文件目錄樹這個概念的,全部的數據都在同一個層次中,僅僅經過數據的惟一地址標識來識別並查找數據。
存儲類型 | 數據傳輸方式 | 適應場景 | 優勢 |
---|---|---|---|
塊存儲 | SCSI/ISCSI接口 | 小型機房 | 速度快 |
文件存儲 | NFS/FTP等 | 局域網環境 | 可擴展性高 |
對象存儲 | http協議 | 互聯網環境,異地存儲 | 速度快,且擴展性高,高可用 |
數據庫能夠管理數據;文件系統也能夠管理數據。好比MySQL的InnoDB引擎就能夠直接管理裸盤上的數據
數據庫可使用本身文件系統,也可使用操做系統的文件系統
有一類應用是須要存儲直接裸盤映射的,例如數據庫。由於數據庫須要存儲裸盤映射給本身後,再根據本身的數據庫文件系統來對裸盤進行格式化的,因此是不可以採用其餘已經被格式化爲某種文件系統的存儲的。此類應用更適合使用塊存儲。固然如今的數據庫也可使用文件系統,不直接使用裸盤。
主要來源:
https://blog.csdn.net/gui951753/article/details/82714065
https://www.zhihu.com/question/21536660/answer/33279921
https://zhuanlan.zhihu.com/p/68904315