開發與維運

圖文存儲常識:單機、集中、分佈式、雲、雲原生存儲

背景

本文主要對楊傳輝(日照)《大規模分佈式存儲系統原理解析與架構實戰》、大話存儲、網絡資源(具體參考文末鏈接)及個人理解進行整理,意在構建出存儲發展基本軌跡和一些基本常識,讓更多像我一樣的初入者有個宏觀上的認知。

 

存儲發展史

從單機到互聯網,存儲作為的基礎設施,主要發展都是圍繞構建 低成本、高性能、可擴展、易用的目標進行演進,時至今日,在形態上存儲分為單機存儲、集中存儲、分佈式存儲、雲存儲、雲原生存儲

各階段存儲的基本形態如下

 

各階段基本形態

 

存儲數據分類 & 模型

無論單機存儲、分佈式存儲、雲存儲都是基於特定應用場景下,對指定數據類型構建對應的存儲數據模型

 

數據分類

 

數據模型

 

 

 

存儲類型

常見三種存儲類型:塊存儲、文件存儲、對象存儲

塊存儲

基於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集群,與其他正在使用存儲的應用程序和服務一起無縫運行。通過這種方式,雲原生集群可以在公有云和本地部署中自給自足並且具備可移植性。該項目的開發目的是使企業能夠通過動態應用編排,為在本地和公有云環境中運行的分佈式存儲系統實現數據中心現代化。

Rook Architecure

 

 

 Ceph Rook integrates with Kubernetes

 

 

MinIO

MinIO是一款高性能、軟件定義的,對象存儲套件,幫助客戶構建雲原生數據基礎設施。可與 Kubernetes 集成,允許操作員使用 Kubernetes 界面管理存儲,而 Kubernetes 可以處理從存儲提供到卷放置的所有事務。

Born cloud native

 

 

參考

Leave a Reply

Your email address will not be published. Required fields are marked *