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
|
块设备(rbd)
1
、块设备可以应用为:
1
、作为额外的磁盘使用
2
、可以作为裸设备使用
3
、可以格式化成文件系统,然后挂载给虚拟机或者物理服务器使用
2
、创建块设备(可以在任意一台ceph节点上创建)
下面的命令创建一个名为ceph
-
client1
-
rbd1、大小为
10G
的RBD设备
[root@ceph
-
node1 ~]
# rbd create ceph-client1-rbd1 --size 10240
注意:默认情况下rbd镜像会保存在ceph集群的rbd池中,可以使用
-
p参数改变池
3
、列出rbd设备镜像(可在任意一台节点上列出)
[root@ceph
-
node3 ~]
# rbd ls
ceph
-
client1
-
rbd1
4
、查看创建后的块设备的信息(可以在任意一台ceph节点上查看)
[root@ceph
-
node1 ~]
# rbd --image ceph-client1-rbd1 info
rbd image
'ceph-client1-rbd1'
:
size
10240
MB
in
2560
objects
order
22
(
4096
kB objects)
block_name_prefix: rbd_data.
857a238e1f29
format
:
2
features: layering, exclusive
-
lock,
object
-
map
, fast
-
diff, deep
-
flatten
flags:
5
、创建ceph客户端
安装一台虚拟机或者用一台物理机来作为cpeh客户端进行测试,操作系统需要是linux(我的环境是centos7)
需要注意:
1
、linux内核从
2.6
.
32
版本开始支持ceph
2
、建议使用
2.6
.
34
以及以上的内核版本
查看内核版本命令:uname
-
rbd
检查是否支持rbd命令: modprobe rbd
安装完客户端的操作系统之后,记得将ceph集群的IP地址和主机名添加到hosts文件中:
192.168
.
89.101
ceph
-
node1
192.168
.
89.102
ceph
-
node2
192.168
.
89.103
ceph
-
node3
192.168
.
89.139
ceph
-
client1
6
、映射rados块设备给客户端
在映射之前,需要授权给客户端访问ceph集群的权限,需要下面两个步骤,添加秘钥环(客户端与ceph集群之间的身份验证就是基于这个秘钥环)和添加ceph配置文件
1
、在管理节点(ceph
-
deploy)上通过ceph
-
deploy工具给ceph
-
client1安装ceph包
deploy install ceph
-
client1
-
rbd1
2
、在管理节点上(ceph
-
deploy)上通过ceph
-
deploy工具给ceph
-
client1客户端下发秘钥环和ceph配置文件
用于授予客户端访问ceph集群的权限
ceph
-
deploy admin ceph
-
client1
3
、登录ceph
-
client1客户端检查秘钥文件和配置文件是否下发成功
进入
/
ect
/
ceph
/
目录
[root@ceph
-
client1 ceph]
# ls -l
-
rw
-
-
-
-
-
-
-
1
root root
129
Jan
6
22
:
51
ceph.client.admin.keyring
#这是下发后的秘钥文件
-
rw
-
r
-
-
r
-
-
1
root root
234
Jan
6
22
:
51
ceph.conf
#这是下发后的配置文件
-
rw
-
r
-
-
r
-
-
1
root root
92
Oct
4
10
:
50
rbdmap
-
rw
-
-
-
-
-
-
-
1
root root
0
Jan
6
22
:
51
tmpUcImw6
4
、在ceph
-
client1客户端上查询ceph集群的RBD镜像
[root@ceph
-
client1 ~]
# rbd ls #列出rbd列表
ceph
-
client1
-
rbd1
[root@ceph
-
client1 ~]
# rbd info --image ceph-client1-rbd1 #查看rbd镜像详细信息
rbd image
'ceph-client1-rbd1'
:
size
10240
MB
in
2560
objects
order
22
(
4096
kB objects)
block_name_prefix: rbd_data.
857a238e1f29
format
:
2
features: layering, exclusive
-
lock,
object
-
map
, fast
-
diff, deep
-
flatten
flags:
5
、授权之后,就在ceph
-
client1客户端上映射名为
'ceph-client1-rbd1'
的rbd镜像:
rbd
map
-
-
image ceph
-
client1
-
rbd1
执行上述映射命令后发生如下错误:
[root@ceph
-
client1 log]
# rbd map --image ceph-client1-rbd1
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:
map
failed: (
6
) No such device
or
address
遇到问题:rbd镜像的一些特性,OS kernel并不支持,所以映射失败
查看下该镜像支持了哪些特性
[root@ceph
-
client1 ~]
# rbd info ceph-client1-rbd1
rbd image
'ceph-client1-rbd1'
:
size
10240
MB
in
2560
objects
order
22
(
4096
kB objects)
block_name_prefix: rbd_data.
857a238e1f29
format
:
2
features: layering, exclusive
-
lock,
object
-
map
, fast
-
diff, deep
-
flatten
flags:
可以看到特性feature一栏,由于我OS的kernel只支持layering,其他都不支持,所以需要把部分不支持的特性disable掉。
以下方法根据实际情况选其一即可!(我这里使用的是方式二)
【方法一:】直接diable这个rbd镜像的不支持的特性:
[root@ceph
-
client1 ~]
# rbd feature disable ceph-client1-rbd1 exclusive-lock object-map fast-diff deep-flatten
[root@ceph
-
client1 ~]
# rbd info ceph-client1-rbd1 #关闭后查看
rbd image
'ceph-client1-rbd1'
:
size
10240
MB
in
2560
objects
order
22
(
4096
kB objects)
block_name_prefix: rbd_data.
857a238e1f29
format
:
2
features: layering
#仅剩一个特性
flags:
【方法二:】在ceph集群中任意节点上创建rbd镜像时就指明需要的特性,如:
$ rbd create
-
-
size
10240
ceph
-
client1
-
rbd1
-
-
image
-
feature layering
rbd create
-
-
size
10240
ceph
-
client1
-
rbd1
-
-
image
-
feature layering exclusive
-
lock
object
-
map
fast
-
diff deep
-
flatten
【方法三:】修改Ceph配置文件
/
etc
/
ceph
/
ceph.conf,在
global
section下,增加
rbd_default_features
=
1
再创建rdb镜像。
rbd create ceph
-
client1
-
rbd1
-
-
size
10240
6
、解决上述问题之后,再次尝试映射
[root@ceph
-
client1 ~]
# rbd map --image ceph-client1-rbd1
/
dev
/
rbd0
此刻,映射成功
7
、查看映射信息
[root@ceph
-
client1 ~]
# rbd showmapped
id
pool image snap device
0
rbd ceph
-
client1
-
rbd1
-
/
dev
/
rbd0
8
、如需指定RBD镜像所属池的名称(这是可选的操作)可以执行以下命令:
rbd
map
rbd
/
ceph
-
client1
-
rbd1
10
、映射之后,格式化RBD块设备,并创建文件系统
[root@ceph
-
client1 ~]
# fdisk -l /dev/rbd0
Disk
/
dev
/
rbd0:
10.7
GB,
10737418240
bytes,
20971520
sectors
Units
=
sectors of
1
*
512
=
512
bytes
Sector size (logical
/
physical):
512
bytes
/
512
bytes
I
/
O size (minimum
/
optimal):
4194304
bytes
/
4194304
bytes
[root@ceph
-
client1 ~]
# mkfs.xfs /dev/rbd0
[root@ceph
-
client1 ~]
# mkdir /mnt/ceph-vol1
[root@ceph
-
client1 ~]
# mount /dev/rbd0 /mnt/ceph-vol1/
[root@ceph
-
client1 ~]
# df -H
Filesystem Size Used Avail Use
%
Mounted on
devtmpfs
494M
0
494M
0
%
/
dev
tmpfs
507M
0
507M
0
%
/
dev
/
shm
tmpfs
507M
6.9M
500M
2
%
/
run
tmpfs
507M
0
507M
0
%
/
sys
/
fs
/
cgroup
/
dev
/
mapper
/
cl
-
root
8.6G
1.6G
7.0G
19
%
/
/
dev
/
sda1
1.1G
195M
869M
19
%
/
boot
tmpfs
102M
0
102M
0
%
/
run
/
user
/
0
/
dev
/
rbd0
11G
35M
11G
1
%
/
mnt
/
ceph
-
vol1
#这个是挂载后的
11
、取消映射块设备
[root@ceph
-
client1 ~]
# umount /mnt/ceph-vol1/ #取消挂载
[root@ceph
-
client1 ~]
# rbd unmap /dev/rbd/rbd/ceph-client1-rbd1 #取消映射
[root@ceph
-
client1 ~]
# rbd showmapped #查看是否取消成功,如没有任何输出则表示取消映射成功
12
、如下删除块设备,执行以下命令
[root@ceph
-
node1 ~]
# rbd rm ceph-client1-rbd1
Removing image:
100
%
complete...done.
[root@ceph
-
node1 ~]
# rbd ls
|
本文转自 TtrToby 51CTO博客,原文链接:http://blog.51cto.com/freshair/2058538