Linux服务器存储优化领域中,dm-cache此内核级解决方案,把SSD这类快速设备,跟HDD这类慢速设备相结合,用以提升整体I/O性能,它作为设备映射器目标驱动,给CentOS系统,提供了透明且灵活的块级缓存方式,系统管理员若要在预算与性能间探寻平衡,理解其工作原理跟适用场景十分关键。

dm-cache在CentOS中如何安装与加载

于CentOS 7或者8之上运用dm-cache,首先得要保证系统内核涵盖了此模块,通常来讲,标准内核已内在予以支撑,你要去安装必备的用户空间工具,主要是device - mapper - persistent - data以及lvm2包,运用yum install命令便可达成安装,这些工具供给了管理以及配置缓存所不可或缺的dmsetup命令

centos dm-cache_centos dm-cache_centos dm-cache

使用命令modprobe dm-cache来加载dm-cache内核模块。为了能够确保在系统启动的时候就会自动进行加载,可将其添加到/etc/modules-load.d/这个配置文件当中。在安装并且加载之后,能够借助dmsetup targets命令去进行验证,在输出列表之中要是看到“cache”那就意味着是可用的。这些均是使用之前所必备的准备工作。

dm-cache缓存策略应该怎么选择

dm -- cache主要给出三种缓存策略,分别是写通(writethrough),写回(writeback)以及直写(writearound)。写通策略在数据写入缓存之际马上写入后端慢速磁盘,以此确保了数据一致性,然而写这一性能的提升是有限的。它适用于那种对数据带有极高安全性要求、还可以接纳写入延迟的场景,就像重要的日志或者数据库事务日志那样的情况。

centos dm-cache_centos dm-cache_centos dm-cache

写回策略是先把数据写入缓存然后即刻返回,之后再以异步方式刷入后端磁盘,这能够明显提升写入速度,不过存在缓存数据在尚未落盘时因断电而丢失的风险,写绕策略则是绕过缓存直接写入速率较慢的磁盘,同时把相应数据块标示为无效并从缓存里清除,选择策略需要在性能与数据安全之间进行权衡linux命令手册,一般情况下写回策略用于临时数据,写通策略用于关键数据。

如何为CentOS创建dm-cache设备

在创建dm -- cache设备之前,要先准备好三个相关的块设备。其中,有一个速度较为缓慢的“源设备”,举例来说就是像/dev/sdb1这样的设备。除了这个,还有一个速度较快的“缓存设备”,比如/dev/sdd1这样的设备。第三个则是起记录映射消息功能的小的“元数据设备”。针对元数据设备的来源,可用磁盘分区或者LVM逻辑卷。首先,通过dmsetup create这个命令去创建元数据设备,其指定的大小一般是缓存设备容量的千分之一。

centos dm-cache_centos dm-cache_centos dm-cache

借助dmsetup create cache命令,去编写一个复杂的映射表,以此来组装终端的设备,在表里面需要依照顺序指定缓存设备的块大小,元数据设备,缓存设备,源设备,还有缓存块大小比如256KB以及选定的策略,当创建成功之后,那种新元素会在/dev/mapper/之下产生设备上的结,这样就能够类似寻常的块设备一样进行格式化以及挂载运用 。

dm-cache性能优化有哪些关键参数

对性能而言,调整缓存块大小有着显著影响,默认值一般是256KB。要是贵应用主要开展小文件随机读写,朝着适当减小块大小(像64KB)的方向,或许能够增加缓存命中率以及空间利用率。相反的情况是centos dm-cache,针对大文件进行顺序读写的时候,加大块大小能够削减元数据开销。得借助测试实际工作负载去明确最佳值。

还有一个关键要点在于元数据设备的速度,它的容量是很小的,只是所有缓存查找都必须要去访问它centos dm-cache,所以把它放置在低延迟的存储之上是极为重要的,像SSD的另一分区,甚至是内存支持的设备这类,另外,监控缓存设备的剩余寿命,对于SSD来说,以及定期查验dmsetup status的输出内容,去知晓缓存命中率、脏数据比例这般的信息,是持续进行调优的基础所在。

centos dm-cache_centos dm-cache_centos dm-cache

dm-cache与LVM缓存有什么区别

LVM缓存是Red Hat系发行版含CentOS里那更处于上层、更易于管理的一种实现,它的底层技术是dm-cache。LVM缓存借助lvconvert命令对逻辑卷直接进行操作,将设备创建以及元数据管理的过程予以自动化。对于绝大多数CentOS用户来讲,LVM缓存鉴于其和系统卷管理工具的天然融合,属于更值得被推举的选项。

拿两者进行比较的话,直接去运用dm-cache给予了更为底层的那种控制灵活性,你能够精细地去调整每一个参数。然而它的配置命令繁杂,容易出现错误,并且不容易被集成到现有的启动流程或者监控体系当中。除非有着极为特殊的缓存拓扑需求,否则在CentOS环境里,应当优先去考虑运用LVM缓存,它降低了使用的门槛,与此同时保持了核心性能方面的优势。

CentOS使用dm-cache常见问题如何解决

centos dm-cache_centos dm-cache_centos dm-cache

有个常见的问题在于,创建缓存设备之后,性能这方面提升得并不显著。这一般是源自于,缓存设备性能欠缺、缓存块大小和负载不相契合,又或者是热点数据集大小远远超过了缓存容量。要借助iostat以及dmsetup status来进行监控,对命中率加以分析。要是命中率比较低,就得考虑将缓存设备进行扩容,或者重新对工作负载特性予以评估。

又一个风险是处于写回模式时的数据会丢失,就在计划内重启之前,应当运用dmsetup命令把缓存模式临时转变为写通,还要等待所有脏数据同步完毕,对于意外断电而言,保证硬件配备UPS那是必需的补救举措,另外,在系统启动进程当中linux培训,要是缓存元数据损坏,或许会致使源设备无法挂载,所以务必要定期备份关键数据,并且要熟悉从缓存故障里恢复源设备的步骤。

于您的生产环境里头,是鉴于成本而选用了HDD与SSD的混合存储方案,还是径直采用了全闪存阵列?在性能、成本以及运维复杂度这三者之间,您又是怎样做出最终决策的?欢迎于评论区去分享您的实践经验,要是本文对您有所助益,也请点赞予以支持并且分享给众多更有需要的同行。

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复