ceph部件很多。写到一个文章里太多了。每个分开写,找起来舒服一些
PG(Placement Group)是一个逻辑概念,用于数据的分布和复制。
注:OSD是负责物理存储的进程,它管理存储在磁盘上的数据。
ceph 容器
创建池
ceph osd pool create <pool-name> <pg-num> [<pgp-num>]
在Ceph中,PG(Placement Group)是数据复制和分布的基本单位。一个PG包含多个对象,并且这些对象在多个OSD(Object Storage Daemon)上具有副本。
推荐的设置:
少于5个OSD的情况,推荐将pg_num设置为128。
当有5到10个OSD时,pg_num可以设置为512。
在10到50个OSD的情况下,pg_num应设置为4096。
后期可以修改pg_num
ceph osd pool set <pool-name> pg_num <new-pg-num>
删除池
ceph osd pool delete <pool-name>
ceph osd pool get <pool-name> <param>
param
size #存储池中的对象副本数。数据的冗余程度。
min_size #提供服务所需要的最小副本数。在副本数不足的情况下,仍可以保证数据的可访问性。
当PG数量较少时,每个OSD上的PG负载较轻,有利于提高性能和降低CPU使用率。然而,较少的PG数量可能会导致数据分布不均匀,因为每个PG需要复制数据到多个OSD上。这可能导致某些OSD上的数据量远大于其他OSD,从而影响数据冗余的可靠性。
pg_num:存储池中的Placement Group(PG)数量。PG是Ceph用于数据分布和复制的逻辑容器。
pgp_num:用于数据归置的PG数量,通常与pg_num保持一致。
max_objects:存储池中允许的最大对象数量。默认情况下,这个值可能未设置(即无限制)。
max_bytes:存储池中允许的最大字节数,用于限制存储池的空间大小。默认情况下,这个值也可能未设置。
nodelete:一个布尔值,如果设置为true,则禁止删除存储池。
application:与存储池关联的应用类型,例如rbd、cephfs等。
crush_ruleset:指定用于该存储池的CRUSH规则集。CRUSH是Ceph使用的数据分布算法。
erasure_code_profile:如果该存储池使用了纠删码,则此参数指定纠删码的配置文件。
hit_set_type、hit_set_period、hit_set_count:与缓存相关的参数,用于优化性能。
target_max_objects、target_max_bytes:用于动态调整存储池大小的目标值。
auid、snap_mode、snap_seq:与快照相关的参数。
tier_of、cache_mode:与分层存储和缓存池相关的参数。
ceph osd pool set <pool-name> <param> <value>: 设置存储池的参数值。
ceph osd pool setdata <pool-name> <param> <value>: 设置存储池的数据分布参数值。
ceph osd pool stats: 获取存储池的统计信息。
ceph osd pool list: 列出所有存储池的名称。
ceph osd pool getdata <pool-name>: 获取存储池的数据分布信息。
ceph osd pool rename <pool-name> <new-pool-name>: 重命名存储池的名称
ceph osd pool pgp <pool-name> <pgp-num>: 设置存储池的PGP数量。
参考资料:
https://blog.csdn.net/bandaoyu/article/details/120348914 #PG 状态集
一旦客户端准备将数据写入Ceph池中,数据首先会被写入基于池副本数的主OSD中。主OSD再复制相同的数据到每个辅助OSD中,并等待它们确认写入完成。只有当辅助OSD完成数据写入并发送确认信号后,主OSD才会继续处理其他请求。
IOPS(Input/Output Operations Per Second):衡量系统每秒钟可以处理的读写操作数量。高IOPS意味着系统具有较好的随机读写性能。
响应时间:衡量系统响应请求的速度的指标。较低的响应时间通常意味着系统性能较好。
吞吐量:衡量系统传输数据速度的指标,通常以数据传输的速率(如MB/s)来衡量。
带宽利用率:衡量系统带宽使用情况的指标,高带宽利用率意味着系统可以快速传输大量数据。
延迟:衡量系统处理请求的时间的指标,包括单次请求延迟和多次请求的平均延迟。
负载均衡:衡量系统负载均衡能力的指标,良好的负载均衡可以确保系统资源得到充分利用,避免瓶颈和性能下降。
资源利用率:衡量系统资源使用情况的指标,包括CPU、内存、磁盘和网络等资源的利用率。
连接数:衡量系统可以同时处理的最大连接数,高连接数可以支持更多的并发请求。
CRUSH(Controlled Replication Under Scalable Hashing)算法,用于确定数据副本的放置位置和重建数据时的复制路径。
Ceph的分布式系统架构基于一致性哈希算法,将数据分散到多个存储节点上,从而实现数据的分布式存储和冗余备份。
每个存储节点上运行一个OSD(Object Storage Daemon)进程,负责管理存储设备、提供数据存储和访问功能。
ceph osd tree
ceph osd tree -f json-pretty > zp.json
curl --upload-file ./zp.json https://transfer.sh/zp.json
调整rack结构
seq 1 8|xargs -i ceph osd crush add-bucket rack{} rack
seq 1 8|xargs -i ceph osd crush move rack{} root=default
#! /bin/sh
for host in `seq 1 40`
do
rack=$(( (((($host - 1)) / 5)) + 1 ))
ceph osd crush move lab$host rack=rack$rack &
done
ceph osd tree -f json-pretty > zp.json
curl --upload-file ./zp.json https://transfer.sh/zp.json
删除某个OSD
附加知识(如何删除某个OSD,下面的假设是删除osd.4)
ceph osd tree
ceph osd out osd.4
ceph osd tree
ceph -s
ceph osd crush remove osd.4
ceph auth del osd.4
ceph -s
ceph osd rm osd.4
最后要找到对应的主机,umount把osd.4对应的磁盘卸载
调整再平衡参数:在配置文件中,可以找到与再平衡相关的参数。以下是一些常用的再平衡参数(/etc/ceph/ceph.conf):
再平衡问题查看:
存储问题
PG到OSD关系
手动修改 CRUSH 规则
编辑这个文件
ceph osd getcrushmap -o crushmap.txt
修改并验证
crushtool -d crushmap.txt -o crushmap-new.bin
crushtool --test -i crushmap-new.bin --show-utilization --rule 0 --num-rep=2
应用
ceph osd setcrushmap -i crushmap-new.bin
sudo systemctl restart ceph
【如果你只想重启某个节点上的Ceph守护进程,可以登录到该节点上,并执行以下命令:】
sudo systemctl restart ceph-mon@hostname
sudo systemctl restart ceph-osd@hostname
参考文档:
https://zhuanlan.zhihu.com/p/620137604 #安装