转载自:http://blog.51cto.com/hipzz/1888048
摘要: RBD image feature set mismatch.
1.故障现象:(存储池、镜像已经建立ok)
[root@ceph1 ~]# rbd map block
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
[root@ceph1 ~]#
a.按照提示查看了日志信息,如下:
[root@ceph1 ~]# dmesg | tail
[ 9465.133126] rbd: image block: image uses unsupported features: 0x38
[10208.678467] libceph: mon0 192.168.80.31:6789 session established
[10208.678693] libceph: client14224 fsid aac967f6-b6c5-4601-916e-9bc4aefb501f
[10208.738684] rbd: image block: image uses unsupported features: 0x38
2.故障排查:
a.查看系统的内核以及ceph版本,如下:
[root@ceph1 ~]# uname -a
Linux ceph1 3.10.0-514.2.2.el7.x86_64 #1 SMP Tue Dec 6 23:06:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
[root@ceph1 ~]# lsb_release
LSB Version: :core-4.1-amd64:core-4.1-noarch
[root@ceph1 ~]# ceph --version
ceph version 10.2.5 (c461ee19ecbc0c5c330aca20f7392c9a00730367)
[root@ceph1 ~]#
b.经过查看ceph文档rbd 块镜像有支持两种格式:
--image-format format-id
format-id取值为1或2,默认为 2。
format 1 - 新建 rbd 映像时使用最初的格式。此格式兼容所有版本的 librbd 和内核模块,但是不支持较新的功能,像克隆。
format 2 - 使用第二版 rbd 格式, librbd 和 3.11 版以上内核模块才支持(除非是分拆的模块)。此格式增加了克隆支持,使得扩展更容易,还允许以后增加新功能。
解决方案1:
更改为格式1,重新映射。
注意:需要重新建立镜像。
[root@ceph1 ~]# rbd create block1 --image-format 1 --size 1024
rbd: image format 1 is deprecated
[root@ceph1 ~]# rbd ls
block1
block
[root@ceph1 ~]# rbd map block1
/dev/rbd0
[root@ceph1 ~]#
d.如上所示,映射正确。
解决方案2:
根据官网介绍,新建rbd默认格式2的rbd 块支持如下特性,并且默认全部开启:
--image-feature:
layering: 支持分层
striping: 支持条带化 v2
exclusive-lock: 支持独占锁
object-map: 支持对象映射(依赖 exclusive-lock )
fast-diff: 快速计算差异(依赖 object-map )
deep-flatten: 支持快照扁平化操作
journaling: 支持记录 IO 操作(依赖独占锁)
接下来尝试少开启一些特性:
[root@ceph1 ~]# rbd create block2 --image-feature layering --size 1024
[root@ceph1 ~]# rbd map block2
/dev/rbd1
ok,映射成功,故障解决!