易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 2101|回复: 0
收起左侧

ceph rbd map failed

[复制链接]
发表于 2021-7-12 09:33:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?开始注册

x
探索 kernel RBD map 失败的问题。
8 n7 V& X# u, ^/ G/ n3 H( \场景
/ B3 L) E0 X- q) s' h2 X6 V3 w搭完 rbd mirror后,想通过client往image里写一些数据,所以在client端map rbd设备,结果失败了。
7 K: D+ n* H+ N7 Brbd mirror的image 需要两个属性:exclusive-lock, journaling
' {- M1 a; |' @* p. Q: j原因
: R% U* p% {' T; o查看rbd image info# ?* O. s; ~; a8 M6 N& M

' f; w7 O4 h9 V% ~/ B* K3 c/ D# rbd info rbd/image-1
$ O; f2 i# x. Z" Crbd image 'image-1':9 S8 R7 P! d5 M, c3 Y6 _9 L6 ?2 d6 O
size 1024 MB in 256 objects
+ _8 l8 @7 Y" E& ?7 n0 a* u order 22 (4096 kB objects)
9 I- q, O$ ]/ `6 P9 E7 o6 Y block_name_prefix: rbd_data.108b238e1f29
! m3 o9 M: k' m: Q+ y format: 28 {; C+ w- u( I5 i
features: exclusive-lock, journaling) I8 P& D* I( X# L
flags:' T; t' {5 L6 x! p- S3 ~& f
journal: 108b238e1f29
! k/ F' R8 M; A8 P2 I mirroring state: enabled( A) R$ j, k- S7 N) g/ F
mirroring global id: c603d9dc-6f8d-49e0-ab68-5944d348e527
4 O) `2 a( S* _+ G" l mirroring primary: true: @; m" a8 x3 ?3 k' m2 B$ ^
输出
* y2 C& z2 P5 ~' v. u+ |) W3 N6 t% f5 o6 L$ w
# rbd map rbd/image-1' u9 P3 ?% y% [, z$ H% ?  k1 S6 l2 }
rbd: sysfs write failed
& ?2 d8 z: A! g2 ]RBD image feature set mismatch. You can disable features unsupported by the kernel with "rbd feature disable".( P8 e. g/ B5 |  R, e& \8 y3 W2 B
In some cases useful info is found in syslog - try "dmesg | tail" or so.$ i9 c# x- |0 l6 l8 W+ ~# b
rbd: map failed: (6) No such device or address
* a! w- G* B) O# F2 r然后dmesg看一下8 k2 m: K! T  j7 C' g) s

' [9 g( X$ M( O# dmesg | tail
$ U, X# Z8 ]+ B6 K& K6 N5 {[   64.808315] rbd: loaded (major 251)
2 m1 q* p1 B2 f& V0 ?' Y% S& y2 |[   64.818369] libceph: mon2 172.20.2.160:6789 session established" N0 H, {. \7 N; k3 p4 E
[   64.819187] libceph: client14167 fsid 4c7ec5af-cbd3-40fd-8c96-0615c77660d49 W) @& B( U7 K  j1 W
[   64.836328] rbd: image image-1: image uses unsupported features: 0x40
3 b0 l) a" s2 _# A3 k0 v[  443.658569] libceph: mon1 172.20.2.161:6789 session established
) l; J0 ^* Z" g9 H[  443.659143] libceph: client4313 fsid 4c7ec5af-cbd3-40fd-8c96-0615c77660d4
: ]# `8 K4 {( H! M3 J[  443.683178] rbd: rbd0: capacity 10737418240 features 0x10 b6 X, [, n  A% e- C( Z5 T; o
[  978.502132] rbd: image image-1: image uses unsupported features: 0x40
3 \+ Z' K8 ?" a# X. t+ y4 W8 @8 J错误原因, [' Z  I2 k9 L  Q$ X% r6 @" R
image uses unsupported features: 0x40
! a( h3 j7 d9 i4 A/ w不支持特性 0x40 = 64,也就是不支持特性 journaling; c5 q( g# j" L0 Y2 `4 H
关于内核支持的特性分析( w( g" V! Z3 U; b
查看内核版本7 L& Q: [5 Z8 \( l$ B& l

5 `0 r8 `2 G. b. Z# M5 K$ Q; N# uname -r
' S2 s3 R% N9 V2 [0 ^+ w3.10.0-327.el7.x86_640 j: i; i5 n3 R# Z6 a, `, x
根据查阅资料和实践,发现:( O3 {6 [( S5 A5 U3 \
CentOS的3.10内核仅支持其中的layering 和 exclusive-lock,其他feature概不支持& _7 u! m4 c+ m, O: Z
内核4.6仍然只支持:layering、exclusive-lock和 striping 属性' F+ N' U: w0 L( E! E6 z) o, V' [3 |

0 i% n- O$ _/ v2 b, n# rbd info rbd/test-map
3 }; t0 G  y/ z0 R3 H  prbd image 'test-map':
1 d# j; I/ x; t9 c+ A! c) t& M size 512 MB in 128 objects
9 t1 X+ t+ c  Z1 g; I order 22 (4096 kB objects)" E4 V* p# Y% G: H% ]
block_name_prefix: rbd_data.10ca238e1f29
5 D0 n; Y3 h$ j format: 2
- q; _, A' r. n. t) D0 g features: layering, exclusive-lock" z% M/ |. b) E5 e" |3 ?; P' s
flags:: ^  T5 z7 P7 \6 |9 ?( f
map! y9 h% ]4 h5 I

7 B" s, b+ X7 `1 ^! @, c/ d+ X: w# rbd map rbd/test-map! u3 r% T3 Z) O8 m: G& p2 B
/dev/rbd11 v! v$ f' H* P6 r3 m
此时可以map成功。+ A% z& _8 i3 b' U$ f
RBD特性解析
  J/ d3 y9 a$ k) r0 h& x特性一览表$ q5 u! J, D$ i5 _$ _
RBD支持的特性,及具体BIT值的计算如下
3 O+ i( O, n3 }属性 功能 BIT码
# ^! L& I9 _; }& L/ Q& Q6 Dlayering 支持分层 1) `* l4 \6 V( r  w& a' W0 d
striping 支持条带化 v2 2
7 p) y2 o) I, N9 Bexclusive-lock 支持独占锁 4: R( A+ n; m* }) y( T% E# d
object-map 支持对象映射(依赖 exclusive-lock ) 8) r, g' K  P# v4 w4 a" m+ |7 G) {
fast-diff 快速计算差异(依赖 object-map ) 16
, D! i. u; \5 A- C  {+ Z1 Vdeep-flatten 支持快照扁平化操作 32$ ^) [+ }: {: M) s( c
journaling 支持记录 IO 操作(依赖独占锁) 64# D, b0 b2 ]6 r$ p
ceph kraken版本默认属性值
2 A' s/ S, x# p! c" ^5 d) T5 |0 u# [# C( ?/ e3 I: Q  L- w1 m# [
# ceph --show-config|grep rbd|grep features
) Z9 Z. Z* Q) c8 Orbd_default_features = 61
' X- I+ y+ ^# @6 y' r7 z" \  d为啥是61?我们创建一个默认配置的rbd看看
  S+ T9 X# |8 K$ G. b! B2 C2 S3 E6 G7 C; \) a0 r
# rbd create test-feature --size 64
2 O1 h5 F9 G6 o& x# rbd info rbd/test-feature7 j' ~: \  Z, m& X: ?9 a* @; A) F
rbd image 'test-feature':1 J  v* o  E+ I" r' p2 w
size 65536 kB in 16 objects
% P4 ^# g  C( e4 P order 22 (4096 kB objects)
! |! @. z3 w8 T1 U( Z block_name_prefix: rbd_data.107d238e1f29
* g" k8 w- p* P  [- h; R format: 2( [! p# b$ U* X3 u
features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
# q$ X  H) T: l# ?* u flags:5 f8 P6 L' N% Q. p$ m& E2 T
1+4+8+16+32 = 61
, Z# R# ~% a$ E% \& @2 k就是说除了特性:striping 和 journaling 外都开启了。
7 v2 S% m) x+ Q7 O* e: |2 O控制属性
7 R. ~' C0 c3 I6 x& V有三种方法来开启需要的特性, p' ^1 v& F/ D& r, G2 K  e& ]
1、在创建image时,通过 --image-feature 来指定需要开启的特性) e# N7 Q4 p) j: x3 _
2、对已存在的image可以通过如下命令开启和关闭  F& l  m5 M3 T$ R$ O( X
1
0 A4 N) v" [% Z& [' n/ n  C0 }2: _0 w4 h( g) m; a4 L8 \' j& ~$ {
rbd feature enable <pool-name>/<image-name> <feature-name>0 Q5 X7 F( {& U: @3 H
rbd feature disable <pool-name>/<image-name> <feature-name>; t( R4 Y3 B9 }' ]
3、当然,每次通过enable和disable来不是很便捷,可以通过修改配置文件来解决! F4 Z, x5 i) N
17 |# O+ _1 o* F! l8 \: X% r
2
+ g8 q* ?. g  C6 @" V) D% z7 A3  T' r: p+ C7 m
43 B' q! ?4 l% U
vim /etc/ceph/ceph.conf
% t5 ^2 R/ `5 p7 r. n8 h2 q4 q..., j% X& h# n  _1 s! M, x
rbd_default_features = 15 T- @% t. U; x% x* j
...: J" ?/ _  p3 ^- p4 E  f+ z) r
具体该设为多少可以通过上面BIT值查表计算得出。5 R' b+ s4 e+ C" D; \
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )点击这里给我发消息

GMT+8, 2026-4-9 00:04 , Processed in 0.049136 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

快速回复 返回顶部 返回列表