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总是取占用空间最大的值来计算最大可用空间,造成计算出的最大可用空间偏小。

相关推荐
zym大哥大5 分钟前
HTTP协议重定向及交互
网络·网络协议·http
言之。1 小时前
Go语言Context机制深度解析:从原理到实践
服务器·网络·golang
Antonio9152 小时前
【网络编程】UDP协议 和 Socket编程
网络·udp·网络编程
weixin_467209282 小时前
zynq上的裸机lwip网络性能测试iperf使用心得
网络
戒不掉的伤怀2 小时前
Arkts完成数据请求http以及使用axios第三方库
网络·网络协议·http
照海19Gin3 小时前
HCIA-Datacom 高阶:VLAN、VLANIF 与静态路由综合实验
网络·智能路由器
Zz_waiting.3 小时前
网络原理 - 11(HTTP/HTTPS - 2 - 请求)
运维·网络·网络协议·mysql·http·https·抓包
JhonKI5 小时前
【Linux网络】深入解析I/O多路转接 - Select
linux·运维·网络
精神病不行计算机不上班5 小时前
【计网】计算机网络的类别与性能
网络·计算机网络
我学上瘾了5 小时前
链表反转_leedcodeP206
网络·redis·链表