基於Ceph物件儲存構建實踐

宜信技術學院發表於2020-05-20

儲存發展

資料儲存是人類永恆的話題和不斷探索的主題

  • 繩結記事

    原始社會,文字未發明之前 ,人們所使用的一種記事方法,在繩子上打結記事。

  • 穿孔卡

    穿孔卡片是始於20世紀的主要儲存方法,也是最早的機械化資訊儲存形式,進入20世紀60年代後,逐漸被其他儲存手段取代。目前穿孔卡片已經極少使用,除非用於讀出當年儲存的歷史資料。

  • 磁鼓儲存器

    20世紀50年代,磁鼓作為記憶體儲器應用於IBM 650。在後續的IBM 360/91和DEC PDP-11中,磁鼓也用作交換區儲存和頁面儲存。磁鼓的代表性產品是IBM 2301固定頭磁鼓儲存器。磁鼓是利用鋁鼓筒表面塗覆的磁性材料來儲存資料的。鼓筒旋轉速度很高,因此存取速度快。它採用飽和磁記錄,從固定式磁頭髮展到浮動式磁頭,從採用磁膠發展到採用電鍍的連續磁介質。這些都為後來的磁碟儲存器打下了基礎。

    磁鼓最大的缺點是儲存容量太小。一個大圓柱體只有表面一層用於儲存,而磁碟的兩面都可用來儲存,顯然利用率要高得多。因此,當磁碟出現後,磁鼓就被淘汰了。

  • 磁帶

    磁帶是從1951年起被作為資料儲存裝置使用的,磁帶是所有儲存媒體中單位儲存成本最低、容量最大、標準化程度最高的常用儲存介質之一。從 20 世紀 70 年代後期到 80 年代出現了小型的盒式磁帶,長度為 90 分鐘的磁帶每一面可以記錄大約 660KB的資料。

  • 軟盤

    軟盤發明於1969年,直徑是8英寸,單面容量80KB。4年後,5.25英寸、容量為320KB的軟盤誕生了。軟盤的發展趨勢是碟片直徑越來越小,而容量卻越來越大,可靠性也越來越高。圖2-10是三種典型的軟盤,其中a為不同外觀尺寸的軟盤,b中3.5英寸軟盤的容量為1.44MB,曾經作為主要的移動儲存介質被廣泛使用。到了20世紀90年代後期,出現了容量為250MB的3.5英寸軟盤產品,但由於相容性、可靠性、成本等原因,並未被廣泛使用,如今已難尋蹤跡。

  • 光碟

    早期光碟主要用於電影行業,第一張光碟於1987年進入市場, 直徑為30cm,每一面可以記錄60分鐘的音視訊。

  • 硬碟儲存器

    第一款硬碟驅動器是IBM Model 350 Disk File, 於 1956 年製造,包含了 50 張 24 英寸的碟片,總容量不到5MB,機械硬碟發展至今,單盤容量已經超過16T了 。

儲存的三種方式

塊儲存

塊儲存-圖片來自redhat官網

DAS

直接附加儲存(Directed Attached Storage,DAS)作為一種最簡單的外接儲存方式,通過資料線直接連線在各種伺服器或客戶端擴充套件介面上。它本身是硬體的堆疊,不帶有任何儲存作業系統,因而也不能獨立於伺服器對外提供儲存服務。DAS常見的形式是外接磁碟陣列,通常的配置就是RAID控制器+一堆磁碟。DAS安裝方便、成本較低的特性使其特別適合於對儲存容量要求不高、伺服器數量較少的中小型資料中心。

SAN

儲存區域網路(Storage Area Network,簡稱SAN),SAN預設指FC-SAN,SAN儲存有兩種結構:

  • FC-SAN

    典型的SAN利用光纖通道(Fiber Channel,FC)技術連線節點,並使用光纖通道交換機(FC Switch)提供網路交換。不同於通用的資料網路,儲存區域網路中的資料傳輸基於FC協議棧。在FC協議棧之上執行的SCSI協議提供儲存訪問服務。與之相對的iSCSI儲存協議,則提供了一種低成本的替代方式,即將SCSI協議執行於TCP/IP協議棧之上。為了區別這兩種儲存區域網路,前者通常稱為FC SAN,後者稱為IP SAN。

  • IP-SAN

    由於FC-SAN的高成本,人們就開始考慮構建基於乙太網技術的儲存網路,使得的iSCSI可以實現在IP網路上執行SCSI協議。但是在SAN中,傳輸的指令是 SCSI的讀寫指令,不是IP資料包。iSCSI(網際網路小型計算機系統介面)是一種在TCP/IP上進行資料塊傳輸的標準。它是由Cisco和IBM兩家發起的,並且得到了各大儲存廠商的大力支援。iSCSI可以實現在IP網路上執行SCSI協議,使其能夠在諸如高速千兆乙太網上進行快速的資料存取備份操作。為了與之前基於光纖技術的FC SAN區分開來,這種技術被稱為IP SAN。

優點
  • 高效能,集中化的管理,穩定性和安全性得到保障
缺點
  • 成本昂貴,磁碟陣列的相容性限制了裝置選擇空間及資源共享

NAS儲存

NAS儲存-圖片來自redhat官網

圖片來源:redhat官網

Network Attached Storage 網路附加儲存,採用 NFSCIFS 協議訪問資料,以檔案為傳輸協議,通過 TCP/IP實現網路化儲存,可擴充套件性好、價格便宜、使用者易管理,如目前在叢集計算中應用較多的NFS檔案系統。

優點
  • 造價成本低,有一個伺服器,裝上網路檔案儲存軟體,就可以提供給其他伺服器掛載訪問。
  • 檔案級的資料共享
缺點
  • 讀寫速率低

物件儲存

物件儲存

塊儲存讀寫快、不利於資料共享,檔案儲存資料共享方便、但是讀寫慢,能否弄一個讀寫快而且可以共享資料的儲存,於是物件儲存就誕生了。塊儲存和檔案儲存是我們比較熟悉的兩種主流的儲存型別,而物件儲存(Object-based Storage)是一種新的網路儲存架構。

3個核心概念

物件

物件是物件儲存中的最小單元,比如照片就是一個物件,物件由後設資料資訊(MataData,包含Length,lastModify等),使用者資料(Data),使用者自定義的資料資訊(拍攝者、拍攝裝置等)和檔名(Key)組成。

儲存桶

作為存放物件的容器

使用者

物件儲存的使用者,儲存桶的擁有者,每個使用者使用AccessKeyId 和 SecretAccessKey對稱加密的方法來驗證某個請求的傳送者身份。

物件儲存適合存什麼

用來存海量非結構化資料的,物件儲存將資料以物件的方式儲存,而不是以傳統的檔案和資料塊的形式儲存,每個物件都要儲存資料、後設資料和一個唯一的識別符號。

  • 圖片
  • 視訊
  • 音訊
  • 文件
  • 程式碼js/html
缺點

應用程式碼需要改動,無法修改物件,需要一次性完整寫入

優點

無限擴容

基於Ceph的物件儲存構建實踐

什麼是Ceph

加州大學 Santa Cruz 分校的 Sage Weil(DreamHost 的聯合創始人)博士論文設計的新一代自由軟體分散式檔案系統。軟體定義儲存(Software Defined Storage, SDS)。統一的儲存解決方案。 提供了三種儲存方式:塊儲存、檔案儲存、物件儲存。Ceph的架構如下:

圖片來源:Ceph官網

Ceph元件

Ceph Monitor(監視器,簡稱Mon)

Mon通過儲存一份叢集狀態對映來的維護整個叢集的健康狀態。它分別為每個元件維護對映資訊。所有叢集節點都向Mon節點彙報狀態資訊

RADOS

(Reliable Autonomix Distributed Object Store),是儲存叢集的基礎。在Ceph中所有的資料都是以物件的形式儲存,RADOS就負責存這些資料,不考慮它們的型別。

Ceph物件儲存裝置OSD

Ceph 分散式物件儲存系統的物件儲存守護程式。它負責把物件儲存到本地檔案系統,並使之通過網路可訪問。

RADOS閘道器(RGW)

提供了相容Amazon S3和OpenStack物件儲存API(Swift)的restful API介面。支援多租戶和OpenStack Keystone身份驗證。

MDS(Ceph後設資料伺服器)

為CephFS跟蹤檔案層次結構和儲存後設資料。

librados

librados庫為PHP,Ruby,Java,Python,C和C++這些程式語言提供了方便地訪問RADOS介面的方式。

RBD(RADOS塊裝置)

Ceph塊裝置,原名是 RADOS 塊裝置,提供可靠的分散式和高效能塊儲存磁碟給客戶端,將塊資料以順序條帶化的形式分散儲存在的多個 OSD 上,支援自動精簡配置、動態調整大小、完整和增量快照、寫實複製克隆等企業級特性,而且RBD服務已經被封裝成了基於 librados 的一個原生介面。

CephFS(Ceph Filesystem)

Ceph 檔案系統提供了一個使用Ceph儲存叢集儲存使用者資料的與POSIX相容的檔案系統。和RBD、RGW一樣,基於librados封裝了原生介面。

Ceph的特點

  • 高效能

    摒棄了傳統的集中式儲存後設資料定址的方案,採用CRUSH演算法,資料分佈均衡,並行度高。

  • 高可用性

    資料強一致性,多種故障場景自愈

  • 高擴充套件性

    去中心化、靈活擴充套件

  • 特性豐富

    支援三種儲存介面:塊儲存、物件儲存、檔案儲存

    支援多種語言(Python、C++、Java、PHP、Ruby等)驅動,自定義介面

基於Ceph的物件儲存實踐

客戶端通過 4,7 層負載均衡,基於HTTP協議,將請求轉發至物件儲存閘道器(Rados GateWay), 物件儲存閘道器通過Sockets與叢集通訊,至此,完成了整個資料的傳輸。

使用者認證

s3使用者認證

  1. 應用在傳送請求前,使用使用者私有祕鑰(secret key)、請求內容等,採用與RGW閘道器約定好的演算法計算出數字簽名後,將數字簽名以及使用者訪問祕鑰access_key封裝在請求中傳送給RGW閘道器
  2. RGW閘道器接受到請求後,使用使用者訪問祕鑰作為索引送RADOS叢集中讀取使用者資訊,並從使用者資訊中獲取到使用者私有祕鑰。
  3. 使用使用者私有祕鑰、請求內容等,採用與應用約定好的演算法計算數字簽名。
  4. 判斷RGW生成的數字簽名和請求的簽名是否匹配,如果匹配,則認為請求是真實的,使用者認證通過,如果匹配返回 S3 error: 403 (SignatureDoesNotMatch)

物件儲存IO路徑分析

物件儲存IO路徑分析

應用通過http協議將請求傳送至物件儲存閘道器,閘道器收到 I/O 請求後,從http語義中解析出S3或Swift資料並進行一系列檢查,檢查通過後,根據不同API操作請求執行不同的資料處理邏輯,通過 librados 介面從 RADOS Cluster中 GET 或者 PUT 資料,完成整個I/O過程。

作者:張健偉
來源:宜信技術學院

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69918724/viewspace-2693236/,如需轉載,請註明出處,否則將追究法律責任。

相關文章