三種存儲類型比較-文件、塊、對象存儲(轉)


對象存儲,其實早就接觸到了,只是一直沒有意識到。昨天晚上同事說准備自己研究研究對象存儲,於是問他什么叫對象存儲(以前認為是數據庫中的對象存儲,O(∩_∩)O哈哈~)。

 

------

https://blog.csdn.net/xiaoliuliu2050/article/details/79962841?utm_source=blogxgwz0 (貌似也是轉的別人的,但是沒有給出源,不好意思)

 

本質是一樣的,底層都是塊存儲,只是在對外接口上表現不一致,分別應用於不同的業務場景。

 

分布式存儲的應用場景相對於其存儲接口,現在流行分為三種:

  1. 對象存儲: 也就是通常意義的鍵值存儲,其接口就是簡單的GET、PUT、DEL和其他擴展,如七牛、又拍、Swift、S3

  2. 塊存儲: 這種接口通常以QEMU Driver或者Kernel Module的方式存在,這種接口需要實現Linux的Block Device的接口或者QEMU提供的Block Driver接口,如Sheepdog,AWS的EBS,青雲的雲硬盤和阿里雲的盤古系統,還有Ceph的RBD(RBD是Ceph面向塊存儲的接口)

  3. 文件存儲: 通常意義是支持POSIX接口,它跟傳統的文件系統如Ext4是一個類型的,但區別在於分布式存儲提供了並行化的能力,如Ceph的CephFS(CephFS是Ceph面向文件存儲的接口),但是有時候又會把GFS,HDFS這種非POSIX接口的類文件存儲接口歸入此類。

 

【塊存儲】

典型設備:磁盤陣列,硬盤,虛擬硬盤

【文件存儲】
典型設備:FTP、NFS服務器,SamBa

【對象存儲】

典型設備:內置大容量硬盤的分布式服務器

 

塊存儲接口的操作對象是二進制數據,物理存儲位置是硬盤 (通過邏輯目錄 找到對應分區,然后找到對應存儲塊存儲。)

文件存儲接口操作對象是目錄和文件,物理存儲位置 是由 文件服務器對應的文件系統來決定的(比塊存儲多一個過程:判斷參數文件 應該存儲到哪個邏輯目錄上。)

對象存儲接口的操作對象是對象,存儲位置是大型分布式服務器. 

如果是對象是文件,使用文件服務器存儲(判斷參數文件 應該存儲到哪個邏輯目錄上),

 如果是對象,使用塊存儲

存儲對外提供服務我覺得可以分成兩層,

一層就是物理層,存儲層;

另外一層就是文件系統一層。

塊存儲就是在物理層這個層面對外提供服務,使用它的系統,有用自己的文件系統格式化。這樣一旦被一個系統使用,就獨占了。

文件存儲,就是在文件系統一層對外提供服務,系統只用訪問文件系統一級就可以,各個系統都可以根據接口取訪問。

對象存儲,也是文件系統一級提供服務,只是優化了目前的文件系統,采用扁平化方式,棄用了目錄樹結構,便於共享,高速訪問。

 

詳細介紹:

 

這三種存儲,分別對應了不同的訪問協議,這也就決定了他們的本質差別。

先說一下文件存儲,主要操作對象是文件和文件夾。以 NFS 為例,文件相關的接口包括:LOOKUP/ACCESS/READ/WRITE/CREATE/REMOVE/RENAME 等等,文件夾相關的接口包括:MKDIR/RMDIR/READDIR 等等。同時也會有 FSSTAT/FSINFO 等接口用於提供文件系統級別的信息。POSIX,SAMBA 等也是文件存儲協議。協議更注重接口的靈活,以及訪問權限控制。

塊存儲,主要操作對象是磁盤。以 SCSI 為例,主要接口有 Read/Write/Read Capacity/Inquiry 等等。FC,iSCSI,也是塊存儲協議。和文件存儲相比,沒有文件和目錄樹的概念,一般協議也不會定義磁盤的創建和刪除操作。協議更注重傳輸控制。

對象存儲,主要操作對象是對象(Object)。以 S3 為例,主要接口有 PUT/GET/DELETE 等。和文件和對象存儲相比,沒有隨機讀寫的接口。和文件存儲相比,沒有目錄樹的概念。協議更注重簡潔。

 
上面的總結基本上有一個概念了,下面是更加詳細的解讀:
https://blog.csdn.net/sinat_27186785/article/details/52032431
 
 


免責聲明!

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



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