Ceph基本情况介绍
Ceph基本情况的介绍
Ceph是一个分布式存储软件。
它支持用3种方式存储数据,分别是:对象存储、块设备存储、分布式文件系统存储。
Ceph最初的目标是做一个分布式文件系统,直到现在这个目标也不能算完美实现,目前官网上对它的文件系统还是谨慎推荐的态度(不建议对线上核心业务部署),业界使用 Ceph ,大多是用它的对象存储。
本文对Ceph的基本面做一个介绍。
提纲
1、分布式存储系统概述
2、Ceph基本介绍和Ceph基本概念介绍
3、Ceph的架构
4、Ceph集群的组件介绍
5、Ceph的安装
6、Ceph的特点
7、Ceph的应用领域
1、分布式存储系统概述
==================
一般人使用电脑,看到的存储数据的方式,就是使用操作系统的文件系统把数据以文件的形式存储起来。IT行业的专业人员,不仅仅了解操作系统的文件系统,还了解另外的数据存储系统,比如数据库,像MySQL等软件。不过,这些都是在个人用户、或者数据量很小的情况下才会使用的数据存储系统。
如果要存储的数据量很大,单机的文件系统存储不下,那么很多IT的工程师就开发分布式存储系统,利用多个服务器组成的集群来存储数据,这样分布式存储系统有很多种类型,比如分布式文件系统HDFS等。
所谓的分布式存储系统,就是一个软件,用它来管理多个服务器上的存储设备,把这些存储统一管理起来,对存储系统的用户提供统一的存储接口。
这里要介绍的Ceph也就是一个分布式存储软件。
2、Ceph基本介绍和Ceph基本概念介绍
===============================
Ceph是一个分布式存储软件,它支持用3种方式存储数据,分别是:对象存储、块设备存储、分布式文件系统存储。也就是说它可以当成一个分布式文件系统来使用,用来存储文件形式的数据,但是它还支持其他两种存储方式,也就是用对象的方式存储数据、使用块设备的方式存储数据。
Ceph最初的目标是做一个分布式文件系统,直到现在这个目标也不能算完美实现,目前官网上对它的文件系统还是谨慎推荐的态度(不建议对线上核心业务部署),业界使用 Ceph ,大多是用它的对象存储。
下面是基本概念介绍。
(1)对象存储
对象:指的文件,比如一个txt格式的文件,可以看成一个对象,一个doc格式的文件也可以看成一个对象,一个jpg格式的文件也可以看成一个对象。这里的对象实际就是文件。这里的对象和面向对象编程语言中的对象不是一个概念。
对象存储,指的就是把文件按照对象来存储,实际数据存放在文件中。
(2)块存储
块:块是一种有序的字节块,也就说一块指的是一个字节块,或者说一块字节,比如一个字节数组,可以看成是一个字节块。
块存储,就是按照字节块来一块一块的存储数据。
3、Ceph的架构
=============
下图是Ceph的架构图。
Ceph这个软件,分为3层,最底层是Rados对象存储系统、中间是一个librados,也就是一个接口层,对外提供访问Rados对象存储系统的接口API,最上层又提供了三种不同的存储方式:对象存储、块设备存储、文件系统存储。
特别解释一下rados: 它是Reliable Autonomic Distributed Object Store首字母简写,中文翻译过来是:可靠自主的分部署对象存储。
从这张图片我们可以看到,不管Ceph的用户是使用3种方式种哪一种存储数据到Ceph,其实Ceph在底层都是以对象来存储的。
下面对架构种的三层具体介绍。
(1)RADOS
从架构图中可以看到最底层的是RADOS,RADOS自身是一个完整的分布式对象存储系统。
它具有可靠、智能、分布式等特性,Ceph的高可靠、高可拓展、高性能、高自动化都是由这一层来提供的,用户数据的存储最终也都是通过这一层来进行存储的,RADOS可以说就是Ceph的核心。
RADOS系统主要由两部分组成,分别是OSD和Monitor。
(2)Librados
基于RADOS层的上一层是LIBRADOS,LIBRADOS是一个库,它允许应用程序通过访问该库来与RADOS系统进行交互,支持多种编程语言,比如C、C++、Python等。
(3)最上层
基于LIBRADOS层开发的又可以看到有三层,分别是RADOSGW、RBD和CEPH FS。
RADOSGW(Rados Gate Way):RADOSGW是一套基于当前流行的RESTFUL协议的网关,并且兼容S3和Swift。
RBD(Rados Block Device):RBD通过Linux内核客户端和QEMU/KVM驱动来提供一个分布式的块设备。
CEPH FS:CEPH FS通过Linux内核客户端和FUSE来提供一个兼容POSIX的文件系统。
4、Ceph集群的组件介绍
===================
Ceph集群的物理部署逻辑示意图如下所示。
通常Ceph集群由很多OSD进程组成,OSD部署在不同的服务器上。
同时又有若干个Monitor进程(MON),MON之间相互监控,同时又对OSD的状态进行监控。
客户端通过网络建立与Ceph集群的关联,也即访问关系。客户端通过Mon节点获知集群的状态,其中包含OSD节点的分布情况等内容。
Ceph是一个分布式存储软件,所以它的安装肯定是在集群的多台服务器上逐一安装每个节点需要部署的东西。
一个Ceph存储集群至少有一个Ceph Monitor进程、一个Ceph Manager进程、一个Ceph OSD(Object Storage Daemon)进程,如果需要运行Ceph文件系统的客户端,还需要部署一个Ceph元数据服务器进程。
Ceph OSD:
Ceph的OSD(Object Storage Device)守护进程。主要功能包括:存储数据、副本数据处理、数据恢复、数据回补、平衡数据分布,并将数据相关的一些监控信息提供给Ceph Moniter,以便Ceph Moniter来检查其他OSD的心跳状态。一个Ceph OSD存储集群,要求至少两个Ceph OSD,才能有效的保存两份数据。注意,这里的两个Ceph OSD是指运行在两台物理服务器上,并不是在一台物理服务器上运行两个Ceph OSD的守护进程。通常,冗余和高可用性至少需要3个Ceph OSD。
Monitor:
Ceph的Monitor守护进程,主要功能是维护集群状态的表组,这个表组中包含了多张表,其中有Moniter map、OSD map、PG(Placement Group) map、CRUSH map。 这些映射是Ceph守护进程之间相互协调的关键簇状态。 监视器还负责管理守护进程和客户端之间的身份验证。 通常需要至少三个监视器来实现冗余和高可用性。
MDS(Meta Data Server):
Ceph的MDS(Meta Data Server)守护进程,主要保存的是Ceph文件系统的元数据。注意,对于Ceph的块设备和Ceph对象存储都不需要Ceph MDS守护进程。Ceph MDS为基于POSIX文件系统的用户提供了一些基础命令的执行,比如ls、find等,这样可以很大程度降低Ceph存储集群的压力。
Managers:
Ceph的Managers(Ceph Manager),守护进程(ceph-mgr)负责跟踪运行时间指标和Ceph群集的当前状态,包括存储利用率,当前性能指标和系统负载。 Ceph Manager守护程序还托管基于python的插件来管理和公开Ceph集群信息,包括基于Web的仪表板和REST API。 通常,至少有两名Manager需要高可用性。
5、Ceph的安装概述
================
这里对Ceph的安装过程进行总体的概述,详细的安装过程另外写文章介绍。
6、Ceph的特点
=============
统一存储
无任何单点故障
数据多份冗余
存储容量可扩展
自动容错及故障自愈
7、Ceph的应用领域
=================
Ceph的应用场景主要由它的架构确定,Ceph提供对象存储、块存储和文件存储,主要由4种应用:
第一类:librados应用
通俗的说,Librados提供了应用程序对RADOS的直接访问,目前Librados已经提供了对C、C++、Java、Python、Ruby和PHP的支持。它支持单个单项的原子操作,如同时更新数据和属性、CAS操作,同时有对象粒度的快照操作。它的实现是基于RADOS的插件API,也就是在RADOS上运行的封装库。
第二类:radosgw应用
这类应用基于Librados之上,增加了HTTP协议,提供RESTful接口并且兼容S3、Swfit接口。RADOSGW将Ceph集群作为分布式对象存储,对外提供服务。
第三类:librbd应用
这类应用也是基于Librados之上的,细分为下面两种应用场景。
第一种应用场景为虚拟机提供块设备。通过Librbd可以创建一个块设备(Container),然后通过QEMU/KVM附加到VM上。通过Container和VM的解耦,使得块设备可以被绑定到不同的VM上。
第二种应用场景为主机提供块设备。这种场景是传统意义上的理解的块存储。
以上两种方式都是将一个虚拟的块设备分片存储在RADOS中,都会利用数据条带化提高数据并行传输,都支持块设备的快照、COW(Copy-On-Write)克隆。最重要的是RBD还支持Live migration。
第四类:CephFS(Ceph文件系统)应用
这类应用是基于RADOS实现的PB级分布式文件系统,其中引入MDS(Meta Date Server),它主要为兼容POSIX文件系统提供元数据,比如文件目录和文件元数据。同时MDS会将元数据存储在RADOS中,这样元数据本身也达到了并行化,可以大大加快文件操作的速度。MDS本身不为Client提供数据文件,只为Client提供对元数据的操作。当Client打开一个文件时,会查询并更新MDS相应的元数据(如文件包括的对象信息),然后再根据提供的对象信息直接从RADOS中得到文件数据。
参考资料:
1、玩转Ceph的正确姿势,https://www.cnblogs.com/me115/p/6366374.html,这篇介绍的比较简明、清楚
2、Ceph基础知识和基础架构认识,https://www.cnblogs.com/luohaixian/p/8087591.html,这篇非常理论化,必须在看完第一篇并且确实理解了之后,才能看,否则看了也一头雾水
3、Ceph中文文档,http://docs.ceph.org.cn/start/intro/,没看,仅仅做参看
4、Ceph官方网站,http://docs.ceph.com/docs/master/start/intro/,看了第一页
5、Ceph简介和集群搭建,http://blog.51niux.com/?id=161,看了ceph特点、集群组件、cehp应用场景
6、Ceph术语,https://blog.csdn.net/wuxiaobingandbob/article/details/80016396,没看
7、Ceph分布式存储系统介绍,https://blog.csdn.net/shuningzhang/article/details/50081641,看了Ceph物理部署逻辑示意图和ceph部署组件的简介
8、Ceph块存储介绍,https://www.cnblogs.com/luohaixian/p/8213748.html,看了块的概念
9、Ceph的基本安装,http://blog.51cto.com/linuxnote/1788333,大概看了安装过程,但是为什么要这样安装没有看
10、使用ceph-deploy安装Ceph 12.x(一) 创建虚拟机环境,https://blog.csdn.net/nirendao/article/details/79357823,这个文章是安装ceph的一个系列,有4篇,没有怎么看,留着看完写第五节
11、ceph documentation,http://docs.ceph.com/docs/master/install/,这里有Ceph的详细安装方法,有三种ceph-deploy,manual,kuberbenate+helm,具体含义还不清楚,再看吧
12、ceph工作原理及安装,https://www.jianshu.com/p/25163032f57f,这篇很好,有安装组件的结构图示、有存储数据的过程的示意图等可以参考
Ceph基本情况介绍的更多相关文章
- CEPH OBJECTSTORE API介绍
Thomas是本人在Ceph中国社区翻译小组所用的笔名,该文首次公布在Ceph中国社区.现转载到本人博客,以供大家传阅 CEPH OBJECTSTORE API介绍 本文由 Ceph中国社区-Thom ...
- Ceph分布式存储-原理介绍及简单部署
1)Ceph简单概述Ceph是一个分布式存储系统,诞生于2004年,最早致力于开发下一代高性能分布式文件系统的项目.Ceph源码下载:http://ceph.com/download/.随着云计算的发 ...
- Ceph块存储介绍
1. 块存储是什么 块存储简称RBD(RADOS Block Device),是一种有序的字节序块,也是在Ceph三大存储类型中最为常用的存储方式 ,Ceph的块存储是基于RADOS的,因此它也借助R ...
- ceph应用情况分析
1.概述 ceph是分布式的开源存储系统,同时支持块存储.对象存储和文件系统,ceph可以满足高性能.高可靠性和高扩展等特性. 目前ceph作为开源分布式存储已经被大量使用,尤其是在云环境下的应用,下 ...
- Python全栈之路----编程基本情况介绍
1.多种编程语言的区别 (1)C\C++:学习成本高,学习周期长,偏系统底层,在开发硬件驱动.嵌入式.游戏引擎开发等领域有广泛应用. (2)JAVA:目前使用最广泛的编程语言,第一个跨平台运行的语言, ...
- CEPH 自动化测试用例介绍
1.QA 的内部逻辑关系. 首先用一个图表示一下QA的内部的逻辑关系. 2.QA的脚本介绍 3.QA脚本运行
- 同步/异步/阻塞/非阻塞/BIO/NIO/AIO各种情况介绍
常规的误区 假设有一个展示用户详情的需求,分两步,先调用一个HTTP接口拿到详情数据,然后使用适合的视图展示详情数据. 如果网速很慢,代码发起一个HTTP请求后,就卡住不动了,直到十几秒后才拿到HTT ...
- Docker 快速入门(一)- 情况介绍和安装
欢迎您! 很高兴您想学习 Docker . 这个页面包含了如何开始使用 Docker 的循序渐进的说明. Docker 快速入门培训模块教你如何: 设置 Docker 环境(在本页) 构建并运行您的镜 ...
- java类中属性的加载顺序,以及内存分配情况介绍
看下面例子及说明: /** 假如有外部类调用了该类,代码为:new StaticTest(); 那么下面是类属性的加载顺序 */ public class StaticTest{ public int ...
随机推荐
- ViewPager实现图片轮翻效果
很多App都有这种效果,特别一些电商类的App,顶部每隔几秒钟会向右翻页显示下张图片,用来作推广或者内容展示用的.今天来简单地模仿一下,还自带一个自动跳动的小功能(底部有几个小点,图片移动的时候,点的 ...
- [HAL]5.中断里调用HAL_Delay()进入死循环的原因
中断里调用HAL_Delay()进入死循环的原因 摘自:http://blog.csdn.net/alwxkxk/article/details/47204677 CUBE生成的程序中, SysTi ...
- python库之_thread
官方参考文档:https://docs.python.org/3.7/library/_thread.html _thread库方法 (1) _thread.error (2)_thread.Lock ...
- 【sqlite】判断sqlite数据库表是否存在
SQLite语句: cmd.CommandText = "SELECT count(*) from sqlite_master where type='table' and name='ta ...
- 关于fft后图像的纵轴问题
fft后如果纵轴是abs后的值,且为双边图像,那么纵轴表示的就是此频率下信号的幅值*N/2的值,也就是说,如果有一正弦信号,幅度为1,假如fft了50个点,那么此信号频率的幅度就是1*50/2=25. ...
- 【ASP.NET Web API2】Digest认证
Digest摘要认证 对于Basic认证方案来说,被传输的认证凭证仅仅采用Base64编码,所以包含密码的认证凭证基本上可以视为明文传输.Digest认证在此基础上进行了改善,在一定程度上提高了安全系 ...
- C#网络编程(同步传输字符串) - Part.2
服务端客户端通信 在与服务端的连接建立以后,我们就可以通过此连接来发送和接收数据.端口与端口之间以流(Stream)的形式传输数据,因为几乎任何对象都可以保存到流中,所以实际上可以在客户端与服务端之间 ...
- (转)xshell基本操作步骤
xshell 操作方法如下: mkdir +文件夹名 (新建目录) ls 文件浏览(使用ls命令列出文件列表的信息,默认情况下为当前目录下的所有文件,并按照字母顺序排列) file [选项].. ...
- Java基础数据类型二进制转换
前言: 本文主要介绍java基础类型的二进制转换和二进制的基本概念. 二进制: 1,二进制是以0和1为码,逢2进1,比如3=11=1*2+1. 2,在计算机当中其它进制的算法基本基于2进制,因为计算机 ...
- 事务之四:Spring事务--原理
一.Spring事务的基本原理 Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的.对于纯JDBC操作数据库,想要用到事务,可以按照以下步骤进行: ...