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

ceph分布式存储安装及简单使用介绍

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2021-7-5 17:00:33 | 显示全部楼层 |阅读模式
二、安装CEPH分布式存储
$ Q7 k1 N! D$ F" |1、ceph集群的安装方法0 _4 X& R7 K% A- ?* V" E% j
(1)通过cephadmin安装部署ceph集群# H4 p8 x1 h/ C. m4 e' G
(2)通过Rook部署和管理在Kubernetes中运行的Ceph集群4 a2 N6 ~& s$ `# k& L5 o
(3)通过ceph-deploy快速部署ceph集群& g* l6 j+ s: C, P. x; t1 o
2、通过ceph-deploy快速部署ceph集群
- H) Z3 i4 e  i2 N% U) D7 m主机名+ @1 b, P* Q# G5 ^9 x2 O2 T
IP地址& |" l4 m' ~: ^, J
作用2 e! Z5 B- y, h1 ~
存储盘% K7 |$ f# t  ]+ i& j
CEPH01
0 o4 o# L7 M. ?192.168.16.171
, ]# s* V" B" l' \# R3 |Ceph-deploy osd mgr rgw% X$ @. |/ u3 C5 p
/dev/sdb /dev/sdc' M# b  }7 r8 `! R2 \% v9 u- @8 n
CEPH02
! \7 C6 i7 e% M" {192.168.16.172% i8 y( _/ U/ r; ^
Osd rgw4 s2 b  }2 n; @* b; t2 B
/dev/sdb /dev/sdc) j5 P7 ^2 g% d3 m9 B; {8 C" h
CEPH03
$ U( r4 j: q5 r, L192.168.16.173
- q& m" {2 p$ S. P# q: Z! vOsd rgw mds% W) J! r- `9 Y
/dev/sdb /dev/sdc /dev/sdd! ?/ C1 P( P* w8 j! f/ T( h: a! M' d
client9 e* E3 @8 T. U5 f7 z( w( P
192.168.16.181
! V3 D* a' G$ O8 L( M* J  w
! B- _; l2 ?# a4 D  L" Z
3 J, g3 P0 k$ r& T(1)安装前准备工作(在ceph集群节点上都需要操作). ]( B5 s4 e  [
1)关闭防火墙和selinux(或配置防火墙策略)
5 {7 P/ _* s# s1 l) O~]# systemctl stop firewalld$ q5 W1 b" w" V* @5 y
~]# systemctl disable firewalld+ y, b7 w$ U/ [' h9 X' l2 x
~]# setenforce 0
5 g% a- c. n' F1 W) N* d2 H( s~]# sed -i "s#SELINUX=enforcing#SELINUX=disabled#g" /etc/selinux/config
  e% k9 u( |' z! @" N3 G9 l. }2)配置时间同步3 U5 v8 G3 e/ ^2 u' r
# 安装ntpdata及epel仓库
$ J' I( s4 a! W  a# `~]# yum -y install ntpdate
" N" o) V# ?9 p9 P2 O+ J# 添加时间同步定时任务,如果有内部时间服务器地址,建议配置为内部地址
! T- E$ l3 |# L- V6 Z4 ~! Y~]# crontab -l% D3 P3 z! R7 P) @, h$ C( j
*/5 * * * * /usr/sbin/ntpdate ntp.aliyun.com >/dev/null 2&>1( o1 W7 j5 Z7 ]  p. k4 S
3)配置hosts解析! `0 s) V) v+ e' I6 Q+ k7 [1 N; G
~]# cat >>/etc/hosts<<EOF5 Z! g7 J% B! ]
192.168.16.171 CEPH01
1 ]; z  D! u$ b! H1 z/ C192.168.16.172 CEPH021 e% `( }1 V6 D9 i- e% g
192.168.16.173 CEPH030 h3 X3 W) l  e" k& Q
EOF
5 d' {9 X/ {/ m4)添加用户并配置sudo权限
: ^7 r7 a. [% N' }~]# useradd cephadmin/ F0 I( {3 f. e7 m7 `# U! c; g
~]# echo "dayi123"| passwd --stdin cephadmin
: @* S0 E+ A; P: P% c8 p2 q~]# echo "cephadmin ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephadmin2 c- l# q9 L- \- @" E
~]# chmod 0440 /etc/sudoers.d/cephadmin" \6 n: O2 `1 {
5)配置cephadmin用户免秘钥登录4 R& i) r2 ~6 X8 N: `, v. p
~]# su - cephadmin
1 ^8 }* q8 T9 p5 u~]$ ssh-keygen2 h/ g, h7 ?2 e# X& O: u
~]$ ssh-copy-id -i cephadmin@CEPH01
- @$ ?! ?% e4 b  t- S~]$ ssh-copy-id -i cephadmin@CEPH020 f! k. h% I+ ?; \
~]$ ssh-copy-id -i cephadmin@CEPH03
& Z* F) i) u7 p1 r, m6)配置ceph-deploy的仓库地址(使用root用户)
* h# Z0 C+ \9 O( C$ B, y8 ]; q~]# cat << EOF > /etc/yum.repos.d/ceph.repo0 |- W+ x) Q$ t& w2 n  ]
[ceph-noarch]- P2 `2 U$ f% j5 V8 H# Y: O: E: K! z4 \
name=Ceph noarch packages
# q9 H; ]2 ?% t" c" lbaseurl=https://mirrors.aliyun.com/ceph/rpm-15.2.4/el7/noarch// f1 @! e3 ]1 |6 h8 _
enabled=1
# B; f2 g4 p- X) mgpgcheck=16 h$ y" O. ?8 Z# `
type=rpm-md2 @5 E, ~( _: a, }. f1 Z0 V
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc: d  y2 w9 h+ t# ], j$ [, k, P+ M
EOF
; T2 N5 n( ^0 G3 {) j% v6 i(2)使用ceph-deploy 部署集群(在其中一台集群节点上操作即可)) D2 [! |- b+ I+ C. p. s5 P' j
   1)安装ceph-deploy
) L1 v3 n$ o6 @0 z1 ?) e~]$ sudo yum install -y  ceph-deploy
3 d% h7 p+ `9 s& {" H5 K~]$ mkdir ceph-cluster) j3 N+ D& M8 [, N) K8 v# U$ E4 A
~]$ cd ceph-cluster/
4 q6 a+ L4 F3 F6 Q& n* X" y& k0 |   2)部署节点
1 `( t% u1 V! m% a" M) c) a& L: P: cceph-cluster]$ ceph-deploy  new CEPH01 CEPH02 CEPH034 a) k) c' d1 Z4 l
Traceback (most recent call last):
2 a  s3 k$ J1 Q  File "/bin/ceph-deploy", line 18, in <module>/ T7 U7 B3 H; ?/ W2 C* ], J" e
    from ceph_deploy.cli import main
" L: s& M( l5 ]  ~4 u# 如果报上述错误,则需要安装python-setuptools8 ~3 t: T' f6 W5 L/ V
ceph-cluster]$ sudo yum install -y python-setuptools$ i% ]5 r% j3 W) J
# 重新部署节点9 Y% T2 O5 s3 E/ n: X$ p" y. ^
ceph-cluster]$ ceph-deploy new CEPH01 CEPH02 CEPH03
) F7 u6 r) F+ O  ~3 \' N/ T' o4 k# 上述命令执行成功后会生成以下文件
9 v( n8 N2 g! z# g/ uceph-cluster]$ ls
8 g$ ], i6 f4 p: \- U3 rceph.conf  ceph-deploy-ceph.log  ceph.mon.keyring
) w( n) ]6 M5 y) V' q! n   3)编辑配置文件# {2 y! @- c7 h3 p3 }9 w1 D$ m* e
      在配置文件中添加与网络相关的配置,因为此处只有一个网络,所以public network和cluster network配置一样。
0 W1 R" J( e, o4 N, p. U6 bceph-cluster]$ cat ceph.conf
9 g* H/ X! O$ n  ^% x' M4 `/ n......4 u: I* M9 L  y6 M
public network = 192.168.16.0/24+ y. L* M0 O3 b4 {
cluster network = 192.168.16.0/240 F7 [- u2 q, c! _8 y0 H
4)在各节点上安装部署ceph, _% e( g' a: |0 U
# 部署节点! b" S% l, V0 O$ b
ceph-cluster]$ ceph-deploy install --release jewel --repo-url https://mirrors.aliyun.com/ceph/rpm-15.2.4/el7/ --gpg-url https://mirrors.aliyun.com/ceph/keys/release.asc CEPH01 CEPH02 CEPH03
( V* w, ?5 F/ t$ h# 配置初始 monitor(s)、并收集所有密钥
; U' ^2 s7 D( Zceph-cluster]$ ceph-deploy mon create-initial
6 q1 B+ {8 |) @3 k0 z9 @9 dceph-cluster]$ ls -l *.keyring
3 \" v; ?" m" X" p( b-rw------- 1 cephadmin cephadmin 113 Jul 31 10:25 ceph.bootstrap-mds.keyring; ^, z# U. O& t9 `+ {, \) B
-rw------- 1 cephadmin cephadmin 113 Jul 31 10:25 ceph.bootstrap-mgr.keyring5 r9 E! t6 j0 R( ^
-rw------- 1 cephadmin cephadmin 113 Jul 31 10:25 ceph.bootstrap-osd.keyring/ K* q3 j) Q* X% k* e9 J
-rw------- 1 cephadmin cephadmin 113 Jul 31 10:25 ceph.bootstrap-rgw.keyring7 V( d8 O6 p! x6 k/ u% t: ]
-rw------- 1 cephadmin cephadmin 151 Jul 31 10:25 ceph.client.admin.keyring
# l% _# A0 |3 k-rw------- 1 cephadmin cephadmin  73 Jul 29 09:05 ceph.mon.keyring
  n  l% {5 C2 o/ Z# 把配置信息拷贝至各节点: |4 j& [! `. ?4 [' v
ceph-cluster]$ ceph-deploy admin CEPH01 CEPH02 CEPH03
) x& @* ]1 h" M0 P5)配置osd
5 v5 O' V6 w- U3 R2 y7 {3 _]$ ceph-deploy disk zap CEPH01 /dev/sdb
$ y. ?2 g% J' y2 C]$ ceph-deploy osd create CEPH01 --data /dev/sdb
9 m: M" a1 B$ F8 c]$ ceph-deploy disk zap CEPH01 /dev/sdc
9 d# V8 b% _0 s/ B, G0 d+ `]$ ceph-deploy osd create CEPH01 --data /dev/sdc
# E7 A( j7 T% Z$ h# y9 K- H]$ ceph-deploy disk zap CEPH02 /dev/sdb
: f2 x( b) ?; U* q( G]$ ceph-deploy osd create CEPH02 --data /dev/sdb- k# n6 E, E- ]( \
]$ ceph-deploy disk zap CEPH02 /dev/sdc9 `6 K$ Q0 a! [3 l
]$ ceph-deploy osd create CEPH02 --data /dev/sdc
0 \& u& n* {$ c0 O6 w  j]$ ceph-deploy disk zap CEPH03 /dev/sdb& N7 V2 X! j+ z! X  o4 L  r
]$ ceph-deploy osd create CEPH03 --data /dev/sdb+ D& j1 Z' E( `# s
]$ ceph-deploy disk zap CEPH03 /dev/sdc" r' o- T% ?( u6 B2 W  u* N- N
]$ ceph-deploy osd create CEPH03 --data /dev/sdc
/ |: c; K; v) ~]$ ceph-deploy disk zap CEPH03 /dev/sdd9 o" c- W! L( H) q4 a
]$ ceph-deploy osd create CEPH03 --data /dev/sdd* w9 V; c: \, h1 a$ r
! G6 f& u. t) L  X6 _+ T) [  L
7 r) h3 [% \+ W& J6 P" A; {
三、CEPH块存储
& @- V& D! E( R4 V% L1、安装ceph块存储客户端# _0 Z0 ~! N1 n& o$ d
      Ceph块设备,也称为RADOS块设备,为客户机提供可靠的、分布式的和高性能的块存储磁盘。RADOS块设备利用 librbd库并以顺序的形式在Ceph集群中的多个osd上存储数据块。RBD是由Ceph的RADOS层支持的,因此每个块设备 都分布在多个Ceph节点上,提供了高性能和优异的可靠性。RBD有Linux内核的本地支持,这意味着RBD驱动程序从 过去几年就与Linux内核集成得很好。除了可靠性和性能之外,RBD还提供了企业特性,例如完整和增量快照、瘦配 置、写时复制克隆、动态调整大小等等。RBD还支持内存缓存,这大大提高了其性能。Ceph RBD支持已经添加到Linux主线内核中,从2.6.34和以后的版本开始。
$ x' b* ~0 E$ N0 H+ a2 x# 为ceph块客户端创建认证用户名和秘钥7 M( R( F5 c! N% |  J& O4 v
ceph-cluster]$ ceph auth get-or-create client.rbd mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=rbd'|tee ./ceph.client.rbd.keyring
4 A& K" {" a) ~4 Z/ ?" V[client.rbd]
% y- e! h7 e: U: A# Hkey = AQAJ3yRfQy4AMxAA4dhmN/68/C+I6dPdGSDTew==$ I7 L/ [. `' g0 B7 j% Y
# 把配置文件和秘钥文件拷贝至客户端( }& _1 W" U2 Y+ S; J" A$ z
ceph-cluster]$ scp ./ceph.client.rbd.keyring /etc/ceph/ceph.conf root@192.168.16.101:/etc/ceph/6 u. b0 ]- ^3 h4 ?7 I
# 将yum仓库文件拷贝至客户端
& E5 C3 k3 {' ~( _6 f4 j]$ scp /etc/yum.repos.d/ceph.repo root@192.168.16.101:/etc/yum.repos.d/
0 L0 x/ z5 j% ?* G2 B3 _# 安装客户端(客户端操作)
; {& `$ u$ ?) _* T" k~]# yum -y install epel-release
9 X% n% r! l  j; ?6 \1 A~]# yum -y install ceph5 }2 D+ G6 X. p
# 查看对象存储( H' P, g2 M% u% }
~]# ceph -s --name client.rbd
7 A, g( ]( _5 N7 \8 j: ^  cluster:
  f. w% d9 R+ g: p' R2 R$ O    id:     6bec7eb7-3d58-47b6-93d5-452916971002
6 l& h6 j) h  i' W$ d$ X/ [    health: HEALTH_WARN0 ^6 y  d/ V7 o
            Module 'restful' has failed dependency: No module named 'pecan'9 m$ }" o( l% V/ E
% G/ c! m5 C9 D. T
  services:  N3 b& e* d3 t
    mon: 3 daemons, quorum CEPH01,CEPH02,CEPH03 (age 14m)% L* v, h* `$ L7 @+ u
    mgr: CEPH01(active, since 8h), standbys: CEPH02, CEPH038 Z" P3 O2 z+ I
    osd: 3 osds: 3 up (since 17m), 3 in (since 17m)( h( x  Y& b" w$ N% N+ A

1 {, g/ Y- h$ f$ g  e  data:
1 P6 y3 V5 _% p# ?) M# r    pools:   1 pools, 1 pgs$ V; h# A+ R8 p9 m, \
    objects: 0 objects, 0 B
& e1 ^8 F1 w6 I" l. r9 K8 G    usage:   3.0 GiB used, 27 GiB / 30 GiB avail
: V6 o% \. o- u/ @- g; H+ L9 H    pgs:     1 active+clean: t0 T# e# K1 Q% c
2、为客户端创建块设备
' x9 h* s) F) R# 查看集群存储池(ceph集群上操作)4 ^7 a5 I  V0 ]/ d$ d/ K+ z- G4 X
]$ # ceph osd lspools
1 i2 a& i! C; i8 z& J+ q5 d6 d1 device_health_metrics
5 F4 x. d9 A, D, l8 a% D# 创建存储池- s1 J3 N& l$ F# e
]$ ceph osd pool create rbd 128
: E- ~& {3 b# s  T% Cpool 'rbd' created
( h7 J- R: t1 [' `* J0 v# 查看存储池里面pg和pgp大小
: z" I2 p/ m4 n7 l6 V" {]$ ceph osd pool get rbd pg_num  X' h! w( Y7 Z8 H2 y
pg_num: 128" D8 x$ a. E/ S
]$ ceph osd pool get rbd pgp_num
! ^; V7 |+ Z( `pgp_num: 128
1 |; @  G% q' X) s/ M8 R      50 为 place group 数量(即pg_num),pg_num 取值是强制性的,因为不能自动计算。下面是几个常用的值(官方文档地址:https://ceph.com/pgcalc/):& _; G' M8 ~9 h5 L
      1)少于 5 个 OSD 时可把 pg_num 设置为 128; W8 R$ v$ ~6 t2 [4 p/ K3 l
      2)OSD 数量在 5 到 10 个时,可把 pg_num 设置为 512
) H( p6 q2 i5 s4 A) x# M/ C9 I     3)OSD 数量在 10 到 50 个时,可把 pg_num 设置为 4096: D5 V) V0 ^" N; h
     4)OSD 数量大于 50 时,你得理解权衡方法、以及如何自己计算 pg_num 取值
8 f7 ?, h( C8 m; C. W- m$ s# 为客户端创建块设备(在客户端操作)9 G' c. H9 b" ]# B$ E
~]# rbd create rbd1 --size 10240 --name client.rbd
# n  G0 X# A2 g; ^/ z# 查看创建的块设备5 l+ b1 g7 U- x! z" J
~]# rbd ls --name client.rbd
/ H( Q& t0 X4 p, R3 |  z. ~0 D! Jrbd1- R+ N1 w- a: n0 C7 G3 W
~]# rbd ls -p rbd --name client.rbd
, y3 f: s4 ]0 r0 l! A. u5 brbd1
) O6 p( m5 I$ m/ D( ^) Z# T~]# rbd list --name client.rbd
2 B$ }6 O$ ?, Wrbd1# O9 k! _- z/ j; d3 q7 c8 I3 q
~]# rbd --image rbd1 info --name client.rbd
4 T$ x0 F2 T9 M0 K$ J1 ~  drbd image 'rbd1':
. D7 ^* B% o# V: }size 10 GiB in 2560 objects8 C$ s* l  L% Y
order 22 (4 MiB objects)5 S8 P: I  {: }0 P: x$ q
snapshot_count: 0" k: e+ u  s% n6 b; h
id: 10f5fac0a87e* V9 R; m  j8 [/ J+ f
block_name_prefix: rbd_data.10f5fac0a87e$ H# h; W7 ^4 I( e
format: 28 {' x. I- G# g2 U! M
features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
3 W' e" e5 T6 J5 y: Y% qop_features:
, R* F- d  w. s4 p. P' a. ^" \flags:2 w, z( w1 d+ [. I7 @! B5 o
create_timestamp: Sat Aug  1 21:06:42 2020
0 i9 \* m4 a1 V& paccess_timestamp: Sat Aug  1 21:06:42 2020
% V3 w" s& ]8 x0 W7 i6 ^+ c6 wmodify_timestamp: Sat Aug  1 21:06:42 20200 F0 O4 _: G2 X" N  N" f* A2 f' O
, \! D9 L0 S; F" Q( i9 P) Q
3、为客户端映射块设备) Y4 x+ l' G% P8 F
      在客户机上使用块设备时需要对象映射,部分对象映射的功能只有在内核4.9中才引入支持,如: 排它锁定支持(exclusive-lock),对象映射支持(object-map),深平(deep-flatten)和快速diff(fast-diff)。所以在映射时先禁用这些功能。禁用方法有三:
$ E$ h: v5 ]' l(1)动态禁用3 M8 R7 \+ d& v6 Z
      rbd feature disable rbd1 exclusive-lock object-map deep-flatten fast-diff --name client.rbd5 z. ^8 v# F1 T1 C
(2)创建RBD镜像时,只启用 分层特性。
7 i8 U! Y! y* P& m0 k      rbd create rbd2 --size 10240 --image-feature layering --name client.rbd
' R0 r* ^6 ]( g2 j* p; L6 _(3)ceph 配置文件中禁用, s" j$ M) [% C" P' U6 l
      rbd_default_features = 1% S2 R* ~8 t7 X& @5 ~
# 没有禁用前映射会报错
3 t) z: |( H: |. e~]# rbd map --image rbd1 --name client.rbd
4 ^$ u* i( W1 y* u+ Yrbd: sysfs write failed  U; {! F. e) \+ z3 o/ N
RBD image feature set mismatch. You can disable features unsupported by the kernel with "rbd feature disable rbd1 object-map fast-diff deep-flatten".
) K7 u# U: S# x( yIn some cases useful info is found in syslog - try "dmesg | tail".% z& r, E3 l$ `' \/ \/ a. F
rbd: map failed: (6) No such device or address
( V" l7 N5 x# P+ Y# 动态禁用后再次映射,需要去cluster节点上操作(ceph集群上操作). T- l) s# X5 S9 _5 P7 K" a1 M% ^
~]$ rbd feature disable rbd1 exclusive-lock object-map deep-flatten fast-diff0 q5 D, C7 i5 |7 Y! Y0 g( g
# 再次在客户端上映射
/ c% q( ~2 z- ]~]# rbd map --image rbd1 --name client.rbd
0 t. D/ d' m% \8 V8 Y/ C/dev/rbd06 R9 Z' T9 ~' I( ]$ A' H3 S* V
# 查看映射的块设备
4 a5 y3 w2 \4 B6 z6 v5 ~$ T% ~~]# rbd showmapped --name client.rbd
& g" |; o2 N9 p0 f" Cid  pool  namespace  image  snap  device   
* N0 P; A+ e# {* _: ]0   rbd              rbd1   -     /dev/rbd0
# P& ^1 O/ S$ G7 i+ H; \       映射完成之后就可以挂载并使用。
* o( N2 H: o* |( b. _, d# 查看
% n0 g7 d" c' z~]# lsblk7 K/ F9 |$ `- w( R: w3 U# E6 A' ~
......( _/ j, |2 K1 C- A# z9 I3 o+ A
rbd0            252:0    0   10G  0 disk1 r" [9 ~# Q, I2 @! U5 e/ ?
# 格式化并创建挂载点挂载
9 X7 _* W, t$ J  e. g$ F~]# mkfs.xfs /dev/rbd0& Z. [9 N0 [) i, `4 B) z: ~& L
~]# mkdir /mnt/test-rbd
, l  w6 A$ {4 e! R0 @" c$ O4 V& G~]# mount /dev/rbd0 /mnt/test-rbd/4 s4 F( Y4 E# N# l. ^9 @1 I
~]# df -h
, _) s; o6 G2 h& M......
! v$ a1 b5 i- Z/ j' y/dev/rbd0                 10G   33M   10G   1% /mnt/test-rbd' i' L* ?- D* y+ K  _1 j$ D
0 |6 ^# P6 w6 D; _, S) [5 m0 x: i# k8 u
* }% v6 F# V8 ]6 j7 O/ X! [
四、CEPH对象存储
$ C3 x9 V- ]2 [1、部署Ceph 对象存储
6 Y  g# u# U0 L  g      作为文件系统的磁盘,操作系统是不能直接访问对象存储,它只能通过应用程序级别的API访问。Ceph是一种分布式对象存储系统,通过Ceph对象网关提供对象存储接口,也称为RADOS网关(RGW)接口,构建在Ceph RADOS层之上。RGW使用librgw (RADOS Gateway Library)和librados,允许应用程序与Ceph对象存储建立连接。RGW为应用程序提供了一个RESTful S3 / swift兼容的API接口,用于在Ceph集群中以对象的形式存储数据。Ceph还支持多租户对象存储,可以通过RESTful API访问。此外,RGW还支持Ceph管理API,可以使用本机API调用来管理Ceph存储集群。Ceph对象存储还具有多站点功能,即为灾难恢复提供解决方案。3 B1 E) Z. o5 p+ V
: E3 E. l' q, W
, S) a' v9 G! I/ v4 A' O6 N
# 安装ceph-radosgw,默认在执行ceph-deploy时已经安装(以下在ceph集群上操作)4 L; u8 H9 v$ b
]$ sudo yum -y install ceph-radosgw& s) b/ c: F2 _1 a  k# G: Q
# 部署rgw
/ Y: G) c+ Q- t2 l2 @  E6 Cceph-cluster]$ ceph-deploy rgw create CEPH01 CEPH02 CEPH03. `2 n0 O) n6 ~0 e/ l" B1 I
# 下载创建池脚本) Q/ J5 O  g2 u$ V) C* j
ceph-cluster]$ curl -o pool https://raw.githubusercontent.com/aishangwei/ceph-demo/master/ceph-deploy/rgw/pool
5 z# H5 f, A* l4 qceph-cluster]$ curl -o create_pool.sh t https://raw.githubusercontent.com/aishangwei/ceph-demo/master/ceph-deploy/rgw/create_pool.sh
3 w# V# k! u5 |' Q& a5 j& w, G# 根据自己需求修改相应参数
  Y2 L- r6 C5 \9 Hceph-cluster]$ cat create_pool.sh
4 F- r0 ^' z+ J) \/ k#!/bin/bash( A/ P% S% Y1 u4 _* U$ t
PG_NUM=10
7 o+ C' ?; G; ]+ @& o: |2 QPGP_NUM=10
+ n! }) @" x. d2 |. CSIZE=39 K- g4 D5 R- E- k
for i in `cat /home/cephadmin/ceph-cluster/pool`5 S& z; `; ?& K$ z, r
        do
* M! P; w; I# x* E        ceph osd pool create $i $PG_NUM
7 M- u$ Y# h$ f  ~/ L1 `( @1 {        ceph osd pool set $i size $SIZE6 a' U# O+ D. V) k
        done
0 _8 H" o( n& `. ~8 jfor i in `cat /home/cephadmin/ceph-cluster/pool`
, Q/ p' G4 R  i  T# i" @        do
* z2 h, F  y" K- C: X, d* Y        ceph osd pool set $i pgp_num $PGP_NUM% q* e5 j- s3 r- w4 d, G
        done
+ n( `+ O3 P5 u- h" ^  o6 f# 创建池6 F5 N8 ?5 @  u* A6 [
ceph-cluster]$ create_pool.sh* d8 r2 r2 s# h  h2 u6 V! Q
# 测试是否能够访问池
! P" |! u0 R0 c# w6 F* A0 N: Z~]# ceph -s -k /var/lib/ceph/radosgw/ceph-rgw.CEPH01/keyring --name client.rgw.CEPH014 a6 B3 V8 l/ B3 _
  cluster:$ t( @6 [- f; X8 B- Q5 E4 s- b
    id:     6bec7eb7-3d58-47b6-93d5-452916971002
* F1 d, ?+ ~, O7 u) Z    health: HEALTH_WARN. A- L* }1 s% j8 m
            Module 'restful' has failed dependency: No module named 'pecan'
4 Y7 d+ p; R. K; s2 U            1 pool(s) do not have an application enabled& C! h0 Z! q$ A; J4 u
            6 pool(s) have non-power-of-two pg_num! p3 n3 W) n; E
            5 pools have pg_num > pgp_num! N' M' S1 x8 L1 m4 A, Y
  services:
+ j4 z4 x1 h& Q# K4 h& D$ h    mon: 3 daemons, quorum CEPH01,CEPH02,CEPH03 (age 69m)- x7 S% M2 O3 b/ d
    mgr: CEPH01(active, since 67m), standbys: CEPH03, CEPH02: K5 q4 ?2 w/ A0 O: T4 D  z' s4 p
    osd: 3 osds: 3 up (since 47h), 3 in (since 2d)
1 i! s% |. F1 ^! U: c- B* o/ j+ K    rgw: 3 daemons active (CEPH01, CEPH02, CEPH03)
2 e$ J) t6 G& g8 J  task status:7 U, o) g: Z* x0 {6 ^( Q( f
  data:7 [5 p' S3 h+ M* u4 r8 [3 \: `, r4 H
    pools:   11 pools, 245 pgs( ~) e# n7 N" m9 m" y5 K
    objects: 211 objects, 14 MiB
) F% f( K/ K6 z& l. E& |1 c    usage:   3.1 GiB used, 27 GiB / 30 GiB avail2 H' W& o! W2 u0 `" J
    pgs:     245 active+clean/ E& A; i* h1 m9 F! t" _
2、使用 S3 API 访问 Ceph 对象存储& z/ a0 V. k* e, O/ `6 i
# 创建用户,并记录access_key 和 secret_key (在ceph集群上操作)
  g1 Y* G$ }3 x% B+ G) []$ radosgw-admin user create --uid=radosgw --display-name="radosgw"
' I* u* ^1 V# G6 ]9 O# 安装客户端(客户端操作)
7 r% G8 R. O/ x. l6 X1 R: [~]# yum install yum install s3cmd -y) \) Y! S* M' s" g4 h/ s/ f( F( |
# 生成配置(客户端操作)
) j* x& k  `* E) d~]# s3cmd --configure
7 u" a% P, c: N3 _1 A6 k; g# 修改配置(客户端操作)
2 H# N2 R/ @* B6 O~]# vi /root/.s3cfg
6 a" ]2 t1 ^& I3 p$ X" obucket_location = US& K4 w0 ~4 X$ N. i& M
host_base = CEPH01.dayi123.com:7480
; z, q" h' i' whost_bucket = %(bucket).CEPH01.dayi123.com:74809 x) M# A) }- T+ j0 H. ]2 H& i
# 添加hosts解析(客户端操作)( p: ^. P& e1 O
~]# echo "192.168.16.171 CEPH01 CEPH01.dayi123.com" >>/etc/hosts* H* v7 p/ \1 \3 Q+ H
# 创建桶(客户端操作)1 Q  h! q9 K1 v+ ~" s; a
~]# s3cmd mb s3://dayi1235 Q! N3 T( K) Z( r% f+ b0 b8 y8 W
ERROR: S3 error: 416 (InvalidRange)! M( W% Q6 P, i, q: C/ u) U
      如果创建桶时报如上错误,则需要将其他对象存储后台驻留程序(OSD)添加到群集或将“mon_max_pg_per_osd”的默认值增加到300以上。+ w4 f+ q" v) k+ K/ ]
# 修改配置文件
, e! L' R- G: @- z" ]2 rmy-cluster]$ vim ceph.conf/ P9 |' O3 s; [, M6 y, z
......
9 D( x+ l+ W; J0 u% Z) U* G# R[mon]
$ l1 R0 y  ]2 _mon allow pool delete = true
$ d, N+ h% U$ L/ |3 v2 {mon_max_pg_per_osd = 3007 }7 e- W  `" p  _
# 拷贝配置文件至各节点
8 p  [* I1 C) V* w# dmy-cluster]$ ceph-deploy --overwrite-conf config push CEPH01 CEPH02 CEPH03
* X# F+ g( a; d# q. g  t# 重新创建桶并将文件放入桶中. G2 p5 c2 k/ b; j
~]# s3cmd mb s3://testbucket
* }  ]; [4 w3 o8 Z; WBucket 's3://testbucket/' created
: c! [5 m; l$ d+ y. W) z8 s~]# s3cmd put /etc/yum.repos.d/ceph.repo s3://testbucket$ O& Z, m6 V8 w2 f
upload: '/etc/yum.repos.d/ceph.repo' -> 's3://testbucket/ceph.repo'  [1 of 1]
. J4 ~8 y5 K/ c2 t1 R! E% } 674 of 674   100% in    0s    34.19 KB/s
+ B% a$ h: B! H 674 of 674   100% in   12s    52.87 B/s  done6 C1 M' }. ~3 h( N& {/ x
# 查看桶中文件7 y0 X2 c. l6 |
~]# s3cmd ls s3://testbucket0 t4 y# t' }8 q, T+ M( t$ J
2020-08-04 13:26          674  s3://testbucket/ceph.repo
- r/ j' z0 ?! ]3、使用 Swift API 访问 对象存储% d6 T; B4 C: a: e- t7 M
# 在ceph集群上创建 swift api 子用户并记住secret_key7 o% L3 U' A$ e3 Z7 }8 Q
ceph-cluster]$ radosgw-admin subuser create --uid=radosgw --subuser=radosgw:swift --access=full, \# e* I2 H. J8 h) M+ N
# 安装swift api客户端软件(客户端操作)
& V$ g* R+ n0 K% y- G~]# pip install --upgrade python-swiftclient( ]% T( i8 z4 {
# 通过swift创建桶
6 ~' w5 t7 R4 O( r1 Z9 i~]# swift -A http://CEPH01.dayi123.com:7480/auth/1.0 -U radosgw:swift -K AKYbLdvWfccaVwto49sCT5nFlwo0QnYArQ8TIlBZ post testbucket2% k1 U% X  A4 S
# 查看桶& A: k/ d4 ^3 i' h9 ~, _2 b
~]# swift -A http://CEPH01.dayi123.com:7480/auth/1.0 -U radosgw:swift -K AKYbLdvWfccaVwto49sCT5nFlwo0QnYArQ8TIlBZ list
; D8 x- I& q/ j9 l8 }* c1 a) Otestbucket
4 n7 p- P3 ?4 Mtestbucket2* o2 [2 c5 c) N5 }, W: c: E
% @2 ?8 k% Y; B3 q; G

$ W2 U; K4 @9 Y5 n五、CEPH文件存储7 F. C! j7 X& k" d% q3 o5 D) R+ u
1、安装
( ^# l3 J0 J1 `4 u      Ceph文件系统提供了任何大小的符合posix标准的分布式文件系统,它使用Ceph RADOS存储数据。要实现Ceph文件系统,需要一个正在运行的Ceph存储集群和至少一个Ceph元数据服务器(MDS)来管理其元数据并使其与数据分离,这有助于降低复杂性和提高可靠性。$ u% v. f9 Z( \1 n2 M: ]
: p$ t  _4 m5 C# K6 t0 `
; G) x, B# a# e  t* C# b# M( z& L
      只有Ceph FS才需要Ceph MDS;块和对象存储不需要MDS服务。libcephfs库在支持其多个客户机实现方面发挥着重要作用。它具有本机Linux内核驱动程序支持,因此客户机可以使用本机文件系统安装,例如,使用mount命令。它与SAMBA紧密集成,支持CIFS和SMB。Ceph FS使用cephfuse模块扩展到用户空间(FUSE)中的文件系统。它还允许使用libcephfs库与RADOS集群进行直接的应用程序交互。$ _8 I; X* F4 A9 e
# 安装cephfs
5 b6 Q  q6 z- b3 \7 y7 t: @ceph-cluster]$ ceph-deploy mds create CEPH03: b/ a% r" y* l2 E% N$ O
# 创建存储池
& [# y$ C0 m0 i/ tceph-cluster]$ ceph osd pool create cephfs_data 64
& p- ?/ W$ I% B$ h: z7 Ipool 'cephfs_data' created
' c7 C, e1 U/ L" r. N8 rceph-cluster]$ ceph osd pool create cephfs_metadata 32  f( r4 }+ s3 A6 Q# e
pool 'cephfs_metadata' created
' w  `5 q( Y/ k# v( i. b0 `# 将存储池添加为fs存储
( n/ u- G) x6 A, Y: l2 hceph-cluster]$ ceph fs new cephfs cephfs_metadata cephfs_data
9 G& @3 K$ R! G( y2 i  |! cnew fs with metadata pool 23 and data pool 227 R! H7 b& k( M5 s# |' b
# 启动mds
- H5 t" u+ r  S5 }  [+ _2 dceph-cluster]$ ceph mds stat
0 `1 j$ A& k; b: Ucephfs:1 {0=CEPH03=up:active}' c- b7 Q! G$ B; ~. D
# 查看存储池
3 x7 J! T/ @3 d8 k9 p/ K3 \ceph-cluster]$ ceph osd pool ls- D, H# H0 v2 x7 j$ f
# 查看对象存储存储池
1 M  |6 l  {9 l- [/ N# n1 \ceph-cluster]$ ceph fs ls
! p' h; x" w4 ~& e7 T1 S9 Cname: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
& X; L6 B4 O8 x9 R# L3 W0 o# 为文件存储创建用户及认证秘钥
/ o7 ], x  m1 W. N3 P8 C3 Yceph-cluster]$ ceph auth get-or-create client.cephfs mon 'allow r' mds 'allow r, allow rw path=/' osd 'allow rw pool=cephfs_data' -o ceph.client.cephfs.keyring
- _) C1 v9 ]2 R$ n- j& {! N' N* ^% z# 将秘钥拷贝至客户端
4 r# M6 W( [$ ]/ M, ~# M ceph-cluster]$ scp ceph.client.cephfs.keyring root@192.168.16.101:/etc/ceph/
9 ~. n! C! |. O! i* x3 O2、挂载* H/ A$ ]9 I8 L8 m
      在Linux内核2.6.34和以后的版本中添加了对Ceph的本机支持,可通过通过内核驱动和FUSE客户端挂载Ceph FS。
: s$ n2 x/ V$ i5 e# z8 T  C# 在ceph集群上执性获取key
0 {" v! j; {; U: g4 }ceph-cluster]$ ceph auth get-key client.cephfs: P- c1 b; D, G+ ^$ g
AQDduCpfZ9fKKhAA7oGPEoQMCDgQ62TDluCiYg==
. B8 Q5 k' ^9 E' L) x* j6 r4 x# 在客户端挂载,先创建挂载目录,在挂载5 d# T  g" g1 j: t
~]# mkdir /mnt/cephfs; k6 d; t8 K5 s( _- D5 I- Y- x
~]# mount -t ceph CEPH03:6789:/ /mnt/cephfs -o name=cephfs,secret=AQDduCpfZ9fKKhAA7oGPEoQMCDgQ62TDluCiYg==+ H% W+ |- R" D' o5 |
~]# df -h /mnt/cephfs/4 B$ \. B( X- |; ~1 U
Filesystem             Size  Used Avail Use% Mounted on' u$ W  c) w( q1 s& a
192.168.16.173:6789:/   14G     0   14G   0% /mnt/cephfs3 c9 c) J  @# H2 R' ~8 Y
# 也可将key保存至文件中,挂载时制定key文件
8 Z7 h' w2 E! s8 C~]# echo AQDduCpfZ9fKKhAA7oGPEoQMCDgQ62TDluCiYg== >/etc/ceph/cephfskey
& o/ c9 |3 \% U9 M& L; f* f~]# umount /mnt/cephfs/
" U6 @  {# X1 H5 x5 n~]# mount -t ceph CEPH03:6789:/ /mnt/cephfs -o name=cephfs,secretfile=/etc/ceph/cephfskey: y/ G: m. q+ V
~]# df -h /mnt/cephfs
$ }+ ^4 w8 O, y1 |7 F6 V6 RFilesystem             Size  Used Avail Use% Mounted on
; \1 t+ }5 j. y2 K2 w3 j192.168.16.173:6789:/   14G     0   14G   0% /mnt/cephfs
5 Z0 @3 }5 [  L# 也可将配置写入fstab中,开机自动挂载,_netdev参数为网络启动后挂载
$ u  C" K" B5 D~]# echo "CEPH03:6789:/ /mnt/cephfs ceph name=cephfs,secretfile=/etc/ceph/cephfskey,_netdev,noatime 0 0" >>/etc/fstab
! X6 B  c+ R/ v: i4 |" ]' V! Z# 验证挂载
2 A; J' y/ t# G: r~]# umount /mnt/cephfs  o: _  \$ v4 w' F- [9 y( \
~]# mount /mnt/cephfs
! y# f# b3 v) r! L; Q6 P& K* e% Q. v~]# df -h /mnt/cephfs/4 `8 h' m, c0 [6 A! K1 @
Filesystem             Size  Used Avail Use% Mounted on
+ k* S( |$ i4 ?192.168.16.173:6789:/   14G     0   14G   0% /mnt/cephfs/ C+ H3 J3 S% T; _* \

& |6 w" E6 H; I( ?5 E+ {
& k2 j& \  @: k$ J/ b; J
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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