世界500强是如何解决千亿流量留存问题的,《Ceph分布式存储架构》-使用CentOS 7部署 Ceph分布式存储架构-为他们解决什么问题。


一、Ceph概述

在这里插入图片描述

1.1 Ceph介绍

Ceph是一个开源的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。它还是一个可靠、自动重均衡、自动恢复的分布式存储系统。主要优点是分布式存储,在存储每一个数据时,都会通过计算得出该数据存储的位置,尽量将数据分布均衡,不存在传统的单点故障的问题,可以水平扩展。

ceph官方文档 http://docs.ceph.org.cn/
ceph中文开源社区 http://ceph.org.cn/

数据大小和对应的存储介绍关系:

大小 存储介质
2T 一块硬盘
10T 一块硬盘
50T raid0,1,5 / 存储服务器

假如B站有20000T数据
20000T 一台服务器不行。 一台存储服务器200T*100台服务器。 使用的技术:ceph 分布

Ceph是一个开源的分布式文件系统。因为它还支持块存储、对象存储,所以很自然的被用做云计算框架openstack或cloudstack整个存储后端。当然也可以单独作为存储,例如部署一套集群作为对象存储、SAN存储、NAS存储等。

在这里插入图片描述
RADOS自身是一个完整的分布式对象存储系统,它具有可靠、智能、分布式等特性,Ceph的高可靠、高可拓展、高性能、高自动化都是由这一层来提供的,用户数据的存储最终也都是通过这一层来进行存储的,RADOS可以说就是Ceph的核心组件。

RADOS系统主要由两部分组成,分别是OSD和Monitor。

基于RADOS层的上一层是LIBRADOS,LIBRADOS是一个库,它允许应用程序通过访问该库来与RADOS系统进行交互,支持多种编程语言,比如C、C++、Python等。

基于LIBRADOS层开发的又可以看到有三层,分别是RADOSGW、RBD和CEPH FS。3个功能如下:

1、RADOSGW:RADOSGW是一套基于当前流行的RESTFUL协议的网关,并且兼容S3和Swift。
2、RBD:RBD通过Linux内核客户端和QEMU/KVM驱动来提供一个分布式的块设备。
3、CEPH FS:CEPH FS通过Linux内核客户端和FUSE来提供一个兼容POSIX的文件系统,就像NFS一样,共享文件。

ceph支持

1、对象存储:即radosgw,兼容Swift和S3接口。通过rest api上传、下载文件。
2、块存储:即rbd。有kernel rbd和librbd两种使用方式。支持快照、克隆。相当于一块硬盘挂到本地,用法和用途和硬盘一样。
3、文件系统:posix接口。可以将ceph集群看做一个共享文件系统挂载到本地。

Ceph相比其它分布式存储有哪些优点?

1、统一存储
虽然ceph底层是一个分布式文件系统,但由于在上层开发了支持对象和块的接口。所以在开源存储软件中,能够一统江湖。

2、高扩展性
扩容方便、容量大。能够管理上千台服务器、EB级的容量。

3、可靠性强
支持多份强一致性副本。副本能够垮主机、机架、机房、数据中心存放。所以安全可靠。存储节点可以自动管理、自动修复。无单点故障,容错性强。

4、高性能
因为是多个副本,因此在读写操作时候能够做到高度并行化。理论上,节点越多,整个集群的IOPS和吞吐量越高。另外一点ceph客户端读写数据直接与存储设备(osd) 交互。

1.2 Ceph各组件介绍

在这里插入图片描述
在这里插入图片描述
Ceph的核心组件包括Client客户端、MON监控服务、MDS元数据服务、OSD存储服务,各组件功能如下:

1、Client客户端:负责存储协议的接入,节点负载均衡。

2、MON(Monitor)监控服务:监控整个集群Cluster map的状态,维护集群的cluster MAP二进制表,保证集群数据的一致性,维护集群状态的映射,包括监视器映射,管理器映射,OSD映射,MDS映射和CRUSH映射。这些映射是Ceph守护程序相互协调所需的关键群集状态。监视器还负责管理守护程序和客户端之间的身份验证。通常至少需要三个监视器才能实现冗余和高可用性。

注:元数据:保存了子目录和子文件的名称 及inode编号的数据,通过元数据,可以找到对应的真实的数据,及真实数据所在的服务器。有点像字典前面的索引或yum源的缓存

3、MDS元数据服务(可选):是元数据的内存缓存,为了加快元数据的访问。保存了文件系统的元数据(对象里保存了子目录和子文件的名称和inode编号) ,还保存cephfs日志journal,日志是用来恢复mds里的元数据缓存 ,重启mds的时候会通过replay的方式从osd上加载之前缓存的元数据。

在ceph中,元数据是存储在osd节点中的,mds类似于元数据的内存缓存服务器,加快访问速度。

4、OSD(对象存储守护程序):主要功能是存储数据、复制数据、平衡数据、恢复数据,以及与通过检查其他Ceph OSD守护程序的心跳来向Ceph监视器和管理器提供一些监视信息。通常至少需要3个Ceph OSD才能实现冗余和高可用性。

Ceph要求必须是奇数个Monitor监控节点,一般建议至少是3个(如果是自己私下测试玩玩的话,可以是1个,但是生产环境绝不建议1个)用于维护和监控整个集群的状态,每个Monitor都有一个Cluster Map,只要有这个Map,就能够清楚知道每个对象存储在什么位置了。客户端会先tcp连接到Monitor,从中获取Cluster Map,并在客户端进行计算,当知道对象的位置后,再直接与OSD通信(去中心化的思想)。OSD节点平常会向Monitor节点发送简单心跳,只有当添加、删除或者出现异常状况时,才会自动上报信息给Monitor。

MDS是可选的,只有需要使用Ceph FS的时候才需要配置MDS节点。在Ceph中,元数据也是存放在OSD中的,MDS只相当于元数据的缓存服务器。

在Ceph中,如果要写数据,只能向主OSD写,然后再由主OSD向从OSD同步地写,只有当从OSD返回结果给主OSD后,主OSD才会向客户端报告写入完成的消息。如果要读数据,不会使用读写分离,而是也需要先向主OSD发请求,以保证数据的强一致性。

在这里插入图片描述
专业术语缩写总结:

1、OSD全称Object Storage Device,也就是负责响应客户端请求返回具体数据的进程。一个Ceph集群一般都有很多个OSD。

2、MDS全称Ceph Metadata Server,是CephFS服务依赖的元数据服务。

3、PG全称Placement Grouops,是一个逻辑的概念,一个PG包含多个OSD。引入PG这一层其实是为了更好的分配数据和定位数据。

4、RADOS全称Reliable Autonomic Distributed Object Store,是Ceph集群的精华,用户实现数据分配、Failover等集群操作。

5、RBD全称RADOS block device,是Ceph对外提供的块设备服务。

6、RGW全称RADOS gateway,是Ceph对外提供的对象存储服务,接口与S3和Swift兼容。

7、CephFS全称Ceph File System,是Ceph对外提供的文件系统服务。

二、ceph集群部署实验

主机准备 (禁用selinux, 关闭防火墙)

xuegod63 	192.168.1.63      osd,mds,mon,admin部署节点 
xuegod62 	192.168.1.62      osd,mds,mon
xuegod64 	192.168.1.64      osd,mds,mon
xuegod64 	192.168.1.64		client挂载节点,可以单独一台服务器

注:1、admin角色代表ceph部署管理节点,其他节点通过ceph部署结点进行安装。
2、xuegod62、xuegod63、xuegod64 各添加一块硬盘,每个磁盘20G。搭建ceph时会使用新加的磁盘。

在这里插入图片描述
编辑hosts文件(所有节点需要操作):

(规范系统主机名添加hosts文件实现集群主机名与主机名之间相互能够解析(host 文件添加主机名不要使用fqdn方式)可用hostnamectl set-hostname name设置

分别打开各节点的/etc/hosts文件,加入这四个节点ip与名称的对应关系

[root@xuegod63 ~]# vim /etc/hosts
192.168.1.63    xuegod63		xuegod63.cn
192.168.1.62    xuegod62		xuegod62.cn
192.168.1.64    xuegod64		xuegod64.cn

注:/etc/hosts中必须有xueogd63这种短域名,因为后期部署ceph时,ceph安装程序默认只使用xueogd63域名,不使用xueogd63.cn

[root@xuegod63 ~]# scp /etc/hosts root@xuegod62:/etc/
[root@xuegod63 ~]# scp /etc/hosts root@xuegod64:/etc/

SSH免密码登录(所有节点需要操作)
在管理节点使用ssh-keygen 生成ssh keys 发布到各节点
[root@xuegod63 ~]# ssh-keygen  	#所有的输入选项都直接回车生成。

[root@xuegod63 ~]# ssh-copy-id xuegod63
[root@xuegod63 ~]# ssh-copy-id xuegod62
[root@xuegod63 ~]# ssh-copy-id xuegod64

配置好网络源

3台主机上,都更新Centos内核,Ceph的iscsi网关组件最低需要4.16版本的linux内核。 最好离线安装

导入Public Key

[root@xuegod63 ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
[root@xuegod62 ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
[root@xuegod64 ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

安装elrepo源,通过elrepo源安装新内核

[root@xuegod63 ~]# yum install https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm -y
[root@xuegod62 ~]# yum install https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm -y
[root@xuegod64 ~]# yum install https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm -y

安装新版本内核(ml主线版本,lt长期支持版本)

[root@xuegod63 ~]# yum --enablerepo=elrepo-kernel install  kernel-lt-devel kernel-lt  -y
时间可能会比较长(3分钟左右)
[root@xuegod62 ~]# yum --enablerepo=elrepo-kernel install  kernel-lt-devel kernel-lt  -y
[root@xuegod64 ~]# yum --enablerepo=elrepo-kernel install  kernel-lt-devel kernel-lt  -y
查看安装的内核版本:
[root@xuegod63 yum.repos.d]# rpm -qa | grep kernel-lt
kernel-lt-5.4.127-1.el7.elrepo.x86_64
kernel-lt-devel-5.4.127-1.el7.elrepo.x86_64

配置使用新版本内核启动系统:

[root@xuegod63 ~]# grub2-set-default "kernel-lt-5.4.127-1" 
[root@xuegod62 ~]# grub2-set-default "kernel-lt-5.4.127-1" 
[root@xuegod64 ~]# grub2-set-default "kernel-lt-5.4.127-1" 

[root@xuegod63 ~]# reboot
[root@xuegod62 ~]# reboot
[root@xuegod64 ~]# reboot

[root@xuegod63 ~]# uname -r 
5.4.127-1.el7.elrepo.x86_64

同步时间:

使用互联网上提供的NTP服务,把3台主机时间保持一致(主机需要可以访问互联网)
统一安装ntp

[root@xuegod62 ~]# yum install -y ntp
[root@xuegod63 ~]# yum install -y ntp
[root@xuegod64 ~]# yum install -y ntp

指定阿里云时间服务器,进行时间同步:

[root@xuegod63 ~]# ntpdate  ntp.aliyun.com
[root@xuegod62 ~]# ntpdate  ntp.aliyun.com
[root@xuegod64 ~]# ntpdate  ntp.aliyun.com 

添加计划任务定期同步

[root@xuegod63 ~]# echo "*/30 * * * * ntpdate  ntp.aliyun.com "  >> /var/spool/cron/root
[root@xuegod62 ~]# crontab -l
[root@xuegod64 ~]# echo "*/30 * * * * ntpdate  ntp.aliyun.com "  >> /var/spool/cron/root
[root@xuegod62 ~]# echo "*/30 * * * * ntpdate  ntp.aliyun.com "  >> /var/spool/cron/root

2.1 配置Ceph安装源

方法1:离线安装

创建本地yum源

[root@xuegod63 ~]# rz

在这里插入图片描述

[root@xuegod63 ~]# tar xf ceph-14-v2.tar.gz -C /opt/
[root@xuegod63 ~]# tee  /etc/yum.repos.d/ceph.repo  << EOF
[ceph]
name=ceph
baseurl=file:///opt/ceph-14
enable=1
gpgcheck=0
EOF
复制离线yum仓库至xuegod62
[root@xuegod63 ~]# scp -r /opt/ceph-14/ root@xuegod62.cn:/opt/
[root@xuegod63 ~]# scp /etc/yum.repos.d/ceph.repo root@xuegod62.cn:/etc/yum.repos.d/
复制离线yum仓库至xuegod64
[root@xuegod63 ~]# scp -r /opt/ceph-14/ root@xuegod64.cn:/opt/
[root@xuegod63 ~]# scp /etc/yum.repos.d/ceph.repo root@xuegod64.cn:/etc/yum.repos.d/

方法2:配置在线ceph源

在线安装

[root@xuegod63 ~]# vim /etc/yum.repos.d/ceph.repo
[ceph]
name=ceph
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/
gpgcheck=0
priority=1
enable=1
[ceph-noarch]
name=cephnoarch
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch/
gpgcheck=0
priority=1
enable=1
[ceph-source]
name=Ceph source packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/SRPMS/
gpgcheck=0
priority=1
enable=1

[root@xuegod63 ~]# scp /etc/yum.repos.d/ceph.repo root@xuegod62:/etc/yum.repos.d/
[root@xuegod63 ~]# scp /etc/yum.repos.d/ceph.repo root@xuegod64:/etc/yum.repos.d/
在线安装必须安装epel源
[root@xuegod63 ~]# yum install -y epel-release

2.2 在xuegod63上安装ceph-deploy管理工具

[root@xuegod63 ~]# yum install python-setuptools ceph-deploy -y
开始部署新的集群
[root@xuegod63 ~]# mkdir /etc/ceph && cd /etc/ceph

使用ceph-deploy new 命令快速部署3个ceph结点
[root@xuegod63 ceph]# ceph-deploy new xuegod62.cn xuegod63.cn xuegod64.cn
[root@xuegod63 ceph]# ls                                #在当前目录下生成,有3个节点的配置文件
ceph.conf # Ceph主配置文件;        ceph-deploy-ceph.log #日志文件 ;
ceph.mon.keyring #monitor密钥

[root@xuegod63 ceph]# cat ceph.conf  #查看配置文件
[global]
fsid = 31051ba5-3210-441f-ae10-be6f70859d30
mon_initial_members = xuegod62, xuegod63, xuegod64 #指定了后期要对哪些节点进行monitor初始化,注:这里写的是短域名,后期自动部署时,也会使用短域名
mon_host = 192.168.1.62,192.168.1.63,192.168.1.64   #monitor 节点IP

查看monitor密钥,后期客户端挂载ceph时,通过这个密钥来认证:
[root@xuegod63 ceph]# cat ceph.mon.keyring 
[mon.]
key = AQAqgf5gAAAAABAAPJV2+TPknwAl5RY9bK6rAA==
caps mon = allow *

修改pool的副本数

pool概述:pool是ceph存储数据时的逻辑分区,它起到namespace的作用。其他分布式存储系统。每个pool包含一定数量的PG,PG里的对象被映射到不同的OSD上,因此pool是分布到整个集群的。除了隔离数据,我们也可以分别对不同的POOL设置不同的优化策略,比如副本数、数据清洗次数、数据块及对象大小等。

[root@xuegod63 ~]# vim /etc/ceph/ceph.conf		#配置文件的默认副本数从3改成2,这样只有两个osd也能达到active+clean状态,把下面这行加入到[global]段(可选配置)
[global]
fsid = 31051ba5-3210-441f-ae10-be6f70859d30
mon_initial_members = xuegod62, xuegod63, xuegod64
mon_host = 192.168.1.62,192.168.1.63,192.168.1.64
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
osd_pool_default_size = 2
mon clock drift allowed = 0.500
mon clock drift warn backoff = 10

注:
osd_pool_default_size = 2 #设置pool的副本数为2个
mon clock drift allowed #监视器之间,允许的时钟漂移量,改为,0.5秒。默认值0.05秒
mon clock drift warn backoff #时钟偏移警告的退避指数。默认值5
ceph对每个mon之间的时间同步延时默认要求在0.05s之间,这个时间有的时候太短了。所以如果ceph集群出现clock问题,就检查ntp时间同步或者适当放宽这个误差时间。

2.3 离线安装ceph

在所有节点上安装ceph和ceph-radosgw。RADOSGW是一套基于当前流行的RESTFUL协议的网关,并且兼容S3和Swift。

[root@xuegod62 ~]# yum -y install ceph ceph-radosgw
[root@xuegod63 ~]# yum -y install ceph ceph-radosgw
[root@xuegod64 ~]# yum -y install ceph ceph-radosgw

2.4 安装ceph monitor

1、安装ceph monitor

[root@xuegod63 ~]# cd /etc/ceph/
[root@xuegod63 ceph]# ceph-deploy mon create-initial   #在3台节点上安装monitor。
[root@xuegod63 ceph]# ls *.keyring    # keyring是各组件之间秘钥文件

注:初始化monitor成员,根据置文件中mon initial members中的monitors。进行部署,直到它们形成表决团,然后搜集keys,并且在这个过程中报告monitor的状态。
在这里插入图片描述
2、分发配置文件

(用ceph-deploy把配置文件和admin密钥拷贝到所有节点,这样每次执行Ceph命令行时就无需指定monitor地址和ceph.client.admin.keyring了)

[root@xuegod63 ceph]# ceph-deploy admin xuegod62.cn xuegod63.cn xuegod64.cn 

将client.admin的key push到远程主机。将ceph-admin节点下的client.admin keyring push到远程主机/etc/ceph/下面。

查看复制过来的文件:

[root@xuegod62 ~]# ls /etc/ceph/
ceph.client.admin.keyring  ceph.conf  rbdmap  tmp8xZmUE

2.5 部署osd服务

使用 create 命令一次完成准备 OSD 、部署到 OSD 节点、并激活它。
将/dev/sdb磁盘准备为OSD,并把部署到相应的OSD节点上。

[root@xuegod63 ceph]# cd /etc/ceph/     #必须在这个目录下执行
[root@xuegod63 ceph]# ceph-deploy osd create --data /dev/sdb xuegod62.cn
[root@xuegod63 ceph]# ceph-deploy osd create --data /dev/sdb xuegod63.cn
[root@xuegod63 ceph]# ceph-deploy osd create --data /dev/sdb xuegod64.cn
查看状态:
[root@xuegod63 ceph]# ceph-deploy osd list xuegod63 xuegod62 xuegod64

2.6 创建ceph文件系统

创建mds

[root@xuegod63 ceph]# ceph-deploy mds create xuegod62.cn xuegod63.cn xuegod64.cn

查看ceph当前文件系统

[root@xuegod63 ceph]# ceph fs ls

在这里插入图片描述
一个cephfs至少要求两个librados存储池,一个为data,一个为metadata。当配置这两个存储池时,注意:

  1. 为metadata pool设置较高级别的副本级别,因为metadata的损坏可能导致整个文件系统不用
  2. 建议,metadata pool使用低延时存储,比如SSD,因为metadata会直接影响客户端的响应速度。

创建pool存储池

pg概述:PG,Placement Group,归置组,
Placement [ˈpleɪsmənt] 安置 归置

例1: 创建名为cephfs_data,pg_num为128的pool

[root@xuegod63 ceph]# ceph osd pool create cephfs_data 128   
pool 'cephfs_data' created

例2:创建名为cephfs_metadata,pg_num为128的pool

[root@xuegod63 ceph]# ceph osd pool create cephfs_metadata 128
pool 'cephfs_metadata' created

注:通常在创建pool之前,需要覆盖默认的pg_num,官方推荐:
*少于 5 个 OSD 时可把 pg_num 设置为 128
*OSD 数量在 5 到 10 个时,可把 pg_num 设置为 512
*OSD 数量在 10 到 50 个时,可把 pg_num 设置为 4096
*OSD 数量大于 50 时,你得理解权衡方法、以及如何自己计算 pg_num 取值
*自己计算 pg_num 取值时可借助 pgcalc 工具。

创建文件系统

创建好存储池后,你就可以用 fs new 命令创建文件系统了

[root@xuegod63 ceph]# ceph fs new xuegod cephfs_metadata cephfs_data
new fs with metadata pool 2 and data pool 1   
注:metadata pool 编号为:2  ;data pool 编号为:1
其中:new后的fsname  可自定义

[root@xuegod63 ceph]# ceph fs ls              #查看创建后的cephfs
name: xuegod, metadata pool: cephfs_metadata, data pools: [cephfs_data ]

[root@xuegod63 ceph]# ceph mds stat          #查看mds节点状态
xuegod:1 {0=xuegod62.cn=up:active} 2 up:standby
active是活跃的,另1个是处于热备份的状态

2.7 部署mgr监控

安装mgr用于后面我们配置dashboard监控,而且避免挂载ceph时可能会提示warring信息。

[root@xuegod63 ceph]# ceph-deploy mgr create xuegod62.cn xuegod63.cn xuegod64.cn

安装后查看集群状态正常

[root@xuegod63 ceph]# ceph -s

在这里插入图片描述

三、多种Ceph挂载方式

3.1 内核驱动挂载Ceph文件系统

1、查看存储密钥(如果没有在管理节点使用ceph-deploy拷贝ceph配置文件)

[root@xuegod63 ~]# cat /etc/ceph/ceph.client.admin.keyring
[client.admin]
	key = AQDNBQFca7UYGxAA6wOfoZR4JWdP5yM56S8DeQ==

2、将key对应的值复制下来保存到客户端xueogd64的/etc/ceph/admin.secret中。如果已经有了,就不用复制了。

[root@xuegod64 ~]# vim /etc/ceph/admin.secret  #写入以下内容
AQDNBQFca7UYGxAA6wOfoZR4JWdP5yM56S8DeQ==

例1:将ceph挂载到/root/test2目录下

[root@xuegod64 ceph]# mkdir /root/test2
[root@xuegod64 ceph]# mount -t ceph 192.168.1.63:6789:/ /root/test2/ -o name=admin,secretfile=/etc/ceph/admin.secret 
[root@xuegod64 ceph]# df -h
文件系统             容量  已用  可用 已用% 挂载点
devtmpfs             970M     0  970M    0% /dev
tmpfs                982M     0  982M    0% /dev/shm
tmpfs                982M  8.8M  973M    1% /run
tmpfs                982M     0  982M    0% /sys/fs/cgroup
/dev/sda3             50G  2.0G   49G    4% /
/dev/sda1            497M  151M  347M   31% /boot
/dev/sr0             4.3G  4.3G     0  100% /mnt
tmpfs                197M     0  197M    0% /run/user/0
tmpfs                982M   52K  982M    1% /var/lib/ceph/osd/ceph-2
192.168.1.63:6789:/   27G     0   27G    0% /root/test2

在这里插入图片描述
要取消挂载

[root@xuegod64 ceph]# umount /root/test2     # 先不卸载

3.2 使用ceph-fuse命令挂载Ceph文件系统

登录xuegod64,安装ceph-fuse

[root@xuegod64 ceph]# yum install -y ceph-fuse
[root@xuegod64 ceph]# mkdir /root/xueogd    #必须创建一个空目录,不能直接挂载有文件的目录下

挂载

[root@xuegod64 ceph]# ceph-fuse -m 192.168.1.63:6789 /root/xueogd/

在这里插入图片描述
取消挂载

[root@xuegod64 ceph]# fusermount -u /root/xueogd/    #先不取消挂载

测试两种挂载,显示的存储大小为什么不一样:
没有写入数据时查看大小:
在这里插入图片描述
写入1G文件

[root@xuegod64 ceph]# dd if=/dev/zero of=/root/test2/a.txt bs=1G count=1
[root@xuegod64 ceph]# df -h

在这里插入图片描述

文件系统               容量    已用    可用   已用%  挂载点
ceph-fuse             60G    5.0G    55G    9%   /root/xueogd
192.168.1.63:6789:/   27G   1012M   26G   4%   /root/test2

注:当写入1G文件时,fusermount查看大小,已用空间直接增加2G左右,mount查看大小只增加1G左右。

总结:由此可以看到mount挂载显示是的用户真实可以使用的磁盘空间大小, fusermount显示的ceph
OSD一共的空间,不用户可以使用的大小。我们设置了OSD存储数据,存2个副本,60G/2=27G左右,因为MSD还要占用一些空间。

排错汇总:

排错1:如查要在新节点xuegod65.cn上挂载,需要将配置文件以及密钥文件拷贝至客户端节点,
用ceph-deploy把配置文件和admin密钥拷贝到新节点,这样每次执行Ceph命令行时就无需指定monitor地址和ceph.client.admin.keyring了)

[root@xuegod63 ceph]# ceph-deploy admin  xuegod65.cn   #分发配置文件

不然会报以下错:
在这里插入图片描述
排错2:

[root@xuegod64 ceph]# ceph-fuse -m 192.168.1.63:6789 /opt      #挂载,报以下错

在这里插入图片描述
如果出现以该提示表示你需要使用-o nonempty进行挂载。原因是/opt目录不是空的,因为之前挂载到/opt路径中时会创建一个额外的目录文件夹。所以该提示是为了防止你挂载到存在数据的目录中导致目录中原有数据丢失。

解决方法2种

  1. 使用-o nonempty参数挂载
[root@xuegod64 ceph]# ceph-fuse -o nonempty -m 192.168.1.63:6789 /opt
  1. 删除目录下的文件
[root@xuegod64 ceph]# rm -rf /opt/ *
[root@xuegod64 ceph]# ceph-fuse -m 192.168.1.63:6789 /opt
  1. 取消挂载
[root@xuegod64 ceph]# fusermount -u /opt

四、Ceph配置dashboard Web监控界面

安装mgr-dashboard插件(ceph节点都要安装)

[root@xuegod62 ceph]# yum install -y ceph-mgr-dashboard
[root@xuegod63 ceph]# yum install -y ceph-mgr-dashboard
[root@xuegod64 ceph]# yum install -y ceph-mgr-dashboard

注:所有节点上必须都安装ceph-mgr-dashboard,不然后无法启动web监控界面。会报以下错:
在这里插入图片描述
启用dashboard插件

[root@xuegod63 ceph]# ceph mgr module enable dashboard

创建自签名证书

[root@xuegod63 ceph]# ceph dashboard create-self-signed-cert

创建管理员用户,用户名:xuegod 密码:123456

[root@xuegod63 ceph]# ceph dashboard set-login-credentials xuegod 123456
******************************************************************
***          WARNING: this command is deprecated.              ***
*** Please use the ac-user-* related commands to manage users. ***
******************************************************************
Username and password updated

[root@xuegod63 ceph]# ceph mgr services
{
    "dashboard": "https://xuegod63.cn:8443/"
}

注:这里的访问地址不是固定的,可能是xuegod62.cn:8443,mgr services中提示的dashboard访问地址为准。
可以通过ip地址访问: https://192.168.1.62:8443/
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
拷贝测试数据

[root@xuegod64 ceph]# mount /dev/sr0 /mnt/
[root@xuegod64 ceph]# ceph-fuse -m 192.168.1.63:6789 /root/xueogd/
[root@xuegod64 ceph]# cp -r  /mnt/Packages/ /root/xueogd/

注:这里拷贝1分钟左右就Ctrl+C取消,否则会占用过多的磁盘空间。

监控界面中Filesystems中可以看到文件系统的详细信息。
在这里插入图片描述
这个图会实时的显示

看到这里是否对Ceph分布式存储架构有所了解了呢?

                              想要获取文章中的学习视频+笔记和源码的
                                  添加我们的小姐姐就可获取哦!

在这里插入图片描述

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>