Ceph rdb
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作为块设备像硬盘一样直接挂载,未来在容器平台会有很大的应用场景。