|
|
cephfs扩容方案
1 N$ ?' a3 {; O6 h+ f+ J) w; U% {
需求描述0 I5 s& M; m' B
. s. s8 F, Q4 k! }9 I N2 i3 S* V* J
建立完善的cephfs的扩容方案,满足cephfs用户数据存储空间在各种场景下的扩容需求。目前扩容只涉及到用户的数据存储,元数据部分因为空间使用率较低所以不需要考虑扩容。
6 S5 T; i5 M% i: }: ]
8 p. z+ }; C6 l' ]. v现有cephfs用户存储模型& U) X, l1 D8 O
g% R( Y1 d6 c5 }2 _
目前单个用户会对应一个ceph集群里面的多个Dir目录,每个Dir目录底层会关联到两个pool,其中metadata_pool用来存储元数据,data_pool用来存储数据。
; _$ z" O6 ^3 z- A8 P; A4 ?' b* v
6 G6 L' M M. `0 i1 f8 c+ _7 l7 t8 M. ]6 I& z
" T; O8 ?) h' P' K单集群扩容方案
2 J) V( l# g- P. T9 t3 E( Y+ Y0 ~& S/ C
通过filelayout进行扩容
5 E; Q& ~; P! t3 K/ b3 { c( U! C! x- @& g7 S! w$ }
基本原理3 {. b6 `; z0 q T: C$ K( A
3 r, r( B. j s8 n' r. D每个文件都有filelayout的xattr属性,其中包含一个关键的pool字段,用来指定存储文件底层用到哪个pool,因此利用该特性可以实现基于目录基本的扩容。
% `8 ?/ `( U A# a
9 F) m4 Y9 Z, y4 @参考 https://docs.ceph.com/docs/maste ... ata-pool-to-the-mds$ |) N, c/ o9 X m& C
5 k* E& [! o" N6 }, D9 x6 o. l
操作流程
) }9 X! W3 m, b* [& F- ~& }9 u4 l; F6 A$ a9 q) e6 \8 V
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"0 C- c( ?: e8 @ P; g% p, ?
. j8 P- T0 S+ C方案1. 同级目录扩容
?) J5 e% L2 F
; X' z" c7 H* o9 k; w' Z& i2 Y1 y如果业务侧能够按新增主目录方式进行扩容,则可以通过新增一个用户主目录,将新目录指向新的data_pool来实现扩容。' `- |! Y& j/ |4 e9 }
& O$ i# i" g' n9 }& ^" f9 t优点:新扩容的pool不会对现有存储服务造成影响。# h2 P. M! I- q9 R$ V9 ]. Q
* V- r" u7 k+ Q; R" S/ l4 y6 z! a, {缺点:业务需要能够适配这种新增子目录的扩容方式。) w, ^# p4 {2 K
. M6 B+ A1 h6 T! h! z$ N: m9 x
% d) b- l0 C2 V
1 U4 `+ j! z0 k% Y8 b8 i方案2. 子目录扩容4 U8 d8 Q; f. P& i8 h
/ L9 j$ L; Z2 O
如果业务侧只能在原有主目录中进行操作,则可以通过在原有主目录下新增一个用户子目录,将新生成的子目录指向新的data_pool来实现扩容。3 ?# M: C" y7 a7 F% J5 O% d
+ e& o, f8 D: N- ]优点:新扩容的pool不会对现有存储服务造成影响。( b% _+ ]; g# o; T& c
8 U' _! \! U: [2 L# z9 ~$ U* Q! H3 Z+ S
缺点:业务需要能够适配这种新增子目录的扩容方式。% c) X, d% W# d( |$ W! l5 Y
8 |3 U- G, r5 q/ N" z( [/ E7 V/ I, R, G1 C6 T
5 [4 h! H0 b! v% a f通过新增OSD进行扩容
) q1 k+ g% }4 u; ~$ x: }. b
4 v$ K3 P1 d1 y$ }基本原理# `' ^' N% U1 C# Y% r" w" R" l
4 e6 ?, I1 j3 Z! M E/ z0 d# S
基于原生底层分布式存储的基本特性,可以在原有的pool里面新增OSD进行扩容,但是新增OSD会导致旧有数据重新平衡,造成性能波动,影响服务质量。/ H1 z+ ^, p }
2 @+ S& D: F) d1 [# v6 _8 t
方案3. 原有data_pool扩容1 f7 r4 Z1 H& T( L5 L) F1 H1 o+ ^
) j0 l& ]/ G' K( f6 }0 D1 W
通过在原有data_pool中新增OSD来实现扩容。
, F& @' |1 Z9 M* y8 a
) C+ E3 X$ {7 ?# n" B5 g2 D. O优点:业务和k8s层面不需要做任何变动,完全对上层透明。. A" W" B/ N$ S4 X" J) m
" f) s/ j) q, U) U4 C缺点:旧集群在新增OSD的时候会发生性能抖动,同时为了兼顾扩容速率和减少业务影响,相对扩容周期会比较长。受限与机房机柜和网络设备环境,有物理层面的上限。
" m4 J2 k% r+ S3 {3 A) }' z
3 j: _! o4 n! E0 T4 d9 o0 F8 n; B, D/ \, }
5 t* l$ `: s' m: j/ p& N
多集群扩容方案7 U+ U6 ]* i2 I( R" j7 ]! @$ S7 ^" B
: m1 D# C- y% t% C8 E方案4. 新增ceph集群% |8 a. o! C+ R% W0 n; a, ?
: n# y! ~5 _ V. @" x受限于单集群规模存储集群的规模有限(受限机柜、网络等),单机房多集群、多机房多集群都会可能存在,因此这一块的存储扩容方案也会纳入设计范围。9 G0 J7 e) h2 U7 }& a+ G8 n
" R5 i8 a8 j' i; {/ e优点:适配现有的单集群部署方案(1个集群跨3个机柜),相对来讲容易做故障域隔离(鸡蛋不放一个篮子里).扩容新集群不会对现有存储服务造成影响。
: Q) u8 @' \4 k5 K5 q2 z7 }7 k5 [6 m9 n# p. F y
缺点:需要业务能够适配这种跨集群模型(跨集群的目录数据不能互通),单个docker里面最好不要同时挂载两个以上集群的目录。k8s的存储资源调度复杂度上升,需要支持多集群。% B4 ^2 X& M/ \# y+ m
* [' |. H3 e/ k, q
% }) x& ]- O, g |
|