找回密码
 注册
查看: 2962|回复: 0

ceph rbd map failed

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2021-7-12 09:33:28 | 显示全部楼层 |阅读模式
探索 kernel RBD map 失败的问题。* @5 R; ?: b5 U9 Z6 ?. G
场景# H5 g- c* f+ h
搭完 rbd mirror后,想通过client往image里写一些数据,所以在client端map rbd设备,结果失败了。
5 j& ]/ n  Q( ?6 U7 t. _rbd mirror的image 需要两个属性:exclusive-lock, journaling8 y2 X0 `# j% w5 ^, o8 Y
原因
( i+ Y) V6 z; ^查看rbd image info
/ `) D" @  @/ v9 u6 w8 S9 C! w
) i3 x$ t1 {# p# rbd info rbd/image-1
% {4 w9 J$ G: L/ H; L" Hrbd image 'image-1':
: N6 m% s! k/ i  Z: E9 A size 1024 MB in 256 objects
0 k1 s' j1 ~. U7 X7 ?0 \ order 22 (4096 kB objects)5 h% o% ]: M1 n6 r$ c2 V' _
block_name_prefix: rbd_data.108b238e1f290 A9 A' ]% l0 G) w* _  N" c
format: 2" u5 e6 c6 q$ a
features: exclusive-lock, journaling- W/ M5 h; G, @# g
flags:5 [8 I9 F0 L' x& Y# U7 k
journal: 108b238e1f294 v; f4 x6 y  v# V. _! p: ~6 \( m
mirroring state: enabled, D1 g: w# t# t5 U/ d6 h# {, O
mirroring global id: c603d9dc-6f8d-49e0-ab68-5944d348e527
/ [( w6 f) L- ^7 x: x mirroring primary: true
+ G* ?- ~+ ?: k( X7 c. w: w输出: F8 Q* L& ^0 h9 H6 _

( R' [  h4 I0 u. Q1 {# rbd map rbd/image-10 `" Y' r7 B1 z: }& w# k
rbd: sysfs write failed' A" h; I$ F  R$ ~" v% B5 [
RBD image feature set mismatch. You can disable features unsupported by the kernel with "rbd feature disable".
7 v' F1 o4 w# H+ zIn some cases useful info is found in syslog - try "dmesg | tail" or so.
, F8 `- V6 ~, z( T/ n5 m+ arbd: map failed: (6) No such device or address
( v7 F" x' G7 q, g4 @! [7 b然后dmesg看一下$ `; `* x' M* O- A
0 K' e' |. f& ^  _- F/ N
# dmesg | tail
; {9 g4 r2 B9 X% o7 B4 x[   64.808315] rbd: loaded (major 251)7 E! G; q0 t% _: `6 C) i- Z
[   64.818369] libceph: mon2 172.20.2.160:6789 session established8 q2 ~+ b) R- |1 x
[   64.819187] libceph: client14167 fsid 4c7ec5af-cbd3-40fd-8c96-0615c77660d4
  w2 Z0 \' D7 q) O( c$ F; ^  J[   64.836328] rbd: image image-1: image uses unsupported features: 0x40
' b3 b; j7 _% J& W5 E[  443.658569] libceph: mon1 172.20.2.161:6789 session established' o: ?' K, w& y2 _' A5 h
[  443.659143] libceph: client4313 fsid 4c7ec5af-cbd3-40fd-8c96-0615c77660d4( G0 f% M, e8 W) O! A/ q
[  443.683178] rbd: rbd0: capacity 10737418240 features 0x17 }# L6 a- v( [, g! W2 w& ~
[  978.502132] rbd: image image-1: image uses unsupported features: 0x40: ?+ `% H, ?+ e2 A1 [
错误原因
+ R1 D; I3 _: T, L# q: ?) |5 x. Cimage uses unsupported features: 0x405 f/ U8 m8 J, \8 ^$ R3 l- d# H
不支持特性 0x40 = 64,也就是不支持特性 journaling0 B) Z/ y/ G6 I: }8 V, x
关于内核支持的特性分析; U+ M2 J4 d! n* V. q
查看内核版本
$ S: n) ~# G: E. T' M4 @! S# n0 {- t1 A: P
# uname -r
, U  u2 a0 Z) N) P: m3.10.0-327.el7.x86_64" e% I! J7 L* d0 r6 Q2 L! s" \
根据查阅资料和实践,发现:
4 ?$ p/ i- x0 b3 ~' V5 [% gCentOS的3.10内核仅支持其中的layering 和 exclusive-lock,其他feature概不支持$ w7 R2 A7 y) D  V. h; n# I: D/ J
内核4.6仍然只支持:layering、exclusive-lock和 striping 属性
  I! D+ V7 ~8 l# {: a+ ~: G5 P0 f' c, b6 Z2 {  L8 j
# rbd info rbd/test-map4 f0 e1 \' x  h+ y7 c
rbd image 'test-map':
% v. X  _' s6 {% r1 l, l size 512 MB in 128 objects" d, a; P* S2 K. ]
order 22 (4096 kB objects)1 s: m: _4 u5 P% {7 z8 {, x9 y) L
block_name_prefix: rbd_data.10ca238e1f29
' s4 Y/ S8 D. Q7 F  A% X" L format: 2
1 y# G2 q: u; h4 T# ]1 B' l# B0 ^6 u1 } features: layering, exclusive-lock1 {$ P) b% _8 o5 {1 v: R
flags:4 o! w- |: P0 Y. k% w2 l8 \, T1 c
map
' d' _0 P: k# O. z8 Z9 g5 i0 T: e+ v
# rbd map rbd/test-map# d! k( d/ Q# y5 T" K& K
/dev/rbd1; m* y% u7 }' u6 i
此时可以map成功。; w4 k4 m# f& M0 J) H
RBD特性解析5 x% C; _, g5 q1 d
特性一览表' B% }; @! ?6 i# f1 r9 J( t. x
RBD支持的特性,及具体BIT值的计算如下3 y$ L8 ^: J. b" w6 G  S# n
属性 功能 BIT码
0 u9 i/ ~/ h; l5 d6 T  Hlayering 支持分层 1! J* j* p9 C& Z
striping 支持条带化 v2 2
9 u0 j# |9 ~: d/ \exclusive-lock 支持独占锁 4
$ U3 P6 A. l4 Q+ a$ Yobject-map 支持对象映射(依赖 exclusive-lock ) 8
9 Q. M# y0 O, ?; _0 s' {$ J# v+ B; \fast-diff 快速计算差异(依赖 object-map ) 161 G" h5 x4 d" K
deep-flatten 支持快照扁平化操作 323 E: C1 _: U  H7 R/ J
journaling 支持记录 IO 操作(依赖独占锁) 64
" q$ R' R& J5 ~! H$ oceph kraken版本默认属性值7 y* w( q* k( f8 W& @

  q9 G( l! N# X. K# ceph --show-config|grep rbd|grep features* R) S5 x7 J4 N  f$ H
rbd_default_features = 61
( }% H7 ?9 L" ]8 D$ L为啥是61?我们创建一个默认配置的rbd看看: g4 {4 v) N' x8 @

9 F; _8 u( F5 M/ H1 {6 o! B# rbd create test-feature --size 64
, C; D% z  J" G6 [7 W/ y. Z1 A# rbd info rbd/test-feature
$ K' t4 @. u6 g0 Nrbd image 'test-feature':
1 x6 e0 I6 V+ j5 v; t! S size 65536 kB in 16 objects
' m. A8 j5 n( B4 \7 G order 22 (4096 kB objects)) X% P" ]3 {+ |7 m8 X, v' b% s
block_name_prefix: rbd_data.107d238e1f29
3 e' u. M1 {, x" s format: 2& r/ n* h& O7 z0 p9 s
features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
+ E/ Y9 _. Y$ J' n4 l9 p+ Y flags:: {; X5 ]* C( V9 N6 N( z
1+4+8+16+32 = 61) t: W4 Y+ S8 o' }7 k# I$ ?# l$ W; h6 p
就是说除了特性:striping 和 journaling 外都开启了。
5 o) t: C" S/ k. [: o- K控制属性
, \6 f+ t' s4 e1 s, ?" W有三种方法来开启需要的特性" \) S# ?3 [2 f  a/ y% b
1、在创建image时,通过 --image-feature 来指定需要开启的特性
* g' P9 `+ C) N: I2、对已存在的image可以通过如下命令开启和关闭: w0 y& [" `6 v: s9 L
1
0 X6 E# T2 p* Q. [' A2  ~: N1 F3 G  H2 S( c6 _
rbd feature enable <pool-name>/<image-name> <feature-name>
& H9 q0 \, O. ~/ mrbd feature disable <pool-name>/<image-name> <feature-name>
2 |, L$ |" |' _  @7 |! H" l3、当然,每次通过enable和disable来不是很便捷,可以通过修改配置文件来解决8 |2 H( o, ?' w
1
( _2 A2 J2 D! c# a2
9 O8 ?$ C4 t# q3  l4 P* }" ^# k3 o* X
4
  v# J1 L4 U3 s  V/ z# h" h2 F+ S- ~vim /etc/ceph/ceph.conf0 o  b% O7 k9 @0 u
...
* ]0 `/ s( t( T+ arbd_default_features = 1# t1 b  _. l: }; t' c7 [5 u
..." H( `( q; x. r; p1 d( l
具体该设为多少可以通过上面BIT值查表计算得出。( t  Q9 Q  g) P  d. D
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 00:57 , Processed in 0.016987 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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