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

ceph官方文档地址:https://docs.ceph.com/docs/master/start/intro/

Github地址:https://github.com/ceph/ceph

一、ceph提供的存储

1、块存储

      块存储主要是将裸磁盘空间整个映射给主机使用的,或在磁盘阵列上划分逻辑卷映射给给主机使用。

2、文件存储

      文件存储主要是为了克服块存储中文件服务共享的问题,所以有了文件存储。文件存储服务如nfs、ftp服务等。

3、对象存储

      对象存储介于块存储和文件存储之间,对象存储克服了块存储读写快,不利于共享,文件存储利于共享,读写慢的缺点。 对象存储的核心是将数据通路(数据读或写)和控制通路(元数据)分离,并且基于对象存储设备。每个对象存储设备具有一定的智能,能够自动管理其上的数据分布。对象存储结构组成部分包括对象、对象存储设备、元数据服务器、对象存储系统的客户端。

二、ceph介绍

      Ceph是加州大学Santa Cruz分校的Sage Weil(DreamHost的联合创始人)专为博士论文设计的新一代自由软件分布式文件系统。Ceph的主要目标是设计成基于POSIX的没有单点故障的分布式文件系统,使数据能容错和无缝的复制。2010年3 月,Linus Torvalds将Ceph client合并到内 核2.6.34中。

1、ceph的主要组件

      一个Ceph存储群集至少需要一个Ceph监视器,Ceph管理器和Ceph OSD(对象存储守护程序)。运行Ceph文件系统客户端时,也需要Ceph Metadata Server。

(1)Ceph monitors(MON):Ceph Monitor作为集群中的控制中心,拥有整个集群的状态信息,各个组件如OSDs将自己的状态信息报告给Ceph Monitor,Ceph Monitor肩负着整个集群协调工作;同时Ceph Monitor还负责将集群的指挥工作,将集群的状态同步给客户端,客户端根据Ceph Monitor发送的集群状态信息可以获取到集群的状态,当集群状态有变化如OSD增加或故障时,Ceph Monitor会负责更新集群状态并下发给客户端。一般需要部署2n+1个Ceph Monitor节点才能实现冗余和高可用性

(2)Ceph manager: Ceph manager是在Kraken版本中引入的,它与monitor守护进程一起运行, 为外部监视和管理系统提供额外的监视和接口。负责跟踪运行时指标和Ceph集群的当前状态,包括存储利用率,当前性能指标和系统负载。Ceph Manager守护程序还托管基于python的模块,以管理和公开Ceph集群信息,包括基于Web的Ceph仪表板和 REST API。高可用性通常至少需要两个管理器

(3)Ceph对象存储设备(OSD):集群中通常有多个OSD组成,OSD即Object Storage Daemon,负责Ceph集群中真正数据存储的功能,也就是我们的数据最终都会写入到OSD中。

(4)MDS:Ceph元数据服务器,代表Ceph文件系统存储元数据。MDS跟踪文件层次结构,为Ceph FS文件系统存储元数据

2、ceph的其他组件

(1)RADOS: RADOS对象存储负责存储这些对象,而不管它们的数据类型如何。RADOS层确保数据始终保持一致。 为此,它执行数据复制、故障检测和恢复,以及跨集群节点的数据迁移和再平衡。

(2) Librados: librados库是一种访问RADOS的方便方法,支持PHP、Ruby、Java、Python、C和c++编程语言。它为 Ceph存储集群(RADOS)提供了本机接口,并为其他服务提供了基础,如RBD、RGW和CephFS,这些服务构建 在librados之上。librados还支持从应用程序直接访问RADOS,没有HTTP开销。

(3) RBD:提供持久块存储,它是瘦配置的、可调整大小的,并在多个osd上存储数据条带。RBD服务被构建为 一个在librados之上的本机接口。

(4)RGW:RGW提供对象存储服务。它使用librgw (Rados网关库)和librados,允许应用程序与Ceph对象存储建立 连接。RGW提供了与Amazon S3和OpenStack Swift兼容的RESTful api接口。

(5) CephFS: Ceph文件系统提供了一个符合posix标准的文件系统,它使用Ceph存储集群在文件系统上存储用户数 据。与RBD和RGW一样,CephFS服务也作为librados的本机接口实现。

3、ceph中数据的读写

       Ceph中一切皆对象,不管是RBD块存储接口,RGW对象存储接口还是文件存储CephFS接口,其存储如到Ceph中的数据均可以看作是一个对象,一个文件需要切割为多个对象(object),然后将object存储到OSD中。Ceph 存储集群从 Ceph 客户端接收数据不管是来自 Ceph 块设备、 Ceph 对象存储、 Ceph 文件系统、还是基于 librados 的自定义实现并存储为对象。每个对象是文件系统中的一个文件,它们存储在对象存储设备上。由 Ceph OSD 守护进程处理存储设备上的读/写操作。

      object选择对应的OSD存储节点需要依赖于Ceph的智能调度算法CRUSH,通过CRUSH算法将object调度到合适的OSD节点上,不管是客户端还是OSD,均使用CRUSH算法来计算object在集群中OSD的位置信息,同时保障object的副本能落到合适的OSD节点上。

      在大规模集群中,由于crush的调度繁重。因此,Ceph引入了另外一个概念PG,PG是Place Group即放置组,可以简单理解为一个装载object的容器,object将映射到PG中,PG最终会调度到某个具体的OSD上,因此CRUSH由object调度转为PG的调度,而PG的数量是相对固定的,因此集群分布时调度相对没有那么繁重,同时,当某个OSD异常时,CRUSH调度算法只需将其上的PG调度至其他OSD上

二、安装CEPH分布式存储

1、ceph集群的安装方法

(1)通过cephadmin安装部署ceph集群

(2)通过Rook部署和管理在Kubernetes中运行的Ceph集群

(3)通过ceph-deploy快速部署ceph集群

2、通过ceph-deploy快速部署ceph集群

主机名

IP地址

作用

存储盘

CEPH01

192.168.16.171

Ceph-deploy osd mgr rgw

/dev/sdb /dev/sdc

CEPH02

192.168.16.172

Osd rgw

/dev/sdb /dev/sdc

CEPH03

192.168.16.173

Osd rgw mds

/dev/sdb /dev/sdc /dev/sdd

client

192.168.16.181

 

 

(1)安装前准备工作(在ceph集群节点上都需要操作)

1)关闭防火墙和selinux(或配置防火墙策略)

~]# systemctl stop firewalld
~]# systemctl disable firewalld
~]# setenforce 0
~]# sed -i "s#SELINUX=enforcing#SELINUX=disabled#g" /etc/selinux/config

2)配置时间同步

# 安装ntpdata及epel仓库
~]# yum -y install ntpdate 
# 添加时间同步定时任务,如果有内部时间服务器地址,建议配置为内部地址
~]# crontab -l
*/5 * * * * /usr/sbin/ntpdate ntp.aliyun.com >/dev/null 2&>1

3)配置hosts解析

~]# cat >>/etc/hosts<<EOF
192.168.16.171 CEPH01
192.168.16.172 CEPH02
192.168.16.173 CEPH03
EOF

4)添加用户并配置sudo权限

~]# useradd cephadmin
~]# echo "dayi123"| passwd --stdin cephadmin
~]# echo "cephadmin ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephadmin
~]# chmod 0440 /etc/sudoers.d/cephadmin

5)配置cephadmin用户免秘钥登录

~]# su - cephadmin
~]$ ssh-keygen
~]$ ssh-copy-id -i cephadmin@CEPH01
~]$ ssh-copy-id -i cephadmin@CEPH02
~]$ ssh-copy-id -i cephadmin@CEPH03

6)配置ceph-deploy的仓库地址(使用root用户)

~]# cat << EOF > /etc/yum.repos.d/ceph.repo
[ceph-noarch]
name=Ceph noarch packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-15.2.4/el7/noarch/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
EOF

(2)使用ceph-deploy 部署集群(在其中一台集群节点上操作即可)

   1)安装ceph-deploy

~]$ sudo yum install -y  ceph-deploy
~]$ mkdir ceph-cluster
~]$ cd ceph-cluster/

   2)部署节点

ceph-cluster]$ ceph-deploy  new CEPH01 CEPH02 CEPH03
Traceback (most recent call last):
  File "/bin/ceph-deploy", line 18, in <module>
    from ceph_deploy.cli import main
# 如果报上述错误,则需要安装python-setuptools
ceph-cluster]$ sudo yum install -y python-setuptools
# 重新部署节点
ceph-cluster]$ ceph-deploy new CEPH01 CEPH02 CEPH03
# 上述命令执行成功后会生成以下文件
ceph-cluster]$ ls
ceph.conf  ceph-deploy-ceph.log  ceph.mon.keyring

   3)编辑配置文件

      在配置文件中添加与网络相关的配置,因为此处只有一个网络,所以public network和cluster network配置一样。

ceph-cluster]$ cat ceph.conf
......
public network = 192.168.16.0/24
cluster network = 192.168.16.0/24

4)在各节点上安装部署ceph

# 部署节点
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
# 配置初始 monitor(s)、并收集所有密钥
ceph-cluster]$ ceph-deploy mon create-initial
ceph-cluster]$ ls -l *.keyring
-rw------- 1 cephadmin cephadmin 113 Jul 31 10:25 ceph.bootstrap-mds.keyring
-rw------- 1 cephadmin cephadmin 113 Jul 31 10:25 ceph.bootstrap-mgr.keyring
-rw------- 1 cephadmin cephadmin 113 Jul 31 10:25 ceph.bootstrap-osd.keyring
-rw------- 1 cephadmin cephadmin 113 Jul 31 10:25 ceph.bootstrap-rgw.keyring
-rw------- 1 cephadmin cephadmin 151 Jul 31 10:25 ceph.client.admin.keyring
-rw------- 1 cephadmin cephadmin  73 Jul 29 09:05 ceph.mon.keyring
# 把配置信息拷贝至各节点
ceph-cluster]$ ceph-deploy admin CEPH01 CEPH02 CEPH03

5)配置osd

]$ ceph-deploy disk zap CEPH01 /dev/sdb
]$ ceph-deploy osd create CEPH01 --data /dev/sdb
]$ ceph-deploy disk zap CEPH01 /dev/sdc
]$ ceph-deploy osd create CEPH01 --data /dev/sdc
]$ ceph-deploy disk zap CEPH02 /dev/sdb
]$ ceph-deploy osd create CEPH02 --data /dev/sdb
]$ ceph-deploy disk zap CEPH02 /dev/sdc
]$ ceph-deploy osd create CEPH02 --data /dev/sdc
]$ ceph-deploy disk zap CEPH03 /dev/sdb
]$ ceph-deploy osd create CEPH03 --data /dev/sdb
]$ ceph-deploy disk zap CEPH03 /dev/sdc
]$ ceph-deploy osd create CEPH03 --data /dev/sdc
]$ ceph-deploy disk zap CEPH03 /dev/sdd
]$ ceph-deploy osd create CEPH03 --data /dev/sdd

三、CEPH块存储

1、安装ceph块存储客户端

      Ceph块设备,也称为RADOS块设备,为客户机提供可靠的、分布式的和高性能的块存储磁盘。RADOS块设备利用 librbd库并以顺序的形式在Ceph集群中的多个osd上存储数据块。RBD是由Ceph的RADOS层支持的,因此每个块设备 都分布在多个Ceph节点上,提供了高性能和优异的可靠性。RBD有Linux内核的本地支持,这意味着RBD驱动程序从 过去几年就与Linux内核集成得很好。除了可靠性和性能之外,RBD还提供了企业特性,例如完整和增量快照、瘦配 置、写时复制克隆、动态调整大小等等。RBD还支持内存缓存,这大大提高了其性能。Ceph RBD支持已经添加到Linux主线内核中,从2.6.34和以后的版本开始。

# 为ceph块客户端创建认证用户名和秘钥
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
[client.rbd]
key = AQAJ3yRfQy4AMxAA4dhmN/68/C+I6dPdGSDTew==
# 把配置文件和秘钥文件拷贝至客户端
ceph-cluster]$ scp ./ceph.client.rbd.keyring /etc/ceph/ceph.conf root@192.168.16.101:/etc/ceph/
# 将yum仓库文件拷贝至客户端
]$ scp /etc/yum.repos.d/ceph.repo root@192.168.16.101:/etc/yum.repos.d/
# 安装客户端(客户端操作)
~]# yum -y install epel-release
~]# yum -y install ceph
# 查看对象存储
~]# ceph -s --name client.rbd
  cluster:
    id:     6bec7eb7-3d58-47b6-93d5-452916971002
    health: HEALTH_WARN
            Module 'restful' has failed dependency: No module named 'pecan'

  services:
    mon: 3 daemons, quorum CEPH01,CEPH02,CEPH03 (age 14m)
    mgr: CEPH01(active, since 8h), standbys: CEPH02, CEPH03
    osd: 3 osds: 3 up (since 17m), 3 in (since 17m)

  data:
    pools:   1 pools, 1 pgs
    objects: 0 objects, 0 B
    usage:   3.0 GiB used, 27 GiB / 30 GiB avail
    pgs:     1 active+clean

2、为客户端创建块设备

# 查看集群存储池(ceph集群上操作)
]$ # ceph osd lspools
1 device_health_metrics
# 创建存储池
]$ ceph osd pool create rbd 128
pool 'rbd' created
# 查看存储池里面pg和pgp大小
]$ ceph osd pool get rbd pg_num
pg_num: 128
]$ ceph osd pool get rbd pgp_num
pgp_num: 128

      50 为 place group 数量(即pg_num),pg_num 取值是强制性的,因为不能自动计算。下面是几个常用的值(官方文档地址:https://ceph.com/pgcalc/):

      1)少于 5 个 OSD 时可把 pg_num 设置为 128

      2)OSD 数量在 5 到 10 个时,可把 pg_num 设置为 512

     3)OSD 数量在 10 到 50 个时,可把 pg_num 设置为 4096

     4)OSD 数量大于 50 时,你得理解权衡方法、以及如何自己计算 pg_num 取值

# 为客户端创建块设备(在客户端操作)
~]# rbd create rbd1 --size 10240 --name client.rbd
# 查看创建的块设备
~]# rbd ls --name client.rbd
rbd1
~]# rbd ls -p rbd --name client.rbd
rbd1
~]# rbd list --name client.rbd
rbd1
~]# rbd --image rbd1 info --name client.rbd
rbd image 'rbd1':
size 10 GiB in 2560 objects
order 22 (4 MiB objects)
snapshot_count: 0
id: 10f5fac0a87e
block_name_prefix: rbd_data.10f5fac0a87e
format: 2
features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
op_features:
flags:
create_timestamp: Sat Aug  1 21:06:42 2020
access_timestamp: Sat Aug  1 21:06:42 2020
modify_timestamp: Sat Aug  1 21:06:42 2020

 

3、为客户端映射块设备

      在客户机上使用块设备时需要对象映射,部分对象映射的功能只有在内核4.9中才引入支持,如: 排它锁定支持(exclusive-lock),对象映射支持(object-map),深平(deep-flatten)和快速diff(fast-diff)。所以在映射时先禁用这些功能。禁用方法有三:

(1)动态禁用

      rbd feature disable rbd1 exclusive-lock object-map deep-flatten fast-diff --name client.rbd

(2)创建RBD镜像时,只启用 分层特性。

      rbd create rbd2 --size 10240 --image-feature layering --name client.rbd

(3)ceph 配置文件中禁用

      rbd_default_features = 1

# 没有禁用前映射会报错
~]# rbd map --image rbd1 --name client.rbd
rbd: sysfs write failed
RBD image feature set mismatch. You can disable features unsupported by the kernel with "rbd feature disable rbd1 object-map fast-diff deep-flatten".
In some cases useful info is found in syslog - try "dmesg | tail".
rbd: map failed: (6) No such device or address
# 动态禁用后再次映射,需要去cluster节点上操作(ceph集群上操作)
~]$ rbd feature disable rbd1 exclusive-lock object-map deep-flatten fast-diff
# 再次在客户端上映射
~]# rbd map --image rbd1 --name client.rbd
/dev/rbd0
# 查看映射的块设备
~]# rbd showmapped --name client.rbd
id  pool  namespace  image  snap  device   
0   rbd              rbd1   -     /dev/rbd0

       映射完成之后就可以挂载并使用。

# 查看
~]# lsblk
......
rbd0            252:0    0   10G  0 disk
# 格式化并创建挂载点挂载
~]# mkfs.xfs /dev/rbd0
~]# mkdir /mnt/test-rbd
~]# mount /dev/rbd0 /mnt/test-rbd/
~]# df -h
......
/dev/rbd0                 10G   33M   10G   1% /mnt/test-rbd

四、CEPH对象存储

1、部署Ceph 对象存储

      作为文件系统的磁盘,操作系统是不能直接访问对象存储,它只能通过应用程序级别的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对象存储还具有多站点功能,即为灾难恢复提供解决方案。

 

# 安装ceph-radosgw,默认在执行ceph-deploy时已经安装(以下在ceph集群上操作)
]$ sudo yum -y install ceph-radosgw
# 部署rgw
ceph-cluster]$ ceph-deploy rgw create CEPH01 CEPH02 CEPH03
# 下载创建池脚本
ceph-cluster]$ curl -o pool https://raw.githubusercontent.com/aishangwei/ceph-demo/master/ceph-deploy/rgw/pool
ceph-cluster]$ curl -o create_pool.sh t https://raw.githubusercontent.com/aishangwei/ceph-demo/master/ceph-deploy/rgw/create_pool.sh
# 根据自己需求修改相应参数
ceph-cluster]$ cat create_pool.sh
#!/bin/bash
PG_NUM=10
PGP_NUM=10
SIZE=3
for i in `cat /home/cephadmin/ceph-cluster/pool`
        do
        ceph osd pool create $i $PG_NUM
        ceph osd pool set $i size $SIZE
        done
for i in `cat /home/cephadmin/ceph-cluster/pool`
        do
        ceph osd pool set $i pgp_num $PGP_NUM
        done
# 创建池
ceph-cluster]$ create_pool.sh
# 测试是否能够访问池
~]# ceph -s -k /var/lib/ceph/radosgw/ceph-rgw.CEPH01/keyring --name client.rgw.CEPH01
  cluster:
    id:     6bec7eb7-3d58-47b6-93d5-452916971002
    health: HEALTH_WARN
            Module 'restful' has failed dependency: No module named 'pecan'
            1 pool(s) do not have an application enabled
            6 pool(s) have non-power-of-two pg_num
            5 pools have pg_num > pgp_num
  services:
    mon: 3 daemons, quorum CEPH01,CEPH02,CEPH03 (age 69m)
    mgr: CEPH01(active, since 67m), standbys: CEPH03, CEPH02
    osd: 3 osds: 3 up (since 47h), 3 in (since 2d)
    rgw: 3 daemons active (CEPH01, CEPH02, CEPH03)
  task status:
  data:
    pools:   11 pools, 245 pgs
    objects: 211 objects, 14 MiB
    usage:   3.1 GiB used, 27 GiB / 30 GiB avail
    pgs:     245 active+clean

2、使用 S3 API 访问 Ceph 对象存储

# 创建用户,并记录access_key 和 secret_key (在ceph集群上操作)
]$ radosgw-admin user create --uid=radosgw --display-name="radosgw"
# 安装客户端(客户端操作)
~]# yum install yum install s3cmd -y
# 生成配置(客户端操作)
~]# s3cmd --configure
# 修改配置(客户端操作)
~]# vi /root/.s3cfg
bucket_location = US
host_base = CEPH01.dayi123.com:7480
host_bucket = %(bucket).CEPH01.dayi123.com:7480
# 添加hosts解析(客户端操作)
~]# echo "192.168.16.171 CEPH01 CEPH01.dayi123.com" >>/etc/hosts
# 创建桶(客户端操作)
~]# s3cmd mb s3://dayi123
ERROR: S3 error: 416 (InvalidRange)

      如果创建桶时报如上错误,则需要将其他对象存储后台驻留程序(OSD)添加到群集或将“mon_max_pg_per_osd”的默认值增加到300以上。

# 修改配置文件
my-cluster]$ vim ceph.conf
......
[mon]
mon allow pool delete = true
mon_max_pg_per_osd = 300
# 拷贝配置文件至各节点
my-cluster]$ ceph-deploy --overwrite-conf config push CEPH01 CEPH02 CEPH03
# 重新创建桶并将文件放入桶中
~]# s3cmd mb s3://testbucket
Bucket 's3://testbucket/' created
~]# s3cmd put /etc/yum.repos.d/ceph.repo s3://testbucket
upload: '/etc/yum.repos.d/ceph.repo' -> 's3://testbucket/ceph.repo'  [1 of 1]
 674 of 674   100% in    0s    34.19 KB/s
 674 of 674   100% in   12s    52.87 B/s  done
# 查看桶中文件
~]# s3cmd ls s3://testbucket
2020-08-04 13:26          674  s3://testbucket/ceph.repo

3、使用 Swift API 访问 对象存储

# 在ceph集群上创建 swift api 子用户并记住secret_key
ceph-cluster]$ radosgw-admin subuser create --uid=radosgw --subuser=radosgw:swift --access=full
# 安装swift api客户端软件(客户端操作)
~]# pip install --upgrade python-swiftclient
# 通过swift创建桶
~]# swift -A http://CEPH01.dayi123.com:7480/auth/1.0 -U radosgw:swift -K AKYbLdvWfccaVwto49sCT5nFlwo0QnYArQ8TIlBZ post testbucket2
# 查看桶
~]# swift -A http://CEPH01.dayi123.com:7480/auth/1.0 -U radosgw:swift -K AKYbLdvWfccaVwto49sCT5nFlwo0QnYArQ8TIlBZ list
testbucket
testbucket2

五、CEPH文件存储

1、安装

      Ceph文件系统提供了任何大小的符合posix标准的分布式文件系统,它使用Ceph RADOS存储数据。要实现Ceph文件系统,需要一个正在运行的Ceph存储集群和至少一个Ceph元数据服务器(MDS)来管理其元数据并使其与数据分离,这有助于降低复杂性和提高可靠性。

 

      只有Ceph FS才需要Ceph MDS;块和对象存储不需要MDS服务。libcephfs库在支持其多个客户机实现方面发挥着重要作用。它具有本机Linux内核驱动程序支持,因此客户机可以使用本机文件系统安装,例如,使用mount命令。它与SAMBA紧密集成,支持CIFS和SMB。Ceph FS使用cephfuse模块扩展到用户空间(FUSE)中的文件系统。它还允许使用libcephfs库与RADOS集群进行直接的应用程序交互。

# 安装cephfs
ceph-cluster]$ ceph-deploy mds create CEPH03
# 创建存储池
ceph-cluster]$ ceph osd pool create cephfs_data 64
pool 'cephfs_data' created
ceph-cluster]$ ceph osd pool create cephfs_metadata 32
pool 'cephfs_metadata' created
# 将存储池添加为fs存储
ceph-cluster]$ ceph fs new cephfs cephfs_metadata cephfs_data
new fs with metadata pool 23 and data pool 22
# 启动mds
ceph-cluster]$ ceph mds stat
cephfs:1 {0=CEPH03=up:active}
# 查看存储池
ceph-cluster]$ ceph osd pool ls
# 查看对象存储存储池
ceph-cluster]$ ceph fs ls
name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
# 为文件存储创建用户及认证秘钥
ceph-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
# 将秘钥拷贝至客户端
 ceph-cluster]$ scp ceph.client.cephfs.keyring root@192.168.16.101:/etc/ceph/

2、挂载

      在Linux内核2.6.34和以后的版本中添加了对Ceph的本机支持,可通过通过内核驱动和FUSE客户端挂载Ceph FS。

# 在ceph集群上执性获取key
ceph-cluster]$ ceph auth get-key client.cephfs
AQDduCpfZ9fKKhAA7oGPEoQMCDgQ62TDluCiYg==
# 在客户端挂载,先创建挂载目录,在挂载
~]# mkdir /mnt/cephfs
~]# mount -t ceph CEPH03:6789:/ /mnt/cephfs -o name=cephfs,secret=AQDduCpfZ9fKKhAA7oGPEoQMCDgQ62TDluCiYg==
~]# df -h /mnt/cephfs/
Filesystem             Size  Used Avail Use% Mounted on
192.168.16.173:6789:/   14G     0   14G   0% /mnt/cephfs
# 也可将key保存至文件中,挂载时制定key文件
~]# echo AQDduCpfZ9fKKhAA7oGPEoQMCDgQ62TDluCiYg== >/etc/ceph/cephfskey
~]# umount /mnt/cephfs/
~]# mount -t ceph CEPH03:6789:/ /mnt/cephfs -o name=cephfs,secretfile=/etc/ceph/cephfskey
~]# df -h /mnt/cephfs
Filesystem             Size  Used Avail Use% Mounted on
192.168.16.173:6789:/   14G     0   14G   0% /mnt/cephfs
# 也可将配置写入fstab中,开机自动挂载,_netdev参数为网络启动后挂载
~]# echo "CEPH03:6789:/ /mnt/cephfs ceph name=cephfs,secretfile=/etc/ceph/cephfskey,_netdev,noatime 0 0" >>/etc/fstab
# 验证挂载
~]# umount /mnt/cephfs
~]# mount /mnt/cephfs
~]# df -h /mnt/cephfs/
Filesystem             Size  Used Avail Use% Mounted on
192.168.16.173:6789:/   14G     0   14G   0% /mnt/cephfs

 

Ceph是一个可靠的、数据自动重均衡、自动恢复的SDS(软件定义存储)分布式存储系统,功能主要有三大块:块存储、对象存储、文件系统。 Ceph不但是提供了统一存储,并且同时还充分利用了客户端的计算能力,在存储每一个数据时,都会通过计算得出该数据存储的位置,尽量将数据分布均衡,同时由于Ceph的设计,采用了CRUSH算法、HASH环等方法,使得它不存在传统的单点故障的问题,且随着规模的扩大性能并不会受到影响。 不管是私有云还是公有云,随着云架构的发展,Ceph 成为了OpenStack、Proxmox标配的后端存储,不光如此,就连目前最火的容器编排 Kubernetes 持久存储也都支持 Ceph ,让 Ceph 成为当前主流的存储系统,而对 Ceph 存储的学习也就变的刻不容缓。   该课程属于比较基础的 Ceph 存储课程,旨在让大家能快速上手对 Ceph 集群的部署以及操作,主要讲解以下几个方面:   1.     架构的介绍 2.     集群的多种部署方式 3.     块存储部署,客户端使用及快照、克隆和镜像 4.     对象存储的部署及简单使用 5.     Ceph FS 文件系统的部署、客户端使用及导出为NFS 6.     集群的操作和管理,包括服务,集群扩展,缩减和集群维护 7.     Ceph 基础知识的介绍,包括集群map,PG和身份验证 8.     Ceph 集群的监控
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页