找回密码
 注册
查看: 535|回复: 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 status
$ C5 A5 S6 Y+ Sfilecephfs - 3 clients. a. u5 E) q/ I/ F! L1 m/ k
==========5 b" s1 p  D2 T+ [. b2 M
+------+--------+------------------------+---------------+-------+-------+
- G  b  s* {' ~2 z3 @* ^# |3 ^| Rank | State  |          MDS           |    Activity   |  dns  |  inos |
( n7 b5 E- C5 g0 B6 f0 E: O+------+--------+------------------------+---------------+-------+-------+
2 x# t  ^  H1 V, }- s  }! {|  0   | active | R03-MTEST-MN-002.xx.cn | Reqs:    0 s | 19.8M | 19.8M |9 P) Y; h  W: G- w3 R7 [7 s2 {& Q
+------+--------+------------------------+---------------+-------+-------+% }) B  _" \! ~) d, w" ?  E
+----------------------+----------+-------+-------+
2 i8 ~2 g; x- ^& j8 f8 h; U|         Pool         |   type   |  used | avail |
6 s: V8 ?' B0 Q( Q0 W6 o+----------------------+----------+-------+-------+
2 b2 i. o" C% ]- Z# v) ~# p| cephfs-metadata-pool | metadata |  155M |  794G |
# e" Z  M$ \( |. v9 m" K3 x|   cephfs-data-pool   |   data   |  957T |    0  |+ `: S. j8 Q3 W+ c8 z9 R
+----------------------+----------+-------+-------+
5 `2 V* |. \8 b; ~$ N! D+------------------------+( T4 x; p; d6 t/ Y+ s
|      Standby MDS       |: \) u1 b6 Q8 O* t; w+ X
+------------------------+
& [4 O; B$ r! P8 L: x6 a9 _2 `' c. I| R03-MTEST-MN-001.xx.cn |
: o1 C8 G/ Y  `) T! g6 R: |# }( l0 @+------------------------+
7 z  b( g7 c9 ?! kMDS version: ceph version 13.2.10 (564bdc4ae87418a232fc901524470e1a0f76d641) mimic (stable)/ H" r; `- t7 n: L8 A% o
[twj@R03-MTEST-MN-001.xx.cn ~]$ sudo ceph df. [" K3 h. o7 D. n
GLOBAL:
) o+ L6 |  x, s* n% s; B    SIZE        AVAIL      RAW USED     %RAW USED
7 V' H. v+ v: @! ^    1.5 PiB     91 TiB      1.4 PiB         94.08- \. `1 W# g/ W4 @9 Q
POOLS:
* z+ Q; @7 E: E2 W  g# _    NAME                     ID     USED        %USED      MAX AVAIL     OBJECTS
6 j! Z2 n5 ~1 [    cephfs-data-pool         15     957 TiB     100.00           0 B     561286578. l0 m8 q( r- j. b6 x- i" R2 ?6 _
    cephfs-metadata-pool     17     155 MiB       0.02       795 GiB         98368
% ], M* ^7 i  K2 n7 k' [! [6 \
此时,mds的内存占用达到了55g
    PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
' H4 Q; z  \! n% H  47740 ceph      20   0   55.4g  55.0g  10356 S   6.6 21.9  11905:23 ceph-mds* K$ n7 q1 u) T  O. N  p
尝试重启这个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: I; c+ c6 b  `2 x" V) X4 z
7 ]) T: Y! Q6 g* u# \9 w
perf top -p 3563473
0 \! w. F8 J1 J5 ASamples: 63K of event 'cycles:ppp', Event count (approx.): 49402841395
2 `* @& b) I7 e( Y+ _Overhead  Shared Object         Symbol" }& r" U5 [0 u% T
  48.92%  libceph-common.so.0   [.] crush_hash32_3
, W" T+ g2 R8 a1 l6 Y  24.28%  libceph-common.so.0   [.] 0x0000000000647f800 N# c5 z6 q/ B+ |6 Q
   4.35%  libceph-common.so.0   [.] 0x0000000000647f596 t3 R+ R. x4 v( f9 |, m4 n
第二次测试,写入一段时间后,集群报错,mds处于rejoin状态
  cluster:" P1 ^' m3 g, W" E# Y, p$ e
    id:     8418d616-979b-46f9-ab95-b8fb20093d1b
9 `/ T( V( f3 H    health: HEALTH_WARN
, i$ `( Y0 ~- N6 ]+ |# k. B# p            1 filesystem is degraded- ?7 i  E: f: i5 e! G
            1 MDSs report oversized cache  ?% _, `2 u. d
            1 MDSs report slow metadata IOs: }% X6 e3 W5 }( h, f  Z
+------+--------+----------------------+----------+-------+-------+
7 g- O" @4 w6 ?2 R% K| Rank | State  |         MDS          | Activity |  dns  |  inos |
; ~$ B7 r- C- I/ Q  X$ B; j+------+--------+----------------------+----------+-------+-------+9 G% I9 H/ A( g  O" {9 L$ g
|  0   | rejoin |R03-MTEST-MN-001.xx.cn|          | 59.5M | 59.5M |
$ {2 ]; e5 U, ?; I0 \7 Q5 G+------+--------+----------------------+----------+-------+-------+
0 k2 o. f/ A+ }/ M) E/ h; d, A
此时mds的内存消耗非常大
    PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
8 i3 a7 I. D' d5 P  V# z- z$ M 150540 ceph      20   0  224.9g 223.5g  11704 S 100.0 89.0 196:15.69 ceph-mds
5 a7 w' Z' [8 ]) |) ^" o) @
使用命令ceph daemon run/ceph/ceph-mds.R03-MTEST-MN-001.xx.cn.asok flush journal
# R  ?7 r. d9 B后,降低了一些,但很快又上到了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
9 e; [/ A5 Q8 v; z5 A0 h! xcephfs - 40 clients
8 y* x9 X4 U# {) K- v+ Y" {======  |9 l3 J7 G4 w8 Y
+------+--------+------------------------+---------------+-------+-------+' z, K% }: T* g2 P( C
| Rank | State  |          MDS           |    Activity   |  dns  |  inos |
% W+ W/ Q6 S3 T; y+------+--------+------------------------+---------------+-------+-------++ q4 ^$ @. n3 ], m% h2 e
|  0   | active | R03-MTEST-MN-003.xx.cn | Reqs: 10.3k/s |  391k |  391k |" [( O( M6 ]* R
|  1   | active | R03-MTEST-MN-002.xx.cn | Reqs: 10.5k/s |  385k |  385k |4 t% r$ z6 x& {6 L, s( X, ~6 H
+------+--------+------------------------+---------------+-------+-------+3 Q5 n# `7 o  ^) o  @
+----------------------+----------+-------+-------+
# h0 O  J) R: C8 j4 }6 H# U|         Pool         |   type   |  used | avail |; Z/ I9 d) s, P1 v
+----------------------+----------+-------+-------+
. m, r& [! }. F/ |3 |; o5 }  T| cephfs.metadata.pool | metadata | 3378M |  797G |
0 z2 O% Q/ u- n/ [|  cephfs.data.pool1   |   data   | 6085G | 1234T |/ i: G) `6 W4 a# y& S6 ?
|  cephfs.data.pool2   |   data   | 2257G | 1241T |
/ L. v, m) F3 ]+----------------------+----------+-------+-------+8 G0 i+ j  X0 Z: D: X
+------------------------+
$ ~5 ]! F2 N6 ~; a|      Standby MDS       |
: L" f0 Z# f: d9 F* d+------------------------+* F2 C8 ~. t+ O& _
| R03-MTEST-MN-001.xx.cn |
$ j1 b5 r3 w1 L8 j& U) H+------------------------+
8 H+ s5 e" M1 D& m+ w" a) eMDS version: ceph version 14.2.20 (36274af6eb7f2a5055f2d53ad448f2694e9046a0) nautilus (stable)! x) b, ?1 p  S7 u  L% |/ B
其中每个data pool都创建了20个目录,并pin到不同的mds上,性能看还算均衡,连续快速写入,会有告警2 MDSs behind on trimming
# {0 Y% _$ r% `但没有什么影响,就没管
随着数据的大量写入,集群开始出现slow
[twj@R03-MTEST-MN-001.xx.cn ~]$ sudo ceph df
2 B3 D$ E& c# G7 |- URAW STORAGE:: m9 H. @8 a- f2 y9 j
    CLASS     SIZE        AVAIL       USED        RAW USED     %RAW USED0 I; Y, h% q; L" \$ U
    hdd       3.9 PiB     3.1 PiB     823 TiB      823 TiB         20.79; Z5 n2 Q" S& c1 W% A: ?
    ssd        16 TiB     3.0 TiB      13 TiB       13 TiB         80.72
3 _) I& F3 e# I3 N/ [% |$ x    TOTAL     3.9 PiB     3.1 PiB     835 TiB      836 TiB         21.03
1 C2 @, {9 {0 o0 ~/ Z) g0 h: z, l' ], f! E6 v2 [
POOLS:- _5 z6 B9 X) ~- n9 k! J
    POOL                     ID     PGS      twjD      OBJECTS     USED        %USED     MAX AVAIL
4 [% T) D. ?5 p    cephfs.data.pool1         2     8192     275 TiB     217.81M     413 TiB     23.20       911 TiB  @. d& G2 N- w
    cephfs.data.pool2         3     8192     244 TiB     102.44M     366 TiB     20.53       946 TiB
6 m& y& h' }8 |4 l    cephfs.metadata.pool      4      256     127 GiB     115.39k     191 GiB      7.74       760 GiB
  J7 E5 Z& d' Y% ~    / M3 ^  R- {' m! g  u
[twj@R03-MTEST-MN-001.xx.cn ~]$ sudo ceph health detail
: Y% C7 e1 z2 U$ u0 A1 @- tHEALTH_WARN 1 MDSs report slow metadata IOs; 1 MDSs report slow requests  Y0 `$ ?) |# X: C) j+ c% r2 |( ?0 L
MDS_SLOW_METADATA_IO 1 MDSs report slow metadata IOs$ D( l) ?# R! Q) F+ p& `- t
    mds.R03-MTEST-MN-002.xx.cn(mds.1): 100+ slow metadata IOs are blocked > 30 secs, oldest blocked for 87 secs
, z1 v, {  H0 x) q0 E' q7 D0 @MDS_SLOW_REQUEST 1 MDSs report slow requests+ A9 Q& e4 n5 f4 W
    mds.R03-MTEST-MN-002.xx.cn(mds.1): 11 slow requests are blocked > 30 secs
+ f% S8 a3 a% T( u: L# t
查看mds的op处理流程
[twj@R03-MTEST-MN-002.xx.cn ~]$ sudo ceph daemon mds.`hostname` dump_historic_ops_by_duration|grep duration* e2 J& w6 ?! A7 G
    "duration": 600,
) t# I9 Z9 E( K: C            "duration": 427.63886984499999,6 U( \+ _7 c( @' {. c" w# Z
            "duration": 427.62001601499998,
7 Q: z4 V+ M- ]- X, q. c* B  D            "duration": 409.772382456,
# }$ m: [8 Y! F4 Q            "duration": 409.75990740399999,3 C. E0 A) I9 e
            "duration": 215.47288510800001,8 A/ {3 h3 X; g& h% R3 Y
            "duration": 214.47418489699999,
1 p3 [" @% w  d6 }# k$ p' L+ @0 `& R            "duration": 203.97045117499999,; y! ~. A& g% M
            "duration": 203.51505527899999,/ E5 H* u) r* a+ z9 q. F
            ...5 \5 K% v& U1 ]; n4 U6 N
时间都非常久,继续排查,发现大量的op都是卡在failed to rdlock, waiting! ?( x+ O% D7 r
这个步骤,关于这种情况的调查和优化,还在努力。。。
看了一眼内存,没有明显的飙升
[twj@R03-MTEST-MN-003.xx.cn ~]$ top
( q" z2 H4 g" ^) jtop - 15:34:57 up 9 days,  4:36,  1 user,  load average: 0.95, 1.22, 1.28
5 W3 I& t3 a- Y: iTasks: 650 total,   1 running, 649 sleeping,   0 stopped,   0 zombie* c! o% h. Q$ Q
%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 st3 x0 n% k* s" Z
KiB Mem : 26353089+total, 25013656+free, 11907872 used,  1486464 buff/cache
0 ~9 f$ \5 h4 }2 t2 P' \, ^KiB Swap: 16777212 total, 16777212 free,        0 used. 24535932+avail Mem
7 X, E% D* X$ z" R
  p- c$ V3 J+ i- v    PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
! e9 e# m* Z0 A" r  29657 ceph      20   0 7878864   2.5g  14288 S 100.7  1.0   4616:55 ceph-mds
- N8 d* Q* C1 p
大量数据写入后,先测试一下mds的重启,直接reboot节点,观察集群的情况
[twj@R03-MTEST-MN-002.xx.cn ~]$ sudo ceph fs status
) |( T+ q  J' F5 m1 D' Acephfs - 40 clients1 y7 R. }; H, K' K: @) H4 M2 O
======2 E. d  X0 ^: R, E) A
+------+--------+------------------------+---------------+-------+-------+
, ^$ B2 b  I9 S| Rank | State  |          MDS           |    Activity   |  dns  |  inos |4 U" b7 ?1 l" c- c7 X- k
+------+--------+------------------------+---------------+-------+-------+
0 }& m' W+ f8 x|  0   | active | R03-MTEST-MN-001.xx.cn | Reqs:  869 s |  445k |  445k |
% L1 ^( P/ N( [: s4 q# U|  1   | active | R03-MTEST-MN-002.xx.cn | Reqs:    0 s |  365k |  365k |' {) v+ b7 K3 J$ y+ H5 x& ^
+------+--------+------------------------+---------------+-------+-------+1 z1 ]1 d- `: M/ t
+----------------------+----------+-------+-------+
; U. W: ?! S! Q+ u& {$ c$ K|         Pool         |   type   |  used | avail |7 Z3 z8 D3 z: [8 ?
+----------------------+----------+-------+-------+
- M; V9 ]/ Z# P1 `# x/ C| cephfs.metadata.pool | metadata |  186G |  762G |
3 {: w& U# H& U) s& e|  cephfs.data.pool1   |   data   |  412T |  910T |
1 H- x4 A( o9 o: E- R7 `3 y  k|  cephfs.data.pool2   |   data   |  366T |  945T |
* k1 T5 @2 o0 {3 i* s1 b+----------------------+----------+-------+-------+. S/ P6 l# g6 g
+------------------------+
- G, L9 ^* s' w9 i! N3 R2 d|      Standby MDS       |
/ b6 v9 u; }+ f" N0 P+------------------------+* r) q/ _# }, D* y" [1 z. o
| R03-MTEST-MN-003.xx.cn |+ u$ T+ {1 a2 ~- T/ d/ W& R2 p
+------------------------++ z) B- _3 `# P- O  D; y$ M! o5 o0 W
MDS version: ceph version 14.2.20 (36274af6eb7f2a5055f2d53ad448f2694e9046a0) nautilus (stable)! X% J  P/ y" W4 y0 b
看是备是直接顶上了,mds重启后自动做备,业务侧暂时没有发现有问题,不过,发现写入的流量都打到了同一个mds,不知道是不是因为rank序号变化导致的
测试发现,当单个目录对象数达到千万级时,cephfs的目录出现明显的卡顿,测试读,读取偶尔会有问题,流量不稳定,最大可到1GiB/s,最小只有几百M
  io:' Q+ V; |# U) g0 b+ _
    client:   240 MiB/s rd, 559 KiB/s wr, 102 op/s rd, 0 op/s wr
4 R! T( G* O6 G* t结论
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-12 00:11 , Processed in 0.015541 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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