一 前期准备
1 [kiosk@foundation0 ~]$ ssh ceph@serverc #登陆Ceph集群节点
2 [ceph@serverc ~]$ ceph health #确保集群状态正常
3 HEALTH_OK
二 存储池概述
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模块定义全局参数,即定义集群范围的参数。它一般包括如下配置设置:html
- 带有全部监视器列表的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