技术漫谈|搭建自己的ceph RBD

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


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

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

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

技术漫谈|搭建自己的ceph RBD

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 RBD

CEPH 块设备

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

技术漫谈|搭建自己的ceph RBD

ceph安装

技术漫谈|搭建自己的ceph RBD

配置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/

gpgcheck=0

升级系统

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 RBD

配置免密钥登陆

技术漫谈|搭建自己的ceph RBD

创建集群配置

技术漫谈|搭建自己的ceph RBD

修改集群配置文件

技术漫谈|搭建自己的ceph RBD

安装ceph组件

技术漫谈|搭建自己的ceph RBD

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 RBD

ceph-deploy gatherkeys ceph2

ceph-deploy gatherkeys ceph3

查看磁盘

技术漫谈|搭建自己的ceph RBD

准备OSD

技术漫谈|搭建自己的ceph RBD

激活OSD

技术漫谈|搭建自己的ceph RBD

查看OSD节点

技术漫谈|搭建自己的ceph RBD

查看磁盘分区情况

技术漫谈|搭建自己的ceph RBD

分发key

技术漫谈|搭建自己的ceph RBD

技术漫谈|搭建自己的ceph RBD

查看集群状态

技术漫谈|搭建自己的ceph RBD

Ceph存储空间查看

技术漫谈|搭建自己的ceph RBD

查看OSD状态

技术漫谈|搭建自己的ceph RBD

查看OSD dump

技术漫谈|搭建自己的ceph RBD

ceph rbd

client端配置

技术漫谈|搭建自己的ceph RBD

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

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

技术漫谈|搭建自己的ceph RBD

测试可用

技术漫谈|搭建自己的ceph RBD

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

技术漫谈|搭建自己的ceph RBD


分享到:


相關文章: