转载备份
影子 DOM(Shadow DOM)
你的 docker stop,它优雅吗? - 无糖拿铁,谢谢
清理Docker的container,image与volume · 零壹軒·笔记
Create a PyPI Mirror Site with devpi-server – SRE
优雅的终止 docker 容器 | iTimothy
Odoo 14 开发者指南第二十一章 性能优化 | Alan Hou 的个人博客
Odoo 14 开发者指南第八章 高级服务端开发技巧 | Alan Hou 的个人博客
kafka 系列:设置日志数据保存过期时间(含某个 topic)、日志策略_NIO4444-CSDN 博客_kafka 配置数据过期时间
Chromium 历史版本离线安装包 - 下载方法
怎样将 props 传递给 {this.props.children} | WebFuse
HappyBaseDoc
用户指南 — HappyBase 1.2.0 文档
安装指南 — HappyBase 1.2.0 文档
API 参考 — HappyBase 1.2.0 文档
PostgreSQL 时间转换
JS 中创建给定长度的数组
GSAP 入门 - 学习中心 - 绿袜
操作系统复习 | Happy Coding
如何理解 ip 路由和操作 linux 的路由表 - CodeAntenna
Elasticsearch 7.11 tokenizer, analyzer and filter 以及 IK 分词配置同义词、远程拓展词库 – Brave new world
podman 容器内访问 host 主机的端口 - 知识库 - BSMI KB 基础标准矿产工业
吐血总结!100 道经典 Python 面试题集锦上(附答案)
中共党史简表(1919 年 - 1949 年)
Dockerfile 详解_万 wu 皆可爱的博客 - CSDN 博客_dockerfile
为你的 Python 应用选择一个最好的 Docker 映像 | 亚马逊 AWS 官方博客
Ubuntu Server 支持中文
docker push | Docker Documentation
docker 创建本地仓库详解 (push/pull)_乱红飞的博客 - CSDN 博客_docker push 本地仓库
基于 Ubuntu 20.04 安装 Kubernetes 1.18
PostgreSQL 集群篇——PostgreSQL 的配置文件解析_51CTO 博客_postGresql
【PostgreSQL】——主从流复制_Teingi 的博客 - CSDN 博客_postgresql 主从复制
PostgreSQL: Documentation: 14: 27.4. Hot Standby
postgresql 主从复制、主从切换_偷懒的小陈的博客 - CSDN 博客_postgresql 主从
Postgres 用户、角色与权限 :: 68hub — 技术博客
中国共产党第二十次全国代表大会在京开幕 一图速览二十大报告
配置 docker 通过代理服务器拉取镜像
IPVS no destination available - Kubernetes 实践指南
Python 风格规范 — Google 开源项目风格指南
互动测试!党的二十大报告 100 题
自定义 ESlint 规则
Java 读取 OpenSSL 生成的秘钥, 进行 RSA 加解密 | 数字魔法
CSS(一)chrome 浏览器表单自动填充默认样式 - autofil_半个 GIS 半个前端的博客 - CSDN 博客
Nginx 多级代理下的真实 IP 透传 - CodeAntenna
Jenkins 环境变量
人民币金额大写规范 - 内蒙古农业大学财务处
[转]nginx 开启 websocket - 浅忆博客
ceph 创建使用 rbd
《三》配置 ceph 存储池 pool - Buxl's blog
基于 K8S 搭建 Ceph 分部署存储 – 唐玥璨 | 博客
序言 · Kubernetes 中文指南——云原生应用架构实战手册
服务器配置 - Redis 安装配置 | 灰帽子 - 任令仓的技术博客
Ubuntu 配置 sudo 命令不需要输入密码_ubuntu sudo 免密_一路向前 - 执着的博客 - CSDN 博客
修改 Docker 数据目录位置,包含镜像位置 - 腾讯云开发者社区 - 腾讯云
微服务架构实践(API Gateway)
微服务网关:从对比到选型,由理论到实践 | Java 程序员进阶之路
聊聊微服务网关
微服务网关:从对比到选型,由理论到实践
odoo 实现表分区 partition
使用 keepalived 搭建高可用服务 - 简书
业务网关的落地实践_文化 & 方法_Qunar 技术沙龙_InfoQ 精选文章
部署 Kubernetes PostgreSQL 实例 | domac 的菜园子
一套包含完整前后端的系统如何在 K8S 中部署?_k8s 前端_木讷大叔爱运维的博客 - CSDN 博客
前端安全系列(二):如何防止 CSRF 攻击? - 美团技术团队
traefik 自定义中间件 | coolcao 的小站
CSRF 原理和实战利用 - FreeBuf 网络安全行业门户
安全运维 - 如何在 Kubernetes 中使用注释对 ingress-nginx 及后端应用进行安全加固配置实践_唯一极客知识分享的技术博客_51CTO 博客
Kubernetes 进阶使用之 Helm,Kustomize
各种加密算法比较
Docker 的三种网络代理配置 · 零壹軒 · 笔记
本文档使用 MrDoc 发布
-
+
首页
《三》配置 ceph 存储池 pool - Buxl's blog
> 本文由 [简悦 SimpRead](http://ksria.com/simpread/) 转码, 原文地址 [www.ourprivate.space](http://www.ourprivate.space/ceph/1973.html) Loading... 池是 Ceph 存储集群的逻辑分区,用于存储对象。 池具有特定的属性: * 池类型:数据的保护机制。 * **复制类型**(replicated pools)将每个对象的完整副本分发到集群中的多个 OSD。一般都是使用复制类型的存储池。 * **纠删代码类型**(erasure coded pools)将每个对象分割为多个区块,并将它们与额外的纠删代码区块一起分发,以使用自动纠错机制来保护对象。以增加计算开销为代价节约存储空间。 * PG 数量:将对象存储到由 CRUSH 算法决定的一组 OSD 中 * 访问级别:不同用户的访问权限 对象存储到池中时,使用 CRUSH 规则将该对象分配到池中的一个 PG。PG 根据池的配置和 CRUSH 算法自动映射到一组 OSD。 池中 PG 数量对性能有重要影响。PG 数量太少,每个 PG 中就需要存储过多的数据,Ceph 的性能不佳。PG 数量太多,OSD 将需要大量的 RAM 和 CPU 时间,Ceph 的性能也不佳。通常而言,池应当配置为每个 OSD 包含 100 - 200 个放置组。 创建池时,Ceph 会检查每个 OSD 的 PG 数是否超过 200。如果超过,Ceph 不会创建这个池。如果池已经达到了这个限值,ceph health 命令也会显示警告。这个值由 `/etc/ceph/ceph.conf` 中 `mon_max_pg_per_osd` 参数控制。 配置复制池 ----- Ceph 通过创建每个对象的多个副本来保护复制池中的数据。每个副本称为 replica(副本)。这些副本存在池中的不同 OSD 中,一个或多个 OSD 出现故障时,数据会得到保护。 ### **创建复制池** ``` $ ceph osd pool create pool-name gp-num [pgp-num] [replicated] [crush-ruleset-name] [expected-num-objects] pool-name 池的名称 pg-num 池的PG的总数 pgp-num 池的PG的有效数。通常而言,与PG总数相等 replicated 指定复制池。默认 crush-ruleset-name 用于这个池的CRUSH规则的名字,默认为osd_pool_default_crush_replicated_ruleset expected-num-objects 是池中预期的对象数量。如果事先知道这个数值,Ceph 可于创建池时 在 OSD 的 XFS 文件系统上准备文件夹结构。否则,Ceph 会在运行时重组这个目录结构,因为对象数量会有所增加。这种重组会带来延迟影响。 ``` 在使用 ceph osd pool create 命令创建池时,不指定副本数量。osd_pool_default_size 配置参数会定义副本数量(默认为 3)。对于特定的池,通过 `ceph osd pool set pool-name size number-of-replicas` 命令覆盖命令行中的默认值。此外,可以在 /etc/ceph/ceph.conf 文件中更新 `osd_pool_default_size` 的默认值。`osd_pool_default_min_size` 参数也可设置对象的默认副本数量,默认值为 2。 ### **为池启用 ceph 应用** 创建池后,必须显式指定能够使用它的 Ceph 应用类型:Ceph 块设备(也称为 RADOS 块设备或 RBD)、Ceph 对象网关(也称为 RADOS 网关或 RGW)或 Ceph 文件系统(CephFS)。 如果不显式指定类型,集群将显示 HEALTH_WARN 状态。 使用 `ceph osd pool application enable`命令为新池关联应用类型。 ``` ceph osd pool application enable pool-name app-type app-type: cephfs 表示ceph文件系统 rbd 表示ceph块设备 rgw 表示ceph对象网关 ``` **练习:** ``` 创建名为mypool1的池: [root@ceph-node1 ~]# ceph osd pool create mypool1 10 pool 'mypool1' created [root@ceph-node1 ~]# ceph osd pool ls .rgw.root default.rgw.control default.rgw.meta default.rgw.log mypool1 [root@ceph-node1 ~]# ceph osd pool ls detail |grep mypool1 pool 7 'mypool1' replicated size 3 min_size 2 crush_rule 0 object_hash rjenkins pg_num 10 pgp_num 10 autoscale_mode warn last_change 178 flags hashpspool stripe_width 0 [root@ceph-node1 ~]# 这里能够看到mypool1为复制类型,副本数size为3。 为池指定类型为rbd: [root@ceph-node1 ~]# ceph osd pool application enable mypool1 rbd enabled application 'rbd' on pool 'mypool1' [root@ceph-node1 ~]# ceph osd pool ls detail |grep mypool1 pool 7 'mypool1' replicated size 3 min_size 2 crush_rule 0 object_hash rjenkins pg_num 10 pgp_num 10 autoscale_mode warn last_change 184 flags hashpspool stripe_width 0 application rbd [root@ceph-node1 ~]# 查看池用量统计数据: [root@ceph-node1 ~]# ceph df RAW STORAGE: CLASS SIZE AVAIL USED RAW USED %RAW USED hdd 540 GiB 531 GiB 211 MiB 9.2 GiB 1.70 TOTAL 540 GiB 531 GiB 211 MiB 9.2 GiB 1.70 POOLS: POOL ID PGS STORED OBJECTS USED %USED MAX AVAIL .rgw.root 1 32 1.2 KiB 4 768 KiB 0 168 GiB default.rgw.control 2 32 0 B 8 0 B 0 168 GiB default.rgw.meta 3 32 0 B 0 0 B 0 168 GiB default.rgw.log 4 32 0 B 175 0 B 0 168 GiB mypool1 7 10 0 B 0 0 B 0 168 GiB 获取池性能统计数据: [root@ceph-node1 ~]# ceph osd pool stats pool .rgw.root id 1 nothing is going on pool default.rgw.control id 2 nothing is going on pool default.rgw.meta id 3 nothing is going on pool default.rgw.log id 4 client io 767 B/s rd, 0 B/s wr, 0 op/s rd, 0 op/s wr pool mypool1 id 7 nothing is going on [root@ceph-node1 ~]# 显式OSD磁盘的用量统计信息: [root@ceph-node1 ~]# ceph osd df ID CLASS WEIGHT REWEIGHT SIZE RAW USE DATA OMAP META AVAIL %USE VAR PGS STATUS 0 hdd 0.05859 1.00000 60 GiB 1.0 GiB 23 MiB 20 KiB 1024 MiB 59 GiB 1.70 1.00 48 up 1 hdd 0.05859 1.00000 60 GiB 1.0 GiB 23 MiB 20 KiB 1024 MiB 59 GiB 1.70 1.00 58 up 2 hdd 0.05859 1.00000 60 GiB 1.0 GiB 23 MiB 20 KiB 1024 MiB 59 GiB 1.70 1.00 32 up 3 hdd 0.05859 1.00000 60 GiB 1.0 GiB 23 MiB 20 KiB 1024 MiB 59 GiB 1.70 1.00 47 up 4 hdd 0.05859 1.00000 60 GiB 1.0 GiB 23 MiB 20 KiB 1024 MiB 59 GiB 1.70 1.00 50 up 5 hdd 0.05859 1.00000 60 GiB 1.0 GiB 23 MiB 20 KiB 1024 MiB 59 GiB 1.70 1.00 41 up 6 hdd 0.05859 1.00000 60 GiB 1.0 GiB 23 MiB 20 KiB 1024 MiB 59 GiB 1.70 1.00 45 up 7 hdd 0.05859 1.00000 60 GiB 1.0 GiB 23 MiB 20 KiB 1024 MiB 59 GiB 1.70 1.00 44 up 8 hdd 0.05859 1.00000 60 GiB 1.0 GiB 23 MiB 4 KiB 1024 MiB 59 GiB 1.70 1.00 49 up TOTAL 540 GiB 9.2 GiB 210 MiB 165 KiB 9.0 GiB 531 GiB 1.70 MIN/MAX VAR: 1.00/1.00 STDDEV: 0 [root@ceph-node1 ~]# ``` ### **设置池配额** 可以设置配额来限制池中能够存储的最大字节数或最大对象数量。 ``` ceph osd pool set-quota pool-name {max-objects | obj-count | max_bytes bytes} 例如将mypool1池限制为1000个对象: [root@ceph-node1 ~]# ceph osd pool set-quota mypool1 max_objects 1000 set-quota max_objects = 1000 for pool mypool1 [root@ceph-node1 ~]# ceph osd pool ls detail |grep mypool1 pool 7 'mypool1' replicated size 3 min_size 2 crush_rule 0 object_hash rjenkins pg_num 10 pgp_num 10 autoscale_mode warn last_change 185 flags hashpspool max_objects 1000 stripe_width 0 application rbd [root@ceph-node1 ~]# ``` 当 ceph 达到池配额时,操作会被无限期的阻止。 **重命名池:** ``` ceph osd pool rename pool-name new-poolname ``` **池快照:** ``` ceph osd pool mksnap pool-name snap-name ceph osd pool rmsnap pool-name snap-name ``` Ceph 不支持对纠删代码池拍摄快照 **修改池:** ``` 设置池参数: ceph osd pool set pool-name parameter-name value 获取池参数: ceph osd pool get pool-name parameter 列出所有参数及其值: ceph osd pool get pool-name all [root@ceph-node1 ~]# ceph osd pool get mypool1 all size: 3 min_size: 2 pg_num: 10 pgp_num: 10 crush_rule: replicated_rule hashpspool: true nodelete: false nopgchange: false nosizechange: false write_fadvise_dontneed: false noscrub: false nodeep-scrub: false use_gmt_hitset: 1 fast_read: 0 pg_autoscale_mode: warn [root@ceph-node1 ~]# ``` **删除池:** pool 是允许被删除的,但会有部分参数限制。 ``` ceph osd pool delete pool-name pool-name --yes-i-really-really-mean-it ``` 正常情况下还需要将配置文件中 `mon_allow_pool_delete`设置为 true,默认该参数值为 false。更改该值后,需要重新启动 mon 服务,以允许删除池。 也可以对池的参数 `nodelete`设置为 true,防止被删除。 ``` ceph osd pool set pool-name nodelete true ``` ### **在池中配置命名空间 namespace** 命名空间是池中对象的逻辑组。可以限制用户对池的访问,使得用户只能存储或检索这个命名空间内的对象。命名空间的优点是能够使将用户访问权限限制到池的某一部分。 命名空间目前仅支持使用 librados 的应用。 若要在命名空间内存储对象,客户端应用必须提供池和命名空间的名称。默认情况下,每个池包含一个具有空名称的命名空间,称为默认命名空间。例如,rados 命令可存储和检索池中的对象,`-N name` 或 `--namespace=name` 选项指定命名空间。 ``` 将/etc/services文件作为srv对象存储在mytestpool池的system命名空间 $ rados -p mytestpool -N system put srv /etc/services 通过--all选项,可以列出池中所有命名空间内的所有对象。 $ rados -p mytestpool --all ls ``` 纠删代码池 ----- 纠删代码池使用纠删代码而非复制来保护对象数据。在纠删代码池中存储对象时,对象被分割为多个数据区块,这些数据区块存储在不同的 OSD 中。此外,根据数据区块计算一系列编码区块,它们也存储在不同的 OSD 中。当含有区块的 OSD 出现故障时,可利用编码区块来重建对象的数据。 ### **纠删代码池的工作方式** * 每个对象的数据分割为 k 个数据区块(chunk) * 计算出 m 个编码区块(encoded) * 编码区块大小与数据区块大小相同 * 对象存储在总共 k + m 个 OSD 中 下图将数据存储在纠删代码池中概述了 Ceph 如何将对象分割成区块,并将这些区块存储在 OSD 中: [![](http://www.ourprivate.space/usr/uploads/2021/02/1967933341.png)](http://www.ourprivate.space/usr/uploads/2021/02/1967933341.png) [image.png](http://www.ourprivate.space/usr/uploads/2021/02/1967933341.png) **纠删代码池与复制池比较:** 纠删代码池需要较少的存储就能获得相似程度的数据保护。减少存储集群的成本和大小,不过,计算编码区块会增加纠删代码池的 CPU 和内存开销,因而降低性能。纠删代码池使用的较少,红帽 Ceph 存储目前仅支持通过 Ceph Object Gateway 访问纠删代码池。 ### **创建纠删代码池** ``` ceph osd pool create pool-name pg-num [pgp-num] erasure [erasure-code-profile][crush-ruleset-name] [expected_nmu_objects] erasure 指定这是纠删代码池 erasure-code-profile 是要使用的 profile 的名称。使用 ceph osd erasure-codeprofile set 命令创建新的 profile。profile 定义 k 和 m 值。默认情况下,Ceph 使用default profile。 crush-ruleset-name 是要用于这个池的 CRUSH rule 的名称。如果不设置,将使用纠删代码池 profile 中定义的 rule expected-num-objects 是池中预期的对象数量。如果事先知道这个数值,可以在创建池时在 OSD 的 XFS 文件系统上准备文件夹结构。否则,Ceph 会在运行时重组这个目录结构,因为对象数量会有所增加,重组会带来延迟影响 示例: [root@ceph-node1 ~]# ceph osd pool create myerapool1 20 erasure pool 'myerapool1' created [root@ceph-node1 ~]# ceph osd pool ls detail |grep my pool 7 'mypool1' replicated size 3 min_size 2 crush_rule 0 object_hash rjenkins pg_num 10 pgp_num 10 autoscale_mode warn last_change 185 flags hashpspool max_objects 1000 stripe_width 0 application rbd pool 8 'myerapool1' erasure size 3 min_size 2 crush_rule 1 object_hash rjenkins pg_num 20 pgp_num 20 autoscale_mode warn last_change 189 flags hashpspool stripe_width 8192 [root@ceph-node1 ~]# ``` ### **纠删代码 profiles** erasure code profile 配置纠删代码池用于存储对象的数据区块和编码区块的数量,以及要使用的纠删代码插件和算法管理员可以创建新的 profile 来定义新的纠删代码参数。Ceph 安装期间创建 defaultprofile,配置为将对象分割为**两个数据区块**和**一个编码区块**。 Ceph 通过一个基于插件的系统来控制纠删代码实施,也创建了多个管理纠删代码的插件。default profile 使用 Jerasure 插件,是最为灵活的通用选项。可使用 `ceph osd erasure-code-profile get` 命令来查看特定纠删代码配置集的参数。 ``` [root@ceph-node1 ~]# ceph osd erasure-code-profile get default k=2 m=1 plugin=jerasure technique=reed_sol_van [root@ceph-node1 ~]# ``` 可以使用 `ceph osd erasure-code-profile set` 命令来创建新的 profile: ``` ceph osd erasure-code-profile set profile-name arguments... - k:这是分散到各个 OSD 的数据块的数目。默认值为 2 - m:这是在数据变得不可用之前可能出现故障的 OSD 的数目。默认值为 1 - directory:此可选参数是插件库的位置。默认值为 /usr/lib64/ceph/erasure-code - plugin:此可选参数定义要使用的纠删代码算法。默认值为 jerasure - crush-failure-domain:此可选参数定义 CRUSH 故障域,它控制区块放置。默认情况下,它设置为 host,这可以确保对象的区块放置到不同主机的 OSD 上。如果设置为 osd,则对象的区块可以放置到同一主机的 OSD 上。将故障域设置为 osd 时弹性欠佳,如果主机出现故障,则该主机上的所有 OSD 都会失败 - crush-device-class:此可选参数选择仅将这一类别设备支持的 OSD 用于池。典型的类别可能包括 hdd、ssd 或 nvme。 - crush-root:此可选参数设置 CRUSH 规则集的根节点。 - key=value:插件可以具有对该插件唯一的键值参数 - technique:每个插件提供一组不同的技术来实施不同的算法。对于 Jerasure 插件,默认的技术是 reed_sol_van。还提供其他的技术:reed_sol_r6_op、cauchy_orig、cauchy_good、liberation、blaum_roth 和 liber8tion 示例: [root@ceph-node1 ~]# ceph osd erasure-code-profile set myerafile1 k=3 m=2 crush-failure-domain=rack [root@ceph-node1 ~]# ceph osd erasure-code-profile ls default myerafile1 [root@ceph-node1 ~]# ceph osd erasure-code-profile get myerafile1 crush-device-class= crush-failure-domain=rack crush-root=default jerasure-per-chunk-alignment=false k=3 m=2 plugin=jerasure technique=reed_sol_van w=8 [root@ceph-node1 ~]# [root@ceph-node1 ~]# ceph osd pool create test-erasure 32 erasure myerafile1 pool 'test-erasure' created [root@ceph-node1 ~]# ceph osd pool ls detail |grep test-erasure pool 10 'test-erasure' erasure size 5 min_size 4 crush_rule 1 object_hash rjenkins pg_num 32 pgp_num 32 autoscale_mode warn last_change 241 flags hashpspool,creating stripe_width 12288 [root@ceph-node1 ~]# 删除现有的配置: [root@ceph-node1 ~]# ceph osd erasure-code-profile rm myerafile1 ``` 其它涉及到 pool 的常用命令链接为:[http://www.ourprivate.space/ceph/2109.html](http://www.ourprivate.space/ceph/2109.html) 该部分仅登录用户可见
幻翼
2022年12月14日 18:12
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码