找回密码
 注册
查看: 621|回复: 2

ceph 文件系统mds cephfs文件系统扩容

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2022-7-27 02:00:01 | 显示全部楼层 |阅读模式
cephfs扩容方案
6 C( c; ?3 }$ \  L4 z% D. e) z8 ]' `# d  }) A- p
需求描述
% a, U$ V+ c: I8 }0 U9 l2 ?, s& i3 B. O0 n8 D8 \- O$ y
建立完善的cephfs的扩容方案,满足cephfs用户数据存储空间在各种场景下的扩容需求。目前扩容只涉及到用户的数据存储,元数据部分因为空间使用率较低所以不需要考虑扩容。# A5 c) L. |$ R; }
  f, p) X* a5 k' D: R1 f  ?$ I
现有cephfs用户存储模型: M  k7 p9 X/ f# P$ S6 [9 J
9 P( ]% g$ J0 X: w' b) `* m
目前单个用户会对应一个ceph集群里面的多个Dir目录,每个Dir目录底层会关联到两个pool,其中metadata_pool用来存储元数据,data_pool用来存储数据。
  T( Y* u0 f0 L5 F' B8 @
6 o% \; p, D0 f7 t) I. d2 {# I
" |& R) T  x8 R4 K0 {0 O( M2 e2 S
& Y- C5 C! t* h' o单集群扩容方案
, p3 R+ d5 n7 o6 p6 f6 w+ i2 t
9 v7 f1 N8 {+ P* F' i# C3 b通过filelayout进行扩容
( s9 `) y$ U2 q+ x! }$ w; H5 l1 m% E' |  y9 d& M
基本原理; h$ i# t8 f  p$ {

& }3 h0 T$ a9 u8 O  W+ ~% n' W8 ~! V每个文件都有filelayout的xattr属性,其中包含一个关键的pool字段,用来指定存储文件底层用到哪个pool,因此利用该特性可以实现基于目录基本的扩容。
5 n3 [. q! g; n3 g' l1 K4 A  A3 J' t, y8 O
参考 https://docs.ceph.com/docs/maste ... ata-pool-to-the-mds
1 U" ^& R, \5 X+ G1 S4 B! F) w1 o6 [7 P. W. H; F+ a
操作流程' B% e! D% q1 Z- H
) `3 [8 h, q2 ^  x3 R6 I
root@host1:/mnt/cephfs1# ceph df RAW STORAGE:     CLASS     SIZE        AVAIL       USED       RAW USED     %RAW USED     hdd       952 TiB     861 TiB     89 TiB       91 TiB          9.52     TOTAL     952 TiB     861 TiB     89 TiB       91 TiB          9.52 POOLS:     POOL                      ID     STORED      OBJECTS     USED        %USED     MAX AVAIL     rbdtest-site1-ssd-img      1     8.7 TiB       2.34M      26 TiB     24.58        27 TiB     rbdtest-site1-sas-img      2     8.8 TiB       2.31M      26 TiB      3.63       233 TiB     cephfs_metadata            3      85 GiB     116.05k      86 GiB      0.10        27 TiB     cephfs_data                4      12 TiB     198.68M      36 TiB     30.65        27 TiB     cephfs_pool1               5     121 GiB      31.04k     364 GiB      0.44        27 TiB     sym_cephfs_data            6     656 KiB          13     3.6 MiB         0       233 TiB     sym_cephfs_metadata        7         0 B           0         0 B         0       233 TiB     kubernetes                20       152 B           6     192 KiB         0       233 TiB root@host1:/mnt/cephfs1# setfattr -n ceph.dir.layout.pool -v cephfs_pool1 /mnt/cephfs1/extest1/ root@host1:/mnt/cephfs1# getfattr -n ceph.dir.layout /mnt/cephfs1/extest1 getfattr: Removing leading '/' from absolute path names # file: mnt/cephfs1/extest1 ceph.dir.layout="stripe_unit=4194304 stripe_count=1 object_size=4194304 pool=cephfs_pool1" root@host1:/mnt/cephfs1/extest1# touch file2 root@host1:/mnt/cephfs1/extest1# getfattr -n ceph.file.layout /mnt/cephfs1/extest1/file2 getfattr: Removing leading '/' from absolute path names # file: mnt/cephfs1/extest1/file2 ceph.file.layout="stripe_unit=4194304 stripe_count=1 object_size=4194304 pool=cephfs_pool1"
' W1 I) s7 S  G9 E6 t7 h1 f. f$ r+ b& i. S1 Q" ~! p
方案1. 同级目录扩容
0 w: I$ P% g9 J+ l; u3 f: X' I2 D2 e  n9 K, B7 M$ G
如果业务侧能够按新增主目录方式进行扩容,则可以通过新增一个用户主目录,将新目录指向新的data_pool来实现扩容。
0 W+ A, B! v6 a! s: ~- J" [. j
7 \; p; r  ]) h; n9 V+ J* @3 _优点:新扩容的pool不会对现有存储服务造成影响。& W7 v& v; }. e  e9 w! m+ m, x

# S. g8 D7 J1 Q缺点:业务需要能够适配这种新增子目录的扩容方式。
. V1 x# q" r2 y+ d4 X; C
, J6 V9 }" c6 h& G3 x1 b, g6 p! Y8 C1 i+ E( Q- D; l3 ^: m
, H) F6 v' p4 |( K
方案2. 子目录扩容, q% d  X$ K! `* A, m, F
% ]* t' n7 w  c! o
如果业务侧只能在原有主目录中进行操作,则可以通过在原有主目录下新增一个用户子目录,将新生成的子目录指向新的data_pool来实现扩容。
5 |* \( Q  [5 ?
5 i0 S' r. Y; P9 o优点:新扩容的pool不会对现有存储服务造成影响。
( Z( S5 K8 J" |3 F  _, q- C+ C
/ \/ |; o7 E0 ]/ Q$ @9 n缺点:业务需要能够适配这种新增子目录的扩容方式。
( k: n6 p# S' ]' `% D" F- _
6 R# N* q8 h1 o# ?4 S  M
* J: W  N  u  ]3 `' i$ Q2 `7 ]# j: C! c- V  ^! N9 w
通过新增OSD进行扩容
% I2 q: v; M# t* h' {5 o
" E: R, M  s* L, ]/ e. |基本原理: Q. P' a" R, S+ V( c
( ?" d. ]: x# Q
基于原生底层分布式存储的基本特性,可以在原有的pool里面新增OSD进行扩容,但是新增OSD会导致旧有数据重新平衡,造成性能波动,影响服务质量。
/ c! M; h/ v% V! m- v( a) g! {* N
% J' m4 w& A7 y. D: Y4 N8 m: P方案3. 原有data_pool扩容) l1 ^* F4 [4 h% L. x) K3 g& V
2 X0 b  l9 W, ]. R" [/ T3 o9 W+ b! X
通过在原有data_pool中新增OSD来实现扩容。) L! Y! Y2 }3 k; g6 M: m# g
8 L9 p4 P$ |7 x, A
优点:业务和k8s层面不需要做任何变动,完全对上层透明。) V+ w) H" @6 y6 |$ k% r

1 N" z" S+ ?% R' Z缺点:旧集群在新增OSD的时候会发生性能抖动,同时为了兼顾扩容速率和减少业务影响,相对扩容周期会比较长。受限与机房机柜和网络设备环境,有物理层面的上限。- J0 t( v* W& ]& l7 |) f, m! Z4 d! p
! ^+ c+ f/ {9 m# l
5 p. C4 f' U- Z, Z" q9 [4 W

1 E3 J  h3 L0 y4 V" f1 Q多集群扩容方案; o" R2 V) C4 n: i1 i. @0 m

- J1 j  q4 m  l2 f( A. q方案4. 新增ceph集群, l; x: n5 ?6 U3 ~2 ^
% E. j4 d. H. r- I1 n9 D
受限于单集群规模存储集群的规模有限(受限机柜、网络等),单机房多集群、多机房多集群都会可能存在,因此这一块的存储扩容方案也会纳入设计范围。
. R5 k4 w) z9 D# F( h/ ]- B5 B5 t
$ H7 n$ w: E# @6 g; S# e优点:适配现有的单集群部署方案(1个集群跨3个机柜),相对来讲容易做故障域隔离(鸡蛋不放一个篮子里).扩容新集群不会对现有存储服务造成影响。
8 i( Q6 U( r* L  m1 U
! J: Q3 j6 A8 ?缺点:需要业务能够适配这种跨集群模型(跨集群的目录数据不能互通),单个docker里面最好不要同时挂载两个以上集群的目录。k8s的存储资源调度复杂度上升,需要支持多集群。9 T+ ^7 n6 E# i$ L
5 x3 L& Y. A5 \9 B7 P4 m

2 ^3 E: `' k% q- G0 \0 ?

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-7-27 13:41:27 | 显示全部楼层
[root@ceph-1 ~]# ceph fs get filefs
, N' \$ Y) }. [) T) |! YFilesystem 'filefs' (3)
+ D( e6 W9 e8 x9 p# [4 bfs_name        filefs. F& q7 h7 d- D
epoch        53
% ^0 C" b5 f( I/ |flags        c; b# H, r9 G1 |5 I- F
created        2022-07-27 11:43:28.8894881 t7 T3 ]- l/ O! n
modified        2022-07-27 11:52:06.236226* E+ V( ^& Y- s2 X
tableserver        0  _) V5 _# }* ^4 D- n5 x! Y" o
root        0
* X$ T: f  d4 Z) M4 Ysession_timeout        60
' q" @  H; v$ g: Q8 B+ K) b5 Msession_autoclose        300
3 ~) m& [$ u9 ?0 k- z) P; Fmax_file_size        1099511627776
2 z# X5 R8 d0 K+ u# Zlast_failure        0
& N* l7 T( t! |1 p( s" K! Wlast_failure_osd_epoch        308. F% b! t5 ?  x+ |  H/ ~
compat        compat={},rocompat={},incompat={1=base v0.20,2=client writeable ranges,3=default file layouts on dirs,4=dir inode in separate object,5=mds uses versioned encoding,6=dirfrag is stored in omap,8=no anchor table,9=file layout v2}+ j! }# e. ]5 e9 U( S  i1 g
max_mds        1- p' L- F. E- U
in        0
* h! u* t, s$ k; z3 kup        {0=6289}
. y, _4 m3 X$ z% x5 s/ r5 B  e0 vfailed        & `1 v; u* g7 C( @7 m$ }
damaged       
5 T% s+ R! }, N. ?stopped          A3 x3 e" w- ~- _! @# H+ W7 h
data_pools        [7]0 Y' G1 X; L# o. I0 n
metadata_pool        6
0 c7 V& L3 S* ]4 X+ F( xinline_data        disabled2 n7 W& V, B7 ?& S+ t: Y
balancer        ' y; I; w; f2 a( q! \% X
standby_count_wanted        1( W+ g8 ]# o, Y  [& `/ D& w. H
6289:        192.168.120.16:6800/3770900281 'ceph-2' mds.0.50 up:active seq 261

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-7-27 13:43:43 | 显示全部楼层
恢复步骤' w' b% N3 L; X! g
4 J+ W9 o. F# z! ~& d
设置允许多文件系统. v3 ?9 X* N7 x! e3 J) H
ceph fs flag set enable_multiple true –yes-i-really-mean-it6 n( _+ `- }% I" X( I& U
创建一个新的元数据池,这里是为了不去动原来的metadata的数据,以免损坏原来的元数据
3 Z  z* l! n7 Mceph osd pool create recovery 8: M( N/ R! O9 w/ R2 ]6 ^
将老的存储池data和新的元数据池recovery关联起来并且创建一个新的recovery-fs
& R5 c7 [4 i' P- J6 M. g- Uceph fs new recovery-fs recovery data_pool –allow-dangerous-metadata-overlay[root@ceph-2 ~]# ceph fs new recovery-fs   recovery  metadata  --allow-dangerous-metadata-overlay
! J& g8 a1 J1 g% i8 Hnew fs with metadata pool 8 and data pool 6( @! j. S# q0 [* \" Y" {

: h( F) D0 u3 d* s) e: W
! E: {6 i) X+ }7 u2 t) X做下新的文件系统的初始化相关工作
$ @$ x2 c6 K' `  ccephfs-data-scan init –force-init –filesystem recovery-fs –alternate-pool recovery
& u+ n+ u& j6 v+ i( yreset下新的fs
  d; I; P" P2 Jceph fs reset recovery-fs –yes-i-really-mean-it
; O: P9 l) C3 b3 w. S$ Mcephfs-table-tool recovery-fs:all reset session1 G4 |$ x' `4 [* f+ {$ o
cephfs-table-tool recovery-fs:all reset snap) |0 u7 L- X1 ~9 I! }7 m" H% z5 y
cephfs-table-tool recovery-fs:all reset inode8 f+ J' f8 a& N3 c
做相关的恢复
2 L" G/ {; F5 C& s* j* U/ x# Gcephfs-data-scan scan_extents –force-pool –alternate-pool recovery –filesystem cephfs data_pool
7 v5 j# f: a& ^* w& l! mcephfs-data-scan scan_inodes –alternate-pool recovery –filesystem cephfs –force-corrupt –force-init data_pool
4 {+ ]/ {) h7 ~# w: y0 l% {# i% f) B& Ocephfs-data-scan scan_links –filesystem recovery-fs
, A% E* L0 a) }# W( E" t8 f  A3 b" Osystemctl start ceph-mds.target7 W6 b! j/ A/ F+ M7 ]; E( x! t6 `
等待mds active 以后再继续下面操作. g" Z/ a) L1 [  @+ I1 Z: B
ceph daemon mds.mon0 scrub_path / recursive repair
9 ]7 F% q. e" ^5 q4 b: dceph fs set-default recovery-fs# q7 O0 Q; z; k) l! u8 k* a$ h1 F* R5 q

* @& K+ N' h* i  u( U
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 00:11 , Processed in 0.016038 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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