ceph自动分层存储功能验证

做过存储业务的同学都知道,有些数据块存取频率高("热"区块),有些数据存取频率低("冷区块")。如果不分冷热地一律使用高速的SSD存储是很不划算的。

小编也遇到了同样的问题。于是想到了ceph的自动分层存储的功能,既能保证"冷区块"可以访问,又能保证"热区块"可以应对并发必然是很好的。

分层存储的方式也分为write back、read forward、read proxy、write proxy、read only五种,具体采用哪中,接下来就要动手验证了。

1. 测试组网

设备信息

2. 测试方法及思路
基本思路:将设置缓存前和设置缓存后的测试结果进行比较
使用的工具:rados命令、dd命令
注:rados是ceph自带的压力测试工具;dd是linux自带的简单的读写测试工具;(由于小编常用cephfs,所以测试也用到此工具)
注意事项:
为了避免操作系统缓存对dd命令的影响,测试文件最好超过内存大小;
当读文件测试时,应先将内存sync到磁盘后再进行读操作;
为节省时间,应先用rados确定选型,然后用dd命令验证.

3. 测试前准备
3.1 osd分布结构

 

[root@ceph01 crush]# ceph osd tree
ID WEIGHT  TYPE NAME       UP/DOWN REWEIGHT PRIMARY-AFFINITY 
-7 0.18999 rack vrack                                        
 3 0.18999     osd.3            up  1.00000          1.00000 
-6 0.23799 rack r1                                           
-5 0.23799     host ceph04                                   
 4 0.11899         osd.4        up  1.00000          1.00000 
 5 0.11899         osd.5        up  1.00000          1.00000                      

3.2 副本分布规则

#cephfs_data使用此规则
rule sata_ruleset {
        ruleset 1
        type replicated
        min_size 1
        max_size 10
        step take r1
        step take ceph04
        step chooseleaf firstn 0 type osd
        step emit
}
#cache_data使用此规则
rule ssd_ruleset {
        ruleset 2
        type replicated
        min_size 1
        max_size 10
        step take vrack
        step choose firstn 1 type osd
        step emit
}
#cephfs_matadata使用此规则
rule meta_ruleset {
        ruleset 3
        type replicated
        min_size 1
        max_size 10
        step take vrack
        step chooseleaf firstn 1 type osd
        step emit

        step take r1
        step take ceph04
        step chooseleaf firstn -1 type osd
        step emit
}

4. 测试场景及结果
1) 单盘不挂载云存的读写测试:
测试场景:
以4MB的块大小顺序写10240次;
以4MB的块大小顺序读10240次;
测试结果:

磁盘

写(MB/s)

读(MB/s)

STAT硬盘

116MB/s

117MB/s

SSD硬盘

355MB/s

548MB/s

2) ceph不启用缓存测试:
测试场景:
以4MB的块大小顺序写10240次;
以4MB的块大小顺序读10240次;
测试结果:

Cephfs磁盘

写(MB/s)

读(MB/s)

STAT硬盘

20.2

25.7

PS:结果经过多次测试,可以确保并非是偶然因素引起。可见cephfs对硬盘的读写速度损失很大,小编用的ceph版本为10.2.9,操作日志写磁盘、两个osd处于同一个磁盘的不同分区上、网络链路中有瓶颈、多osd和mds间的消息交互都有可能是造成此问题的原因。事实上,在长期操作的经验看,cephfs只会损失一半的读写速率。由于本次实验以验证分层缓存为主,此结果并不会影响测试。
3) 缓存模式筛选测试
测试场景:
使用rados bench对writeback、forward、readyonly、readforward、proxy、readproxy六种模式进行测试验证。
测试结果:

mode

(MB/s)

(MB/s)

二次写

(MB/s)

第二次读

(MB/s)

释放内存

再读(MB/s)

writeback

19.301

96.201

19.344

94.432

97.513

forward

20.042

97.392

20.118

92.051

97.045

readyonly

20.641

97.175

18.889

96.971

97.332

readforward

229.658

528.840

216.601

535.137

531.429

proxy

19.666

97.306

20.181

93.732

97.401

readproxy

230.313

531.249

158.207

540.413

547.318

注:所有模式的测试都是先写后读,命中率高,因此读的速率要偏高。切换模式测试时,用"rados -p poolname cleanup"命令清除测试数据,保证两个模式之间的测试不会相互影响。
4) 启用目标缓存模式测试
测试场景:
以4MB的块大小顺序写10240次;
以4MB的块大小顺序读10240次。
测试结果:(启用的缓存模式为readproxy)

Cephfs磁盘

写(MB/s)

读(MB/s)

SSD硬盘

147

296

同时dstat命令监控网卡,可以发现,当写完成后,在高速存储和低速存储的主机之间有持续的流量进行交互。

5. 测试结论
因为小编面对的场景是"先写再读,保证最终结果的可用性",因此测试方法也是先写再读。当缓存miss时,forward对应的是重定向,proxy会对应修改cache pool的操作。
从测试结果看,针对先写后读的场景,readforward和readproxy,是先写cache pool返回,然后将数据同步到basepool的,而其他模式都是先保证写到base pool,然后读取的。
当然,分层存储的功能还不止于做数据的冷热分离,社区中有人用分层存储来实现ceph的"两地三中心"的部署方式。既保证本地提供高质量的服务,又可以保证数据在异地有备份,你想到了么?

关注我们的公众号,获取更多有料的软硬件知识

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值