一、ceph简介

  • ceph被称作面向未来的存储,
  • 可以实现的存储方式:
    • 块存储:提供像普通硬盘一样的存储,为使用者提供“硬盘”
    • 文件系统存储:类似于NFS的共享方式,为使用者提供共享文件夹
    • 对象存储:像百度云盘一样,需要使用单独的客户端
  • ceph的构成

  • Ceph OSD 守护进程: Ceph OSD 用于存储数据。此外,Ceph OSD 利用 Ceph 节点的 CPU、内存和网络来执行数据复制、纠删代码、重新平衡、恢复、监控和报告功能。存储节点有几块硬盘用于存储,该节点就会有几个osd进程。
  • Ceph Mon监控器: Ceph Mon维护 Ceph 存储集群映射的主副本和 Ceph 存储群集的当前状态。监控器需要高度一致性,确保对Ceph 存储集群状态达成一致。维护着展示集群状态的各种图表,包括监视器图、 OSD 图、归置组( PG )图、和 CRUSH 图。
  • MDSs: Ceph 元数据服务器( MDS )为 Ceph 文件系统存储元数据。
  • RGW:对象存储网关。主要为访问ceph的软件提供API接口。

二、环境准备

创建4台虚拟机,配置好ip及yum,关闭selinux,firewalld,node[1..3]分别配置2块20G的硬盘

主机名    IP地址
node1    192.168.4.11/24
node2    192.168.4.12/24
node3    192.168.4.13/24
client1    192.168.4.10/24

三、ceph集群搭建步骤

一、ceph为我们提供了一个ceph-deploy工具,可以在某一节点上统一操作全部节点
将Node1作为部署节点,将来的操作都在node1上进行,node1配置免密登录及所有主机配置域名解析:

[root@node1 ~]# ssh-keygen    # 生成密钥对
[root@node1 ~]# for i in {10..13}
> do
> ssh-copy-id 192.168.4.$i
> done

# 在所有的主机上配置名称解析。注意,解析的名字必须是该机器的主机名
[root@node1 ~]# vim /etc/hosts   # 增加4行
... ...
192.168.4.10    client1
192.168.4.11    node1
192.168.4.12    node2
192.168.4.13    node3
[root@node1 ~]# for i in 10 12 13
> do
> scp /etc/hosts 192.168.4.$i:/etc/
> done

二、配置ceph集群所需安装包

# 在3个节点上安装软件包
[root@node1 ~]# for i in node{1..3}
> do
> ssh $i yum install -y ceph-mon ceph-osd ceph-mds ceph-radosgw
> done

安装结束后,最好再在三台虚拟机上再次 yum install -y ceph-mon ceph-osd ceph-mds ceph-radosgw确保已经安装,防止后续报错

三、配置client1为ntp服务器、node1-3成为client1的NTP客户端

(1)client1搭建ntp服务器:

root@client1 ~]# yum install -y chrony
[root@client1 ~]# vim /etc/chrony.conf
 29 allow 192.168.4.0/24    # 授权192.168.4.0/24可以时钟同步
 33 local stratum 10   # 即使没有从一个源同步时钟,也为其他主机提供时间
[root@client1 ~]# systemctl restart chronyd

(2)node1-3成为客户端

[root@node1 ~]# for i in node{1..3}
> do
> ssh $i yum install -y chrony
> done
[root@node1 ~]# vim /etc/chrony.conf  # 只改第7行
  7 server 192.168.4.10 iburst   # 替换gateway
[root@node1 ~]# for i in node{2..3}
> do
> scp /etc/chrony.conf $i:/etc/
> done
[root@node1 ~]# for i in node{1..3}
> do
> ssh $i systemctl restart chronyd
> done                                                                              验证时间是否同步  client1前面有^*表示同步成功
[root@node1 ~]# chronyc sources -v

四、在node1上安装ceph-deploy部署工具,同时创建ceph工作目录ceph-deploy

yum install -y ceph-deploy

[root@node1 ~]# yum install -y ceph-deploy

[root@node1 ~]# mkdir ceph-cluster
[root@node1 ~]# cd ceph-cluster

五、创建一个新的集群,包含(node1-node3),并修改配置文件

[root@node1 ceph-cluster]# ceph-deploy new node{1..3}
[root@node1 ceph-cluster]# ls
ceph.conf  ceph-deploy-ceph.log  ceph.mon.keyring
[root@node1 ceph-cluster]# tree .
.
├── ceph.conf               # 集群配置文件
├── ceph-deploy-ceph.log    # 日志文件
└── ceph.mon.keyring        # 共享密钥

修改配置文件,开启块存储快照功能,此步非常之重要!!!

root@node1 ceph-cluster]# vim ceph.conf   # 尾部追加一行如下
rbd_default_features = 1

六、初始化monitor及查看集群状态(三台机器已成为1个ceph)

[node1 ceph-cluster]# ceph-deploy mon create-initial查看集群状态ceph -s
health HEALTH_ERR   # 因为还没有硬盘

常见错误:装包不全、虚拟机内存不够,如果安装过程中出现keyring...这种报错,可执行命令 ceph-deploy gatherkeys node{1..3},执行该命令后,所有ceph相关安装包必须重新安装!

七、创建OSD(分区表及分区)

(1)初始化各主机硬盘(做成gpt分区表)

# 初始化各主机的硬盘。vmware应该是sdb和sdc,硬盘根据实际情况名称,可lsblk命令查看
[root@node1 ceph-cluster]# ceph-deploy disk zap node1:vdb node1:vdc
[root@node1 ceph-cluster]# ceph-deploy disk zap node2:vdb node2:vdc
[root@node1 ceph-cluster]# ceph-deploy disk zap node3:vdb node3:vdc

(2)创建存储空间(分区)

ceph会硬盘分为两个分区,一个分区大小为5GB,用于保存ceph的内部资源;另一个分区是剩余全部空间
[root@node1 ceph-cluster]# ceph-deploy osd create node1:vd{b,c}
[root@node1 ceph-cluster]# lsblk
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda    253:0    0  30G  0 disk
└─vda1 253:1    0  30G  0 part /
vdb    253:16   0  20G  0 disk
├─vdb1 253:17   0  15G  0 part /var/lib/ceph/osd/ceph-0
└─vdb2 253:18   0   5G  0 part
vdc    253:32   0  20G  0 disk
├─vdc1 253:33   0  15G  0 part /var/lib/ceph/osd/ceph-1
└─vdc2 253:34   0   5G  0 part
# 将会出现2个osd进程,因为有两块硬盘用于ceph
[root@node1 ceph-cluster]# systemctl status ceph-osd*

# 继续初始化其他节点的OSD
[root@node1 ceph-cluster]# ceph-deploy osd create node2:vd{b,c}
[root@node1 ceph-cluster]# ceph-deploy osd create node3:vd{b,c}

(3)查看集群状态 ceph -s
health HEALTH_OK ,一切正常

行文至此,一个ceph集群已搭建完毕,接下来浅谈其运用

四、ceph集群运用

前文已经提到ceph可以实现的存储方式:
–块存储:提供像普通硬盘一样的存储,为使用者提供“硬盘”
–文件系统存储:类似于NFS的共享方式,为使用者提供共享文件夹
–对象存储:像百度云盘一样,需要使用单独的客户端

(一)ceph-块存储

1.1块存储介绍:

块存储,就是可以提供像硬盘一样的设备。使用块存储的节点,第一次连接块设备,需要对块设备进行分区、格式化,然后挂载使用。ceph提供存储时,需要使用存储池。为了给客户端提供存储资源,需要创建名为存储池的容器。存储池类似于逻辑卷管理中的卷组。卷组中包含很多硬盘和分区;存储池中包含各节点上的硬盘。

1.2快存储使用

存储池查看ceph osd lspools ,默认有一个名为rbd的存储池,其编号为0,可通过ceph df,查看存储池大小。此时虽然有90G,但是一个数据有3个副本。所以可用为30G,保存的副本数量可通过ceph osd pool get rbd size查看,通过ceph osd pool set rbd size  4进行副本数量修改

正课:

1.2.1在默认存储池中,创建一个名为demo-image大小为10G的镜像,提供给客户端使用

[root@node1 ceph-cluster]# rbd create demo-image --size 10G
# 查看默认存储池中的镜像
[root@node1 ceph-cluster]# rbd list
demo-image
# 查看demo-image的详细信息
[root@node1 ceph-cluster]# rbd info demo-image
rbd image 'demo-image':
    size 10240 MB in 2560 objects
    order 22 (4096 kB objects)
    block_name_prefix: rbd_data.1035238e1f29
    format: 2
    features: layering
    flags:

1.2.2客户端使用块存储,以下操作均在客户端client,除了(2)

思路:

•怎么用?装软件
•ceph集群在哪?通过配置文件说明集群地址
•权限。keyring文件

(1)安装ceph客户端软件yum install -y ceph-common

(2)将配置文件和密钥keyring文件拷贝给客户端(指定ceph地址)

[root@node1 ceph-cluster]# scp /etc/ceph/ceph.conf 192.168.4.10:/etc/ceph/
[root@node1 ceph-cluster]# scp /etc/ceph/ceph.client.admin.keyring 192.168.4.10:/etc/ceph/

(3)客户端查看镜像rbd list,并进行映射到本地

rbd map demo-image;将demo-image镜像映射;rbd showmapped 查看映射;

(4)客户端挂载格式化使用

root@client1 ~]# mkfs.xfs /dev/rbd0
[root@client1 ~]# mount /dev/rbd0 /mnt/
[root@client1 ~]# df -h /mnt/

(二)ceph-文件系统

2.1ceph文件系统介绍

文件系统:相当于是组织数据存储的方式#就是共享文件夹
•格式化时,就是在为存储创建文件系统。
•Linux对ceph有很好的支持,可以把ceph文件系统直接挂载到本地。
•要想实现文件系统的数据存储方式,需要有MDS组件
•安装并启用mds

2.2实现

(1)在node3节点上安装MDS ,ssh node3 yum install -y ceph-mds

(2)node1配置让node3有MDS服务。可以部署多个,防止单点故障,如node2

[root@node1 ~]# cd ceph-cluster/
[root@node1 ceph-cluster]# ceph-deploy mds create node3

注:MDS(元数据)介绍

元数据就是描述数据的属性。如属主、属组、权限等。
•ceph文件系统中,数据和元数据是分开存储的
•新建存储池
–归置组PG:存储池包含PG。PG是一个容器,用于存储数据。
–为了管理方便,将数量众多的数据放到不同的PG中管理,而不是直接把所有的数据扁平化存放。
–通常一个存储池中创建100个PG。

(3)新建一个名为data1的存储池,目的是存储数据,有100个PG:ceph osd pool create data1 100

(4)新建一个名为metadata1的存储池,目的是存储元数据ceph osd pool create metadata1 100

(5)创建名为myfs1的cephfs,数据保存到data1中,元数据保存到metadata1中:ceph fs new myfs1 metadata1 data1#先写就先存元数据

(6)客户端使用cephfs

挂载文件系统需要密码。查看密码

cat /etc/ceph/ceph.client.admin.keyring
[client.admin]
    key = AQBmhINh1IZjHBAAvgk8m/FhyLiH4DCC

客户端挂载使用,三个存储ip任选其一:

# -t 指定文件系统类型。-o是选项,提供用户名和密码
# cephfs的端口号默认是6789
[root@client1 ~]# mkdir /mydata
[root@client1 ~]# mount -t ceph -o name=admin,secret=AQBmhINh1IZjHBAAvgk8m/FhyLiH4DCCrnrdPQ== 192.168.4.13:6789:/ /mydata
[root@client1 ~]# df -h /mydata
文件系统             容量  已用  可用 已用% 挂载点
192.168.4.13:6789:/   90G  520M   90G    1% /mydata

Ceph集群搭建及其运用(块存储、ceph文件系统)相关推荐

  1. 【CEPH-初识篇】ceph详细介绍+“ 一 ” 篇解决ceph集群搭建, “ 三 ” 大(对象、块、文件)存储使用

    文章目录 前言 简介(理论篇) 逻辑结构 数据存储原理 三大存储 RADOSGW(对象网关) BRD(块存储) CEPHFS(文件存储) 所有组件结合起来 POOL.PG简介 组件结合 搭建ceph( ...

  2. Ceph集群搭建系列(六):RBD块设备的使用场景、原理分析及其创建

    一.前言 下图数据出自2018年ceph社区用户调查报告,Ceph RBD接口的使用场景主要是VM和DB数据库. 而使用Ceph RBD的接口方式的用户数据如下,主要是librbd 和 kernel ...

  3. ceph实战之ceph集群搭建

    Ceph基础 一.ceph起源 Ceph项目最早起源于Sage就读博士期间的工作(最早的成果于2004年发表),并随后贡献给开源社区.在经过了数年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用 ...

  4. 三 Ceph集群搭建

    Ceph集群 集群组件 Ceph集群包括Ceph OSD,Ceph Monitor两种守护进程. Ceph OSD(Object Storage Device): 功能是存储数据,处理数据的复制.恢复 ...

  5. 【Linux集群教程】07 块存储之 iSCSI 服务

    6 块存储之 iSCSI 服务 6.1 iSCSI 概述 6.1.1 iSCSI 与 SCSI 原理差别 小型计算机系统接口(英语:Small Computer System Interface; 简 ...

  6. Ceph集群搭建(octopus版)之 CephFS导出nfs共享

    当前ceph版本估计只有octopus是最新最稳也是最好用的 Linux系统选择CentOS Stream 8因为他维护到2024年,还是很好用的 准备3台机所有搭建在192.168.10.25这台机 ...

  7. Ceph分布式文件系统集群搭建详解

    1.Ceph分布式文件系统简介 Ceph是一种为优秀的性能.可靠性和可扩展性而设计的统一的.分布式文件系统. Ceph 独一无二地在一个统一的系统中同时提供了对象.块.和文件存储功能. 基开发目标是: ...

  8. K8s上使用rook搭建Ceph集群

    目录 准备工作 一.安装kubectl 二:win10 安装Docker Desktop for Windows(非必须) 三.Harbor 知识补充: 1.Ceph mgr和mon 2:Ceph 中 ...

  9. JavaEE企业级实战项目 智牛股第四天 NACOS、ceph集群和Netty

    交易平台 - Day 4 学习目标 目标1:Nacos背景与基本原理 目标2:Nacos的使用 目标3:Ceph分布式存储原理 目标4:Ceph部署与使用 目标5:Netty通讯机制 第1章 Naco ...

最新文章

  1. 人脸检测--SSH: Single Stage Headless Face Detector
  2. Centos7 下安装配置tomcat7
  3. HTML/CSS——PC端QQ飞车官网首页
  4. AutoHotkey纯命令获取Chrome等浏览器的当前网址
  5. Struts 2初体验
  6. java8 默认方法_Java 8的默认方法:可以做什么和不能做什么?
  7. 求生之路2浩方联机开始显示服务器,求生之路2怎么联机_求生之路2浩方联机教程_快吧单机游戏...
  8. 【OpenCV 例程200篇】31. 图像金字塔(cv2.pyrDown)
  9. android 调试好事工具类,Android 工具类之总结 Hua
  10. Xpath在选择器中正确,在代码中返回的是空列表问题
  11. latex 跳转标签_LaTeX技巧933: 在macOS上配置VSCode与Skim的LaTeX正反跳转
  12. 对于 指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针 的简单理解
  13. Linux服务器文件权限被改
  14. spite用法 java_despite 和in spite of 用法
  15. 【递归练习】阿克曼函数
  16. office 2016 install(office2016组件自定义安装程序) v5.9.3中文绿色版
  17. 苹果怎么解ID锁?苹果ID锁解锁办法汇总
  18. Java中Object转化为int类型
  19. 电脑屏幕网页字体大小怎么调整?
  20. Halcon 第四章『图像特征和提取』◆第2节:基于灰度值特征

热门文章

  1. python一切皆对象 对象都有类_Python小世界:彻底搞懂Python一切皆对象!!!
  2. R语言入门——工作空间管理函数
  3. vue+elemnt ul 图片上传隐藏按钮+图片回显
  4. c语言数据类型的心得体会,C语言学习与感悟——《C语言学习基本框架》
  5. java excel排序的方法_Java怎么对Excel进行自定义排序?
  6. 使用XSSFWork创建的xlsx后缀Excel文件无法打开
  7. python补充超级鹰代码
  8. 如何用手机播放电脑的声音
  9. c调python类_C调和弦及组成音
  10. breezy,dapper,edgy,feisty的含义