- 准备考试,整理ceph 相关笔记
- 内容涉及:Blue Store OSD 存储引擎介绍,对应 OSD 的不同创建方式
- 理解不足小伙伴帮忙指正
对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是对内心的恐惧 ——赫尔曼·黑塞《德米安》
从 版本开始的。在 Luminous 版本中, 被引入作为一种新的、高性能的 OSD 存储引擎,以替代旧的 引擎。
在 Ceph 中,BlueStore 可以提供更快的时间和更高的,同时也具有更好的和。相比之下,旧的 FileStore 存储引擎通常需要更多的 CPU 和内存资源,对 IO 延迟的敏感度也较高。
将对象存储为块设备基础上的文件系统(通常是 XFS)中的文件。
将对象直接存储在原始上,免除了对的需要,提高了,通过直接操作底层块设备来管理数据,而不是传统的文件系统。
这种方法提供了更好的,因为可以将数据划分为较小的块并使用校验和来检测错误。此外,BlueStore可以直接与交互,并利用其快速读写速度。
BlueStore还具有,可以处理数百万个物理盘和千亿个对象。它实现了和,以确保高可用性和数据可靠性。
Ceph 集群中存储的对象有下面三部分构成:
- 集群范围的唯一标识符
- 二进制对象数据
- 对象元数据
将 对象 存储在 中,块数据库将元数据作为存储在 数据库中,这是一种高性能的键值存储,块数据库驻留于存储设备上的一个小型 分区,BlueFS 是一种最小的文件系统,设计用于保存 文件,BlueStore 利用以原子式将数据写入到块设备。预写式日志执行日志记录功能,并记录所有事务
: 是一种常见的数据库和文件系统技术,用于提高数据持久性和可靠性。
WAL 的基本思想是在执行实际的数据更改操作之前,先将数据更改操作写入一个专门的日志文件中,然后再将其应用到存储中。
通过这种方式,WAL 可以确保对数据的操作被记录下来,即使在出现故障或崩溃的情况下也可以进行恢复。
在 Ceph 中,WAL 被广泛应用于 OSD 上的处理操作中。每个 OSD 都有一个特殊的预写式日志设备(WAL device),用于记录 OSD 写入的所有数据更改操作。通过使用 WAL,Ceph 可以在发生故障或崩溃时快速恢复数据,并确保数据的可靠性和一致性。
FileStore 先写入到日志,然后从日志中写入到块设备。
BlueStore 可避免这种双重写入的性能损失,直接将数据写入块设备,使用单独的数据流将事务记录到预写式日志。
当工作负载相似 时,BlueStore 的写操作速度约为 FileStore 的 ,如果在集群中混用不同的存储设备,您可以自定义来提入性能。
创建新的 时,默认为将都放置到。从数据中分离块数据库和预写式日志,并将它们放入更快速的 设备,或许能提高性能。
例如,如果对象数据位于 设备上,可以通过将块数据库放在 设备上并将预写式日志放到 设备上来提高性能
使用服务规范文件定义 数据、块数据库和预写日志设备的 位置。示例如下:
指定 OSD 服务对应的 BlueStore 设备
BlueStore 存储后端提供下列功能:
- 允许将不同的设备用于数据、块数据库和预写式日志 (WAL)
- 支持以虚拟方式使用 HDD、SSD 和 NVMe 设备的任意组合
- 通过提高元数据效率,可以消除对存储设备的双重写入
BlueStore 在用户空间内运行,管理自己的缓存,并且其内存占用比 少,BlueStore 使用 RocksDB 存储键值元数据,,但如果需要,可以手动调优BlueStore参数
BlueStore 分区写数据的块大小为 参数的大小,缺省值为 .
- 参数指定了每个对象分配所需的最小空间量,即使对象实际大小较小也会分配该数量的空间。如果要写入的数据小于该大小,则 BlueStore 将剩余空间用0填充。
- 设置较小的 可能会导致过多的碎片和浪费,因为一些较小的对象在分配时仍然需要使用与较大对象相同的空间。但是,如果设置较大的 bluestore_min_alloc_size ,则可能会浪费更多的空间,因为对象可能只使用其中的一部分空间。
- 参数应根据特定的工作负载和性能需求进行调整。对于需要存储许多小型对象的应用程序,可能需要将此值设置得较小,而对于需要存储大型对象的应用程序,可能需要将此值设置得较大。
可以限制存储在 中的大型 对象的大小,并将它们分布到多个列族中,这个过程被称为分片。
使用 sharding(分片) 时,将访问修改频率相近的密钥分组,以和。Sharding 可以缓解RocksDB压缩的影响,压缩数据库之前,RocksDB 需要达到一定的已用空间,这会影响 OSD 性能,这些操作与已用空间级别无关,可以更精确地进行压缩,并将对 OSD 性能的影响降到最低
Red Hat建议配置的 RocksDB 空间至少为数据设备大小的 4%
在Red Hat Ceph Storage 5 (ceph version 16)中,默认启用分片,从早期版本迁移过来的集群的 osd 中没有启用分片,从以前版本迁移过来的集群中的osd将不会启用分片
使用 验证一个 OSD 是否启用了 sharding ,并查看当前的定义
为 true 的时候说明默认启用了分片
osd 分片的参数定义
: 这是 的缓存设置。这里使用了 binned LRU 策略作为块缓存的替换策略。
: 这是 BlueStore 的 ,表示将日志写入硬盘而不是内存。这对数据持久性非常重要,因为任何未同步的写操作都会在下次启动时丢失。
: 这是 BlueStore 的 。预分配是一种优化技术,可以在写入新对象时事先分配足够的磁盘空间,以减少写入延迟和碎片。此处,“P”表示预分配已启用。
:在这个映射中
- m(3) 表示使用 mon0、mon1 和 mon2 作为监视器。
- p(3,0-12) 表示中有 13 个 PG,它们被分配到了 OSD 0 到 OSD 12 上
- O(3,0-13) 表示中也有 13 个 PG,它们被分配到了 OSD 0 到 OSD 13 上
:数据池用于存储客户端的数据。例如,如果您想在Ceph中创建一个文件系统或块设备,就必须将其存储在数据池中。数据池通常会经过复制或编码以提高容错性和可靠性。
:对象池用于存储Ceph内部使用的对象,如 等。这些对象也可以被视为元数据,因为它们包含了关于Ceph集群的配置信息和状态信息。与数据池不同,对象池通常不需要复制或编码,因为它们已经具有容错性和可靠性。
在大多数 用例中,会带来良好的性能。生产集群的最佳分片定义取决于几个因素,Red Hat建议使用默认值,除非面临显著的性能问题。
在生产升级的集群中,可能需要权衡在大型环境中为 启用分片所带来的性能优势和维护工作
可以使用 管理工具 重新共享 数据库,而无需重新配置 。要重新共享一个 ,需要停止守护进程并使用 选项传递新的 定义。 选项表示 数据 Location,默认为
作为存储管理员,可以使用 服务在集群中添加或删除osd,添加OSD时,需要满足以下条件:
- 设备不能有分区
- 设备不能被挂载
- 设备空间要求5GB以上
- 设备不能包含
使用 命令列出集群中主机中的设备
列中标签为 的节点为 发放的。如果需要查看已使用的存储设备,请使用 命令
使用 命令准备设备,该命令 删除所有分区并清除设备中的数据 ,以便将其用于资源配置,使用 选项确保删除上一个OSD可能创建的任何分区
Orchestrator 服务可以发现集群主机之间的可用设备,添加设备,并创建 OSD守护进程。Orchestrator 处理在主机之间平衡的新 osd 的放置,以及处理 BlueStore 设备选择
使用 命令提供所有可用的、未使用的设备
若要禁用 Orchestrator 自动供应 osd,请将非托管标志设置为 true
可以使用特定的设备和主机创建OSD进程,使用 命令创建带有指定主机和存储设备的单个OSD守护进程
停止 OSD 进程,使用带OSD ID的 命令
使用 命令移除OSD守护进程
释放一个OSD ID,使用 命令
使用服务规范文件描述OSD服务的集群布局,可以使用过滤器自定义服务发放,通过过滤器,可以在不知道具体硬件架构的情况下配置OSD服务,这种方法在自动化集群引导和维护窗口时很有用
下面是一个示例服务规范YAML文件,它定义了两个OSD服务,每个服务使用不同的过滤器来放置和BlueStore设备位置
服务指定任何主机都可以用于放置,并且该服务将由存储管理员管理,数据设备必须有一个100gb或更多的设备,提前写日志必须有一个10 - 20gb的设备。数据库设备必须是My-Disk型号
服务指定目标主机必须在node6和node10之间的节点上提供,并且服务将由协调器服务管理,数据、数据库和预写日志的设备路径必须 /dev/sdb、 /dev/sdc 和 /dev/sdd,此服务中的设备将被
执行ceph orch apply命令应用服务规范
命令是将逻辑卷部署为 的模块化工具,它在框架类型中使用了插件, 实用程序支持 插件和原始物理磁盘,它还可以管理由遗留的 ceph-disk 实用程序提供的设备
使用 命令手动创建和删除 ,在块存储设备 上创建一个新的BlueStore OSD:
create 子命令的另一种选择是使用 和 子命令,通过这种方法,osd逐渐引入到集群中,可以控制新的osd何时处于up或in状态,因此可以确保大量数据不会意外地在osd之间重新平衡
子命令用于配置,可以指定逻辑卷或设备名称,如果指定了设备名,则会自动创建一个逻辑卷
子命令为OSD启用一个单元,使其在启动时启动,使用子命令时,需要从命令的输出信息中获取OSD的fsid (UUID)。提供唯一标识符可以确保激活正确的OSD,因为OSD id可以重用
创建OSD后,使用命令启动OSD,使其在集群中处于up状态
子命令可以同时创建多个osd。
子命令用于查询节点上所有物理存储设备的信息
© 文中涉及参考链接内容版权归原作者所有,如有侵权请告知,这是一个开源项目,如果你认可它,不要吝啬星星哦 😃
https://docs.ceph.com/
https://access.redhat.com/documentation/zh-cn/red_hat_ceph_storage/5
https://github.com/ceph/ceph
CL260 授课老师课堂笔记
到此这篇ceph 部署(ceph 部署 bluestore)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/hd-yjs/38099.html