002.RHCS-配置Ceph存储集群
一 前期准备
[kiosk@foundation0 ~]$ ssh ceph@serverc #登录Ceph集群节点
[ceph@serverc ~]$ ceph health #确保集群状态正常
HEALTH_OK
二 存储池概述
2.1 存储池
三 存储池常见操作
3.1 启用存储池
3.2 池相关命令
命令
|
含义
|
备注
|
ceph osd lspools
|
列出集群中的池
|
|
ceph osd pool ls detail
|
获取更多池相关信息
|
|
ceph df
|
获取池使用统计数据
|
|
ceph osd pool stats
|
获取池性能统计数据
|
|
ceph osd df
|
显示OSDs上的磁盘使用统计信息
|
3.3 池配额
3.4 池快照操作
3.5 池的修改操作
3.6 删除池
3.7 池的命名空间
四 复制存储池
4.1 创建复制存储池
五 纠删码池
5.1 纠删码池概述
5.2 创建纠删存储池
5.3 纠删池配置文件
参数
|
含义
|
备注
|
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
六 Ceph配置文件
6.1 Ceph配置文件介绍
- [global]:存储所有守护进程共有的一般配置和设置。任何进程都会读取该配置,包括客户机。在其他更具体的配置中会重写global设置的参数。
- [mon]:存储与monitors(mon)相关的配置。
- [osd]:存储与osd守护进程相关的配置。
- [mgr]:存储与managers(MGR)相关的配置。
- [mds]:存储与元数据服务器(mds)相关的配置。
- [client]:存储应用于所有Ceph客户机的配置。
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 查看配置
6.4 Ansible Ceph配置文件
七 启动和停止Ceph
7.1 概述
- 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认证
8.2 key-ring密钥环
8.3 权限管理
- 限制对池、池的名称空间或一组基于应用程序标记的池中的数据的访问。
- 授权RHCS集群中的守护进程彼此交互。
- r:授予读权限。每个用户帐户应该至少具有对监视器的读访问权,以便能够检索粉碎地图。
- w:授予写权限。客户端需要写访问来存储和修改OSDs上的对象。对于manager(MGRs),w授予启用或禁用模块的权利。
- x:授予执行扩展对象类的授权。这允许客户端对对象执行额外的操作,例如使用rados lock get设置锁或使用RBD list列出RBD映像。
- *:授予完全访问。
- class-read和class-write:是x的子集,主要在用于RBD的池中使用它们。
8.4 常见授权操作
- 授予权限
- 限定权限
- 特定池权限限定
- 特定对象限定
- 特定命名空间限定
- 特定路径限定
- 特定命令限定
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 创建复制存储池
[ceph@serverc ~]$ ceph osd pool create mytestpool 64 #CRUSH默认使用replicated_rule
9.2 开启rbd
[ceph@serverc ~]$ ceph osd pool application enable mytestpool rbd
9.3 确认验证
[ceph@serverc ~]$ ceph osd pool ls
[ceph@serverc ~]$ ceph df
9.4 改名并查看
[ceph@serverc ~]$ ceph osd pool rename mytestpool mypool
[ceph@serverc ~]$ ceph osd pool ls detail
9.5 其他参数调整
[ceph@serverc ~]$ ceph osd pool set mypool size 3 #修改size为3
[ceph@serverc ~]$ ceph osd pool ls detail
9.6 上传文件测试
[ceph@serverc ~]$ rados -p mypool -N system put testconf /etc/ceph/ceph.conf #上传至mypool池的system命名空间
[ceph@serverc ~]$ rados -p mypool put testkey /etc/ceph/ceph.client.admin.keyring
[ceph@serverc ~]$ rados -p mypool -N system ls
[ceph@serverc ~]$ rados -p mypool ls
[ceph@serverc ~]$ rados -p mypool --all ls
9.7 删除池
[ceph@serverc ~]$ ceph osd pool delete mypool
[ceph@serverc ~]$ ceph osd pool delete mypool --yes-i-really-really-mean-it
十 创建纠删码池
10.1 创建纠删存储池配置文件
[ceph@serverc ~]$ ceph osd erasure-code-profile ls #查看现有配置文件
[ceph@serverc ~]$ ceph osd erasure-code-profile get default #查看默认配置文件相关参数
[ceph@serverc ~]$ ceph osd erasure-code-profile set ceph125 k=3 m=2 crush-failure-domain=osd #创建新的配置文件ceph125
[ceph@serverc ~]$ ceph osd erasure-code-profile get ceph125
10.2 创建纠删存储池
[ceph@serverc ~]$ ceph osd pool create myecpool 64 64 erasure ceph125 #指定配置文件创建纠删码存储池
10.3 开启rgw
[ceph@serverc ~]$ ceph osd pool application enable myecpool rgw
10.4 确认验证
[ceph@serverc ~]$ ceph osd pool ls
[ceph@serverc ~]$ ceph df
[ceph@serverc ~]$ ceph osd pool ls detail
10.5 上传文件测试
[ceph@serverc ~]$ rados -p myecpool put mytest /usr/share/dict/words #作为mytest对象上传
[ceph@serverc ~]$ ceph df
[ceph@serverc ~]$ rados -p myecpool get mytest /tmp/words #下载上传的mytest
[ceph@serverc ~]$ diff /tmp/words /usr/share/dict/words #对比
十一 修改Ceph配置
11.1 查看当前特定参数
[ceph@serverc ~]$ ceph daemon mon.serverc config get mon_allow_pool_delete
[ceph@serverc ~]$ ceph daemon osd.0 config get debug_osd #查看osd debug输出
11.2 部署节点修改相关配置
[ceph@servera ~]$ sudo cp /usr/share/ceph-ansible/group_vars/all.yml /usr/share/ceph-ansible/group_vars/all.yml.bak #建议备份一次
[ceph@servera ~]$ sudo vi /usr/share/ceph-ansible/group_vars/all.yml
ceph_conf_overrides:
global:
mon_osd_allow_primary_affinity: 1
mon_clock_drift_allowed: 0.5
osd_pool_default_size: 2
osd_pool_default_min_size: 1
mon_pg_warn_min_per_osd: 0
mon_pg_warn_max_per_osd: 0
mon_pg_warn_max_object_skew: 0
mon_allow_pool_delete: true #追加
osd:
debug_osd: 10 #追加
client:
rbd_default_features: 1
debug_ms: 1 #追加
11.3 重新刷新配置
[student@servera ~]$ cd /usr/share/ceph-ansible/
[student@servera ceph-ansible]$ ansible-playbook site.yml
11.4 查看修改后的参数
[ceph@serverc ~]$ sudo systemctl restart ceph-mon.target
[ceph@serverc ~]$ ceph daemon mon.serverc config get mon_allow_pool_delete
[ceph@serverc ~]$ ceph daemon osd.0 config get debug_osd #查看osd debug输出
11.5 删除池测试
[ceph@serverc ~]$ ceph osd pool delete myecpool
[ceph@serverc ~]$ ceph osd pool delete myecpool myecpool --yes-i-really-really-mean-it
十二 Ceph用户及授权
12.1 创建用户
[ceph@serverc ~]$ ceph auth get-or-create client.docedit \
mon 'allow r' \
osd 'allow rw pool=mypool namespace=docs' \
-o /etc/ceph/ceph.client.docedit.keyring
[ceph@serverc ~]$ ceph auth get-or-create client.docget \
mon 'allow r' \
osd 'allow r pool=mypool namespace=docs' \
-o /etc/ceph/ceph.client.docget.keyring
12.2 确认验证
[ceph@serverc ~]$ ceph auth list
12.3 复制相关key密钥环
[ceph@serverc ~]$ scp /etc/ceph/ceph.client.docedit.keyring servera:/etc/ceph/
[ceph@serverc ~]$ scp /etc/ceph/ceph.client.docget.keyring servera:/etc/ceph/
12.4 servera节点上传文件进行验证
[ceph@servera ~]$ rados --id docedit -p mypool -N docs put testdoc /etc/services
[ceph@servera ~]$ rados --id docget -p mypool -N docs get testdoc /tmp/test
[ceph@servera ~]$ diff /etc/services /tmp/test
12.5 验证权限
[ceph@servera ~]$ rados --id docget -p mypool -N docs put mywritest /etc/services #验证docget用户对docs命名空间权限
12.6 修改授权
[ceph@serverc ~]$ ceph auth caps client.docget \
mon 'allow r' \
osd 'allow rw pool=mypool namespace=docs,allow rw pool=docarchive' #修改docget用户对mypool池中的docs名称空间和docarchive池进行写访问。
12.7 再次测试
[ceph@servera ~]$ rados --id docget -p mypool -N docs put mywritest /etc/services
[ceph@servera ~]$ rados -p mypool -N docs ls
12.8 删除用户及密钥环
[ceph@serverc ~]$ rm /etc/ceph/ceph.client.docedit.keyring
[ceph@serverc ~]$ ceph auth del client.docedit
[ceph@serverc ~]$ rm /etc/ceph/ceph.client.docget.keyring
[ceph@serverc ~]$ ceph auth del client.docget
[ceph@servera ~]$ rm /etc/ceph/ceph.client.docedit.keyring
[ceph@servera ~]$ rm /etc/ceph/ceph.client.docget.keyring
002.RHCS-配置Ceph存储集群的更多相关文章
- Ceph 存储集群1-配置:硬盘和文件系统、配置 Ceph、网络选项、认证选项和监控器选项
所有 Ceph 部署都始于 Ceph 存储集群.基于 RADOS 的 Ceph 对象存储集群包括两类守护进程: 1.对象存储守护进程( OSD )把存储节点上的数据存储为对象: 2.Ceph 监视器( ...
- Ceph 存储集群第一部分:配置和部署
内容来源于官方,经过个人实践操作整理,官方地址:http://docs.ceph.org.cn/rados/ 所有 Ceph 部署都始于 Ceph 存储集群. 基于 RADOS 的 Ceph 对象存储 ...
- Ceph 存储集群
Ceph 存储集群 Ceph 作为软件定义存储的代表之一,最近几年其发展势头很猛,也出现了不少公司在测试和生产系统中使用 Ceph 的案例,尽管与此同时许多人对它的抱怨也一直存在.本文试着整理作者了解 ...
- Ceph 存储集群 - 搭建存储集群
目录 一.准备机器 二.ceph节点安装 三.搭建集群 四.扩展集群(扩容) 一.准备机器 本文描述如何在 CentOS 7 下搭建 Ceph 存储集群(STORAGE CLUSTER). 一共4 ...
- Ceph 存储集群搭建
前言 Ceph 分布式存储系统,在企业中应用面较广 初步了解并学会使用很有必要 一.简介 Ceph 是一个开源的分布式存储系统,包括对象存储.块设备.文件系统.它具有高可靠性.安装方便.管理简便.能够 ...
- Ceph 存储集群5-数据归置
一.数据归置概览 Ceph 通过 RADOS 集群动态地存储.复制和重新均衡数据对象.很多不同用户因不同目的把对象存储在不同的存储池里,而它们都坐落于无数的 OSD 之上,所以 Ceph 的运营需要些 ...
- Ceph 存储集群4-高级运维:
一.高级运维 高级集群操作主要包括用 ceph 服务管理脚本启动.停止.重启集群,和集群健康状态检查.监控和操作集群. 操纵集群 运行 Ceph 每次用命令启动.重启.停止Ceph 守护进程(或整个集 ...
- Ceph 存储集群2-配置:心跳选项、OSD选项、存储池、归置组和 CRUSH 选项
一.心跳选项 完成基本配置后就可以部署.运行 Ceph 了.执行 ceph health 或 ceph -s 命令时,监视器会报告 Ceph 存储集群的当前状态.监视器通过让各 OSD 自己报告.并接 ...
- Ceph 存储集群 - 搭建存储集群---教程走到osd激活这一步执行不下去了,报错
目录 一.准备机器 [1. 修改主机名](所有节点)(https://www.cnblogs.com/zengzhihua/p/9829472.html#1-修改主机名) [2. 修改hosts文件] ...
随机推荐
- 「线性基」学习笔记and乱口胡总结
还以为是什么非常高大上的东西花了1h不到就学好了 线性基 线性基可以在\(O(nlogx)\)的时间内计算出\(n\)个数的最大异或和(不需要相邻). 上述中\(x\)表示的最大的数. 如何实现 定义 ...
- day08读取文件
可参考;https://www.cnblogs.com/gengcx/p/6713646.html主要内容: 1.只读 2.只写 3.追加 4.r+读写 5.w+写读 6.a+写读 7.其他一.使用p ...
- MySQL安装-windows安装
windows下安装MySQL 在windows下面安装MySQL 本文以5.7.17为示例 MySQL下载 官网:https://dev.mysql.com/downloads/mysql/ 本次安 ...
- 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) ubuntu 安装vim 及遇到的错误处理
今天,处理完问题,闲来无事,打算在虚拟机中的Ubuntu中练习shell脚本编写. 无奈,虚拟机系统所装的只有vi,这个编辑软件对于我们来说还是比较不习惯的,所以打算安装vim.好了,闲言少叙. 安装 ...
- (转)史上最全 40 道 Dubbo 面试题及答案,看完碾压面试官!
背景:因为自己的简历写了dubbo,面试时候经常被问到.实际自己对dubbo的认识只停留在使用阶段,所以有必要好好补充下基础的理论知识. https://zhuanlan.zhihu.com/p/45 ...
- Mybatis的应用2 使用mybits+SpringBoot完成第一个查询的demo(随后加增加,更新,删除)
首先在mapper下面新建一个mysql.xml mysql.xml <?xml version="1.0" encoding="UTF-8" ?> ...
- expansion pattern ‘Frame&’ contains no argument packs
camera/CameraImpl.h::: error: expansion pattern ‘Frame&’ contains no argument packs void read_fr ...
- jquery cookie问题
近期工作中遇到了jquery cookie解决问题,顺便记录下: <div id="submenu"> <ul> <li><a id=&q ...
- 【Linux网络编程】TCP网络编程中connect()、listen()和accept()三者之间的关系
[Linux网络编程]TCP网络编程中connect().listen()和accept()三者之间的关系 基于 TCP 的网络编程开发分为服务器端和客户端两部分,常见的核心步骤和流程如下: conn ...
- CMDB服务器管理系统【s5day89】:采集资产之汇报信息
1.服务器端收到的数据和客户端的数据不一样 print(request.post) 少发了,还是少取了,说明根本没有把数据全发过来 print(request.body) 1.只把字典的key给我发过 ...