当前位置: 移动技术网 > 科技>操作系统>Linux > 002.RHCS-配置Ceph存储集群

002.RHCS-配置Ceph存储集群

2019年03月19日  | 移动技术网科技  | 我要评论

手机壁纸下载 免费,石天佑,齐泊阁

一 前期准备

  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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网