通俗易懂的講解下Ceph的存儲原理

Ceph存儲原理解析

要理解 Ceph 的存儲原理,我們可以用一個 “分布式倉庫” 的比喻來拆解 —— 把 Ceph 想象成一個由多個 “倉庫管理員”(硬件節點)共同打理的大型倉庫,能高效存儲、管理海量貨物(數據),還能保證貨物不丟、不壞、隨時能取。

一、先明確 Ceph 的核心目標:解決 “海量數據怎么存” 的痛點

傳統存儲(比如單臺服務器的硬盤)有三個致命問題:

  • 1.容量有限:硬盤滿了就沒法存;
  • 2.不安全:硬盤壞了數據就丟了;
  • 3.速度慢:大量數據同時讀取時卡頓。.

Ceph 的核心思路就是 “把多臺服務器的硬盤拼起來,用一套規則統一管理”,既解決容量問題,又通過 “多份備份” 保證安全,還能 “并行讀寫” 提升速度。

二、Ceph 的核心組件:3 個 “關鍵角色”

就像倉庫需要 “管理員”“貨架”“搬運工”,Ceph 也有三個核心組件,各司其職:

組件角色比喻(倉庫場景)實際作用
MON(監控節點)倉庫總控室監控整個集群狀態(比如 “哪個貨架壞了”“還有多少空位”),給其他組件發指令,保證集群不亂。
OSD(存儲節點)貨架 + 管理員實際存數據的 “硬盤載體”(每臺服務器的硬盤對應一個 OSD),同時負責數據的備份、修復。
PG(Placement Group)貨物分類標簽把數據 “打包分組”,避免數據混亂(比如 “所有家電放一組,所有零食放一組”),方便管理和查找。

三、Ceph 存儲數據的 “3 步魔法”

從 “數據” 到 “安全存在硬盤里”,我們以存一張照片(比如 vacation.jpg)為例,看 Ceph 是怎么把它存到集群里的:
第 1 步:給數據 “貼標簽”—— 計算 PG
注:Ceph 不會直接把照片丟給某個硬盤,而是先給數據 “分類”:

  • 1.給照片算一個唯一的 “身份證號”(用哈希算法對文件名 / 路徑計算,得到一個數字);
  • 2.根據這個 “身份證號”,分配一個 PG 分組(比如分到 “PG-10” 這個組)。

👉 作用:比如一個集群有 1000 個硬盤(OSD),如果直接給每個數據分配硬盤,管理成本極高;但先分 100 個 PG,每個 PG 對應 10 個硬盤,就簡單多了。

第 2 步:給 PG “找貨架”——CRUSH 算法分配 OSD
Ceph 有個 “智能分配規則” 叫 CRUSH 算法,它根據兩個關鍵信息給 PG 找 “存放的貨架(OSD)”:

  • 1.集群狀態:比如 “哪個 OSD 有空位”“哪個 OSD 沒壞”;
  • 2.存儲策略:比如 “這組數據要存 3 份備份”“不能把備份存在同一臺服務器上(避免服務器斷電全丟)”。

比如 CRUSH 會把 “PG-10” 分配給 3 個不同服務器的 OSD(比如 OSD-1、OSD-5、OSD-9),保證數據有 3 份備份,且不會因為一臺服務器壞了就丟數據。

第 3 步:數據 “寫入 + 備份”——OSD 之間同步

  • 1.數據先傳到第一個 OSD(比如 OSD-1),OSD-1 把數據存到自己的硬盤里;
  • 2.OSD-1 再把數據同步給另外兩個 OSD(OSD-5、OSD-9),確保 3 份數據完全一致;
  • 3.只有當 3 個 OSD 都回復 “存好了”,Ceph 才會告訴用戶 “數據存成功了”。

👉 安全保障:哪怕 OSD-1 壞了,OSD-5 和 OSD-9 里還有備份,Ceph 會自動再找一個新的 OSD 補全 3 份,數據永遠不會丟。

四、Ceph 怎么 “讀數據”?—— 快速找到并返回

當你要讀這張照片時,Ceph 只需要 3 步:

  • 1.用同樣的哈希算法,根據文件名算出 “身份證號”,找到對應的 PG(還是 PG-10);
  • 2.通過 CRUSH 算法,知道 PG-10 存在 OSD-1、OSD-5、OSD-9 上;
  • 3.從 “最近 / 沒壞” 的 OSD 里讀數據(比如 OSD-1 離得最近,就從它那讀),返回給用戶。

👉 速度保障:不用遍歷所有硬盤,直接定位到目標 OSD,還能選最近的,讀取速度快。

五、Ceph 怎么 “修壞的貨架”?—— 自動修復,不用人工

如果某個 OSD 壞了(比如硬盤故障):

  • 1.MON 監控到 “OSD-1 離線了”,立刻告訴整個集群;
  • 2.CRUSH 算法發現 “PG-10 只剩 2 份備份了”,就找一個新的空閑 OSD(比如 OSD-12);
  • 3.讓 OSD-5(或 OSD-9)把數據復制到 OSD-12,補全 3 份備份;
  • 4.修復完成后,集群又回到 “3 份備份” 的安全狀態,全程不用人工干預。

六、Ceph 能存 “不同類型的貨物”——3 種存儲模式

Ceph 不止能存文件(比如照片、文檔),還能存 “塊設備”(比如給虛擬機當硬盤)、“對象”(比如云存儲里的圖片),本質是在上面的核心原理基礎上,加了不同的 “接口”:

  • 對象存儲(RGW):給云服務用(比如存手機上傳的照片),按 “對象”(數據 + 元信息)存儲;
  • 塊存儲(RBD):給虛擬機 / 物理機當硬盤用(比如給服務器加一塊 “虛擬硬盤”);
  • 文件存儲(CephFS):像本地文件夾一樣用(比如服務器掛載一個 “共享文件夾”,多臺機器能同時讀寫)。

總結

Ceph 的核心邏輯Ceph 本質是 “用 CRUSH 算法把數據分組(PG),分配到多個 OSD 上存多份備份,再用 MON 監控集群狀態,自動修復故障”。它解決了傳統存儲 “容量小、不安全、速度慢” 的問題,所以能支撐海量數據場景(比如云服務、大數據存儲)。

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

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

相關文章

軟件測試小結(1)

一、什么是測試?1.1 生活中常見的測試例如去商場買衣服:①、選擇一件符合審美的衣服 -> 外觀測試;②、穿上身上試試是否合身 -> 試穿測試;③、 看看衣服的材料是否純棉 -> 材料測試;④、 詢問衣服的價格 ->…

Python未來3-5年技術發展趨勢分析:從AI到Web的全方位演進

Python作為全球最流行的編程語言之一,在開發者社區中占據核心地位。其簡潔語法、豐富庫生態和跨領域適用性,使其在AI、Web開發、數據科學等領域持續領先。本文基于當前技術演進趨勢(如2023-2024年的開源項目、社區討論和行業報告)…

【ComfyUI】SDXL Turbo一步完成高速高效的圖像生成

今天演示的案例是一個基于 ComfyUI 與 Stable Diffusion XL Turbo 的圖生圖工作流。整體流程通過加載輕量化的 Turbo 版本模型,在文本編碼與調度器的配合下,以極快的推理速度完成從提示詞到高質量圖像的生成。 配合演示圖可以直觀感受到,簡潔…

基于 GPT-OSS 的在線編程課 AI 助教追問式對話 API 開發全記錄

本文記錄了如何在 3 天內使用 GPT-OSS 開源權重搭建一個 在線編程課 AI 助教追問式對話 API&#xff0c;從需求分析、數據準備到微調與部署全流程實戰。 1?? 需求與指標 回答準確率 ≥ 95%響應延遲 < 1 秒支持多學生并發提問 2?? 數據準備 收集課程問答對清理無效數據…

YOLO v11 目標檢測+關鍵點檢測 實戰記錄

流水賬記錄一下yolo目標檢測 1.搭建pytorch 不做解釋 看以往博客或網上搜都行 2.下載yolo源碼 &#xff1a; https://github.com/ultralytics/ultralytics 3.樣本標注工具&#xff1a;labelme 自己下載 4.準備數據集 4.1 新建一個放置數據集的路徑4.2 構建訓練集和測試集 運行以…

uniApp 混合開發全指南:原生與跨端的協同方案

uniApp 作為跨端框架&#xff0c;雖能覆蓋多數場景&#xff0c;但在需要調用原生能力&#xff08;如藍牙、傳感器&#xff09;、集成第三方原生 SDK&#xff08;如支付、地圖&#xff09; 或在現有原生 App 中嵌入 uniApp 頁面時&#xff0c;需采用「混合開發」模式。本文將系統…

【大模型】使用MLC-LLM轉換和部署Qwen2.5 0.5B模型

目錄 ■準備工作 下載模型 安裝依賴 安裝基礎依賴 安裝mlc-llm ■權重轉換 ■生成配置文件 ■模型編譯 GPU版本編譯 CPU版本編譯 ■啟動服務 啟動GPU服務 啟動CPU服務 ■服務測試 ■擴展 優化量化版本(可選,節省內存) INT4量化版本 調整窗口大小以節省內存…

云計算學習100天-第43天-cobbler

目錄 Cobbler 基本概念 命令 搭建cobbler 網絡架構 Cobbler 基本概念 Cobbler是一款快速的網絡系統部署工具&#xff0c;比PXE配置簡單 集中管理所需服務&#xff08;DHCP、DNS、TFTP、WEB&#xff09; 內部集成了一個鏡像版本倉庫 內部集成了一個ks應答文件倉庫 提供…

接口測試:如何定位BUG的產生原因

1小時postman接口測試從入門到精通教程我們從在日常功能測試過程中對UI的每一次操作說白了就是對一個或者多個接口的一次調用&#xff0c;接口的返回的內容(移動端一般為json)經過前端代碼的處理最終展示在頁面上。http接口是離我們最近的一層接口&#xff0c;web端和移動端所展…

GPIO的8種工作方式

GPIO的8種工作方式&#xff1a;一、4 種輸入模式1.1 Floating Input 浮空輸入1.2 Pull-up Input 上拉輸入1.3 Pull-down Input 下拉輸入1.4 Analog Input 模擬輸入二、4種輸出模式2.1 General Push-Pull Output 推挽輸出2.2 General Open-Drain Output 開漏輸出2.3…

LeetCode算法日記 - Day 29: 重排鏈表、合并 K 個升序鏈表

目錄 1. 重排鏈表 1.1 題目解析 1.2 解法 1.3 代碼實現 2. 合并 K 個升序鏈表 2.1 題目解析 2.2 解法 2.3 代碼實現 1. 重排鏈表 143. 重排鏈表 - 力扣&#xff08;LeetCode&#xff09; 給定一個單鏈表 L 的頭節點 head &#xff0c;單鏈表 L 表示為&#xff1a; L…

算法模板(Java版)_前綴和與差分

ZZHow(ZZHow1024) &#x1f4a1; 差分是前綴和的逆運算。 前綴和 &#x1f4a1; 前綴和作用&#xff1a;快速求出 [l, r] 區間的和。 一維前綴和 例題&#xff1a;AcWing 795. 前綴和 import java.util.Scanner;public class Main {public static void main(String[] args)…

openssl使用SM2進行數據加密和數據解密

一、準備工作 1. 安裝依賴 sudo apt-get update sudo apt-get install libssl-dev2. 確認 OpenSSL 版本 openssl version如果是 1.1.1 或 3.0&#xff0c;就支持 SM2/SM3/SM4。二、C 語言示例代碼 這個程序會&#xff1a; 生成 SM2 密鑰對使用公鑰加密一段明文使用私鑰解密恢復…

用滑動窗口與線性回歸將音頻信號轉換為“Token”序列:一種簡單的音頻特征編碼方法

在深度學習和語音處理領域&#xff0c;如何將原始音頻信號有效地表示為離散的“Token”序列&#xff0c;是語音識別、音頻生成等任務中的關鍵問題。常見的方法如Mel頻譜圖向量量化&#xff08;VQ&#xff09;、wav2vec等已經非常成熟&#xff0c;但這些模型通常依賴復雜的神經網…

Vue開發準備

vs code VSCode的下載地址https://code.visualstudio.com/Download Node.js node.js的下載地址 https://nodejs.org/zh-cn/download 注意&#xff1a;nodejs安裝路徑不要和vscode安裝到同一個文件夾&#xff0c;兩個應用分別裝到兩個不同的文件夾 npm config set cache &q…

QT6(QFileSystemModel和QTreeView)

QT6QFileSystemModel和QTreeView QFileSystemModel為本機的文件系統提供一個模型&#xff0c;QFileSystemModelt和QTreeView結合使用&#xff0c;可以用目錄樹的形式顯示本機的文件系統&#xff0c;如同Windows的資源管理器一樣使用QFileSystemModel提供的接口函數&#xff0c;…

【開題答辯全過程】以 基于Spring Boot的房屋租賃系統的設計與實現為例,包含答辯的問題和答案

個人簡介一名14年經驗的資深畢設內行人&#xff0c;語言擅長Java、php、微信小程序、Python、Golang、安卓Android等開發項目包括大數據、深度學習、網站、小程序、安卓、算法。平常會做一些項目定制化開發、代碼講解、答辯教學、文檔編寫、也懂一些降重方面的技巧。感謝大家的…

構建下一代智能金融基礎設施

1. 行業背景&#xff1a;從數字支付到可編程金融的范式躍遷全球數字支付市場正以萬億美元的規模持續擴張&#xff0c;但其底層系統仍受限于傳統金融的清算、結算延遲和高昂的中間成本。盡管互聯網技術提升了支付的便捷性&#xff0c;但其核心仍是中心化賬戶體系的延伸。Web3 技…

【C++】深入解析C++嵌套依賴類型與typename關鍵字

什么是嵌套依賴類型&#xff1f;嵌套依賴類型&#xff08;Nested Dependent Type&#xff09;是指在一個模板中&#xff0c;一個類型名稱依賴于模板參數&#xff0c;并且是該模板參數內部的嵌套類型。具體來說&#xff0c;當一個類型滿足以下兩個條件時&#xff0c;它就是嵌套依…

管網信息化監測主要的內容

管網信息化監測是指通過現代信息技術手段對管網系統進行實時監控和數據采集的管理方式。其背景源于城市化進程加快以及基礎設施建設規模不斷擴大&#xff0c;傳統的管網管理模式已無法滿足現代化需求。管網信息化監測主要內容包括以下幾個方面&#xff1a;█管網運行狀態監測&a…