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

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

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2022-7-27 02:00:01 | 显示全部楼层 |阅读模式
cephfs扩容方案
2 T' k2 L1 A2 a9 i- b) K+ \( V7 r1 v7 G# X
需求描述" y4 i/ ]( O7 n9 v( O9 N' l

2 k' y4 E# `9 F6 o- ]- e7 Q建立完善的cephfs的扩容方案,满足cephfs用户数据存储空间在各种场景下的扩容需求。目前扩容只涉及到用户的数据存储,元数据部分因为空间使用率较低所以不需要考虑扩容。
; D5 W) M/ e! f( L& _, m
5 ?' s) j) {; q# n* ]2 H现有cephfs用户存储模型
6 H- }$ h# r* u. Q  K
% z' m( |4 U! V9 D目前单个用户会对应一个ceph集群里面的多个Dir目录,每个Dir目录底层会关联到两个pool,其中metadata_pool用来存储元数据,data_pool用来存储数据。
- r- g' |4 W( g
2 p; }- T6 Q) y- [3 c; u" R( Z& Q% Q! D  @: f

# k) {* \, @3 U% \. ]单集群扩容方案6 c  O# o: q; x/ o8 o0 J9 D9 O

2 l. P2 o3 M: `0 n6 f& E* G& S: d0 c通过filelayout进行扩容5 z8 N, d6 s. w' q+ O
9 f. d. \8 S# {" |9 Z
基本原理( E+ J! W. {+ C+ C% c

: o' t( j5 f5 N4 c, [8 l# Z每个文件都有filelayout的xattr属性,其中包含一个关键的pool字段,用来指定存储文件底层用到哪个pool,因此利用该特性可以实现基于目录基本的扩容。
( c" _5 F  V4 n: S  I3 g% Q6 u! R" Y# w) {& T2 y$ Z
参考 https://docs.ceph.com/docs/maste ... ata-pool-to-the-mds
# B0 S# d) {2 K# U
* {) A0 {# t, `3 [操作流程7 j( D+ A3 h' U0 V  s6 a6 n
5 B1 @8 D1 H  s" _: a2 F
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"
+ O, o. q3 K7 a6 Y2 T0 y( u1 g2 e. i  F" h, z# N
方案1. 同级目录扩容
9 a& k2 k0 o4 |2 }' [2 Y0 Q/ ]# P4 ^2 e
如果业务侧能够按新增主目录方式进行扩容,则可以通过新增一个用户主目录,将新目录指向新的data_pool来实现扩容。/ m- `; W* U, i; ?  j

# _/ j8 f4 e$ O# [1 R优点:新扩容的pool不会对现有存储服务造成影响。
7 X: K- F. @: P" D
  I! j7 @. l( S! I  R: y缺点:业务需要能够适配这种新增子目录的扩容方式。
7 {2 A! A* y! r+ U, q: s  m6 R* D- I$ S& p* L

6 t( F6 N8 l& X# Z* |, E' o0 I2 e4 j: ?
方案2. 子目录扩容
; ?3 Y; u1 a+ x
2 D  `7 m$ s/ n0 S" u如果业务侧只能在原有主目录中进行操作,则可以通过在原有主目录下新增一个用户子目录,将新生成的子目录指向新的data_pool来实现扩容。
" n2 M: w' N! {" Y+ M
" M/ r4 C3 w9 e优点:新扩容的pool不会对现有存储服务造成影响。/ b1 e2 \3 T* N" X

  d2 t1 q4 O9 d- A4 B" D8 p' u% q6 S缺点:业务需要能够适配这种新增子目录的扩容方式。6 S3 l2 j" d$ i" b: n
" h+ _8 w% z4 L; J4 B' b% A) I
$ c! E3 }' @! F+ h$ ]
5 |0 X+ W$ X3 ?3 p8 J! q' }  u3 d
通过新增OSD进行扩容
1 O: b$ D$ g% P2 N. l/ s8 b$ G7 B: l+ {9 s1 V* o
基本原理& Y+ k) w0 T- n
& a. `( q& {+ r! c
基于原生底层分布式存储的基本特性,可以在原有的pool里面新增OSD进行扩容,但是新增OSD会导致旧有数据重新平衡,造成性能波动,影响服务质量。
" M* W+ R/ i) I; {) i: x: ^
' E5 a2 `) v: R& P( B方案3. 原有data_pool扩容
5 O# x! L0 L& a* U: f! U% \0 u& a3 ~3 s! p) }1 ]. J; L* t
通过在原有data_pool中新增OSD来实现扩容。
- g& Q# s# C& b
0 w& P" m0 ]4 }6 \6 S优点:业务和k8s层面不需要做任何变动,完全对上层透明。3 a- B: }1 w& r  j

& [. V3 n) ^/ r$ D5 e缺点:旧集群在新增OSD的时候会发生性能抖动,同时为了兼顾扩容速率和减少业务影响,相对扩容周期会比较长。受限与机房机柜和网络设备环境,有物理层面的上限。
6 p) n& N: _# |! k% p2 T5 X" j( M2 @+ M: e2 K

: P0 A/ N0 d% L8 S7 N; a* S" K. z$ \# N0 I- Q( h5 Q! l. ^# p
多集群扩容方案
5 x* J3 M8 L5 Q# E6 t6 ^( l
1 y/ y& m# a( N% |6 \方案4. 新增ceph集群; F* \0 `! g) ~; l- b6 u% x

9 H( d  H3 |; O4 v受限于单集群规模存储集群的规模有限(受限机柜、网络等),单机房多集群、多机房多集群都会可能存在,因此这一块的存储扩容方案也会纳入设计范围。- u' s- M  D- J0 h" Y7 r, t/ M
  u3 w" _1 n5 [# \; @
优点:适配现有的单集群部署方案(1个集群跨3个机柜),相对来讲容易做故障域隔离(鸡蛋不放一个篮子里).扩容新集群不会对现有存储服务造成影响。
- p% \* I2 x, s9 [1 s
( X! M' [. o. i缺点:需要业务能够适配这种跨集群模型(跨集群的目录数据不能互通),单个docker里面最好不要同时挂载两个以上集群的目录。k8s的存储资源调度复杂度上升,需要支持多集群。
0 D% e* @) r; K+ k6 I% N7 B6 q6 S6 t  I3 o3 _2 H2 I2 ]) j# L
, P' _, x6 Q6 L

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2022-7-27 13:41:27 | 显示全部楼层
[root@ceph-1 ~]# ceph fs get filefs! }& B  e5 n0 f" O% r* ~
Filesystem 'filefs' (3): T& o3 Y$ V$ A$ V/ E9 l
fs_name        filefs
, S3 {- R1 S4 i9 Qepoch        53
, k9 A  w' u6 iflags        c
- I3 r, J9 @2 d+ _created        2022-07-27 11:43:28.889488+ ~5 {0 A. \( N! T' R1 e( x
modified        2022-07-27 11:52:06.236226
+ M) j+ T3 F+ _2 ?% y" m$ {$ Ptableserver        01 t1 ]! x1 {& y8 Z0 B2 E
root        0
3 r, k6 a: P- y7 [session_timeout        60/ R3 ?3 z/ `1 j  {
session_autoclose        300, Q0 \# u% ~7 d; ~  {9 s
max_file_size        1099511627776, }* F, c. z. K3 g2 \3 h+ T8 i
last_failure        0
* W, C# z1 N$ r% Klast_failure_osd_epoch        308
# N3 _" n8 }4 W" C  Jcompat        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}% A4 r2 y* t7 T# x
max_mds        1, A6 ~! H: h, a8 k3 ]2 ?
in        0
% j+ C* S. ]) R, f: r% r9 Eup        {0=6289}
# u9 ]! x$ w7 P2 E2 N% [8 Rfailed        ) H" K; ?; D. P" k
damaged        9 V, `, C) ]! g# p1 F2 A
stopped       
9 m& Z4 f$ ^6 H, qdata_pools        [7]
/ q: `( M( P" ?6 Vmetadata_pool        6
8 o; S  f9 f9 [% ~inline_data        disabled: n: K8 `# U# K1 i
balancer        4 r" p4 u  Q6 i) M
standby_count_wanted        1
- e/ P/ t( e, H' }, Y0 m6289:        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, W% F( A( H; L5 N

# A/ F8 L; r5 N( r# N设置允许多文件系统) s, v9 a% u; I3 J- G# K8 D
ceph fs flag set enable_multiple true –yes-i-really-mean-it- [# f* V* m) C$ X: Q" W  |
创建一个新的元数据池,这里是为了不去动原来的metadata的数据,以免损坏原来的元数据
. K6 E7 I$ M& i; _& B) g5 M. F3 Vceph osd pool create recovery 85 q6 I/ W1 F( A4 z* C
将老的存储池data和新的元数据池recovery关联起来并且创建一个新的recovery-fs3 Y; @" [4 e0 T4 p+ a
ceph 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
- `. N- i& d- x( ^6 \+ jnew fs with metadata pool 8 and data pool 64 F$ r' n" o* s

" B7 U- l+ U! x  t/ h
( m6 }8 I2 R. [- }做下新的文件系统的初始化相关工作/ b$ T( j; p/ B7 X
cephfs-data-scan init –force-init –filesystem recovery-fs –alternate-pool recovery2 l) _9 z1 y: J6 U  k: V" T% g5 z4 ]
reset下新的fs
9 X' _/ P. o. j2 l4 f# u0 qceph fs reset recovery-fs –yes-i-really-mean-it
: b- A/ M1 p7 r$ I0 h5 vcephfs-table-tool recovery-fs:all reset session+ p: V4 ^* [, R3 k8 F' m
cephfs-table-tool recovery-fs:all reset snap3 ]7 |& o9 n+ h0 b2 ?8 a( C& R
cephfs-table-tool recovery-fs:all reset inode
% H# q3 g& {! g3 P- b: @8 m做相关的恢复
; ?3 X2 r; q( |2 G: [cephfs-data-scan scan_extents –force-pool –alternate-pool recovery –filesystem cephfs data_pool. \' F4 J9 N- t4 y! Z/ [
cephfs-data-scan scan_inodes –alternate-pool recovery –filesystem cephfs –force-corrupt –force-init data_pool/ I" D& C- N! k, ~; ]& S
cephfs-data-scan scan_links –filesystem recovery-fs; h) [: }% T! B: |- c
systemctl start ceph-mds.target
  _$ Z2 ]# n' D+ Q等待mds active 以后再继续下面操作5 a9 X* |- b2 a- M& }$ Y
ceph daemon mds.mon0 scrub_path / recursive repair
. U% o+ _' A, U, i5 f. zceph fs set-default recovery-fs" G- c8 ]: e; }1 `
7 r6 P% D& i" p0 e5 L. s8 }' }
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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