002.RHCS-配置Ceph存储集群

一 前期准备

  1 [kiosk@foundation0 ~]$ ssh ceph@serverc				#登录Ceph集群节点
  2 [ceph@serverc ~]$ ceph health					#确保集群状态正常
  3 HEALTH_OK

提示:相关部署参考《001.Ansible部署RHCS存储集群》。

二 存储池概述

2.1 存储池

Red Hat Ceph存储池池是Red Hat Ceph存储集群用于存储对象的逻辑分区。

池有特定的属性:池类型,它确定池用于确保数据持久性的保护机制。

replication类型在集群中分布每个对象的多个副本。

erasure coding类型将每个对象分割成块,并将它们与其他擦除编码块一起分发,以使用自动纠错机制保护对象。

池中存在一定的数量的PG,它们将它们的对象存储在一组由CRUSH算法确定的osd中。

Ceph使用CRUSH规则集来标识哪个放置组应该包含它存储的每个对象。

访问级别用于确定不同用户的访问权限的访问权限。

当Ceph在池中存储对象时,它使用CRUSH算法将对象分配给池中的一个PG。根据池的配置和CRUSH算法,PG自动映射到一组OSDs。这决定了Ceph用来存储对象的OSDs。池类型决定该对象如何在该集合的OSDS中复制或存储。

存储管理员可以配置CRUSH,以便Ceph存储使用特定类型存储设备(如ssd)或位于不同物理位置的设备上的osd来存储对象。

提示:池中放置组的数量对性能有重要影响。如果在池中配置太少的放置组,那么需要在每个PG中存储太多的数据,如果您在一个池中配置了太多的放置组,OSDs将需要大量的RAM和CPU资源。通常,一个池应该配置为每个OSD包含100-200个放置组。默认情况下,当您创建一个池时,Ceph会检查每个OSD的pg数量是否已经超过200,如果是,Ceph将不会创建池。如果一个池已经达到了这个限制,ceph health命令还会显示一个警告。这个限制由/etc/ceph/ceph conf配置文件中的mon_max_pg_per_osd参数控制。

三 存储池常见操作

3.1 启用存储池

创建池之后,管理员必须显式地配置能够使用它的Ceph应用程序的类型:Ceph块设备(也称为RADOS块设备或RBD)、Ceph对象网关(也称为RADOS网关或RGW)、Ceph文件系统(CephFS)。

命令:ceph osd pool application enable pool-name app

解析:

app通常指:

cephfs:用于Ceph文件系统;

rbd:用于Ceph块设备;

rgw:用于Ceph对象网关。

3.2 池相关命令

命令

含义

备注

ceph osd lspools

列出集群中的池

ceph osd pool ls detail

获取更多池相关信息

ceph df

获取池使用统计数据

ceph osd pool stats

获取池性能统计数据

ceph osd df

显示OSDs上的磁盘使用统计信息

3.3 池配额

管理员可以设置配额来限制可以存储在池中的最大字节数或最大对象数。

命令:ceph osd pool set-quota pool-name max_objects obj-count max_bytes bytes

提示:当Ceph达到池配额时,操作将被无限期阻塞。

3.4 池快照操作

重命名池:ceph osd pool rename current-name new-name

提示:重命名不会影响存储在池中的数据。

管理快照:ceph osd pool mksnap pool-name snap-name #创建快照

管理快照:ceph osd pool rmsnap pool-name snap-name #删除快照

检索快照:rados -p pool-name -s snap-name get object-name file

回滚快照:rados -p pool-name rollback object-name snap-name

注意:Ceph不支持对erasure类型池进行快照。

3.5 池的修改操作

设置池参数:ceph osd pool set pool-name parameter value

查看池参数:ceph osd pool get pool-name parameter

查看池所有参数:ceph osd pool get pool-name all

常见参数:size参数控制池的副本数量,并映射到osd_pool default_size配置文件参数(默认为3)。pg_num参数控制池的放置组的数量,并映射到osd_pool_default_pg_num配置文件参数(默认为8)。

3.6 删除池

命令:ceph osd pool delete pool-name pool-name --yes-i-really-really-mean-it

注意:在Red Hat Ceph Storage 3中,为了提供更高的保护,Ceph将mon allow pool delete confiquration参数设置为false。当配置此参数后,使用--yes-i-really-really-mean-it选项,ceph osd池删除命令不会导致池的删除。您可以将mon允许池删除参数设置为true,并重新启动mon服务以允许池删除。

在配置mon_alow_pool_delete为true后,仍然可以通过在池级别将no delete选项设置为ture来保护池不被删除,命令:ceph osd pool set pool-name nodelete true。

提示:删除池之后,应该删除与该池相关的所有配置,包括专用于池的用户和CRUSH map规则。

3.7 池的命名空间

在池中配置的命名空间是池中对象的逻辑组。限制用户用户对池的访问,使用户只能在该名称空间中存储或检索对象。名称空间的优点是可以使用它们来限制用户对池的一部分的访问,它们允许对池进行逻辑分区,并将应用程序限制在池中特定的名称空间内。因此,几个应用程序可以安全地共享一个池,并且不至于池的数量过多。

提示:名称空间目前只支持直接使用librados的应用程序。

要将对象存储在命名空间中,客户机应用程序必须提供池和名称空间名称。默认情况下,每个池包含一个名称空间,名称为空,称为defaul名称空间。

例如,从池中存储和检索对象的rados命令接受-N name或--namespace=name选项来指定要使用的名称空间。

命令:rados -p mytestpool -N system put srv /etc/services

解析:将/etc/services文件作为srv对象存储在mytestpool池中的system命名空间中。

命令:rados -p mytestpool -N system ls

解析:在所有名称空间中列出池中的所有对象。

提示:若需要以JSON格式返回结果,可添加--format=ison选项。

四 复制存储池

4.1 创建复制存储池

命令:ceph osd pool create pool-name pg-num [pgp-num] [replicated] [crush-ruleset-name] \ [expected-num-objects]

解析:

pool-name:池名称;

pg-num:池中的pg总数;

pgp-num:池的有效放置组数。通常,这应该等于pg的总数。

duplicate:指定这是一个复制池,如果不包含在命令中,则通常是默认值。

crush-ruleset-name是:用于此池的CRUSH名称。默认值为:osd_pool_default_crush_replicated_ruleset。

提示:一个OSD需要管理的PGs越多,它需要的资源就越多。同时配置红帽Ceph存储重要的创建池之后,不能减少池中放置组的数量。但是,可以增加放置组的数量。

五 纠删码池

5.1 纠删码池概述

纠删码池使用擦除纠删码而不是复制来保护对象数据。当将一个对象存储在纠删码池中时,该对象被划分为许多数据块,这些数据块存储在单独的OSDs中。此外,还根据数据块计算了大量的纠删码块,并将其存储在不同的osd中。如果包含块的OSD失败,可以使用纠删码块来重构对象的数据。

纠删码池与复制池不同,它不依赖于存储每个对象的多个完整副本。

每个对象的数据被分成k个数据块。

计算了m个编码块大小与数据块大小相同的纠删码块。

对象存储在总共k + m 个OSDS上。

提示:纠删码池比复制池需要更少的存储空间来获得类似级别的数据保护。可以降低存储集群的成本和大小。然而,计算纠删码块会增加CPU和内存开销,从而降低纠删码池的性能。此外,在Red Hat Ceph Storage 3中,需要部分对象写的操作不支持擦除编码池。目前纠删码池的使用限制在执行完整对象写入和追加的应用程序中,比如Ceph对象网关。即Red Hat Ceph存储目前只支持通过Ceph对象网关访问的纠删码池。

5.2 创建纠删存储池

命令:ceph osd pool create pool-name pg-num [pgp-num] erasure [erasure-code-profile] \[crush-ruleset-name] [expected-num-objects]

解析:

pool-name:池名称;

pg-num:池中的pg总数;

pgp-num:池的有效放置组数。通常,这应该等于pg的总数。

erasure:指定这是一个纠删码池,如果不包含在命令中,则默认是复制池。

erasure-code-profile:指定是要使用的配置文件。可以使用ceph osd erasure-code-profile创建新的配置文件,配置文件定义要使用的k和m值以及erasure插件。

crush-ruleset-name是:用于此池的CRUSH名称。如果没有设置,Ceph将使用erasure-code-profile文件中定义。

提示:一个OSD需要管理的PGs越多,它需要的资源就越多。同时配置红帽Ceph存储重要的创建池之后,不能减少池中放置组的数量。但是,可以增加放置组的数量。

5.3 纠删池配置文件

纠删池配置文件配置纠删池用于存储对象的数据块和纠删块的数量,以及要使用的擦除codinq插件和算法。可以创建新的配置文件来定义一组新的纠删参数。Ceph在安装期间创建名为default的配置文件。这个配置文件被配置为将对象分成两个数据块和一个编码块。Ceph有一个基于插件的系统来控制擦除编码是如何实现的,并且已经创建了许多不同的插件,它们以不同的方式管理擦除编码。默认配置文件使用Jerasure插件,这是最灵活和通用的选项。Red Hat Ceph Storage 3还支持本地可修复擦除代码(LRC)插件。

提示:红帽Ceph存储只支持Jerasure和本地可修复擦除代码(LRC)插件。

查看参数:ceph osd erasure-code-profile get default

设置参数:ceph osd erasure-code-profile set profile-name arguments

参数

含义

备注

k

跨osd分割的数据块的数量,默认值是2。

m

数据变得不可用之前可能失败的osd的数量,默认为1。

directory

默认值是/usr/1ib64/ceph/erasure-code,算法插件库的路径。

plugin

默认值是jerasure,通常有本地可修复擦除代码(LRC)和ISA(仅限Intel)。

crush-failure-domain

定义CRUSH故障域,该域控制块的位置。默认情况下,设置为host,这确保对象的块被放置在不同的主机上。如果设置为osd,则对象的块可以放在同一主机上的osd上。将故障域设置为osd的弹性较小,因为如果主机失败,主机上的所有osd都将失败。还可以定义其他故障域,并使用它们来确保将块放在数据中心不同机架上的主机上的OSDs上,或者进行其他类型的定制。

crush-device-class

此可选参数仅为池选择由该类设备支持的OSDs。典型的类可能包括hdd、ssd或nvme。

crush-root

这个可选参数设置压碎规则集的根节点。

key=value

插件可能具有该插件特有的键值参数。

technique

technique为每个插件都提供了一组实现不同算法的不同技术。对于Jerasure插件,默认的技术是reed_sol_van。其他包括:reed_sol_r6_op、cauchy_orig、cauchy_good、liberation、blaum_roth和liber8tion。

命令:ceph osd erasure-code-profile set myprofile k=3 m=2 crush-failure-domain=rack

解析:创建一个概要文件,该概要文件将对象划分为三个数据块(k=3),并用两个编码块(m=2)保护它们,crush-failure-domain=rack参数确保Ceph不会在同一个机架中存储两个块。

命令:

ceph osd erasure-code-profile ls #列出现有的配置文件

ceph osd erasure-code-profile rm profile-name #删除现有配置文件

ceph osd erasure-code-profile get profile-name #查看现有配置文件

注意:不能修改或更改现有池的擦除代码纠删配置文件。

六 Ceph配置文件

6.1 Ceph配置文件介绍

默认情况下,Ceph守护进程和客户机/etc/ceph/ceph.conf文件读取配置。修改配置参数时,必须确保所有集群节点和客户端/etc/ceph/ceph.conf文件一致。若使用Ansible来管理您的Red Hat Ceph存储集群配置,它将使您的Ceph配置文件在其所有节点上保持同步。

ceph.conf文件使用基于ini的文件格式,包含几个部分,其中包括与Ceph守护进程和客户机相关的配置。

提示:参数名称可以使用空格、下划线或破折号作为分隔符,例如osd journal size、osd_journal_size和osd-journal-size都是有效的等效参数名称。

使用特定守护进程的设置进行分组:

  • [global]:存储所有守护进程共有的一般配置和设置。任何进程都会读取该配置,包括客户机。在其他更具体的配置中会重写global设置的参数。
  • [mon]:存储与monitors(mon)相关的配置。
  • [osd]:存储与osd守护进程相关的配置。
  • [mgr]:存储与managers(MGR)相关的配置。
  • [mds]:存储与元数据服务器(mds)相关的配置。
  • [client]:存储应用于所有Ceph客户机的配置。

提示:RHCS在/usr/share/doc/ceph/sample.ceph.conf中提供了一个配置示例文件。

注意:若需要针对某节点特定配置,可使用[daemon-type.instance-id]进行复写,参考如下:

[mon]

#所有mon节点的配置;

[mon.serverc]

#serverc区别于mon的独特配置。

对于客户端instance-id为用户名。

6.2 常见配置

模块

参数

含义

元数据模块

$cluster

定义RHCS集群的名称。默认设置为ceph,并在/etc/sysconfig/ceph文件中定义。

$type

定义守护进程类型。对于监视器,将其设置为mon, OSDs使用osd,元数据服务器使用mds,管理器使用mgr,客户机应用程序使用client。

$id

定义守护进程实例ID。对于客户机应用程序,它是用户名。

$name

定义守护进程名和实例ID。相当于$type.$ID的简写。

$host

定义守护进程所运行的主机名。

global模块定义全局参数,即定义集群范围的参数。它通常包括以下配置设置:

  • 带有所有监视器列表的mon主机。
  • mon初始成员设置为必须在集群启动时启动的监视器列表,以建立仲裁。
  • 启用或禁用Ceph组件之间使用cephx身份验证的设置(默认启用)。
  • Ceph环境中使用的网络,通常一个用于OSDs(集群网络),一个用于客户机(公共网络)。

6.3 查看配置

命令:ceph daemon type.id config show #查看所有参数和值

示例:ceph daemon osd.0 config show

命令:ceph daemon type.id config get parameter #查看指定参数

示例:ceph daemon type.id config get mds_data

6.4 Ansible Ceph配置文件

在部署节点上使用Ansible部署,调用/usr/share/ceph-ansible中的Ansible Playbook部署或更新Red Hat Ceph存储集群时,它都会在每个节点上重新创建/etc/ceph/ceph.conf文件。

在/usr/share/ceph-ansible_group_vars/,编辑ceph_conf_overrides变量,以添加新的节或配置参数。Ansible将该变量转换为INI格式,并将其添加到生成的ceph.conf文件。

提示:部署新的配置到节点时候,需要在/usr/share/ceph-ansible目录使用ansibe-playbook site.yml命令。

七 启动和停止Ceph

7.1 概述

使用systemct1命令管理Ceph服务。systemctl命令可用于管理Ceph服务。有一个systemd命令控制所有Ceph守护进程,也存在独立的命令只控制特定类型的守护进程。

  • ceph.target:启动或停止当前节点上的所有守护进程
  • ceph-type.target:启动或停止特定类型的所有守护进程

7.2 常见命令

命令

含义

备注

systemctl stop ceph-$type@$id

停止特定守护进程。

systemctl stop ceph-osd.target

停止所有OSD守护进程。

systemctl stop ceph.target

停止所有ceph守护进程。

systemctl start ceph-$type@$id

启动特定守护进程。

systemctl start ceph-osd.target

启动所有OSD守护进程。

systemctl start ceph.target

启动所有ceph守护进程。

systemctl restart ceph-$type@$id

重启特定守护进程。

systemctl restart ceph-osd.target

重启所有OSD守护进程。

systemctl restart ceph.target

重启所有ceph守护进程。

八 管理Ceph认证

8.1 CephX认证

在RHCS集群中,用户使用授权机制在客户端、应用程序和守护进程之间通信。为了安全地对这些用户进行身份验证,Ceph使用基于共享密钥的cephx身份验证协议。

提示:默认情况下,安装过程已启用cephx,因此RHCS集群需要所有客户机应用程序的身份验证和适当授权。

Ceph守护进程使用的帐户具有与关联守护进程相匹配的名称,如osd.1或mgr.serverc。Ansible Playbook在安装期间已创建它们。

使用librados的客户端应用程序使用的帐户的名称以client..开头。

例如,当将OpenStack与Ceph集成时,通常创建一个名为client.openstack专用帐户。此外,当Ansible部署Ceph对象网关时,它会创建一个名为client.rgw.hostname的专用帐户。最后,如果您正在librados之上开发自定义软件,还应该为它创建一个具有适当功能的特定帐户。

管理员使用的帐户也以client开头的名称。,当运行ceph和rados等命令时使用。通常创建一个名为client.admin超级账户,具有允许它访问所有内容和修改集群配置的功能。默认情况下,在运行管理命令时,不使用--name或--id选项显式指定用户名。

8.2 key-ring密钥环

密钥环文件对于身份验证,必须使用Ceph用户名和包含用户密钥的密匙环文件配置客户机。Ceph用户需要这个key-ring文件来访问Red Hat Ceph存储集群。

Ceph会自动创建的每个用户帐户生成密匙环文件。若相应的客户端需要访问Ceph,需要将该文件复制到需要它的客户机系统或应用程序服务器。

在这些客户机系统上,librados使用/etc/ceph/ceph.conf配置文件中的keyring参数来定位key-ring文件。它的默认值是/etc/ceph/$cluster.$name。keyring。

提示:当使用ceph,rados,rbd等命令的时候,可通过--id和--keyring指定相应的用户和密钥环,默认使用client.admin用户。若keyring保存在默认路径,可省略--keyring选项。

注意:指定用户的时候,不需要带client,只需要带name即可。ceph会自动加上client。

8.3 权限管理

当创建一个新的用户帐户时,需要授予它权限来控制该用户在RHCS集群中被授权做什么。cephx中的权限称为功能,可以根据守护程序类型(mon、osd、mgr或mds)授予它们。

功能的作用:

  • 限制对池、池的名称空间或一组基于应用程序标记的池中的数据的访问。
  • 授权RHCS集群中的守护进程彼此交互。

常见权限:

  • r:授予读权限。每个用户帐户应该至少具有对监视器的读访问权,以便能够检索粉碎地图。
  • w:授予写权限。客户端需要写访问来存储和修改OSDs上的对象。对于manager(MGRs),w授予启用或禁用模块的权利。
  • x:授予执行扩展对象类的授权。这允许客户端对对象执行额外的操作,例如使用rados lock get设置锁或使用RBD list列出RBD映像。
  • *:授予完全访问。
  • class-read和class-write:是x的子集,主要在用于RBD的池中使用它们。

8.4 常见授权操作

  • 授予权限

命令示例:ceph auth get-or-create client.formyapp1 \

mon 'allow r' \

osd 'allow w'

解释:创建formyapp1用户,并授予mon的读权限,osd的写权限。

cephx支持使用功能配置文件定义相关用户权限。

  • 限定权限

命令示例:ceph auth get-or-create client.forrbd \

mon 'profile rbd' \

osd 'profile rbd'

解释:使用rbd配置文件定义新的forrbd用户帐户的访问权限。客户机应用程序可以使用这个帐户使用RADOS块设备基于块访问Ceph存储。

  • 特定池权限限定

限制访问您应该限制用户OSD权限,以便用户只能访问他们需要的池。

命令示例:ceph auth get-or-create client.formyapp2 \

mon 'allow r' \

osd 'allow rw pool=myapp'

解释:创建formyapp2用户,并限制仅对myapp池的读写访问,如果在配置功能时没有指定池,Ceph将在所有现有池上设置它们。

  • 特定对象限定

cephx还可以通过对象名称前缀来限制对obiects的访问。

命令示例:ceph auth get-or-create client.formyapp3 \

mon 'allow r' \

osd 'allow rw object_prefix pref'

解释:限制只能访问名称以pref开头的对象。

  • 特定命名空间限定

通过名称空间。应用程序可以使用名称空间对池中的对象进行逻辑分组,然后可以将用户帐户限制为属于特定名称空间的对象。

命令示例:ceph auth get-or-create client.designer \

mon 'allow r' \

osd 'allow rw namespace=photos'

  • 特定路径限定

在Ceph文件系统(CephFS)中使用此方法限制对特定目录的访问。

命令示例:

ceph fs authorize cephfs client.wegdesigner /webcontent rw

ceph auth get client.wegdesigner

  • 特定命令限定

通过监控命令,将管理员限制为特定的命令列表。

命令示例:ceph auth qet-or-create client.operator1 \

mon 'allow r,allow command "auth get-or-create",allow command "auth list"'

解释:创建operator1用户帐户,并将其访问权限限制为两个命令。

8.5 常见用户管理

命令

含义

备注

ceph auth list

列出用户及其功能

ceph auth get client.admin

列出特定帐户的详细信息。

ceph auth print-key client.admin

列出特定用户的密钥环信息。

ceph auth export client.operator1 > ~/operator1.export

导出和导入用户帐户。

ceph auth import -i ~/operator1.export

ceph auth get-or-create client.application1 \ mon 'allow r' \ osd 'allow rw' \ - o /etc/ceph/ceph.client.application1.keyring

创建一个新用户帐户并生成其密钥。

创建用户默认情况下将此键输出到stdout,因此建议加-o输入到具体文件,以便保存。

ceph auth caps client.application1 \ mon 'allow r' \ osd 'allow rw pool=mypool'

修改用户功能。

ceph auth caps命令覆盖所有现有功能,因此在使用此命令时,必须为所有守护进程指定完整的功能集,而不仅仅是要修改的守护进程。

ceph auth caps client,application1 osd ''

删除所有功能。

使用一个空字符串删除所有功能。

ceph auth del client.application1

删除用户。

建议同时手动删除key密钥环。

九 创建replicated类型池

9.1 创建复制存储池

  1 [ceph@serverc ~]$ ceph osd pool create mytestpool 64	#CRUSH默认使用replicated_rule

9.2 开启rbd

  1 [ceph@serverc ~]$ ceph osd pool application enable mytestpool rbd

9.3 确认验证

  1 [ceph@serverc ~]$ ceph osd pool ls
  2 [ceph@serverc ~]$ ceph df

9.4 改名并查看

  1 [ceph@serverc ~]$ ceph osd pool rename mytestpool mypool
  2 [ceph@serverc ~]$ ceph osd pool ls detail

9.5 其他参数调整

  1 [ceph@serverc ~]$ ceph osd pool set mypool size 3		#修改size为3
  2 [ceph@serverc ~]$ ceph osd pool ls detail

9.6 上传文件测试

  1 [ceph@serverc ~]$ rados -p mypool -N system put testconf /etc/ceph/ceph.conf	#上传至mypool池的system命名空间
  2 [ceph@serverc ~]$ rados -p mypool put testkey /etc/ceph/ceph.client.admin.keyring
  3 [ceph@serverc ~]$ rados -p mypool -N system ls
  4 [ceph@serverc ~]$ rados -p mypool ls
  5 [ceph@serverc ~]$ rados -p mypool --all ls

9.7 删除池

  1 [ceph@serverc ~]$ ceph osd pool delete mypool
  2 [ceph@serverc ~]$ ceph osd pool delete mypool --yes-i-really-really-mean-it

提示:见2.8。

十 创建纠删码池

10.1 创建纠删存储池配置文件

  1 [ceph@serverc ~]$ ceph osd erasure-code-profile ls		        #查看现有配置文件
  2 [ceph@serverc ~]$ ceph osd erasure-code-profile get default	        #查看默认配置文件相关参数
  1 [ceph@serverc ~]$ ceph osd erasure-code-profile set ceph125 k=3 m=2 crush-failure-domain=osd		#创建新的配置文件ceph125
  2 [ceph@serverc ~]$ ceph osd erasure-code-profile get ceph125

10.2 创建纠删存储池

  1 [ceph@serverc ~]$ ceph osd pool create myecpool 64 64 erasure ceph125	#指定配置文件创建纠删码存储池

10.3 开启rgw

  1 [ceph@serverc ~]$ ceph osd pool application enable myecpool rgw

10.4 确认验证

  1 [ceph@serverc ~]$ ceph osd pool ls
  2 [ceph@serverc ~]$ ceph df
  3 [ceph@serverc ~]$ ceph osd pool ls detail

10.5 上传文件测试

  1 [ceph@serverc ~]$ rados -p myecpool put mytest /usr/share/dict/words	#作为mytest对象上传
  2 [ceph@serverc ~]$ ceph df
  3 [ceph@serverc ~]$ rados -p myecpool get mytest /tmp/words		        #下载上传的mytest
  4 [ceph@serverc ~]$ diff /tmp/words /usr/share/dict/words			#对比

十一 修改Ceph配置

11.1 查看当前特定参数

  1 [ceph@serverc ~]$ ceph daemon mon.serverc config get mon_allow_pool_delete
  2 [ceph@serverc ~]$ ceph daemon osd.0 config get debug_osd		#查看osd debug输出

解释:第一个值1是/var/log/cephin中的日志文件的日志级别。第二个值5是内存日志的日志级别。

11.2 部署节点修改相关配置

  1 [ceph@servera ~]$ sudo cp /usr/share/ceph-ansible/group_vars/all.yml /usr/share/ceph-ansible/group_vars/all.yml.bak						#建议备份一次
  2 [ceph@servera ~]$ sudo vi /usr/share/ceph-ansible/group_vars/all.yml
  3 ceph_conf_overrides:
  4   global:
  5     mon_osd_allow_primary_affinity: 1
  6     mon_clock_drift_allowed: 0.5
  7     osd_pool_default_size: 2
  8     osd_pool_default_min_size: 1
  9     mon_pg_warn_min_per_osd: 0
 10     mon_pg_warn_max_per_osd: 0
 11     mon_pg_warn_max_object_skew: 0
 12     mon_allow_pool_delete: true					#追加
 13   osd:
 14     debug_osd: 10							#追加
 15   client:
 16     rbd_default_features: 1
 17     debug_ms: 1							#追加

解析:mon_allow_pool_delete: true允许删除pool,debug_osd: 10表示将OSD输入日志级别都设置为10,debug_ms: 1表示增加client操作日志的输出。

11.3 重新刷新配置

  1 [student@servera ~]$ cd /usr/share/ceph-ansible/
  2 [student@servera ceph-ansible]$ ansible-playbook site.yml

提示:若部署成功,则对于每个节点,前面的命令输出应该显示failed=0。在playbook执行过程中,可能会有许多非致命的警告,它们不会被当做“失败”任务,可以忽略。

11.4 查看修改后的参数

  1 [ceph@serverc ~]$ sudo systemctl restart ceph-mon.target
  2 [ceph@serverc ~]$ ceph daemon mon.serverc config get mon_allow_pool_delete
  3 [ceph@serverc ~]$ ceph daemon osd.0 config get debug_osd		#查看osd debug输出

11.5 删除池测试

  1 [ceph@serverc ~]$ ceph osd pool delete myecpool
  2 [ceph@serverc ~]$ ceph osd pool delete myecpool myecpool --yes-i-really-really-mean-it

提示:测试完毕后建议删除debug_osd: 10和debug_ms: 1配置(即还原),避免冗长不必要的日志输出。

十二 Ceph用户及授权

12.1 创建用户

  1 [ceph@serverc ~]$ ceph auth get-or-create client.docedit \
  2 mon 'allow r' \
  3 osd 'allow rw pool=mypool namespace=docs' \
  4 -o /etc/ceph/ceph.client.docedit.keyring

提示:定义池和命名空间的时候,必须将pool写在前面。

  1 [ceph@serverc ~]$ ceph auth get-or-create client.docget \
  2 mon 'allow r' \
  3 osd 'allow r pool=mypool namespace=docs' \
  4 -o /etc/ceph/ceph.client.docget.keyring

12.2 确认验证

  1 [ceph@serverc ~]$ ceph auth list

12.3 复制相关key密钥环

  1 [ceph@serverc ~]$ scp /etc/ceph/ceph.client.docedit.keyring servera:/etc/ceph/
  2 [ceph@serverc ~]$ scp /etc/ceph/ceph.client.docget.keyring servera:/etc/ceph/

12.4 servera节点上传文件进行验证

  1 [ceph@servera ~]$ rados --id docedit -p mypool -N docs put testdoc /etc/services
  2 [ceph@servera ~]$ rados --id docget -p mypool -N docs get testdoc /tmp/test
  3 [ceph@servera ~]$ diff /etc/services /tmp/test

12.5 验证权限

  1 [ceph@servera ~]$ rados --id docget -p mypool -N docs put mywritest /etc/services    #验证docget用户对docs命名空间权限

12.6 修改授权

  1 [ceph@serverc ~]$ ceph auth caps client.docget \
  2 mon 'allow r' \
  3 osd 'allow rw pool=mypool namespace=docs,allow rw pool=docarchive'   #修改docget用户对mypool池中的docs名称空间和docarchive池进行写访问。

提示:ceph auth caps命令覆盖所有现有功能,因此在使用此命令时,必须为所有守护进程指定完整的功能集,而不仅仅是要修改的守护进程。同时该命令可以授权当前还未创建的池的权限。

12.7 再次测试

  1 [ceph@servera ~]$ rados --id docget -p mypool -N docs put mywritest /etc/services
  2 [ceph@servera ~]$ rados -p mypool -N docs ls

12.8 删除用户及密钥环

  1 [ceph@serverc ~]$ rm /etc/ceph/ceph.client.docedit.keyring
  2 [ceph@serverc ~]$ ceph auth del client.docedit
  3 [ceph@serverc ~]$ rm /etc/ceph/ceph.client.docget.keyring
  4 [ceph@serverc ~]$ ceph auth del client.docget
  5 [ceph@servera ~]$ rm /etc/ceph/ceph.client.docedit.keyring
  6 [ceph@servera ~]$ rm /etc/ceph/ceph.client.docget.keyring

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券