Ceph#分布式存储Ceph集群的部署和使用

文章目录

分布式存储Ceph

C++编写

一、存储的分类

1、本地文件系统

ntfs(windows)、ext2、ext3、ext4、xfs
  ext2不带日志,3和4带有日志:文件系统的日志作用(防止机器突然断电):所有的数据在给磁盘存数据之前会先给文件系统的日志里面存一份,防止机器突然断电之后数据没有存完,这样它还可以从日志里面重新将数据拷贝到磁盘

2、网络文件系统----做远程共享

非分布式
    nfs 网络文件系统–称之为nas存储(网络附加存储)
  分布式
   hdfs 分布式网络文件系统
   glusterfs 分布式网络文件系统,不需要管理服务器
   ceph 分布式网络文件系统,块存储,对象存储

3、分布式文件系统特点

共享的是文件系统。共享的最小单位是文件
  可扩展性强、安全。实现PB级别的存储

4、分布式文件系统存储使用架构

分布式存储不一定是对象存储,所有的对象存储一定是分布式存储
分布式文件系统的元数据服务器存储的各个数据的位置信息
对象存储服务的的元数据服务器存储的是数据的属性信息

5、非分布式文件系统

典型设备: FTP、NFS服务器
  为了克服块存储文件无法共享的问题,所以有了文件存储
  在服务器上安装FTP与NFS服务,就是文件存储。
  优点:
    造价低,随便一台机器就可以了
    方便文件共享
  缺点:
    读写速率低
    传输速率慢
  使用场景:
    日志存储
    有目录结构的文件存储

6、分布式文件系统的特性

可扩展、低成本、易管理
  可扩展
  分布式存储系统可以扩展到几百台甚至几千台的集群规模,而且随着集群规模的增长,系统整体性能表现为线性增长。分布式存储的水平扩展有以下几个特性:
    1) 节点扩展后,旧数据会自动迁移到新节点,实现负载均衡,避免单点故障的情况出现;
    2) 水平扩展只需要将新节点和原有集群连接到同一网络,整个过程不会对业务造成影响;
  低成本
  分布式存储系统的自动容错、自动负载均衡机制使其可以构建在普通的PC机之上。
  易管理
  可通过一个简单的WEB界面就可以对整个系统进行配置管理,运维简便,极低的管理成本

7、块存储

块存储的特点:
  1.主要是将裸磁盘空间映射给主机使用的,共享的最小单位是块
  2.使用的交换机是光纤交换机价格贵成本高
  3.性能最好,扩展性好
  4.不能做文件系统的共享
  最典型的就是SAN(storage area network)(存储区域网)
  有一个局域网里面有一个交换机,交换机上面连着服务器,所有服务器都是专业存储的设备,他们组成一个存储区域网,当我们用的时候只需要在这个区域网里面拿空间使用
  典型设备: 磁盘阵列,硬盘
  优点:
  通过Raid与LVM等手段,对数据提供了保护。
  多块廉价的硬盘组合起来,提高容量。
  多块磁盘组合出来的逻辑盘,提升读写效率。
  缺点:
  采用SAN架构组网时,光纤交换机,造价成本高。
  主机之间无法共享数据。
  使用场景:
  虚拟机磁盘存储分配
  日志存储
  文件存储

8、对象存储

存储节点叫做OSD
  为什么需要对象存储?
  首先,一个文件包含了属性(术语叫metadata,元数据,例如该文件的大小、修改时间、存储路径等)以及内容(以下简称数据)。而对象存储则将元数据独立了出来,控制节点叫元数据服务器(服务器+对象存储管理软件),里面主要负责存储对象的属性(主要是对象的数据被打散存放到了那几台分布式服务器中的信息),而其他负责存储数据的分布式服务器叫做OSD,主要负责存储文件的数据部分。当用户访问对象,会先访问元数据服务器,元数据服务器只负责反馈对象存储在哪些OSD,假设反馈文件A存储在B、C、D三台OSD,那么用户就会再次直接访问3台OSD服务器去读取数据。由于是3台OSD同时对外传输数据,所以传输的速度就加快了。当OSD服务器数量越多,这种读写速度的提升就越大,通过此种方式,实现了读写快的目的。
  另一方面,对象存储软件是有专门的文件系统的,所以OSD对外又相当于文件服务器,那么就不存在文件共享方面的困难了,也解决了文件共享方面的问题。
  所以对象存储的出现,很好地结合了块存储与文件存储的优点。
  优点:
  具备块存储的读写高速
  具备文件存储的共享等特性
  使用场景: (适合更新变动较少的数据)
  图片存储
  视频存储

二、常见的分布式存储(了解)

1、Hadoop HDFS

HDFS(Hadoop Distributed File System)是一个分布式文件系统,是hadoop生态系统的一个重要组成部分,是hadoop中的的存储组件.HDFS是一个高度容错性的系统,HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用
  HDFS的优点:高容错性、扩展能力很强、良好的数据访问机制、适合大数据的存储
  高容错性
    数据自动保存多个副本
    副本丢失后,自动恢复
  良好的数据访问机制
    一次写入、多次读取,保证数据一致性
  适合大数据文件的存储
   TB、 甚至PB级数据
  扩展能力很强
  HDFS的缺点:海量文件存取,占用大量的NameNode内存,一个文件只能有一个写入者,仅支持追加
  海量小文件存取
   占用NameNode大量内存
  一个文件只能有一个写入者
    仅支持append(追加)

2、OpenStack的对象存储Swift

OpenStack Object Storage(Swift)是OpenStack开源云计算项目的子项目之一。Swift的目的是使用普通硬件来构建冗余的、可扩展的分布式对象存储集群,存储容量可达PB级。Swift的是用Python开发
其主要特点为:
  1. 各个存储的节点完全对等,是对称的系统架构。
  2. 无单点故障:与对象文件存储一样,数据也会存储多份。整个Swift集群中,也没有一个角色是单点的。
  3. 在不影响性能的情况下,集群通过增加外部节点进行扩展。
  Swift可以用以下用途:
  图片、文档存储
  长期保存的日志文件
  存储媒体库(照片、音乐、视频等)
  总结:Swift适合用来存储大量的、长期的、需要备份的对象

3、GlusterFS分布式文件系统

glusgerfs存储卷的类型:
  分布卷:存储数据时,将文件随机存储到glusterfs机器上
  复制卷:存储数据时,所有文件分别存储到每台glustet机器上
  条带卷:存储数据时,一个文件分别存储到每台gluster机器上

GlusterFS(GNU ClusterFile System)是一种全对称的开源分布式文件系统,所谓全对称是指GlusterFS采用弹性哈希算法,没有中心节点,所有节点全部平等。GlusterFS配置方便,稳定性好,可轻松达到PB级容量,数千个节点,2011年被红帽收购。
  PB级容量 高可用性 基于文件系统级别共享 分布式 去中心化
  glusgerfs存储卷的类型
  基本类型:条带,复制,哈希。
  各种卷的整理
  1.分布卷:存储数据时,将文件随机存储到glusterfs机器上。
  优点:存储数据时,读取速度快
  缺点:一个birck坏掉,文件就会丢失
  2.复制卷:存储数据时,所有文件分别存储到每台glusterfs机器上。
  优点:对文件进行的多次备份,一个brick坏掉,文件不会丢失,其他机器的brick上面有备份
  缺点:占用资源
  3.条带卷:存数据时,一个文件分开存到每台glusterfs机器上
  优点:对大文件,读写速度快
  缺点:一个brick坏掉,文件就会坏掉

三、ceph详解

1、Ceph简介

Ceph使用C++语言开发,Sage Weil(Ceph论文发表者)于2011年创立了以Inktank公司主导Ceph的开发和社区维护2014年Redhat收购inktank公司,并发布Inktank Ceph企业版(ICE)软件,业务场景聚焦云、备份和归档,支持对象存储和块存储以及文件系统存储应用。出现Ceph开源社区版本和Redhat企业版。Ceph主要设计的初衷是变成一个可避免单节点故障的统一的分布式文件系统,提供较好的性能、可靠性和PB级别的扩展能力,而且是一种开源自由软件,许多融合的分布式文件系统都是基于Ceph开发的。

2、Ceph特性

高扩展性:支持10~1000台服务器,支持TB到EB级的扩展
  高可靠性:没有单点故障,多数据副本,自动管理,自动修复
  高性能:数据分布均衡

3、基础存储系统RADOS

Reliable, Autonomic, Distributed Object Store,即可靠的、自动化的、分布式的对象存储。所有存储在Ceph系统中的用户数据事实上最终都是由这一层来存储的。Ceph的高可靠、高可扩展、高性能、高自动化等等特性本质上也是由这一层所提供的

4、基础库librados

这一层的功能是对RADOS进行抽象和封装,并向上层提供API,以便直接基于RADOS进行应用开发。由于RADOS是一个对象存储系统,因此,librados实现的API也只是针对对象存储功能的。RADOS是协议很难直接访问,因此上层的RBD、RGW和CephFS都是通过librados访问的,目前提供PHP、Ruby、Java、Python、C和C++支持

5、高层应用接口

radosgw: 对象网关接口(对象存储)
  rbd: 块存储
  cephfs:文件系统
  存储其作用是在librados库的基础上提供抽象层次更高、更便于应用或客户端使用的上层接口

6、Ceph的基本组件

OSD:date-node节点,存储数据本身(数据本身+元数据)
  MDS:name-node节点,存储元数据(只有元数据)
  Monitor:监控集群状态,保证集群数据一致性
  Manager(ceph-mgr):收集集群信息
  OSD、MDS、
  Ceph主要有三个基本进程
  OSD全称Object Storage Device,也就是负责响应客户端请求返回具体数据的进程。一个Ceph集群一般都有很多个OSD。用于集群中所有数据与对象的存储。处理集群数据的复制、恢复、回填、再均衡。并向其他osd守护进程发送心跳,然后向Mon提供一些监控信息当Ceph存储集群设定数据有两个副本时(一共存两份),则至少需要两个OSD守护进程即两个OSD节点,集群才能达到active+clean状态.
  MDS全称Ceph Metadata Server,是CephFS服务依赖的元数据服务。为Ceph文件系统提供元数据计算、缓存与同步(也就是说,Ceph 块设备和 Ceph 对象存储不使用MDS )。在ceph中,元数据也是存储在osd节点中的,mds类似于元数据的代理缓存服务器。只有需要使用CEPHFS时,才需要配置MDS节点。
  Monitor:
  监控整个集群的状态,保证集群数据的一致性。
  Manager(ceph-mgr):
  用于收集ceph集群状态、运行指标,比如存储利用率、当前性能指标和系统负载。对外提供 ceph dashboard(ceph ui)

7、Ceph 结构包含两个部分:

ceph client:访问 ceph 底层服务或组件,对外提供各种接口。比如:对象存储接口、块存储接口、文件级存储接口。
  ceph node:ceph 底层服务提供端,也就是 ceph 存储集群

8、Ceph组件及概念介绍

Object:Ceph最底层的存储最小单位是Object–对象,每个Object包含元数据和原始数据
  PG:PG全称Placement Groups,是一个逻辑的概念,一个PG包含多个OSD。引入PG这一层其实是为了更好的分配数据和定位数据
  CRUSH:CRUSH是Ceph使用的数据分布算法,类似一致性哈希,让数据分配到预期的地方
  RBD:RBD全称RADOS block device,是Ceph对外提供的块设备服务
  RGW:RGW全称RADOS gateway,是Ceph对外提供的对象存储服务,接口与S3和Swift兼容

9、CephFS 文件存储

CephFS全称Ceph File System,是Ceph对外提供的分布式文件存储服务

10、Ceph对象存储

使用Ceph对象网关守护进程(radosgw),它是用于与Ceph存储群集进行交互的HTTP服务器。由于它提供与OpenStack Swift和Amazon S3兼容的接口,Ceph对象网关可以将数据存储在用于存储来自Ceph文件系统客户端或Ceph块设备客户端的数据的同一Ceph存储群集中。S3和Swift API共享一个公共的名称空间,因此您可以使用一个API编写数据,而使用另一个API检索数据

11、Ceph块存储

Ceph 块设备是精简配置的、大小可调且将数据条带化存储到集群内的多个 OSD 。 Ceph 块设备利用 RADOS 的多种能力,如快照、复制和一致性。 Ceph 的 RADOS 块设备( RBD )使用内核模块或 librbd 库与 OSD 交互

12、Ceph数据的存储过程

在这里插入图片描述

无论使用哪种存储方式(对象、块、挂载),存储的数据都会被切分成对象(Objects)。
  Objects size大小可以由管理员调整,通常为2M或4M。每个对象都会有一个唯一的OID,由ino与ono生成,ino即是文件的File ID,用于在全局唯一标示每一个文件,而ono则是分片的编号。比如:一个文件FileID为A,它被切成了两个对象,一个对象编号0,另一个编号1,那么这两个文件的oid则为A0与A1。Oid的好处是可以唯一标示每个不同的对象,并且存储了对象与文件的从属关系。由于ceph的所有数据都虚拟成了整齐划一的对象,所以在读写时效率都会比较高。
  但是对象并不会直接存储进OSD中,因为对象的size很小,在一个大规模的集群中可能有几百到几千万个对象。这么多对象光是遍历寻址,速度都是很缓慢的;并且如果将对象直接通过某种固定映射的哈希算法映射到osd上,当这个osd损坏时,对象无法自动迁移至其他osd上面。为了解决这些问题,ceph引入了归置组的概念,即PG。
  PG是一个逻辑概念,我们linux系统中可以直接看到对象,但是无法直接看到PG。它在数据寻址时类似于数据库中的索引:每个对象都会固定映射进一个PG中,所以当我们要寻找一个对象时,只需要先找到对象所属的PG,然后遍历这个PG就可以了,无需遍历所有对象。而且在数据迁移时,也是以PG作为基本单位进行迁移,ceph不会直接操作对象。
  对象时如何映射进PG的?还记得OID么?首先使用静态hash函数对OID做hash取出特征码,用特征码与PG的数量去模,得到的序号则是PGID。
  最后PG会根据管理员设置的副本数量进行复制,然后通过crush算法存储到不同的OSD节点上(其实是把PG中的所有对象存储到节点上),第一个osd节点即为主节点,其余均为从节点

四、安装Ceph集群

注 意: 版本更新非常快,有问题要看官方文档
官方文档: http://docs.ceph.com/

准备环境
deploy 英 [dɪˈplɔɪ] 美 [dɪˈplɔɪ] v.部署,调度(军队或武器);有效地利用;调动

1、给三台node节点添加一块大小5G以上的磁盘

系统版本:centos7.4 x86_64 server
硬件配置:5台vm,1核1G内存,每台node角色的机器至少挂载1块不低于5个G的空闲盘为osd存储
admin 10.0.0.20 admin/–安装ceph-deploy
node1 10.0.0.22 osd/mon/mgr
node2 10.0.0.23 osd
node3 10.0.0.24 osd
ceph-client 10.0.0.21

2、所有节点修改主机名并相互解析

3、关闭所有机器的防火墙和selinux

4、所有节点创建普通用户并设置密码–所有节点都操作

注意,创建普通账户,互相免密,自己和自己免密
[root@admin ~]# useradd cephu
[root@admin ~]# passwd cephu

5、确保各 Ceph 节点上新创建的用户都有 sudo 权限–所有节点操作

[root@admin ~]# visudo ----在root ALL=(ALL) ALL下面添加:
cephu ALL=(root) NOPASSWD:ALL

6、实现ssh无密码登录(admin节点操作)

[root@admin ~]# su - cephu
[cephu@admin ~]$ ssh-keygen

7、将admin节点cephu用户生成的密钥拷贝到各Ceph节点

[cephu@admin ~]$ ssh-copy-id cephu@node1
[cephu@admin ~]$ ssh-copy-id cephu@node2
[cephu@admin ~]$ ssh-copy-id cephu@node3
[cephu@admin ~]$ ssh-copy-id cephu@ceph-client

8、在admin节点用root用户添加~/.ssh/config配置文件

并进行如下设置,这样 ceph-deploy就能用你所建的用户名登录 Ceph 节点了
[root@admin ~]# mkdir ~/.ssh
[root@admin ~]# vim ~/.ssh/config
Host node1
Hostname node1
User cephu
Host node2
Hostname node2
User cephu
Host node3
Hostname node3
User cephu

9、添加下载源,安装ceph-deploy(admin节点,root用户)

[root@admin ~]# vim /etc/yum.repos.d/ceph.repo
[ceph-noarch]
name=Ceph noarch packages
baseurl=https://download.ceph.com/rpm-luminous/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
更新源,安装ceph-deploy:
[root@admin ~]# yum makecache
[root@admin ~]# yum update
开启yum缓存
[root@admin ~]# vim /etc/yum.conf
keepcache=1
安装
[root@admin ~]# yum install ceph-deploy wget unzip -y

10、安装ntp(选择一台机器作为ntp-server,其他的机器做时间同步)

注意!!选择任何一台机器当ntp时间服务器,其他的节点当时间服务器的客户端跟服务器同步时间我选择的是admin上:
[root@admin ~]# yum install -y ntp
[root@admin ~]# vim /etc/ntp.conf
有4行server的位置,把那4行server行注释掉,填写以下两行
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
[root@admin ~]# systemctl start ntpd
[root@admin ~]# systemctl status ntpd

其他所有节点:
yum install ntpdate -y ntpdate 时间服务器ip

部署ceph集群

ceph-deploy是用来部署ceph集群的

1、创建cephu操作的目录(admin):

#注意!!没有特别说明以下所有操作均是在admin节点,cephu用户下执行
[root@admin ~]# su - cephu
[cephu@admin ~]$ mkdir my-cluster
之后,所有ceph-deploy命令操作必须在该目录下执行

2、创建集群(admin)—这里报错查看后面的错误整理

首先在这里需要先下载一个包并安装否则会报错,然后在创建集群
[cephu@admin ~]$ wget https://files.pythonhosted.org/packages/5f/ad/1fde06877a8d7d5c9b60eff7de2d452f639916ae1d48f0b8f97bf97e570a/distribute-0.7.3.zip
[cephu@admin ~]$ unzip distribute-0.7.3.zip
[cephu@admin ~]$ cd distribute-0.7.3
[cephu@admin distribute-0.7.3]$ sudo python setup.py install

3、创建集群(admin)

[cephu@admin ~]$ cd my-cluster/
[cephu@admin my-cluster]$ ceph-deploy new node1
[cephu@admin my-cluster]$ ls
ceph.conf ceph-deploy-ceph.log ceph.mon.keyring
创建成功会有三个文件:ceph.conf, ceph.mon.keyring, and a log file

4、安装luminous-12.2.13在(脚本方式在admin节点,手动方式在node-1、node-2、node-3)

目标:在node1,node2,node3三个节点上安装ceph和ceph-radosgw主包
  方法1:利用官方脚本全自动安装
  #脚本会帮助node1,node2,node3创建epel源和ceph源,并且自动安装ceph和ceph-radosgw主包
  [cephu@admin my-cluster]$ ceph-deploy install --release luminous node1 node2 node3
  #这一步时间很长,容易超时,可以利用手动安装
  如果ceph和ceph-radosgw安装不上,则采用方法2
  在千锋做实验要注意epel的源(切记)
  测试是否安装完成:分别在node1 node2 node3中确认安装版本为12.2.13
  [cephu@node1 ~]$ ceph --version
  ceph version 12.2.13    (584a20eb0237c657dc0567da126be145106aa47e)   luminous (stable)

方法2:手动部署安装三台机器分别创建:三台node节点相同操作
1)安装epel源,用ali的

yum install -y epel-release

2)创建Ceph源,内容如下:官方源

vim /etc/yum.repos.d/ceph.repo

[Ceph]
name=Ceph packages for b a s e a r c h b a s e u r l = h t t p : / / d o w n l o a d . c e p h . c o m / r p m − l u m i n o u s / e l 7 / basearch baseurl=http://download.ceph.com/rpm-luminous/el7/ basearchbaseurl=http://download.ceph.com/rpmluminous/el7/basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1
[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://download.ceph.com/rpm-luminous/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1
[ceph-source]
name=Ceph source packages
baseurl=http://download.ceph.com/rpm-luminous/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1
#下面的是阿里云的ceph源
vim /etc/yum.repos.d/ceph.repo
[Ceph]
name=Ceph packages for b a s e a r c h b a s e u r l = h t t p : / / m i r r o r s . a l i y u n . c o m / c e p h / r p m − l u m i n o u s / e l 7 / basearch baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/ basearchbaseurl=http://mirrors.aliyun.com/ceph/rpmluminous/el7/basearch
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
3)分别在node1,node2,node3节点执行下面命令安装软件,可以完全手动安装,但需要yum的ceph缓存目录结构
  $sudo yum install ceph ceph-radosgw -y
如果因为速度慢导致安装失败可以按ctrl+c,利用它创建的yum缓存目录,手动把安装包下载下来保存到缓存目录/var/cache/yum/x86_64/Ceph/packages目录下再次执行安装命令:
s u d o y u m i n s t a l l c e p h c e p h − r a d o s g w − y     测 试 是 否 安 装 完 成 : 分 别 在 n o d e 1 n o d e 2 n o d e 3 中 确 认 安 装 版 本 为 12.2.13 [ c e p h u @ n o d e 1   ] sudo yum install ceph ceph-radosgw -y   测试是否安装完成:分别在node1 node2 node3中确认安装版本为12.2.13 [cephu@node1 ~] sudoyuminstallcephcephradosgwy  node1node2node312.2.13[cephu@node1 ] ceph --version
ceph version 12.2.13 (584a20eb0237c657dc0567da126be145106aa47e) luminous (stable)

4、初始化mon:admin节点–cephu用户执行

[cephu@admin my-cluster]$ ceph-deploy mon create-initial

5、赋予各个节点使用命令免用户名权限:

[cephu@admin my-cluster]$ ceph-deploy admin node-1 node-2 node-3

6、安装ceph-mgr:只有luminous才有,为使用dashboard做准备

[cephu@admin my-cluster]$ ceph-deploy mgr create node-1

7、添加osd:

注意:各个节点上提供存储空间的磁盘大小不能太小,最好5G以上,注意检查你的磁盘名字
[cephu@admin my-cluster]$ ceph-deploy osd create --data /dev/sdb node-1
[cephu@admin my-cluster]$ ceph-deploy osd create --data /dev/sdb node-2
[cephu@admin my-cluster]$ ceph-deploy osd create --data /dev/sdb node-3
命令中/dev/sdb是在各个节点上为osd准备的空闲磁盘(无需分区格式化,如果有分区需要指定具体分区),通过如下命令查看:
[cephu@admin my-cluster]$ ssh node-1 lsblk -f
最后通过如下命令查看集群状态:
[cephu@admin my-cluster]$ ssh node-1 sudo ceph -s
cluster:
id: b79cb61c-0d55-496b-9c60-b9945aa6b7c5
health: HEALTH_OK

services:
mon: 1 daemons, quorum node-1
mgr: node-1(active)
osd: 3 osds: 3 up, 3 in

data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0B
usage: 3.01GiB used, 12.0GiB / 15.0GiB avail
pgs:

[cephu@admin my-cluster]$ ssh node-2 sudo ceph -s
cluster:
id: b79cb61c-0d55-496b-9c60-b9945aa6b7c5
health: HEALTH_OK

services:
mon: 1 daemons, quorum node-1
mgr: node-1(active)
osd: 3 osds: 3 up, 3 in

data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0B
usage: 3.01GiB used, 12.0GiB / 15.0GiB avail
pgs:

[cephu@admin my-cluster]$ ssh node-3 sudo ceph -s
cluster:
id: b79cb61c-0d55-496b-9c60-b9945aa6b7c5
health: HEALTH_OK

services:
mon: 1 daemons, quorum node-1
mgr: node-1(active)
osd: 3 osds: 3 up, 3 in

data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0B
usage: 3.01GiB used, 12.0GiB / 15.0GiB avail
pgs:
如果显示health_ok,3个osd up就成功了

五:dashboard部署

在node-1上操作,把ceph-mgr和ceph-mon安装在同一个主机上,最好只有一个ceph-mgr
  [root@node1 ~]# su - cephu

1、创建管理域秘钥:

[cephu@node1 ~]$ sudo ceph auth get-or-create mgr.node-1 mon ‘allow profile mgr’ osd ‘allow *’ mds ‘allow *’
[mgr.node1]
  key = AQAePadeYsvJLxAA9Pnmib3S+0Kj1jAeuSQcKw==

2、开启 ceph-mgr 管理域:

[cephu@node1 ~]$ sudo ceph-mgr -i node-1

3、查看ceph的状态:确认mgr的状态为active:

[cephu@node1 ~]$ sudo ceph status
cluster:
id: aec06bc6-428c-49ff-a2c1-2d84808bcb54
health: HEALTH_OK
services:
mon: 1 daemons, quorum node1
mgr: node1(active, starting)
osd: 3 osds: 3 up, 3 in
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0B
usage: 3.01GiB used, 12.0GiB / 15.0GiB avail
pgs:

4、打开dashboard模块:

[cephu@node1 ~]$ sudo ceph mgr module enable dashboard

5、绑定开启dashboard模块的ceph-mgr节点的ip地址:

[cephu@node1 ~]$ sudo ceph config-key set mgr/dashboard/node1/server_addr node-1

6、web登录:浏览器地址栏输入:

ip地址为mgr节点的ip地址,也就是node1的ip地址

在这里插入图片描述

六、配置客户端使用rbd

rbd:全称RADOS block device,是Ceph对外提供的块设备服务
创建块设备之前需要创建存储池,存储池相关命令需要在mon节点执行–也就是规划好的node-1节点

1、创建存储池:

[cephu@node-1 ~]$ sudo ceph osd pool create rbd 128 128 pool ‘rbd’ created
若少于5个OSD, 设置pg_num为128。
5~10个OSD,设置pg_num为512。
10~50个OSD,设置pg_num为4096。

2、初始化存储池

[cephu@node-1 ~]$ sudo rbd pool init rbd

3、准备客户端client(客户端操作):

升级client内核到最新版本,更新前,内核版本为
su - root
[root@ceph-client ~]# uname -r
3.10.0-693.el7.x86_64
升级方法
导入key
[root@client ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
安装elrepo的yum源
[root@client ~]# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
查看可用的系统内核包
[root@client ~]# yum --disablerepo="*" --enablerepo=“elrepo-kernel” list available
安装内核
[root@client ~]# yum --enablerepo=elrepo-kernel install kernel-ml-devel kernelml -y
查看内核默认启动顺序
[root@client ~]# awk -F’ ‘$1=="menuentry " {print $2}’ /etc/grub2.cfg
CentOS Linux (5.7.8-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-1062.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-f0079ffdc1064b91b9f525935ca9c3e7) 7 (Core)
选择处于0位置的新内核为默认启动内核
[root@client ~]# grub2-set-default 0
[root@client ~]# reboot
重启后的内核版本:
[root@client ~]# uname -r
5.7.8-1.el7.elrepo.x86_64
删除旧内核
[root@client ~]# yum remove kernel -y

4、client安装ceph:

环境准备参考部署ceph文档开头环境准备的2-5步
[root@client ~]# yum install -y python-setuptools epel-release
[root@client ~]# vim /etc/yum.repos.d/ceph.repo
[Ceph]
name=Ceph packages for b a s e a r c h b a s e u r l = h t t p : / / m i r r o r s . a l i y u n . c o m / c e p h / r p m − l u m i n o u s / e l 7 / basearch baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/ basearchbaseurl=http://mirrors.aliyun.com/ceph/rpmluminous/el7/basearch
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
[root@client ~]# yum install ceph ceph-radosgw -y
[root@client ~]# ceph --version
ceph version 12.2.13 (584a20eb0237c657dc0567da126be145106aa47e) luminous (stable)

5、在admin节点赋予client使用命令免用户名权限:

[cephu@admin my-cluster]$ ceph-deploy admin client

6、修改client下该文件的读权限:

[root@client ~]# chmod +r /etc/ceph/ceph.client.admin.keyring

7、修改client下的ceph配置文件:这一步是为了解决映射镜像时出错问题

[root@client ~]# vi /etc/ceph/ceph.conf #在global section下添加:
rbd_default_features = 1
client节点创建块设备镜像:单位是M,这里是4个G
[root@client ~]# rbd create foo --size 4096

8、client节点映射镜像到主机

[root@client ~]# rbd map foo --name client.admin

/dev/rbd0

9、client节点格式化块设备:

[root@client ~]# mkfs.ext4 -m 0 /dev/rbd/rbd/foo
client节点mount块设备:
[root@client ~]# mkdir /mnt/ceph-block-device #创建挂载点
[root@client ~]# mount /dev/rbd/rbd/foo /mnt/ceph-block-device #挂载
客户端重起之后,设备需要重新作映射,不然可能会卡死

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值