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

相关推荐
Fanmeang1 小时前
OSPF路由过滤
运维·网络·华为·ip·路由·ospf·路由过滤
我是阿呆同学2 小时前
仿mudou库one thread oneloop式并发服务器
网络
是阿建吖!3 小时前
【Linux | 网络】网络编程套接字
linux·网络
en-route4 小时前
HTTP cookie
网络·网络协议·http
yqcoder4 小时前
2. 你可以说一下 http 版本的发展过程吗
网络·网络协议·http
网硕互联的小客服4 小时前
未来趋势:AI与量子计算对服务器安全的影响
运维·服务器·网络·网络安全·量子计算
黑客老李4 小时前
EDUSRC:智慧校园通用漏洞挖掘(涉校园解决方案商)
服务器·前端·网络·安全·web安全
是阿建吖!4 小时前
【Linux | 网络】网络基础
linux·网络
W说编程4 小时前
物联网通信技术全景剖析:从LoRa到5G的深度对比与选型指南
网络·物联网·5g·射频工程
cui_win5 小时前
【网络】Linux 内核优化实战 - net.ipv4.tcp_timestamps
linux·网络·tcp/ip