Lun的读写策略
读/写策略 | 原理 | 应用场景 |
---|---|---|
常驻 | 读数据或者写数据以最低优先级淘汰,尽量保证常驻在内存中。 | 适合部分业务对性能要求很高并且数据量不大的情况。例如在数据库应用中的日志LUN。 |
默认 | 读数据或者写数据以默认优先级淘汰,按照正常算法进行释放。 | 常规场景下适用。 |
回收 | 读数据或者写数据以最高优先级淘汰,尽快将内存数据刷盘释放。 | 适合大块数据读写,并且一般多数情况只读写一次的场景。例如归档业务场景。 |
预取策略
预取策略 | 原理 | 应用场景 |
---|---|---|
智能预取 | 对主机读请求进行连续性判断,如果是连续的请求,则将当前读请求后面的一段数据从硬盘读预取到Cache中,提高读Cache命中率。 | 适合单个数据流的读应用,或无法判断应用是否顺序的情况。例如文件读写。 |
固定预取 | 在读取数据时,不考虑主机I/O请求中读取长度,按照配置的预取长度将数据预取到Cache中。 | 适合大小固定的顺序读应用。例如多用户流媒体点播,用户使用相同码流。 |
可变预取 | 在读取数据时,按照主机I/O请求中的读取长度的倍数将数据预取到Cache中。 | 适合大小不固定的顺序读应用,或多用户并发读但无法判定预读量的应用。例如多用户多媒体点播。 |
不预取 | 按照主机I/O请求中指定的读取长度直接从硬盘读取数据,即不使用预取功能。 | 不预取策略适合随机读小数据块应用。例如数据库应用。 |
高低水位
Cache高低水位是指Cache中存储脏数据的最高限制值和最低限制值。如果Cache的高、低水位设置不合理,会影响Cache的读写性能。
- 将脏数据缓存在Cache中可使IO得到充分整合与调度,降低延迟,提升性能,但当写Cache中缓存的IO脏数据的总量达到一定上限时,就需要加快数据刷盘的速度,避免由于写Cache缓存了过多脏数据不能接收前端下发的新的写IO请求。
- 默认情况下,系统设置的低水位值为20,在运行实际的业务,特别是随机写业务的时候,可适当的提升低水位值,如设置为40或者50。
- 高水位需根据实际业务的下发情况进行调整,重点关注调整后的性能变化状况和Cache命中率状况,针对随机写业务建议设置在80左右。
- 刷盘线程每隔1s启动一次。
Cache配置建议
高低水位设置的建议:
- 高水位不宜设置太高。如果高水位设置的值太高页面缓冲就小,如果前端I/O流量突然增加,会产生I/O波动和时延增大的现象,从而影响写性能。
- 低水位不宜设置太低。如果低水位设置的值太低,会导致后端将缓存数据频繁写入硬盘,降低写性能。
- 高低水位的间距不宜太小。如果取值间距太小,不能很好的利用后端带宽。
- 系统推荐的Cache高水位和低水位的取值分别为80%和20%。
Disk -> CK -> CKG -> Extent -> Volume -> LUN
文章出自: 本站技术文章均为原创,版权归 "Desen往事 - 个人博客" 所有;部分图片来源于 Yandex ,转载本站文章请注明来源。
本文标题:存储策略的应用