[具体见 https://www.jianshu.com/p/2246464306b2]
其他:
问题0,数据的存储设备?
数据的存储有3种形式,一种是直接以二进制数据的形式存储在裸设备(包括块设备)上,另外一种是以文件的形式经过文件系统管理进行存储。第三种就是以对象的形式进行对象存储。本篇讨论围绕着块设备形式的存储。
问题1,什么是块设备?
块设备将信息存储在固定大小的块中,每个块都能进行编址。块设备的基本特征是每个块都能区别于其它块而读写。块设备也是底层设备的抽象,块设备上未建立文件系统时,也称之为裸设备。
问题2,块设备与ceph的联系?
client想要把数据存储到ceph的集群中时,他必须要有一个读写的目标,能够在本地知道这个目标。这里讲的是块存储,当然这个读写的目标要是一个块设备才行,需要将这个块设备与ceph关联起来,这个块设备通常成为rbd设备。
问题3,rbd 是什么?
rbd的全称应该是Rados Block Device。rbd是由ceph进行整理物理资源并且向外提供的RAODS形式的块设备,这样的块设备在客户端同其他类型的块设备使用方法相同。
问题4,ceph是如何向外提供块设备存储的能力呢?
ceph的组成部分为MON、MDS,OSD,其中OSD就是提供存储能力的节点。前端的存储请求通过crush规则进行映射OSD,最终分解到具体的OSD,然后发给对应的OSD上,最后的请求交给了OSD处理。
问题5,OSD是如何存储数据的呢?
OSD其实是建立在文件系统之上的,当你使用一个块设备进行部署OSD节点时,部署工具会默认格式化osd为xfs,当然你也可以预先格式为想要的文件系统(ext4等)。数据到了OSD层次时,这时可以把这个请求变成一个文件的操作,最后交给了xfs文件系统,最终组织到了磁盘上。