ceph中的Pools、PGs和OSDs介绍(tmp)

2023-11-01

 

 

image

How are Placement Groups used ?

A placement group (PG) aggregates objects within a pool because tracking object placement and object metadata on a per-object basis is computationally expensive–i.e., a system with millions of objects cannot realistically track placement on a per-object basis.

ditaa-1fde157d24b63e3b465d96eb6afea22078c85a90.png

The Ceph client will calculate which placement group an object should be in. It does this by hashing the object ID and applying an operation based on the number of PGs in the defined pool and the ID of the pool. See Mapping PGs to OSDs for details.

The object’s contents within a placement group are stored in a set of OSDs. For instance, in a replicated pool of size two, each placement group will store objects on two OSDs, as shown below.

ditaa-3c86866fb6edc99dad6ccf51e25e536806f0b079.png

Should OSD #2 fail, another will be assigned to Placement Group #1 and will be filled with copies of all objects in OSD #1. If the pool size is changed from two to three, an additional OSD will be assigned to the placement group and will receive copies of all objects in the placement group.

Placement groups do not own the OSD, they share it with other placement groups from the same pool or even other pools. If OSD #2 fails, the Placement Group #2 will also have to restore copies of objects, using OSD #3.

When the number of placement groups increases, the new placement groups will be assigned OSDs. The result of the CRUSH function will also change and some objects from the former placement groups will be copied over to the new Placement Groups and removed from the old ones.

 

存储池为了提供了一些额外的功能,包括:

  • 复制: 你可以设置一个对象期望的副本数量。典型配置存储一个对象和一个它的副本(如 size = 2),但你可以更改副本的数量。
  • 配置组: 你可以设置一个存储池的配置组数量。典型配置在每个 OSD 上使用大约 100 个归置组,这样,不用过多计算资源就得到了较优的均衡。设置多个存储池的时候,要注意为这些存储池和集群设置合理的配置组数量。
  • CRUSH规则:当你在存储池里存数据的时候,映射到存储池的 CRUSH 规则集使得 CRUSH 确定一条规则,用于集群内主对象的归置和其副本的复制。你可以给存储池定制 CRUSH 规则。
  • 快照: 你用 ceph osd pool mksnap 创建快照的时候,实际上创建了一小部分存储池的快照。
  • 设置所有者:你可以设置一个用户 ID 为一个存储池的所有者。

 

When creating a new pool with:

ceph osd pool create {pool-name} pg_num

it is mandatory to choose the value of pg_num because it cannot be calculated automatically. Here are a few values commonly used:

  • Less than 5 OSDs set pg_num to 128
  • Between 5 and 10 OSDs set pg_num to 512
  • Between 10 and 50 OSDs set pg_num to 4096
  • If you have more than 50 OSDs, you need to understand the tradeoffs and how to calculate the pg_num value by yourself
  • For calculating pg_num value by yourself please take help of pgcalc tool

 

 

一个配置组(PG)聚集了一系列的对象至一个组,并且映射这个组至一系列的OSD。在每一个对象的基础上追踪对象的配置和对象的元数据在计算上是十分昂贵的–比如,拥有上百万对象的系统在每一个对象的基础上追踪对象的配置是不切实际的。配置组解决这一障碍性能和可伸缩性 。此外,配置组降低进程的数目时,必须跟踪每个对象的元数据量的Ceph的存储和检索数据。

Placement Groups【配置组】 _1

增加配置组的数量减少了在你的集群中每个OSD负载的变动。我们建议每个OSD约50-100配置组为了平衡内存和CPU需求和每OSD个负载。对于单个对象池,你可以用下面的公式:

image

当使用多个数据存储对象池,你需要确保你平衡每个池配置组和每个OSD配置组的数量为了让你到达在一个合理的配置组总数,为每个OSD提供合理的低变动不占用系统资源或同步操作进程太慢。

 

 

Pool, PG and CRUSH Config Reference¶

When you create pools and set the number of placement groups for the pool, Ceph uses default values when you don’t specifically override the defaults. We recommend overridding some of the defaults. Specifically, we recommend setting a pool’s replica size and overriding the default number of placement groups. You can specifically set these values when running pool commands. You can also override the defaults by adding new ones in the [global] section of your Ceph configuration file.

 

[global]

	# By default, Ceph makes 3 replicas of objects. If you want to make four 
	# copies of an object the default value--a primary copy and three replica 
	# copies--reset the default values as shown in 'osd pool default size'.
	# If you want to allow Ceph to write a lesser number of copies in a degraded 
	# state, set 'osd pool default min size' to a number less than the
	# 'osd pool default size' value.

	osd pool default size = 4  # Write an object 4 times.
	osd pool default min size = 1 # Allow writing one copy in a degraded state.

	# Ensure you have a realistic number of placement groups. We recommend
	# approximately 100 per OSD. E.g., total number of OSDs multiplied by 100 
	# divided by the number of replicas (i.e., osd pool default size). So for
	# 10 OSDs and osd pool default size = 4, we'd recommend approximately
	# (100 * 10) / 4 = 250.

	osd pool default pg num = 250
	osd pool default pgp num = 250

转载于:https://my.oschina.net/u/658505/blog/651601

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ceph中的Pools、PGs和OSDs介绍(tmp) 的相关文章

  • 操作数无法与形状 (128,) (0,) 错误一起广播

    我正在尝试实现面部识别登录系统 但出现错误 操作数无法与形状 128 0 一起广播 我不知道什么或如何解决它 这是我已实现的 view py 和 FaceDetector py 以及我从服务器收到的错误 errors Traceback m
  • DataFrame 在函数内部修改

    我面临一个我以前从未观察到的函数内数据帧修改的问题 有没有一种方法可以处理这个问题 以便初始数据帧不被修改 def test df df tt np nan return df dff pd DataFrame data 现在 当我打印时d
  • Python:记录垃圾收集器

    我有一个 python 应用程序 有一些性能问题 我想将垃圾收集器的事件 特别是何时调用 添加到我的日志中 是否可以 thanks http docs python org library gc html gc set debug http
  • Python sqlite3游标没有属性commit

    当我运行这段代码时 path Scripts wallpapers single png conn sqlite3 connect Users Heaven Library Application Support Dock desktopp
  • html 解析器 python

    我正在尝试解析一个网站 我正在使用 HTMLParser 模块 问题是我想解析第一个 a href 评论后 但我真的不知道该怎么做 所以我在文档中发现有一个函数叫做handle comment 但我还没有找到如何正确使用它 我有以下内容 i
  • 为什么我的scoped_session 引发 AttributeError: 'Session' object has no attribute 'remove'

    我正在尝试建立一个系统 将数据库操作优雅地推迟到单独的线程 以避免在 Twisted 回调期间发生阻塞 到目前为止 这是我的方法 from contextlib import contextmanager from sqlalchemy i
  • Python 正则表达式部分匹配或“hitEnd”

    我正在编写一个扫描器 因此我将任意字符串与正则表达式规则列表进行匹配 如果我可以模拟 Java hitEnd 功能 不仅知道正则表达式何时不匹配 还知道何时匹配 这将非常有用 can t匹配 当正则表达式匹配器在决定拒绝输入之前到达输入末尾
  • 在Python中创建一个新表

    我正在尝试从数控机床中提取数据 事件每毫秒发生一次 我需要过滤掉一些用管道 分隔的变量分隔符 PuTTy exe 程序生成的日志文件 我尝试阅读熊猫 但列不在同一位置 df pd read table data log sep 日志文件的一
  • 如何使用循环将十进制转换为二进制?

    我想编写一个程序 将十进制数 0 到 9 转换为二进制数 我可以编写如何使用重复除法将十进制数转换为二进制数的代码 但是 我在创建一个以二进制格式打印十进制数字 0 到 9 的循环时遇到了麻烦 这是我的代码 number 0 remaind
  • 为 Networkx 图添加标题?

    我希望我的代码创建一个带有标题的图 使用下面的代码 可以创建绘图 但没有标题 有人可以告诉我我做错了什么吗 import pandas as pd import networkx as nx from networkx algorithms
  • 网页抓取 - 前往第 2 页

    如何访问数据集的第二页 无论我做什么 它都只返回第 1 页 import bs4 from urllib request import urlopen as uReq from bs4 import BeautifulSoup as sou
  • 如何修复错误“AttributeError:‘模块’对象在 python3 中没有属性‘客户端’?

    以下是我的代码 import http h1 http client HTTPConnection www bing com 我认为没问题 但是 python 给了我以下错误 AttributeError 模块 对象没有属性 客户端 我想知
  • 一行Python和SQLite代码,为什么需要加“,”? [复制]

    这个问题在这里已经有答案了 c execute INSERT INTO numbers VALUES random randint 0 100 如果我将上面的代码更改为 c execute INSERT INTO numbers VALUE
  • Python正则表达式从字符串中获取浮点数

    我正在使用正则表达式来解析字符串中的浮点数 re findall a zA Z d d t 是我使用的代码 这段代码有问题 如果数字和任何字符之间没有空格 则不会解析该数字 例如 0 1 2 3 4 5 6 7 8 9 的预期输出为 0 1
  • 为什么“return self”返回 None ? [复制]

    这个问题在这里已经有答案了 我正在尝试获取链的顶部节点getTopParent 当我打印出来时self name 它确实打印出了父实例的名称 然而 当我回来时self 它返回 None 为什么是这样 class A def init sel
  • 使用Beam IO ReadFromPubSub模块时,可以在Python中提取带有属性的消息吗?尚不清楚是否支持

    尝试将具有存储在 PubSub 中的属性的消息拉取到 Beam 管道中 我想知道是否添加了对 Python 的支持 这就是我无法阅读它们的原因 我看到它存在于Java中 pipeline options PipelineOptions pi
  • Spyder 如何在同一线程的后台运行 asyncio 事件循环(或者确实如此?)

    我已经研究 asyncio 模块 功能几天了 因为我想将它用于我的应用程序的 IO 绑定部分 并且我认为我现在对它的工作原理有一个合理的理解 或者在至少我认为我已经理解了以下内容 任一时刻 任一线程中只能运行一个异步事件循环 一旦一切都设置
  • 获取调用者文件的绝对路径

    假设我在不同的目录中有两个文件 1 py 比如说 在C FIRST FOLDER 1 py and 2 py 比如说 在C SECOND FOLDER 2 py 文件1 py进口2 py using sys path insert 0 pa
  • 在游戏中实现功能

    我在完成这部分作业时遇到了麻烦 我必须宣布游戏的获胜者 然后输入到函数中 输入所有 if 语句后 我必须创建一个函数def playGame 这必须包括 showRules user getUserChoice computer getCo
  • 从数据集的给定日期范围中提取属于一天的数据

    我有一个数据集 日期范围为 2018 年 1 月 12 日到 8 月 3 日 其中包含一些值 维数为my df数据框是 my df shape 9752 2 每行包含半小时频率 第一行开始于2018 01 12 my df iloc 0 D

随机推荐

  • 数据库表名和列名大小写问题

    在postgresql中表名列名会自动转换为全小写 如果想大小写混用或纯大写 必须要用双引号将表 列 名引起来 而在oracle中 表名和列名会自动转换为大写 如果想大小写混用或纯小写 必须用双引号将表 列 名引起来
  • 读取文件解析文件发生的错误,已解决

    错误背景 从文件服务器上面读取zip压缩文件下来 然后解压 放指定目录下 获取所有解压后文件的路径地址保存在list集合里面 最后要求是把所有获取到zip里面的pdf文件合成为一个总pdf文件 放入压缩包 上传到文件服务器上面就完成了 发生
  • 连接池自动重新连接数据库的测试

    我对数据库重启后 是否自动重新初始化连接池进行了测试 一 使用oracle数据库 1 resin 3 0 22 无需特殊配置 自动支持 2 jboss 4 0 4 GA 需加如下配置
  • 微信小程序——页面跳转

    wx switchTab Object object 跳转到 tabBar 页面 并关闭其他所有非 tabBar 页面 wx reLaunch Object object 关闭所有页面 打开到应用内的某个页面 wx redirectTo O
  • pcl::getTranslationAndEulerAngles精度缺失问题

    pcl getTranslationAndEulerAngles的功能是根据仿射矩阵计算x y z roll pitch yaw 但发现这种计算的rpy有一定的精度问题 于是进行了实验 一个是从一个四元数 根据eulerAngles计算rp
  • mobileemumaster文件夹怎么删除_origin平台加载不出游戏怎么解决?只需删除这两个文件夹...

    EA这家公司做游戏还是挺用心的 然而它的游戏平台做得实在是垃圾 跟育碧的Uplay平台比起来提鞋都不配 要不是 战地1 只能在这个平台上玩 我是绝对不会用origin这个垃圾平台的 origin平台下载游戏速度比其他平台都要慢 游戏下载慢就
  • 转:C语言头文件下包含函数(math.h stdio.h stdlib.h string.h)

    math h常用函数 int abs int x double acos double x double asin double x double atan double x double atan2 double y double x d
  • 重学JavaScript 第三天

    1 算术运算符 加 减 乘 除 取余 取余 看某些数是否被整除 优先级 先乘除取余 后加减 小括号优先级最高 2 一元运算符 前置自增 符号 num 先让自己 加1 然后再参与运算 后置自增 num 先参与运算 再自己 加1 使用场景 用于
  • 2013年12月15日

    socket mFactory createSocket host port assertNotNull socket assertNotNull socket getOutputStream assertNotNull socket ge
  • Jetbrains DataGrip 2020中文版

    教程 1 下载好文件包 得到安装程序和文件等 2 然后运行datagrip 2020 1 exe安装程序进行软件安装 3 选择软件安装路径 可更改 也可默认 4 根据用户系统位数选择版本进行创建桌面快捷方式 5 接下来一直点击next完成软
  • 网络编程项目——在线电子词典

    目录 项目要求 代码 服务器代码 客户端 运行截图 注册 首次注册 重复注册 数据库 登录 正常登录 重复登录 数据库 查询 数据库 查询历史 退出 数据库 编辑 项目要求 登录注册功能 不能重复登录 重复注册 单词查询功能 历史记录功能
  • 初始化mcu程序选用32k_程序的组成、存储与运行

    摘抄整理自 1 RT Thread编程手册 um4003 rtthread programming manual 2 野火 零死角玩转STM32 F429挑战者V2 一般 MCU 包含的存储空间有 片内 Flash 与片内 RAM RAM
  • U盘安装Win系统遇到“Windows 无法安装到这个磁盘。这台计算机的硬件可能不支持………”解决方法

    U盘安装Win系统遇到 Windows 无法安装到这个磁盘 这台计算机的硬件可能不支持 解决方法 方法1 bios里切换为Legacy启动方式 方法2 在错误提示界面 1 按下 Shift F10 快捷键 2 依次输入 diskpart 回
  • 浏览器前缀、BFC深入解析、flex布局简析、行盒line boxes对齐及vertical-align居中原理、line-height

    浏览器前缀 官方文档专业术语叫做 vendor specific extensions 供应商特定扩展 浏览器为了防止后续会修改名字给的新的属性添加了浏览器前缀 FC 格式化上下文 分为BFC IFC 元素在标准流里面都属于一个FC 块级元
  • PTA 浙大版《C语言程序设计(第3版)》题目集 练习5-3

    本题要求实现函数输出n行数字金字塔 函数接口定义 void pyramid int n 其中n是用户传入的参数 为 1 9 的正整数 要求函数按照如样例所示的格式打印出n行数字金字塔 注意每个数字后面跟一个空格 裁判测试程序样例 inclu
  • fortify代码扫描问题结果分析

    最近项目的代码使用fortify工具扫描了一下 发现了项目中存在的一些问题 在以后代码编写的过程中要注意 避免出现类似的错误 以下为本次代码分析工具FORTIFY对代码的分析结果 这些问题虽然古老 简单然而经典 也是需要引起重视 代码问题主
  • .bss段和.data段

    BSS段 BSS段 bss segment 通常是指用来存放程序中未初始化的或者初始值为0的全局变量的一块内存区域 BSS是英文Block Started by Symbol的简称 BSS段属于静态内存分配 数据段 数据段 data seg
  • 科目二练习总结

    第一次 方向盘课程 第二次 基础课程 上车先调座椅 垫坐垫 头部离顶部一拳 后背调整 舒服的姿势 不能太打直 座椅前后调整 离合踩到底 脚不是伸直的 膝盖离车体一拳 调后视镜 右手边上圆形 有L R的就是调整的 L 左视镜 后门把手在镜头3
  • JAVA实现图片质量压缩和加水印

    这个世界没有什么好畏惧的 反正我们只来一次 文章目录 前言 编写代码 1 编写工具类 2 编写接口 3 测试接口 总结 前言 主要实现了两个功能 加水印 质量压缩 编写代码 1 编写工具类 ImageUtil代码如下 package com
  • ceph中的Pools、PGs和OSDs介绍(tmp)

    2019独角兽企业重金招聘Python工程师标准 gt gt gt How are Placement Groups used A placement group PG aggregates objects within a pool be