Ceph架构简介及使用

Ceph简介

Ceph是一个统一的分布式存储系统,设计初衷是为了提供较好的性能、可靠性和可扩展性。

Ceph特点

  • 高性能

  • 高可用

  • 高扩展

  • 特性丰富

Ceph

  • Object(对象):有原生的API,而且也兼容Swift和S3的API。
  • Block(块):支持精简配置、快照、克隆。
  • File(文件系统):Posix接口,支持快照。

Ceph核心组件,概念

  • Monitor :保存,同步OSD元数据 (可以是OSD中的一员充当Monitor)

  • OSD :OSD全称Object Storage Device,也就是负责响应客户端请求返回具体数据的进程。一个Ceph集群一般都有很多个OSD。

  • MDS :MDS全称Ceph Metadata Server,是CephFS服务依赖的元数据服务。

  • Object:Ceph最底层的存储单元是Object对象,每个Object包含元数据和原始数据。

  • PG : PG是一个逻辑概念,我们linux系统中可以直接看到对象,但是无法直接看到PG。它在数据寻址时类似于数据库中的索引:每个对象都会固定映射进一个PG中,所以当我们要寻找一个对象时,只需要先找到对象所属的PG,然后遍历这个PG就可以了,无需遍历所有对象。而且在数据迁移时,也是以PG作为基本单位进行迁移,ceph不会直接操作对象。

    PG全称Placement Grouops,是一个逻辑的概念,一个PG包含多个OSD。引入PG这一层其实是为了更好的分配数据和定位数据。

  • RADOS :RADOS全称Reliable Autonomic Distributed Object Store,是Ceph集群的精华,用户实现数据分配、Failover等集群操作。

  • Libradio :Librados是Rados提供库,因为RADOS是协议很难直接访问,因此上层的RBD、RGW和CephFS都是通过librados访问的,目前提供PHP、Ruby、Java、Python、C和C++支持。

  • CRUSH :CRUSH是Ceph使用的数据分布算法,类似一致性哈希,让数据分配到预期的地方。

  • RBD(块存储):RBD全称RADOS block device,是Ceph对外提供的块设备服务。

  • RGW(对象存储):RGW全称RADOS gateway,是Ceph对外提供的对象存储服务,接口与S3和Swift兼容

  • CephFS(文件系统):CephFS全称Ceph File System,是Ceph对外提供的文件系统服务。

Ceph IO算法流程

  • 首先文件被切分为多个Objects并以oid标记。
  • 引入PG逻辑概念(为了防止oid存储时混乱不好搜索),并用crush算法生成pgid,把oid均匀分布给OSD中存储。
  • 该算法大致时利用求余数的概念,使得可以分配均匀。

Ceph为什么使用Object存储

  • 块存储:采用SAN架构组网时,光纤交换机,造价成本高。 主机之间无法共享数据。
  • 文件系统:
    读写速率低。 传输速率慢。
  • 对象存储:
    具备块存储的读写高速。 具备文件存储的共享等特性。

实验

部署ceph集群

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
注意版本更新非常快,有问题看官方文档
官方文档:
http://docs.ceph.com/docs/master/start/

目录
部署luminous(ceph12.2.10的版本代号)
配置dashboard
客户端使用rbd
======================================
部署环境
系统版本:centos7.5 x86_64 server
ceph版本:ceph 12.2.10(luminous)
硬件配置:5台vm,1核1G内存,每台node角色的机器至少挂载1块为osd准备的空闲盘
主机名 ip role
admin 192.168.245.135 admin 管理多个minitor
node1 192.168.245.136 mon / mgr / osd 类似minitor
node2 192.168.245.137 osd
node3 192.168.245.138 osd
client 192.168.245.10
======================================
su和su - 的区别:
su命令和su -命令最大的本质区别就是:前者只是切换了root身份,但Shell环境仍然是普通用户的Shell;而后者连用户和Shell环境一起切换成root身份了。只有切换了Shell环境才不会出现PATH环境变量错误。su切换成root用户以后,pwd一下,发现工作目录仍然是普通用户的工作目录;而用su -命令切换以后,工作目录变成root的工作目录了。用echo $PATH命令看一下su和su -以后的环境变量有何不同。以此类推,要从当前用户切换到其它用户也一样,应该使用su -命令。

1 准备工作
1.1 开启网络(所有节点,root用户)
1.2 修改主机名/互相解析(所有节点,root用户)
1.3 创建用户(所有节点,root用户)
在所有节点上执行如下操作:
1)创建用户名:cephu,设置密码:
# useradd cephu
# passwd cephu

2)修改visudo文件,否则提示cephu不再sudoer列表中的错误。
命令行输入visudo,在root ALL=(ALL) ALL下面添加:
cephu ALL=(ALL) ALL

3)切换至cephu用户,为该用户增加root权限:su - cephu
$ echo "cephu ALL=(root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephu
$ sudo chmod 0440 /etc/sudoers.d/cephu

1.4 实现ssh无密码登录(admin节点)
1)cephu用户下,生成秘钥:
$ ssh-keygen
2)cephu用户下,把生成的密钥拷贝到各Ceph节点:
$ ssh-copy-id cephu@node1
$ ssh-copy-id cephu@node2
$ ssh-copy-id cephu@node3
3)root用户下,添加~/.ssh/config配置文件,并进行如下设置:
Host node1
Hostname node1
User cephu

Host node2
Hostname node2
User cephu

Host node3
Hostname node3
User cephu

1.5 添加下载源,安装ceph-deploy(admin节点,root用户)
1)添加ceph源:
# cat >/etc/yum.repos.d/ceph.repo
[ceph-noarch]
name=Ceph noarch packages
baseurl=https://download.ceph.com/rpm-luminous/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
ctrl + d 保存

2)更新源,安装ceph-deploy:
# yum makecache
# yum update

# vim /etc/yum.conf
keepcache=1

# yum install ceph-deploy -y

1.6 设置TTY(所有节点)
注意:此设置由官方文档指出,但是并未在这里找不到此配置行,不用做此步
# sudo visudo 找到 Defaults requiretty 注释掉

1.7 关闭selinux(所有节点)

1.8 安装ntp(所有节点)
选择任何一台机器当ntp时间服务器,其他的节点当时间服务器的客户端跟服务器同步时间

admin上:
# yum install -y ntp
# vim /etc/ntp.conf //有4行server的位置,把那4行server行注释掉,填写以下两行
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10

# systemctl start ntpd
# systemctl status ntpd //确认打开NTP服务

其他所有节点:
# yum install ntpdate -y
# ntpdate 时间服务器ip

======================================
2 部署ceph集群
没有特别说明以下所有操作均是在admin节点,cephu用户下执行
2.1 创建ceph操作目录:
$ mkdir my-cluster //切记不可用sudo创建
$ cd my-cluster //之后,所有ceph-deploy命令操作必须在该目录下执行

2.2 创建集群:
$ ceph-deploy new node1
创建成功会有三个文件:ceph.conf, ceph.mon.keyring, and a log file

2.3 安装luminous(12.2.9): luminous理解为12.2.9的另一个叫法,即版本号的另一个叫法。
目标:在node1,node2,node3三个节点上安装ceph和ceph-radosgw主包

方法1:利用官方脚本全自动安装
脚本会帮助node1,node2,node3创建epel源和ceph源,并且自动安装ceph和ceph-radosgw主包
$ ceph-deploy install --release luminous node1 node2 node3 client
这一步实际上是给3个节点安装两个软件:如果ceph和ceph-radosgw安装不上,则采用方法2
在千锋做实验要注意epel的源(切记)

测试是否安装完成:分别在node1 node2 node3中确认安装版本为12.2.9
$ ceph --version

方法2:手动部署安装
1)安装epel源
2)创建Ceph源,内容如下:
[Ceph]
name=Ceph packages for $basearch
baseurl=http://download.ceph.com/rpm-luminous/el7/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1

[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://download.ceph.com/rpm-luminous/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1

[ceph-source]
name=Ceph source packages
baseurl=http://download.ceph.com/rpm-luminous/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1
3)分别在node1,node2,node3节点执行下面命令安装软件
可以完全手动安装,但需要yum的ceph缓存目录结构
$sudo yum install ceph ceph-radosgw -y
如果因为速度慢导致安装失败可以按ctrl+c,利用它创建的yum缓存目录,手动把安装包下载下来保存到缓存目录/var/cache/yum/x86_64/Ceph/packages目录下

再次执行安装命令:
$sudo yum install ceph ceph-radosgw -y

分别在node1 node2 node3中确认安装版本为12.2.1:
$ ceph --version

2.4 初始化mon:
$ ceph-deploy mon create-initial

2.5 赋予各个节点使用命令免用户名权限:
$ ceph-deploy admin node1 node2 node3

2.6 安装ceph-mgr:只有luminous才有,为使用dashboard做准备
$ ceph-deploy mgr create node1

2.7 添加osd:
注意:各个节点上提供存储空间的磁盘大小不能太小,最好5G以上

$ ceph-deploy osd create --data /dev/sdb node1(12.2.10版本是这条命令,分开给各节点安装)
$ ceph-deploy osd create --data /dev/sdb node2
$ ceph-deploy osd create --data /dev/sdb node3

命令中/dev/sdb是在各个节点上为osd准备的空闲磁盘(无需分区格式化,如果有分区需要指定具体分区),通过如下命令查看:
$ ssh node1 lsblk -f

最后通过如下命令查看集群状态:
$ ssh node1 sudo ceph -s
如果显示health_ok,3个osd up就成功了

======================================
3 Dashboard的配置:在node1上操作 Dashboard理解为展示界面

把ceph-mgr和ceph-mon安装在同一个主机上,最好只有一个ceph-mgr

3.1 创建管理域秘钥:
$ sudo ceph auth get-or-create mgr.node1 mon 'allow profile mgr' osd 'allow *' mds 'allow *'

3.2 开启 ceph-mgr 管理域:
$ sudo ceph-mgr -i node1

3.3 查看ceph的状态:
$ sudo ceph status
确认mgr的状态为active

3.4 打开dashboard模块:
$ sudo ceph mgr module enable dashboard

3.5 绑定开启dashboard模块的ceph-mgr节点的ip地址:
$ sudo ceph config-key set mgr/dashboard/node1/server_addr 192.168.245.136
ip地址为mgr节点的ip地址

3.6 web登录:
浏览器地址栏输入:
mgr地址:7000
======================================

**** 4 配置客户端使用rbd:

创建块设备之前需要创建存储池,存储池相关命令需要在mon节点执行

4.1 创建存储池:
$ sudo ceph osd pool create rbd 128 128

4.2 初始化存储池:
$ sudo rbd pool init rbd

4.3 准备客户端client:
另备一台主机,系统centos7用来作为client。主机名为client,ip:192.168.245.10。修改hosts文件实现和admin节点的主机名互通。
1)升级client内核到4.x,方法在子目录中
Centos7升级内核
更新前,内核版本为:
#uname -r
3.10.0-327.10.1.el7.x86_64

升级方法
导入key:
#rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

安装elrepo的yum源:
#rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

查看可用的系统内核包
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available

安装内核:
#yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
当前为4.4.4:
============================================================
Package 架构 版本 源 大小
============================================================
正在安装:
kernel-ml x86_64 4.4.4-1.el7.elrepo elrepo-kernel 38M
kernel-ml-devel x86_64 4.4.4-1.el7.elrepo elrepo-kernel 10M

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


查看默认启动顺序
#awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
CentOS Linux (4.4.4-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-327.10.1.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-c52097a1078c403da03b8eddeac5080b) 7 (Core)

默认启动的顺序是从0开始,新内核是从头插入(目前位置在0,而4.4.4的是在1),所以需要选择0。
#grub2-set-default 0

然后reboot重启,使用新的内核,下面是重启后使用的内核版本:
#uname -r
4.4.4-1.el7.elrepo.x86_64

5、删除旧的内核
#yum remove kernel

2)为client安装ceph:
1.参考2.3 在做2.3之前先在client上做1.3的三步
2.还要做着一步 否则报错 #yum -y install python-setuptools

3)配置client防火墙(直接关闭):
$ sudo firewall-cmd --zone=public --add-service=ceph --permanent
$ sudo firewall-cmd --reload

4)在admin节点赋予client使用命令免用户名权限:
$ ceph-deploy admin client

5)修改client下该文件的读权限:
$ sudo chmod +r /etc/ceph/ceph.client.admin.keyring

6)修改client下的ceph配置文件:这一步是为了解决映射镜像时出错问题
$ sudo vi /etc/ceph/ceph.conf 在global section下添加:
rbd_default_features = 1

4.4 client节点创建块设备镜像:单位是M,这里是4个G
$ rbd create foo --size 4096

4.5 client节点映射镜像到主机:
$ sudo rbd map foo --name client.admin

4.6 client节点格式化块设备:
$ sudo mkfs.ext4 -m 0 /dev/rbd/rbd/foo

4.7 client节点mount块设备:
$ sudo mkdir /mnt/ceph-block-device
$ sudo mount /dev/rbd/rbd/foo /mnt/ceph-block-device
$ +

客户端重起之后,设备需要重新作映射,不然可能会卡死

时间同步方式

自建ceph源的方法

1
https://blog.csdn.net/michaelwoshi/article/details/94183198

ceph安装问题集锦

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
[cephu@centos7u3_1 my-cluster]$ ceph-deploy new node1
Traceback (most recent call last):
File "/bin/ceph-deploy", line 18, in <module>
from ceph_deploy.cli import main
File "/usr/lib/python2.7/site-packages/ceph_deploy/cli.py", line 1, in <module>
import pkg_resources
ImportError: No module named pkg_resources



重新安装python的distribution:

下载 distribution : https://pypi.python.org/pypi/distribute
cd distribution-0.7.3/
sudo python setup.py install

distribution下载地址:
https://files.pythonhosted.org/packages/5f/ad/1fde06877a8d7d5c9b60eff7de2d452f639916ae1d48f0b8f97bf97e570a/distribute-0.7.3.zip



问题二
[ERROR ] admin_socket: exception getting command descriptions: [Errno 2] No such file or dir

cat /etc/ceph/ceph.conf
添加
public_network= 192.168.122.0/24
推送
ceph-deploy --overwrite-conf config push admin node1 node2 node3

https://www.cnblogs.com/aguncn/p/7352393.html
https://blog.csdn.net/zhydream77/article/details/81041767


问题三:
ceph-deploy mon create-initial 时候
​```
[node1][INFO ] Running command: sudo ceph --cluster=ceph --admin-daemon /var/run/ceph/ceph-mon.node1.asok mon_status
[node1][ERROR ] no valid command found; 10 closest matches:
[node1][ERROR ] perf reset <var>
[node1][ERROR ] perf histogram schema
[node1][ERROR ] log reopen
[node1][ERROR ] log flush
[node1][ERROR ] perf histogram dump {<logger>} {<counter>}
[node1][ERROR ] perf dump {<logger>} {<counter>}
[node1][ERROR ] git_version
[node1][ERROR ] get_command_descriptions
[node1][ERROR ] log dump
[node1][ERROR ] help
[node1][ERROR ] admin_socket: invalid command
[node1][WARNIN] monitor: mon.node1, might not be running yet
[node1][INFO ] Running command: sudo ceph --cluster=ceph --admin-daemon /var/run/ceph/ceph-mon.node1.asok mon_status
[node1][ERROR ] no valid command found; 10 closest matches:
[node1][ERROR ] perf reset <var>
[node1][ERROR ] perf histogram schema
[node1][ERROR ] log reopen
[node1][ERROR ] log flush
[node1][ERROR ] perf histogram dump {<logger>} {<counter>}
[node1][ERROR ] perf dump {<logger>} {<counter>}
[node1][ERROR ] git_version
[node1][ERROR ] get_command_descriptions
[node1][ERROR ] log dump
[node1][ERROR ] help
[node1][ERROR ] admin_socket: invalid command
[node1][WARNIN] monitor node1 does not exist in monmap
​```

原因: 第一次在做的时候没有修改主机名是就生成了公私钥,结果拷贝的公钥有问题,在问题二推送配置的时候,排查后发现主机名的问题。
之后初始化mon的时候出错,排错两个小时,差点怀疑人生的时候突然发现,想起主机名的事情,就检查了以下公私钥,结果发现生成的公私钥是以原主机名生成的,删除后生成新的公私钥,传送公钥后,还是失败。
但是感觉已经找到了问题所在,继续排查,到node1查看日志发现,地址被占用,平复以下自己激动的心,然后冷静的杀掉进程,重新初始化OK


问题四:
ceph-deploy osd create --data /dev/vdc node3
[node1][WARNIN] ceph-volume lvm create: error: GPT headers found, they must be removed on: /dev/vdb
[node1][ERROR ] RuntimeError: command returned non-zero exit status: 2
[ceph_deploy.osd][ERROR ] Failed to execute command: /usr/sbin/ceph-volume --cluster ceph lvm create --bluestore --data /dev/vdb
[ceph_deploy][ERROR ] GenericError: Failed to create 1 OSDs


千万不要分区,然后重新加磁盘,重新做
又文档说加上参数也可以但是
ceph-deploy osd create --data /dev/vdc --fs-type xfs node3 不行



[cephu@node1 ~]$ sudo ceph auth get-or-create mgr.node1 mon 'allow profile mgr' osd 'allow *' mds 'allow *'
[mgr.node1]
key = AQD8HPdcmntqJRAAlZ3Aeialqq0nVcdcg+axqQ==





-------------
问题:rdb map出错rbd sysfs write failed
创建了一个rbd镜像
$ rbd create --size 4096 docker_test
然后,在Ceph client端将该rbd镜像映射为本地设备时出错。
$ rbd map docker_test --name client.admin

rbd: sysfs write failed
RBD image feature set mismatch. You can disable features unsupported by the kernel with "rbd feature disable".
In some cases useful info is found in syslog - try "dmesg | tail" or so.

原因:
rbd镜像的一些特性,OS kernel并不支持,所以映射失败。我们查看下该镜像支持了哪些特性。
$ rbd info docker_test

rbd image 'docker_test':
size 4096 MB in 1024 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.43702ae8944a
format: 2
features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
flags:
可以看到特性feature一栏,由于我OS的kernel只支持layering,其他都不支持,所以需要把部分不支持的特性disable掉。

方法一: 直接diable这个rbd镜像的不支持的特性:
$ rbd feature disable docker_test exclusive-lock object-map fast-diff deep-flatten

方法二: 创建rbd镜像时就指明需要的特性,如:
$ rbd create --size 4096 docker_test --image-feature layering

方法三: 如果还想一劳永逸
那么就在执行创建rbd镜像命令的服务器中,
修改Ceph配置文件/etc/ceph/ceph.conf,
在global section下,增加rbd_default_features = 1
再创建rdb镜像。
$ rbd create --size 4096 docker_test

通过上述三种方法后,查看rbd镜像的信息。
$ rbd info docker_test

rbd image 'docker_test':
size 4096 MB in 1024 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.43a22ae8944a
format: 2
features: layering
flags:

再次尝试映射rdb镜像到本地块设备,成功!
$ rbd map docker_test --name client.admin
/dev/rbd0
======================================
问题:
[cephu@client ~]$ sudo rbd map docker_test --name client.admin


rbd: sysfs write failed
In some cases useful info is found in syslog - try "dmesg | tail".
rbd: map failed: (110) Connection timed out

解决方案:
[cephu@client ~]$ sudo ceph osd crush tunables hammer
adjusted tunables profile to hammer

然后重新
[cephu@client ~]$ sudo rbd map docker_test --name client.admin
/dev/rbd0

成功

参考链接: https://randomopenstackthoughts.wordpress.com/2018/08/16/ceph-block-device/
=====================================

问题1:
2.3步骤中,如果由于网速太慢,可以如下操作
由于网速慢的问题,安装并不会成功。之所以仍进行这一步,只因执行过了该命令就会自动创建相应文件夹。在进入各个节点手动安装的时候,才能把下载的不成功的包放到正确的目录下,这样,手动安装使用yum命令才会成功。之后进入每个节点执行安装。
以node1为例:
• 先从https://download.ceph.com/rpm-luminous/el7/x86_64/ 下载所有最有最新版本的rpm包到本地

• 之后使用secure shell client上传到node1的/var/cache/yum/x86_64/7/Ceph/packages/文件夹下

• 然后安装ceph:
$ ssh node1
$ sudo yum install –y epel-release ceph ceph-radosgw
虽然所有安装包都在相应的目录中了,但仍可能不成功,这个时候只需要再次重新把安装包放到对应目录后再执行该命令就成功了,原因不明。
======================================
问题2:
2.3步骤中如果开启防火墙需要做如下操作
设置防火墙(由于node1既是mon节点又是osd节点,所以要添加下面两个规则。其他节点只开启ceph服务即可):
$ sudo firewall-cmd --zone=public --add-service=ceph-mon --permanent //该规则仅在mon节点执行,如果不添加就不能在其他osd上进行一些查询操作
$ sudo firewall-cmd --zone=public --add-service=ceph --permanent
$ sudo firewall-cmd --reload
注意:该防火墙规则只能在安装成功ceph后才能添加,否则就不识别,添加失败。最后退出node1节点,返回admin节点
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
问题3:
激活 OSD 的时候需要先把OSD所在服务器的目录所有者和所属组手动改成ceph,不然无法激活
[root@vm42 yum.repos.d]# chown ceph:ceph /var/local/osd2

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
问题4:
ceph:health_warn clock skew detected on mon的解决办法
造成集群状态health_warn:clock skew detected on mon节点的原因有两个,一个是mon节点上ntp服务器未启动,另一个是ceph设置的mon的时间偏差阈值比较小。
排查时也应遵循先第一个原因,后第二个原因的方式。

第一步:确认ntp服务是否正常工作

第二步:修改ceph配置中的时间偏差阈值
1. 在admin部署节点修改配置参数:
# vi ~/my-cluster/ceph.conf在global字段下添加:
mon clock drift allowed = 2
mon clock drift warn backoff = 30

2. 向需要同步的mon节点推送配置文件:
# ceph-deploy --overwrite-conf config push node{1..3}这里是向node1 node2 node3推送,也可以后跟其它不联系节点
3. 重启mon服务(centos7环境下)
# systemctl restart ceph-mon.target4.验证:
# ceph -s显示health_ok说明问题解决

问题5:
有些场景下,对osd进行一些操作,但是并不想要集群进行数据恢复,此时,可以通过设置noout标志来实现:
[root@node3 ~]# ceph osd set noout
noout is set
[root@node3 ~]# ceph -s
cluster:
id: b8b4aa68-d825-43e9-a60a-781c92fec20e
health: HEALTH_WARN
noout flag(s) set

services:
mon: 1 daemons, quorum node1
mgr: node1(active)
osd: 6 osds: 6 up, 6 in
flags noout

data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0 bytes
usage: 6339 MB used, 55100 MB / 61440 MB avail
pgs: 去除noout标志命令:
[root@node3 ~]# ceph osd unset noout
noout is unset
[root@node3 ~]# ceph -s
cluster:
id: b8b4aa68-d825-43e9-a60a-781c92fec20e
health: HEALTH_OK

services:
mon: 1 daemons, quorum node1
mgr: node1(active)
osd: 6 osds: 6 up, 6 in

data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0 bytes
usage: 6339 MB used, 55100 MB / 61440 MB avail
pgs:






==================================================

Error: Package: 2:librbd1-12.2.12-0.el7.x86_64 (Ceph)
Requires: liblttng-ust.so.0()(64bit

方法1
sudo yum install -y yum-utils && sudo yum-config-manager --add-repo https://dl.fedoraproject.org/pub/epel/7/x86_64/ &&sudo yum install --nogpgcheck -y epel-release &&sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 &&sudo rm -f /etc/yum.repos.d/dl.fedoraproject.org*

方法二:
yum install epel-release -y

wget https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-12.noarch.rpm

rpm -Uvh epel-release*rpm

yum install lttng-ust -y