Ceph存儲池詳解

Ceph 存儲池(Pool)詳解

Ceph 的 存儲池(Pool) 是邏輯存儲單元,用于管理數據的分布、冗余和訪問策略。它是 Ceph 存儲集群的核心抽象,支持 對象存儲(RGW)、塊存儲(RBD)和文件存儲(CephFS)。以下是對象池的全面解析:


1. 存儲池的核心概念

(1) 什么是存儲池?

  • 邏輯分區:存儲池是 Ceph 集群中的虛擬存儲分區,類似傳統存儲的“卷”或“LUN”。
  • 數據隔離:不同池可配置不同的副本策略、糾刪碼(EC)規則、PG 數量等。
  • 多用途:一個 Ceph 集群可創建多個池,分別用于 RGW、RBD、CephFS 等。

(2) 存儲池的關鍵屬性

屬性說明
pool_id池的唯一標識符,由 Monitor 分配。
pg_num歸置組(PG)數量,影響數據分布均衡性。
pgp_num用于 CRUSH 計算的 PG 數量(通常等于 pg_num)。
size / min_size副本數(如 size=3 表示 3 副本)。
crush_rule定義數據分布規則(如跨機架、跨主機)。
erasure_code_profile糾刪碼配置(如 k=4,m=2)。
application標記池的用途(如 rbdrgwcephfs)。

2. 存儲池的類型

(1) 副本池(Replicated Pool)

  • 特點:每個對象存儲多份完整副本(默認 size=3)。
  • 優勢:高可靠性,恢復速度快。
  • 適用場景:高性能塊存儲(RBD)、熱數據對象存儲。
  • 示例
    ceph osd pool create rbd_pool 128 128 replicated
    ceph osd pool application enable rbd_pool rbd
    

(2) 糾刪碼池(Erasure Coded Pool)

  • 特點:將對象拆分為 k 個數據塊 + m 個校驗塊,空間利用率高(如 k=4,m=2 僅需 1.5x 空間)。
  • 劣勢:恢復速度慢,計算開銷大。
  • 適用場景:冷數據歸檔、低成本對象存儲。
  • 示例
    ceph osd erasure-code-profile set ec_profile k=4 m=2
    ceph osd pool create ec_pool 128 128 erasure ec_profile
    

3. 存儲池的底層機制

(1) 放置組(PG)

  • PG 的作用

    • 將對象分組管理,減少 CRUSH 計算開銷。
    • 每個 PG 映射到一組 OSD(如 [osd.1, osd.5, osd.9])。
  • PG 數量公式

    pg_num = OSD總數 * 100 / 副本數或者糾刪碼k+m (結果取2的n次冪)

    • 例如:100 個 OSD、3 副本 → pg_num=1024

(2) CRUSH 規則

  • 定義數據分布策略
    • 控制 PG 如何映射到 OSD(如跨機架、跨主機)。
  • 示例規則
    ceph osd crush rule create-replicated replicated_rule default host
    

(3) 數據存儲流程

  1. 客戶端寫入對象 → 計算 object_id 的哈希值 → 確定所屬 PG。
  2. CRUSH 算法 根據 PG ID 和規則 → 選擇目標 OSD 列表(如 3 副本)。
  3. 數據寫入 OSD,元數據由 Monitor 記錄。

4. 存儲池的管理操作

(1) 創建與配置

# 創建副本池
ceph osd pool create my_pool 128 128 replicated# 創建糾刪碼池
ceph osd erasure-code-profile set ec_profile k=4 m=2
ceph osd pool create ec_pool 128 128 erasure ec_profile# 設置池屬性
ceph osd pool set my_pool size 3     # 修改副本數
ceph osd pool set my_pool pg_num 256 # 調整 PG 數量

(2) 監控與統計

# 查看所有池
ceph osd pool ls [detail]# 查看池用量
ceph df# 查看 PG 分布
ceph pg dump | grep <pool-id>

(3) 刪除與清理

# 刪除池(需確認兩次)
ceph osd pool delete my_pool my_pool --yes-i-really-really-mean-it# 清理殘留數據
rados -p my_pool purge --yes-i-really-mean-it

5. 存儲池的最佳實踐

(1) PG 數量優化

  • 每個 OSD 承載約 100 PG(避免過多或過少)。
  • 使用 pg_autoscaler 自動調整:
    ceph mgr module enable pg_autoscaler
    ceph osd pool set my_pool pg_autoscale_mode on
    

(2) 性能調優

  • 副本池:優先使用 SSD 存儲 WAL/DB 日志。
  • 糾刪碼池:為 EC 計算預留額外 CPU 核(每節點 2-4 核)。

(3) 故障域設計

  • 跨機架/主機分布
    ceph osd crush rule create-replicated replicated_rule default rack
    

6. 常見問題

Q1: 池的 PG 數量設置錯誤如何修復?

  • 擴容 PG
    ceph osd pool set my_pool pg_num 256
    ceph osd pool set my_pool pgp_num 256
    
  • 注意:減少 PG 數量通常不支持。

Q2: 如何遷移數據到新池?

  • 使用 rados cppoolrbd migration(塊存儲):
    rados cppool old_pool new_pool
    

Q3: 池的副本數可以動態修改嗎?

  • 可以,但需觸發數據遷移:
    ceph osd pool set my_pool size 3
    

總結

  • 對象池是 Ceph 的邏輯存儲單元,支持副本和糾刪碼兩種冗余策略。
  • PG 和 CRUSH 規則 共同決定數據分布,需合理配置以避免熱點。
  • Monitor、OSD、MGR 協同維護池,分別負責元數據、存儲和自動化管理。
  • 最佳實踐:根據負載類型選擇池類型,監控 PG 分布,優化故障域。

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

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

相關文章

使用 Docker 部署 PostgreSQL

通過 Docker 部署 PostgreSQL 是一種快速、高效的方式&#xff0c;適用于開發和測試環境。 步驟 1&#xff1a;拉取 PostgreSQL 鏡像 運行以下命令從 Docker Hub 拉取最新的 PostgreSQL 鏡像&#xff1a; docker pull postgres 如果需要其他的鏡像&#xff0c;可以指定版本…

P1886 滑動窗口 /【模板】單調隊列【題解】

P1886 滑動窗口 /【模板】單調隊列 題目描述 有一個長為 nnn 的序列 aaa&#xff0c;以及一個大小為 kkk 的窗口。現在這個窗口從左邊開始向右滑動&#xff0c;每次滑動一個單位&#xff0c;求出每次滑動后窗口中的最小值和最大值。 例如&#xff0c;對于序列 [1,3,?1,?3,5,3…

河南萌新聯賽2025第(五)場:信息工程大學補題

文章目錄[TOC](文章目錄)前言A.宇宙終極能量調和與多維時空穩定性驗證下的基礎算術可行性研究B.中位數C.中位數1F.中位數4G.簡單題H.簡單題I.Re:從零開始的近世代數復習&#xff08;easy&#xff09;K.狂飆追擊L.防k題前言 這次萌新聯賽考到了很多數學知識 A.宇宙終極能量調和…

SuperMap GIS基礎產品FAQ集錦(20250804)

一、SuperMap iServer 問題1&#xff1a;iServer的名稱和logo怎么自定義&#xff1f; 11.3.0 【解決辦法】參考&#xff1a;https://blog.csdn.net/supermapsupport/article/details/144744640 問題2&#xff1a;iServer 刷新工作空間&#xff0c;當數據庫是 PostGIS 時&#x…

AWS CloudFormation批量刪除指南:清理Clickstream Analytics堆棧

概述 在AWS環境管理中,經常會遇到需要批量刪除CloudFormation堆棧的情況。本文記錄了一次完整的Clickstream Analytics堆棧清理過程,包括遇到的問題和解決方案,希望能為其他開發者提供參考。 背景 我們的AWS賬戶中部署了多個Clickstream Analytics解決方案的CloudFormati…

redis中分布式鎖的應用

我們之前講了秒殺模塊的實現&#xff0c;使用了sychronized互斥鎖&#xff0c;但是在集群模式下因為不同服務器有不同jvm&#xff0c;所以synchronized互斥鎖失效了。 redis實現秒殺超賣問題的解決方案&#xff1a;(僅限于單體項目)-CSDN博客 這時就要找到一個多臺服務器都能…

【科研繪圖系列】R語言繪制微生物豐度和基因表達值的相關性網絡圖

文章目錄 介紹 加載R包 數據下載 導入數據 數據預處理 畫圖 系統信息 參考 介紹 【科研繪圖系列】R語言繪制微生物豐度和基因表達值的相關性網絡圖 加載R包 library(tidyverse) library(ggsignif) library(RColorBrewer) library(dplyr) library(reshape2) library(grid

Pycharm現有conda環境有對應env,但是添加后沒反應

一、系統環境 二、異常現象 Pycharm現有conda環境有對應env&#xff1a; anaconda3的envs下也確實存在這個環境&#xff1a; 但是添加后沒反應&#xff08;點擊確認后&#xff0c;yolov7環境沒有出現在列表中&#xff09;&#xff1a; 但是我之前在別的機子添加是沒問題的。 …

Git常用指令大全:從入門到精通

Git 的常用指令&#xff0c;分為基礎操作、分支管理、遠程協作、撤銷操作和高級功能五個部分&#xff0c;并附上實用示例&#xff1a;一、基礎操作&#xff08;必會&#xff09;初始化倉庫 git init # 在當前目錄創建新倉庫克隆遠程倉庫 git clone https://github.com/user/rep…

Redis (REmote DIctionary Server) 高性能數據庫

Redis {REmote DIctionary Server} 高性能數據庫1. What is Redis?1.1. 基于內存的數據存儲2. Install Redis on Linux3. Starting and stopping Redis in the background3.1. systemctl3.2. service 4. Connect to Redis5. 退出 Redis 的命令行界面 (redis-cli)6. redis-serv…

MySQL中的DML(二)

DML(Data Manipulation Language) : 數據庫操作語言&#xff0c;對數據庫中表的數據進行增刪改操作。 創建student表&#xff1a; CREATE DATABASE test; use test; CREATE TABLE student (id int,name varchar(255),address varchar(255),city varchar(255) );INSERT INTO stu…

linux 主機驅動(SPI)與外設驅動分離的設計思想

一、 主機驅動與外設驅動分離Linux中的SPI、I2c、USB等子系統都利用了典型的把主機驅動和外設驅動分離的想法&#xff0c;讓主機端負責產生總線上的傳輸波形&#xff0c;而外設端只是通過標準的API來讓主機端以適當的波形訪問自身。因此這里涉及了4個軟件模塊&#xff1…

如何生成.patch?

文章目錄 ??方法 1:使用 `git format-patch`(推薦)? ??步驟?? ?方法 2:使用 `diff`命令(適用于非 Git 項目)? ??方法 3:使用 `git diff`(生成未提交的變更)? ?方法 4:使用 `quilt`(適用于大量補丁管理) ?如何提交補丁給上游項目?? ?總結?? 在 L…

【計算機網絡 | 第6篇】計算機體系結構與參考模型

文章目錄計算機體系結構與參考模型分層思想&#x1f342;常見的3種模型&#xff08;網絡體系結構&#xff09;&#x1f426;?&#x1f525;TCP/IP體系結構各層包含的主要協議&#x1f95d;每層所解決的主要問題&#x1f914;層次間的交互規則&#x1f95d;實體與對等實體協議服…

Autoware Universe 感知模塊詳解 | 第一節 感性認識多源傳感器標定

傳感器與感知模塊 在基于規則的自動駕駛系統中&#xff0c;感知模塊&#xff0c;承擔著理解車體周圍環境信息的重要職責。它通過融合多種傳感器數據&#xff0c;與定位模塊共同為規劃與控制模塊提供準確、系統化的輸入信息。正如人可以通過眼睛觀察周圍的環境&#xff08;盲人也…

docker搭建java運行環境(java或者springboot)

目錄1. 創建測試代碼2. 編譯打包3. 代碼環境運行使用普通運行方式使用docker掛載項目&#xff08;長期運行&#xff09;1. 創建 Dockerfile2. 構建并后臺運行使用docker swram實現零停機更新&#xff08;推薦&#xff09;1. 初始化swarm2. 創建 Dockerfile3. 使用Dockerfile 構…

哈希表特性與unordered_map/unordered_set實現分析

目錄 一、哈希表核心特性總結 1.開放地址法 2.鏈地址法 二、unordered_map/unordered_set實現要點分析 1. 哈希表核心實現(HashTable2.h) (1) 哈希函數處理 (2) 鏈地址法實現 (3) 迭代器設計 (4) hashtable設計 2. unordered_map實現要點 3. unordered_map實現要點 一…

生產環境sudo配置詳細指南

目錄 1. 語法格式 2. 配置示例 3. 使用 /etc/sudoers.d/ 目錄管理&#xff08;推薦&#xff09; 4. 基礎配置&#xff1a;用戶權限管理 4.1 ??添加用戶到sudo組 ??4.2 驗證用戶組信息 5. sudo日志配置 5.1 修改sudoers配置文件 5.2 創建日志目錄與權限設置 6. Su…

CSS動態視口單位:徹底解決移動端適配頑疾,告別布局跳動

你是否曾被這些問題困擾&#xff1a; 移動端頁面滾動時&#xff0c;地址欄收縮導致頁面高度突變&#xff0c;元素錯位&#xff1f;100vh在移動設備上實際高度超出可視區域&#xff1f;全屏彈窗底部總被瀏覽器UI遮擋&#xff1f; 這些痛點背后都是傳統視口單位的局限——無法響應…

【P27 4-8】OpenCV Python——Mat類、深拷貝(clone、copyTo、copy)、淺拷貝,原理講解與示例代碼

P27 4-8 1 Mat結構體2 深拷貝VS淺拷貝3 代碼示例1 Mat結構體 2 深拷貝VS淺拷貝 只拷貝了頭部&#xff0c;header&#xff0c;&#xff0c;但是data部分是共用的&#xff0c;速度非常快&#xff1b; 缺點&#xff0c;任意一個修改&#xff0c;另一個data跟著變&#xff0c;這就是…