这是我参与8月更文挑战的第9天,活动详情查看:8月更文挑战”
SmartCache 是华为公司自主研发的一项性能提升技术,其设计思想是使用一块或多块 SSD 硬盘组成 SmartCache 池,系统通过对数据块访问频率的实时统计,将主机当前访问较为频繁的数据(热点数据)由传统机械硬盘动态的缓存至 SmartCache 池中,利用 SSD 硬盘存取速度快的特点,提升主机的读性能及主机的访问效率。
工作原理
SmartCache 对热点数据性能的提升是以 LUN 为单位的。在建立 SmartCache 池并对 LUN 开启 SmartCache功能后,系统将建立 LUN 与 SmartCache 池之间的映射关系,具体做法是将该 LUN 上的所有数据按照一个数据单位进行分块,目前规格为 1MB,然后对这些划分好的数据块按照一定的时间周期进行访问量统计,每 30 分钟统计一次。当一个统计周期结束后,会对该 LUN 上的所有 1MB 的数据块按照访问频率的高低进行排序,访问频率高的即确认为热点数据。
SmartCache 作为存储系统中的一个读缓存服务模块,采用 SSD 盘作为存储系统中 RAM Cache 的扩充,为 RAM Cache 缓存其存放不下的干净热点数据,数据的交互。与虚拟快照拥有资源池类似,SmartCache 也有资源池,叫做 SmartCache 池;客户可以根据业务的需要,动态的向 SmartCache 池中添加或移除 SSD 盘。值得注意的是,只有被添加到 SmartCache 池的SSD盘,才能被用作热点数据的缓存。
逻辑架构
SmartCache 对热点数据性能的提升是以 LUN/文件系统为单位的。
-
对一个 LUN 或文件系统开启 SmartCache 功能后,RAM Cache 会下发热点数据 给 SmartCache;
-
SmartCache 在内存中建立数据与 SSD 盘之间的映射关系后将数据保存到 SSD 盘;
-
之后在新的 IO 再次读取存储设备时会优先在 RAM Cache 中尝试命中;
a. 如果不命中再去 SmartCache 中尝试命中;
b. 如果命中则从 SSD 中读取对应数据返回给主机。
当 SmartCache 中缓存的数据量达到容量上限时,会按照 LRU(Least Recently Used)算法选取最近最少访问到的缓存块,清除查找表中的映射项淘汰掉数据,数据写入与数据淘汰处理是个循环反复的过程,这样就保证 SmartCache 保存的是热度相对较高的数据。
应用场景
SmartCache 适合于任何具有热点访问区域、随机读 IO 密集型业务,如数据库、 OLTP 应用、WEB 服务、文件服务应用等。