ceph学习笔记之二RADOS

Ceph学习笔记之二RADOS

一、RADOS架构

在RADOS架构中主要包含2个部分组件:

1MONMonitor

由少量的Monitor节点构成的强耦合,小规模集群;负责管理Cluster Map。

2OSDObject Storage Device

由数量可变的 大规模磁盘设备组成的集群,负责存储所有Object数据。

二、Monitor详解

在前面已经简单对其MON进行描述,在这个地方我们再次对MON进行详细解读。正如其名Monitor是负责监视整个集群运行状态的,这些信息都是由维护集群成员的守护进程来提供的,如各节点之间的状态、集群配置等信息。Ceph Monitor Map包括:OSD Map、PG Map、MDS Map和CRUSH等,这些Map统称为集群Map。

1Monitor Map

包括有关Monitor节点端到端的信息,其中包括Ceph集群ID,Monitor主机名和IP地址、端口号,以及版本信息、更改信息。通过下面命令查看Monitor Map信息:

# ceph mon dump

2OSD Map

包括集群ID 、OSD Map版本信息、更改信息;以及Pool相关信息,如:Pool名称、PoolID、类型、副本数、PGP;同时还有OSD信息,如OSD数量、状态、OSD权重、最近清洁间隔和OSD主机信息,可通过下面命令查看OSD Map信息:

# ceph osd dump

3PG Map

包括PG版本、时间戳、最新OSD Map版本信息、空间使用比例、以及沾满比例;同时包含每个PG ID、对象数目、状态、OSD状态等信息;使用下面命令查看PG Map信息:

# ceph pg dump

4CRUSH Map

包含集群存储设备信息,故障域层次结构和存储数据时定义失败域、规则信息,可以通过以下命令查看:

# ceph osd crush dump

Monitor对资源的需求

Ceph Monitor是个轻量化的守护进程,在常规情况下不需要太多的系统资源;入门级CPU、千兆网卡即可满足大部分场景;同时Monitor节点需要有足够的磁盘空间来存储集群日志,一个健康的集群产生几MB到几GB的日志;然而如果集群不正常、存储需求增加、打开低等级的日志信息的话,将会产生大量的日志,增加磁盘空间存储日志信息。

Monitor节点设计

一个典型的Ceph集群包含多个Monitor节点,一个多Monitor节点Ceph架构通过确定的Monitor节点数来选择Leader,在Ceph集群中有多个Monitor节点时,Monitor节点数应为奇数,最低的要求是至少有一个Monitor节点,通常在设计Monitor节点数量推荐值为3,既为3个Monitor节点。

三、Ceph OSD详解

OSD是Ceph存储集群最重要的组件,OSD将数据以对象的形式存储到集群中每个节点的物理磁盘上。

Ceph集群一般都包含多个OSD,对于任何读写操作请求,Client端从CephMonitor获取ClusterMap之后,Client将直接与OSD进行I/O操作交互,使得数据读写过程更为迅速。

1OSD副本特性介绍

Ceph核心功能特性包括高可靠、自动平衡、自动恢复和一致性。对于Ceph OSD而言,基于配置的副本数,Ceph提供通过分布在多节点上的副本来实现,使得Ceph具有高可用性及容错性。OSD中的每个对象都有一个主副本,若干个从副本。这些副本默认情况下是分布在不同节点上的,这就是Ceph作为分布式存储系统的集中体现。每个OSD都可能是某些对象的主OSD;同时也可能成为其他对象的从OSD。从OSD受主OSD的控制,在某些情况下从OSD也会成为主OSD。例如:在磁盘故障时Ceph OSD Deamon的智能对等机制将协同其他OSD执行恢复操作,此时存储对象的从OSD将被提升为主OSD,同时,新的从副本也将重新生成,这样就保证了Ceph的可靠和一致。

2Ceph OSD架构及文件系统

OSD架构实现由物理磁盘驱动器,在其之上的Linux文件系统以及OSD服务组成。Linux文件系统的扩展属性提供了:对象状态、快照、元数据内部信息。

Ceph OSD目前支持的文件系统主要有:BTRFS、XFS、EXT4

  • BTRFS

BTRFS文件系统格式的OSD相比XFS和EXT4提供了最好的性能。BTRFS主要优点:

1 扩展性

BTRFS设计目标是应对大型机器对文件系统的扩展性要求。Extent、B-Tree和动态inode创建等特性保证了BTRFS在大型机器上仍有不错的表现。整体性能不会随系统容量增加而降低。

2 数据一致性

当系统面临不可预料的硬件故障时,BTRFS采用COW事物技术保证文件系统的一致性。BTRFS还支持校验和、避免了未知的错误出现,传统的文件系统无法做到。

3 多设备管理

BTRFS支持创建快照和克隆。BTRFS还能管理多个物理设备。

BTRFS结合Ceph使得BTRFS中的诸多优点的快照,Journal of Parallel(并行日志)等优势使BTRFS在表现较为突出。然而不幸的是目前BTRFS还不能达到生产环境中要求的健壮性。因此不建议在Ceph集群中使用。

  • XFS

一种高性能的日志文件系统,XFS特别擅长处理大文件,同时提供平滑的数据传输。在CentOS7中已将XFS+LVM作为默认文件系统。

1 分配组

XFS文件系统内部被分为多个“分配组”,它们是文件系统的等长线性存储区。每个分配组各自管理自己的inode和剩余空间。文件和文件夹可以跨越分配组。这种特性为XFS提供了可伸缩和并行的特性;多个线程和进程可以同时在同一个文件系统上执行I/O操作。

2 条带化分配

在条带化RAID阵列上创建XFS文件系统时,可以指定一个“条带数据单元”。这可以保证数据分配、inode分配,以及内部日志被对齐到该条带单元上。以此最大化吞吐。

3 基于Extent的分配方式

XFS文件系统中的文件用到的块由变长Extent管理,每一个Extent描述了一个或多个连续的块。

4)扩展性

XFS通过实现扩展文件属性给文件提供了多个数据流,使文件可以被附加多个名、值对;文件名是一个最大长度为256字节的,以Null字符结尾的可打印字符串。其关联值可包含多达64KB的二进制数据。扩展性可以被添加到任意一种XFS inode上,包含符号连接、设备节点和目录。

缺点:XFS不能很好的处理Ceph写入过程的Journal问题。

  • EXT4

第4代扩展文件系统,是Linux系统下的日志文件系统,是EXT3文件系统的后续版本。

1 大型文件系统

EXT4文件系统可以支持最高1EB的分区与最大16TB的文件

2 Extents

EXT4引进了Extent文件存储方式,以替换EXT2/3使用的块映射方式。Extent指的是一连串的连续实体块,这种方式可以增加大型文件的效率并减少分裂文件。

3 日志校验和

EXT4使用校验和的特性来提高文件系统的可靠性,因为日志是磁盘上被读取最频繁的部分之一。

4 快速文件系统检查

EXT4将未使用的区块标记在inode中,这样可以节约大量的文件系统检测时间。

3Ceph日志文件系统

在使用了BTRFS和XFS文件系统的OSD中,在提交数据到后端硬件磁盘之前,Ceph首先将数据写入一个存储区域,该区域称为Journal;Journal可以用一个单独的SSD磁盘做Journal,或者使用OSD自身的一个分区;如果要使Ceph得到较好的性能建议使用独立的SSD磁盘做Journal日志。其I/O流程如图:

Ceph的任何写操作首先是写Journal日志,然后每隔5秒将Journal中的数据刷写到后端硬件磁盘。

时间: 2024-07-29 05:39:12

ceph学习笔记之二RADOS的相关文章

Unix文件系统学习笔记之二: 文件描述符、inode和打开文件表

Unix文件系统学习笔记之二: 文件描述符.inode和打开文件表 系统盘上数据的布局 文件系统无非是关于数据在磁盘上的组织以及存储空间管理的,为此,首先需要知道磁盘上数据的总体布局方式.以Unix为例,最重要的一张表如下: Unix 进程管理中和用户文件.io 最相关的数据结构:usr 数据结构 The procstructure does not record information related to file access.  However the userstructure con

C++primer学习笔记(二)——Chapter 4

4.1  Fundamentals 1.Basic Concepts (1)操作符分为一元,二元或者三元操作符: (2)复杂的表达式中含有很多操作符时: 规则一:分为不同的级别,级别高的先运行: 规则二:相同级别的操作符有执行顺序的确定: (3)操作符可以改变操作数的类型 一般将级别低的转化成级别高的 (4)重载运算符 相同的运算符在对不同类型的对象进行操作的时候,会有不同的功能: (5)Lvalue和Rvalue 显而易见:Lvalue指的是Left value,Rvalue指的是Right

struts2学习笔记(二)—— 获取登录信息及计算在线人数

实现目的: 1.点击"Login"的超链接,进入登录页面 2.填写登录信息,提交表单,将用户信息保存进Session 3.显示用户名,并计算在线人数 4.点击"Logout"的超链接,在线人数减一,并使Session失效 Struts2实现: 1.配置web.xml文件 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http:/

《语义网基础教程》学习笔记(二)

二.RDF概述(参考http://zh.transwiki.org/cn/rdfprimer.htm) 1.本体: 一个本体是一个概念体系(conceptualization)的显式的形式化规范. 一般来说,一个本体形式地刻画一个论域.一个典型的本体由有限个术语及它们之间的关系组成. ★在万维网这个环境中,本体提供了对给定领域的一种共识.这种共识对于消除术语差别是必要的. 通过把各自的术语差异映射到一个公共的本体之间的直接映射,可以消除这些术语差异. 不管采用哪种方案,本体都支持语义可共用性(s

《iOS应用逆向工程》学习笔记(二)iOS系统目录结构(部分)

首先下载个iFile,可以用来直观地查看iOS系统的目录结构. 下面记录一些关键的iOS目录结构: /var:"variable"的简写,存放一些经常更改的文件,例如日志.用户数据.临时文件等.其中/var/mobile/Applications下存放了所有App Store App. /Applications:存放所有的系统App和来自Cydia的App,不包括App Store App.越狱的过程把/Applications变成了一个符号链接,实际指向/var/stash/App

现代C++学习笔记之二入门篇2,数据转换

static_cast:    这种强制转换只会在编译时检查. 如果编译器检测到您尝试强制转换完全不兼容的类型,则static_cast会返回错误. 您还可以使用它在基类指针和派生类指针之间强制转换,但是,编译器在无法分辨此类转换在运行时是否是安全的. dynamic_cast: dynamic_cast在运行时检查基类指针和派生类指针之间的强制转换. dynamic_cast 是比 static_cast 更安全的强制类型转换,但运行时检查会带来一些开销. const_cast:    con

HTML5学习笔记(二)——表单1

表单一直是网页必不可少的一部分,一直以来,表单的作用被无限扩展,发展出了诸多新奇的用法,老版的HTML只支持很少的一部分常用表单,许多的新表单都需要借助CSS与JavaScript语言来进行构建,现在HTML5来了,她带来了新的表单,这些强大的表单项,可以省去一大块复杂的JavaScript代码,很值得去学习. 而且在新的表单里面,不再像以前每个表单都必须位于<form></form>之内,只要在<form></form>内定义一个id,然后在网页任何位置都

Swift学习笔记十二:下标脚本(subscript)

下标脚本就是对一个东西通过索引,快速取值的一种语法,例如数组的a[0].这就是一个下标脚本.通过索引0来快速取值.在Swift中,我们可以对类(Class).结构体(structure)和枚举(enumeration)中自己定义下标脚本的语法 一.常规定义 class Student{ var scores:Int[] = Array(count:5,repeatedValue:0) subscript(index:Int) -> Int{ get{ return scores[index];

PHP ----学习笔记(二)

date()函数用于格式化时间或日期 date(format,timestamp) mktime()函数可为指定的日期返回Unix时间戳 mktime(hour,minuite,second,mouth,day,year,is_dst) include和require语句用于在执行流中向其他文件插入有用的代码 include 'filename'; require 'filename'; fopen() 函数用于在PHP中打开文件 fclose() 函数用于关闭打开的文件 feof() 函数检测