ceph块存储使用总结

news2024/10/5 21:19:36

ceph块存储使用总结

大纲

  • ceph osd pool池
  • 创建 & 更新osd pool
  • 关联应用
  • 删除ceph osd pool
  • 使用ceph块存储
  • 自动挂载
  • 扩容

本次测试相关环境与软件:

  • ceph15.2.17 Octopus
  • eph-deploy 2.0.1
  • ubuntu18.04.6

ceph osd pool池

基础概念

Ceph 将数据存储在存储池中。存储池是用于存储对象的逻辑组。

对于存储系统而言 , 池并不是很新的概念。 企业级存储系统是通过创建不同的池来管理的 , Ceph 也通过池提供了简单的存储管理 。 Ceph 的池是一个用来存储对象的逻辑分区 。 Ceph中每个池都包含一定数量的PG , 进而实现把一定数量的对象映射到集群内部不同 OSD 上 因 此, 每一个池都是交叉分布在集群所有节点上的 , 这样就能够提供足够的弹性

常用查询命令:

  • 1 ceph osd lspools 或者 rados lspools 查看集群中存在的pools

  • 2 ceph osd pool ls detail 或者 ceph osd dump|grep pool 查看pool的详细配置信息

    这些详情字段可以使用ceph osd pool set去更新

  • 3 rados df 查看pool的用量信息

在这里插入图片描述

创建 & 更新osd pool

池可以通过创建需要的副本数来保障数据的高可用性,比如通过复制或者纠删码方式

Pool是存储对象的逻辑分区,它规定了数据冗余的类型和对应的副本分布策略;支持两种类型:

  • replicated 副本
  • Erasure Code 纠删码

纠删码

纠删码( EC) 特性是 Ceph 的新功能,首次发布是在 Ceph 的 Firefly 版本中 。 
纠删码是一种数据保护方法,它首先将数据分解成块  接着编码,然后以分布式的方式存储 。 
天生就是分布式的 Ceph 能够很好地利用 EC 。

创建副本池
ceph osd pool create 【pool名称】【PG数量】 【PGP数量】
创建纠删码池
ceph osd pool create 【pool名称】【PG数量】 【PGP数量】 erasure

ceph osd pool create mytest1 128 128
ceph osd pool create mytest2 12 12 erasure

在这里插入图片描述

更新池
ceph osd pool set 【pool名称】【key】【value】

如设置副本池的副本数:
ceph osd pool set mytest1 size 2
set pool 2 size to 2

可选的配置更新项

size

设置存储池中对象的副本数。

min_size

设置 I/O 所需的最小副本数。

crash_replay_interval

允许客户端重放已确认但未提交的请求的秒数。

pg_num

存储池的归置组数。

pgp_num

计算数据归置时要使用的归置组的有效数量。

crush_ruleset

用于在集群中映射对象归置的规则组。

hashpspool

为给定存储池设置 (1) 或取消设置 (0) HASHPSPOOL 标志。启用此标志会更改算法,以采用更佳的方式将 PG 分配到 OSD 之间。对之前 HASHPSPOOL 标志设为 0 的存储池启用此标志后,集群会开始回填,以使所有 PG 都可再次正确归置。请注意,这可能会在集群上产生相当高的 I/O 负载,因此对高负载生产集群必须进行妥善规划。

nodelete

防止删除存储池。

nopgchange

防止更改存储池的 pg_num 和 pgp_num。

nosizechange

防止更改存储池的大小。

write_fadvise_dontneed

对给定存储池设置/取消设置 WRITE_FADVISE_DONTNEED 标志。

noscrub、nodeep-scrub

禁用(深层)整理 (scrub) 特定存储池的数据以解决临时高 I/O 负载问题。

hit_set_type

对快速缓存池启用命中集跟踪。请参见布隆过滤器以了解更多信息。此选项可用的值如下:bloom、explicit_hash、explicit_object。默认值是 bloom,其他值仅用于测试。

hit_set_count

要为快速缓存池存储的命中集数。该数值越高,ceph-osd 守护进程耗用的 RAM 越多。默认值是 0。

hit_set_period

快速缓存池的命中集期间的时长(以秒为单位)。该数值越高,ceph-osd 守护进程耗用的 RAM 越多。

hit_set_fpp

布隆命中集类型的误报率。请参见布隆过滤器以了解更多信息。有效范围是 0.0 - 1.0,默认值是 0.05

use_gmt_hitset

为快速缓存分层创建命中集时,强制 OSD 使用 GMT(格林威治标准时间)时戳。这可确保在不同时区中的节点返回相同的结果。默认值是 1。不应该更改此值。

cache_target_dirty_ratio

在快速缓存分层代理将已修改(脏)对象清理到后备存储池之前,包含此类对象的快速缓存池百分比。默认值是 .4

cache_target_dirty_high_ratio

在快速缓存分层代理将已修改(脏)对象清理到速度更快的后备存储池之前,包含此类对象的快速缓存池百分比。默认值是 .6。

cache_target_full_ratio

在快速缓存分层代理将未修改(干净)对象从快速缓存池逐出之前,包含此类对象的快速缓存池百分比。默认值是 .8

target_max_bytes

触发 max_bytes 阈值后,Ceph 将会开始清理或逐出对象。

target_max_objects

触发 max_objects 阈值时,Ceph 将开始清理或逐出对象。

hit_set_grade_decay_rate

两次连续的 hit_set 之间的温度降低率。默认值是 20。

hit_set_search_last_n

计算温度时在 hit_set 中对出现的项最多计 N 次。默认值是 1。

cache_min_flush_age

在快速缓存分层代理将对象从快速缓存池清理到存储池之前的时间(秒)。

cache_min_evict_age

在快速缓存分层代理将对象从快速缓存池中逐出之前的时间(秒)。

fast_read

如果对纠删码池启用此标志,则读取请求会向所有分片发出子读取命令,并一直等到接收到足够解码的分片,才会为客户端提供服务。对于 jerasure 和 isa 纠删插件,前 K 个副本返回时,就会使用从这些副本解码的数据立即处理客户端的请求。这有助于获得一些资源以提高性能。目前,此标志仅支持用于纠删码池。默认值是 0。

scrub_min_interval

集群负载低时整理 (scrub) 存储池的最小间隔(秒)。默认值 0 表示使用来自 Ceph 配置文件的 osd_scrub_min_interval 值。

scrub_max_interval

不论集群负载如何都整理 (scrub) 存储池的最大间隔(秒)。默认值 0 表示使用来自 Ceph 配置文件的 osd_scrub_max_interval 值。

deep_scrub_interval

深层整理 (scrub) 存储池的间隔(秒)。默认值 0 表示使用来自 Ceph 配置文件的 osd_deep_scrub 值。

关联应用

从 Luminous 开始,所有池都需要与使用该池的应用程序相关联 将与 CephFS 搭配使用或由对象网关自动创建的存储池会自动关联。需要使用 rbd 工具初始化要与 RBD 搭配使用的存储池。

关联命令格式
ceph osd pool application enable 【pool名称】 【应用程序名称: rbd rgw cephfs】

例如
ceph osd pool application enable mytest1 rbd

在这里插入图片描述

查看储池与个应用关联
ceph osd pool application get mytest1

删除ceph osd pool

由于ceph的安全机制,osd pool不能直接删除需要配置允许删除

1 编辑ceph.conf文件 添加 mon_allow_pool_delete = true
在这里插入图片描述

2 将ceph.conf 推送到各个mon节点

ceph-deploy --overwrite-conf config push ceph-controller ceph-osd1 ceph-osd2
注意 --overwrite-conf 表示覆盖存在的配置文件

在这里插入图片描述

3 重启mon节点 mon服务

systemctl restart ceph-mon@ceph-osd1
systemctl restart ceph-mon@ceph-osd2
systemctl restart ceph-mon@ceph-controller

4 删除pool

格式 ceph osd pool delete 【pool名称】【pool名称】
例如
ceph osd pool delete mytest  mytest --yes-i-really-really-mean-it

在这里插入图片描述

使用ceph块存储

初始化准备

网络架构

在这里插入图片描述

在使用块存储之前需要在稍微配置下客户端主机,登录ceph-controller主机 ,使用ceph-deploy 安装ceph相关软件

配置host
添加192.168.0.241 ceph-c1

免密登录
ssh-copy-id  root@ceph-c1

在ceph-c1 主机上安装ceph相关软件
ceph-deploy install ceph-c1

为了简单将admin keyring复制到ceph-c1
ceph-deploy admin ceph-c1

rbd 命令使用的默认池的名称是rbd 所以需要在创建一个名称为rbd的池

创建pool 注意名称是rbd
ceph osd pool create rbd 128 128
关联rbd应用	
ceph osd pool application enable rbd rbd

在这里插入图片描述

安装完成后登录到ceph-c1

在这里插入图片描述

使用ceph块设备

step1 创建RADOS块设备

需要先创建RADOS块设备

例如:创建一个1G的块设备 名称为my-rbd1 注意这里使用默认的rbd池
rbd create my-rbd1 --size 1024

也可以使用-p 指定对应的池
例如:创建一个1G的块设备 名称为my-test1 注意使用-p 指定mytest1池
rbd create my-test1 -p mytest1  --size 1024

在这里插入图片描述

step2 映射块设备

需要把创建的块设备映射到主机上

注意需要先关闭不支持的内核特性
rbd feature disable my-rbd1 object-map fast-diff deep-flatten
映射块设备
rbd map --image my-rbd1
查看块映射后的设备名称
rbd showmapped 

在这里插入图片描述

使用lsblk 和 fdisk -l 都可以看到已经出现可以使用的设备名称 /dev/rbd0

在这里插入图片描述

step3 格式化文件系统并挂载

格式化文件系统
mkfs.ext4 /dev/rbd0

创建文件
mkdir /ceph-disk

设备挂载
mount /dev/rbd0 /ceph-disk

在这里插入图片描述

然后就使用把ceph块当做磁盘使用了

自动挂载

原理 linux开启执行rbd map映射出设备,然后自动挂载

step1 准备一个开启启动service

在/etc/systemd/system文件夹下创建map.ceph.service文件

内容如下:

[Unit]
Description=this is ceph mount
After=ceph.target

[Service]
Type=forking   
User=root
Group=root
ExecStart=/bin/bash -c "rbd map --image my-rbd1  &"
PrivateTmp=true
TimeoutStartSec=10s 

[Install]
WantedBy=multi-user.target 

注意chmod 755 map.ceph.service 修改权限

systemctl daemon-reload
systemctl enable map.ceph.service
systemctl list-unit-files | grep map

在这里插入图片描述

step2 修改/etc/fstab

加入
/dev/rbd0 /ceph-disk ext4 defaults,_netdev 0 0

在这里插入图片描述

扩容

可以使用 rbd resize 命令来对块扩容

rbd resize --image my-rbd1 --size 2048

在这里插入图片描述

进入到ceph-c1 客户

扩容前可以看到ceph-c1 客户端当前磁盘大小为1G

blockdev 可以查看设备空间
blockdev --getsize64 /dev/rbd0

resize2fs程序会重新定义ext2,ext3或者是ext4文件系统
执行
resize2fs /dev/rbd0

执行 resize2fs命令后 空间变大

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/636364.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Hive存储格式

hive的存储格式 hive的存储格式分为两大类:一类纯文本文件,一类是二进制文件存储。 第一类: 纯文本文件存储 textfile: 纯文本文件存储格式,不压缩,也是hive的默认存储格式,磁盘开销大,数据解…

3. 说说Java“锁“事

3.1 从轻松的乐观锁和悲观锁开讲 ● 悲观锁: 认为自己在使用数据的时候一定有别的线程来修改数据,因此在获取数据的时候会先加锁,确保数据不会被别的线程修改,synchronized和Lock的实现类都是悲观锁,适合写操作多的场…

WhaleHiking的“三山五岳”第一站:泰山

Datawhale团队 来源:whaleHiking 开场白 大家应该都听说过杜甫的《望岳》——“会当凌绝顶,一览众山小。”,每次看见这句诗的时候,总想去泰山看一看,感受诗中的壮美山河景色! 机不可失时不再来&#xff0c…

JVM图解

JVM图解 一、JVM的运行时数据区 概览JVM运行时数据区主要包括以下几个部分:程序计数器、虚拟机栈、本地方法栈、方法区、堆;其中 栈是运行时的单位,而堆是存储的单位! 1.程序计数器 程序计数器可以看作是当前线程所执行的字节码…

调用阿里API实现银行卡实名认证

调用阿里API实现银行卡实名认证 1.作者介绍2.算法介绍2.1 阿里云技术介绍2.2 API介绍 3.实验代码3.1 调用阿里云API流程3.2 代码实现3.2.1完整代码3.2.2实验结果 4.报错分析5.参考链接 1.作者介绍 薛维哥&…

针对潜在客户CRM如何进行管理?

CRM客户管理系统可以帮助企业管理客户,提高客户转化率,增加企业收入和利润。那么,在CRM中如何进行潜在客户管理呢?本文将从以下几个方面来为您解答。 一、什么是潜在客户? 潜在客户是指对企业的产品或服务有意向&…

驱动开发:内核遍历文件或目录

在笔者前一篇文章《驱动开发:内核文件读写系列函数》简单的介绍了内核中如何对文件进行基本的读写操作,本章我们将实现内核下遍历文件或目录这一功能,该功能的实现需要依赖于ZwQueryDirectoryFile这个内核API函数来实现,该函数可返…

docker的资源控制

一、CPU控制 cgroups,是一个非常强大的linux内核工具,他不仅可以限制被namespace隔离起来的资源, 还可以为资源设置权重、计算使用量、操控进程启停等等。所以cgroups (Control groups) 实现了对资源的配额和度量。 cgroups有四大功能: 资源限制:可以…

报表生成器FastReport .Net用户指南:“Picture“对象

FastReport .Net是一款全功能的Windows Forms、ASP.NET和MVC报表分析解决方案,使用FastReport .NET可以创建独立于应用程序的.NET报表,同时FastReport .Net支持中文、英语等14种语言,可以让你的产品保证真正的国际性。 FastReport.NET官方版…

【30天熟悉Go语言】6 Go 复杂数据类型之指针

文章目录 一、前言二、数据类型总览三、指针1、特殊运算符& *2、内存角度来看指针3、使用指针修改数据4、指针使用的注意事项5、对比着看Java的引用类型 三、总结 一、前言 Go系列文章: GO开篇:手握Java走进Golang的世界2 Go开发环境搭建、Hello Wor…

Zstack实习-基础知识总结归纳-待更新

什么是虚拟化? 虚拟化技术是一种将物理计算资源,如服务器、存储和网络等,转化成虚拟的逻辑资源的技术。通过虚拟化技术,可以将多个独立的操作系统运行在同一台物理计算机上,实现资源的共享,提高硬件的利用率…

C++那些事之项目篇Catch2

C那些事之项目篇Catch2 今天推荐一个值得学习的开源项目"Catch2" ,之前写过如何使用google的googletest编写单元测试,你会发现需要编译生成lib库,比较麻烦,而Catch2是一个Header only库,能够快速使用&#x…

Python3数据分析与挖掘建模(13)复合分析-因子关分析与小结

1.因子分析 1.1 探索性因子分析 探索性因子分析(Exploratory Factor Analysis,EFA)是一种统计方法,用于分析观测变量之间的潜在结构和关联性。它旨在确定多个观测变量是否可以归结为较少数量的潜在因子,从而帮助简化…

机器学习笔记 - 多实例学习(MIL)弱监督学习

一、多实例学习概述 多实例学习(MIL)是一种弱监督学习形式,其中训练实例被排列在称为袋的集合中,并为整个袋提供标签。这种方式越来越受到人们的关注,因为它自然适合各种问题,并允许利用弱标记数据。因此,它被应用于计算机视觉和文档分类等不同的应用领域。 多实例学习(…

【国产虚拟仪器】基于 ZYNQ的声发射采集系统方案

系 统 的 整 体 设 计 流 程 为 根 据 上 述 设 计 需 求 进 行 硬 件 设 备 的 选 型 并 搭 建 起 声 发 射 采 集 系 统 的 硬 件 平 台 , 在 该平 台 上 进行 声 发 射 采 集 板 卡 的 设 计 并 根 据 要求进行 上 位 机…

2023上半年的九个觉悟

‍觉悟,就是觉了、悟了。有时候,你看到一句话,突然就觉悟了。 一、资本主义的问题 “资本主义把我们都缩减成了一个东西:消费者” 因此,人人都成为资本家利诱、操控、围猎的对象。 同时,金钱成为全民的神&a…

【PHP】Wampserver启动时呈现黄色的解决方案

首先,我们可以进入服务查看WampServer的服务是哪几个没有开? 经观察上图发现: apache没有开启sql没有开启 如果你点击开启,将会出现报错信息,因为服务冲突 所以解决方式就是:关闭冲突服务,再次…

基于SpringBoot+Vue的校园台球厅人员与设备管理系统设计与实现

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架下…

基于JavaWeb SSM mybatis 学生信息管理系统设计和实现以及文档报告

基于JavaWeb SSM mybatis 学生信息管理系统设计和实现以及文档报告 博主介绍:5年java开发经验,专注Java开发、定制、远程、指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源…

想要更好地理解大模型架构?从计算参数量快速入手

编者按:要理解一种新的机器学习架构(以及其他任何新技术),最有效的方法就是从头开始实现它。然而,还有一种更简单的方法——计算参数数量。 通过计算参数数量,读者可以更好地理解模型架构,并检查…