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

ceph分布式存储之cephfs

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2022-7-26 10:36:35 | 显示全部楼层 |阅读模式
13版本的情况
写入大文件(64GiB)写满pool,这个没有问题,写满pool也不用多少个文件,读取也顺利
写入大量较小的文件就不行了,读取也不能正常进行
默认配置下,cephfs的根目录下创建10个目录,写入大量的文件
[twj@R03-MTEST-DN-017.xx.cn ~]$ sudo ceph fs status9 I! o# n& ?2 i1 U8 r7 K/ x
filecephfs - 3 clients: y; X) k7 J5 q; R  @1 c. h* e
==========( N0 L  ^6 |9 l: K8 w
+------+--------+------------------------+---------------+-------+-------+, R( ?+ z0 X& G( D/ O$ v: `
| Rank | State  |          MDS           |    Activity   |  dns  |  inos |
, A/ J; h6 S7 v8 ]+------+--------+------------------------+---------------+-------+-------+/ @0 u$ {% o" n" M, Y7 p- D
|  0   | active | R03-MTEST-MN-002.xx.cn | Reqs:    0 s | 19.8M | 19.8M |
6 G% J; g5 s3 V9 p; w& _+------+--------+------------------------+---------------+-------+-------+
5 T& Q5 u  ]6 e3 o4 K+----------------------+----------+-------+-------+
( l. z& @/ o5 C  H! Z% h# O. v/ u4 m|         Pool         |   type   |  used | avail |
" w7 r0 v6 H. _6 [& F+----------------------+----------+-------+-------+
% j) _, j7 Z, Y+ X; O( C) |# i| cephfs-metadata-pool | metadata |  155M |  794G |; S1 a6 H; Z4 D$ M7 y! ]1 n$ H
|   cephfs-data-pool   |   data   |  957T |    0  |
' @" J4 d$ }# k1 L( S- g; @6 |, x+----------------------+----------+-------+-------++ [3 s8 b. o/ X# H' Q: |
+------------------------+
  o# v& V( v- J8 U2 v/ h3 g0 H5 P* Y9 n|      Standby MDS       |
) D$ v! v- ~( B) A" k" ]9 J4 c0 j+------------------------+
8 j: E" i9 Q; s. p8 d2 `* G/ C| R03-MTEST-MN-001.xx.cn |3 O- v* K- Z- q' c4 `
+------------------------+  d$ H7 t4 N% [! f' S
MDS version: ceph version 13.2.10 (564bdc4ae87418a232fc901524470e1a0f76d641) mimic (stable)
! j( j: M4 c2 k# L[twj@R03-MTEST-MN-001.xx.cn ~]$ sudo ceph df
& n8 p5 `+ n! L1 S( TGLOBAL:6 S% k4 {# F  i7 u! R
    SIZE        AVAIL      RAW USED     %RAW USED
, ?/ ^. ~- G6 @9 ~) W1 h* K+ c4 [    1.5 PiB     91 TiB      1.4 PiB         94.08
, m1 a1 Y" z# D& A1 kPOOLS:
& U3 t6 m  m! e+ l    NAME                     ID     USED        %USED      MAX AVAIL     OBJECTS( j: M; j7 R4 M: ?3 V
    cephfs-data-pool         15     957 TiB     100.00           0 B     561286578' S. h  Z2 [+ u( D: C
    cephfs-metadata-pool     17     155 MiB       0.02       795 GiB         98368
( w6 Y9 s! ~* S& u, N
此时,mds的内存占用达到了55g
    PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
( Z9 C6 v: Q5 M% T# R1 U9 x. N  47740 ceph      20   0   55.4g  55.0g  10356 S   6.6 21.9  11905:23 ceph-mds6 F' S( D: ?& e, U5 H
尝试重启这个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
# K& |& ~) I: G8 N: v+ f) g! e4 K6 H( d, w
perf top -p 35634736 `  k; B" ^# X- O
Samples: 63K of event 'cycles:ppp', Event count (approx.): 49402841395
, N2 m9 e" P' N4 f& [, _Overhead  Shared Object         Symbol
7 t8 W( G3 ?$ E# ^: N! U- G, c; O  48.92%  libceph-common.so.0   [.] crush_hash32_3
- F0 o  _& O  R( r  y  24.28%  libceph-common.so.0   [.] 0x0000000000647f80
6 r2 v! v0 b& E2 `! T   4.35%  libceph-common.so.0   [.] 0x0000000000647f59
9 l# L; H/ d! r
第二次测试,写入一段时间后,集群报错,mds处于rejoin状态
  cluster:- w' V: x$ j% ^& y' W$ c
    id:     8418d616-979b-46f9-ab95-b8fb20093d1b
. @" f3 t& |2 L$ B    health: HEALTH_WARN1 R( K$ z$ H6 M6 i' A- e
            1 filesystem is degraded4 M+ H- e0 [9 x
            1 MDSs report oversized cache% I3 {( T; J& K% U% N% d
            1 MDSs report slow metadata IOs; i* Q5 j* {' }4 M& u8 A" a  G
+------+--------+----------------------+----------+-------+-------+
0 }& U' E- J: G( \( H* E| Rank | State  |         MDS          | Activity |  dns  |  inos |
, o' w$ }4 N6 W! @) {/ S+------+--------+----------------------+----------+-------+-------+* E( k# d! y3 o
|  0   | rejoin |R03-MTEST-MN-001.xx.cn|          | 59.5M | 59.5M |  K2 Z- c+ x( P
+------+--------+----------------------+----------+-------+-------+( |5 V) s4 J* ]  P/ r4 @! \
此时mds的内存消耗非常大
    PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
. u4 i  {: g2 u8 f5 v6 J! j 150540 ceph      20   0  224.9g 223.5g  11704 S 100.0 89.0 196:15.69 ceph-mds
5 o# o# n5 P0 C+ l$ A6 T4 n
使用命令ceph daemon run/ceph/ceph-mds.R03-MTEST-MN-001.xx.cn.asok flush journal
6 Y% E  o% a2 X( R: r- j后,降低了一些,但很快又上到了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 status
) I7 P5 R: C' t. hcephfs - 40 clients
9 d7 |" f& `8 n# I4 N======
" ~" _3 R1 ~6 B2 I; c" f+------+--------+------------------------+---------------+-------+-------+
: g7 q' S- h9 I: V4 M| Rank | State  |          MDS           |    Activity   |  dns  |  inos |
4 q; d1 G2 N1 c0 o+ G+------+--------+------------------------+---------------+-------+-------+$ ^. z' z2 ~$ [/ z+ t1 V
|  0   | active | R03-MTEST-MN-003.xx.cn | Reqs: 10.3k/s |  391k |  391k |0 B0 ~! t: O1 d# n& U! Z  q
|  1   | active | R03-MTEST-MN-002.xx.cn | Reqs: 10.5k/s |  385k |  385k |
) y/ O6 H, C1 N! ?1 i- p+------+--------+------------------------+---------------+-------+-------+
; p% S# h- V2 d7 s+----------------------+----------+-------+-------+
3 k. x3 P- }& O* h+ F" e) s: d+ t2 O3 v|         Pool         |   type   |  used | avail |( ]2 J9 b& n1 A
+----------------------+----------+-------+-------+
1 O- P+ i+ M! i, f7 e9 m| cephfs.metadata.pool | metadata | 3378M |  797G |0 O- i# {  S+ r3 @5 w* P
|  cephfs.data.pool1   |   data   | 6085G | 1234T |
2 g, E3 q, D) k/ d4 k|  cephfs.data.pool2   |   data   | 2257G | 1241T |
3 o* c. L, O  @0 z. o+----------------------+----------+-------+-------+
8 T& k% U( o0 d/ ~1 h9 T. h+------------------------+2 L1 b! s9 J) q( Y+ ]
|      Standby MDS       |! B/ H+ l3 K" R/ b) n  Z( u
+------------------------+
" w& ~4 Z9 E& @4 l: P1 l9 d3 D| R03-MTEST-MN-001.xx.cn |: `4 L, o9 y/ i8 [
+------------------------+
" K; J' T9 C/ @# K2 qMDS version: ceph version 14.2.20 (36274af6eb7f2a5055f2d53ad448f2694e9046a0) nautilus (stable)
4 t& ]: C: x: `  V4 U- u0 b
其中每个data pool都创建了20个目录,并pin到不同的mds上,性能看还算均衡,连续快速写入,会有告警2 MDSs behind on trimming! e7 `# z/ h- t! i& ], H) `
但没有什么影响,就没管
随着数据的大量写入,集群开始出现slow
[twj@R03-MTEST-MN-001.xx.cn ~]$ sudo ceph df7 L# v7 m  y5 H# X) j
RAW STORAGE:
( b1 J* R% h, y% e' w& B    CLASS     SIZE        AVAIL       USED        RAW USED     %RAW USED
& H0 M# m* _/ ?! C7 G    hdd       3.9 PiB     3.1 PiB     823 TiB      823 TiB         20.79
8 `) ~) X) j) v# A4 |. N0 I! V    ssd        16 TiB     3.0 TiB      13 TiB       13 TiB         80.72
; ^9 Q6 ?8 W  h7 _    TOTAL     3.9 PiB     3.1 PiB     835 TiB      836 TiB         21.03
. K3 J& ?( a3 g  i9 C- P* k) s5 K( W! Z8 e' M1 h
POOLS:* _( G' y1 B' O8 r7 i
    POOL                     ID     PGS      twjD      OBJECTS     USED        %USED     MAX AVAIL
* `+ r. f3 {9 n6 d# \8 P    cephfs.data.pool1         2     8192     275 TiB     217.81M     413 TiB     23.20       911 TiB2 e/ A! H: J- Z
    cephfs.data.pool2         3     8192     244 TiB     102.44M     366 TiB     20.53       946 TiB9 |0 u' v# @' w4 w
    cephfs.metadata.pool      4      256     127 GiB     115.39k     191 GiB      7.74       760 GiB
' \: G& s2 \/ L6 Z; G, {   
% T3 m; c. F% Q- x* F  u[twj@R03-MTEST-MN-001.xx.cn ~]$ sudo ceph health detail
, z$ w) e, V; [0 e" G1 zHEALTH_WARN 1 MDSs report slow metadata IOs; 1 MDSs report slow requests
2 D7 T5 M2 D  hMDS_SLOW_METADATA_IO 1 MDSs report slow metadata IOs4 K$ B  z. G/ Z
    mds.R03-MTEST-MN-002.xx.cn(mds.1): 100+ slow metadata IOs are blocked > 30 secs, oldest blocked for 87 secs1 V9 R2 w' ^/ C9 E8 a% x" k
MDS_SLOW_REQUEST 1 MDSs report slow requests8 W! s0 O% ~/ {8 H' P+ T& |
    mds.R03-MTEST-MN-002.xx.cn(mds.1): 11 slow requests are blocked > 30 secs* U  c, h3 a' Q
查看mds的op处理流程
[twj@R03-MTEST-MN-002.xx.cn ~]$ sudo ceph daemon mds.`hostname` dump_historic_ops_by_duration|grep duration! x% i+ A! U3 ?( {' o& m" Y4 q9 `. M
    "duration": 600,
& V; m/ X8 s* G            "duration": 427.63886984499999,
* l) m- `) E0 p$ K" \+ x            "duration": 427.62001601499998,+ @& q3 s2 s/ W6 H
            "duration": 409.772382456,9 z6 A7 K0 \& i
            "duration": 409.75990740399999,, G/ S4 H' c( ?+ f
            "duration": 215.47288510800001,
( G9 ^3 U8 m  d' ]  j6 w0 [, T3 h            "duration": 214.47418489699999,1 H4 \* G, X8 K" [
            "duration": 203.97045117499999,
8 P' t: K2 f( }2 v1 y; s; ~% Z% r/ \            "duration": 203.51505527899999,  d( P; O( V1 E2 x0 m
            ...
# O6 v3 J8 o0 d- ]. ^9 A8 |
时间都非常久,继续排查,发现大量的op都是卡在failed to rdlock, waiting8 z+ M6 W8 A3 n: F2 C2 I
这个步骤,关于这种情况的调查和优化,还在努力。。。
看了一眼内存,没有明显的飙升
[twj@R03-MTEST-MN-003.xx.cn ~]$ top
3 p0 q* T- S, s2 ?" Ptop - 15:34:57 up 9 days,  4:36,  1 user,  load average: 0.95, 1.22, 1.28
( \+ s0 d+ W  [  q% y8 FTasks: 650 total,   1 running, 649 sleeping,   0 stopped,   0 zombie+ f9 _$ y) X1 l& j' p
%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# X" L: J* A8 i! f  M
KiB Mem : 26353089+total, 25013656+free, 11907872 used,  1486464 buff/cache
. N; I. W8 |+ G6 FKiB Swap: 16777212 total, 16777212 free,        0 used. 24535932+avail Mem7 S$ x7 G$ T: t' v/ P8 j+ H/ \

: @1 b) k; ^) N2 b    PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND6 Y7 K1 ~( l0 i5 S  F
  29657 ceph      20   0 7878864   2.5g  14288 S 100.7  1.0   4616:55 ceph-mds6 |4 U" \4 X3 G) V( j
大量数据写入后,先测试一下mds的重启,直接reboot节点,观察集群的情况
[twj@R03-MTEST-MN-002.xx.cn ~]$ sudo ceph fs status, w( \" p; e  u5 ?5 p- U) t2 N5 Q
cephfs - 40 clients8 y- q* l% X* v5 N! Z* |) {
======
$ O$ f3 b) i: c/ I7 G5 A+------+--------+------------------------+---------------+-------+-------+
9 ~- @" l8 j" g: k' @| Rank | State  |          MDS           |    Activity   |  dns  |  inos |4 l4 n; P. @. U2 T* d7 l: T, G' k
+------+--------+------------------------+---------------+-------+-------+0 }1 ?1 L/ J9 c4 _& g( ^
|  0   | active | R03-MTEST-MN-001.xx.cn | Reqs:  869 s |  445k |  445k |
9 v) z' i. T2 X, o|  1   | active | R03-MTEST-MN-002.xx.cn | Reqs:    0 s |  365k |  365k |' E- o; x+ J/ w2 S/ E& I0 Z/ i
+------+--------+------------------------+---------------+-------+-------+
, Y+ R* j8 g5 k. D' [% m+----------------------+----------+-------+-------+
, q9 x2 L; s! {* [# V% }, y|         Pool         |   type   |  used | avail |! \& h3 {0 s) l# Y; X
+----------------------+----------+-------+-------+
2 f! ~$ w. ^9 d( B) z9 l8 ^4 }| cephfs.metadata.pool | metadata |  186G |  762G |
* b$ _% N- s) B|  cephfs.data.pool1   |   data   |  412T |  910T |
8 T+ j4 @0 D2 v|  cephfs.data.pool2   |   data   |  366T |  945T |
7 P( q4 B/ _9 H8 U/ I4 H( a  D' h+----------------------+----------+-------+-------+
% Q9 ^) _+ b4 F7 h2 w4 r1 V5 z+------------------------+
( O1 r% ~2 \5 @( _|      Standby MDS       |
* g& f5 J; F9 Z, R- ^- u+------------------------+) Q' h" J8 M" _. p5 B) T: m1 v
| R03-MTEST-MN-003.xx.cn |' w8 M# p" C! L. z5 Y& ^/ [4 Q
+------------------------++ Q' H* }$ n' c- x0 o$ E' f
MDS version: ceph version 14.2.20 (36274af6eb7f2a5055f2d53ad448f2694e9046a0) nautilus (stable)2 z# T6 `- Q$ x7 ?% \: O' U" z0 o
看是备是直接顶上了,mds重启后自动做备,业务侧暂时没有发现有问题,不过,发现写入的流量都打到了同一个mds,不知道是不是因为rank序号变化导致的
测试发现,当单个目录对象数达到千万级时,cephfs的目录出现明显的卡顿,测试读,读取偶尔会有问题,流量不稳定,最大可到1GiB/s,最小只有几百M
  io:
- d/ d/ c$ ~# X9 h' y( E9 [    client:   240 MiB/s rd, 559 KiB/s wr, 102 op/s rd, 0 op/s wr
4 S  J. D0 s8 A结论
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 23:03 , Processed in 0.017562 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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