首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

分布式存储系统 Ceph 实战操作

一、概述

Ceph是当前非常流行的开源分布式存储系统,具有高扩展性、高性能、高可靠性等优点,同时提供块存储服务(rbd)对象存储服务(rgw)以及文件系统存储服务(cephfs),Ceph在存储的时候充分利用存储节点的计算能力,在存储每一个数据时都会通过计算得出该数据的位置,尽量的分布均衡。目前也是OpenStack的主流后端存储。

二、cephadm 工具的使用

官方文档:https://docs.ceph.com/en/latest/cephadm/

1)cephadm 工具的介绍

cephadm 是用于管理 Ceph 集群的实用程序或者是管理工具。

Cephadm的目标是提供一个功能齐全、健壮且维护良好的安装和管理层,可供不在Kubernetes中运行Ceph的任何环境使用。具体特性如下:

将所有组件部署在容器中—— 使用容器简化了不同发行版之间的依赖关系和打包复杂度。当然,我们仍在构建RPM和Deb软件包,但是随着越来越多的用户过渡到cephadm(或Rook)并构建容器,我们看到的特定于操作系统的bug就越少。

与Orchestrator API紧密集成—— Ceph的Orchestrator界面在cephadm的开发过程中得到了广泛的发展,以匹配实现并清晰地抽象出Rook中存在的(略有不同)功能。最终结果是不管是看起来还是感觉都像Ceph的一部分。

不依赖管理工具——Salt和Ansible之类的工具在大型环境中进行大规模部署时非常出色,但是使Ceph依赖于这种工具意味着用户还需要学习该相关的软件。更重要的是,与专为管理Ceph而专门设计的部署工具相比,依赖这些工具(Salt和Ansible等)的部署最终可能变得更加复杂,难以调试并且(最显着)更慢。

最小的操作系统依赖性—— Cephadm需要,和。任何当前的Linux发行版都可以。

将群集彼此隔离—— 支持多个Ceph集群同时存在于同一主机上一直是一个比较小众的场景,但是确实存在,并且以一种健壮,通用的方式将集群彼此隔离,这使得测试和重新部署集群对于开发人员和用户而言都是安全自然的过程。

自动升级—— 一旦Ceph“拥有”自己的部署方式,它就可以以安全和自动化的方式[升级Ceph。

从“传统”部署工具轻松迁移——我们需要从现有工具(例如ceph-ansible,ceph-deploy和DeepSea)中现有的Ceph部署轻松过渡到cephadm。

以下是一些事情的列表 cephadm 可以做:

cephadm 可以将 Ceph 容器添加到集群。

cephadm 可以从集群中移除 Ceph 容器。

cephadm 可以更新 Ceph 容器。

2)cephadm 安装

3)cephadm 常用命令使用

一般使用cephadm 用作环境初始化,其它的操作交由ceph工具完成,常用命令如下:

cephadm模型有一个简单的“ Bootstrap ”步骤,该步骤从命令行启动,该命令行在本地主机上启动一个最小的Ceph群集(一个monitor 与 manager 守护程序)。然后,使用orchestrator命令部署集群的其余部分,以添加其他主机,使用存储设备并为集群服务部署守护程序。

4)启用 ceph shell

cephadm 命令一般只是作为部署的引导作用。 但是,我们建议启用对 ceph 命令,因为ceph命令更加简洁强大。

您可以安装  包,其中包含所有 Ceph 命令,包括 ceph, rbd, mount.ceph (用于安装 CephFS 文件系统)等:

接下来就可以开心的使用ceph命令部署软件等等。

三、ceph 命令使用

上面我们已经安装了ceph的全家桶,这里就不重复了。

1)添加新节点

2)使用 ceph 安装软件

删除OSD节点

查看服务

3)主机操作

1、列出主机

2、添加主机

要将每个新主机添加到群集,请执行以下步骤:

【1】在新主机的根用户的 authorized_keys 文件:

【2】告诉 Ceph 新节点是集群的一部分:

还可以包含一个或多个标签以立即标记 新主机。

3、删除主机

删除所有守护程序后,可以安全地从集群中移除主机 从它。

【1】要从主机中排出所有守护程序,请运行以下形式的命令:

【2】删除所有守护程序后,可以使用以下命令删除主机:

如果主机处于脱机状态且无法恢复,仍可以通过以下方法将其从群集中移除:

4、主机标签

业务流程协调程序支持将标签分配给主机。标签 是自由形式的,本身和每个主机都没有特定的含义 可以有多个标签。它们可用于指定放置 的守护进程。

【1】添加标签

【2】删除标签

特殊主机标签

以下宿主标签对头孢具有特殊含义。 一切始于

: 不要在此主机上调度或部署守护程序.

此标签可防止 cephadm 在此主机上部署守护程序。 如果它被添加到 已经包含 Ceph 守护进程的现有主机,将导致 cephadm 移动 其他位置的守护程序(OSD 除外,不会自动删除)。

: 不自动调整此主机上的内存.

此标签将阻止守护程序内存被调整,即使 osd_memory_target_autotune 或为一个或多个守护程序启用类似选项 在该主机上。

: 将 client.admin 和 ceph.conf 分发到此主机.

默认情况下,一个标签应用于群集中的第一个主机(其中 引导程序最初是运行的),并且  密钥设置为分发 到该主机通过 功能。 添加此标签 到其他主机通常会导致 CEPHADM 部署配置和密钥环文件 在 .从版本 16.2.10和 17.2.1 开始 添加到默认位置 Cephadm 还存储配置和密钥环 文件中的文件 目录。

4)维护模式

将主机置于维护模式和退出维护模式(停止主机上的所有 Ceph 守护进程):

5)查看服务状态

查看一个的状态 在 Ceph 集群中运行的服务中,执行以下操作:

6)查看守护进程状态

首先,打印业务流程协调程序已知的所有守护程序的列表:

7)OSD 服务

1、列出设备

ceph-volume 按顺序不时扫描群集中的每个主机 确定存在哪些设备以及它们是否有资格 用作 OSD。

查看列表,运行以下命令:

在上面的示例中,您可以看到名为“运行状况”、“标识”和“故障”的字段。 此信息通过与 libstoragemgmt.默认情况下, 此集成已禁用(因为 libstoragemgmt 可能不是 100% 与您的硬件兼容)。 要使 cephadm 包括这些字段, 启用CEPHADM的“增强设备扫描”选项,如下所示;

2、创建新的 OSD

有几种方法可以创建新的 OSD:

【1】告诉 Ceph 使用任何可用和未使用的存储设备:

【2】从特定主机上的特定设备创建 OSD:

【3】试运行,不是真正的执行

3、移除 OSD

从集群中删除 OSD 涉及两个步骤:

从集群中撤出所有归置组 (PG)

从集群中删除无 PG 的 OSD

以下命令执行这两个步骤:

4、监控 OSD 删除的状态

5、停止删除 OSD

6、激活现有 OSD

如果重新安装主机的操作系统,则需要激活现有的 OSD 再。对于此用例,cephadm 提供了一个包装器 激活 那 激活主机上的所有现有 OSD。

7、查看数据延迟

8、详细列出集群每块磁盘的使用情况

8)pool相关操作

1、查看ceph集群中的pool数量

2、在ceph集群中创建一个pool

9)PG 相关

PG =“放置组”。当集群中的数据,对象映射到编程器,被映射到这些PGS的OSD。

1、查看pg组的映射信息

2、查看一个PG的map

3、查看PG状态

4、显示一个集群中的所有的pg统计

这里只是列举了一些常用的操作命令,更多的命令可以查看帮助或者查看官方文档。

四、实战操作演示

1)块存储使用(RDB )

1、 使用 create 创建 pool 池

【温馨提示】PG (Placement Group),pg是一个虚拟的概念,用于存放object,PGP(Placement Group for Placement purpose),相当于是pg存放的一种osd排列组合。

获取 pool 池属性信息,可以重新设置,有很多参数,都可以如下设置

2、需要初始化 pool

3、创建 rbd 块设备

4、查看块设备信息

5、删除块设备

6、设备挂载

由于没有虚拟机进行挂载,所以需要使用内核 map 进行挂载;

[root@local-168-182-130 ceph]# rbd map ceph-demo/rbd-demo.img

rbd: sysfs write

RBD image feature set mismatch. You can disable features  by the kernel with "rbd feature disable ceph-demo/rbd-demo.img object-map fast-diff deep-flatten".

In some cases useful info is found in syslog - try "dmesg | tail".

rbd: map : (6) No such device or address

映射的过程当中出现错误,这是因为 Centos7 当中不支持这几个特性,我们可以在创建时指定 features 。

再次挂载,挂载成功

查看设备列表

通过fdisk 查看设备列表

使用 rbd 设备

7、块设备扩容

设备可以扩容,也可以缩容,但不建议使用缩容,有可能产生数据丢失。

8、卸载

2)文件系统使用(CephFS)

1、查看ceph文件系统

2、创建存储池

【温馨提示】PG (Placement Group),pg是一个虚拟的概念,用于存放object,PGP(Placement Group for Placement purpose),相当于是pg存放的一种osd排列组合。

3、创建文件系统

4、查看存储池配额

5、内核驱动挂载ceph文件系统

【1】创建挂载点

【2】获取存储密钥,如果没有前往管理节点重新复制

【3】挂载

【4】卸载

6、常用命令

3)对象存储使用(RGW)

是和Ceph的对象存储集群(RADOS),Ceph的分布式文件系统的一部分进行交互是一种实用工具。

1、查看ceph集群中有多少个pool

2、显示整个系统使用率

3、创建一个pool

4、创建一个对象object

5、查看对象文件

6、删除一个对象

7、通过api接口使用 Ceph 存储存储

为了使用 Ceph SGW REST 接口, 我们需要为 S3 接口初始化一个 Ceph 对象网关用户. 然后为 Swif接口新建一个子用户,最后就可以通过创建的用户访问对象网关验证了。

官方文档:https://docs.ceph.com/en/latest/api/#ceph-restful-api

这里使用, 是 RADOS 网关用户管理工具,可用于创建和修改用户。

【1】创建 S3 网关用户

info

【2】测试访问 S3 接口

【温馨提示】这里使用了python-boto 包,使用认证信息连接 S3,然后创建了一个 my-first-s3-bucket 的 bucket,最后列出所有已创建的 bucket,打印名称和创建时间。

【3】创建 Swift 用户

info

【4】创建密钥

info

【5】测试访问 Swift 接口

【5】S3相关操作

一般是通过api接口使用对象存储,这里只是演示了一个非常简单的示例。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230331A000P400?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券