ceph之rados设计原理与实现第四章:存储的基石OSD

OSD本质上是凌驾于操作系统之上的进程,拥有cpu、内存、网络带宽等资源,用于实现对象存储,并兼容各种类型的文件系统。

OSD之间利用集群网络互相监督,出现故障及时上报Monitor,由Monitor修改OSDMap后,再由OSD之间互相点对点传播最新OSDMap。

1.集群管理

OSD需要和Monitor定期通讯,报告自身情况,来更新最新的OSDMap,向Monitor报告自身容量使用情况,密钥密钥等,所以OSD进程内部驻留封装了Monitor客户端组件,用于和Monitor通信

2.网络通信

网络通信组件Messenger,包含公共网络、集群网络。

3.OSD上电

磁盘上存储着Objectstore的引导数据,先读出后进行认证,然后再读出Objectstore的超级块于内存,也就是挂载Objectstore,一切正常(OSD有足够权限、符合集群UUID、版本号正确等检测通过)后,需要向Monitor同步OSDMap,由于OSD下电期间OSDMap仍在更新,所以OSD上电之后OSDMap的版本可能和Monitor最新版本差了若干版本号,所以除了OSD需要告知Monitor将OSDMap中自己状态改为UP(因为OSD已经上电),同时Monitor还需要将OSD下电期间缺失的若干版本的OSDMap的增量(最多40个)一起发给OSD,用于更新OSD本地的OSDMap。

4.OSD故障检测

四种状态:Up、Down、In、Out

三种检测方式:自主上报、心跳检测、看门狗(定期向Monitor发送消息保活)

检测到OSD处于Down后,600S后才会置为Out,收波及的PG开始迁移。

5.OSD空间统计

四个等级:NearFull、BackFull(阻止PG迁移写入OSD)、Full(阻止写入OSD)、Failsafefull(阻止写入,避免Full标记延迟导致OSD写满的最后屏障)

存储池总空间 = 存储池已用空间 + 存储池最大可用空间

存储池最大可用空间计算公式为:min{ [ OSD容量 - 预留空间(百分之五) ] / 该OSD在存储池总容量的占比 / 存储池副本数 }

其中OSD容量 / 该OSD比重 = 存储池所有OSD容量之和

存储池已用空间计算公式为:存储池所有OSD已用空间之和 / 副本数

事实上,上述存储池最大可用空间计算公式是以数据分布平衡为前提的,由于取的是min,所以假如两块同样容量的磁盘作为两个OSD,已经写入的数据分布并不均匀,那么min总是取占用空间最大的值来计算最大可用空间,造成计算出的最大可用空间偏小。

相关推荐
网络安全(king)6 分钟前
网络安全攻防学习平台 - 基础关
网络·学习·web安全
李白你好23 分钟前
家用无线路由器的 2.4GHz 和 5GHz
运维·网络
嵌入(师)37 分钟前
嵌入式驱动开发详解21(网络驱动开发)
网络·驱动开发
柒烨带你飞1 小时前
路由器的原理
网络·智能路由器·php
xserver21 小时前
ensp 基于EASY IP的公司出口链路配置
网络·tcp/ip·智能路由器
枫零NET1 小时前
学习思考:一日三问(学习篇)之匹配VLAN
网络·学习·交换机
手心里的白日梦2 小时前
UDP传输层通信协议详解
网络·网络协议·udp
红米饭配南瓜汤2 小时前
WebRTC服务质量(11)- Pacer机制(03) IntervalBudget
网络·网络协议·音视频·webrtc·媒体
网安墨雨3 小时前
浅谈TARA在汽车网络安全中的关键角色
网络·web安全·汽车