二级缓存

本篇详细介绍PrimoCache的二级缓存特性。PrimoCache基于双级缓存系统架构设计,该架构由一个一级缓存和一个二级缓存组成。一级缓存使用物理内存作为缓存设备,而二级缓存则通常使用SSD固态硬盘、闪存盘或其它读写速度较快的永续性存储设备。二级缓存的主要目的是利用这些读写速度快的设备作为缓存来加速读写速度较慢的普通机械硬盘。如果您的计算机只有固态硬盘或只有机械硬盘,则没有必要使用二级缓存。

由于SSD、闪存盘等设备具有数据永续性,因此和一级缓存不同,存储中二级缓存的缓存数据在计算机关机后不会丢失。当计算机再次启动后,所需要的常用数据就可以直接从二级缓存中读取,而无需访问速度较慢的机械硬盘。对于操作系统或应用程序安装在机械硬盘的计算机,这个特性可以显著减少系统启动时间以及加快应用程序的启动运行。

PrimoCache自动记录被加速硬盘的常用读取数据,然后在系统空闲时,将这些常用数据保存至二级缓存。为避免影响系统其它进程的性能,在系统繁忙时,PrimoCache会自动延后这个保存过程。然而您可以通过缓存配置中的“忙时采集间隔”参数来调整系统忙时二级缓存数据的存储速度。您可通过缓存统计数据的“写入二级缓存”指标查看自计算机启动后有多少字节的数据被保存至二级缓存设备中。当Windows系统或应用程序再次请求读取这些数据时,PrimoCache先检查一级缓存中是否存有这些数据,如果没有,则检查二级缓存。如果二级缓存中保存有这些数据,PrimoCache将从二级缓存设备中读取数据,完成系统或应用程序的读取请求,而不需要去读取速度慢的磁盘,从而提升读取速度。同时PrimoCache也会根据内部算法,自动将部分二级缓存中的数据转储到一级缓存,以更进一步加快读取速度。您可通过缓存统计数据的“读取二级缓存”指标查看有多少字节的数据是从二级缓存读取的。

PrimoCache Level-2 CachePrimoCache Level-2 Cache Statistics Items

在开启二级缓存前,您必须先创建一个二级缓存存储逻辑卷,简称二级存储卷。二级存储卷是SSD或闪存盘等设备上的一个PrimoCache专用逻辑卷,用于存储二级缓存的索引信息和具体缓存数据。详细操作请阅读管理二级存储

为减少二级存储卷上的写入,二级缓存默认设置为仅缓存读数据。如果您要想用二级缓存配合延时写入特性来加速目标硬盘的写速度,您可通过以下步骤修改配置使二级缓存可以缓存写数据。
1. 在缓存配置对话框中,点击二级缓存高级设置按钮。
2. 取消勾选独立的读和写缓存空间选项,读缓存和写缓存共享使用整个二级缓存空间。或者,如果您想要独立专用的写缓存空间,移动滑动条指定写缓存空间的比例。

PrimoCache 二级缓存写缓存空间设置

潜在问题和注意事项

如前所述,二级缓存中的数据在电源关闭时不会消失。这就带来一个潜在的问题,即缓存中的数据可能和磁盘上的源数据不一致。举例来说,假设某个二级存储设备被意外地从计算机拔除,一段时间后又被插入计算机,并且在这段时间中被加速磁盘上的源数据正好被修改了,如果PrimoCache仍然从二级缓存设备读取数据给Windows或应用程序,那么显而易见地,这就造成严重的问题,因为二级存储设备中保存的缓存数据仍然是旧数据,而不是最新的数据。为了避免出现这类问题,PrimoCache内置了一个检测机制来确保二级存储设备上的缓存数据和磁盘上的源数据一致。如果检测到数据可能不一致,PrimoCache将删除所有二级缓存数据重新进行缓存。这个检测机制是通过追踪和更新Windows注册表标志来实现的,因此您必须确保Windows所在逻辑卷是可写的,而不是写入保护,否则PrimoCache将无法更新注册表标志,导致其认为二级缓存数据过期而删除所有缓存数据。同样地,如果计算机由于崩溃、死机或断电等原因导致Windows不能正常关机,PrimoCache可能来不及更新注册表标志,导致认为缓存数据过期而删除所有二级缓存数据。

尽管PrimoCache内置了上述检测机制,但这无法防止“离线修改”的问题。“离线修改”是指源磁盘或二级存储设备上的数据在PrimoCache没有运行的情况下被修改。举个例子,假如您有两台计算机,如果您把某台计算机上的硬盘插入到另一台计算机上进行修改操作,包括写入、覆盖或删除文件等,然后又把这块硬盘插入回原来的那台计算机,这么这个硬盘就是被“离线修改”。另一个例子,假设您在同一台计算机上安装了两个操作系统,如果某个操作系统(这里我们叫它A操作系统)上的硬盘数据在另一个操作系统上被修改了,那么对A操作系统来说,这个硬盘就是被离线修改的。由于PrimoCache在没有运行的情况下不能做任何操作来防止“离线修改”问题,因此您需要负责避免出现上述类似的“离线修改”操作。

相关阅读