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

ceph rbd map failed

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2021-7-12 09:33:28 | 显示全部楼层 |阅读模式
探索 kernel RBD map 失败的问题。
& H# _# s  Y/ |+ M/ |2 x场景
% d0 G0 K$ `1 c4 y( V3 L6 S8 f搭完 rbd mirror后,想通过client往image里写一些数据,所以在client端map rbd设备,结果失败了。
* u6 o6 A/ W/ J2 z8 jrbd mirror的image 需要两个属性:exclusive-lock, journaling
1 f  ~' w, i( N$ K/ I原因' n) B/ t8 a2 J
查看rbd image info
( u( u5 f& K# O) D) u6 s
: J3 k2 S# P1 Q3 ]7 T: O# rbd info rbd/image-1
5 X5 Q- s2 z1 c1 g7 m% u- G- X; W& [rbd image 'image-1':, z! J/ \0 F" J9 m9 N- F
size 1024 MB in 256 objects0 T$ g* ]9 `' o8 ?
order 22 (4096 kB objects)
' V7 _8 @3 A1 @4 I6 c block_name_prefix: rbd_data.108b238e1f29
# y1 X0 C" x1 { format: 2+ a& Z7 y4 \2 p6 q3 l) p
features: exclusive-lock, journaling
% `5 ^, j3 H* v: Q- ^& v" m flags:% s' W; F- X$ e4 P+ K2 J
journal: 108b238e1f29
5 h: B' T0 p  h* ^ mirroring state: enabled; d4 |0 l. s. n0 c7 T2 S
mirroring global id: c603d9dc-6f8d-49e0-ab68-5944d348e527; _! [6 \* D' J- R0 L
mirroring primary: true
6 S* _3 D& d4 S! I' }$ X$ O输出
7 ]+ [8 e& s, }( ~1 N  {4 R' @+ @: i( [6 h8 x3 y
# rbd map rbd/image-19 z- j9 _. s- R5 t) z
rbd: sysfs write failed  H1 s$ F1 G+ P" q+ ~' p  {
RBD image feature set mismatch. You can disable features unsupported by the kernel with "rbd feature disable".! p$ O; y8 M3 f$ L8 W
In some cases useful info is found in syslog - try "dmesg | tail" or so.$ A! ^; |: G* X1 p% m% @; R
rbd: map failed: (6) No such device or address
) P: w) v2 U0 ^* G2 }然后dmesg看一下, X3 @+ J8 M' P$ t8 {, S5 a1 n
/ F/ d) v8 D/ o& a! v
# dmesg | tail
# k5 e: W% p; f' L4 o[   64.808315] rbd: loaded (major 251)- ?3 L4 x8 i& E9 w
[   64.818369] libceph: mon2 172.20.2.160:6789 session established
8 k% M$ \9 t5 J' _7 [) s6 L: S( R* @[   64.819187] libceph: client14167 fsid 4c7ec5af-cbd3-40fd-8c96-0615c77660d4  O0 Q% d6 U& r% P. h
[   64.836328] rbd: image image-1: image uses unsupported features: 0x40
5 d% b* O  B2 {[  443.658569] libceph: mon1 172.20.2.161:6789 session established
+ C) Y1 B8 v4 U- W9 n5 Z[  443.659143] libceph: client4313 fsid 4c7ec5af-cbd3-40fd-8c96-0615c77660d4
4 d& G# C& x1 D  x& z0 j[  443.683178] rbd: rbd0: capacity 10737418240 features 0x1( P9 K& t5 v) A4 u, D
[  978.502132] rbd: image image-1: image uses unsupported features: 0x40
1 J: a/ j; w$ ?% S错误原因: w/ c, y0 S6 n, I; I& B8 L  G8 }$ U
image uses unsupported features: 0x40
( k, n- V! m* r3 f8 ]. A% R不支持特性 0x40 = 64,也就是不支持特性 journaling
. \; L3 p* r  C* s: c' Q关于内核支持的特性分析& V( u9 X2 v& g8 }
查看内核版本
" p4 H6 o8 [& z; G9 ^$ C
* X* m  A4 D; }" X, m# uname -r
, n. p& Y- ?% d$ }3.10.0-327.el7.x86_64
, |8 P( V! k3 b" h% X$ Z9 v2 z根据查阅资料和实践,发现:
  z9 S6 ?! z' y/ b0 DCentOS的3.10内核仅支持其中的layering 和 exclusive-lock,其他feature概不支持; J6 C" t, c3 e$ Q/ h  i' j9 d5 ~
内核4.6仍然只支持:layering、exclusive-lock和 striping 属性
' k! n9 w  R, a5 C
- t# ]- e( b( V! x  j# rbd info rbd/test-map5 s1 U0 A: [' |
rbd image 'test-map':
5 D$ s9 n  Y. M$ N5 R  ` size 512 MB in 128 objects+ f) m2 T; p8 W5 N6 P
order 22 (4096 kB objects)" {3 n# m/ d8 V. Z4 p) t7 H
block_name_prefix: rbd_data.10ca238e1f298 h$ G) K1 Y3 v& r& {
format: 2
4 d7 g/ o7 s- C6 `* C7 q# B features: layering, exclusive-lock" @/ Y% ~6 A) R, w4 }$ t9 G
flags:
% E* t0 u9 j6 x, C7 qmap
  }9 j/ ~# `# b" ]) {  D. {; V8 f" x. _9 ?/ Q' E9 |6 L
# rbd map rbd/test-map9 I; s/ m$ Z* h+ ?, h- _* _
/dev/rbd13 U- T. L* H) F/ M
此时可以map成功。9 k# X0 g' }" D
RBD特性解析
- E) I( D9 S0 `5 ?特性一览表
5 p; ^$ B* ]4 h1 YRBD支持的特性,及具体BIT值的计算如下, ^( W) V! ]+ s
属性 功能 BIT码
' X! w4 V, v; dlayering 支持分层 1  n9 G9 H( |) g; k0 s! g: s
striping 支持条带化 v2 22 G! [5 B" P: m5 c4 s* L7 q
exclusive-lock 支持独占锁 41 d* ]* S' H+ H+ s" F4 w% Q: \
object-map 支持对象映射(依赖 exclusive-lock ) 8
' ~% I9 b; I1 ~9 A) x: Sfast-diff 快速计算差异(依赖 object-map ) 16
5 Z" J  [) K9 p1 J1 s' l) Kdeep-flatten 支持快照扁平化操作 32
/ W8 h' D4 Q# Ejournaling 支持记录 IO 操作(依赖独占锁) 647 k! ^. {  Z" h7 I
ceph kraken版本默认属性值' x4 }3 s( p5 b; @8 f' m# b2 o9 ]3 I

* P* X/ W$ B% H! q' V. b0 @# ceph --show-config|grep rbd|grep features. X/ i5 A7 ]3 T
rbd_default_features = 61! H" Y, W6 f' K) l0 b
为啥是61?我们创建一个默认配置的rbd看看2 T# d; X+ \. J- ?( w  c/ e1 e4 s
# T3 l$ t9 G  ~2 h6 u8 x
# rbd create test-feature --size 64% O) a  W5 W7 l: i5 l' Z4 m8 \
# rbd info rbd/test-feature
* V7 m8 m  D% `0 U: l+ P: j. Frbd image 'test-feature':
) w3 o5 R. f' s2 @ size 65536 kB in 16 objects
  Y+ O. ?2 v3 x order 22 (4096 kB objects)
; ]- Z: E' l) O: q* h7 J  _2 b- I block_name_prefix: rbd_data.107d238e1f29
) {" j9 ]5 a/ `$ X7 G format: 2
2 v9 g, Q9 V* c4 R features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
/ P1 W- L# y, h+ M# d7 A flags:
; M* b; |3 r3 Z  v1 r0 @! c1+4+8+16+32 = 611 M, y5 s5 {$ Q
就是说除了特性:striping 和 journaling 外都开启了。
& V9 v& X" ]6 R8 `' n2 z. n  ?控制属性
3 p% n5 A( o: q. Y. x有三种方法来开启需要的特性
- x* d( N) t2 l' X2 r1 O, s- D1、在创建image时,通过 --image-feature 来指定需要开启的特性' {* ^/ N0 }5 W/ v: U) L* ~3 k6 ]
2、对已存在的image可以通过如下命令开启和关闭
# @" J( X8 v8 y" v1
' s4 g+ y2 k( Q! J, S# c24 e' C. _% {: r: W2 X3 k
rbd feature enable <pool-name>/<image-name> <feature-name>
! q8 W& r9 E, ?% C  Mrbd feature disable <pool-name>/<image-name> <feature-name>4 q; ^* F& ]/ n9 M8 {/ G
3、当然,每次通过enable和disable来不是很便捷,可以通过修改配置文件来解决' D+ m8 t9 `  Y- f6 O
1  U  s9 f: I5 S8 O6 ?8 B$ m
2: M) R5 R6 ^6 g+ V# L1 ~; S0 b% \
3
$ [: x7 o- ^& I. Y: N4
7 K+ ]) W$ |1 v, nvim /etc/ceph/ceph.conf; g1 |0 t( f7 F0 [
...# j3 E/ r+ |- M4 L2 l) E. l
rbd_default_features = 1. t: Y. T* R" [5 z1 I2 V
...
+ T9 W2 q' L$ P( s1 a" A具体该设为多少可以通过上面BIT值查表计算得出。8 d7 {6 a! |6 J  q/ w
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 04:24 , Processed in 0.015532 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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