每天5分鐘復習OpenStack(十)Ceph 架構

1、Ceph是什么?

“Ceph is a unified, distributed storage system designed for excellent performance, reliability and scalability.”這句話說出了Ceph的特性,它是可靠的可擴展的統一的分布式的存儲系統。Ceph可以同時提供對象存儲RADOSGW(Reliable、Autonomic、Distributed、Object Storage Gateway)、塊存儲RBD(Rados Block Device)、文件系統存儲Ceph FS(Ceph Filesystem)3種功能。

  • 可靠性,因為它使用數據冗余和容錯機制來保護數據的完整性和可靠性。它將數據分散存儲在多個存儲節點上,通過數據復制和數據恢復技術來避免數據丟失。即使一個存儲節點發生故障,數據仍然可以通過其他節點進行訪問和恢復。(ceph 是支持多種冗余級別的最小稱為盤級別冗余)

  • 可擴展性,因為它使用了分布式存儲架構。它可以通過增加存儲節點,來擴展存儲容量和性能。每個節點都可以平行處理和存儲數據,因此可以線性地增加整個系統的存儲容量和吞吐量。這種可擴展性使得Ceph非常適合處理大規模數據存儲和處理需求。

  • 統一性:因為它提供了多種存儲功能,包括對象存儲塊存儲文件系統存儲。這些不同類型的存儲可以在同一個Ceph集群中同時存在,并且可以根據不同的應用需求進行靈活部署和管理。這種統一性簡化了存儲架構和管理,并且提供了更好的靈活性和應用兼容性。

  • 分布式:因為它將數據分散存儲在多個節點上,并且通過網絡連接實現節點之間的通信和數據傳輸。每個節點都可以獨立處理和存儲數據,沒有單點故障,并且可以進行橫向擴展。分布式架構提供了高可用性、高性能和靈活性,并且使得Ceph能夠適應各種應用場景和規模

2、三種存儲類型

  • 文件存儲: 文件存儲是一種以文件為單位進行數據存儲的方式。在文件存儲中,數據以文件的形式存儲在文件系統中,可以通過文件名或路徑來進行訪問和管理。文件存儲適用于存儲相對較小的文件,并提供了對文件的完整控制和管理,例如讀取、寫入、修改和刪除文件。常見的文件存儲如NFS。其最常見的用途就是可以多用戶同時掛載后,同時進行讀寫操作。

為什么我們需要文件存儲,有塊存儲不就夠了嗎?

在回答這個問題之前,讓我們先討論一下數據庫。在數據庫等系統中,無論是主從還是多主架構,都面臨著數據不一致的問題。主從架構下,備庫的數據會延遲于主庫,而多主從架構下,如果數據是分布式存放的,則請求只能發送到相應的節點,如果是非分布式存放的,則會有多份數據,導致集群的整體利用率不高。

試想一下,如果我們能將數據只存放一份,其在本質上就解決了在不同節點上數據不一致的問題,我們可以采用類似NFS的架構,將一個目錄映射到多個數據庫節點上,而多個數據庫實例實際上請求的都是同一份數據原文件。此時利用的就是文件存儲能支持多用戶同時掛載和讀寫。

塊存儲是否就不支持多用戶同時讀寫了?

塊存儲也支持多用戶同時讀寫,但是需要通過適當的權限控制和管理來確保數據的一致性和安全性,也就是說需要自行解決數據一致性問題。

  • 塊存儲塊存儲是一種以塊(通常是固定大小的數據塊)為單位進行數據存儲的方式。在塊存儲中,數據以塊的形式存儲在獨立的存儲設備上,每個塊都有唯一的標識符。塊存儲將數據劃分為相對較小且固定大小的塊,這些塊可以根據需要進行讀取、寫入和修改。塊存儲適用于需要隨機讀寫訪問的應用,如數據庫、虛擬機和操作系統。塊存儲可以理解為一個磁盤或分區,在linux 系統中此類設備被映射為一個 塊類型的文件。如下圖中的類型為b(block)

ll /dev/sda
brw-rw---- 1 root disk 8, 0 Nov 13 17:53 /dev/sda

而對塊設備如果用mkfs.xfs 或 mkfs.ext4 等命令執行文件系統初始化后就是一個文件系統設備。

  • 對象存儲?對象存儲以對象形式存儲數據,每個對象都有唯一的標識符。對象通常包含數據本身以及與其相關的元數據。云存儲服務如Amazon S3和OpenStack Swift就是典型的對象存儲系統。當你上傳照片到云相冊或者將文件存儲到云端時,這些數據都會以對象的形式存儲。每個對象都有一個唯一的標識符,比如URL或者API密鑰。

ceph自身是一個對象存儲,其能提供對象存儲我們能理解,為什么其還能提供塊存儲和文件存儲了?

通用的 RADOS 存儲結構和可靠的分布式存儲技術。通過統一接口可以更好地處理各種數據類型,以及整合其他存儲服務的優勢,從而提供塊存儲和對象存儲和文件存儲三種存儲功能。

3 、 Ceph的邏輯分層

Ceph 官方給的邏輯架構如下圖

可以總結為兩部分,一個集群一個客戶端。 集群就是底層的RADOS集群。客戶端就是在RADOS集群之上,利用librados 編程接口的進一步抽象。其本質都是RADOS集群的客戶端。

3.1、客戶端

如果說RADOS集群是一個具備自我修復等特性,提供了一個可靠、自動、智能的分布式存儲,那用戶怎么使用他了?因此RADOS提供了供librados庫,允許應用程序直接訪問,支持C/C++、Java和Python等語言。那是否有一個librados庫就可以被用戶直接訪問到了,理論上只需要調用其庫就可以使用DADOS集群。但是又有多少人有能力直接用編程能力去訪問RADOS集群了。

因此在librados庫基礎上做了進一步的封裝,針對主流的塊存儲使用提供了?RBD,針對文件存儲使用提供Ceph FS?,基于當前流行的RESTful協議的網關,并且兼容S3和Swift,提供了radosgw?。因為無論是librados、rdb radosgw Ceph fs 都是RADOS的客戶端。

3.2 、RADOS集群

一個最小化的RADOS集群只有三個組件?MON?和MGR?和?OSD?,其系統架構如下

看到這可能有小伙伴會說 不對把,不是應該還有mds嗎?先說mds,其主要功能就給文件存儲提供元數據索引的,如果我們Ceph集群不需要文件存儲,就不需要mds組件了。

3.3 RADOS集群組件

  • mon: Ceph Monitor是負責監視整個群集的運行狀況的,這些信息都是由維護集群成員的守護程序來提供的,如各個節點之間的狀態、集群配置信息。Ceph monitor map包括OSD Map、PG Map、MDS Map和CRUSH等,這些Map被統稱為集群Map。這五張map可以說代表了mon的大部分功能。

  • MGR:Ceph ManagerMGR 承載了許多輔助功能,如監控、報告和資源分配。現在,Ceph Manager Daemon 更多地實現了監視、管理及一些自動化任務,包括維護集群元數據、系統故障檢測等。它可以實現跨多個 Ceph 組件的自動容災和調度,提高整個系統的穩定性和可靠性。

  • OSD: OSD是Ceph的對象存儲守護進程。它負責存儲數據,處理數據復制、恢復、重新平衡,并通過檢查其他守護進程是否有故障來向Ceph Monitor提供一些監控信息。每個存儲服務器(存儲節點)運行一個或多個OSD守護進程,通常每個磁盤存儲設備對應一個OSD守護進程

總結: 一個集群需要被訪問,總需是先需要一個認證功能,認證之后將用戶的請求調度到后端真正的服務,這個過程就是mon的功能,因為其是分布式的存儲,其靠Paxos算法來保證數據一致性。為了集群的穩定,mon維護了集群的map。 mgr則更多是提供監控和輔助功能來減輕mon的負擔,osd則是數據真正的存放位置。

在上文中我們說過Ceph集群是無中心節點的分布式存儲,那其是怎么做到了?

一切的一切都是靠計算,簡單的說就是真正的數據存儲在那個osd上,其是靠計算出來,而非查詢元數據節點查詢出來的。這個計算的過程就是CRUSH算法。關于CRUSH算法我們將在后面章節來討論,這里我們了解Ceph集群的結構,下一章我們將手動部署一套最小化的Ceph集群來體驗下Ceph存儲的使用。

文章轉載自:ALEX_li88

原文鏈接:https://www.cnblogs.com/alex0815/p/17850402.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/163666.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/163666.shtml
英文地址,請注明出處:http://en.pswp.cn/news/163666.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ip_file_Hook項目解讀

程序流程 執行文件訪問攔截和 IP 地址攔截的流程: 文件訪問攔截功能: 當應用程序嘗試執行文件操作,例如打開文件,調用的是 open 或 openat 函數。 由于這兩個函數已經被重定向為自定義的版本,所以實際上調用的是 op…

基于 Flink SQL 和 Paimon 構建流式湖倉新方案

本文整理自阿里云智能開源表存儲負責人,Founder of Paimon,Flink PMC 成員李勁松在云棲大會開源大數據專場的分享。本篇內容主要分為四部分: 數據分析架構演進介紹 Apache PaimonFlink Paimon 流式湖倉流式湖倉Demo演示 數據分析架構演進 …

蝦皮數據參謀:知蝦助力商家實現數據化運營的利器

在如今競爭激烈的電商市場中,商家需要準確的數據分析來指導他們的業務決策。Shopee電商平臺的數據分析工具——蝦皮數據參謀(知蝦),為商家提供了豐富的數據分析服務,包括商品市場、銷量、價格分布、物流監控、差評監控…

ArkTS聲明式開發范式

裝飾器 用來裝飾類、結構體、方法以及變量,賦予其特殊的含義,如上述示例中 Entry 、 Component 、 State 都是裝飾器。 Component 表示這是個自定義組件; Entry 則表示這是個入口組件; State 表示組件中的狀態變量,…

最新版靈沐V3.3微信資源類小程序源碼支持流量主

源碼簡介 最新版靈沐V3.3微信資源類小程序源碼支持流量主,一套不錯的流量主變現資源下載小程序,它支持在微信、QQ和抖音平臺上運行。這次更新主要集中在全局UI設計的升級,并依然注重資源下載和激勵視頻變現的功能。另外,還新增了…

VR模擬仿真技術為司法科普建設注入更多的智慧和力量

虛擬現實(VR)技術已經逐漸滲透到各個領域,包括司法領域,在法學院教學中,VR虛擬現實和web3d開發技術的興起,讓司法教育也突破傳統教授式、演練式的教學模式,通過VR特有的沉浸式展示特點,實現了真實法庭效果的…

【Sorted Set】Redis常用數據類型: ZSet [使用手冊]

個人簡介:Java領域新星創作者;阿里云技術博主、星級博主、專家博主;正在Java學習的路上摸爬滾打,記錄學習的過程~ 個人主頁:.29.的博客 學習社區:進去逛一逛~ 目錄 ⑤Redis Zset 操作命令匯總1. zadd 添加或…

【考研數據結構代碼題7】求一元多項式之和

題目:編寫一個算法,求一元多項式之和 考綱:一元多項式的表示與相加 題型:代碼填空或算法設計 難度:★★★ 參考代碼 typedef struct node{float coef;//系數int exp;//次數struct node *next; }polynode; polynode *…

5 分鐘,開發自己的 AI 文檔助手!手把手教程

大家好,我是魚皮。 幾個月前,我自己開發過一個 AI 文檔總結助手應用。給大家簡單演示一下,首先我上傳了一個文檔,定義 1 1 等于 3: 然后把文檔喂給 AI 文檔總結助手,再向它提問,然后 AI 就回答…

登陸頁面模板

簡單好看的登陸頁面 vue項目代碼 可忽略js部分 先來個效果圖 <template><div class"login"><div class"content"><p >賬戶密碼登錄</p><div class"unit"><label class"label">用戶名</…

Hadoop學習總結(MapReduce的數據去重)

現在假設有兩個數據文件 file1.txtfile2.txt2018-3-1 a 2018-3-2 b 2018-3-3 c 2018-3-4 d 2018-3-5 a 2018-3-6 b 2018-3-7 c 2018-3-3 c2018-3-1 b 2018-3-2 a 2018-3-3 b 2018-3-4 d 2018-3-5 a 2018-3-6 c 2018-3-7 d 2018-3-3 c 上述文件 file1.txt 本身包含重復數據&…

匯編-PROTO聲明過程

64位匯編 64 模式中&#xff0c;PROTO 偽指令指定程序的外部過程&#xff0c;示例如下&#xff1a; ExitProcess PROTO ;指定外部過程&#xff0c;不需要參數.code main PROCmov ebx, 0FFFFFFFFh mov ecx,0 ;結束程序call ExitProcess ;調用外部過程main ENDP END 32位…

手把手云開發小程序-(四)-uniclould增刪改查業務開發

一&#xff0c;導入uView 在開發小程序的時候&#xff0c;我習慣使用uView這個ui庫。主要是直接用當然比自己寫省時間。 它的官網&#xff1a;uView - 多平臺快速開發的UI框架 - uni-app UI框架 (gitee.io) 導入&#xff1a; npm install uview-ui2.0.31然后按照官網進行配…

UltraCompare 23 for Mac文件對比工具

UltraCompare是一款功能強大的文件比較和合并工具&#xff0c; 以下是它的特色介紹&#xff1a; 多種文件格式支持&#xff1a;UltraCompare支持比較和合并多種文件格式&#xff0c;包括文本文件、二進制文件、office文檔、PDF文件等。 文件差異高亮顯示&#xff1a;UltraComp…

內測分發平臺的合作生態和生態效應如何

大家好&#xff0c;我是咕嚕-凱撒&#xff0c;隨著移動互聯網和智能設備的快速發展&#xff0c;越來越多的開發者和企業開始關注產品的質量和體驗。而內測分發平臺則成為了一種重要的工具&#xff0c;能夠幫助他們更好地測試、優化和推廣產品。在此過程中&#xff0c;內測分發平…

特殊企業信息輕松查詢:特殊企業基本信息查詢API的實用性探討

引言 在當今數字化時代&#xff0c;企業管理和決策往往取決于有效獲取和分析關鍵信息。對于特殊企業&#xff0c;如香港公司、社會組織、律所、事業單位、基金會和新機構&#xff0c;獲取準確、及時的基本信息至關重要。在這個背景下&#xff0c;特殊企業基本信息查詢API正逐漸…

〔004〕虛幻 UE5 像素流部署

? 目錄 ? 啟用像素流插件? 打包項目? 下載環境包? 手動下載? 安裝信令服務器環境? 啟動信令服務器? 設置啟動參數? 啟動程序? 網頁運行? 開啟觸控界面? 啟用像素流插件 打開虛幻啟動程序,選擇 編輯 后點擊 插件在插件列表中搜索 pixel streaming 關鍵字,勾選后重…

springcloud宿舍管理系統源碼

開發技術&#xff1a; jdk1.8&#xff0c;mysql5.7&#xff0c;idea&#xff0c;vscode springcloud springboot mybatis vue elementui 功能介紹&#xff1a; 用戶端&#xff1a; 登錄注冊 首頁展示輪播&#xff0c;公告&#xff0c;報修&#xff0c;晚歸登記&#xff0…

提升抖音小店服務分:優化策略與實操指南

抖音小店服務分是抖音平臺為評估和提升小店服務質量而設立的一項指標。它通過對小店在訂單管理、售后服務、物流管理等多個方面的表現進行評估和計算&#xff0c;為小店提供一個可衡量的服務質量指標。提高抖音小店服務分數對于增加用戶信任度、提升銷售額和增加曝光度都非常重…

第十七章 Java鏈接數據庫

目錄 1.登錄MySQL 2.創建庫和表 3.使用Java命令查詢數據庫操作 4.右擊——點擊“Build Path”——選擇第四個——找到包的位置——導入成功 一、創建java項目 1.注冊驅動 2.獲取鏈接 3.獲取statment對象 4.執行sql語句返回結果集 5.遍歷結果集 6.關閉連接釋放資源 封裝…