y1.第一章 Ceph企业级存储实战进阶 -- Ceph简介(一)

1.分布式存储概述

1.1 存储分类

单机存储:
SCSI/IDE/SATA//SAS/USB/PCI-E/SSD/M.2 NVME 协议(提升性能)
在这里插入图片描述
https://item.jd.com/49620677951.html#crumb-wrap
在这里插入图片描述
网络存储(带文件系统):
NFS
Samba

​ NAS (Network Attached Storage:网络附属存储)
​ SAN:SAN(Storage Area Network,存储区域网络)

在这里插入图片描述
存储考虑:
单机:
单机存储的磁盘空间问题、IO 问题、扩容问题、高可用问题:
商业:
商业解决方案-EMC、NetAPP、戴尔、华为、浪潮
分布式存储:
(软件定义的存储Software Defined Storage SDS):
https://www.vmware.com/cn/products/software-defined-storage.html
分布式存储:Ceph,TFS,FastDFS,MogileFS,MooseFS,GlusterFS

在这里插入图片描述
有状态集群数据读写特性:
数据分为读数据和写数据,读可以在任何一个节点读,但是写只能写在特定的节点,如Redis的master、zookeeper 的leader、MySQL 的master 等场景。

1.2 分布式存储数据特性

数据分为数据和元数据:
元数据即是文件的属性信息(文件名、权限(属主、属组)、大小、时间戳等),在分布式存储中当客户端或者应用程序产生的客户端数据被写入到分布式存储系统的时候,会有一个服务(Name Node)提供文件元数据的路由功能,即告诉应用程序去哪个服务器去请求文件内容,然后再有(Data Node)提供数据的读写请求及数据的高可用功能。

分布式存储

在这里插入图片描述
https://www.redhat.com/zh/topics/data-storage/file-block-object-storage
块存储:需要格式化,将文件直接保存到磁盘上。

文件存储:提供数据存储的接口,是由操作系统针对块存储的应用,即由操作系统提供存储接口,应用程序通过调用操作系统将文件保存到块存储进行持久化。

对象存储:也称为基于对象的存储,其中的文件被拆分成多个部分并散布在多个存储服务器,在对象存储中,数据会被分解为称为“对象”的离散单元,并保存在单个存储库中,而不是作为文件夹中的文件或服务器上的块来保存,对象存储需要一个简单的HTTP 应用编程接口(API),以供大多数客户端(各种语言)使用。
https://www.aliyun.com/product/oss

2.Ceph 基础

Ceph 是一个开源的分布式存储系统,同时支持对象存储、块设备、文件系统.
ceph 是一个对象(object)式存储系统,它把每一个待管理的数据流(文件等数据)切分为一到多个固定大小(默认4 兆)的对象数据,并以其为原子单元(原子是构成元素的最小单元)完成数据的读写。
对象数据的底层存储服务是由多个存储主机(host)组成的存储集群,该集群也被称之为RADOS(reliable automatic distributed object store)存储集群,即可靠的、自动化的、分布式的对象存储系统。
librados 是RADOS 存储集群的API,支持C/C++/JAVA/python/ruby/php/go等编程语言客户端。
在这里插入图片描述

2.1 Ceph 的发展史

Ceph 项目起源于于2003 年在加州大学圣克鲁兹分校攻读博士期间的研究课题(Lustre 环境中的可扩展问题).
Lustre 是一种平行分布式文件系统,早在1999 年,由皮特·布拉姆(Peter Braam)创建的集群文件系统公司(Cluster File Systems Inc)开始研发,并于2003 年发布Lustre 1.0 版本.

2007 年Sage Weil(塞奇·威尔)毕业后,Sage Weil 继续全职从事Ceph 工作,2010 年3 月19日,Linus Torvalds 将Ceph 客户端合并到2010 年5 月16 日发布的Linux 内核版本2.6.34,2012年Sage Weil 创建了Inktank Storage 用于为Ceph 提供专业服务和支持,2014 年4 月Redhat以1.75 亿美元收购inktank 公司并开源.
在这里插入图片描述

2.2 ceph 的设计思想

Ceph 的设计旨在实现以下目标:
每一组件皆可扩展
无单点故障
基于软件(而非专用设备)并且开源(无供应商锁定)
在现有的廉价硬件上运行
尽可能自动管理,减少用户干预

2.3 ceph 的版本历史

Ceph 的第一个版本是0.1,发布日期为2008 年1 月,多年来ceph 的版本号一直采用递归更新的方式没变,直到2015 年4 月0.94.1(Hammer 的第一个修正版)发布后,为了避免0.99(以及0.100 或1.00),后期的命名方式发生了改变:

x.0.z - 开发版(给早期测试者和勇士们)
x.1.z - 候选版(用于测试集群、高手们)
x.2.z - 稳定、修正版(给用户们)
x 将从9 算起,它代表Infernalis(首字母I 是英文单词中的第九个字母),这样我们第九个发布周期的第一个开发版就是9.0.0,后续的开发版依次是9.0.0->9.0.1->9.0.2 等,测试版本就是9.1.0->9.1.1->9.1.2,稳定版本就是9.2.0->9.2.1->9.2.2.

在这里插入图片描述
到2017 年底,Ceph 项目都采取每年发布两个稳定版本的做法,从Jewel 版到Nautilus 之前,Ceph 经历过一段时间的每间隔9 个月发布一个新版本,Nautilus 版本开始改为每年春季3 月份发布一个稳定版本,并提供长达26 个月左右的后期版本更新.

https://docs.ceph.com/en/latest/releases/

在这里插入图片描述

2.4 ceph 集群角色定义

https://docs.ceph.com/en/latest/start/intro/
http://docs.ceph.org.cn/start/intro/
在这里插入图片描述
一个ceph 集群的组成部分:

若干的Ceph OSD(对象存储守护程序)
至少需要一个Ceph Monitors 监视器(1,3,5,7...)
两个或以上的Ceph 管理器managers,运行Ceph 文件系统客户端时
还需要高可用的Ceph Metadata Server(文件系统元数据服务器)。

RADOS cluster:由多台host 存储服务器组成的ceph 集群
OSD(Object Storage Daemon):每台存储服务器的磁盘组成的存储空间
Mon(Monitor):ceph 的监视器,维护OSD 和PG 的集群状态,一个ceph 集群至少要有一个mon,可以是一三五七等等这样的奇数个。
Mgr(Manager):负责跟踪运行时指标和Ceph 集群的当前状态,包括存储利用率,当前性能指标和系统负载等。

2.4.1 Monitor(ceph-mon) ceph 监视器

在一个主机上运行的一个守护进程,用于维护集群状态映射(maintains maps of the cluster state),比如ceph 集群中有多少存储池、每个存储池有多少PG 以及存储池和PG 的映射关系等, monitor map, manager map, the OSD map, the MDS map, and the CRUSH map,这些映射是Ceph 守护程序相互协调所需的关键群集状态,此外监视器还负责管理守护程序和客户端之间的身份验证(认证使用cephX 协议)。通常至少需要三个监视器才能实现冗余和高可用性。

2.4.2 Managers(ceph-mgr)的功能

在一个主机上运行的一个守护进程,Ceph Manager 守护程序(ceph-mgr)负责跟踪运行时指标和Ceph 集群的当前状态,包括存储利用率,当前性能指标和系统负载。Ceph Manager 守护程序还托管基于python 的模块来管理和公开Ceph 集群信息,包括基于Web的Ceph 仪表板和REST API。高可用性通常至少需要两个管理器。

2.4.3 Ceph OSDs(对象存储守护程序ceph-osd)

提供存储数据,操作系统上的一个磁盘就是一个OSD 守护程序,OSD 用于处理ceph 集群数据复制,恢复,重新平衡,并通过检查其他Ceph OSD 守护程序的心跳来向Ceph 监视器和管理器提供一些监视信息。通常至少需要3 个Ceph OSD 才能实现冗余和高可用性。

2.4.4 MDS(ceph 元数据服务器ceph-mds)

代表ceph 文件系统(NFS/CIFS)存储元数据,(即Ceph 块设备和Ceph 对象存储不使用MDS)

2.4.5 Ceph 的管理节点

1.ceph 的常用管理接口是一组命令行工具程序,例如rados、ceph、rbd 等命令,ceph 管理员可以从某个特定的ceph-mon 节点执行管理操作
2.推荐使用部署专用的管理节点对ceph 进行配置管理、升级与后期维护,方便后期权限管理,管理节点的权限只对管理人员开放,可以避免一些不必要的误操作的发生。

2.4.6 ceph 术语

http://docs.ceph.org.cn/glossary/

https://docs.ceph.com/en/quincy/glossary/

Ceph Project
Ceph 项目
	关于Ceph的团队、软件、任务和基础架构的统称。

cephx
	Ceph的认证协议,Cephx的运行机制类似Kubernetes,但它没有单故障点。

Ceph Platfrom
Ceph平台
	所有与Ceph相关的软件,包括所有位于https://github.com/ceph的源码。

Ceph System
Ceph Stack
Ceph 系统
Ceph 软件栈
	Ceph之中两个或更多组件的组合。

Ceph Node
Node
Host
Ceph 节点
节点
主机
	Ceph系统内的任意单体机器或服务器。

Ceph Storage Cluster
Ceph Object Store
RADOS
RADOS Cluster
Reliable Autonomic Distributed Object Store
Ceph 存储集群
Ceph 对象存储
RADOS 集群
可靠自主的分布式对象存储
	存储用户数据的核心存储软件集(MON+OSD)。

Ceph Cluster Map
Cluster Map
Ceph 集群运行图
集群运行图
	图集包括监控图、OSD图、PG图、MDS图和CRUSH图。有关详细信息,请参阅集群图。

Ceph Object Storage
Ceph 对象存储
	对象存储“产品”、服务或功能,主要由 Ceph 存储集群和 Ceph 对象网关组成。

Ceph Object Gateway
RADOS Gateway
RGW
Ceph 对象网关
RADOS 网关
	Ceph 的 S3/Swift 网关组件。

Ceph Block Device
RBD
Ceph 块设备
	Ceph 的块存储组件。

Ceph Block Storage
Ceph 块存储
	与 librbd、QEMU 或 Xen 等管理程序以及 libvirt 等管理程序抽象层结合使用时的块存储“产品”、服务或功能。

Ceph File System
CephFS
Ceph FS
Ceph 文件系统
	Ceph 的 POSIX 文件系统组件。有关详细信息,请参阅 CephFS 架构和 Ceph 文件系统。

Cloud Platforms
Cloud Stacks
云平台
云软件栈
	第三方云供应平台,如 OpenStack、CloudStack、OpenNebula、Proxmox VE 等。

Object Storage Device
OSD
对象存储设备
	物理或逻辑存储单元(例如 LUN)。有时,Ceph 用户使用术语“OSD”来指代 Ceph OSD 守护进程,尽管正确的术语是“Ceph OSD”。

Ceph OSD Daemon
Ceph OSD Daemons
Ceph OSD
Ceph 对象存储守护进程
Ceph OSD 守护进程
	Ceph OSD 软件,与逻辑磁盘 (OSD) 交互。有时,Ceph 用户使用术语“OSD”来指代“Ceph OSD 守护进程”,尽管正确的术语是“Ceph OSD”。

OSD id
	定义 OSD 的整数。它由监视器生成,作为创建新 OSD 的一部分。

OSD fsid
	这是一个唯一标识符,用于进一步提高 OSD 的唯一性,它位于 OSD 路径中名为 osd_fsid 的文件中。此 fsid 术语可与 uuid 互换使用

OSD uuid
	就像 OSD fsid 一样,这是 OSD 唯一标识符,可与 fsid 互换使用

bluestore
	OSD BlueStore 是 OSD 守护进程(kraken 和更新版本)的新后端。与文件存储不同,它直接将对象存储在 Ceph 块设备上,无需任何文件系统接口。

filestore
	OSD 守护进程的后端,需要日志并将文件写入文件系统。

Ceph Monitor
MON
Ceph 监视器
监视器
	Ceph 监控软件。

Ceph Manager
MGR
	Ceph 管理器软件,它将整个集群的所有状态收集到一个地方。

Ceph Manager Dashboard
Ceph Dashboard
Dashboard Module
Dashboard Plugin
Dashboard
	一个内置的基于 Web 的 Ceph 管理和监控应用程序,用于管理集群的各个方面和对象。仪表板是作为 Ceph 管理器模块实现的。有关详细信息,请参阅 Ceph 仪表板。

Ceph Metadata Server
MDS
Ceph 元数据服务器
元数据服务器
	Ceph 元数据软件。

Ceph Clients
Ceph Client
Ceph 客户端
	可以访问 Ceph 存储集群的 Ceph 组件的集合。其中包括 Ceph 对象网关、Ceph 块设备、Ceph 文件系统及其相应的库、内核模块和 FUSE。

Ceph Kernel Modules
Ceph 内核模块
	可用于与 Ceph 系统交互的内核模块的集合(例如 ceph.ko、rbd.ko)。

Ceph Client Libraries
Ceph 客户端库
	可用于与 Ceph 系统组件交互的库集合。

Ceph Release
Ceph 发布
	任何不同编号的 Ceph 版本。

Ceph Point Release
Ceph 修正版
	任何仅包含错误或安全修复的临时版本。

Ceph Interim Release
Ceph 临时发布
	尚未通过质量保证测试但可能包含新功能的 Ceph 版本。

Ceph Release Candidate
Ceph 预发布
	Ceph 的主要版本,已经过初始质量保证测试,可供 beta 测试人员使用。

Ceph Stable Release
Ceph 稳定版
	Ceph 的主要版本,之前临时版本中的所有功能都已成功通过质量保证测试。

Ceph Test Framework
Teuthology
Ceph 测试框架
测试方法学
	在 Ceph 上执行脚本测试的软件集合。

CRUSH
	可扩展散列下的受控复制。这是 Ceph 用来计算对象存储位置的算法。

CRUSH rule
	适用于特定池的 CRUSH 数据放置规则。

Pool
Pools
存储池
	池是用于存储对象的逻辑分区。

systemd oneshot
	在 ExecStart 中定义命令的 systemd 类型,该命令将在完成后退出(它不打算守护进程)

LVM tags
	LVM 卷和组的可扩展元数据。它用于存储有关设备及其与 OSD 关系的 Ceph 特定信息。

猜你喜欢

转载自blog.csdn.net/qq_25599925/article/details/123805869