ceph分布式存储介绍
ceph存储原理

ceph存储原理ceph是一种开源、分布式的对象存储和文件系统,它能够在大规模的集群中存储和管理海量数据。
在ceph中,数据被分割成对象,并将这些对象存储在不同的存储节点上以实现高可用性和容错性。
这篇文章将介绍ceph存储的原理,包括ceph的架构、数据的存储和调度方式以及ceph如何处理故障。
ceph架构ceph的架构包括三个主要组成部分:客户端、存储集群和元数据服务器。
客户端是使用ceph存储的应用程序,它们通常是通过ceph API或者对象存储接口来访问ceph集群。
存储集群由一个或多个monitors、object storage devices(OSD),以及可能的元数据服务器组成。
monitors是ceph集群的核心组件,它负责管理ceph的全局状态信息、监控OSD 状态,并为客户端提供服务发现和配置信息。
OSD是实际存储数据的存储节点,它负责存储和处理对象,并在节点故障时自动重新平衡数据。
元数据服务器用于管理ceph文件系统中的元数据信息,包括文件和目录的名称、属性和层次关系等。
ceph存储数据的方式ceph将数据分割成对象,并使用CRUSH算法将这些对象分布在集群中的OSD上。
CRUSH 算法是ceph中存储调度的核心算法,它通过一系列计算将对象映射到存储集群中的OSD。
CRUSH将对象映射到OSD的方式是通过建立CRUSH映射表以实现负载均衡和容错。
CRUSH映射表可以根据管理员的需求进行调整,以达到最佳的性能和可扩展性。
ceph的CRUSH算法有以下特点:1. CRUSH将对象映射到可扩展的存储后端,以实现分布式存储和高可用性。
2. CRUSH使用元数据信息来动态调整对象的存储位置,并根据OSD的状态和磁盘使用情况等信息来实现负载均衡。
3. CRUSH允许管理员对存储策略进行调整,以适应不同的应用场景。
ceph的故障处理ceph具有强大的故障处理机制,它能够自动处理节点故障和数据损坏等问题,以确保数据的完整性和可用性。
ceph通俗理解

ceph通俗理解
Ceph是一个分布式存储系统,它可以将数据存储在多个磁盘上,提供高可靠性和高性能的数据存储和访问服务。
通俗来说,Ceph就像一个巨大的文件柜,将数据分散存储在多个抽屉中,每个抽屉都有备份,即使某个抽屉损坏了,数据仍然可以从其他抽屉中恢复。
这种分布式存储方式可以提供高可靠性,即使硬件故障也不会导致数据丢失。
同时,Ceph还可以通过并行读写和数据分片等技术,提供高性能的数据访问速度。
总之,Ceph是一种可靠、高性能的分布式存储系统,可以满足大规模数据存储和访问的需求。
ceph-fuse原理

ceph-fuse原理Ceph是一种分布式存储系统,而ceph-fuse则是Ceph存储系统中的一个重要组件,它提供了一种通过文件系统接口访问Ceph存储系统的机制。
本文将介绍ceph-fuse的原理,包括其工作原理、关键技术和实现细节。
ceph-fuse是基于Ceph存储系统开发的文件系统,它提供了类似于传统文件系统的接口,如mkdir、cp、rm等,用户可以通过这些接口对Ceph存储系统中的数据进行读写操作。
与传统的文件系统相比,ceph-fuse具有以下优势:1.分布式存储:ceph-fuse利用Ceph的分布式存储特性,可以实现数据的高可用、可扩展和容错性。
2.易于使用:与传统文件系统相比,ceph-fuse的接口更加简单易用,用户无需了解底层存储细节即可进行数据操作。
3.动态扩容:用户可以通过ceph-fuse方便地添加或删除存储节点,实现存储资源的动态扩容。
ceph-fuse通过FUSE(FilesysteminUserspace)框架实现,FUSE 是一个用户空间的文件系统框架,可以将内核空间的文件系统接口暴露给用户空间进程,从而实现文件系统的动态加载和卸载。
在ceph-fuse中,FUSE提供了一个文件系统接口,使得用户可以通过这个接口对Ceph存储系统进行操作。
当用户通过文件系统接口创建、打开、读写文件时,ceph-fuse 会将这些操作转发到Ceph存储系统中。
同时,ceph-fuse还会对操作进行一些必要的处理,如权限校验、数据一致性等。
三、关键技术1.数据一致性:在读写文件时,ceph-fuse需要保证数据的一致性,即确保数据的读写操作与底层存储的一致性。
为此,ceph-fuse采用了缓存机制,将数据缓存在内存中,以提高读写速度。
同时,当缓存中的数据发生变化时,ceph-fuse会及时将变化同步到Ceph存储系统中。
2.安全性:由于ceph-fuse提供了类似于传统文件系统的接口,因此安全性问题尤为重要。
ceph使用方法

ceph使用方法摘要:1.Ceph简介2.Ceph组件及其作用3.安装Ceph4.Ceph使用方法5.Ceph的日常维护与管理6.Ceph性能优化7.常见问题与解决方案正文:Ceph是一款开源的分布式存储系统,具有高性能、可靠性高、可扩展性强等特点。
它主要由以下几个组件构成:1.Ceph Monitor(CMS):负责维护整个Ceph集群的元数据信息,包括监控各个节点的状态、集群映射关系等。
2.Ceph OSD:负责存储数据,包括数据存储和数据恢复。
OSD节点之间通过CRUSH算法实现数据分布和平衡。
3.Ceph Metadata Server:为Ceph客户端提供元数据服务,包括存储卷配置、快照、克隆等。
接下来,我们来了解一下如何安装和配置Ceph。
1.安装Ceph:首先,确保操作系统为CentOS 7及以上版本。
然后,按照官方文档的指引,依次安装Ceph Monitor、OSD和Metadata Server组件。
2.配置Ceph:安装完成后,需要对Ceph进行配置。
编辑Ceph配置文件(/etc/ceph/ceph.conf),设置相关参数,如:osd pool默认配置、monitor 选举算法等。
3.初始化Ceph:使用ceph-init命令初始化Ceph,之后启动Ceph相关服务。
4.创建存储池:使用ceph-volume命令创建存储池,为存储池分配OSD 节点。
5.创建卷:使用ceph-volume命令创建卷,并将卷挂载到客户端节点。
6.扩容存储池:当存储池空间不足时,可以通过添加OSD节点或调整pool参数进行扩容。
7.维护与管理:定期检查Ceph集群状态,使用ceph命令监控性能指标,如:osd tree、health monitor等。
8.性能优化:根据实际需求,调整Ceph配置文件中的相关参数,如:调整osd的osd_cache_size、osd_timeout等。
9.常见问题与解决方案:遇到问题时,可通过查询官方文档、社区论坛等途径寻求解决方案。
ceph数据迁移原理

ceph数据迁移原理
Ceph是一个开源的分布式存储系统,它的数据迁移原理涉及到多个方面。
首先,Ceph的数据迁移可以发生在不同的存储池之间,也可以发生在不同的Ceph集群之间。
数据迁移的原理包括以下几个方面:
1. 数据平衡,Ceph集群中的数据是通过数据平衡算法进行分布的,数据迁移会涉及到数据平衡的调整。
当有新的存储节点加入集群或者有存储节点被移除时,数据迁移会通过数据平衡来确保集群中数据的均衡分布,以提高性能和容错能力。
2. CRUSH算法,Ceph使用CRUSH算法来确定数据在存储集群中的位置,数据迁移会涉及到CRUSH算法的重新计算,以确定数据在迁移后的存储位置,保证数据的可靠性和高效访问。
3. 迁移策略,Ceph提供了多种数据迁移策略,可以根据不同的需求选择合适的迁移策略。
例如,可以通过命令行工具或者管理接口来手动触发数据迁移,也可以根据自动迁移策略来实现数据的自动迁移,以适应不同的业务需求。
4. 数据复制和恢复,在数据迁移过程中,Ceph会通过数据复
制和恢复机制来保证数据的一致性和可靠性。
数据迁移会涉及到数
据的复制和在目标位置的恢复,以确保数据在迁移过程中不会丢失
和损坏。
总的来说,Ceph的数据迁移原理涉及到数据平衡、CRUSH算法、迁移策略以及数据复制和恢复等多个方面,通过这些机制来实现数
据的高效迁移和管理。
希望这些信息能够帮助你更好地理解Ceph数
据迁移的原理。
ceph概念

ceph概念Ceph是一个分布式存储系统,用于可扩展、高性能和高可靠性的数据存储。
以下是一些Ceph的基本概念:1. 集群(Cluster): 一个Ceph集群由多个存储节点组成,共同工作以提供数据存储和访问服务。
2. 存储节点(OSD): 存储节点是Ceph的基本构建单元,用于存储和管理数据。
每个存储节点负责存储数据块,并提供输入/输出操作。
3. 对象(Object): 数据被划分为对象,并被分布在不同的存储节点上。
每个对象都具有唯一的标识符,称为对象ID。
4. RADOS(Reliable Autonomic Distributed Object Store): RADOS是Ceph的核心组件,用于管理和存储对象。
它提供了高度可靠的数据存储和自动化管理功能。
5. 副本(Replica): Ceph使用数据副本来实现冗余和容错性。
每个对象在存储集群中复制多个副本,以提供高可用性。
6. PG(Placement Group): PG是一组相关的对象的集合,定义了对象如何被分片、存储和复制。
PG是Ceph用于数据分布和容错的基本单元。
7. OSD映射(Object Storage Device Map): OSD映射是一个散列表,将对象映射到存储节点上的物理设备。
它用于存储每个对象的数据位置和副本分布。
8. CRUSH(Controlled Replication Under Scalable Hashing): CRUSH是Ceph用于数据分布和数据副本放置的算法。
它可以根据配置策略智能地将数据分布在不同的存储节点上。
9. RADOS Gateway: RADOS Gateway是Ceph提供的对象存储和云存储服务,允许用户通过RESTful接口访问和管理存储对象。
这些是Ceph的一些基本概念,它们一起提供了可扩展的、高性能的和高可靠性的分布式存储解决方案。
分布式文件存储CephFS详尽介绍及使用经验
分布式文件存储 CephFS详尽介绍及使用经验1. Ceph架构介绍Ceph是一种为优秀的性能、可靠性和可扩展性而设计的统一的、分布式文件系统。
特点如下:- 高性能a. 摒弃了传统的集中式存储元数据寻址的方案,采用CRUSH算法,数据分布均衡,并行度高。
b.考虑了容灾域的隔离,能够实现各类负载的副本放置规则,例如跨机房、机架感知等。
c. 能够支持上千个存储节点的规模,支持TB到PB级的数据。
- 高可用性a. 副本数可以灵活控制。
b. 支持故障域分隔,数据强一致性。
c. 多种故障场景自动进行修复自愈。
d. 没有单点故障,自动管理。
- 高可扩展性a. 去中心化。
b. 扩展灵活。
c. 随着节点增加而线性增长。
- 特性丰富a. 支持三种存储接口:块存储、文件存储、对象存储。
b. 支持自定义接口,支持多种语言驱动。
使用场景:•块存储 (适合单客户端使用)o典型设备:磁盘阵列,硬盘。
o使用场景:a. docker容器、虚拟机远程挂载磁盘存储分配。
b. 日志存储。
...•文件存储 (适合多客户端有目录结构)o典型设备:FTP、NFS服务器。
o使用场景:a. 日志存储。
b. 多个用户有目录结构的文件存储共享。
...•对象存储 (适合更新变动较少的数据,没有目录结构,不能直接打开/修改文件) o典型设备:s3, swift。
o使用场景:a. 图片存储。
b. 视频存储。
c. 文件。
d. 软件安装包。
e. 归档数据。
...系统架构:Ceph 生态系统架构可以划分为四部分:1.Clients:客户端(数据用户)2.mds:Metadata server cluster,元数据服务器(缓存和同步分布式元数据)3.osd:Object storage cluster,对象存储集群(将数据和元数据作为对象存储,执行其他关键职能)4.mon:Cluster monitors,集群监视器(执行监视功能)2. NFS介绍1. NAS(Network Attached Storage)- 网络存储基于标准网络协议NFSv3/NFSv4实现数据传输。
存储基本知识梳理
存储基本知识梳理基础概念1. 什么是分布式存储?⾸先了解⼀下存储的发展历史。
DAS:Direct Access Storage,直接连接存储,将存储设备通过SCSI接⼝或光纤通道连接到⼀台计算机上。
特点:直接和存储器连接,扩展性,灵活性⽐较差。
SAN、NAS等。
NAS:network attached storage,SAN:storage area network。
特点:设备类型丰富,可以通过外部IP/FC⽹络互连,具备⼀定的可扩展性;但是受控制器能⼒限制,扩展能⼒有限,PB级;设备到⽣命周期更换,需要进⾏数据迁移,耗时耗⼒。
分布式存储。
结构为:分布式软件+标准服务器。
特点:⾼扩展性,基于标准硬件和分布式架构,千节点/EB级扩展;易运维,块、对象、⽂件等多种类型存储统⼀管理。
分布式指明了⼀种独特的系统架构类型,这种系统架构是由⼀组通过⽹络进⾏通信,为了完成共同的任务⽽协调⼯作的计算机节点组成。
所谓分布式存储,就是存储设备分布在不同的地理位置,数据就近存储,将数据分散在多个存储节点上,各个节点通过⽹络相连,对这些节点的资源进⾏统⼀的管理,从⽽⼤⼤缓解带宽压⼒,同时也解决了传统的本地⽂件系统在⽂件⼤⼩、⽂件数量等⽅⾯的限制。
⼏个问题:客户端(⽤户侧)是直接和某⼀个节点交互操作(操作包括增删改查),还是和某些节点交互操作?如果是某些,则如何保证数据的准确可靠:数据多重写⼊更改等是否会影响到数据的稳定可靠性?客户端读取数据的时候,是从哪个节点上读取数据的?数据存储备份是放到哪个节点上的?2. Ceph是什么?Ceph是当前⾮常流⾏的开源分布式存储系统,具有⾼扩展性、⾼性能、⾼可靠性等优点,同时提供块存储服务(rbd)、对象存储服务(rgw)以及⽂件系统存储服务(cephfs)。
对于三种基本存储服务的介绍:对象存储(Object Storage),既可以通过使⽤Ceph的库,利⽤C, C++, Java, Python, PHP代码,也可以通过Restful⽹关以对象的形式访问或存储数据,兼容亚马逊的S3和OpenStack的Swift。
分布式存储基础、Ceph、cinder及华为软件定义的存储方案
块存储与分布式存储块存储,简单来说就是提供了块设备存储的接口。
通过向内核注册块设备信息,在Linux 中通过lsblk可以得到当前主机上块设备信息列表。
本文包括了单机块存储介绍、分布式存储技术Ceph介绍,云中的块存储Cinder,以及华为软件定义的存储解决方案。
单机块存储一个硬盘是一个块设备,内核检测到硬盘然后在/dev/下会看到/dev/sda/。
因为需要利用一个硬盘来得到不同的分区来做不同的事,通过fdisk工具得到/dev/sda1, /dev/sda2等,这种方式通过直接写入分区表来规定和切分硬盘,是最死板的分区方式。
分布式块存储在面对极具弹性的存储需求和性能要求下,单机或者独立的SAN越来越不能满足企业的需要。
如同数据库系统一样,块存储在scale up的瓶颈下也面临着scale out的需要。
分布式块存储系统具有以下特性:分布式块存储可以为任何物理机或者虚拟机提供持久化的块存储设备;分布式块存储系统管理块设备的创建、删除和attach/detach;分布式块存储支持强大的快照功能,快照可以用来恢复或者创建新的块设备;分布式存储系统能够提供不同IO性能要求的块设备。
现下主流的分布式块存储有Ceph、AMS ESB、阿里云磁盘与sheepdog等。
1Ceph1.1Ceph概述Ceph目前是OpenStack支持的开源块存储实现系统(即Cinder项目backend driver之一) 。
Ceph是一种统一的、分布式的存储系统。
“统一的”意味着Ceph可以一套存储系统同时提供对象存储、块存储和文件系统存储三种功能,以便在满足不同应用需求的前提下简化部署和运维。
“分布式”在Ceph系统中则意味着真正的无中心结构和没有理论上限的系统规模可扩展性。
Ceph具有很好的性能、可靠性和可扩展性。
其核心设计思想,概括为八个字—“无需查表,算算就好”。
1.2Ceph系统的层次结构自下向上,可以将Ceph系统分为四个层次:基础存储系统RADOS(Reliable, Autonomic, Distributed Object Store,即可靠的、自动化的、分布式的对象存储);基础库LIBRADOS;高层应用接口:包括了三个部分:RADOS GW(RADOS Gateway)、RBD(Reliable Block Device)和Ceph FS(Ceph File System)。
Ceph概念理解
Ceph概念理解简介Ceph是⼀个可靠地、⾃动重均衡、⾃动恢复的分布式存储系统,根据场景划分可以将Ceph分为三⼤块,分别是对象存储、块设备存储和⽂件系统服务。
在虚拟化领域⾥,⽐较常⽤到的是Ceph的块设备存储,⽐如在OpenStack项⽬⾥,Ceph的块设备存储可以对接OpenStack的cinder后端存储、Glance的镜像存储和虚拟机的数据存储。
⽐较直观的是Ceph集群可以提供⼀个raw格式的块存储来作为虚拟机实例的硬盘。
与其他存储相⽐的优势:充分利⽤了存储节点上的计算能⼒在存储每⼀个数据时,都会通过计算得出该数据存储的位置,尽量将数据分布均衡。
不存在传统的单点故障的问题,且随着规模的扩⼤性能并不会受到影响。
采⽤了CRUSH算法、HASH环等⽅法。
核⼼组件Ceph OSD(Object Storage Device):主要功能是存储数据、复制数据、平衡数据、恢复数据等,与其它OSD间进⾏⼼跳检查等,并将⼀些变化情况上报给CephMonitor。
⼀般情况下⼀块硬盘对应⼀个OSD,由OSD来对硬盘存储进⾏管理,当然⼀个分区也可以成为⼀个OSD。
Ceph OSD的架构实现由物理磁盘驱动器、Linux⽂件系统和Ceph OSD服务组成。
对于Ceph OSD Deamon⽽⾔,Linux⽂件系统显性的⽀持了其拓展性,⼀般Linux⽂件系统有好⼏种,⽐如有BTRFS、XFS、Ext4等,BTRFS。
虽然它们有很多优点特性,但现在还没达到⽣产环境所需的稳定性,⼀般⽐较推荐使⽤XFS。
⼀般写数据到Ceph集群时,都是先将数据写⼊到Journal盘中,然后每隔⼀段时间⽐如5秒再将Journal盘中的数据刷新到⽂件系统中。
⼀般为了使读写时延更⼩,Journal盘都是采⽤SSD,⼀般分配10G以上,当然分配多点那是更好。
Ceph中引⼊Journal盘的概念是因为Journal允许Ceph OSD功能很快做⼩的写操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Ceph分布式存储1Ceph存储概述Ceph 最初是一项关于存储系统的 PhD 研究项目,由 Sage Weil 在 University of California, Santa Cruz(UCSC)实施。
Ceph 是开源分布式存储,也是主线 Linux 内核()的一部分。
1.1Ceph 架构Ceph 生态系统可以大致划分为四部分(见图 1):客户端(数据用户),元数据服务器(缓存和同步分布式元数据),一个对象存储集群(将数据和元数据作为对象存储,执行其他关键职能),以及最后的集群监视器(执行监视功能)。
图 1 Ceph 生态系统如图 1 所示,客户使用元数据服务器,执行元数据操作(来确定数据位置)。
元数据服务器管理数据位置,以及在何处存储新数据。
值得注意的是,元数据存储在一个存储集群(标为“元数据I/O”)。
实际的文件 I/O 发生在客户和对象存储集群之间。
这样一来,更高层次的 POSIX 功能(例如,打开、关闭、重命名)就由元数据服务器管理,不过 POSIX 功能(例如读和写)则直接由对象存储集群管理。
另一个架构视图由图 2 提供。
一系列服务器通过一个客户界面访问 Ceph 生态系统,这就明白了元数据服务器和对象级存储器之间的关系。
分布式存储系统可以在一些层中查看,包括一个存储设备的格式(Extent and B-tree-based Object File System [EBOFS] 或者一个备选),还有一个设计用于管理数据复制,故障检测,恢复,以及随后的数据迁移的覆盖管理层,叫做Reliable Autonomic Distributed Object Storage(RADOS)。
最后,监视器用于识别组件故障,包括随后的通知。
图 2 ceph架构视图1.2Ceph 组件了解了 Ceph 的概念架构之后,您可以挖掘到另一个层次,了解在 Ceph 中实现的主要组件。
Ceph 和传统的文件系统之间的重要差异之一就是,它将智能都用在了生态环境而不是文件系统本身。
图 3 显示了一个简单的 Ceph 生态系统。
Ceph Client 是 Ceph 文件系统的用户。
Ceph Metadata Daemon 提供了元数据服务器,而 Ceph Object Storage Daemon 提供了实际存储(对数据和元数据两者)。
最后,Ceph Monitor 提供了集群管理。
要注意的是,Ceph 客户,对象存储端点,元数据服务器(根据文件系统的容量)可以有许多,而且至少有一对冗余的监视器。
那么,这个文件系统是如何分布的呢?图 3简单的 Ceph 生态系统1.3 Ceph 客户端因为 Linux 显示文件系统的一个公共界面(通过虚拟文件系统交换机 [VFS]),Ceph 的用户透视图就是透明的。
管理员的透视图肯定是不同的,考虑到很多服务器会包含存储系统这一潜在因素(要查看更多创建 Ceph 集群的信息,见参考资料部分)。
从用户的角度看,他们访问大容量的存储系统,却不知道下面聚合成一个大容量的存储池的元数据服务器,监视器,还有独立的对象存储设备。
用户只是简单地看到一个安装点,在这点上可以执行标准文件 I/O。
Ceph 文件系统—或者至少是客户端接口—在 Linux 内核中实现。
值得注意的是,在大多数文件系统中,所有的控制和智能在内核的文件系统源本身中执行。
但是,在Ceph 中,文件系统的智能分布在节点上,这简化了客户端接口,并为 Ceph 提供了大规模(甚至动态)扩展能力。
Ceph 使用一个有趣的备选,而不是依赖分配列表(将磁盘上的块映射到指定文件的元数据)。
Linux 透视图中的一个文件会分配到一个来自元数据服务器的 inode number (INO),对于文件这是一个唯一的标识符。
然后文件被推入一些对象中(根据文件的大小)。
使用 INO 和 object number(ONO),每个对象都分配到一个对象 ID(OID)。
在OID 上使用一个简单的哈希,每个对象都被分配到一个放置组。
放置组(标识为 PGID)是一个对象的概念容器。
最后,放置组到对象存储设备的映射是一个伪随机映射,使用一个叫做 Controlled Replication Under Scalable Hashing(CRUSH)的算法。
这样一来,放置组(以及副本)到存储设备的映射就不用依赖任何元数据,而是依赖一个伪随机的映射函数。
这种操作是理想的,因为它把存储的开销最小化,简化了分配和数据查询。
分配的最后组件是集群映射。
集群映射是设备的有效表示,显示了存储集群。
有了PGID 和集群映射,您就可以定位任何对象。
1.4Ceph 元数据服务器元数据服务器(cmds)的工作就是管理文件系统的名称空间。
虽然元数据和数据两者都存储在对象存储集群,但两者分别管理,支持可扩展性。
事实上,元数据在一个元数据服务器集群上被进一步拆分,元数据服务器能够自适应地复制和分配名称空间,避免出现热点。
如图 4 所示,元数据服务器管理名称空间部分,可以(为冗余和性能)进行重叠。
元数据服务器到名称空间的映射在 Ceph 中使用动态子树逻辑分区执行,它允许Ceph 对变化的工作负载进行调整(在元数据服务器之间迁移名称空间)同时保留性能的位置。
图 4 元数据服务器的 Ceph 名称空间的分区但是因为每个元数据服务器只是简单地管理客户端人口的名称空间,它的主要应用就是一个智能元数据缓存(因为实际的元数据最终存储在对象存储集群中)。
进行写操作的元数据被缓存在一个短期的日志中,它最终还是被推入物理存储器中。
这个动作允许元数据服务器将最近的元数据回馈给客户(这在元数据操作中很常见)。
这个日志对故障恢复也很有用:如果元数据服务器发生故障,它的日志就会被重放,保证元数据安全存储在磁盘上。
元数据服务器管理 inode 空间,将文件名转变为元数据。
元数据服务器将文件名转变为索引节点,文件大小,和 Ceph 客户端用于文件 I/O 的分段数据(布局)。
1.5Ceph 监视器Ceph 包含实施集群映射管理的监视器,但是故障管理的一些要素是在对象存储本身中执行的。
当对象存储设备发生故障或者新设备添加时,监视器就检测和维护一个有效的集群映射。
这个功能按一种分布的方式执行,这种方式中映射升级可以和当前的流量通信。
Ceph 使用 Paxos,它是一系列分布式共识算法。
1.6Ceph 对象存储和传统的对象存储类似,Ceph 存储节点不仅包括存储,还包括智能。
传统的驱动是只响应来自启动者的命令的简单目标。
但是对象存储设备是智能设备,它能作为目标和启动者,支持与其他对象存储设备的通信和合作。
从存储角度来看,Ceph 对象存储设备执行从对象到块的映射(在客户端的文件系统层中常常执行的任务)。
这个动作允许本地实体以最佳方式决定怎样存储一个对象。
Ceph的早期版本在一个名为 EBOFS 的本地存储器上实现一个自定义低级文件系统。
这个系统实现一个到底层存储的非标准接口,这个底层存储已针对对象语义和其他特性(例如对磁盘提交的异步通知)调优。
今天,B-tree 文件系统(BTRFS)可以被用于存储节点,它已经实现了部分必要功能(例如嵌入式完整性)。
因为 Ceph 客户实现 CRUSH,而且对磁盘上的文件映射块一无所知,下面的存储设备就能安全地管理对象到块的映射。
这允许存储节点复制数据(当发现一个设备出现故障时)。
分配故障恢复也允许存储系统扩展,因为故障检测和恢复跨生态系统分配。
Ceph 称其为 RADOS。
2Ceph快速配置资源:两台机器:一台server,一台client,安装其中,server安装时,另外分出两个区,作为osd0、osd1的存储,没有的话,系统安装好后,使用loop设备虚拟出两个也可以。
步骤:1、安装操作系统2、添加key到APT中,更新,安装ceph#sudo wget -q -O- 'git/?p=;a=blob_plain;f=keys/' | sudo apt-key add -#sudo echo deb debian/ $(lsb_release -sc) main | sudo tee /etc/apt/ sudo apt-get update && sudo apt-get install ceph3、查看版本# ceph-vauth cluster required = noneauth service required = noneauth client required = none[osd]osd journal size = 1000#The following assumes ext4 filesystem. filestore xattr use omap = true# For Bobtail (v and subsequent versions, you may# add settings for mkcephfs so that it will create and mount# the file system on a particular OSD for you. Remove the comment `#`# character for the following settings and replace the values# in braces with appropriate values, or leave the following settings# commented out to accept the default values. You must specify the# --mkfs option with mkcephfs in order for the deployment script to# utilize the following settings, and you must define the 'devs'# option for each osd instance; see below.osd mkfs type = xfsosd mkfs options xfs = -f # default for xfs is "-f"osd mount options xfs = rw,noatime # default mount option is "rw,noatime"# For example, for ext4, the mount option might look like this:#osd mkfs options ext4 = user_xattr,rw,noatime# Execute $ hostname to retrieve the name of your host,# and replace {hostname} with the name of your host.# For the monitor, replace {ip-address} with the IP# address of your host.[]host = ubuntumon addr =# For Bobtail (v and subsequent versions, you may# add settings for mkcephfs so that it will create and mount# the file system on a particular OSD for you. Remove the comment `#`# character for the following setting for each OSD and specify# a path to the device if you use mkcephfs with the --mkfs option.devs = /dev/loop0[]host = ubuntudevs = /dev/loop1[]说明:1)配置文件请将认证设置成none如果没有/sda,可使用loop设备虚拟,方法如下:# losetup –a eb包8、修改后可使用make编译# make9、修改代码,make只编译修改的部分,并指明编译文件和修改文件3源码编译测试情况1、替换编译后的mds到/usr/bin下,启动成功,健康检查如下:root@ubuntu:/usr/bin# ceph healthHEALTH_WARN 576 pgs stale .starting rank 0 at mon_data /var/lib/ceph/mon/ceph-a fsid d188f2d1-d8f3-4f6d-94c6-0a271ff64dab=== ===Starting Ceph on ubuntu...starting at :/0=== ===Starting Ceph on ubuntu...starting at :/0 osd_data /var/lib/ceph/osd/ceph-0 /var/lib/ceph/osd/ceph-0/journal=== ===Starting Ceph on ubuntu...starting at :/0 osd_data /var/lib/ceph/osd/ceph-1 /var/lib/ceph/osd/ceph-1/journalroot@ubuntu:/usr/bin# service ceph status=== ===: running {"version":""}=== ===: running {"version":""}: running {"version":""}=== ===: running {"version":""}root@ubuntu:/usr/bin# ceph healthHEALTH_OKClient可正常创建、拷贝文件3、替换mon,OKroot@ubuntu:/usr/bin# cp ceph-monroot@ubuntu:/usr/bin# scp:/home/xiao/ceph/'s password:ceph-mon 100% 46MB s 00:04root@ubuntu:/usr/bin# service ceph -a start=== ===Starting Ceph on ubuntu...starting rank 0 at mon_data /var/lib/ceph/mon/ceph-a fsid d188f2d1-d8f3-4f6d-94c6-0a271ff64dabStarting Ceph on ubuntu...starting at :/0=== ===Starting Ceph on ubuntu...starting at :/0 osd_data /var/lib/ceph/osd/ceph-0 /var/lib/ceph/osd/ceph-0/journal=== ===Starting Ceph on ubuntu...starting at :/0 osd_data /var/lib/ceph/osd/ceph-1 /var/lib/ceph/osd/ceph-1/journalroot@ubuntu:/usr/bin# service ceph status=== ===: running {"version":""}=== ===: running {"version":""}=== ===: running {"version":""}=== ===: running {"version":""}root@ubuntu:/usr/bin# ceph healthHEALTH_OKClient可正常创建、拷贝文件4mds源码分析暂时未完成……附录问题记录ceph health命令ceph按照官方文档部署成功,健康检查为health_OK,一段时间没有使用,也没有关机,下次使用时,各节点均能够重启启动成功,但健康检查提示:HEALTH_ERR 576 pgs stuck inactive; 576 pgs stuck unclean; no osds客户端挂在cephfs文件系统无法成功。