1、ceph启动时配置文件生效顺序是$CEPH_CONF---->-c path/path ---->/etc/ceph/ceph.conf---->~/.ceph/config---->./ceph.conf
2、将创建的卷映射成块设备因为rbd镜像的一些特性,OS kernel并不支持,所以映射报错,解决方法: disable掉相关特性(ceph中rdb map出错rbd sysfs write failed怎么办 - 云计算 - 亿速云 (yisu.com))
rbd feature disable rbd_pool/volume1 exclusive-lock object-map fast-diff deep-flatten
3、volume的专业术语为image, 我这里叫存储卷方便理解。
4、ceph存储集群至少需要一个Ceph Monitor和两个 OSD 守护进程。
5、安装完ceph集群后,集群外的机器想使用Ceph集群内创建的rbd文件。那么,就需要安装Ceph的客户端,也就是rbd客户端,以及一些RBD专用的内核模块:安装依赖以及ceph-common;到ceph节点中拷贝ceph.client.linux_mount.keyring
文件和ceph.conf
;然后将远端的RBD文件映射到本地
# rbd map abcdocker_rbd/linux_mount.img --id linux_mount
编辑/etc/ceph/rbdmap文件,设置自动map
echo "abcdocker_rbd/linux_mount.img id=linux_mount,keyring=/etc/ceph/ceph.client.linux_mount.keyring " >>/etc/ceph/rbdmap
设置rbdmap为开机启动
systemctl enable rbdmap
修改fstab,设置开机挂载
echo "/dev/rbd0 /data ext4 defaults,noatime,_netdev 0 0" >>/etc/fstab
6、(分布式存储系统之Ceph集群存储池、PG 与 CRUSH - Linux-1874 - 博客园 (cnblogs.com))PG是用于跨OSD将数据存储在某个存储池中的内部数据结构;相对于存储池来说,PG是一个虚拟组件,它是对象映射到OSD时使用的虚拟层;出于规模伸缩及性能方面的考虑,Ceph将存储池细分为归置组,把每个单独的对象映射到归置组,并将归置组分配给一个主OSD;存储池由一系列的归置组组成,而CRUSH算法则根据集群运行图和集群状态,将各PG均匀、伪随机地分布到集群中的OSD之上;所谓伪随机是指,在osd都健康数量没有变化的情况下,同一PG始终映射相同的OSD;若某OSD失败或需要对集群进行重新平衡,Ceph则移动或复制整个归置组而无需单独寻址每个对象;归置组在OSD守护进程和Ceph客户端之间生成了一个中间层,CRUSH算法负责将每个对象动态映射到一个归置组,然后再将每个归置组动态映射到一个或多个OSD守护进程,从而能够支持在新的OSD设备上线时动态进行数据重新平衡
7、PG数量由管理员在创建存储池时指定,而后由CRUSH负责创建和使用,通常,PG的数量应该是数据的合理颗粒度的子集,例如,一个包含256个PG的存储池意味着每个PG包含大约1/256的存储池数据;当需要将PG从一个OSD移动到另一个OSD时,PG的数量会对性能产生影响;PG数量过少,Ceph将不得不同时移动相当数量的数据,其产生的网络负载将对集群的正常性能输出产生负面影响;即PG过少,那么对应一个PG存储的数据就越多,则移动PG会占用过多的网络带宽,从而影响正常客户端的使用;而在过多的PG数量场景中在移动极少量的数据时,Ceph将会占用过多的CPU和RAM,从而对集群的计算资源产生负面影响。即PG过多,对应每个PG维护的数据较少,但是集群需要花费很多CPU和内存来维护和追踪PG的信息;从而造成集群的计算资源和内存资源造成影响,从而进一步影响客户端使用;所以在ceph上pg的数量不宜过多和过少;
8、PG状态:“active+clean”。Active:所谓Active状态是指主OSD和各辅助OSD均处于就绪状态,可正常服务于客户端的IO请求所处于的状态;一般,Peering操作过程完成后即会转入Active状态;Clean:是指主OSD和各辅助OSD均处于就绪状态,所有对象的副本数量均符合期望,并且PG的活动集和上行集是为同一组OSD;
9、ceph客户端存取对象数据的过程就是,先提取用户要存入的对象数据的名称和存储到那个存储池之上;然后通过一致性哈希算法计算出对象名称的hash值,然后把这个hash值和在对应存储池PG位图掩码做“与”运算得到目标PG的标识符,即PG ID;有了PG_ID,再根据CRUSH算法结合集群运行图和PG对应的OSD集合,最终把PG对应的主OSD确认,然后将对应osd的信息返回给客户端,然后客户端拿着这些信息主动联系osd所在主机进行数据的存取;这一过程中,没有传统的查表,查数据库之类的操作;全程都是通过计算来确定对应数据存储路径;这也就规避了传统查表或查数据库的方式给集群带来的性能瓶颈的问题。
10、通过rbd map把rbd映射到系统,然后格式化块设备,挂载到一个目录,最后操作目录,但是重启系统后,映射的rbd块设备不会自动挂载到系统,又得重新手动挂载一遍,流程比较麻烦。ceph有没有提供自动挂载的工具呢?答案便是rbdmap工具:rbdmap使用非常简单,只有三个操作:map、unmap和unmap-all。虽然说rbdmap可以在任何时候执行,但都是偏向系统启动时加载,系统关闭时卸载,由相应的rbdmap.service管理,所以要使能rbdmap.service开机启动,即systemctl enable rbdmap.service。