版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Ceph
源代码分析
2016年9月
王智民
修改历史
版本日期修订人说明
1.02016-9-27王智民初稿
目录
1弓।言1
1.1编写目的1
1.2背景1
2基本概念1
2.1SDS1
2.2Disk2
2.2.1块式与流式2
2.2.2磁盘2
2.2.3固态硬盘4
2.3块存储指令与协议6
2.3.1硬盘物理接口6
2.3.2SCSI指令体系6
2.3.3块存储指令通信协议7
2.4Raid8
2.4.1基本术语8
2.4.26种Raid模式9
2.4.3Raid卡结构10
2.4.4Raid与LVM10
2.4.5Raid的缺点10
3存储架构11
3.1传统存储架构11
3.2存储架构发展历程13
3.3分布式存储架构16
3.3.1分布式存储系统通用逻辑结构16
3.3.2分布式存储系统相关理论18
3.3.3HDFS分布式文件存储架构23
3.3.4Swift分布式对象存储架构24
3.3.5Ceph分布式统一存储架构26
3.3.6对比分析27
4ceph框架分析.28
4.1相关接口28
4.1.1bufferraw/bufferptr/bufferlist28
4.1.2序列化encode/友序列化decode31
4.2逻辑结构36
4.2.10层分解36
4.2.21层分解39
4.3关键概念44
4.3.1Object对象45
4.3.2Pool池46
4.3.3PGMap48
4.3.4OSDMap50
4.3.5MonitorMap50
4.3.6CRUSHMap51
4.4主要流程57
4.4.1命令下发、解析流程57
4.4.2RBD客户端写入过程59
4.4.3PG数据恢复过程92
4.4.4PG数据清理过程106
4.5CRUSH算法107
4.5.1CRUSHMAP108
4.5.2数据映射规则(ruleset、replicaplacement)109
4.5.3CRUSHMAP改变与数据移动128
5安装与编译129
5.1安装129
5.2源码编译129
6调试与调优130
7附录130
7.1C++语言130
8参考资料142
1引言
1.1编写目的
本文档是规划超融合产品的系列调研文档之一。
1.2背景
http://ceph.com/
Cephisadistributedobjectstoreandfilesystemdesignedtoprovideexcellent
performance,reliabi1ityandscalability.
为什么官方上没有提ceph也提供块存储服务呢?
下面这句摘抄自《Cephcookbook》:"CephiscurrentlythehottestSoftwareDefined
Storage(SDS)technologythatisshakinguptheentirestorageindustry.Itisan
opensourceprojectthatprovidesunifiedsoftwaredefinedsolutionsforBlock,File,
andObjectstorage.ThecoreideaofCephistoprovideadistributedstoragesystem
thatismassivelyscalableandhighperformingwithnosinglepointoffailure.From
theroots,ithasbeendesignedtobehigh!yscalable(uptotheexabyteleveland
beyond)whilerunningongeneral-purposecommodityhardware.
2基本概念
2.1SDS
SDSiswhatisneededtoreduceTCOforyourstorageinfrastructure.Inadditionto
reducedstoragecost,anSDScanoffercxibility(灵活性),scalability(扩展性),
andreliability(可靠性).
CloudStorage
CloudStorageisastoragesystemthatshouldbefullyintegratedwithcloudsystems
andcanprovidelowerTCOwithoutanycompromisetoreliabilityandseaIabiIity.The
cloudsystemsaresoftwaredefinedandarebuiltontopofcommodityhardware;
similarly,itneedsastoragesystemthatfollowsthesamemethodology,thatis,being
softwaredefinedontopofcommodityhardware,
UnifiedStorage
Astoragpsystpmthatsinpnrt.sblocks,files,andohjeetstoragefremasinglesystem.
2.2Disk
我们最好将Disk翻译成“硬盘”,当前来说主要包括磁盘和固态硬盘(SSD),前者主要是以
磁分子的两个磁极来存储数据,后者主要以电荷来存储数据。
2.2.1块式与流式
所谓块式存储,即数据以一块一块的方式存储在介质上,数据存储位置的定位是以“块”为单
位;流式存储,即数据以bit方式连续的存储在介质上,数据存储位置的定位是以“比特位”
为单位。最根本的区别还是在数据存储位置的定位方式上,实际上数据在介质上还不是以一个
bit一个bit的存储的吗?!
比如MP3播放器存储歌曲只能从歌曲的开头播放,而磁音机则可以从任何位置开始播放。
2.2.2磁盘
【磁盘物理结构】
图3-2磁盘结构图
【数据存储】
-2-
开It.AMMRBM
域电帆巾◎・借沏
♦失作付杵
•磁盘一般存在多个盘片,每个盘片有两个盘面,每个盘面会有一个磁头,划分为多个同
心磁道,每个磁道划分为多个等长的扇区
•扇区是磁盘存储的最小单元,在扇区内的数据存储是流式的,但是对于磁盘来说,存储
是按照以扇区为最小单元来存储的,即所谓的“块”存储
•CHS=柱面cylinder+破头Header+扇区Sector,扇区的地址由这三个唯一确定
•LBA:LogicalBlockAddress,顺序编址,这个其实是物理编址CHS的逻辑编址,即为
了硬盘控制器能够识别的地址,LBA定义了逻辑地址与物理地址的映射关系
•每个扇区即一段弧线,所以一个扇区的长度即弧线的长度,一个扇区的宽度是多少?注
意比较容易误解的认为是两个磁道之间的距离,实际是磁分子的宽度,也即磁头的大小
•磁极N为1,S极为(),所以每个磁道上的磁分子非常密集,才能存储大量数据
•磁盘的读写是先0号柱面,0号磁头(盘面),0号磁道开始,当0号磁道写满或读完后,
1号盘面0号柱面,0号磁道进行。当0号柱面都写满或读完后,再开始从1号柱面开始,
即换磁道
•硬盘的性能主要由磁道切换的速度来决定的,磁道切换由磁头来进行,速度比较慢,盘
面切换由电机来控制
•硬盘的电路部分实际是一个小型系统,有MCI;DSP、数字电路、BIOS,特别是软件控制
系统存放在BIOS里面,比如磁盘的低级格式化等程序等,同时还可以存储一些动态的信
息,比如磁头位置
【磁盘性能】
-3-
磁盘性能指标.主要有两个:读写IOPS和读写吞吐量。
影响磁盘性能的因素主要有四个:
•转速,磁盘吞吐量的最大影响因素
•寻道速度,磁盘随机IOPS的最大影响因素
•容量
•接口
2.2.3固态硬盘
SSD:SolidStorageDisk,固态存储硬盘,注意这时候就不能称之为磁盘了,因为它不再是
以磁粉子的N和S极来存储数据,而是以每个电子是否充电或电势来存储数据。
SSD有两种,一种是用DRAM芯片来存储数据,又称之为RAM-disk,当外部电源断开后,需要
使用电池来维持DRAM的数据;一种是基于Flash介质的SSD。
固态存储的优势;没有寻道的开销、任何地址的访问开铛是相等的,所以随机10性能很好,
而且几乎没有差别。
RAM:RandomAccess-Memory,送机访问存储器,有DRA第、SRA'kSDRAM,DRAV需要靠不断的刷新来存储数据,
SRAM则不需要刷新,但是比较昂贵,一般用于CPU的cache、CMOS芯片:SDRA'L即SynchronousDRA处靠
时钟相同频率去刷新。
ROM:Read-Only-Memory,只读存储器;PROM,ProgrammableROM;EPROM,ErasableProgrammableROM;EEPROM,
ElectricallyErasableProgrammableROM;FLASHROM则属于真正的单电压芯片,在使用上很类似EPROM,
但是与PR0V有些不同,PR0M在删除时以Byte为最小单元,而FlashRom以Block为最小单元。
但是无论是哪种ROM,都是以“浮动门场效应晶体管”来存储数据的,每个晶体管叫一个最小单元811,有
两种Cell,-^I'SLC(SingleLevelCell),可以保持IB数据,MLC(MultiLevelCell),可以保持
2B数据.
【SSD硬盘逻辑结构】
19-74SSD内部典型框图
【数据存储与读写】
-4-
BlockArchitecture
MK«ai4)8Xl2SptfB
(IQK♦2M)B
CUK•IM)BX£04tMocks
.MMb
njMMb
图3-34Cell阵列的有序率布图图3-35Flash芯片迎辑图
Cell串,即上图3-34纵向的每列,每列同一时间只能有一个Cell被充电:在同一水平线上
的cell构成了所谓的page。
从逻辑上讲,内部的组织结构则是page是Flash的最小10单元,一定数量的page构成一个
block,多个block构成plane,多个plane构成设备。
Flash读数据过程:
通过改变同一page的cell的电势,并加码成1或0,同时存储在RAMBuffer中,即完成一
次读的过程,所以Flash读的最小单元是page;
Flash写数据过程:
先将一个block里面的所有cell放电,状态全部变为1,然后再写数据,如果本身是1的,
则不作什么操作,如果要写(),则需要将cell充电。
那么Flash写为什么要先Erase,再写呢?为什么一定要擦出一个block,而不是一个page
呢?先擦再写主要是为了解决同一page内的不同cell之间的干扰。要擦一个block主要出于
效率的考虑。
【SSD硬盘的顽疾】
顽疾•:先擦再写,会带来比较大的开销,形成较大的写惩罚,所以通常需要较大的缓存;
顽疾二:反复充放电,二氧化硅绝缘能力会受到损耗,最终导致没有足够电荷而宣布硬盘失效,
即所谓的wearoff。
为了解决SSD硬盘的顽疾,常用方法如下:
药方1:尽可能用FrnnSpaen,然后集中回收已经被标记为garhago的page:
药方2:通过外部工具定期清理,比如Wiper;
药方3:TRIM,即文件在删除后,由文件系统通知SSD回收;
药方4:10优化,比如DelayWrite,即如果出现连续的对同一10地址的write操作,则合
并为一次;
药方5:预留一部分空间给SSD控制器自己使用,防止空间被完全写满。
-5-
2.3块存储指令与协议
2.3.1硬盘物理接口
硬盘的指令体系主要有ATA和SCSI.
对应ATA指令体系的物理接口有IDE和SATA,IDE是并行ATA接口,SATA是串行ATA接口;
对应SCSI指令体系的物理接口有
•并行SCSI接口
•串行SCSI接口(SAS)
•IBM专用串行SCSI接口(SSA)
•采用SCSI指令体系并承载于FC协议的串行FC接口(FCP)
2.3.2SCSI指令体系
SCSI接口包括物理接口、指令体系、协议。
SCSI:SmallComputerSystemInterface,不仅仅是硬盘采用此接口,还有扫描仪、光驱、
打印机也大多采用此接口C
采用SCSI接口的硬盘必须要求在主机侧有一个SCSI控制器,而这个SCSI控制器有自己的CPU,
这是与ATA控制器的一个重要区别,也正是这个原因,导致SCSI硬盘比较昂贵,多用于商业
系统。
-6-
SCSI总线ID
SCSI协议的物理层即前面介绍的SCSI物理接口。
SCSI协议的链路层负责将数据帧成功传送到“线路”的对端,注意这里仅仅是线路(徒路)
的对端,如果通信两端中间经过多跳,则要将数据帧成功传输到对端,则是传输层的职责。
SCSI协议网络层,主要是“编址”与“寻址”。
SCSI总线编址采用SCSIID,SCSI控制器会占用一个7号ID,优先级最高,另外还可以有15
个ID供SCSI设备使用。
SCSI寻址采用“控制器-道道-SCSIID-LUNID”,一台主机上可以通过PCI接口接多个SCSI
控制器,每个SCSI控制器可以有多个通道(多条SCSI总线),每个通道上可以挂最多15个
SCSI硬盘(或阵列),对于磁盘阵列还可以从逻辑上划分为多个LUN。
SCSI总线通信采用仲裁机制。
2.3.3块存储指令通信协议
通信协议--遍都遵循OSI模型。
FQPtt>议
协议融合模式独立模式MAP横MAP横式MAP模式Tunnel模式MAP模式MAP模式
式
Payload层数据数据数据数据FC信息表示数据数据
层+数据
信息表示层SCSI自定义FC自定义类似FCTCP/IPTCP/IPTCP/IPTCP/IP
交互逻辑层SCSI自定义SCSISCS成SCSITCPFC文件系统
SATA
寻址层SCSI自定义FC自定义类似FCIPIPIP
协议融合模式一般有三种:利用关系、MAP关系、Tunnel关系。利用关系是指本身没有这个功
能,利用别的协议来使得自己满足,比如ITCP协议没有IP的寻址功能,所以TCP和IP常常是
一起使用的;MAP关系即协议翻译,除了payload外,其他7层内容都从一种协议翻译为另外
一种协议,iFCP就是将FC协议和以太网+TCP/IP之间做翻译:Tunnel关系即隧道封装,比如
FCIP就是将FC的数据包完整的封装在以太网数据包之中。
网络通信协议一般有四个层次,一个寻址层,一个交互逻辑层,也就是说接收到对方的信息后
-7-
如何处理;一个是信息表示层,有点像信封即信封上的地址信息;一个是payload。
2.4Raid
Raid是为了防止硬盘损坏时恢复数据的一种技术。
2.4.1基本术语
•Disk、Strip。、SegmentsBlock、Sector;
•Slripe从上向下,从0开始编号;
•Segment从左向右从。开始编号:
•Block在同一个Stripe里面是从上向下,从左向右;
・Block是针对Raid全局编号。
-8-
2.4.26种Raid模式
Raid模式运行原理优点缺点
Raid0•一组逻辑上连续、物理上也连续的硬扩大存储空间,突如果其中一张硬盘坏
盘组成虚拟磁盘破单张硬盘的容量了,则整个阵列都崩
•运行模式:条带化和非条带化.非条溃了,数据丢失
带化即一块硬盘写满后,接着写第二
块、第三块
•对于条带化模式,如果随机小块I。多
的适合,增加条带深度可以提升性能;
如果连续大块10多的时候,减小条带
深度可以提升性能
Raid1相对于Raid0没有数据保护,Raid1则针数据有备份保障写10的性能要比
对每个block有一份备份数据存放在另外Raid0还要低,而且
一块硬盘上,即数据有两份由阵列中性能最小的
那块决定整个阵列的
性能
Raid2•相对于Raid1,没有数据校验,如果有容错机制多了校验盘,同时需
数据写或读出现某bi嘴误,则无法恢要校验计算,芍来较
复大开销,性能提升存
•Raid2则采用校验算法,由数据盘和在瓶颈
校验盘组成阵列,如果某个数据盘上已经被淘汰
的数据错误,则可以通过校验算法恢
复数据
•数据以lbit为单位分散在各个数据盘
Raid横式运行原理优点缺点
Raid3•将检验盘减少到1块,通过XOR算法可校验盘减少数据无纠错能力
以将丢失的数据恢复每次10都必须要求
•条带深度设置为4k,提高并行写入所有磁盘参与,所以
无;耕发10
Raid4为了克服Raid3无法并发10的缺点,增在10写的时候,相
加条带深度对于Raid3仍然没有
明显提升
Raid5Raid4之所以并发10并没有明显提升,并发写10性能连续读I。性能没有
是因为校验盘在每次10都需要参与,所要比Raid4好很Raid4
以校验盘成为瓶颈多
将校验盘分割,和数据盘组合,不再有
单独的校验盘
Raid5ERaid5坏一块硬盘不影响,但是如果再
坏一块硬盘,则整个阵列崩溃
增加一块热备盘,但某块盘坏了后马上
顶替上
Raid5EERaid5E浪费了一块热备盘,将热备盘分
割到数据盘里面去,则为Raid5EE
Raid6如果同时坏了2块数据盘,则上面的模式写性能更差了
都无能为力
2块校验盘,存放两个数据的校验
-9-
2.4.3Raid卡结构
图5-30RAID卡结构不怠图
2.4.4Raid与LVM
Raid和LVM都是通过软件(Raid卡实质也是软件)将多张“磁盘”虚拟成一个逻辑磁盘,Raid
虚拟出来的逻辑磁盘通常称之为LUN,LVM虚拟出来的逻辑磁盘通常叫LV(LogicVolume)o
SCSI协议定义出三级单元:targetID-»SCSIIDfLUNID。
・LUN是Raid卡虚拟的逻辑磁盘,PV是逻辑卷管理软件将LUN换了一个叫法PV(Physical
Volume)
•VG,VolumeGroup卷组,由多个PV组成
・PP,PhysicalPartition,物理区块,每个PP由连续的多个扇区组成,VG被分成多
个pp
•LP,LogicalPartition,逻辑区块,由多个PP组成,这多个PP之间可以按照类似
Raid0,1等模式来构成LP
•LV,LogicalVolume,逻辑卷,这是卷管理软件能够以别的最小单元
2.4.5Raid的缺点
•RAIDrebuiIdsarepainful
•RAIDspare(备份)disksincreasesTCO
-10-
RAIDrequiresasetofidenticaldiskdriversinasingleRAIDgroup
RAID-basedsystemsoftenrequireexpensivehardwarecomponents,suchasRAID
controllers,whichsignificantlyincreasesthesystemcost
Afterapoint,youcannotgrowyourRAID-basedsystem
RAIDcannotensuredatareliabilityafteratwo-diskfailure.Thisisoneofthe
biggestdrawbackswithRAIDsystems
3存储架构
3.1传统存储架构
从io路径的角度看传统存储架构:
NAS
APP
存储阵列
以太网接口
本地Disk
总线控制器
传统存储体系结构大致有DAS、NAS、SA5I三种。
[DAS]
业
务
违
4U
-II-
追
强
佟
■
,
食
确
理
物
应、
T
-
,
盘
磁
理
物
用、
僖
・
存
内
僖
遢
存
叶内
!
盘
磁
理
物
I
芹‘
盘1
端
理
物
、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026杭州文化广播电视集团所属有关事业单位招聘6人考试备考试题及答案解析
- 2026新疆和田佰安人力资源有限责任公司招(竞)聘4人考试备考题库及答案解析
- 2026江西南昌大学人工智能学院科研助理招聘1人考试参考题库及答案解析
- 2026福建南平武夷创谷产业园区发展有限公司招聘市场化项目工作人员若干人考试参考题库及答案解析
- 2026浙江台州市中心医院(台州学院附属医院)安保岗位招聘5人考试备考题库及答案解析
- 2026江西南昌市市场监督管理执法稽查局招聘仓库管理人员1人考试备考题库及答案解析
- 2026北京海淀区恩济里体大幼儿园招聘2人考试备考题库及答案解析
- 2026河北石家庄城市更新集团有限公司劳务派遣制人员招聘6人考试参考题库及答案解析
- 2026四川广安市中医医院招聘6人考试备考试题及答案解析
- 2026广东深圳人力资源保障局转发深圳港引航站招聘引航员6人考试参考题库及答案解析
- 2025年江苏省淮安市高二上学期学业水平合格性考试调研历史试题(解析版)
- 2025-2026学年人教PEP版小学英语六年级上册期末检测试卷及答案
- 纯化水取样课件
- 山东省青岛市市南区2024-2025学年六年级上学期期末考试数学试卷
- 安全生产责任追究细则
- 寄递物流禁毒培训
- 长沙渣土车管理办法
- 2025年超声波金焊机行业研究报告及未来行业发展趋势预测
- 监狱干警给犯人授课课件
- 医学单招面试真题及答案
- 2025年华龙证券招聘考试题库
评论
0/150
提交评论