Ceph:关于Ceph 集群如何访问的一些笔记

这篇具有很好参考价值的文章主要介绍了Ceph:关于Ceph 集群如何访问的一些笔记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写在前面


  • 准备考试,整理 Ceph 相关笔记
  • 博文内容涉及,Ceph 集群四种访问方式介绍及 Demo,Ceph 客户端支持的操作介绍
  • 理解不足小伙伴帮忙指正

对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是对内心的恐惧 ——赫尔曼·黑塞《德米安》


Ceph 访问方式

Ceph 提供四种访问 Ceph 集群的方法:

  1. Ceph 原生 API (librados):通过 客户端调用 API 接口,最快
  2. Ceph 块设备(RBD、librbd),也称为 RADOS 块设备 (RBD) 镜像
  3. Ceph 对象网关(RADOSGW,RGW,librgw)
  4. Ceph 文件系统(CephFS、libcephfs)

Ceph:关于Ceph 集群如何访问的一些笔记

上图描述了Ceph集群的四种数据访问方法,支持访问方法的库,以及管理和存储数据的底层Ceph组件

Ceph 原生API (librados)

librados 是原生C 库,允许应用直接使用 RADOS 来访问 Ceph 集群中存储的对象,可以用 C++、Java、Python、Ruby、Erlang 和 PHP,编写软件以直接与 librados 配合使用可以提升性能,为了简化对 Ceph 存储的访问,也可以改为使用提供的更高级访问方式,如 RADOS 块设备、Ceph 对象网关 (RADOSGW) 和 CephFS

Demo

import rados

# 初始化 Ceph 集群连接
cluster = rados.Rados(conffile='/etc/ceph/ceph.conf')
cluster.connect()

# 获取所有 OSD 的状态信息
osd_stats = cluster.get_osdmap().dump()
for osd in osd_stats['osds']:
    print('OSD ID: {}, Up: {}, In: {}'.format(osd['osd'], osd['up'], osd['in']))

# 关闭 Ceph 集群连接
cluster.shutdown()

这个 Python 脚本通过 rados 模块来连接 Ceph 集群,然后使用 get_osdmap() 方法获取 OSD 的状态信息,并打印出每个 OSD 的 ID、Up 和 In 状态。最后使用 shutdown() 方法关闭连接。

RADOS 块设备(RBD)

Ceph 块设备(RADOS 块设备或 RBD)通过 RBD 镜像在 Ceph 集群内提供块存储。它是一种虚拟块设备

Ceph 分散在集群不同的 OSD 中构成 RBD 镜像的个体对象。由于组成 RBD 的对象分布到不同的 OSD,对块设备的访问自动并行处理

RBD 提供下列功能:

  1. Ceph 集群中虚拟磁盘的存储
  2. Linux 内核中的挂载支持
  3. QEMU、KVM 和 OpenStack Cinder 的启动支持

RBD 是指 Ceph 块设备(Ceph Block Device)。它是一种基于 Ceph 存储集群的虚拟块设备,可以提供高性能、可扩展和高可用性的存储服务,尤其适合于云计算和虚拟化环境中使用。

Demo

要使用 RBD,需要完成以下几个步骤:

创建 RBD 镜像,首先需要创建一个 RBD 镜像,可以使用 rbd create 命令来创建,例如:

$ rbd create <pool>/<image> --size <size>

其中 <pool> 是存储池名称,<image> 是镜像名称,<size> 是镜像大小。

映射 RBD 镜像,接下来需要将 RBD 镜像映射到本地系统上,可以使用 rbd map 命令来实现,例如:

$ rbd map <pool>/<image>

格式化和挂载 RBD 设备,完成映射后,RBD 镜像会作为一个设备出现在本地系统上,可以通过格式化和挂载来使用它,例如:

$ mkfs.ext4 /dev/rbdX
$ mount /dev/rbdX /mnt/rbd

其中 /dev/rbdXRBD 设备名,/mnt/rbd 是挂载点。

使用 RBD 设备,完成挂载后,就可以像使用本地磁盘一样使用 RBD 设备了,例如在 /mnt/rbd 下创建文件、目录等操作。要卸载 RBD 设备,可以使用 umount /mnt/rbd 命令,并通过 rbd unmap 命令来取消映射,例如:

$ rbd unmap /dev/rbdX

以上就是使用 Ceph 中的 RBD 的基本流程。值得注意的是,RBD 镜像的大小并不是固定不变的,也可以使用 rbd resize 命令来扩展或缩小镜像的大小。

Ceph 对象网关(RADOS 网关)

Ceph 对象网关(RADOS 网关、RADOSGW 或 RGW)是使用librados 构建的对象存储接口。它使用这个库来与 Ceph 集群通信并且直接写入到 OSD 进程。

它通过 RESTful API 为应⽤提供了网关,并且支持两种接口:Amazon S3 和 OpenStack Swift

Ceph 对象网关提供扩展支持,它不限制可部署的网关数量,而且支持标准的 HTTP 负载均衡器。它解决的这些案例包括:

  1. 镜像存储(例如,SmugMug 和 Tumblr)
  2. 备份服务
  3. 文件存储和共享(例如,Dropbox)

Demo

import boto3

# 初始化 S3 客户端连接
s3 = boto3.client('s3',
                  endpoint_url='http://<RGW_HOST>:<RGW_PORT>',
                  aws_access_key_id='<ACCESS_KEY>',
                  aws_secret_access_key='<SECRET_KEY>')

# 将文件上传到 Ceph 对象存储桶中
with open('/path/to/local/file', 'rb') as f:
    s3.upload_fileobj(f, '<BUCKET_NAME>', 'object_key')

# 从 Ceph 对象存储桶中下载文件
with open('/path/to/local/file', 'wb') as f:
    s3.download_fileobj('<BUCKET_NAME>', 'object_key', f)

# 删除 Ceph 对象存储桶中的对象
s3.delete_object(Bucket='<BUCKET_NAME>', Key='object_key')

Ceph 文件系统 (CephFS)

Ceph 文件系统 (CephFS) 是一种并行文件系统,提供可扩展的、单层级结构共享磁盘,Ceph 元数据服务器 (MDS) 管理与 CephFS 中存储的文件关联的元数据 ,这包括文件的访问、更改和修改时间戳等信息

Demo

在运行前,请确保已经安装了 ceph-fuse 工具,并正确配置了 CephFS 文件系统的访问密钥等信息

# 挂载 CephFS 文件系统
sudo mount -t ceph <MONITOR_IP>:<MONITOR_PORT>:<ROOT_DIR> <MOUNT_POINT> -o name=<USERNAME>,secret=<SECRET_KEY>

# 读取文件内容
cat <MOUNT_POINT>/path/to/file

# 卸载 CephFS 文件系统
sudo umount <MOUNT_POINT>

这个 shell 脚本使用 mount 和 umount 命令来挂载和卸载 CephFS 文件系统,并使用 cat 命令来读取指定文件的内容。其中<MONITOR_IP><MONITOR_PORT>是 Ceph 集群监视器的 IP 地址和端口号,<ROOT_DIR> 是 CephFS 文件系统的根目录,<USERNAME> <SECRET_KEY> 是访问 CephFS 的用户名和密码,<MOUNT_POINT> 是要挂载文件系统的本地目录路径,<MOUNT_POINT>/path/to/file 是要读取的文件路径。

Ceph客户端支持的操作

支持云计算的应用程序需要一个有异步通讯能力的简单对象存储接口,Ceph 存储集群提供了这样的接口。客户端直接并行访问对象,包括:

  • 池操作
  • 快照
  • 读/写对象
    • 创建或删除
    • 整个对象或字节范围
    • 追加或截断
  • 创建/设置/获取/删除 XATTRs
  • 创建/设置/获取/删除键/值对
  • 复合操作和 dual-ack 语义

当客户端写入 RBD 映像时,对象映射跟踪后端已存在的RADOS对象,当写入发生时,它会被转换为后端RADOS对象中的偏移量,当对象映射特性启用时,将跟踪RADOS对象的存在以表示对象存在,对象映射保存在librbd客户机的内存中,以避免在osd中查询不存在的对象

对象映射对于某些操作是有益的,例如:

  • 重新调整大小
  • 导出
  • 复制
  • 平衡
  • 删除

存储设备有吞吐量限制,这会影响性能和可伸缩性。存储系统通常支持条带化,即跨多个存储设备存储连续的信息片段,以提高吞吐量和性能。当向集群写入数据时,Ceph客户端可以使用数据分条来提高性能

博文部分内容参考

© 文中涉及参考链接内容版权归原作者所有,如有侵权请告知,这是一个开源项目,如果你认可它,不要吝啬星星哦 😃


https://docs.ceph.com/en/pacific/architecture/

https://docs.ceph.com

CL260 授课老师课堂笔记


© 2018-2023 liruilonger@gmail.com, All rights reserved. 保持署名-非商用-相同方式共享(CC BY-NC-SA 4.0)文章来源地址https://www.toymoban.com/news/detail-492362.html

到了这里,关于Ceph:关于Ceph 集群如何访问的一些笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关于jupyter的一些小笔记

    1.Jupyter Notebook:单/多行注释,组合键:选中代码,按Ctrl + /。 2.安装PHATE包 使用pip直接进行安装 成功解决AttributeError: module ‘numpy’ has no attribute ‘float’. 报错: 解决方案一: 不用改代码,重新安装numpy就可以 出现这个问题的原因:np.float从1.24起被删除。所用的代码是依赖

    2024年02月21日
    浏览(32)
  • 关于物联网mqtt主题设计的一些笔记

    在 Java 中使用 Eclipse Paho 或 Eclipse Mosquitto 实现将 IoT 设备的遗嘱主题配置。 例如,使用 Eclipse Paho 实现 IoT 设备遗嘱主题的配置: 创建连接选项并设置遗嘱主题: 连接到 MQTT 服务器: 当设备的连接意外断开时,服务器将发布以设备遗嘱主题为主题的遗嘱消息,以告知其他客户

    2024年02月11日
    浏览(38)
  • DNS:关于 DNS 基本概念的一些笔记整理

    分享一些 DNS 的笔记整理 博文内容涉及: DNS 历史介绍 DNS 解析顺序 DNS 基本概念 资源类型介绍 DNS 安全 理解不足小伙伴帮忙指正 傍晚时分,你坐在屋檐下,看着天慢慢地黑下去,心里寂寞而凄凉,感到自己的生命被剥夺了。当时我是个年轻人,但我害怕这样生活下去,衰老

    2024年02月02日
    浏览(93)
  • 机器学习笔记 - 关于GPT-4的一些问题清单

            据报道,GPT-4 的系统由八个模型组成,每个模型都有 2200 亿个参数。GPT-4 的参数总数估计约为 1.76 万亿个。         近年来,得益于 GPT-4 等高级语言模型的发展, 自然 语言处理(NLP) 取得了长足的进步。 凭借其前所未有的规模和能力, GPT-4 为语言 AI​​设立

    2024年02月13日
    浏览(45)
  • 关于通过matlab实现Canny边缘处理的一些笔记

    最近看了一些神经网络处理图像的视频,受到卷积核的启发,突然对图像处理感兴趣,于是就单从边缘检测算法入手,学习了比较高级的Canny边缘处理,也通过matlab实现了Canny边缘处理。 相比较于通过soble算子sx和sy处理,提取水平和竖直边缘信息,平方和相加开根号得到的边

    2024年02月05日
    浏览(94)
  • 关于Open Shift(OKD) 中 用户认证、权限管理、SCC 管理的一些笔记

    因为参加考试,会陆续分享一些 OpenShift 的笔记 博文内容为 openshift 用户认证和权限管理以及 scc 管理相关笔记 学习环境为 openshift v3 的版本,有些旧 这里如果专门学习 openshift ,建议学习 v4 版本 理解不足小伙伴帮忙指正 对每个人而言,真正的职责只有一个:找到自我。然后

    2023年04月25日
    浏览(42)
  • 【Ceph】Ceph集群应用详解

    接上文基于ceph-deploy部署Ceph集群详解 Pool是Ceph中 存储Object对象抽象概念 。我们可以将其理解为 Ceph存储上划分的逻辑分区 ,Pool由多个PG组成;而 PG通过CRUSH算法映射到不同的OSD上 ;同时Pool可以设置副本size大小,默认副本数量为3。 Ceph客户端向monitor请求集群的状态,并向P

    2024年02月16日
    浏览(41)
  • 【Ceph】基于ceph-deploy部署Ceph集群详解

    DAS(直接附加存储,是 直接接到计算机主板总线上的存储 ) IDE、SATA、SCSI、SAS、USB接口的磁盘 所谓接口就是一种 存储设备驱动下的磁盘设备 ,提供 块级别的存储 NAS(网络附加存储,是 通过网络附加到当前主机文件系统之上的存储 ) NFS、CIFS、FTP 文件系统级别的存储,本

    2024年02月16日
    浏览(39)
  • ceph集群搭建详细教程(ceph-deploy)

    ceph-deploy比较适合生产环境,不是用cephadm搭建。相对麻烦一些,但是并不难,细节把握好就行,只是命令多一些而已。 服务器主机 public网段IP(对外服务) cluster网段IP(集群通信) 角色 deploy 192.168.2.120 用于部署集群、管理集群 ceph-node1 192.168.2.121 192.168.6.135 ceph-mon、ceph-mgr、

    2024年02月04日
    浏览(39)
  • 【Ceph集群应用】Ceph块存储之RBD接口详解

    接上文基于ceph-deploy部署Ceph集群详解 (1)创建一个名为rbd-demo的专门用于RBD的存储池 (2)将存储池转换为RBD模式 (3)初始化存储池 (4)创建镜像 (5)镜像管理 查看存储池下存在哪些镜像 查看镜像的详细信息 修改镜像大小 直接删除镜像 推荐使用trash命令,这个命令删除

    2024年02月16日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包