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

ceph分布式存储之cephfs

[复制链接]

0

主题

0

回帖

9

积分

管理员

积分
9
QQ
发表于 2022-7-26 10:36:35 | 显示全部楼层 |阅读模式
13版本的情况
写入大文件(64GiB)写满pool,这个没有问题,写满pool也不用多少个文件,读取也顺利
写入大量较小的文件就不行了,读取也不能正常进行
默认配置下,cephfs的根目录下创建10个目录,写入大量的文件
[twj@R03-MTEST-DN-017.xx.cn ~]$ sudo ceph fs status
/ M8 `0 j# ~- _2 V  l, vfilecephfs - 3 clients" t% X# d, o  X) }
==========7 c9 B( k; ?# k
+------+--------+------------------------+---------------+-------+-------+
4 B0 O/ k5 N7 E0 @| Rank | State  |          MDS           |    Activity   |  dns  |  inos |. x# I" U. w9 ?
+------+--------+------------------------+---------------+-------+-------+/ Z$ }( n5 U/ t+ q8 O) i
|  0   | active | R03-MTEST-MN-002.xx.cn | Reqs:    0 s | 19.8M | 19.8M |6 H; _3 {7 H1 ~6 j8 s0 V" t8 q) b
+------+--------+------------------------+---------------+-------+-------+# ~) M' d. J" t- i4 P
+----------------------+----------+-------+-------+3 c1 w. V/ F# O3 o/ p% p
|         Pool         |   type   |  used | avail |
2 i) e5 n8 j- i, O- ~( O$ _9 y1 _+----------------------+----------+-------+-------+
3 K8 T  _+ ^9 j7 j6 G5 c| cephfs-metadata-pool | metadata |  155M |  794G |/ b, W( S* H4 S) x2 h, I
|   cephfs-data-pool   |   data   |  957T |    0  |
" B6 z' m- O( D+----------------------+----------+-------+-------+
  @  h( t- v  J8 [. T5 u- |6 A+------------------------+
6 M3 h  H; P$ H6 V& _% p|      Standby MDS       |
. w% N1 {) W5 s* w% s0 F+------------------------+& Y  b+ V* ?9 L2 Y% h2 b
| R03-MTEST-MN-001.xx.cn |* o) t) u! q) @. m9 L/ o
+------------------------+; h: U7 _0 C! X! m
MDS version: ceph version 13.2.10 (564bdc4ae87418a232fc901524470e1a0f76d641) mimic (stable)
6 k. v1 F, {! h% W/ S2 a9 r[twj@R03-MTEST-MN-001.xx.cn ~]$ sudo ceph df  v- b7 l% I' }( c8 r
GLOBAL:
! f. I' P" H; w* B/ t9 Q8 |    SIZE        AVAIL      RAW USED     %RAW USED  P! Z, ^9 b- I, p' L# A
    1.5 PiB     91 TiB      1.4 PiB         94.082 c! ?0 f/ n& L' \( [7 x
POOLS:: ?! \* y5 J- q
    NAME                     ID     USED        %USED      MAX AVAIL     OBJECTS
# Z/ ~% {. i6 x, D+ N5 X( ~/ P0 n) T    cephfs-data-pool         15     957 TiB     100.00           0 B     561286578
6 n$ |. u9 ^# x3 O8 d- i    cephfs-metadata-pool     17     155 MiB       0.02       795 GiB         98368
$ r% v9 V8 V8 ^% I) t
此时,mds的内存占用达到了55g
    PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
3 l/ N9 X* q: Q  [5 V* e+ R6 ^; ]  47740 ceph      20   0   55.4g  55.0g  10356 S   6.6 21.9  11905:23 ceph-mds: H; @1 o+ U' Y) i/ R
尝试重启这个mds,直接导致fs瘫痪,mds状态一直都是replay,接着mon好几天都起不来,集群也直接没法用了。。。
2021-06-17 10:10:36.352 7f9039544700  1 heartbeat_map is_healthy 'Monitor::cpu_tp thread 0x7f9034ccc700' had timed out after 0
: W4 k( V0 V- r, a. }7 Q$ L1 J/ b" F2 |$ |+ \: p8 u
perf top -p 3563473  r2 v( I6 ^2 c
Samples: 63K of event 'cycles:ppp', Event count (approx.): 49402841395' g7 x6 l" e7 F' p) x
Overhead  Shared Object         Symbol
9 `7 Y* B" X2 S8 c( [1 o  48.92%  libceph-common.so.0   [.] crush_hash32_3
4 }; S7 s, U5 v$ U/ S* J1 B9 W  24.28%  libceph-common.so.0   [.] 0x0000000000647f80) j8 U, _: H6 A/ W$ m( v' f
   4.35%  libceph-common.so.0   [.] 0x0000000000647f594 r4 A; a: p% p1 m! G" K
第二次测试,写入一段时间后,集群报错,mds处于rejoin状态
  cluster:
7 v& g0 M! a4 m9 g2 P2 b    id:     8418d616-979b-46f9-ab95-b8fb20093d1b. u+ G- i7 Z. {5 H6 Q4 \! p
    health: HEALTH_WARN
3 H8 M/ o0 P# N8 k4 a* l& e9 y            1 filesystem is degraded
3 r" f  Q+ E+ ]+ t, V            1 MDSs report oversized cache
1 x5 m! P  r' ?: N5 G            1 MDSs report slow metadata IOs% K4 D( R% a2 f' A6 P8 H1 w9 {
+------+--------+----------------------+----------+-------+-------+
; Z9 W0 f: U  `. [| Rank | State  |         MDS          | Activity |  dns  |  inos |3 F8 C  L. T9 k' V+ k6 o# q& ^9 T0 b2 t
+------+--------+----------------------+----------+-------+-------+6 `4 ?" m: r" Q6 Q2 b1 q' {
|  0   | rejoin |R03-MTEST-MN-001.xx.cn|          | 59.5M | 59.5M |
0 w$ G+ P7 s" Q7 i# N6 g' x6 I+------+--------+----------------------+----------+-------+-------+5 {* {! h' h1 N  J
此时mds的内存消耗非常大
    PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND6 ~: {2 l; g4 s3 b6 _" h. {
150540 ceph      20   0  224.9g 223.5g  11704 S 100.0 89.0 196:15.69 ceph-mds: d( v; [  o" k$ A  w4 `
使用命令ceph daemon run/ceph/ceph-mds.R03-MTEST-MN-001.xx.cn.asok flush journal
/ o* m! h% d# F8 {3 m  g后,降低了一些,但很快又上到了223G
从结果上看,该版本的mds主要是没有解决内存的问题,没写多少文件,内存就直线飙升,而且居高不下,妄想重启mds,那就直接玩完
这里直接给出13.2.10的建议:不行!事实上,14.2.x之前的版本都不建议使用cephfs上生产环境
14版本的表现
在这个版本的测试用,我加入了额外的data pool,并使用了多活mds,直接测试的小文件写入
[twj@R03-MTEST-MN-001.xx.cn test-cephfs]$ sudo ceph fs status8 J9 t7 {1 b' i$ o) h) y5 z  h- Y
cephfs - 40 clients- w" ^, q; z) {& `- ^5 D$ e
======2 x. j, E2 s3 A9 R4 k& V. ~. P
+------+--------+------------------------+---------------+-------+-------+
! r1 a; j$ a7 \8 I6 G  i/ v4 B/ G! Q- \| Rank | State  |          MDS           |    Activity   |  dns  |  inos |; P% a* D) X' S1 T* q
+------+--------+------------------------+---------------+-------+-------+2 R" ~6 |% {6 D; O# E
|  0   | active | R03-MTEST-MN-003.xx.cn | Reqs: 10.3k/s |  391k |  391k |
  \+ t6 R4 T5 ~0 f9 k8 `|  1   | active | R03-MTEST-MN-002.xx.cn | Reqs: 10.5k/s |  385k |  385k |
- v- m+ V  \) C9 M5 X1 z1 V+------+--------+------------------------+---------------+-------+-------+
* T* g$ B, B& \+----------------------+----------+-------+-------+* X" R5 l& Z$ z; F( `. V6 r
|         Pool         |   type   |  used | avail |
8 F+ @) I/ y5 i! z9 l% w8 ^& t* Q+----------------------+----------+-------+-------+" a3 }% T& T7 e* e4 e$ i9 ~; l
| cephfs.metadata.pool | metadata | 3378M |  797G |
7 x' n* \  P& ]|  cephfs.data.pool1   |   data   | 6085G | 1234T |
% m: I$ Y# _4 d: [|  cephfs.data.pool2   |   data   | 2257G | 1241T |( l- ?8 d. Q6 j0 A
+----------------------+----------+-------+-------+- V% m4 d3 I% ~3 b
+------------------------+
7 `7 j4 S  `) d. D% O9 U7 n|      Standby MDS       |
3 h7 @% t9 f3 B4 Z. _, O' ^+------------------------+& O. p/ Z3 t7 `
| R03-MTEST-MN-001.xx.cn |5 n- B$ @4 y0 A
+------------------------+
- d) U0 v: \( @( @. `MDS version: ceph version 14.2.20 (36274af6eb7f2a5055f2d53ad448f2694e9046a0) nautilus (stable)
! m: I3 I- s) \5 H# |9 y1 ]
其中每个data pool都创建了20个目录,并pin到不同的mds上,性能看还算均衡,连续快速写入,会有告警2 MDSs behind on trimming7 b6 e2 }8 K9 l1 C# c' Y* k4 ?) W1 {
但没有什么影响,就没管
随着数据的大量写入,集群开始出现slow
[twj@R03-MTEST-MN-001.xx.cn ~]$ sudo ceph df$ g+ h; R" e) N( i& Q  V
RAW STORAGE:  u" S' G5 M# s$ L
    CLASS     SIZE        AVAIL       USED        RAW USED     %RAW USED
# q5 L  i+ c* M8 R' {4 D    hdd       3.9 PiB     3.1 PiB     823 TiB      823 TiB         20.79$ I, m$ o! t2 g) r% f9 G
    ssd        16 TiB     3.0 TiB      13 TiB       13 TiB         80.728 P! x  l& I; N- A6 z  O+ }4 ^' }
    TOTAL     3.9 PiB     3.1 PiB     835 TiB      836 TiB         21.03
1 R. x7 g! O' y: M- n6 ^+ k) m* h1 k5 B+ A2 u
POOLS:
/ c+ u! @; U* R+ v1 E$ c+ Y  M9 f    POOL                     ID     PGS      twjD      OBJECTS     USED        %USED     MAX AVAIL2 K  O1 {; G% l; V' S/ A$ o$ m
    cephfs.data.pool1         2     8192     275 TiB     217.81M     413 TiB     23.20       911 TiB: E  Z: H' a" o' J* `; ~6 L) ~0 X$ F
    cephfs.data.pool2         3     8192     244 TiB     102.44M     366 TiB     20.53       946 TiB
, C& f& e: S9 k( B8 L" u: A    cephfs.metadata.pool      4      256     127 GiB     115.39k     191 GiB      7.74       760 GiB5 Q$ O- R5 _  O$ j) [
   
- w  k" I* U# ]% r[twj@R03-MTEST-MN-001.xx.cn ~]$ sudo ceph health detail$ {7 O% Y* ]* |) k/ Z
HEALTH_WARN 1 MDSs report slow metadata IOs; 1 MDSs report slow requests
4 p! r/ p. L4 IMDS_SLOW_METADATA_IO 1 MDSs report slow metadata IOs# l: g0 Y6 F; ]
    mds.R03-MTEST-MN-002.xx.cn(mds.1): 100+ slow metadata IOs are blocked > 30 secs, oldest blocked for 87 secs
7 R+ p; u! D: ~7 Z' x4 n' z. D) Q. NMDS_SLOW_REQUEST 1 MDSs report slow requests
$ {8 G8 Q6 O; c6 y$ U# @5 ?5 `    mds.R03-MTEST-MN-002.xx.cn(mds.1): 11 slow requests are blocked > 30 secs
# R, C8 t* C, ~; O5 m2 H/ @( }
查看mds的op处理流程
[twj@R03-MTEST-MN-002.xx.cn ~]$ sudo ceph daemon mds.`hostname` dump_historic_ops_by_duration|grep duration
( m* R9 y8 a! f' N+ f! [, C4 _    "duration": 600,
' I9 }) m2 j* n1 j            "duration": 427.63886984499999,) [4 Q8 i1 E3 X$ O5 J' ~: @
            "duration": 427.62001601499998,, C; g5 T! X' M/ ]& z. k0 u0 L9 \. F
            "duration": 409.772382456,
. ^2 r7 h9 A/ O( A0 J% i            "duration": 409.75990740399999,
' l* I. E* F5 a4 E+ A& {0 Q            "duration": 215.47288510800001,
# i6 Q3 T+ S) \4 E! A5 h            "duration": 214.47418489699999,
9 k# N- t2 V* F            "duration": 203.97045117499999,4 [$ N6 l7 B# {0 V
            "duration": 203.51505527899999,. e! ^  I5 M* S: j5 X4 C9 h9 G
            ...
, x  |* e$ Q& d$ m: U
时间都非常久,继续排查,发现大量的op都是卡在failed to rdlock, waiting
* {: p4 A- ?' |6 I! Q这个步骤,关于这种情况的调查和优化,还在努力。。。
看了一眼内存,没有明显的飙升
[twj@R03-MTEST-MN-003.xx.cn ~]$ top
! C( E8 J, ?6 |3 X2 p7 T& s. Htop - 15:34:57 up 9 days,  4:36,  1 user,  load average: 0.95, 1.22, 1.28) i& U* U" n9 u) z& ^. C& I
Tasks: 650 total,   1 running, 649 sleeping,   0 stopped,   0 zombie
) `# b, T; |5 {$ s$ M# Y' n, m% f6 o' g%Cpu(s):  1.9 us,  0.1 sy,  0.0 ni, 98.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
; C) v& ^. s- \) w( FKiB Mem : 26353089+total, 25013656+free, 11907872 used,  1486464 buff/cache% A; q& v. V; G4 [
KiB Swap: 16777212 total, 16777212 free,        0 used. 24535932+avail Mem3 z) [" t- |# N) }6 E6 r

1 q- k( U9 b) }& g! Z5 S    PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
2 @9 M, X3 M' x' }, n! l/ S  29657 ceph      20   0 7878864   2.5g  14288 S 100.7  1.0   4616:55 ceph-mds
6 ^; Y1 P1 `  I8 Z; F  `9 p
大量数据写入后,先测试一下mds的重启,直接reboot节点,观察集群的情况
[twj@R03-MTEST-MN-002.xx.cn ~]$ sudo ceph fs status/ M2 w1 H# u: s
cephfs - 40 clients
) u( o* H5 j' K2 ]* g======
0 y  k, U# f5 O: N6 F+------+--------+------------------------+---------------+-------+-------+% A) L" N6 Z. h2 `0 c% }
| Rank | State  |          MDS           |    Activity   |  dns  |  inos |0 c3 k8 k1 `! B
+------+--------+------------------------+---------------+-------+-------+/ D% A+ u) F% n1 W  {
|  0   | active | R03-MTEST-MN-001.xx.cn | Reqs:  869 s |  445k |  445k |& w  n8 S; j, p
|  1   | active | R03-MTEST-MN-002.xx.cn | Reqs:    0 s |  365k |  365k |% h/ g7 `# X) d+ u; N
+------+--------+------------------------+---------------+-------+-------+
; W2 e( V2 r) b  I9 e+----------------------+----------+-------+-------+- ^! J6 n2 X; X7 p; D! P. O) q
|         Pool         |   type   |  used | avail |
7 P8 I# H" g  C( X, i2 C+----------------------+----------+-------+-------+3 T: Q) r/ U* t1 N
| cephfs.metadata.pool | metadata |  186G |  762G |
& T1 F3 j0 G6 y9 q! M3 g5 T* E9 Q|  cephfs.data.pool1   |   data   |  412T |  910T |: F- T) @, `+ i, Z" c, s' s, ^( l. a& U$ y
|  cephfs.data.pool2   |   data   |  366T |  945T |
" A6 F' C& D% _+----------------------+----------+-------+-------+
5 s5 F6 x( `* C2 t9 a+------------------------+* N# v- K! q7 K
|      Standby MDS       |6 z  v* G  L! G8 y
+------------------------+, c4 P1 y+ W( ?0 \/ ~2 a2 ?
| R03-MTEST-MN-003.xx.cn |; |8 f6 @; `( W8 E8 Y7 k8 g
+------------------------+, v9 l4 f' Q( C! _0 ^7 Q5 d
MDS version: ceph version 14.2.20 (36274af6eb7f2a5055f2d53ad448f2694e9046a0) nautilus (stable)$ a* i/ h4 V6 e' k! C% w' B
看是备是直接顶上了,mds重启后自动做备,业务侧暂时没有发现有问题,不过,发现写入的流量都打到了同一个mds,不知道是不是因为rank序号变化导致的
测试发现,当单个目录对象数达到千万级时,cephfs的目录出现明显的卡顿,测试读,读取偶尔会有问题,流量不稳定,最大可到1GiB/s,最小只有几百M
  io:
( V( W+ v) b( y3 X& W6 }3 P% {6 V    client:   240 MiB/s rd, 559 KiB/s wr, 102 op/s rd, 0 op/s wr2 @5 n* w9 g* g. m3 y5 j
结论
cephfs 14.2.20测试结果来看,稳定性可靠性还是可以的,至少内存的问题看来是解决了,没有出现持续大量数据写入时产生的高内存占用问题,同时,重启其中一个rank,备用的mds会自动顶上,业务没有太大影响,而且,目录内的文件数量只要不是太大,小于百万级的话,性能也没有太大的问题,因此,14.2.20及后续版本的cephfs应该是可以上生产的了
反观此前的版本,12、13都比较拉垮,mds不太靠谱,如果client有故障,读写卡住,mds分分钟给你瘫痪,极具危险性,还是不建议上,如果已经有在线的fs,还是强烈建议迁移到14.2.20+的版本
下一步,将继续测试cephfs的其他异常情况和大规模数据写入后slow req的问题,并对代码逻辑方面进行一些分析,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-11 22:59 , Processed in 0.021335 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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