一. 缓存池运维
1.1 自定义硬盘类型
ceph osd crush class ls
ceph osd crush class create ssd
ceph osd crush class create sata
ceph osd crush rm-device-class osd.3
ceph osd crush set-device-class ssd osd.3
1.2 自定义角色管理不同类型硬盘
ceph osd crush rule ls
ceph osd crush rule create-replicated rule-ssd default host ssd
ceph osd crush rule create-replicated rule-sata default host sata
ceph osd crush rule create-replicated rule-hdd default host hdd
1.3 设置存储池为不同角色
- 针对同一个存储池设置角色会覆盖
ceph osd pool create images 32 32
ceph osd pool set images crush_rule rule-hdd
ceph osd pool set images crush_rule rule-ssd
ceph osd pool set images crush_rule rule-sata
- 可查看不同硬盘类型对应的角色是谁
ceph osd crush rule ls-by-class hdd
ceph osd crush rule ls-by-class ssd
ceph osd crush rule ls-by-class sata
- 查看存储池对应的角色
ceph osd pool get images crush_rule
1.4 配置存储池副本满足要求
- 将名为"images"的OSD池的"min_size"属性设置为1,表示只需要一个副本即可满足数据可用性的要求。
- Ceph通常使用数据复制来确保数据的持久性和高可用性。通过设置较大的"size"值,可以增加数据的冗余和可靠性,但也会消耗更多的存储空间。相反,设置较小的"size"值可以节省存储空间,但可能降低数据的可靠性,因为在一个副本不可用的情况下,数据将无法访问。
ceph osd pool set images min_size 1
1.5 创建缓存池
-
已 rule-ssd 角色创建存储池
ceph osd pool create cache 64 64 rule-ssd
-
这条ceph命令的意思是将名为"images"的存储池设置为"cache"层。
- 在Ceph中,层级存储(Tiering)是一种数据存储和访问的方式,它将不同类型的存储池组合在一起,以实现更高效的数据管理和访问。
- 层级存储通常由两个主要层级组成:热层(hot tier)和冷层(cold tier)。热层通常是较快、较昂贵的存储,而冷层通常是较慢、较便宜的存储。
ceph osd tier add images cache
-
将名为"cache"的存储池(也称为缓存池)的缓存模式设置为"writeback"。
- 在Ceph中,层级存储(Tiering)允许将数据从一个池(通常是慢速、较便宜的池,称为冷层)自动迁移到另一个池(通常是较快、较昂贵的池,称为热层)中,以提高数据的访问性能。缓存池通常用作热层,而这个命令是在配置缓存池的缓存模式时使用的。
- "writeback"是一种缓存模式,它指定数据写入到缓存池时的行为。具体来说,当缓存模式设置为"writeback"时,写入的数据首先会写入到缓存池中,并且很快地确认写入已完成(不等待数据复制到后端的主要存储池)。然后,Ceph后台进程会异步地将数据从缓存池迁移到主要存储池中,以实现层级存储的目标。
ceph osd tier cache-mode cache writeback
-
将名为"images"的存储池设置为"cache"池的覆盖层。
- 在Ceph中,层级存储(Tiering)允许将数据从一个池(通常是较慢、较便宜的池,称为冷层)自动迁移到另一个池(通常是较快、较昂贵的池,称为热层)中,以提高数据的访问性能。在这个命令中,"images"是指定的主要存储池,而"cache"是指定的用作热层的缓存池。
- 命令
ceph osd tier set-overlay images cache
用于将"images"存储池设置为"cache"池的覆盖层。这意味着"images"存储池将使用"cache"存储池作为其热层缓存。数据将首先写入到"cache"池中,然后根据层级存储策略,Ceph会将部分数据从"cache"池迁移到"images"池,以实现数据的层级存储和访问优化。
ceph osd tier set-overlay images cache
-
将名为"cache"的存储池(也称为缓存池)的"hit_set_type"属性设置为"bloom"。
- 在Ceph中,"hit_set_type"属性用于配置缓存池的命中集(Hit Set)类型。命中集是用于跟踪缓存池中哪些对象被频繁访问的数据结构。通过记录这些信息,Ceph可以更有效地判断哪些数据适合保留在缓存池中,从而提高缓存的命中率和性能。
- 当"hit_set_type"属性设置为"bloom"时,Ceph将使用布隆过滤器(Bloom Filter)作为命中集的类型。布隆过滤器是一种快速且高效的数据结构,用于检查一个元素是否存在于一个集合中。在这种命中集类型下,Ceph可以使用布隆过滤器快速判断一个对象是否在缓存池中,从而更好地管理缓存数据。
ceph osd pool set cache hit_set_type bloom
-
将名为"cache"的存储池(也称为缓存池)的"hit_set_count"属性设置为1。
- 在Ceph中,"hit_set_count"属性用于配置命中集(Hit Set)的数量。命中集是用于跟踪缓存池中哪些对象被频繁访问的数据结构。通过记录这些信息,Ceph可以更有效地判断哪些数据适合保留在缓存池中,从而提高缓存的命中率和性能。
- 将"hit_set_count"设置为1意味着只使用一个命中集。这样,Ceph将仅跟踪缓存池中的一个命中集,用于记录频繁访问的对象信息。相比使用多个命中集,这可能会减少命中集的内存占用,但也可能会影响到缓存的命中率,因为只有一个命中集来记录访问模式。
- 需要注意的是,设置"hit_set_count"的值应根据实际使用情况和性能需求进行调整。较小的"hit_set_count"值可能减少命中集的内存占用,但可能会牺牲一定的命中率。较大的"hit_set_count"值可能会提高命中率,但也会增加内存使用。因此,需要根据实际情况权衡取舍,并进行适当的性能测试和监控来优化缓存池的配置。
ceph osd pool set cache hit_set_count 1
- 将images存储池设置为块类型
ceph osd pool application enable images rbd
-
方法1: 将名为"cache"的存储池(也称为缓存池)的"target_max_objects"属性设置为256。
- 在Ceph中,"target_max_objects"是缓存池的一个属性,用于设置缓存池的目标最大对象数。缓存池是层级存储中的热层,用于存储频繁访问的数据,以提高数据的访问性能。
- 通过将"target_max_objects"设置为256,Ceph会尝试保持缓存池中的对象数量约为256个。如果缓存池中的对象数量超过了该值,Ceph会根据缓存策略选择性地将一些对象从缓存池中淘汰,以确保缓存池的大小保持在目标范围内。
- 1个对象是1MB,这个能最大存储1024MB=1G
ceph osd pool set cache target_max_objects 256
- 查看存储池状态
ceph osd dump | egrep 'images|cache'
-
方法2:将名为"cache"的存储池(也称为缓存池)的"cache_target_full_ratio"属性设置为0.1。
- 在Ceph中,"cache_target_full_ratio"属性用于设置缓存池的目标满池比率。缓存池是层级存储中的热层,用于存储频繁访问的数据,以提高数据的访问性能。
- 通过将"cache_target_full_ratio"设置为0.1,Ceph将设定缓存池的目标满池比率为10%。这意味着当缓存池使用的空间达到总空间的10%时,Ceph会认为缓存池已经满,不再接受更多的数据。这样可以确保缓存池不会完全填满,从而避免缓存池因过度使用而导致性能下降或故障。
- 需要注意的是,"cache_target_full_ratio"的设置应根据实际需求和性能要求进行调整。较小的值可能导致缓存池过早满池,从而限制了其性能提升的能力。较大的值可能会使缓存池过度使用,可能影响其他存储资源的可用性。因此,设置合理的"cache_target_full_ratio"值需要综合考虑存储需求和性能目标。
ceph osd pool set cache cache_target_full_ratio 0.1
1.6 缓存池使用
rbd create images/disk1 -s 10G
# 可以发现缓存池与副本池都有disk1块设备
rbd ls -p images
rbd ls -p cache
# 映射到服务器
rbd map images/disk1
mkfs.xfs /dev/rbd0
mount /dev/rbd0 /mnt/
- 如果不用了,那么需要手动释放掉缓存池中的数据到存储池中
rados -p cache cache-flush-evict-all
1.7 删除缓存池
rados -p cache ls
# 释放到存储池中
rados -p cache cache-flush-evict-all
ceph osd tier rm-overlay images
ceph osd tier rm images cache
标签:存储,缓存,cache,ceph,images,osd,高速缓存
From: https://www.cnblogs.com/wsxier/p/17609817.html