Ceph 独一无二地用统一的系统提供了对象、块、和文件存储功能,它可靠性高、管理简便、并且是自由软件。 Ceph 的强大足以改变公司的 IT 基础架构、和管理海量数据。 Ceph 可提供极大的伸缩性——供成千用户访问 PB 乃至 EB 级的数据。 Ceph 节点以普通硬件和智能守护进程作为支撑点, Ceph 存储集群组织起了大量节点,它们之间靠相互通讯来复制数据、并动态地重分布数据。

如图为应用场景示意图,其核心是RADOS,也即高可用、自动化的分布式对象存储,该模块负责对OSD的自动化运行,保证整个存储系统的可用性。同时,该模块通过一个名为librados的公共库对外提供存储服务,块存储和对象存储都依赖该动态库。

同时,Ceph本身封装了对象存储的接口和块存储的接口。对象存储的接口包括对象网关和对象存储访问库等。块存储接口包括块存储访问动态库、Python绑定库和内核态的虚拟块设备。

Ceph存储系统的逻辑层次结构如下图所示:

Ceph存储系统的组件

Ceph集群的核心组件是OSD和MON,其中OSD用于数据的具体存储操作,MON用于一些“映射图”,通过该“映射图”客户端可以计算出数据的存放位置,并将数据直接发送给相应的OSD处理。由于OSD和MON之间存在监控关系,并且通过相应的策略进行相关调度,保证自动故障处理和负载均衡等,因此将OSD、MON以及这些策略统称为RADOS。

为了便于对RADOS的管理和使用,在RADOS之上实现了一套动态库(librados),动态库通常位于客户端,通过网络与RADOS交互命令和数据。

Ceph天生就是对象存储,rados本身提供了一套以对象方式存储和访问Ceph集群数据的接口。而Ceph又同时提供了块存储和文件系统存储的功能,该功能基于Ceph的对象存储实现。

OSD

OSD的全称是Object Storage Device,OSD通常是一个物理的存储设备(例如磁盘),也可以是逻辑的存储设备(例如磁盘上的某个文件夹)。当然,这里的存储设备不限于服务器上的本地硬盘,也可以是通过iSCSI协议或者FC协议映射的LUN。 有时候提及的OSD实际上是OSD守护进程,视语境而定。

OSD守护进程

OSD守护进程是OSD的软件实现,OSD守护进程用来对OSD进行管理(数据读写等),客户端数据交互的对象是OSD守护进程。

MON

MON是Ceph集群的监控软件,一个守护进程,其中包含若干“映射图”信息。客户端向Ceph集群写数据前通常要向MON请求,获取最新的“映射图”,并通过其计算出数据的存放位置。

librados

librados是一个动态库程序,其提供了客户端访问Ceph集群的原生态统一接口。其它接口或者命令行工具都基于该动态库实现。

在librados中实现了Crush算法和网络通信等公共功能,数据请求操作在librados计算完成后可以直接与对应的OSD交互进行数据传输

CEPH 块设备

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

ceph安装

配置ceph yum源

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

[ceph]

name=ceph

baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/

gpgcheck=0

[ceph-noarch]

name=cephnoarch

baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/noarch/

升级系统

yum update -y && yum install ceph-deploy -y

安装ntp

yum install -y ntp ntpdate ntp-doc

ntpdate 0.us.pool.ntp.org

hwclock –systohc

systemctl enable ntpd.service

systemctl start ntpd.service

vmware需要安装的组件

yum install -y open-vm-tools

创建用户

useradd -d /home/cephuser -m cephuser

passwd cephuser

用户权限

echo “cephuser ALL = (root) NOPASSWD:ALL” | sudo tee /etc/sudoers.d/cephuser

chmod 0440 /etc/sudoers.d/cephuser

sed -i s’/Defaults requiretty/#Defaults requiretty’/g /etc/sudoers

关闭selinux

sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config

关闭防火墙

systemctl enable firewalld

firewall-cmd –set-default-zone=trusted

firewall-cmd –complete-reload

firewall-cmd –list-all

安装ceph(ceph节点)

yum -y install ceph

ceph –version

ceph version 10.2.9 (2ee413f77150c0f375ff6f10edd6c8f9c7d060d0)

格式化磁盘(ceph节点)

配置免密钥登陆

创建集群配置

修改集群配置文件

安装ceph组件

ceph-deploy install –no-adjust-repos ceph2

ceph-deploy install –no-adjust-repos ceph3

查看密钥

[cephuser@ceph1 cluster]$ ls

ceph.bootstrap-mds.keyring ceph.bootstrap-rgw.keyring ceph-deploy-ceph.log

ceph.bootstrap-mgr.keyring ceph.client.admin.keyring ceph.mon.keyring

ceph.bootstrap-osd.keyring ceph.conf

该命令将创建监视器键,使用’ceph’命令检查并获取密钥。

ceph-deploy gatherkeys ceph2

ceph-deploy gatherkeys ceph3

查看磁盘

准备OSD

激活OSD

查看OSD节点

查看磁盘分区情况

分发key

所有节点给admin key 授权

查看集群状态

Ceph存储空间查看

查看OSD状态

查看OSD dump

ceph rbd

client端配置

Ceph提供rbd命令来管理rados块设备图像。我们可以使用rbd命令创建新映像,调整大小,创建快照并导出我们的块设备。

创建一个大小为40GB的新的rbd映像,然后在rbd列表中检查’ disk01 ‘。

测试可用

到此ceph的RBD搭建完毕,ceph的RBD作为块设备像硬盘一样直接挂载,未来在容器平台会有很大的应用场景。

Ceph rdb的更多相关文章

  1. 基于Ubuntu 18.04.5 LTS 部署Ceph集群测试及Ceph RDB的使用。

    1.ceph简介 Ceph在一个统一的系统中独特地提供对象.块和文件存储 1.1 ceph官网架构图 1.2 架构解释   CEPH 对象存储 CEPH 块设备 CEPH 文件系统 RESTful 接 ...

  2. 理解 QEMU/KVM 和 Ceph(3):存储卷挂接和设备名称

    本系列文章会总结 QEMU/KVM 和 Ceph 之间的整合: (1)QEMU-KVM 和 Ceph RBD 的 缓存机制总结 (2)QEMU 的 RBD 块驱动(block driver) (3)存 ...

  3. 理解 OpenStack + Ceph (5):OpenStack 与 Ceph 之间的集成 [OpenStack Integration with Ceph]

    理解 OpenStack + Ceph 系列文章: (1)安装和部署 (2)Ceph RBD 接口和工具 (3)Ceph 物理和逻辑结构 (4)Ceph 的基础数据结构 (5)Ceph 与 OpenS ...

  4. 理解 OpenStack + Ceph (3):Ceph RBD 接口和工具 [Ceph RBD API and Tools]

    本系列文章会深入研究 Ceph 以及 Ceph 和 OpenStack 的集成: (1)安装和部署 (2)Ceph RBD 接口和工具 (3)Ceph 物理和逻辑结构 (4)Ceph 的基础数据结构 ...

  5. kubernetes配置使用ceph动态存储

    在k8s集群中配置ceph 3.1.使用cephfs (1) 在ceph集群创建cephfs #以下操作在ceph集群的admin或者mon节点上执行 #创建pool来存储数据和元数据 ceph os ...

  6. ERROR: modinfo: could not find module rbd FATAL

    CENTOS 6.5 安装CEPH RDB 错误 ERROR: modinfo: could not find module rbd FATAL: Module rbd not found. rbd: ...

  7. 理解OpenShift(4):用户及权限管理

    理解OpenShift(1):网络之 Router 和 Route 理解OpenShift(2):网络之 DNS(域名服务) 理解OpenShift(3):网络之 SDN 理解OpenShift(4) ...

  8. k8s资源对象及API群组

    REST是representational state transfer的缩写,意为“表征状态转移”,它是一种程序架构风格,基本元素为资源(resource).表征(representation)和行 ...

  9. Redis哨兵集群创建脚本--v2

    1. 基础环境 操作系统版本  CentOS Linux release 7.6.1810 (Core) Docker 版本  19.03.11, build 42e35e61f3 Redis  版本 ...

随机推荐

  1. 【设计模式】组合模式 Composite Pattern

    树形结构是软件行业很常见的一种结构,几乎随处可见,  比如: HTML 页面中的DOM,产品的分类,通常一些应用或网站的菜单,Windows Form 中的控件继承关系,Android中的View继承 ...

  2. 3D GIS 应用开发 —— 基于 Mapbox GL 的实践总结

    最近在折腾的 web 端的可视化项目,由于相关业务的需要,用到了 Mapbox 这一地图开发的神器.在此先奉上一个基于mapbox-gl实现的demo(来源:uber的deck.gl项目): 下面我们 ...

  3. VSCode 下载Models 报错

    VSCode调试部分代码时,报错,提示不能自动获取Models.报错信息如下. go: golang.org/x/crypto@v0.-80db560fac1f: unrecognized impor ...

  4. 从0开始的Python学习018更多的Python内容

    特殊的方法 之前学习的都是一些常用的方法,为了使我们的学习更加的完整,我们在这里学习一些特殊的方法. 一般说来,特殊的方法都被用来模仿某个行为.例如,如果你想要为你的类使用x[key]这样的索引操作( ...

  5. C语言面试基础知识整理

    一.预处理 1.什么是预编译?何时需要预编译? (1)预编译又称预处理,是做些代码文本的替换工作,即程序执行前的一些预处理工作.主要处理#开头的指令,如拷贝#include包含的文件代码.替换#def ...

  6. 10分钟学会在Ubuntu 18.04 LTS上安装NFS服务器和客户端

    https://www.linuxidc.com/Linux/2018-11/155331.htm

  7. ZHS16GBK的数据库导入到字符集为AL32UTF8的数据库

    字符集为ZHS16GBK的数据库导入到字符集为AL32UTF8的数据库  相信大家都对字符集有相当的了解了,废话就不多说了!直接步入正题:这里主要是测试含有 汉字的数据从ZHS16GBK的数据库导入到 ...

  8. Effective C++ 第0章 copy constructor和copy assignment operator

    拷贝构造函数(copy constructor)被用来以一个对象来初始化同类型的另一个对象,拷贝赋值运算符(copy assignment operator)被用来将一个对象中的值拷贝到同类型的另一个 ...

  9. Winform开发中对界面的组织布局

    在设计界面的时候,不管是在Web端,还是在Winform端,或者是WPF或者移动界面等应用上,我们对界面的组织布局,一直是比较有趣的话题,而组织界面的好坏从用户的感受来看,可以提供程序可使用性高低,也 ...

  10. MATLAB GUI界面设计------“轴”组件配置

    1> Fontsize            10         %字体大小 2> FontUnits           normalized      %采用相对度量单位,缩放时保持 ...