简单来说,SSD缓存的工作机制是:写操作先写入SSD,积累到一定量后再择机写入普通硬盘;读操作中,热门数据直接从SSD读取,速度显著提升。 目前,开源领域实现SSD缓存的主要软件有两个:bcache和flashcache。 bcache需要编译最新内核,门槛较高,配置也较复杂,因此主要应用于测试环境
Linux系统将SSD用作块设备缓存的方法
时间:2026-07-25
浏览:134
文章目录
简单来说,SSD缓存的工作机制是:写操作先写入SSD,积累到一定量后再择机写入普通硬盘;读操作中,热门数据直接从SSD读取,速度显著提升。
目前,开源领域实现SSD缓存的主要软件有两个:bcache和flashcache。
bcache需要编译最新内核,门槛较高,配置也较复杂,因此主要应用于测试环境。flashcache则不同,它最初由Facebook内部使用,后开源发布。目前已有社区编译好的RHEL 6 rpm包,可直接在CentOS 6上安装,使用方便。本次测试选用flashcache进行初步验证。
测试环境
硬件配置如下:
- SSD盘(sdc):160G × 4块,组成RAID 10,使用fio测试,4K随机写入IOPS约5433。
- 普通SAS盘(sdb):146G × 2块,组成RAID 1,使用fio测试,4K随机写入IOPS约447。
两者性能差距明显,SSD约为普通盘的12倍。
初步测试结果如下:
- 4K随机写入:在SSD缓存支持下,IOPS达到5014。
- 4K随机读取:提升更为显著,IOPS达到45874。
Flashcache 安装与配置
以下为具体操作步骤。
安装
在CentOS 6上,添加ELRepo源后,通过一条命令完成安装:
rpm --import http://elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpm
yum install flashcache-utils kmod-flashcache
配置:使用SSD为SAS盘提供缓存
创建缓存的核心命令为 flashcache_create。此处使用 -p back 参数,表示采用写回(WriteBack)模式。
flashcache_create -p back cachedev /dev/sdc /dev/sdb
执行后,会显示缓存设备名称、缓存模式、内存占用等信息。需注意,flashcache的元数据可能占用较多内存,例如示例中提示需要1192MB。
三种缓存模式
flashcache支持三种策略,可根据业务对数据安全的要求选择:
- Writethrough(写透模式):安全性最高。数据同时写入SSD和普通硬盘。若SSD写入性能低于普通硬盘(旧型号SSD可能如此),该模式反而成为性能瓶颈。所有读操作均可享受缓存加速。
- Writearound(写绕模式):同样安全。写入操作直接绕过SSD,写入普通硬盘。只有当数据再次被读取时,才会缓存到SSD。适合写入较少、读取频繁的场景。
- Writeback(写回模式):性能最快,但风险最高。数据仅先写入SSD,再根据策略后台同步至普通硬盘。若SSD故障,未同步的数据将丢失。测试中该模式性能提升最明显。
查看状态与使用
配置完成后,可使用 flashstat 命令实时查看缓存状态、命中率等关键信息。执行后,可看到设备和详细性能统计,核心指标为 hit%(读命中率)和 whit%(写命中率)。
若一切正常,使用 fdisk -l /dev/mapper/cachedev 可查看该混合设备,其大小与普通硬盘一致(本例为146.8GB)。
此后,/dev/mapper/cachedev 可当作普通块设备使用,例如在其上创建物理卷、卷组,再划分逻辑卷,操作方式与普通硬盘相同。
pvcreate /dev/mapper/cachedev
vgcreate ssdcachetest /dev/mapper/cachedev
lvcreate -L 100G -n ssdcache_test_lv1 ssdcachetest
如何拆除缓存
拆除缓存设备需分两步:
dmsetup remove cachedev
flashcache_destroy /dev/sdc
第一条命令从逻辑卷管理器中卸载缓存设备,第二条命令清除SSD上的缓存元数据,使SSD恢复为普通盘。
实用工具推荐
绿化、压缩、噪点和虚拟水印,自由调节做旧程度。
选择画质和输出格式,预览压缩前后的大小。