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

ceph rbd map failed

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2021-7-12 09:33:24 | 显示全部楼层 |阅读模式
探索 kernel RBD map 失败的问题。/ I0 Z' m! X- l3 `6 _, A& r
场景& P! B+ W: Z& O4 t" C) n
搭完 rbd mirror后,想通过client往image里写一些数据,所以在client端map rbd设备,结果失败了。( @4 S; `; ~" R5 x% N5 |3 O
rbd mirror的image 需要两个属性:exclusive-lock, journaling
) t3 H- c, P; \' R& T: ^( J原因
5 P" @5 a; P4 G6 Y) O+ H# j/ w/ h查看rbd image info: m9 |& E2 T& I; `; I: G1 o  T9 y
# n$ |$ R+ [5 A  p
# rbd info rbd/image-10 b6 l' b+ W) r/ e% j
rbd image 'image-1':
: Y" m- K9 @0 K! [ size 1024 MB in 256 objects
' C! J9 f# N2 `4 [) X order 22 (4096 kB objects)# E8 j/ t3 d# K7 k' U2 f( q
block_name_prefix: rbd_data.108b238e1f29
4 I$ X8 ~) R( y! ^# c3 U: E* Y! [ format: 2! s4 T% O! y& S1 w! q% {
features: exclusive-lock, journaling7 z3 h" [' s! D* r4 G8 _" k& M
flags:
6 a1 H  g' s' `' N: c: o journal: 108b238e1f29; `( R& B. X  X, t$ _9 k; D
mirroring state: enabled
( a7 Q% Y" k: P8 w0 A mirroring global id: c603d9dc-6f8d-49e0-ab68-5944d348e5273 L* q. @- Y; n! |! n
mirroring primary: true
# Q6 a- l9 d! F8 J6 D5 n% h输出
$ b! I) Y( Q8 G0 V/ i: D% ~
* x' W( V: t+ P3 z& i8 E7 |# rbd map rbd/image-1, s; {% E' r: p2 s
rbd: sysfs write failed
8 E# i5 b+ e; _4 n, KRBD image feature set mismatch. You can disable features unsupported by the kernel with "rbd feature disable".
; l" p) C! N2 N, a4 U( a# v! Z# J5 ]In some cases useful info is found in syslog - try "dmesg | tail" or so.
+ V7 i( i& T; W& k3 H0 `, D# F' o' D$ Erbd: map failed: (6) No such device or address
$ ]* r$ n! q. h5 K6 e然后dmesg看一下
; P8 J5 R8 b8 w) J' m0 w
0 |; r+ @% ^8 \3 J/ i/ C# dmesg | tail* ]( |2 K$ i) n: j( f
[   64.808315] rbd: loaded (major 251)
2 [, }& v" w/ Q3 s8 v! \[   64.818369] libceph: mon2 172.20.2.160:6789 session established! }; W+ P$ Z+ J- }% H
[   64.819187] libceph: client14167 fsid 4c7ec5af-cbd3-40fd-8c96-0615c77660d4
5 q7 v/ m& h0 E) V6 k[   64.836328] rbd: image image-1: image uses unsupported features: 0x40# z1 G* M# b7 j! H; S2 X
[  443.658569] libceph: mon1 172.20.2.161:6789 session established
; i& }8 Z' I1 L) t1 s; g[  443.659143] libceph: client4313 fsid 4c7ec5af-cbd3-40fd-8c96-0615c77660d4" K" [# A1 n5 Y# q- ?) D$ p# p+ z
[  443.683178] rbd: rbd0: capacity 10737418240 features 0x1# j( c! }& v# y' b
[  978.502132] rbd: image image-1: image uses unsupported features: 0x40
. U$ p, m+ ^5 g错误原因  r# R  z1 A/ w3 {  C5 [" j, k
image uses unsupported features: 0x40; Z$ G$ M8 k( M6 N; \+ B# j8 V
不支持特性 0x40 = 64,也就是不支持特性 journaling( d" n$ [3 h- v$ g, F1 p
关于内核支持的特性分析8 J% @' _: G' L& s
查看内核版本
0 D, {+ u$ M2 [4 L& a- q. s: R
; S: X! F/ E  [/ `/ ~* }: Z$ @) U# uname -r
  b- V! w" k5 S* c! Z2 T3 t3.10.0-327.el7.x86_64
6 _2 v( }5 w4 P( W" ~. A) a根据查阅资料和实践,发现:
  z, P1 L0 c" U1 s6 i3 mCentOS的3.10内核仅支持其中的layering 和 exclusive-lock,其他feature概不支持
  W# d) z; \: U内核4.6仍然只支持:layering、exclusive-lock和 striping 属性( @6 d* k& [7 r, u3 @" ~! T3 Y% g* g" q

& P' ^4 S: y& n- ]4 X" g# rbd info rbd/test-map' ?# |( b# J: x( S
rbd image 'test-map':' D. j3 @/ {+ |. k5 M+ [; b
size 512 MB in 128 objects
  I8 C( m8 T' |4 v# I order 22 (4096 kB objects)& C4 g6 f$ h( u
block_name_prefix: rbd_data.10ca238e1f29' I# M! |, d8 W. u
format: 2" l3 S5 A, }0 n" F
features: layering, exclusive-lock
$ o) t+ ]- n  U/ r) T+ @8 u flags:
8 G) ~- D6 {, s" I9 S2 p/ vmap" M1 K" x" @: u0 ?- ~4 Z8 |

& O4 s8 k9 N5 E1 }; f- n( z# rbd map rbd/test-map
  ]2 t# ^0 T+ Q6 C  ]/dev/rbd14 _- l9 A1 @3 E: m4 F8 p  g1 }: Z) M. o
此时可以map成功。
+ v/ B1 X* o7 S2 E) J8 A2 [# KRBD特性解析' v3 l6 Q% F2 L. h1 @* H/ O
特性一览表
" p$ @2 |' o% O8 u% t  pRBD支持的特性,及具体BIT值的计算如下
. |3 o8 ~% w' p9 ^属性 功能 BIT码
8 q% _2 W# [2 M# l' E. nlayering 支持分层 1
$ o2 ^+ H2 x0 x9 P- P, P8 D) e! N, Rstriping 支持条带化 v2 2+ n7 A4 {2 F8 u, [3 v
exclusive-lock 支持独占锁 4
6 Q' z2 C% B9 S4 P5 dobject-map 支持对象映射(依赖 exclusive-lock ) 8
* F8 K' a! \' e* u3 G% yfast-diff 快速计算差异(依赖 object-map ) 16* G! C1 R0 A- h: A) U# o$ |" C; ?$ w
deep-flatten 支持快照扁平化操作 323 t9 @% u0 z2 ]7 A% q; ]2 T4 S
journaling 支持记录 IO 操作(依赖独占锁) 645 g% R$ v3 k5 v$ H% L
ceph kraken版本默认属性值) e) D. b+ Z2 X/ Q6 W5 R

5 Z+ j9 a/ U3 }: y; m4 s; }# ceph --show-config|grep rbd|grep features# d9 j' X5 q& }2 n% n4 y
rbd_default_features = 61( {6 z8 ?6 x/ e0 @8 L& l6 Q
为啥是61?我们创建一个默认配置的rbd看看9 E* `" ~# k3 j3 S$ d8 _

, m+ c) c7 R" m+ M; F  E+ [# rbd create test-feature --size 643 ^# G/ j4 U  o/ i
# rbd info rbd/test-feature, M+ Z) ?/ z$ N
rbd image 'test-feature':$ m! f1 v1 b- ^. e! W/ u1 Z
size 65536 kB in 16 objects- y9 ~) M3 F' B+ o5 l1 f
order 22 (4096 kB objects), T+ `) v+ X$ d) f' t% B8 e
block_name_prefix: rbd_data.107d238e1f295 r& B6 l8 W+ h  |4 C6 t+ X
format: 2
6 X) m1 {  @! ]3 ?) \+ Y' _! z3 n features: layering, exclusive-lock, object-map, fast-diff, deep-flatten5 h: c. |! y4 k3 @6 m
flags:  q' w9 T/ S( B! Y/ D( Y
1+4+8+16+32 = 61
3 P1 r- ~' p  T/ r  X( D/ Q$ U就是说除了特性:striping 和 journaling 外都开启了。
) b  ]: f' ]. ]2 \* S5 R控制属性
7 s1 |9 W; X& S' w7 x& j& g有三种方法来开启需要的特性9 V4 W/ K+ n# U% i( H5 y
1、在创建image时,通过 --image-feature 来指定需要开启的特性
4 ^* q0 Z# V6 a5 [, ~2、对已存在的image可以通过如下命令开启和关闭
5 w# R0 W8 A/ u- N7 M0 E% t$ t10 k; o' n) c: C% |3 B9 R8 ~0 g
28 I8 N/ |' @8 L( W7 l& @3 M
rbd feature enable <pool-name>/<image-name> <feature-name>% s5 e: }; S. @5 f/ \( b" k" {
rbd feature disable <pool-name>/<image-name> <feature-name>! B) b/ _# o  t9 U  g0 E/ b0 P
3、当然,每次通过enable和disable来不是很便捷,可以通过修改配置文件来解决( b: p0 q" g8 f* }
1" y4 A: U/ R" C  U" }1 K
2. k0 z( F( ]/ a# k7 H
3
$ `7 D* D+ N/ `. D" N; Y4
0 ?, }! m" T( S  m1 ~vim /etc/ceph/ceph.conf1 _7 _+ I! T, ~4 X- v1 U
...
. F; Y3 L. d$ d. }' T  {8 D6 irbd_default_features = 1
/ I, D* u+ e8 U% U$ t# t0 d& E...7 `/ \. a5 V) z/ |% ], X- Y
具体该设为多少可以通过上面BIT值查表计算得出。% ]6 e; A( V4 {% f* p
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 01:53 , Processed in 0.020560 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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