易陆发现互联网技术论坛

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

ceph rbd map failed

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

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

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

x
探索 kernel RBD map 失败的问题。7 L' R' I6 H0 H# J+ h, N
场景
& U7 E( d/ `8 v- X; _% h搭完 rbd mirror后,想通过client往image里写一些数据,所以在client端map rbd设备,结果失败了。
* p5 ~+ @) ], a& grbd mirror的image 需要两个属性:exclusive-lock, journaling
( U+ O# K$ r. J原因
- m& x) ]  K5 Q' f- U' M4 {查看rbd image info
$ W% P( r: B% e6 `9 T; |, k
$ F. W5 E# @3 _. e* w! m  n, h# rbd info rbd/image-1
7 m9 L9 \( {) D3 Urbd image 'image-1':
* p5 i6 ]& X; v2 ~2 X+ C" l size 1024 MB in 256 objects/ l& q* ^- p& j) [; J7 G
order 22 (4096 kB objects)
- W$ ?, ]; A9 H1 {1 D( [" t3 b1 g block_name_prefix: rbd_data.108b238e1f29
$ R2 B9 U' b8 ]; k6 S' Y format: 2- e! _. p3 G" N) E; H9 `
features: exclusive-lock, journaling% F0 L& F" B8 O7 A' M1 h. o
flags:1 t! Y1 v; @8 e3 Q, k  D6 ]( X
journal: 108b238e1f29% j- k$ Y% e  V- A- B$ W7 U4 i# _
mirroring state: enabled8 S" W  x0 w0 H( j1 w, C
mirroring global id: c603d9dc-6f8d-49e0-ab68-5944d348e527* u' P  Q, ]$ z( L: I$ s
mirroring primary: true
' g/ ^) P' H2 ^9 k输出
1 w# L( m% ?5 J0 C4 w, ?/ k2 p7 F
# rbd map rbd/image-1
: b; f5 d- F. h/ yrbd: sysfs write failed
! V2 K5 G1 E1 F# A" Z4 ~' zRBD image feature set mismatch. You can disable features unsupported by the kernel with "rbd feature disable".
5 s4 L1 J: A% h$ h' xIn some cases useful info is found in syslog - try "dmesg | tail" or so.+ X. Q; U1 r2 P+ k/ v
rbd: map failed: (6) No such device or address
7 u# ~' ]/ I5 m' ?7 J然后dmesg看一下9 Q* i' N& I* C  ^+ P
$ s. ?  A' T! ^% T& X( B' }$ Y
# dmesg | tail/ N' U) R3 o; F; i0 R8 v9 ]4 d; a
[   64.808315] rbd: loaded (major 251)
( ]0 Y6 i2 K& T' `$ e[   64.818369] libceph: mon2 172.20.2.160:6789 session established5 E! k# F% w* [+ H$ x5 g
[   64.819187] libceph: client14167 fsid 4c7ec5af-cbd3-40fd-8c96-0615c77660d4
% S! A% p2 \& c[   64.836328] rbd: image image-1: image uses unsupported features: 0x40
! t+ H- I3 o  Z8 ^% {[  443.658569] libceph: mon1 172.20.2.161:6789 session established
, q+ M  m( ?; @/ c[  443.659143] libceph: client4313 fsid 4c7ec5af-cbd3-40fd-8c96-0615c77660d4
# V( k, c; Y8 F" b8 N0 s[  443.683178] rbd: rbd0: capacity 10737418240 features 0x1
( H; e8 C* s! r[  978.502132] rbd: image image-1: image uses unsupported features: 0x40
# ~; L* l# T9 X; E, Z/ F错误原因- |) Z! p+ ^5 Y7 f
image uses unsupported features: 0x409 y$ y8 D$ b1 r) V8 S2 y( u4 G1 _
不支持特性 0x40 = 64,也就是不支持特性 journaling0 \- ?. O5 M$ `( i; w) g" d
关于内核支持的特性分析- A  R4 L' I% F. ~# x( }9 P
查看内核版本3 V& g( L) f! F7 {# _

/ Q! w3 C) m4 u; _  L5 ^+ _# uname -r' y1 J7 ~, u7 g9 N* F; x6 S9 {
3.10.0-327.el7.x86_64
2 o3 @; M" L0 O& e根据查阅资料和实践,发现:. J4 X. x0 _# X* C2 J4 |8 r
CentOS的3.10内核仅支持其中的layering 和 exclusive-lock,其他feature概不支持% i3 Z8 M" l' R/ K) K0 Y% |% }
内核4.6仍然只支持:layering、exclusive-lock和 striping 属性, F* w' o/ s) Q3 l: Y6 B, l9 ]
+ u3 @7 y6 n5 B/ Y' q  q9 s: s1 z' d
# rbd info rbd/test-map) C  Q+ ^4 [8 O/ k  D
rbd image 'test-map':
( P: n' f& ]2 h4 Y5 s/ I! ?4 i0 Z size 512 MB in 128 objects
- K, i7 d3 }7 ]" \8 _; d order 22 (4096 kB objects)! a( }/ T8 V5 U: Q# `: F
block_name_prefix: rbd_data.10ca238e1f295 M8 {/ `. V9 v2 X+ u
format: 2
4 w3 c4 W- H) ]! i) u; f/ q% E features: layering, exclusive-lock# W, B4 b+ m. f3 ]# x( Y. |
flags:, a4 F- {9 J7 b! E2 s9 T
map
/ d0 J* h8 \6 h  `& s" x6 h# f  ]* M: X  M7 \7 c/ G5 k8 d  ]
# rbd map rbd/test-map& F# s; _. o' V4 |; S) ~8 s
/dev/rbd1
- o$ H: ~) T+ n  v此时可以map成功。% l* W7 X! }7 B3 A* @* I
RBD特性解析
" |7 E, h& S3 M! U8 n特性一览表
# w4 X$ S# g6 j- m/ [( nRBD支持的特性,及具体BIT值的计算如下
% y* ~1 ]. j9 q; R2 \9 I$ w" U8 N属性 功能 BIT码
0 v$ y: G4 v( Wlayering 支持分层 1# J3 y/ ~5 D% M8 H# ]( b& s
striping 支持条带化 v2 23 E1 G) R; Q% X- o
exclusive-lock 支持独占锁 41 L  U+ A3 _$ {9 r( O6 P7 g! h
object-map 支持对象映射(依赖 exclusive-lock ) 8
! _! S% V1 \  @( Cfast-diff 快速计算差异(依赖 object-map ) 16: t' j  C- a5 {6 Q
deep-flatten 支持快照扁平化操作 32
' m  J3 O( W. s5 N* X; ~' J+ v! E5 o' z. qjournaling 支持记录 IO 操作(依赖独占锁) 64
" _* ~$ ^  S% A/ ^* _& Q; Sceph kraken版本默认属性值
" L/ K5 j2 G) R, G, M8 W" H7 ?* {" A
# ceph --show-config|grep rbd|grep features* U* Y! j1 @  w* Z; o: _) X
rbd_default_features = 61& e/ t# P7 ?4 N8 ]
为啥是61?我们创建一个默认配置的rbd看看0 }0 ~9 K/ ]0 |- n. y
! C! y! O( k/ T$ U5 N) P4 r: U8 o+ [
# rbd create test-feature --size 64- x4 e' z) D$ f; W! L) _) j
# rbd info rbd/test-feature, b0 X$ v' |! M5 B. C/ c! g
rbd image 'test-feature':# y, `* _6 [, L
size 65536 kB in 16 objects2 r+ {/ z! b8 K4 C" I7 \6 r
order 22 (4096 kB objects)( e- p9 S! ]( O- A. D6 h
block_name_prefix: rbd_data.107d238e1f29: q  P9 Y) b; P, q4 I) K" I: q: p; [
format: 2
# i: {* k' |8 a8 P$ c" H features: layering, exclusive-lock, object-map, fast-diff, deep-flatten/ A: z( d; u3 R9 i# K) O! u. d$ u
flags:2 [3 s: l6 E' X. y$ X$ E
1+4+8+16+32 = 61
# p8 L& D' Y3 w6 m' B就是说除了特性:striping 和 journaling 外都开启了。. p  W1 O' q) g; ~
控制属性
6 i& @+ D' R  J有三种方法来开启需要的特性6 V: e. g  N3 q% Q
1、在创建image时,通过 --image-feature 来指定需要开启的特性
( t! f$ [7 `. T4 {' [) \2、对已存在的image可以通过如下命令开启和关闭" f8 Q9 }9 R8 Q8 n* [
10 N/ J  J8 S$ `, d5 y+ s
2
* j% H7 a" {' |9 {rbd feature enable <pool-name>/<image-name> <feature-name>) s: Y- s8 D* ?" e8 G' c# m
rbd feature disable <pool-name>/<image-name> <feature-name>, H- L' B1 |$ l  c% |: C
3、当然,每次通过enable和disable来不是很便捷,可以通过修改配置文件来解决$ }; l: \  k5 G4 U
19 U+ d* z$ I8 r; |, t' N2 c
2
. j. l) {7 ]5 V0 H& V* ]34 _8 J( z  m( k  ?' F
4+ l/ H$ X# e0 t; {, a! Z
vim /etc/ceph/ceph.conf
% o7 a% p8 J; C9 h! j$ G...
# X. }% i9 a( P: w! J, [9 vrbd_default_features = 1
1 E4 k; O8 o: t" P& z.... K2 }! O- @2 k: K2 ~
具体该设为多少可以通过上面BIT值查表计算得出。
3 ~5 {' Z2 c- k% Z8 m. }
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

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

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

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

GMT+8, 2026-4-8 20:21 , Processed in 0.043469 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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