背景
本文主要對楊傳輝(日照)
《大規模分布式存儲系統原了解析與架構實戰》、大話存儲、網絡資源(具體參考文末連結)及個人了解進行整理,意在建構出存儲發展基本軌迹和一些基本常識,讓更多像我一樣的初入者有個宏觀上的認知。
存儲發展史
從單機到網際網路,存儲作為的基礎設施,主要發展都是圍繞建構 低成本、高性能、可擴充、易用的目标進行演進,時至今日,在形态上存儲分為單機存儲、集中存儲、分布式存儲、雲存儲、雲原生存儲

各階段存儲的基本形态如下
各階段基本形态
存儲資料分類 & 模型
無論單機存儲、分布式存儲、雲存儲都是基于特定應用場景下,對指定資料類型建構對應的存儲資料模型
資料分類
資料模型
存儲類型
常見三種存儲類型:塊存儲、檔案存儲、對象存儲
塊存儲
基于Block塊的存儲模式,兩種常見存儲方式:
- DAS(Direct Attch Storage), 直連主機存儲方式
- SAN (Storage Area Netowrk),高速網絡連結主機存儲方式
檔案存儲
依附網絡提供檔案存儲服務
對象存儲
建構于鍵值存儲,核心是将資料通路(data)和控制通路(meta)分離,并且基于對象儲存設備(Object-based Storage Device,OSD)建構存儲系統,對外以RSETful API形式服務
單機存儲
基本概念
單機存儲系統是單機存儲引擎(資料結構在機械磁盤、SSD等持久化媒體上的實作)的一種封裝,對外提供檔案、鍵值、表格或者關系模型的存儲服務。
存儲引擎
存儲引擎是存儲系統的發動機,決定了存儲系統能夠提供的功能和性能, 提供功能包含:
- 增加(Create)
- 讀取(Retrieve),随機讀取和順序掃描
- 更新(Update)
- 删除(Delete)
引擎間差異如下:
引擎 | 機理 | 支援 | 不支援 | 對應的存儲系統 |
哈希存儲引擎 | 哈希表的持久化實作。基于哈希表結構的鍵值存儲系統,數組+連結清單的方式實作 | 增、删、改、随機讀取 | 順序掃描 | 鍵值(Key-Value)存儲系統 |
B樹存儲引擎 | B樹的持久化實作 | 增、删、改、随機讀取 & 順序掃描 | 關系資料庫 | |
LSM(Log-Structured Merge Tree)樹存儲引擎 | 與B樹類似,差別在于把一棵大樹拆分成N棵小樹寫時,先寫入記憶體中,到一定門檻值後,寫入磁盤,磁盤中的樹定期可以做merge操作,合并成一棵大樹,以優化讀性能 | Bigtable; HBase; |
集中式存儲
集中式存儲相對與單機存儲而言,存儲系統中包含了更多元件,除了機頭(控制器)、磁盤陣列(JBOD)和交換機等裝置外,還有管理裝置等輔助裝置。
參考:
集中式存儲的基本邏輯示意圖系統構成
- 機頭,整個存儲系統的核心部件,通常由控制器、前後端口組成,
-
- 控制器,通常有二,實作互備高可用,控制器中的軟體實作對磁盤的管理,将磁盤抽象化為存儲資源池,然後劃分為LUN提供給伺服器使用。
- 前後端口,前端端口使用者為伺服器提供存儲服務,後端端口用于擴充存儲系統的容量(連接配接更多的儲存設備)
- 磁盤櫃(Just a Bound Of Disk , JBOD),磁盤挂在伺服器外的專用櫃裡,有獨立電源、散熱、接口等,内部線纜相連(SCSI),對機頭後端端口統一挂載
分布式存儲
分布式存儲系統,是将分散獨立的儲存設備通過網絡互聯,系統關聯,對外作為一個整體提供存儲服務。
系統分類
設計原則
參考
CAP雲存儲
雲存儲,是一種雲計算領域存儲服務方式,底層建構在分布式存儲基礎之上,上層通過Internet形式提供存儲服務,除具備分布式存儲基礎特性外,更兼具靈活性,通常由雲廠商提供
參考産品
雲原生存儲
雲原生存儲脫胎于雲存儲,除具備雲存儲的特性外、須滿足具備雲原生生态系統中其他所有元件具備相同的動态(公共雲/專有雲/混合雲等場景)建構可擴充應用、S3 API 驅動、K8S友好等
參考示例
Rook
CNCF首個雲原生存儲項目Rook,是将檔案、資料塊和對象存儲系統引入到Kubernetes叢集,與其他正在使用存儲的應用程式和服務一起無縫運作。通過這種方式,雲原生叢集可以在公有雲和本地部署中自給自足并且具備可移植性。該項目的開發目的是使企業能夠通過動态應用編排,為在本地和公有雲環境中運作的分布式存儲系統實作資料中心現代化。
MinIO
MinIO是一款高性能、軟體定義的,對象存儲套件,幫助客戶建構雲原生資料基礎設施。可與 Kubernetes 內建,允許操作員使用 Kubernetes 界面管理存儲,而 Kubernetes 可以處理從存儲提供到卷放置的所有事務。